uo_empinfo.sru 69 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054
  1. $PBExportHeader$uo_empinfo.sru
  2. forward
  3. global type uo_empinfo from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_empinfo from nonvisualobject
  7. end type
  8. global uo_empinfo uo_empinfo
  9. type variables
  10. long uo_empid
  11. int uo_option_emp_audit
  12. end variables
  13. forward prototypes
  14. public function integer uof_add_empinfo (s_empinfo arg_s_empinfo, string arg_opemp, boolean arg_ifcommit, ref string arg_msg)
  15. public function integer uof_del_leftemp (long arg_empid, ref string arg_msg, boolean arg_ifcommit)
  16. public function integer uof_del_empinfo (long arg_empid, ref string arg_msg, boolean arg_ifcommit)
  17. public function integer uof_add_train (s_train arg_s_train, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  18. public function integer uof_add_record (s_record arg_s_record, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  19. public function integer uof_del_train (long arg_trainid, long arg_empid, ref string arg_msg, boolean arg_ifcommit)
  20. public function integer uof_del_record (long arg_mxid, long arg_empid, ref string arg_msg, boolean arg_ifcommit)
  21. public function integer uof_move (integer arg_moveflag, s_moverecord arg_s_moverecord, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  22. public function integer uof_add_contract (s_contract arg_s_contract, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  23. public function integer uof_del_contract (long arg_contractid, long arg_empid, ref string arg_msg, boolean arg_ifcommit)
  24. public function integer uof_audit_emp (long arg_empid, ref string arg_msg, boolean arg_ifcommit)
  25. public function integer uof_caudit_emp (long arg_empid, ref string arg_msg, boolean arg_ifcommit)
  26. public function integer uof_add_empmtrl_ly (long arg_empid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, decimal arg_price, boolean arg_ifcommit, ref string arg_msg)
  27. public function integer uof_add_empmtrl_gh (long arg_empid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, decimal arg_price, boolean arg_ifcommit, ref string arg_msg)
  28. public function integer uof_add_emptake (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, datetime arg_takedate, decimal arg_amt, string arg_dscrp, integer arg_taketype, boolean arg_ifcommit, ref string arg_msg)
  29. public function integer uof_del_emptake (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, integer arg_taketype, boolean arg_ifcommit, ref string arg_msg)
  30. public function integer uof_add_insure (s_insure arg_s_insure, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  31. public function integer uof_add_idcard (s_idcard arg_s_idcard, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  32. public function integer uof_del_insure (long arg_insureid, long arg_empid, ref string arg_msg, boolean arg_ifcommit)
  33. public function integer uof_del_idcard (long arg_mxid, long arg_empid, ref string arg_msg, boolean arg_ifcommit)
  34. public function integer uof_audit_contract (long arg_empid, long arg_contractid, ref string arg_msg, boolean arg_ifcommit)
  35. public function integer uof_caudit_contract (long arg_empid, long arg_contractid, ref string arg_msg, boolean arg_ifcommit)
  36. public function integer uof_add_item (s_item_cust_spt arg_s_item, ref string arg_msg, boolean arg_ifcommit)
  37. public function integer uof_add_emppay (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, datetime arg_paydate, decimal arg_amt, string arg_dscrp, integer arg_paytype, boolean arg_ifcommit, ref string arg_msg)
  38. public function integer uof_del_emppay (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, integer arg_paytype, boolean arg_ifcommit, ref string arg_msg)
  39. end prototypes
  40. public function integer uof_add_empinfo (s_empinfo arg_s_empinfo, string arg_opemp, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  41. Long ll_new_empid
  42. DateTime server_dt
  43. String ls_deptype,ls_handtype
  44. Long cnt = 0
  45. IF IsNull(arg_s_empinfo.scid) THEN arg_s_empinfo.scid = 0
  46. IF IsNull(arg_s_empinfo.empid) THEN arg_s_empinfo.empid = 0
  47. IF IsNull(arg_s_empinfo.empcode) THEN arg_s_empinfo.empcode = ''
  48. IF IsNull(arg_s_empinfo.empname) THEN arg_s_empinfo.empname = ''
  49. IF IsNull(arg_s_empinfo.sex) THEN arg_s_empinfo.sex = ''
  50. IF IsNull(arg_s_empinfo.idcard) THEN arg_s_empinfo.idcard = ''
  51. IF IsNull(arg_s_empinfo.Homeplace) THEN arg_s_empinfo.Homeplace = ''
  52. IF IsNull(arg_s_empinfo.stature) THEN arg_s_empinfo.stature = 0
  53. IF IsNull(arg_s_empinfo.diploma) THEN arg_s_empinfo.diploma = ''
  54. IF IsNull(arg_s_empinfo.hometel) THEN arg_s_empinfo.hometel = ''
  55. IF IsNull(arg_s_empinfo.handtel) THEN arg_s_empinfo.handtel = ''
  56. IF IsNull(arg_s_empinfo.Address) THEN arg_s_empinfo.Address = ''
  57. IF IsNull(arg_s_empinfo.Postcode) THEN arg_s_empinfo.Postcode = ''
  58. IF IsNull(arg_s_empinfo.Duty) THEN arg_s_empinfo.Duty = ''
  59. IF IsNull(arg_s_empinfo.wrktpye) THEN arg_s_empinfo.wrktpye = ''
  60. IF IsNull(arg_s_empinfo.deptid) THEN arg_s_empinfo.deptid = 0
  61. IF IsNull(arg_s_empinfo.officetel) THEN arg_s_empinfo.officetel = ''
  62. IF IsNull(arg_s_empinfo.Cardcode) THEN arg_s_empinfo.Cardcode = ''
  63. IF IsNull(arg_s_empinfo.Bedcode) THEN arg_s_empinfo.Bedcode = ''
  64. IF IsNull(arg_s_empinfo.wage) THEN arg_s_empinfo.wage = 0
  65. IF IsNull(arg_s_empinfo.Bankcode) THEN arg_s_empinfo.Bankcode = ''
  66. IF IsNull(arg_s_empinfo.Language) THEN arg_s_empinfo.Language = ''
  67. IF IsNull(arg_s_empinfo.introducer) THEN arg_s_empinfo.introducer = ''
  68. IF IsNull(arg_s_empinfo.dscrp) THEN arg_s_empinfo.dscrp = ''
  69. IF IsNull(arg_s_empinfo.jobtype) THEN arg_s_empinfo.jobtype = 0
  70. IF IsNull(arg_s_empinfo.jobid) THEN arg_s_empinfo.jobid = 0
  71. IF IsNull(arg_s_empinfo.hourwage) THEN arg_s_empinfo.hourwage = 0
  72. IF IsNull(arg_s_empinfo.status) THEN arg_s_empinfo.status = 1
  73. IF IsNull(arg_s_empinfo.bankamt) THEN arg_s_empinfo.bankamt = 0
  74. IF IsNull(arg_s_empinfo.pempid) THEN arg_s_empinfo.pempid = 0
  75. IF IsNull(arg_s_empinfo.nation) THEN arg_s_empinfo.nation = ''
  76. IF IsNull(arg_s_empinfo.likestr) THEN arg_s_empinfo.likestr = ''
  77. IF IsNull(arg_s_empinfo.specialty) THEN arg_s_empinfo.specialty = ''
  78. IF IsNull(arg_s_empinfo.computergrade) THEN arg_s_empinfo.computergrade = ''
  79. IF IsNull(arg_s_empinfo.health) THEN arg_s_empinfo.health = ''
  80. IF IsNull(arg_s_empinfo.ifmarry) THEN arg_s_empinfo.ifmarry = 0
  81. IF IsNull(arg_s_empinfo.gztype) THEN arg_s_empinfo.gztype = 0
  82. IF IsNull(arg_s_empinfo.insurecode) THEN arg_s_empinfo.insurecode = ''
  83. IF IsNull(arg_s_empinfo.contractcode) THEN arg_s_empinfo.contractcode = ''
  84. IF IsNull(arg_s_empinfo.DayMaxExpend) THEN arg_s_empinfo.DayMaxExpend = 0
  85. IF IsNull(arg_s_empinfo.MonthMaxExpend) THEN arg_s_empinfo.MonthMaxExpend = 0
  86. IF arg_s_empinfo.empname = '' THEN
  87. rslt = 0
  88. arg_msg = "姓名不能为空"
  89. GOTO ext
  90. END IF
  91. IF arg_s_empinfo.empcode = '' THEN
  92. rslt = 0
  93. arg_msg = "工号不能为空"
  94. GOTO ext
  95. END IF
  96. SELECT count(*) INTO :cnt
  97. FROM u_rs_empinfo
  98. WHERE Empcode = :arg_s_empinfo.Empcode
  99. And empid <> :arg_s_empinfo.empid;
  100. IF sqlca.SQLCode <> 0 THEN
  101. rslt = 0
  102. arg_msg = '查询工号失败'
  103. GOTO ext
  104. END IF
  105. IF cnt > 0 THEN
  106. rslt = 0
  107. arg_msg = '员工编号重复,请重新输入另一个编号'
  108. GOTO ext
  109. END IF
  110. IF arg_s_empinfo.sex = '' THEN
  111. rslt = 0
  112. arg_msg = '性别不能为空,请选择'
  113. GOTO ext
  114. END IF
  115. IF arg_s_empinfo.wrktpye = '' THEN
  116. rslt = 0
  117. arg_msg = '工种不能为空,请选择'
  118. GOTO ext
  119. END IF
  120. s_idcard_change s_idcard
  121. CHOOSE CASE Len(arg_s_empinfo.idcard)
  122. CASE 0
  123. //通过
  124. CASE 15,18
  125. f_idcard(arg_s_empinfo.idcard,s_idcard)
  126. IF arg_s_empinfo.birthday <> s_idcard.birthday THEN
  127. arg_msg = '身份证号的出生日期与出生日期不对应,请核对。'
  128. rslt = 0
  129. GOTO ext
  130. END IF
  131. CASE ELSE
  132. arg_msg = '身份证长度不合法'
  133. rslt = 0
  134. GOTO ext
  135. END CHOOSE
  136. IF arg_s_empinfo.Joindate <= arg_s_empinfo.birthday THEN
  137. rslt = 0
  138. arg_msg = '出生日期不能大于入职日期'
  139. GOTO ext
  140. END IF
  141. IF arg_s_empinfo.deptid = 0 THEN
  142. arg_msg = '请选择部门'
  143. rslt = 0
  144. GOTO ext
  145. END IF
  146. //IF arg_s_empinfo.duty = '' THEN
  147. // arg_msg = '请选择职务'
  148. // rslt = 0
  149. // GOTO ext
  150. //END IF
  151. SELECT departmentname,handtype
  152. INTO :ls_deptype,:ls_handtype
  153. FROM cw_department
  154. Where departmentid = :arg_s_empinfo.deptid;
  155. IF sqlca.SQLCode <> 0 THEN
  156. arg_msg = '查询部门资料失败,可能部门资料不存在,请检查'
  157. rslt = 0
  158. GOTO ext
  159. END IF
  160. IF arg_s_empinfo.jobtype <> 1 THEN
  161. arg_s_empinfo.jobid = 0
  162. END IF
  163. IF arg_s_empinfo.pempid > 0 THEN
  164. cnt = 0
  165. SELECT count(*) INTO :cnt
  166. FROM u_rs_empinfo
  167. Where empid = :arg_s_empinfo.pempid ;
  168. IF sqlca.SQLCode <> 0 THEN
  169. rslt = 0
  170. arg_msg = "查询上司资料失败,"+sqlca.SQLErrText
  171. GOTO ext
  172. END IF
  173. IF cnt = 0 THEN
  174. rslt = 0
  175. arg_msg = "上司资料不存在"
  176. GOTO ext
  177. END IF
  178. END IF
  179. cnt = 0
  180. SELECT count(*) INTO :cnt
  181. FROM u_user
  182. Where username = :arg_opemp ;
  183. IF sqlca.SQLCode <> 0 THEN
  184. rslt = 0
  185. arg_msg = "查询操作失败,操作员"
  186. GOTO ext
  187. END IF
  188. IF cnt = 0 THEN
  189. rslt = 0
  190. arg_msg = "操作员姓名未登记或已取消"
  191. GOTO ext
  192. END IF
  193. SELECT Top 1 getdate() Into :server_dt From u_user;
  194. IF sqlca.SQLCode <> 0 THEN
  195. rslt = 0
  196. arg_msg = "查询操作失败,日期 "
  197. GOTO ext
  198. END IF
  199. IF arg_s_empinfo.empid = 0 THEN //新建
  200. ll_new_empid = f_sys_scidentity(0,"u_rs_empinfo","empid",arg_msg,True,id_sqlca)
  201. IF ll_new_empid <= 0 THEN
  202. rslt = 0
  203. GOTO ext
  204. END IF
  205. INSERT INTO u_rs_empinfo (
  206. scid,
  207. empid,
  208. Deptid,
  209. wrktpye,
  210. Empname,
  211. Empcode,
  212. Sex,
  213. Birthday,
  214. Homeplace,
  215. Stature,
  216. introducer,
  217. Language,
  218. Idcard,
  219. Joindate,
  220. diploma,
  221. hometel,
  222. officetel,
  223. Bedcode,
  224. Cardcode,
  225. handtel,
  226. Address,
  227. Postcode,
  228. Bankcode,
  229. wage,
  230. Duty,
  231. status,
  232. Dscrp,
  233. deptype,
  234. handtype,
  235. jobtype,
  236. jobid,
  237. hourwage,
  238. ondutydate,
  239. Opdate,
  240. Opemp,
  241. nation,
  242. likestr,
  243. ifmarry,
  244. specialty,
  245. computergrade,
  246. health,
  247. bankamt,
  248. gztype,
  249. insurecode,
  250. contractcode,
  251. DayMaxExpend,
  252. MonthMaxExpend,
  253. pempid)
  254. VALUES (
  255. :arg_s_empinfo.scid,
  256. :ll_new_empid,
  257. :arg_s_empinfo.Deptid,
  258. :arg_s_empinfo.wrktpye,
  259. :arg_s_empinfo.Empname,
  260. :arg_s_empinfo.Empcode,
  261. :arg_s_empinfo.Sex,
  262. :arg_s_empinfo.Birthday,
  263. :arg_s_empinfo.Homeplace,
  264. :arg_s_empinfo.Stature,
  265. :arg_s_empinfo.introducer,
  266. :arg_s_empinfo.Language,
  267. :arg_s_empinfo.Idcard,
  268. :arg_s_empinfo.Joindate,
  269. :arg_s_empinfo.diploma,
  270. :arg_s_empinfo.hometel,
  271. :arg_s_empinfo.officetel,
  272. :arg_s_empinfo.Bedcode,
  273. :arg_s_empinfo.Cardcode,
  274. :arg_s_empinfo.handtel,
  275. :arg_s_empinfo.Address,
  276. :arg_s_empinfo.Postcode,
  277. :arg_s_empinfo.Bankcode,
  278. :arg_s_empinfo.wage,
  279. :arg_s_empinfo.Duty,
  280. :arg_s_empinfo.status,
  281. :arg_s_empinfo.Dscrp,
  282. :ls_deptype,
  283. :ls_handtype,
  284. :arg_s_empinfo.jobtype,
  285. :arg_s_empinfo.jobid,
  286. :arg_s_empinfo.hourwage,
  287. :arg_s_empinfo.ondutydate,
  288. :server_dt,
  289. :arg_opemp,
  290. :arg_s_empinfo.nation,
  291. :arg_s_empinfo.likestr,
  292. :arg_s_empinfo.ifmarry,
  293. :arg_s_empinfo.specialty,
  294. :arg_s_empinfo.computergrade,
  295. :arg_s_empinfo.health,
  296. :arg_s_empinfo.bankamt,
  297. :arg_s_empinfo.gztype,
  298. :arg_s_empinfo.insurecode,
  299. :arg_s_empinfo.contractcode,
  300. :arg_s_empinfo.DayMaxExpend,
  301. :arg_s_empinfo.MonthMaxExpend,
  302. :arg_s_empinfo.pempid);
  303. IF sqlca.SQLCode <> 0 THEN
  304. rslt = 0
  305. arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+sqlca.SQLErrText
  306. GOTO ext
  307. END IF
  308. uo_empid = ll_new_empid
  309. ELSE
  310. UPDATE u_rs_empinfo
  311. SET
  312. scid = :arg_s_empinfo.scid,
  313. Deptid = :arg_s_empinfo.Deptid,
  314. deptype = :ls_deptype,
  315. handtype = :ls_handtype,
  316. wrktpye = :arg_s_empinfo.wrktpye,
  317. Empname = :arg_s_empinfo.Empname,
  318. Empcode = :arg_s_empinfo.Empcode,
  319. Sex = :arg_s_empinfo.Sex,
  320. Birthday = :arg_s_empinfo.Birthday,
  321. Homeplace = :arg_s_empinfo.Homeplace,
  322. Stature = :arg_s_empinfo.Stature,
  323. introducer = :arg_s_empinfo.introducer,
  324. Language = :arg_s_empinfo.Language,
  325. Idcard = :arg_s_empinfo.Idcard,
  326. Joindate = :arg_s_empinfo.Joindate,
  327. diploma = :arg_s_empinfo.diploma,
  328. hometel = :arg_s_empinfo.hometel,
  329. officetel = :arg_s_empinfo.officetel,
  330. Bedcode = :arg_s_empinfo.Bedcode,
  331. Cardcode = :arg_s_empinfo.Cardcode,
  332. handtel = :arg_s_empinfo.handtel,
  333. Address = :arg_s_empinfo.Address,
  334. Postcode = :arg_s_empinfo.Postcode,
  335. Bankcode = :arg_s_empinfo.Bankcode,
  336. wage = :arg_s_empinfo.wage,
  337. Duty = :arg_s_empinfo.Duty,
  338. Dscrp = :arg_s_empinfo.Dscrp,
  339. status = :arg_s_empinfo.status,
  340. jobtype = :arg_s_empinfo.jobtype,
  341. jobid = :arg_s_empinfo.jobid,
  342. hourwage = :arg_s_empinfo.hourwage,
  343. ondutydate = :arg_s_empinfo.ondutydate,
  344. moddate = :server_dt,
  345. modemp = :arg_opemp,
  346. nation = :arg_s_empinfo.nation,
  347. likestr = :arg_s_empinfo.likestr,
  348. ifmarry = :arg_s_empinfo.ifmarry,
  349. specialty = :arg_s_empinfo.specialty,
  350. computergrade = :arg_s_empinfo.computergrade,
  351. health = :arg_s_empinfo.health,
  352. bankamt = :arg_s_empinfo.bankamt,
  353. gztype = :arg_s_empinfo.gztype,
  354. insurecode = :arg_s_empinfo.insurecode,
  355. contractcode = :arg_s_empinfo.contractcode,
  356. DayMaxExpend = :arg_s_empinfo.DayMaxExpend,
  357. MonthMaxExpend = :arg_s_empinfo.MonthMaxExpend,
  358. pempid = :arg_s_empinfo.pempid
  359. Where u_rs_empinfo.empid = :arg_s_empinfo.empid;
  360. IF sqlca.SQLCode <> 0 THEN
  361. rslt = 0
  362. arg_msg = "因网络或其它原因导致更新人员资料操作失败"+"~n"+sqlca.SQLErrText
  363. GOTO ext
  364. END IF
  365. uo_empid = arg_s_empinfo.empid
  366. END IF
  367. ext:
  368. IF rslt = 0 THEN
  369. ROLLBACK;
  370. ELSEIF rslt = 1 And arg_ifcommit THEN
  371. COMMIT;
  372. END IF
  373. RETURN rslt
  374. end function
  375. public function integer uof_del_leftemp (long arg_empid, ref string arg_msg, boolean arg_ifcommit);//删除离职员工
  376. Int rslt = 1
  377. Long ls_newid
  378. Int ls_status
  379. SELECT status INTO :ls_status
  380. From u_rs_empinfo Where empid = :arg_empid;
  381. IF sqlca.SQLCode <> 0 THEN
  382. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  383. rslt = 0
  384. GOTO ext
  385. END IF
  386. IF ls_status <> 0 THEN
  387. arg_msg = '该员工不是离职状态,不能进行删除。'
  388. rslt = 0
  389. GOTO ext
  390. END IF
  391. DELETE From u_gz_wage Where empid = :arg_empid;
  392. IF sqlca.SQLCode <> 0 THEN
  393. arg_msg = '删除员工相关工资表资料失败,'+sqlca.SQLErrText
  394. rslt = 0
  395. GOTO ext
  396. END IF
  397. DELETE From u_gz_wagemx Where empid = :arg_empid;
  398. IF sqlca.SQLCode <> 0 THEN
  399. arg_msg = '删除员工相关工资表明细资料失败,'+sqlca.SQLErrText
  400. rslt = 0
  401. GOTO ext
  402. END IF
  403. DELETE From u_rs_emprecord Where empid = :arg_empid;
  404. IF sqlca.SQLCode <> 0 THEN
  405. arg_msg = '删除员工相关简历资料失败,'+sqlca.SQLErrText
  406. rslt = 0
  407. GOTO ext
  408. END IF
  409. DELETE From u_rs_insure Where empid = :arg_empid;
  410. IF sqlca.SQLCode <> 0 THEN
  411. arg_msg = '删除员工相关社保资料失败,'+sqlca.SQLErrText
  412. rslt = 0
  413. GOTO ext
  414. END IF
  415. DELETE From u_rs_Train Where empid = :arg_empid;
  416. IF sqlca.SQLCode <> 0 THEN
  417. arg_msg = '删除员工相关培训资料失败,'+sqlca.SQLErrText
  418. rslt = 0
  419. GOTO ext
  420. END IF
  421. DELETE From u_rs_moverecord Where empid = :arg_empid;
  422. IF sqlca.SQLCode <> 0 THEN
  423. arg_msg = '删除员工相关调动资料失败,'+sqlca.SQLErrText
  424. rslt = 0
  425. GOTO ext
  426. END IF
  427. DELETE From u_rs_emppic Where empid = :arg_empid;
  428. IF sqlca.SQLCode <> 0 THEN
  429. arg_msg = '删除员工相关相片资料失败,'+sqlca.SQLErrText
  430. rslt = 0
  431. GOTO ext
  432. END IF
  433. DELETE From u_rs_empinfo Where empid = :arg_empid;
  434. IF sqlca.SQLCode <> 0 THEN
  435. arg_msg = '删除员工基本资料失败,'+sqlca.SQLErrText
  436. rslt = 0
  437. GOTO ext
  438. END IF
  439. ext:
  440. IF rslt = 0 THEN
  441. ROLLBACK;
  442. END IF
  443. IF rslt = 1 And arg_ifcommit THEN
  444. COMMIT;
  445. END IF
  446. RETURN rslt
  447. end function
  448. public function integer uof_del_empinfo (long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  449. Long cnt
  450. Long ll_status
  451. IF uo_option_emp_audit = -1000 THEN
  452. rslt = 0
  453. arg_msg = '选项:[221]员工资料需要审核,读取初始默认值失败,操作取消!'
  454. GOTO ext
  455. END IF
  456. IF uo_option_emp_audit = 1 THEN
  457. SELECT status INTO :ll_status
  458. FROM u_rs_empinfo
  459. Where empid = :arg_empid;
  460. IF sqlca.SQLCode <> 0 THEN
  461. arg_msg = '查询员工相关资料出错(员工状态)'
  462. rslt = 0
  463. GOTO ext
  464. END IF
  465. IF ll_status = 1 THEN
  466. rslt = 0
  467. arg_msg = '员工必须先撤审后才能删除'
  468. GOTO ext
  469. END IF
  470. END IF
  471. SELECT count(*) INTO :cnt
  472. From u_gz_wagemx Where empid = :arg_empid;
  473. IF sqlca.SQLCode <> 0 THEN
  474. arg_msg = '查询员工相关资料出错(工资明细)'
  475. rslt = 0
  476. GOTO ext
  477. END IF
  478. IF cnt > 0 THEN
  479. rslt = 0
  480. arg_msg = '该员工已在工资明细中存在,不能删除'
  481. GOTO ext
  482. END IF
  483. cnt = 0
  484. SELECT count(*) INTO :cnt
  485. From u_gz_wage Where empid = :arg_empid;
  486. IF sqlca.SQLCode <> 0 THEN
  487. arg_msg = '查询员工相关资料出错(工资表)'
  488. rslt = 0
  489. GOTO ext
  490. END IF
  491. IF cnt > 0 THEN
  492. rslt = 0
  493. arg_msg = '该员工已在工资表中存在,不能删除'
  494. GOTO ext
  495. END IF
  496. cnt = 0
  497. SELECT count(*) INTO :cnt
  498. From u_gz_wage Where empid = :arg_empid;
  499. IF sqlca.SQLCode <> 0 THEN
  500. arg_msg = '查询员工相关资料出错(工资表)'
  501. rslt = 0
  502. GOTO ext
  503. END IF
  504. IF cnt > 0 THEN
  505. rslt = 0
  506. arg_msg = '该员工已在工资表中存在,不能删除'
  507. GOTO ext
  508. END IF
  509. cnt = 0
  510. SELECT count(*) INTO :cnt
  511. From u_gz_loanwage Where empid = :arg_empid;
  512. IF sqlca.SQLCode <> 0 THEN
  513. arg_msg = '查询员工相关资料出错(借支单)'
  514. rslt = 0
  515. GOTO ext
  516. END IF
  517. IF cnt > 0 THEN
  518. rslt = 0
  519. arg_msg = '该员工已在借支单中存在,不能删除'
  520. GOTO ext
  521. END IF
  522. cnt = 0
  523. SELECT count(*) INTO :cnt
  524. From u_kq_cworkmx Where empid = :arg_empid;
  525. IF sqlca.SQLCode <> 0 THEN
  526. arg_msg = '查询员工相关资料出错(考勤单)'
  527. rslt = 0
  528. GOTO ext
  529. END IF
  530. IF cnt > 0 THEN
  531. rslt = 0
  532. arg_msg = '该员工已在考勤单中存在,不能删除'
  533. GOTO ext
  534. END IF
  535. cnt = 0
  536. SELECT count(*) INTO :cnt
  537. From u_gz_award_punish Where empid = :arg_empid;
  538. IF sqlca.SQLCode <> 0 THEN
  539. arg_msg = '查询员工相关资料出错(奖罚单)'
  540. rslt = 0
  541. GOTO ext
  542. END IF
  543. IF cnt > 0 THEN
  544. rslt = 0
  545. arg_msg = '该员工已在奖罚单中存在,不能删除'
  546. GOTO ext
  547. END IF
  548. cnt = 0
  549. SELECT count(*) INTO :cnt
  550. From U_Test Where empid = :arg_empid;
  551. IF sqlca.SQLCode <> 0 THEN
  552. arg_msg = '查询员工相关资料出错(职位绩效考核单)'
  553. rslt = 0
  554. GOTO ext
  555. END IF
  556. IF cnt > 0 THEN
  557. rslt = 0
  558. arg_msg = '该员工已在职位绩效考核单中存在,不能删除'
  559. GOTO ext
  560. END IF
  561. cnt = 0
  562. SELECT count(*) INTO :cnt
  563. From u_sc_taskworkmx Where empid = :arg_empid;
  564. IF sqlca.SQLCode <> 0 THEN
  565. arg_msg = '查询员工相关资料出错(计件单)'
  566. rslt = 0
  567. GOTO ext
  568. END IF
  569. IF cnt > 0 THEN
  570. rslt = 0
  571. arg_msg = '该员工已在计件单中存在,不能删除'
  572. GOTO ext
  573. END IF
  574. cnt = 0
  575. SELECT count(*) INTO :cnt
  576. From u_sc_abnormitymx Where empid = :arg_empid;
  577. IF sqlca.SQLCode <> 0 THEN
  578. arg_msg = '查询员工相关资料出错(异常计件单)'
  579. rslt = 0
  580. GOTO ext
  581. END IF
  582. IF cnt > 0 THEN
  583. rslt = 0
  584. arg_msg = '该员工已在异常计件单中存在,不能删除'
  585. GOTO ext
  586. END IF
  587. cnt = 0
  588. SELECT count(*) INTO :cnt
  589. FROM u_scwg_taskwork_2 WHERE wrkGrpid = :arg_empid
  590. And billtype = 1;
  591. IF sqlca.SQLCode <> 0 THEN
  592. arg_msg = '查询员工相关资料出错(计件单2)'
  593. rslt = 0
  594. GOTO ext
  595. END IF
  596. IF cnt > 0 THEN
  597. rslt = 0
  598. arg_msg = '该员工已在计件单2中存在,不能删除'
  599. GOTO ext
  600. END IF
  601. cnt = 0
  602. SELECT count(*) INTO :cnt
  603. From u_scwg_taskwork_money Where empid = :arg_empid;
  604. IF sqlca.SQLCode <> 0 THEN
  605. arg_msg = '查询员工相关资料出错(工作组计件单工资分配)'
  606. rslt = 0
  607. GOTO ext
  608. END IF
  609. IF cnt > 0 THEN
  610. rslt = 0
  611. arg_msg = '该员工已在工作组计件单工资分配中存在,不能删除'
  612. GOTO ext
  613. END IF
  614. cnt = 0
  615. SELECT count(*) INTO :cnt
  616. FROM u_outware WHERE relid = :arg_empid
  617. And billtype = 10;
  618. IF sqlca.SQLCode <> 0 THEN
  619. arg_msg = '查询员工相关资料出错(扣费品领用单)'
  620. rslt = 0
  621. GOTO ext
  622. END IF
  623. IF cnt > 0 THEN
  624. rslt = 0
  625. arg_msg = '该员工已在扣费品领用单中存在,不能删除'
  626. GOTO ext
  627. END IF
  628. DELETE From u_rs_emprecord Where empid = :arg_empid;
  629. IF sqlca.SQLCode <> 0 THEN
  630. arg_msg = '删除员工相关简历资料失败,'+sqlca.SQLErrText
  631. rslt = 0
  632. GOTO ext
  633. END IF
  634. DELETE From u_rs_insure Where empid = :arg_empid;
  635. IF sqlca.SQLCode <> 0 THEN
  636. arg_msg = '删除员工相关社保资料失败,'+sqlca.SQLErrText
  637. rslt = 0
  638. GOTO ext
  639. END IF
  640. DELETE From u_rs_Train Where empid = :arg_empid;
  641. IF sqlca.SQLCode <> 0 THEN
  642. arg_msg = '删除员工相关培训资料失败,'+sqlca.SQLErrText
  643. rslt = 0
  644. GOTO ext
  645. END IF
  646. DELETE From u_rs_moverecord Where empid = :arg_empid;
  647. IF sqlca.SQLCode <> 0 THEN
  648. arg_msg = '删除员工相关调动资料失败,'+sqlca.SQLErrText
  649. rslt = 0
  650. GOTO ext
  651. END IF
  652. DELETE From u_rs_emppic Where empid = :arg_empid;
  653. IF sqlca.SQLCode <> 0 THEN
  654. arg_msg = '删除员工相关相片资料失败,'+sqlca.SQLErrText
  655. rslt = 0
  656. GOTO ext
  657. END IF
  658. DELETE From u_rs_empinfo Where empid = :arg_empid;
  659. IF sqlca.SQLCode <> 0 THEN
  660. arg_msg = '删除员工基本资料失败,'+sqlca.SQLErrText
  661. rslt = 0
  662. GOTO ext
  663. END IF
  664. ext:
  665. IF rslt = 0 THEN
  666. ROLLBACK;
  667. ELSEIF rslt = 1 And arg_ifcommit THEN
  668. COMMIT;
  669. END IF
  670. RETURN rslt
  671. end function
  672. public function integer uof_add_train (s_train arg_s_train, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  673. Long ls_newid
  674. Int ls_status
  675. string ls_empname
  676. DateTime server_dt
  677. IF IsNull(arg_s_train.trainid) THEN arg_s_train.trainid = 0
  678. IF IsNull(arg_s_train.empid) THEN arg_s_train.empid = 0
  679. IF IsNull(arg_s_train.content) THEN arg_s_train.content = ''
  680. IF IsNull(arg_s_train.result) THEN arg_s_train.result = ''
  681. IF IsNull(arg_s_train.othercode) THEN arg_s_train.othercode = ''
  682. IF IsNull(arg_s_train.dscrp) THEN arg_s_train.dscrp = ''
  683. IF IsNull(arg_s_train.relid) THEN arg_s_train.relid = 0
  684. IF IsNull(arg_s_train.relcode) THEN arg_s_train.relcode = ''
  685. SELECT status,empname
  686. INTO :ls_status,:ls_empname
  687. FROM u_rs_empinfo
  688. Where empid = :arg_s_train.empid;
  689. IF sqlca.SQLCode <> 0 THEN
  690. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  691. rslt = 0
  692. GOTO ext
  693. END IF
  694. IF ls_status = 0 THEN
  695. arg_msg = '员工:'+ls_empname+' 不在职,不能进行增加培训内容'
  696. rslt = 0
  697. GOTO ext
  698. END IF
  699. IF arg_s_train.content = '' THEN
  700. arg_msg = '请输入培训内容'
  701. rslt = 0
  702. GOTO ext
  703. END IF
  704. IF arg_s_train.trainid = 0 THEN
  705. ls_newid = f_sys_scidentity(0,"u_rs_train","trainid",arg_msg,TRUE,id_sqlca)
  706. IF ls_newid <= 0 THEN
  707. rslt = 0
  708. GOTO ext
  709. END IF
  710. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  711. IF sqlca.SQLCode <> 0 THEN
  712. rslt = 0
  713. arg_msg = "查询操作失败,日期 "
  714. GOTO ext
  715. END IF
  716. INSERT INTO u_rs_Train
  717. (Trainid,
  718. empid,
  719. Traindate,
  720. content,
  721. Result,
  722. Othercode,
  723. Dscrp,
  724. relid,
  725. relcode,
  726. Opemp,
  727. Opdate)
  728. VALUES(
  729. :ls_newid,
  730. :arg_s_train.empid,
  731. :arg_s_train.Traindate,
  732. :arg_s_train.content,
  733. :arg_s_train.Result,
  734. :arg_s_train.Othercode,
  735. :arg_s_train.Dscrp,
  736. :arg_s_train.relid,
  737. :arg_s_train.relcode,
  738. :arg_opemp,
  739. :server_dt);
  740. IF sqlca.SQLCode <> 0 THEN
  741. arg_msg = '增加培训内容失败,原因:'+sqlca.SQLErrText
  742. rslt = 0
  743. GOTO ext
  744. END IF
  745. ELSE
  746. UPDATE u_rs_Train
  747. SET Traindate = :arg_s_train.Traindate,
  748. content = :arg_s_train.content,
  749. Result = :arg_s_train.Result,
  750. Othercode = :arg_s_train.Othercode,
  751. Dscrp = :arg_s_train.Dscrp,
  752. relid = :arg_s_train.relid,
  753. relcode = :arg_s_train.relcode,
  754. moddate = :server_dt,
  755. modemp = :arg_opemp
  756. Where trainid = :arg_s_train.trainid;
  757. IF sqlca.SQLCode <> 0 THEN
  758. arg_msg = '更新培训内容失败,原因:'+sqlca.SQLErrText
  759. rslt = 0
  760. GOTO ext
  761. END IF
  762. END IF
  763. ext:
  764. IF rslt = 0 THEN
  765. ROLLBACK;
  766. ELSEIF rslt = 1 AND arg_ifcommit THEN
  767. COMMIT;
  768. END IF
  769. RETURN rslt
  770. end function
  771. public function integer uof_add_record (s_record arg_s_record, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  772. Long ls_newid
  773. Int ls_status
  774. DateTime server_dt
  775. IF IsNull(arg_s_record.mxid) THEN arg_s_record.mxid = 0
  776. IF IsNull(arg_s_record.empid) THEN arg_s_record.empid = 0
  777. IF IsNull(arg_s_record.rectype) THEN arg_s_record.rectype = 0
  778. IF IsNull(arg_s_record.techlevel) THEN arg_s_record.techlevel = ''
  779. IF IsNull(arg_s_record.cmpname) THEN arg_s_record.cmpname = ''
  780. IF IsNull(arg_s_record.reljob) THEN arg_s_record.reljob = ''
  781. IF IsNull(arg_s_record.wage) THEN arg_s_record.wage = 0
  782. IF IsNull(arg_s_record.cause) THEN arg_s_record.cause = ''
  783. IF IsNull(arg_s_record.dscrp) THEN arg_s_record.dscrp = ''
  784. SELECT status
  785. INTO :ls_status
  786. FROM u_rs_empinfo
  787. Where empid = :arg_s_record.empid;
  788. IF sqlca.SQLCode <> 0 THEN
  789. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  790. rslt = 0
  791. GOTO ext
  792. END IF
  793. IF ls_status = 0 THEN
  794. arg_msg = '该员工不在职,不能进行增加简历内容'
  795. rslt = 0
  796. GOTO ext
  797. END IF
  798. IF arg_s_record.cmpname = '' THEN
  799. arg_msg = '请输入单位名称'
  800. rslt = 0
  801. GOTO ext
  802. END IF
  803. IF arg_s_record.mxid = 0 THEN
  804. ls_newid = f_sys_scidentity(0,"u_rs_emprecord","mxid",arg_msg,TRUE,id_sqlca)
  805. IF ls_newid <= 0 THEN
  806. rslt = 0
  807. GOTO ext
  808. END IF
  809. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  810. IF sqlca.SQLCode <> 0 THEN
  811. rslt = 0
  812. arg_msg = "查询操作失败,日期 "
  813. GOTO ext
  814. END IF
  815. INSERT INTO u_rs_emprecord
  816. (mxid,
  817. empid,
  818. Techlevel,
  819. Rectype,
  820. Cmpname,
  821. Address,
  822. Reljob,
  823. wage,
  824. Start_date,
  825. End_date,
  826. Cause,
  827. Dscrp,
  828. Opemp,
  829. Opdate)
  830. VALUES(
  831. :ls_newid,
  832. :arg_s_record.empid,
  833. :arg_s_record.Techlevel,
  834. :arg_s_record.Rectype,
  835. :arg_s_record.Cmpname,
  836. :arg_s_record.Address,
  837. :arg_s_record.Reljob,
  838. :arg_s_record.wage,
  839. :arg_s_record.Start_date,
  840. :arg_s_record.End_date,
  841. :arg_s_record.Cause,
  842. :arg_s_record.Dscrp,
  843. :arg_opemp,
  844. :server_dt);
  845. IF sqlca.SQLCode <> 0 THEN
  846. arg_msg = '增加简历内容失败,原因:'+sqlca.SQLErrText
  847. rslt = 0
  848. GOTO ext
  849. END IF
  850. ELSE
  851. UPDATE u_rs_emprecord
  852. SET Techlevel = :arg_s_record.Techlevel,
  853. Rectype = :arg_s_record.Rectype,
  854. Cmpname = :arg_s_record.Cmpname,
  855. Address = :arg_s_record.Address,
  856. Reljob = :arg_s_record.Reljob,
  857. wage = :arg_s_record.wage,
  858. Start_date = :arg_s_record.Start_date,
  859. End_date = :arg_s_record.End_date,
  860. Cause = :arg_s_record.Cause,
  861. Dscrp = :arg_s_record.Dscrp,
  862. moddate = :server_dt,
  863. modemp = :arg_opemp
  864. Where mxid = :arg_s_record.mxid;
  865. IF sqlca.SQLCode <> 0 THEN
  866. arg_msg = '更新简历内容失败,原因:'+sqlca.SQLErrText
  867. rslt = 0
  868. GOTO ext
  869. END IF
  870. END IF
  871. ext:
  872. IF rslt = 0 THEN
  873. ROLLBACK;
  874. ELSEIF rslt = 1 AND arg_ifcommit THEN
  875. COMMIT;
  876. END IF
  877. RETURN rslt
  878. end function
  879. public function integer uof_del_train (long arg_trainid, long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  880. Long ll_empid
  881. Int ls_status
  882. String ls_empname
  883. Long ll_relid
  884. String ls_relcode
  885. IF IsNull(arg_trainid) THEN arg_trainid = 0
  886. SELECT u_rs_empinfo.status,
  887. u_rs_train.empid,
  888. u_rs_empinfo.empname,
  889. u_rs_train.relid,
  890. u_rs_train.relcode
  891. INTO :ls_status,
  892. :ll_empid,
  893. :ls_empname,
  894. :ll_relid,
  895. :ls_relcode
  896. FROM u_rs_empinfo,u_rs_train
  897. WHERE u_rs_empinfo.empid = u_rs_train.empid
  898. AND u_rs_train.trainid = :arg_trainid;
  899. IF sqlca.SQLCode <> 0 THEN
  900. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  901. rslt = 0
  902. GOTO ext
  903. END IF
  904. IF ll_relid > 0 THEN
  905. rslt = 0
  906. arg_msg = '该培训资料是员工培训单:'+ls_relcode+'审核自动建立的,不能手动删除'
  907. GOTO ext
  908. END IF
  909. IF ll_empid <> arg_empid THEN
  910. arg_msg = '选择删除培训资料的员工资料不相符'
  911. rslt = 0
  912. GOTO ext
  913. END IF
  914. IF ls_status = 0 THEN
  915. arg_msg = '员工:'+ls_empname+' 不在职,不能进行删除培训内容'
  916. rslt = 0
  917. GOTO ext
  918. END IF
  919. DELETE FROM u_rs_train Where trainid = :arg_trainid;
  920. IF sqlca.SQLCode <> 0 THEN
  921. arg_msg = '删除培训内容失败,原因:'+sqlca.SQLErrText
  922. rslt = 0
  923. GOTO ext
  924. END IF
  925. ext:
  926. IF rslt = 0 THEN
  927. ROLLBACK;
  928. ELSEIF rslt = 1 AND arg_ifcommit THEN
  929. COMMIT;
  930. END IF
  931. RETURN rslt
  932. end function
  933. public function integer uof_del_record (long arg_mxid, long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  934. Long ll_empid
  935. Int ls_status
  936. IF IsNull(arg_mxid) THEN arg_mxid = 0
  937. SELECT status,u_rs_emprecord.empid
  938. INTO :ls_status,:ll_empid
  939. FROM u_rs_empinfo,u_rs_emprecord
  940. WHERE u_rs_empinfo.empid = u_rs_emprecord.empid
  941. AND u_rs_emprecord.mxid = :arg_mxid;
  942. IF sqlca.SQLCode <> 0 THEN
  943. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  944. rslt = 0
  945. GOTO ext
  946. END IF
  947. IF ll_empid <> arg_empid THEN
  948. arg_msg = '选择删除简历资料的员工资料不相符'
  949. rslt = 0
  950. GOTO ext
  951. END IF
  952. IF ls_status = 0 THEN
  953. arg_msg = '该员工不在职,不能进行删除简历内容'
  954. rslt = 0
  955. GOTO ext
  956. END IF
  957. DELETE FROM u_rs_emprecord Where mxid = :arg_mxid;
  958. IF sqlca.SQLCode <> 0 THEN
  959. arg_msg = '删除社保内容失败,原因:'+sqlca.SQLErrText
  960. rslt = 0
  961. GOTO ext
  962. END IF
  963. ext:
  964. IF rslt = 0 THEN
  965. ROLLBACK;
  966. ELSEIF rslt = 1 AND arg_ifcommit THEN
  967. COMMIT;
  968. END IF
  969. RETURN rslt
  970. end function
  971. public function integer uof_move (integer arg_moveflag, s_moverecord arg_s_moverecord, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  972. Long ls_newid
  973. Int ls_status
  974. String ls_empcode
  975. DateTime server_dt
  976. String ls_sdeptype,ls_shandtype
  977. String ls_ddeptype,ls_dhandtype
  978. IF IsNull(arg_s_moverecord.moveid) THEN arg_s_moverecord.moveid = 0
  979. IF IsNull(arg_s_moverecord.empid) THEN arg_s_moverecord.empid = 0
  980. IF IsNull(arg_s_moverecord.movetype) THEN arg_s_moverecord.movetype = 0
  981. IF IsNull(arg_s_moverecord.cause) THEN arg_s_moverecord.cause = ''
  982. IF IsNull(arg_s_moverecord.sjob) THEN arg_s_moverecord.sjob = ''
  983. IF IsNull(arg_s_moverecord.djob) THEN arg_s_moverecord.djob = ''
  984. IF IsNull(arg_s_moverecord.sdeptid) THEN arg_s_moverecord.sdeptid = 0
  985. IF IsNull(arg_s_moverecord.ddeptid) THEN arg_s_moverecord.ddeptid = 0
  986. IF IsNull(arg_s_moverecord.filecode) THEN arg_s_moverecord.filecode = ''
  987. IF IsNull(arg_s_moverecord.wage) THEN arg_s_moverecord.wage = 0
  988. IF IsNull(arg_s_moverecord.firetype) THEN arg_s_moverecord.firetype = ''
  989. IF IsNull(arg_s_moverecord.dscrp) THEN arg_s_moverecord.dscrp = ''
  990. IF IsNull(arg_s_moverecord.scid) THEN arg_s_moverecord.scid = 0
  991. IF IsNull(arg_s_moverecord.ifBlackList) THEN arg_s_moverecord.ifBlackList = 0
  992. IF arg_s_moverecord.moveid = 0 THEN //新建
  993. SELECT status,empcode
  994. INTO :ls_status,:ls_empcode
  995. FROM u_rs_empinfo
  996. Where empid = :arg_s_moverecord.empid;
  997. IF sqlca.SQLCode <> 0 THEN
  998. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  999. rslt = 0
  1000. GOTO ext
  1001. END IF
  1002. //arg_moveflag 1-入职,0-其它
  1003. IF arg_moveflag = 0 And ls_status = 0 THEN
  1004. arg_msg = '该员工不在职,不能进行操作'
  1005. rslt = 0
  1006. GOTO ext
  1007. END IF
  1008. IF arg_s_moverecord.movetype = 1 Or arg_s_moverecord.movetype = 2 THEN
  1009. IF arg_s_moverecord.sdeptid = 0 THEN
  1010. arg_msg = '不存在的调出部门。'
  1011. rslt = 0
  1012. GOTO ext
  1013. END IF
  1014. IF arg_s_moverecord.sjob = '' THEN
  1015. arg_msg = '调动前职位不能为空或不存在的职位。'
  1016. rslt = 0
  1017. GOTO ext
  1018. END IF
  1019. END IF
  1020. IF arg_s_moverecord.movetype = 1 Or arg_s_moverecord.movetype = 0 THEN
  1021. IF arg_s_moverecord.ddeptid = 0 THEN
  1022. arg_msg = '不存在的调入部门。'
  1023. rslt = 0
  1024. GOTO ext
  1025. END IF
  1026. IF arg_s_moverecord.djob = '' THEN
  1027. arg_msg = '调动后职位不能为空或不存在的职位。'
  1028. rslt = 0
  1029. GOTO ext
  1030. END IF
  1031. END IF
  1032. IF arg_s_moverecord.sdeptid > 0 THEN
  1033. SELECT departmentname,handtype
  1034. INTO :ls_sdeptype,:ls_shandtype
  1035. FROM cw_department
  1036. Where departmentid = :arg_s_moverecord.sdeptid;
  1037. IF sqlca.SQLCode <> 0 THEN
  1038. arg_msg = '查询调出部门资料失败,原因:'+sqlca.SQLErrText
  1039. rslt = 0
  1040. GOTO ext
  1041. END IF
  1042. END IF
  1043. IF arg_s_moverecord.ddeptid > 0 THEN
  1044. SELECT departmentname,handtype
  1045. INTO :ls_ddeptype,:ls_dhandtype
  1046. FROM cw_department
  1047. Where departmentid = :arg_s_moverecord.ddeptid;
  1048. IF sqlca.SQLCode <> 0 THEN
  1049. arg_msg = '查询调入部门资料失败,原因:'+sqlca.SQLErrText
  1050. rslt = 0
  1051. GOTO ext
  1052. END IF
  1053. END IF
  1054. ls_newid = f_sys_scidentity(0,"u_rs_moverecord","moveid",arg_msg,True,id_sqlca)
  1055. IF ls_newid <= 0 THEN
  1056. rslt = 0
  1057. GOTO ext
  1058. END IF
  1059. SELECT Top 1 getdate() Into :server_dt From u_user;
  1060. IF sqlca.SQLCode <> 0 THEN
  1061. rslt = 0
  1062. arg_msg = "查询操作失败,日期 "
  1063. GOTO ext
  1064. END IF
  1065. INSERT INTO u_rs_moverecord
  1066. (Moveid,
  1067. empid,
  1068. Movedate,
  1069. Movetype,
  1070. cause,
  1071. Sdept,
  1072. Ddept,
  1073. Sdeptid,
  1074. Ddeptid,
  1075. Sjob,
  1076. Djob,
  1077. wage,
  1078. Filecode,
  1079. Opemp,
  1080. Opdate,
  1081. dscrp)
  1082. VALUES(:ls_newid,
  1083. :arg_s_moverecord.empid,
  1084. :arg_s_moverecord.Movedate,
  1085. :arg_s_moverecord.movetype,
  1086. :arg_s_moverecord.cause,
  1087. :ls_Sdeptype,
  1088. :ls_Ddeptype,
  1089. :arg_s_moverecord.Sdeptid,
  1090. :arg_s_moverecord.Ddeptid,
  1091. :arg_s_moverecord.sjob,
  1092. :arg_s_moverecord.djob,
  1093. :arg_s_moverecord.wage,
  1094. :arg_s_moverecord.filecode,
  1095. :arg_opemp,
  1096. :server_dt,
  1097. :arg_s_moverecord.dscrp);
  1098. IF sqlca.SQLCode <> 0 THEN
  1099. arg_msg = '操作失败,原因:'+sqlca.SQLErrText
  1100. rslt = 0
  1101. GOTO ext
  1102. END IF
  1103. IF arg_s_moverecord.movetype = 1 THEN
  1104. UPDATE u_rs_empinfo
  1105. SET Deptid = :arg_s_moverecord.Ddeptid,
  1106. deptype = :ls_ddeptype,
  1107. handtype = :ls_dhandtype,
  1108. duty = :arg_s_moverecord.djob,
  1109. wage = :arg_s_moverecord.wage,
  1110. scid = :arg_s_moverecord.scid
  1111. Where empid = :arg_s_moverecord.empid;
  1112. IF sqlca.SQLCode <> 0 THEN
  1113. arg_msg = '更新员工资料失败,原因:'+sqlca.SQLErrText
  1114. rslt = 0
  1115. GOTO ext
  1116. END IF
  1117. ELSEIF arg_s_moverecord.movetype = 2 THEN //离职
  1118. String ls_ordercode
  1119. Long cnt = 0
  1120. SELECT count(*) INTO :cnt FROM u_rs_empinfo
  1121. WHERE empcode LIKE 'LZ_'+:ls_empcode+'%'
  1122. And status = 0;
  1123. IF sqlca.SQLCode <> 0 THEN
  1124. arg_msg = '查询员工编号失败,原因:'+sqlca.SQLErrText
  1125. rslt = 0
  1126. GOTO ext
  1127. END IF
  1128. ls_ordercode = String(cnt+1)
  1129. UPDATE u_rs_empinfo
  1130. SET empcode = 'LZ'+rtrim(empcode)+'-'+:ls_ordercode,
  1131. status = 0,
  1132. ifBlackList = :arg_s_moverecord.ifBlackList
  1133. Where empid = :arg_s_moverecord.empid;
  1134. IF sqlca.SQLCode <> 0 THEN
  1135. arg_msg = '更新员工资料失败,原因:'+sqlca.SQLErrText
  1136. rslt = 0
  1137. GOTO ext
  1138. END IF
  1139. //更新用户资料, u_user
  1140. UPDATE u_user
  1141. SET ifnotin = 1 , descrp = '员工离职自动禁用'
  1142. Where (empid = :arg_s_moverecord.empid);
  1143. IF sqlca.SQLCode <> 0 THEN
  1144. arg_msg = '更新员工用户权限失败,原因:'+sqlca.SQLErrText
  1145. rslt = 0
  1146. GOTO ext
  1147. END IF
  1148. END IF
  1149. ELSE //修改
  1150. UPDATE u_rs_moverecord
  1151. SET cause = :arg_s_moverecord.cause,
  1152. dscrp = :arg_s_moverecord.dscrp
  1153. Where moveid = :arg_s_moverecord.moveid;
  1154. IF sqlca.SQLCode <> 0 THEN
  1155. rslt = 0
  1156. arg_msg = '更新调动记录失败,' + sqlca.SQLErrText
  1157. GOTO ext
  1158. END IF
  1159. UPDATE u_rs_empinfo
  1160. SET ifBlackList = :arg_s_moverecord.ifBlackList
  1161. Where empid = :arg_s_moverecord.empid;
  1162. IF sqlca.SQLCode <> 0 THEN
  1163. arg_msg = '更新员工资料失败,原因:'+sqlca.SQLErrText
  1164. rslt = 0
  1165. GOTO ext
  1166. END IF
  1167. END IF
  1168. ext:
  1169. IF rslt = 0 THEN
  1170. ROLLBACK;
  1171. END IF
  1172. IF rslt = 1 And arg_ifcommit THEN
  1173. COMMIT;
  1174. END IF
  1175. RETURN rslt
  1176. end function
  1177. public function integer uof_add_contract (s_contract arg_s_contract, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1178. Long ls_newid
  1179. Int ls_status
  1180. DateTime server_dt
  1181. IF IsNull(arg_s_contract.contractid) THEN arg_s_contract.contractid = 0
  1182. IF IsNull(arg_s_contract.empid) THEN arg_s_contract.empid = 0
  1183. IF IsNull(arg_s_contract.dscrp) THEN arg_s_contract.dscrp = ''
  1184. SELECT status
  1185. INTO :ls_status
  1186. FROM u_rs_empinfo
  1187. Where empid = :arg_s_contract.empid;
  1188. IF sqlca.SQLCode <> 0 THEN
  1189. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  1190. rslt = 0
  1191. GOTO ext
  1192. END IF
  1193. IF ls_status = 0 THEN
  1194. arg_msg = '该员工不在职,不能进行增加合同内容'
  1195. rslt = 0
  1196. GOTO ext
  1197. END IF
  1198. IF arg_s_contract.contractid = 0 THEN
  1199. ls_newid = f_sys_scidentity(0,"u_rs_contract","contractid",arg_msg,TRUE,id_sqlca)
  1200. IF ls_newid <= 0 THEN
  1201. rslt = 0
  1202. GOTO ext
  1203. END IF
  1204. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  1205. IF sqlca.SQLCode <> 0 THEN
  1206. rslt = 0
  1207. arg_msg = "查询操作失败,日期 "
  1208. GOTO ext
  1209. END IF
  1210. INSERT INTO u_rs_contract
  1211. (contractid,
  1212. empid,
  1213. bdate,
  1214. edate,
  1215. Dscrp,
  1216. Opemp,
  1217. Opdate)
  1218. VALUES(
  1219. :ls_newid,
  1220. :arg_s_contract.empid,
  1221. :arg_s_contract.bdate,
  1222. :arg_s_contract.edate,
  1223. :arg_s_contract.Dscrp,
  1224. :arg_opemp,
  1225. :server_dt);
  1226. IF sqlca.SQLCode <> 0 THEN
  1227. arg_msg = '增加合同内容失败,原因:'+sqlca.SQLErrText
  1228. rslt = 0
  1229. GOTO ext
  1230. END IF
  1231. ELSE
  1232. UPDATE u_rs_contract
  1233. SET edate = :arg_s_contract.edate,
  1234. Bdate = :arg_s_contract.Bdate,
  1235. Dscrp = :arg_s_contract.Dscrp,
  1236. moddate = :server_dt,
  1237. modemp = :arg_opemp
  1238. Where contractid = :arg_s_contract.contractid;
  1239. IF sqlca.SQLCode <> 0 THEN
  1240. arg_msg = '更新合同内容失败,原因:'+sqlca.SQLErrText
  1241. rslt = 0
  1242. GOTO ext
  1243. END IF
  1244. END IF
  1245. ext:
  1246. IF rslt = 0 THEN
  1247. ROLLBACK;
  1248. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1249. COMMIT;
  1250. END IF
  1251. RETURN rslt
  1252. end function
  1253. public function integer uof_del_contract (long arg_contractid, long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1254. Long ll_empid
  1255. Int ls_status, li_flag
  1256. IF IsNull(arg_contractid) THEN arg_contractid = 0
  1257. SELECT status,u_rs_contract.empid
  1258. INTO :ls_status,:ll_empid
  1259. FROM u_rs_empinfo,u_rs_contract
  1260. WHERE u_rs_empinfo.empid = u_rs_contract.empid
  1261. AND u_rs_contract.contractid = :arg_contractid;
  1262. IF sqlca.SQLCode <> 0 THEN
  1263. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  1264. rslt = 0
  1265. GOTO ext
  1266. END IF
  1267. IF ll_empid <> arg_empid THEN
  1268. arg_msg = '选择删除合同资料的员工资料不相符'
  1269. rslt = 0
  1270. GOTO ext
  1271. END IF
  1272. IF ls_status = 0 THEN
  1273. arg_msg = '该员工不在职,不能进行删除社保内容'
  1274. rslt = 0
  1275. GOTO ext
  1276. END IF
  1277. SELECT flag
  1278. INTO :li_flag
  1279. FROM u_rs_contract
  1280. WHERE empid = :arg_empid
  1281. And contractid = :arg_contractid;
  1282. IF sqlca.SQLCode <> 0 THEN
  1283. rslt = 0
  1284. arg_msg = '查询员工合同审核状态失败,'+sqlca.SQLErrText
  1285. GOTO ext
  1286. END IF
  1287. IF li_flag = 1 THEN
  1288. rslt = 0
  1289. arg_msg = '员工合同已审核'
  1290. GOTO ext
  1291. END IF
  1292. DELETE FROM u_rs_contract Where contractid = :arg_contractid;
  1293. IF sqlca.SQLCode <> 0 THEN
  1294. arg_msg = '删除社保内容失败,原因:'+sqlca.SQLErrText
  1295. rslt = 0
  1296. GOTO ext
  1297. END IF
  1298. ext:
  1299. IF rslt = 0 THEN
  1300. ROLLBACK;
  1301. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1302. COMMIT;
  1303. END IF
  1304. RETURN rslt
  1305. end function
  1306. public function integer uof_audit_emp (long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt
  1307. rslt = 1
  1308. Int li_status
  1309. datetime server_dt
  1310. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  1311. IF sqlca.SQLCode <> 0 THEN
  1312. rslt = 0
  1313. arg_msg = "查询操作失败,日期 "
  1314. GOTO ext
  1315. END IF
  1316. SELECT status INTO :li_status
  1317. FROM u_rs_empinfo
  1318. Where empid = :arg_empid;
  1319. IF sqlca.SQLCode <> 0 THEN
  1320. rslt = 0
  1321. arg_msg = '查询员工状态失败,'+sqlca.SQLErrText
  1322. GOTO ext
  1323. END IF
  1324. IF li_status <> 3 THEN
  1325. rslt = 0
  1326. arg_msg = '员工状态不是待审核,不能执行审核操作'
  1327. GOTO ext
  1328. END IF
  1329. UPDATE u_rs_empinfo
  1330. SET status = 1,
  1331. auditemp = :publ_operator,
  1332. auditdate = :server_dt
  1333. WHERE empid = :arg_empid
  1334. And status = 3 ;
  1335. IF sqlca.SQLCode = 0 THEN
  1336. IF sqlca.SQLNRows = 0 THEN
  1337. rslt = 0
  1338. arg_msg = '员工正在审核,请稍后查询'
  1339. GOTO ext
  1340. END IF
  1341. ELSE
  1342. rslt = 0
  1343. arg_msg = '更新员工状态失败,'+sqlca.SQLErrText
  1344. GOTO ext
  1345. END IF
  1346. ext:
  1347. IF rslt = 0 THEN
  1348. ROLLBACK;
  1349. ELSEIF rslt = 1 And arg_ifcommit THEN
  1350. COMMIT;
  1351. END IF
  1352. RETURN rslt
  1353. end function
  1354. public function integer uof_caudit_emp (long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt
  1355. rslt = 1
  1356. Int li_status
  1357. datetime ld_nulldt
  1358. IF uo_option_emp_audit = -1000 THEN
  1359. rslt = 0
  1360. arg_msg = '选项:[221]员工资料需要审核,读取初始默认值失败,操作取消!'
  1361. GOTO ext
  1362. END IF
  1363. setnull(ld_nulldt)
  1364. IF uo_option_emp_audit = 0 THEN
  1365. rslt = 0
  1366. arg_msg = '系统选项 "(221)员工资料需要审核" 已关闭,不能执行员工撤审操作'
  1367. GOTO ext
  1368. END IF
  1369. SELECT status INTO :li_status
  1370. FROM u_rs_empinfo
  1371. Where empid = :arg_empid;
  1372. IF sqlca.SQLCode <> 0 THEN
  1373. rslt = 0
  1374. arg_msg = '查询员工状态失败,'+sqlca.SQLErrText
  1375. GOTO ext
  1376. END IF
  1377. IF li_status <> 1 THEN
  1378. rslt = 0
  1379. arg_msg = '员工状态不是在职,不能执行撤审操作'
  1380. GOTO ext
  1381. END IF
  1382. UPDATE u_rs_empinfo
  1383. SET status = 3,
  1384. auditemp = '',
  1385. auditdate = :ld_nulldt
  1386. WHERE empid = :arg_empid
  1387. And status = 1 ;
  1388. IF sqlca.SQLCode = 0 THEN
  1389. IF sqlca.SQLNRows = 0 THEN
  1390. rslt = 0
  1391. arg_msg = '员工正在撤审,请稍后查询'
  1392. GOTO ext
  1393. END IF
  1394. ELSE
  1395. rslt = 0
  1396. arg_msg = '更新员工状态失败,'+sqlca.SQLErrText
  1397. GOTO ext
  1398. END IF
  1399. ext:
  1400. IF rslt = 0 THEN
  1401. ROLLBACK;
  1402. ELSEIF rslt = 1 And arg_ifcommit THEN
  1403. COMMIT;
  1404. END IF
  1405. RETURN rslt
  1406. end function
  1407. public function integer uof_add_empmtrl_ly (long arg_empid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, decimal arg_price, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  1408. Int li_status
  1409. Decimal lde_qty, lde_billqty
  1410. IF IsNull(arg_empid) THEN arg_empid = 0
  1411. IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
  1412. IF IsNull(arg_status) THEN arg_status = ''
  1413. IF IsNull(arg_woodcode) THEN arg_woodcode = ''
  1414. IF IsNull(arg_pcode) THEN arg_pcode = ''
  1415. IF IsNull(arg_addqty) THEN arg_addqty = 0
  1416. IF arg_addqty = 0 THEN
  1417. rslt = 1
  1418. GOTO ext
  1419. END IF
  1420. SELECT status
  1421. INTO :li_status
  1422. FROM u_rs_empinfo
  1423. Where empid = :arg_empid;
  1424. IF sqlca.SQLCode <> 0 THEN
  1425. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  1426. rslt = 0
  1427. GOTO ext
  1428. END IF
  1429. //IF li_status = 0 THEN
  1430. // arg_msg = '该员工不在职,不能操作'
  1431. // rslt = 0
  1432. // GOTO ext
  1433. //END IF
  1434. IF arg_addqty > 0 THEN
  1435. UPDATE u_rs_empmtrl_ly
  1436. SET qty = qty + :arg_addqty,
  1437. wareamt = case qty + :arg_addqty when 0 then 0 else wareamt + :arg_addqty * :arg_price end ,
  1438. cost = case qty + :arg_addqty when 0 then cost else (wareamt + :arg_addqty * :arg_price) / (qty + :arg_addqty) end
  1439. WHERE empid = :arg_empid
  1440. AND mtrlid = :arg_mtrlid
  1441. AND status = :arg_status
  1442. AND woodcode = :arg_woodcode
  1443. And pcode = :arg_pcode;
  1444. IF sqlca.SQLCode = 0 THEN
  1445. IF sqlca.SQLNRows = 0 THEN
  1446. INSERT INTO u_rs_empmtrl_ly
  1447. (empid,
  1448. mtrlid,
  1449. status,
  1450. woodcode,
  1451. pcode,
  1452. qty,
  1453. cost,
  1454. wareamt)
  1455. VALUES
  1456. (:arg_empid,
  1457. :arg_mtrlid,
  1458. :arg_status,
  1459. :arg_woodcode,
  1460. :arg_pcode,
  1461. :arg_addqty,
  1462. :arg_price,
  1463. :arg_price * :arg_addqty);
  1464. IF sqlca.SQLCode <> 0 THEN
  1465. rslt = 0
  1466. arg_msg = "插入员工物品领用信息失败,"+sqlca.SQLErrText
  1467. GOTO ext
  1468. END IF
  1469. END IF
  1470. ELSE
  1471. rslt = 0
  1472. arg_msg = "更新员工物品领用信息失败,"+sqlca.SQLErrText
  1473. GOTO ext
  1474. END IF
  1475. ELSE
  1476. SELECT qty
  1477. INTO :lde_qty
  1478. FROM u_rs_empmtrl_ly
  1479. WHERE empid = :arg_empid
  1480. AND mtrlid = :arg_mtrlid
  1481. AND status = :arg_status
  1482. AND woodcode = :arg_woodcode
  1483. And pcode = :arg_pcode;
  1484. IF sqlca.SQLCode <> 0 THEN
  1485. rslt = 0
  1486. arg_msg = "查询员工物品领用信息失败,"+sqlca.SQLErrText
  1487. GOTO ext
  1488. END IF
  1489. SELECT sum(qty)
  1490. INTO :lde_billqty
  1491. FROM u_inware INNER join u_inwaremx
  1492. on u_inware.inwareid = u_inwaremx.inwareid
  1493. WHERE sptid = :arg_empid
  1494. AND mtrlid = :arg_mtrlid
  1495. AND status = :arg_status
  1496. AND woodcode = :arg_woodcode
  1497. AND pcode = :arg_pcode
  1498. AND billtype = 28
  1499. And flag = 0;
  1500. IF sqlca.SQLCode <> 0 THEN
  1501. rslt = 0
  1502. arg_msg = "查询员工物品归还单开单未审数信息失败,"+sqlca.SQLErrText
  1503. GOTO ext
  1504. END IF
  1505. IF Abs(arg_addqty) > lde_qty - lde_billqty THEN
  1506. rslt = 0
  1507. arg_msg = "员工剩余领用物品数量只有["+String(lde_qty, '#,##0.##')+"],开单未审数["+String(lde_billqty, '#,##0.##')+"],不能撤审["+String(Abs(arg_addqty), '#,##0.##')+"]"
  1508. GOTO ext
  1509. END IF
  1510. UPDATE u_rs_empmtrl_ly
  1511. SET qty = qty + :arg_addqty,
  1512. wareamt = case qty + :arg_addqty when 0 then 0 else wareamt + :arg_addqty * :arg_price end ,
  1513. cost = case qty + :arg_addqty when 0 then cost else (wareamt + :arg_addqty * :arg_price) / (qty + :arg_addqty) end
  1514. WHERE empid = :arg_empid
  1515. AND mtrlid = :arg_mtrlid
  1516. AND status = :arg_status
  1517. AND woodcode = :arg_woodcode
  1518. And pcode = :arg_pcode;
  1519. IF sqlca.SQLCode <> 0 THEN
  1520. rslt = 0
  1521. arg_msg = "更新员工物品领用信息失败,"+sqlca.SQLErrText
  1522. GOTO ext
  1523. END IF
  1524. END IF
  1525. ext:
  1526. IF rslt = 0 THEN
  1527. ROLLBACK Using sqlca;
  1528. ELSEIF rslt = 1 And arg_ifcommit THEN
  1529. COMMIT Using sqlca;
  1530. END IF
  1531. RETURN rslt
  1532. end function
  1533. public function integer uof_add_empmtrl_gh (long arg_empid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, decimal arg_price, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  1534. Int li_status
  1535. Decimal lde_qty
  1536. IF IsNull(arg_empid) THEN arg_empid = 0
  1537. IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
  1538. IF IsNull(arg_status) THEN arg_status = ''
  1539. IF IsNull(arg_woodcode) THEN arg_woodcode = ''
  1540. IF IsNull(arg_pcode) THEN arg_pcode = ''
  1541. IF IsNull(arg_addqty) THEN arg_addqty = 0
  1542. IF arg_addqty = 0 THEN
  1543. rslt = 1
  1544. GOTO ext
  1545. END IF
  1546. SELECT status
  1547. INTO :li_status
  1548. FROM u_rs_empinfo
  1549. Where empid = :arg_empid;
  1550. IF sqlca.SQLCode <> 0 THEN
  1551. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  1552. rslt = 0
  1553. GOTO ext
  1554. END IF
  1555. //IF li_status = 0 THEN
  1556. // arg_msg = '该员工不在职,不能操作'
  1557. // rslt = 0
  1558. // GOTO ext
  1559. //END IF
  1560. IF arg_addqty < 0 THEN
  1561. //arg_addqty = abs(arg_addqty)
  1562. UPDATE u_rs_empmtrl_ly
  1563. SET qty = qty - :arg_addqty,
  1564. wareamt = case qty - :arg_addqty when 0 then 0 else wareamt - :arg_addqty * :arg_price END ,
  1565. cost = case qty - :arg_addqty when 0 then cost else (wareamt - :arg_addqty * :arg_price) / (qty - :arg_addqty) END
  1566. WHERE empid = :arg_empid
  1567. AND mtrlid = :arg_mtrlid
  1568. AND status = :arg_status
  1569. AND woodcode = :arg_woodcode
  1570. And pcode = :arg_pcode;
  1571. IF sqlca.SQLCode <> 0 THEN
  1572. rslt = 0
  1573. arg_msg = "更新员工物品领用信息失败,"+sqlca.SQLErrText
  1574. GOTO ext
  1575. END IF
  1576. ELSE
  1577. SELECT qty
  1578. INTO :lde_qty
  1579. FROM u_rs_empmtrl_ly
  1580. WHERE empid = :arg_empid
  1581. AND mtrlid = :arg_mtrlid
  1582. AND status = :arg_status
  1583. AND woodcode = :arg_woodcode
  1584. And pcode = :arg_pcode;
  1585. IF sqlca.SQLCode <> 0 THEN
  1586. rslt = 0
  1587. arg_msg = "查询员工物品领用信息失败,"+sqlca.SQLErrText
  1588. GOTO ext
  1589. END IF
  1590. IF arg_addqty > lde_qty THEN
  1591. rslt = 0
  1592. arg_msg = "员工剩余领用物品数量只有["+String(lde_qty, '#,##0.##')+"],不能归还["+String(arg_addqty, '#,##0.##')+"]"
  1593. GOTO ext
  1594. END IF
  1595. UPDATE u_rs_empmtrl_ly
  1596. SET qty = qty - :arg_addqty,
  1597. wareamt = case qty - :arg_addqty when 0 then 0 else wareamt - :arg_addqty * :arg_price END ,
  1598. cost = case qty - :arg_addqty when 0 then cost else (wareamt - :arg_addqty * :arg_price) / (qty - :arg_addqty) END
  1599. WHERE empid = :arg_empid
  1600. AND mtrlid = :arg_mtrlid
  1601. AND status = :arg_status
  1602. AND woodcode = :arg_woodcode
  1603. And pcode = :arg_pcode;
  1604. IF sqlca.SQLCode <> 0 THEN
  1605. rslt = 0
  1606. arg_msg = "更新员工物品领用信息失败,"+sqlca.SQLErrText
  1607. GOTO ext
  1608. END IF
  1609. END IF
  1610. ext:
  1611. IF rslt = 0 THEN
  1612. ROLLBACK Using sqlca;
  1613. ELSEIF rslt = 1 And arg_ifcommit THEN
  1614. COMMIT Using sqlca;
  1615. END IF
  1616. RETURN rslt
  1617. end function
  1618. public function integer uof_add_emptake (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, datetime arg_takedate, decimal arg_amt, string arg_dscrp, integer arg_taketype, boolean arg_ifcommit, ref string arg_msg);//====================================================================
  1619. // 事件: uo_empinfo.uof_add_emptake()
  1620. //--------------------------------------------------------------------
  1621. // 描述:
  1622. //--------------------------------------------------------------------
  1623. // 参数:
  1624. // value long arg_empid //人员ID
  1625. // value long arg_relid //单据ID
  1626. // value long arg_moneyid //币种
  1627. // value string arg_relcode //单据编号
  1628. // value datetime arg_takedate //发生日期
  1629. // value decimal arg_amt //发生金额
  1630. // value string arg_dscrp //备注
  1631. // value integer arg_taketype //0:借 1:还
  1632. // value boolean arg_ifcommit
  1633. // reference string arg_msg
  1634. //--------------------------------------------------------------------
  1635. // 返回: integer
  1636. //--------------------------------------------------------------------
  1637. // 作者: LHD 日期: 2011年10月20日
  1638. //--------------------------------------------------------------------
  1639. // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved.
  1640. //--------------------------------------------------------------------
  1641. // 修改历史:
  1642. //
  1643. //====================================================================
  1644. Int rslt = 1
  1645. Int li_status
  1646. Decimal lde_Msttakeamt, lde_takeamt
  1647. IF IsNull(arg_empid) THEN arg_empid = 0
  1648. IF IsNull(arg_relid) THEN arg_relid = 0
  1649. IF IsNull(arg_moneyid) THEN arg_moneyid = 0
  1650. IF IsNull(arg_relcode) THEN arg_relcode = ''
  1651. IF IsNull(arg_amt) THEN arg_amt = 0
  1652. IF IsNull(arg_dscrp) THEN arg_dscrp = ''
  1653. IF IsNull(arg_taketype) THEN arg_taketype = 0
  1654. IF arg_amt = 0 THEN
  1655. rslt = 1
  1656. GOTO ext
  1657. END IF
  1658. SELECT status
  1659. INTO :li_status
  1660. FROM u_rs_empinfo
  1661. Where empid = :arg_empid;
  1662. IF sqlca.SQLCode <> 0 THEN
  1663. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  1664. rslt = 0
  1665. GOTO ext
  1666. END IF
  1667. //默认 arg_amt > 0
  1668. IF arg_taketype = 0 THEN //借
  1669. lde_Msttakeamt = arg_amt
  1670. lde_takeamt = 0
  1671. ELSE
  1672. lde_Msttakeamt = 0
  1673. lde_takeamt = arg_amt
  1674. arg_amt = 0 - arg_amt
  1675. END IF
  1676. UPDATE u_rs_emptake
  1677. SET amt = amt + :arg_amt
  1678. WHERE empid = :arg_empid
  1679. And moneyid = :arg_moneyid;
  1680. IF sqlca.SQLCode = 0 THEN
  1681. IF sqlca.SQLNRows = 0 THEN
  1682. INSERT INTO u_rs_emptake
  1683. (empid,
  1684. moneyid,
  1685. amt)
  1686. VALUES
  1687. (:arg_empid,
  1688. :arg_moneyid,
  1689. :arg_amt);
  1690. IF sqlca.SQLCode <> 0 THEN
  1691. rslt = 0
  1692. arg_msg = "插入员工借/还款信息失败,"+sqlca.SQLErrText
  1693. GOTO ext
  1694. END IF
  1695. END IF
  1696. ELSE
  1697. rslt = 0
  1698. arg_msg = "更新员工借/还款信息失败,"+sqlca.SQLErrText
  1699. GOTO ext
  1700. END IF
  1701. INSERT INTO u_rs_emptakemx
  1702. (empid, relid, moneyid, takedate, Msttakeamt, takeamt, dscrp, relcode, taketype)
  1703. VALUES
  1704. (:arg_empid,
  1705. :arg_relid,
  1706. :arg_moneyid,
  1707. :arg_takedate,
  1708. :lde_Msttakeamt,
  1709. :lde_takeamt,
  1710. :arg_dscrp,
  1711. :arg_relcode,
  1712. :arg_taketype);
  1713. IF sqlca.SQLCode <> 0 THEN
  1714. rslt = 0
  1715. arg_msg = "插入员工借/还款明细信息失败,"+sqlca.SQLErrText
  1716. GOTO ext
  1717. END IF
  1718. ext:
  1719. IF rslt = 0 THEN
  1720. ROLLBACK Using sqlca;
  1721. ELSEIF rslt = 1 And arg_ifcommit THEN
  1722. COMMIT Using sqlca;
  1723. END IF
  1724. RETURN rslt
  1725. end function
  1726. public function integer uof_del_emptake (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, integer arg_taketype, boolean arg_ifcommit, ref string arg_msg);//====================================================================
  1727. // 事件: uo_empinfo.uof_del_emptake()
  1728. //--------------------------------------------------------------------
  1729. // 描述:
  1730. //--------------------------------------------------------------------
  1731. // 参数:
  1732. // value long arg_empid //人员ID
  1733. // value long arg_relid //单据ID
  1734. // value long arg_moneyid //币种
  1735. // value string arg_relcode //单据编号
  1736. // value integer arg_taketype //0:借 1:还
  1737. // value boolean arg_ifcommit
  1738. // reference string arg_msg
  1739. //--------------------------------------------------------------------
  1740. // 返回: integer
  1741. //--------------------------------------------------------------------
  1742. // 作者: LHD 日期: 2011年10月20日
  1743. //--------------------------------------------------------------------
  1744. // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved.
  1745. //--------------------------------------------------------------------
  1746. // 修改历史:
  1747. //
  1748. //====================================================================
  1749. Int rslt = 1
  1750. Int li_status, li_cnt
  1751. dec lde_amt
  1752. IF IsNull(arg_empid) THEN arg_empid = 0
  1753. IF IsNull(arg_relid) THEN arg_relid = 0
  1754. IF IsNull(arg_moneyid) THEN arg_moneyid = 0
  1755. IF IsNull(arg_relcode) THEN arg_relcode = ''
  1756. IF IsNull(arg_taketype) THEN arg_taketype = 0
  1757. SELECT status
  1758. INTO :li_status
  1759. FROM u_rs_empinfo
  1760. Where empid = :arg_empid;
  1761. IF sqlca.SQLCode <> 0 THEN
  1762. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  1763. rslt = 0
  1764. GOTO ext
  1765. END IF
  1766. SELECT count(*)
  1767. INTO :li_cnt
  1768. FROM u_rs_emptakemx
  1769. WHERE empid = :arg_empid
  1770. AND relid = :arg_relid
  1771. AND relcode = :arg_relcode
  1772. And moneyid = :arg_moneyid;
  1773. IF sqlca.SQLCode <> 0 THEN
  1774. arg_msg = "查询员工借/还款明细信息失败,"+sqlca.SQLErrText
  1775. rslt = 0
  1776. GOTO ext
  1777. END IF
  1778. IF li_cnt = 0 THEN
  1779. arg_msg = "没有对应的员工借/还款明细信息"
  1780. rslt = 0
  1781. GOTO ext
  1782. END IF
  1783. SELECT case :arg_taketype when 0 then msttakeamt else takeamt end
  1784. INTO :lde_amt
  1785. FROM u_rs_emptakemx
  1786. WHERE empid = :arg_empid
  1787. AND relid = :arg_relid
  1788. AND relcode = :arg_relcode
  1789. And moneyid = :arg_moneyid;
  1790. IF sqlca.SQLCode <> 0 THEN
  1791. arg_msg = "查询员工借/还款明细信息失败,"+sqlca.SQLErrText
  1792. rslt = 0
  1793. GOTO ext
  1794. END IF
  1795. ////默认 arg_amt < 0
  1796. //lde_amt = 0 - lde_amt
  1797. if arg_taketype = 0 then
  1798. lde_amt = 0 - lde_amt
  1799. else
  1800. lde_amt = lde_amt
  1801. end if
  1802. UPDATE u_rs_emptake
  1803. SET amt = amt + :lde_amt
  1804. WHERE empid = :arg_empid
  1805. And moneyid = :arg_moneyid;
  1806. IF sqlca.SQLCode = 0 THEN
  1807. IF sqlca.SQLNRows = 0 THEN
  1808. INSERT INTO u_rs_emptake
  1809. (empid,
  1810. moneyid,
  1811. amt)
  1812. VALUES
  1813. (:arg_empid,
  1814. :arg_moneyid,
  1815. :lde_amt);
  1816. IF sqlca.SQLCode <> 0 THEN
  1817. rslt = 0
  1818. arg_msg = "插入员工借/还款信息失败,"+sqlca.SQLErrText
  1819. GOTO ext
  1820. END IF
  1821. END IF
  1822. ELSE
  1823. rslt = 0
  1824. arg_msg = "更新员工借/还款信息失败,"+sqlca.SQLErrText
  1825. GOTO ext
  1826. END IF
  1827. DELETE FROM u_rs_emptakemx
  1828. WHERE empid = :arg_empid
  1829. AND relid = :arg_relid
  1830. AND relcode = :arg_relcode
  1831. And moneyid = :arg_moneyid;
  1832. IF sqlca.SQLCode <> 0 THEN
  1833. arg_msg = "查询员工借/还款明细信息失败,"+sqlca.SQLErrText
  1834. rslt = 0
  1835. GOTO ext
  1836. END IF
  1837. ext:
  1838. IF rslt = 0 THEN
  1839. ROLLBACK Using sqlca;
  1840. ELSEIF rslt = 1 And arg_ifcommit THEN
  1841. COMMIT Using sqlca;
  1842. END IF
  1843. RETURN rslt
  1844. end function
  1845. public function integer uof_add_insure (s_insure arg_s_insure, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1846. Long ls_newid
  1847. Int ls_status
  1848. DateTime server_dt
  1849. IF IsNull(arg_s_insure.insureid) THEN arg_s_insure.insureid = 0
  1850. IF IsNull(arg_s_insure.empid) THEN arg_s_insure.empid = 0
  1851. IF IsNull(arg_s_insure.BuyMth) THEN arg_s_insure.BuyMth = 0
  1852. IF IsNull(arg_s_insure.Subsidy) THEN arg_s_insure.Subsidy = 0
  1853. IF IsNull(arg_s_insure.Payself) THEN arg_s_insure.Payself = 0
  1854. IF IsNull(arg_s_insure.dscrp) THEN arg_s_insure.dscrp = ''
  1855. SELECT status
  1856. INTO :ls_status
  1857. FROM u_rs_empinfo
  1858. Where empid = :arg_s_insure.empid;
  1859. IF sqlca.SQLCode <> 0 THEN
  1860. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  1861. rslt = 0
  1862. GOTO ext
  1863. END IF
  1864. IF ls_status = 0 THEN
  1865. arg_msg = '该员工不在职,不能进行增加社保内容'
  1866. rslt = 0
  1867. GOTO ext
  1868. END IF
  1869. IF arg_s_insure.BuyMth = 0 THEN
  1870. arg_msg = '请输入购买月份'
  1871. rslt = 0
  1872. GOTO ext
  1873. END IF
  1874. IF arg_s_insure.insureid = 0 THEN
  1875. ls_newid = f_sys_scidentity(0,"u_rs_insure","insureid",arg_msg,TRUE,id_sqlca)
  1876. IF ls_newid <= 0 THEN
  1877. rslt = 0
  1878. GOTO ext
  1879. END IF
  1880. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  1881. IF sqlca.SQLCode <> 0 THEN
  1882. rslt = 0
  1883. arg_msg = "查询操作失败,日期 "
  1884. GOTO ext
  1885. END IF
  1886. INSERT INTO u_rs_insure
  1887. (insureid,
  1888. empid,
  1889. BuyMth,
  1890. Buydate,
  1891. Subsidy,
  1892. Payself,
  1893. Dscrp,
  1894. Opemp,
  1895. Opdate)
  1896. VALUES(
  1897. :ls_newid,
  1898. :arg_s_insure.empid,
  1899. :arg_s_insure.BuyMth,
  1900. :arg_s_insure.Buydate,
  1901. :arg_s_insure.Subsidy,
  1902. :arg_s_insure.Payself,
  1903. :arg_s_insure.Dscrp,
  1904. :arg_opemp,
  1905. :server_dt);
  1906. IF sqlca.SQLCode <> 0 THEN
  1907. arg_msg = '增加社保内容失败,原因:'+sqlca.SQLErrText
  1908. rslt = 0
  1909. GOTO ext
  1910. END IF
  1911. ELSE
  1912. UPDATE u_rs_insure
  1913. SET BuyMth = :arg_s_insure.BuyMth,
  1914. Buydate = :arg_s_insure.Buydate,
  1915. Subsidy = :arg_s_insure.Subsidy,
  1916. Payself = :arg_s_insure.Payself,
  1917. Dscrp = :arg_s_insure.Dscrp,
  1918. moddate = :server_dt,
  1919. modemp = :arg_opemp
  1920. Where insureid = :arg_s_insure.insureid;
  1921. IF sqlca.SQLCode <> 0 THEN
  1922. arg_msg = '更新社保内容失败,原因:'+sqlca.SQLErrText
  1923. rslt = 0
  1924. GOTO ext
  1925. END IF
  1926. END IF
  1927. ext:
  1928. IF rslt = 0 THEN
  1929. ROLLBACK;
  1930. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1931. COMMIT;
  1932. END IF
  1933. RETURN rslt
  1934. end function
  1935. public function integer uof_add_idcard (s_idcard arg_s_idcard, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1936. Long ls_newid
  1937. Int ls_status
  1938. DateTime server_dt
  1939. IF IsNull(arg_s_idcard.mxid) THEN arg_s_idcard.mxid = 0
  1940. IF IsNull(arg_s_idcard.empid) THEN arg_s_idcard.empid = 0
  1941. IF IsNull(arg_s_idcard.idcard) THEN arg_s_idcard.idcard = ''
  1942. IF IsNull(arg_s_idcard.fzjg) THEN arg_s_idcard.fzjg = ''
  1943. SELECT status
  1944. INTO :ls_status
  1945. FROM u_rs_empinfo
  1946. Where empid = :arg_s_idcard.empid;
  1947. IF sqlca.SQLCode <> 0 THEN
  1948. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  1949. rslt = 0
  1950. GOTO ext
  1951. END IF
  1952. IF ls_status = 0 THEN
  1953. arg_msg = '该员工不在职,不能进行增加身份证'
  1954. rslt = 0
  1955. GOTO ext
  1956. END IF
  1957. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  1958. IF sqlca.SQLCode <> 0 THEN
  1959. rslt = 0
  1960. arg_msg = "查询操作失败,日期 "
  1961. GOTO ext
  1962. END IF
  1963. IF arg_s_idcard.mxid = 0 THEN
  1964. ls_newid = f_sys_scidentity(0,"u_rs_emp_idcard","mxid",arg_msg,TRUE,id_sqlca)
  1965. IF ls_newid <= 0 THEN
  1966. rslt = 0
  1967. GOTO ext
  1968. END IF
  1969. INSERT INTO u_rs_emp_idcard
  1970. (mxid,
  1971. empid,
  1972. idcard,
  1973. fzjg,
  1974. limit_date,
  1975. Opemp,
  1976. Opdate)
  1977. VALUES(
  1978. :ls_newid,
  1979. :arg_s_idcard.empid,
  1980. :arg_s_idcard.idcard,
  1981. :arg_s_idcard.fzjg,
  1982. :arg_s_idcard.limit_date,
  1983. :arg_opemp,
  1984. :server_dt);
  1985. IF sqlca.SQLCode <> 0 THEN
  1986. arg_msg = '增加身份证内容失败,原因:'+sqlca.SQLErrText
  1987. rslt = 0
  1988. GOTO ext
  1989. END IF
  1990. ELSE
  1991. UPDATE u_rs_emp_idcard
  1992. SET idcard = :arg_s_idcard.idcard,
  1993. fzjg = :arg_s_idcard.fzjg,
  1994. limit_date = :arg_s_idcard.limit_date,
  1995. empid = :arg_s_idcard.empid,
  1996. moddate = :server_dt,
  1997. modemp = :arg_opemp
  1998. Where mxid = :arg_s_idcard.mxid;
  1999. IF sqlca.SQLCode <> 0 THEN
  2000. arg_msg = '更新社保内容失败,原因:'+sqlca.SQLErrText
  2001. rslt = 0
  2002. GOTO ext
  2003. END IF
  2004. END IF
  2005. ext:
  2006. IF rslt = 0 THEN
  2007. ROLLBACK;
  2008. ELSEIF rslt = 1 AND arg_ifcommit THEN
  2009. COMMIT;
  2010. END IF
  2011. RETURN rslt
  2012. end function
  2013. public function integer uof_del_insure (long arg_insureid, long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  2014. Long ll_empid
  2015. Int ls_status
  2016. IF IsNull(arg_insureid) THEN arg_insureid = 0
  2017. SELECT status,u_rs_insure.empid
  2018. INTO :ls_status,:ll_empid
  2019. FROM u_rs_empinfo,u_rs_insure
  2020. WHERE u_rs_empinfo.empid = u_rs_insure.empid
  2021. AND u_rs_insure.insureid = :arg_insureid;
  2022. IF sqlca.SQLCode <> 0 THEN
  2023. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  2024. rslt = 0
  2025. GOTO ext
  2026. END IF
  2027. IF ll_empid <> arg_empid THEN
  2028. arg_msg = '选择删除社保资料的员工资料不相符'
  2029. rslt = 0
  2030. GOTO ext
  2031. END IF
  2032. IF ls_status = 0 THEN
  2033. arg_msg = '该员工不在职,不能进行删除社保内容'
  2034. rslt = 0
  2035. GOTO ext
  2036. END IF
  2037. DELETE FROM u_rs_insure Where insureid = :arg_insureid;
  2038. IF sqlca.SQLCode <> 0 THEN
  2039. arg_msg = '删除社保内容失败,原因:'+sqlca.SQLErrText
  2040. rslt = 0
  2041. GOTO ext
  2042. END IF
  2043. ext:
  2044. IF rslt = 0 THEN
  2045. ROLLBACK;
  2046. ELSEIF rslt = 1 AND arg_ifcommit THEN
  2047. COMMIT;
  2048. END IF
  2049. RETURN rslt
  2050. end function
  2051. public function integer uof_del_idcard (long arg_mxid, long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  2052. Long ll_empid
  2053. Int ls_status
  2054. IF IsNull(arg_mxid) THEN arg_mxid = 0
  2055. SELECT u_rs_empinfo.status, u_rs_emp_idcard.empid
  2056. INTO :ls_status, :ll_empid
  2057. FROM u_rs_empinfo INNER JOIN
  2058. u_rs_emp_idcard ON u_rs_empinfo.empid = u_rs_emp_idcard.empid
  2059. Where (u_rs_emp_idcard.mxid = :arg_mxid);
  2060. IF sqlca.SQLCode <> 0 THEN
  2061. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  2062. rslt = 0
  2063. GOTO ext
  2064. END IF
  2065. IF ll_empid <> arg_empid THEN
  2066. arg_msg = '选择删除身份证资料的员工资料不相符'
  2067. rslt = 0
  2068. GOTO ext
  2069. END IF
  2070. IF ls_status = 0 THEN
  2071. arg_msg = '该员工不在职,不能进行删除身份证内容'
  2072. rslt = 0
  2073. GOTO ext
  2074. END IF
  2075. DELETE From u_rs_emp_idcard Where mxid = :arg_mxid;
  2076. IF sqlca.SQLCode <> 0 THEN
  2077. arg_msg = '删除社保内容失败,原因:'+sqlca.SQLErrText
  2078. rslt = 0
  2079. GOTO ext
  2080. END IF
  2081. ext:
  2082. IF rslt = 0 THEN
  2083. ROLLBACK;
  2084. ELSEIF rslt = 1 And arg_ifcommit THEN
  2085. COMMIT;
  2086. END IF
  2087. RETURN rslt
  2088. end function
  2089. public function integer uof_audit_contract (long arg_empid, long arg_contractid, ref string arg_msg, boolean arg_ifcommit);Int rslt
  2090. rslt = 1
  2091. Int li_status, li_flag
  2092. DateTime server_dt
  2093. SELECT Top 1 getdate() Into :server_dt From u_user;
  2094. IF sqlca.SQLCode <> 0 THEN
  2095. rslt = 0
  2096. arg_msg = "查询操作失败,日期 "
  2097. GOTO ext
  2098. END IF
  2099. SELECT status INTO :li_status
  2100. FROM u_rs_empinfo
  2101. Where empid = :arg_empid;
  2102. IF sqlca.SQLCode <> 0 THEN
  2103. rslt = 0
  2104. arg_msg = '查询员工状态失败,'+sqlca.SQLErrText
  2105. GOTO ext
  2106. END IF
  2107. IF li_status = 0 THEN
  2108. arg_msg = '该员工不在职,不能进行审核合同'
  2109. rslt = 0
  2110. GOTO ext
  2111. END IF
  2112. SELECT flag
  2113. INTO :li_flag
  2114. FROM u_rs_contract
  2115. WHERE empid = :arg_empid
  2116. And contractid = :arg_contractid;
  2117. IF sqlca.SQLCode <> 0 THEN
  2118. rslt = 0
  2119. arg_msg = '查询员工合同审核状态失败,'+sqlca.SQLErrText
  2120. GOTO ext
  2121. END IF
  2122. IF li_flag = 1 THEN
  2123. rslt = 0
  2124. arg_msg = '员工合同已审核'
  2125. GOTO ext
  2126. END IF
  2127. UPDATE u_rs_contract
  2128. SET flag = 1,
  2129. auditemp = :publ_operator,
  2130. auditdate = :server_dt
  2131. WHERE empid = :arg_empid
  2132. AND contractid = :arg_contractid
  2133. And flag = 0;
  2134. IF sqlca.SQLCode = 0 THEN
  2135. IF sqlca.SQLNRows = 0 THEN
  2136. rslt = 0
  2137. arg_msg = '员工合同正在审核,请稍后查询'
  2138. GOTO ext
  2139. END IF
  2140. ELSE
  2141. rslt = 0
  2142. arg_msg = '更新员工合同状态失败,'+sqlca.SQLErrText
  2143. GOTO ext
  2144. END IF
  2145. ext:
  2146. IF rslt = 0 THEN
  2147. ROLLBACK;
  2148. ELSEIF rslt = 1 And arg_ifcommit THEN
  2149. COMMIT;
  2150. END IF
  2151. RETURN rslt
  2152. end function
  2153. public function integer uof_caudit_contract (long arg_empid, long arg_contractid, ref string arg_msg, boolean arg_ifcommit);Int rslt, li_flag
  2154. rslt = 1
  2155. SELECT flag
  2156. INTO :li_flag
  2157. FROM u_rs_contract
  2158. WHERE empid = :arg_empid
  2159. And contractid = :arg_contractid;
  2160. IF sqlca.SQLCode <> 0 THEN
  2161. rslt = 0
  2162. arg_msg = '查询员工合同审核状态失败,'+sqlca.SQLErrText
  2163. GOTO ext
  2164. END IF
  2165. IF li_flag <> 1 THEN
  2166. rslt = 0
  2167. arg_msg = '员工合同未审核'
  2168. GOTO ext
  2169. END IF
  2170. UPDATE u_rs_contract
  2171. SET flag = 0,
  2172. auditemp = '',
  2173. auditdate = null
  2174. WHERE empid = :arg_empid
  2175. And contractid = :arg_contractid
  2176. and flag = 1;
  2177. IF sqlca.SQLCode = 0 THEN
  2178. IF sqlca.SQLNRows = 0 THEN
  2179. rslt = 0
  2180. arg_msg = '员工合同正在撤审,请稍后查询'
  2181. GOTO ext
  2182. END IF
  2183. ELSE
  2184. rslt = 0
  2185. arg_msg = '更新员工合同状态失败,'+sqlca.SQLErrText
  2186. GOTO ext
  2187. END IF
  2188. ext:
  2189. IF rslt = 0 THEN
  2190. ROLLBACK;
  2191. ELSEIF rslt = 1 And arg_ifcommit THEN
  2192. COMMIT;
  2193. END IF
  2194. RETURN rslt
  2195. end function
  2196. public function integer uof_add_item (s_item_cust_spt arg_s_item, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  2197. Long cnt,ll_repid
  2198. IF IsNull(arg_s_item.itemid) THEN arg_s_item.itemid = 0
  2199. IF IsNull(arg_s_item.relid) THEN arg_s_item.relid = 0
  2200. IF IsNull(arg_s_item.reltype) THEN arg_s_item.reltype = 0
  2201. IF IsNull(arg_s_item.dscrp) THEN arg_s_item.dscrp = ''
  2202. cnt = 0
  2203. SELECT count(*) INTO :cnt
  2204. FROM u_item_cust_spt_def
  2205. Where itemid = :arg_s_item.itemid;
  2206. IF sqlca.SQLCode <> 0 THEN
  2207. arg_msg = '查询辅助项目资料失败,'+sqlca.SQLErrText
  2208. rslt = 0
  2209. GOTO ext
  2210. END IF
  2211. cnt = 0
  2212. IF arg_s_item.reltype = 2 THEN
  2213. SELECT count(*) INTO :cnt
  2214. FROM u_rs_empinfo
  2215. Where empid = :arg_s_item.relid;
  2216. IF sqlca.SQLCode <> 0 THEN
  2217. arg_msg = '查询人事资料失败,'+sqlca.SQLErrText
  2218. rslt = 0
  2219. GOTO ext
  2220. END IF
  2221. ELSE
  2222. arg_msg = '错误的项目类型'
  2223. rslt = 0
  2224. GOTO ext
  2225. END IF
  2226. UPDATE u_item_cust_spt
  2227. SET dscrp = :arg_s_item.dscrp
  2228. WHERE itemid = :arg_s_item.itemid
  2229. AND relid = :arg_s_item.relid
  2230. AND reltype = :arg_s_item.reltype;
  2231. IF sqlca.SQLCode = 0 THEN
  2232. IF sqlca.SQLNRows = 0 THEN
  2233. INSERT INTO u_item_cust_spt
  2234. (itemid,
  2235. relid,
  2236. reltype,
  2237. dscrp)
  2238. VALUES(:arg_s_item.itemid,
  2239. :arg_s_item.relid,
  2240. :arg_s_item.reltype,
  2241. :arg_s_item.dscrp);
  2242. IF sqlca.SQLCode <> 0 THEN
  2243. arg_msg = '建立辅助项目资料失败,'+sqlca.SQLErrText
  2244. rslt = 0
  2245. GOTO ext
  2246. END IF
  2247. END IF
  2248. ELSE
  2249. arg_msg = '更新辅助项目资料失败,'+sqlca.SQLErrText
  2250. rslt = 0
  2251. GOTO ext
  2252. END IF
  2253. ext:
  2254. IF rslt = 0 THEN
  2255. ROLLBACK;
  2256. ELSEIF rslt = 1 AND arg_ifcommit THEN
  2257. COMMIT;
  2258. END IF
  2259. RETURN rslt
  2260. end function
  2261. public function integer uof_add_emppay (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, datetime arg_paydate, decimal arg_amt, string arg_dscrp, integer arg_paytype, boolean arg_ifcommit, ref string arg_msg);//====================================================================
  2262. // 事件: uo_empinfo.uof_add_emppay()
  2263. //--------------------------------------------------------------------
  2264. // 描述:
  2265. //--------------------------------------------------------------------
  2266. // 参数:
  2267. // value long arg_empid //人员ID
  2268. // value long arg_relid //单据ID
  2269. // value long arg_moneyid //币种
  2270. // value string arg_relcode //单据编号
  2271. // value datetime arg_paydate //发生日期
  2272. // value decimal arg_amt //发生金额
  2273. // value string arg_dscrp //备注
  2274. // value integer arg_paytype //0:计算增加 1:发工资,减少
  2275. // value boolean arg_ifcommit
  2276. // reference string arg_msg
  2277. //--------------------------------------------------------------------
  2278. // 返回: integer
  2279. //--------------------------------------------------------------------
  2280. // 作者: LHD 日期: 2011年10月20日
  2281. //--------------------------------------------------------------------
  2282. // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved.
  2283. //--------------------------------------------------------------------
  2284. // 修改历史:
  2285. //
  2286. //====================================================================
  2287. Int rslt = 1
  2288. Int li_status
  2289. Decimal lde_Mstpayamt, lde_payamt
  2290. IF IsNull(arg_empid) THEN arg_empid = 0
  2291. IF IsNull(arg_relid) THEN arg_relid = 0
  2292. IF IsNull(arg_moneyid) THEN arg_moneyid = 0
  2293. IF IsNull(arg_relcode) THEN arg_relcode = ''
  2294. IF IsNull(arg_amt) THEN arg_amt = 0
  2295. IF IsNull(arg_dscrp) THEN arg_dscrp = ''
  2296. IF IsNull(arg_paytype) THEN arg_paytype = 0
  2297. IF arg_amt = 0 THEN
  2298. rslt = 1
  2299. GOTO ext
  2300. END IF
  2301. SELECT status
  2302. INTO :li_status
  2303. FROM u_rs_empinfo
  2304. Where empid = :arg_empid;
  2305. IF sqlca.SQLCode <> 0 THEN
  2306. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  2307. rslt = 0
  2308. GOTO ext
  2309. END IF
  2310. //默认 arg_amt > 0
  2311. IF arg_paytype = 0 THEN //借
  2312. lde_Mstpayamt = arg_amt
  2313. lde_payamt = 0
  2314. ELSE
  2315. lde_Mstpayamt = 0
  2316. lde_payamt = arg_amt
  2317. arg_amt = 0 - arg_amt
  2318. END IF
  2319. UPDATE u_rs_emppay
  2320. SET amt = amt + :arg_amt
  2321. WHERE empid = :arg_empid
  2322. And moneyid = :arg_moneyid;
  2323. IF sqlca.SQLCode = 0 THEN
  2324. IF sqlca.SQLNRows = 0 THEN
  2325. INSERT INTO u_rs_emppay
  2326. (empid,
  2327. moneyid,
  2328. amt)
  2329. VALUES
  2330. (:arg_empid,
  2331. :arg_moneyid,
  2332. :arg_amt);
  2333. IF sqlca.SQLCode <> 0 THEN
  2334. rslt = 0
  2335. arg_msg = "插入员工借/还款信息失败,"+sqlca.SQLErrText
  2336. GOTO ext
  2337. END IF
  2338. END IF
  2339. ELSE
  2340. rslt = 0
  2341. arg_msg = "更新员工借/还款信息失败,"+sqlca.SQLErrText
  2342. GOTO ext
  2343. END IF
  2344. INSERT INTO u_rs_emppaymx
  2345. (empid, relid, moneyid, paydate, Mstpayamt, payamt, dscrp, relcode, paytype)
  2346. VALUES
  2347. (:arg_empid,
  2348. :arg_relid,
  2349. :arg_moneyid,
  2350. :arg_paydate,
  2351. :lde_Mstpayamt,
  2352. :lde_payamt,
  2353. :arg_dscrp,
  2354. :arg_relcode,
  2355. :arg_paytype);
  2356. IF sqlca.SQLCode <> 0 THEN
  2357. rslt = 0
  2358. arg_msg = "插入员工借/还款明细信息失败,"+sqlca.SQLErrText
  2359. GOTO ext
  2360. END IF
  2361. ext:
  2362. IF rslt = 0 THEN
  2363. ROLLBACK Using sqlca;
  2364. ELSEIF rslt = 1 And arg_ifcommit THEN
  2365. COMMIT Using sqlca;
  2366. END IF
  2367. RETURN rslt
  2368. end function
  2369. public function integer uof_del_emppay (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, integer arg_paytype, boolean arg_ifcommit, ref string arg_msg);//====================================================================
  2370. // 事件: uo_empinfo.uof_del_emppay()
  2371. //--------------------------------------------------------------------
  2372. // 描述:
  2373. //--------------------------------------------------------------------
  2374. // 参数:
  2375. // value long arg_empid //人员ID
  2376. // value long arg_relid //单据ID
  2377. // value long arg_moneyid //币种
  2378. // value string arg_relcode //单据编号
  2379. // value integer arg_paytype //0:计算增加 1:发工资,减少
  2380. // value boolean arg_ifcommit
  2381. // reference string arg_msg
  2382. //--------------------------------------------------------------------
  2383. // 返回: integer
  2384. //--------------------------------------------------------------------
  2385. // 作者: LHD 日期: 2011年10月20日
  2386. //--------------------------------------------------------------------
  2387. // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved.
  2388. //--------------------------------------------------------------------
  2389. // 修改历史:
  2390. //
  2391. //====================================================================
  2392. Int rslt = 1
  2393. Int li_status, li_cnt
  2394. Dec lde_amt
  2395. IF IsNull(arg_empid) THEN arg_empid = 0
  2396. IF IsNull(arg_relid) THEN arg_relid = 0
  2397. IF IsNull(arg_moneyid) THEN arg_moneyid = 0
  2398. IF IsNull(arg_relcode) THEN arg_relcode = ''
  2399. IF IsNull(arg_paytype) THEN arg_paytype = 0
  2400. SELECT status
  2401. INTO :li_status
  2402. FROM u_rs_empinfo
  2403. Where empid = :arg_empid;
  2404. IF sqlca.SQLCode <> 0 THEN
  2405. arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText
  2406. rslt = 0
  2407. GOTO ext
  2408. END IF
  2409. SELECT count(*)
  2410. INTO :li_cnt
  2411. FROM u_rs_emppaymx
  2412. WHERE empid = :arg_empid
  2413. AND relid = :arg_relid
  2414. AND relcode = :arg_relcode
  2415. And moneyid = :arg_moneyid;
  2416. IF sqlca.SQLCode <> 0 THEN
  2417. arg_msg = "查询员工工资记录明细信息失败,"+sqlca.SQLErrText
  2418. rslt = 0
  2419. GOTO ext
  2420. END IF
  2421. IF li_cnt = 0 THEN //没有找到的,成功返回//有些旧程序没有的,这里提示出错
  2422. rslt = 1
  2423. goto ext
  2424. // arg_msg = "没有对应的员工工资记录明细信息"
  2425. // rslt = 0
  2426. // GOTO ext
  2427. END IF
  2428. SELECT CASE :arg_paytype when 0 THEN mstpayamt ELSE payamt END
  2429. Into :lde_amt
  2430. From u_rs_emppaymx
  2431. Where empid = :arg_empid
  2432. And relid = :arg_relid
  2433. And relcode = :arg_relcode
  2434. And moneyid = :arg_moneyid;
  2435. IF sqlca.SQLCode <> 0 THEN
  2436. arg_msg = "查询员工工资记录明细信息失败,"+sqlca.SQLErrText
  2437. rslt = 0
  2438. GOTO ext
  2439. END IF
  2440. // //默认 arg_amt < 0
  2441. //lde_amt = 0 - lde_amt
  2442. IF arg_paytype = 0 THEN
  2443. lde_amt = 0 - lde_amt
  2444. ELSE
  2445. lde_amt = lde_amt
  2446. END IF
  2447. UPDATE u_rs_emppay
  2448. SET amt = amt + :lde_amt
  2449. WHERE empid = :arg_empid
  2450. And moneyid = :arg_moneyid;
  2451. IF sqlca.SQLCode = 0 THEN
  2452. IF sqlca.SQLNRows = 0 THEN
  2453. INSERT INTO u_rs_emppay
  2454. (empid,
  2455. moneyid,
  2456. amt)
  2457. VALUES
  2458. (:arg_empid,
  2459. :arg_moneyid,
  2460. :lde_amt);
  2461. IF sqlca.SQLCode <> 0 THEN
  2462. rslt = 0
  2463. arg_msg = "插入员工工资记录信息失败,"+sqlca.SQLErrText
  2464. GOTO ext
  2465. END IF
  2466. END IF
  2467. ELSE
  2468. rslt = 0
  2469. arg_msg = "更新员工工资记录信息失败,"+sqlca.SQLErrText
  2470. GOTO ext
  2471. END IF
  2472. DELETE FROM u_rs_emppaymx
  2473. WHERE empid = :arg_empid
  2474. AND relid = :arg_relid
  2475. AND relcode = :arg_relcode
  2476. And moneyid = :arg_moneyid;
  2477. IF sqlca.SQLCode <> 0 THEN
  2478. arg_msg = "查询员工工资记录明细信息失败,"+sqlca.SQLErrText
  2479. rslt = 0
  2480. GOTO ext
  2481. END IF
  2482. ext:
  2483. IF rslt = 0 THEN
  2484. ROLLBACK Using sqlca;
  2485. ELSEIF rslt = 1 And arg_ifcommit THEN
  2486. COMMIT Using sqlca;
  2487. END IF
  2488. RETURN rslt
  2489. end function
  2490. on uo_empinfo.create
  2491. call super::create
  2492. TriggerEvent( this, "constructor" )
  2493. end on
  2494. on uo_empinfo.destroy
  2495. TriggerEvent( this, "destructor" )
  2496. call super::destroy
  2497. end on
  2498. event constructor;String str_optionvalue,arg_msg
  2499. f_get_sys_option_value('221',str_optionvalue,arg_msg)
  2500. uo_option_emp_audit = Long(str_optionvalue)
  2501. end event