f_open.srf 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. $PBExportHeader$f_open.srf
  2. global type f_open from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_open (integer arg_openmode)
  6. end prototypes
  7. global function integer f_open (integer arg_openmode);Long rslt = 1
  8. Long ls_rslt
  9. String lls_str
  10. String arg_msg
  11. Int li_loginflag = 0
  12. ULong l_handle, lu_class
  13. String ls_name
  14. sys_ifoem = Long(ProfileString (sys_inioem, "oem", "ifoem",'0'))//是否OEM
  15. // 创建电话盒UO_CC301实例
  16. uo_cc301_ins = create uo_cc301
  17. IF Not IsValid(uo_email_power) THEN
  18. uo_email_power = Create uo_email_power_ew
  19. END IF
  20. IF Not IsValid(uo_ljjob_creator_spi) THEN
  21. uo_ljjob_creator_spi = Create uo_ljjob_creator_ew
  22. END IF
  23. sys_login = False
  24. String ls_network
  25. ls_network = f_psw_bczh(ProfileString(sys_inifilename_other,'sys_message', 'network' , '613444366637208268088'),1,sys_power_key)
  26. IF ls_network = 'network' THEN
  27. sys_if_network = 1
  28. ELSE
  29. sys_if_network = 0
  30. END IF
  31. //取消单机版注册 20121116 lhd
  32. //String ls_msg
  33. //IF f_reg_dll(ls_msg) = 0 THEN
  34. // MessageBox('提示',ls_msg, Information!, OK! )
  35. // HALT;
  36. //END IF
  37. IF sys_if_network = 0 THEN //单机版
  38. Long hwnd
  39. hwnd = Handle(This)
  40. IF hwnd > 0 THEN
  41. //检查是否有副本运行
  42. IF f_ifexerun() > 1 THEN
  43. MessageBox('提示',sys_message_title + '已运行!', Information!, OK! )
  44. HALT;
  45. END IF
  46. END IF
  47. String ls_version
  48. ls_version = f_psw_bczh(ProfileString(sys_inifilename_other,'sys_message', 'version' , '268578966903644066457208358988'),1,sys_power_key)
  49. //单机版取消工业+
  50. //免注册
  51. IF ls_version = 'business' THEN
  52. sys_version_type = 1
  53. sys_version_id = '801001ewiserpv5.0'
  54. sys_version = 802001
  55. sys_versionName = "商业版"
  56. sys_version_int = 1
  57. ELSE //IF ls_version = 'enterprise' THEN
  58. sys_version_type = 0
  59. sys_version_id = '801002ewiserpv5.0'
  60. sys_version = 802002
  61. sys_versionName = "工业版"
  62. sys_version_int = 2
  63. // ELSEIF ls_version = 'enterprise+' THEN
  64. // sys_version_type = 2
  65. // sys_version_id = '801003ewiserpv4.0'
  66. // sys_version = 802003
  67. // sys_versionName = "工业版+"
  68. // sys_version_int = 3
  69. END IF
  70. String ls_bookname
  71. ls_bookname = ProfileString (sys_inifilename, "database", "bookname","")
  72. IF ls_bookname = '' THEN
  73. f_ini_book()
  74. END IF
  75. Long firstrun
  76. firstrun = Long(ProfileString (sys_inifilename, "database", "firstrun","0"))
  77. Long ll_return
  78. s_set_book_parm s_parm
  79. IF firstrun = 1 THEN
  80. s_parm.bookid = 1
  81. s_parm.ifguid = 1
  82. OpenWithParm(w_set_init, s_parm)
  83. ll_return = Message.DoubleParm
  84. IF ll_return <> 1 THEN HALT;
  85. MessageBox('提示','设置保存完成!系统必须重启!')
  86. Restart()
  87. // OpenWithParm(w_set_sqlca_ecl,'01')
  88. ELSE
  89. Open(w_sys_login_s)
  90. END IF
  91. ELSE //网络版
  92. IF Not IsValid(w_ws) THEN
  93. Open(w_ws)
  94. END IF
  95. Open(w_sys_login)
  96. END IF
  97. li_loginflag = Message.DoubleParm
  98. f_init_version()
  99. IF arg_openmode = 0 Or li_loginflag = 2 THEN
  100. //初始化连接数量
  101. uo_remote_sqlca uo_rsqlca
  102. uo_rsqlca.init_remote_sqlca()
  103. //////// //
  104. uo_yfimex uo_ins_imex
  105. uo_ins_imex = Create uo_yfimex
  106. ls_rslt = uo_ins_imex.f_init_syscurpath(lls_str)
  107. Open(w_sys_begin) //打开闪烁窗口(连接数据库)
  108. sys_db_spid = f_get_db_spid() //获取spid
  109. source_sqlca = Create Transaction
  110. IF f_switchdb_check() = 1 THEN //检查当前是否要切换数据库
  111. //f_switch()
  112. f_sys_option()
  113. f_cntdb(source_sqlca)
  114. f_cnt_newdb(sys_option_switch_Sername,sys_option_switch_dbname,sys_option_switch_loginID,sys_option_switch_loginpsw)
  115. END IF
  116. //autoupdateexe begin in application's begin
  117. uo_atudexe uo_ins_atudexe
  118. uo_ins_atudexe = Create uo_atudexe
  119. ls_rslt = uo_ins_atudexe.f_init_syscurpath(lls_str)
  120. //////// //
  121. ls_rslt = uo_ins_atudexe.f_autoupdateexe(sqlca,lls_str)
  122. Destroy uo_ins_atudexe
  123. ////////// //autoupdateexe end
  124. // ls_rslt = f_synchronize(sqlca,lls_str) //同步服务器时间
  125. // IF ls_rslt = 0 THEN
  126. // MessageBox('提示','同步服务器时间操作失败,请手动调节!', Information!, OK! )
  127. // END IF
  128. //单机版 免注册
  129. // IF sys_if_network = 0 THEN //单机版
  130. // f_regcheck()
  131. // END IF
  132. IF sys_if_network = 0 THEN
  133. sys_if_register = 1
  134. ELSE
  135. sys_message_timeoutdate = "2015.01.01"
  136. // IF Today() > RelativeDate(Date(sys_message_timeoutdate),-20) THEN
  137. // MessageBox(sys_message_timeoutdate,'系统即将超使用期限,请与软件供应商联系!', Information!, OK! )
  138. // END IF
  139. //
  140. // IF Today() > Date(sys_message_timeoutdate) THEN
  141. // MessageBox(sys_message_timeoutdate,'超使用期限,请与软件供应商联系!', Information!, OK! )
  142. // HALT;
  143. // END IF
  144. END IF
  145. Int rst
  146. //检查版本
  147. uo_version uo_ver
  148. // uo_ver.uof_createtable_auto()
  149. rst = f_get_curdb(arg_msg)
  150. IF rst = 0 THEN //数据库错误
  151. MessageBox("提示",arg_msg,Information!, OK! )
  152. HALT;
  153. ELSEIF rst = -1 THEN //设定历史数据库
  154. Open(w_set_scdb)
  155. //再读一次版本
  156. rst = f_get_curdb(arg_msg)
  157. ELSEIF rst = -2 THEN //升级数据库
  158. // f_createtable()
  159. uo_ver.uof_createtable(True)
  160. // //多币种本位币更新
  161. // f_set_moneyid()
  162. //初始化单据抬头
  163. IF f_init_billstyle(arg_msg) = 0 THEN
  164. MessageBox('错误',arg_msg,StopSign!, OK! )
  165. END IF
  166. //初始化数据字典
  167. IF f_init_table_field(arg_msg) = 0 THEN
  168. MessageBox('错误',arg_msg,StopSign!, OK! )
  169. END IF
  170. //默认打印格式
  171. IF f_init_dft_dwprint_dynamic(arg_msg) = 0 THEN
  172. MessageBox('错误',arg_msg,StopSign!, OK! )
  173. END IF
  174. //升级初始化 打印格式pbl
  175. IF f_init_dftpbl(sys_pblname,'',arg_msg) = 0 THEN
  176. MessageBox('错误',arg_msg,StopSign!, OK! )
  177. END IF
  178. //再读一次版本
  179. rst = f_get_curdb(arg_msg)
  180. END IF
  181. if rst <> 1 then
  182. MessageBox('错误',arg_msg,StopSign!, OK! )
  183. HALT;
  184. end if
  185. IF hwnd > 0 THEN
  186. //检查是否有副本运行
  187. IF Not f_chk_login(arg_msg) THEN
  188. MessageBox('提示',arg_msg, Information!, OK! )
  189. HALT;
  190. END IF
  191. END IF
  192. //初始化打印格式单据列表
  193. f_init_billname()
  194. //设置打印格式库
  195. f_setliblist()
  196. IF sys_if_network = 0 THEN
  197. //删数,截数初始化, 单机版用到
  198. f_init_tntblinfo()
  199. END IF
  200. //解决方案初始化, 权限, 系统选项
  201. f_init_sys_plan()
  202. //权限初始化
  203. uo_sys_funcpwr uo_sfpwr
  204. uo_sfpwr.init_ds_funcinfo( )
  205. //系统选项初始化 获取全局变量
  206. uo_sys_option uo_opt
  207. uo_opt = Create uo_sys_option
  208. uo_opt.uof_init_sys_option()
  209. uo_opt.uof_sys_option()
  210. Destroy uo_opt
  211. //系统窗口,系统菜单, 对应权限
  212. uo_sys_main uo_main
  213. uo_main.uof_init()
  214. // f_init_uccol()
  215. uo_sys_uccol uo_uccol
  216. uo_uccol.uf_init_uccol()
  217. Open(w_sys_wait)
  218. w_sys_wait.Hide()
  219. ///////////// //---附件数据库连接
  220. Long ll_ConnectionID
  221. sys_fileDB_sqlca = Create Transaction
  222. IF Trim(sys_DataBaseFJ) = '' THEN
  223. IF f_get_outerconnection(ll_ConnectionID,arg_msg) = 1 THEN
  224. w_sys_wait.Show()
  225. w_sys_wait.wf_set_msg('正在连接附件数据库...')
  226. IF f_connect_db(ll_ConnectionID,sys_fileDB_sqlca,arg_msg) = 0 THEN
  227. arg_msg = '附件数据库连接失败,请检查设置.'+ arg_msg
  228. MessageBox("提示",arg_msg, Information!, OK! )
  229. //return
  230. END IF
  231. w_sys_wait.Hide()
  232. END IF
  233. ELSE
  234. w_sys_wait.Show()
  235. w_sys_wait.wf_set_msg('正在连接附件数据库...')
  236. IF f_connect_db_new(sys_ServerNameFJ,sys_DataBaseFJ,sys_LoginIDFJ,sys_LoginPwdFJ,sys_fileDB_sqlca,arg_msg) = 0 THEN
  237. arg_msg = '附件数据库连接失败,请检查设置.'+ arg_msg
  238. MessageBox("提示",arg_msg, Information!, OK! )
  239. //return
  240. END IF
  241. w_sys_wait.Hide()
  242. END IF
  243. ////////// //----
  244. sys_email_sqlca = Create Transaction
  245. IF Trim(sys_DataBaseMsg) = '' THEN
  246. IF f_get_outerconnection_email(ll_ConnectionID,arg_msg) = 1 THEN
  247. w_sys_wait.Show()
  248. w_sys_wait.wf_set_msg('正在连接邮件数据库...')
  249. IF f_connect_db(ll_ConnectionID,sys_email_sqlca,arg_msg) = 0 THEN
  250. arg_msg = '邮件数据库连接失败,请检查设置.'+ arg_msg
  251. MessageBox("提示",arg_msg, Information!, OK! )
  252. //return
  253. END IF
  254. w_sys_wait.Hide()
  255. END IF
  256. ELSE
  257. w_sys_wait.Show()
  258. w_sys_wait.wf_set_msg('正在连接邮件数据库...')
  259. IF f_connect_db_new(sys_ServerNameMsg,sys_DataBaseMsg,sys_LoginIDMsg,sys_LoginPwdMsg,sys_email_sqlca,arg_msg) = 0 THEN
  260. arg_msg = '邮件数据库连接失败,请检查设置.'+ arg_msg
  261. MessageBox("提示",arg_msg, Information!, OK! )
  262. //return
  263. END IF
  264. w_sys_wait.Hide()
  265. END IF
  266. IF sys_email_sqlca.DBHandle() <> 0 THEN
  267. uo_version_email uo_ver_email
  268. uo_ver_email = Create uo_version_email
  269. uo_ver_email.uof_createtable(True)
  270. END IF
  271. IF f_connectdb_id(arg_msg) = 0 THEN
  272. MessageBox('系统提示',arg_msg)
  273. RETURN rslt
  274. END IF
  275. END IF
  276. rslt = f_sys_dl(publ_userid,sys_psw)
  277. IF rslt <> 1 THEN //不成功, 退出系统
  278. HALT
  279. END IF
  280. f_set_sysmessage()
  281. f_set_accsetmessage()
  282. f_init_ds_subjecttree()
  283. sys_login = True
  284. Idle(sys_option_timeout) //设定注销时间
  285. if_idle = False
  286. IF IsValid(w_main_scware) THEN
  287. w_main_scware.wf_init()
  288. ELSE
  289. Open (w_main_scware)
  290. END IF
  291. f_update_login(1) //0-注销; 1-登录;2-更新
  292. //------日志
  293. f_setsysoplog('系统登录','系统登录,用户:'+publ_operator,arg_msg,True)
  294. //自定义提醒
  295. TRY
  296. IF f_oa_workremind() = 1 THEN
  297. Open(w_oa_workremind)
  298. END IF
  299. CATCH (runtimeerror e)
  300. messagebox('系统提示','自定义提醒初始化失败,'+e.text)
  301. END TRY
  302. IF sys_if_network = 0 THEN
  303. SetProfileString (sys_inifilename,'database', 'bookname', sys_bookname)
  304. SetProfileString (sys_inifilename,'database', 'Database', sys_DataBase)
  305. ELSEIF sys_if_network = 1 THEN
  306. Int I_DBSPID = 9
  307. s_msgframe s_msg
  308. s_msg.FrameHead = I_DBSPID
  309. s_msg.frame_str[1] = String(sys_db_spid)
  310. s_msg.frame_str[2] = String(sys_Status)
  311. IF sys_wsc.getstate() = 7 THEN
  312. sys_wsc.setsendmsg( s_msg, 2)
  313. sys_wsc.TriggerEvent('ue_send') //发送命令
  314. END IF
  315. END IF
  316. RETURN rslt
  317. end function