$PBExportHeader$uo_getbar.sru forward global type uo_getbar from nonvisualobject end type end forward global type uo_getbar from nonvisualobject end type global uo_getbar uo_getbar type variables Long uo_getbarid String uo_getbarcode end variables forward prototypes public function integer updatebegin (long arg_getbarid, ref string arg_msg) public function integer p_getinfo (long arg_getbarid, ref s_getbar arg_s_gb, ref string arg_msg) public function integer auditing (long arg_getbarid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer save (s_getbar arg_s_gb, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer getinfo (long arg_getbarid, ref s_mtrlware_mx arg_gbmx[], ref string arg_msg) public function integer add_dscrp (long arg_getbarid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit) public function integer del (long arg_getbarid, ref string arg_msg, boolean arg_ifcommit) public function integer c_auditing (long arg_getbarid, boolean arg_ifauto, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer updatebegin (long arg_getbarid, ref string arg_msg);Int rslt = 1 Long cnt = 0 s_getbar arg_s_gb IF arg_getbarid <= 0 THEN rslt = 0 arg_msg = '错误条码生成单唯一码' GOTO ext END IF IF p_getinfo(arg_getbarid,arg_s_gb,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_gb.flag = 1 THEN rslt = 0 arg_msg = "条码生成单已经审核,操作取消" GOTO ext END IF ext: RETURN rslt end function public function integer p_getinfo (long arg_getbarid, ref s_getbar arg_s_gb, ref string arg_msg);Int rslt = 1 SELECT getbardate, dscrp, getbarcode, opemp, opdate, modemp, moddate, flag, relbillid Into :arg_s_gb.getbardate, :arg_s_gb.dscrp, :arg_s_gb.getbarcode, :arg_s_gb.opemp, :arg_s_gb.opdate, :arg_s_gb.modemp, :arg_s_gb.moddate, :arg_s_gb.flag, :arg_s_gb.relbillid From u_getbar Where u_getbar.getbarid = :arg_getbarid Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询条码成生单内容失败(错误条码生成单唯一码)'+sqlca.SQLErrText GOTO ext END IF ext: RETURN rslt end function public function integer auditing (long arg_getbarid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long j s_getbar arg_s_gb s_mtrlware_mx arg_s_gbmx[] IF arg_getbarid <= 0 THEN rslt = 0 arg_msg = '错误条码生成单唯一码' GOTO ext END IF IF p_getinfo(arg_getbarid,arg_s_gb,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF getinfo(arg_getbarid,arg_s_gbmx,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_gb.flag = 1 THEN rslt = 0 arg_msg = "条码生成单已经审核,操作取消" GOTO ext END IF UPDATE u_getbar SET flag = 1, auditingrep = :arg_opemp, auditingdate = getdate() Where u_getbar.getbarid = :arg_getbarid; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新条码生成单审核状态失败,原因>>'+sqlca.SQLErrText rslt = 0 GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = '单据正在审核,请稍后重试' GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer save (s_getbar arg_s_gb, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1 Int li_ifpackpro,li_ifpackpro_uc,li_ifpack_uc Decimal ld_Sonscale Long cnt = 0,i DateTime server_dt Long ll_newid,ll_it_mxbt,ll_mtrlid_buytask String ls_sccode,ls_getbarcode Decimal ld_sum_mxqty,ld_otherqty,ld_orderqty IF IsNull(arg_s_gb.scid) THEN arg_s_gb.scid = 0 IF IsNull(arg_s_gb.getbarid) THEN arg_s_gb.getbarid = 0 IF IsNull(arg_s_gb.getbarcode) THEN arg_s_gb.getbarcode = '' IF IsNull(arg_s_gb.getbardate) THEN arg_s_gb.getbardate = DateTime(Date(Today()),Time(0)) IF IsNull(arg_s_gb.dscrp) THEN arg_s_gb.dscrp = '' IF IsNull(arg_s_gb.flag) THEN arg_s_gb.flag = 0 IF IsNull(arg_s_gb.relbillid) THEN arg_s_gb.relbillid = 0 //检查明细 ll_it_mxbt = UpperBound(arg_s_gb.arg_s_mx) IF ll_it_mxbt = 0 THEN rslt = 0 arg_msg = "没有正确条码生成单明细内容" GOTO ext END IF SELECT Top 1 getdate() Into :server_dt From u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF arg_s_gb.getbarid = 0 THEN ll_newid = f_sys_scidentity(0,"u_getbar","getbarid",arg_msg,True,id_sqlca) IF ll_newid <= 0 THEN rslt = 0 GOTO ext END IF IF f_get_sccode(arg_s_gb.scid,sqlca,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF ls_getbarcode = getid(0,ls_sccode + "TM",Date(server_dt),False,sqlca) //取得新单据编号 IF ls_getbarcode = "err" THEN rslt = 0 arg_msg = "无法获取条码生成单编号" GOTO ext END IF INSERT INTO u_getbar( scid, getbarid, getbardate, dscrp, getbarcode, opemp, opdate, relbillid) VALUES ( :arg_s_gb.scid, :ll_newid, :arg_s_gb.getbardate, :arg_s_gb.dscrp, :ls_getbarcode, :arg_opemp, :server_dt, :arg_s_gb.relbillid ); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText GOTO ext END IF FOR i = 1 To ll_it_mxbt IF IsNull(arg_s_gb.arg_s_mx[i].printid) THEN arg_s_gb.arg_s_mx[i].printid =0 IF IsNull(arg_s_gb.arg_s_mx[i].barcode) THEN arg_s_gb.arg_s_mx[i].barcode = '' IF IsNull(arg_s_gb.arg_s_mx[i].qty) THEN arg_s_gb.arg_s_mx[i].qty =0 IF IsNull(arg_s_gb.arg_s_mx[i].mtrlid) THEN arg_s_gb.arg_s_mx[i].mtrlid = 0 IF IsNull(arg_s_gb.arg_s_mx[i].Status) THEN arg_s_gb.arg_s_mx[i].Status = '' IF IsNull(arg_s_gb.arg_s_mx[i].woodcode) THEN arg_s_gb.arg_s_mx[i].woodcode = '' IF IsNull(arg_s_gb.arg_s_mx[i].pcode) THEN arg_s_gb.arg_s_mx[i].pcode = '' IF IsNull(arg_s_gb.arg_s_mx[i].plancode) THEN arg_s_gb.arg_s_mx[i].plancode = '' IF IsNull(arg_s_gb.arg_s_mx[i].Sptid) THEN arg_s_gb.arg_s_mx[i].Sptid = 0 IF IsNull(arg_s_gb.arg_s_mx[i].dscrp) THEN arg_s_gb.arg_s_mx[i].dscrp = '' IF IsNull(arg_s_gb.arg_s_mx[i].relbillid) THEN arg_s_gb.arg_s_mx[i].relbillid = 0 INSERT INTO u_mtrlware_mx ( scid, getbarid, printid, barcode, qty, mtrlid, Status, woodcode, pcode, plancode, Sptid, dscrp, relbillid) VALUES ( :arg_s_gb.scid, :ll_newid, :arg_s_gb.arg_s_mx[i].printid, :arg_s_gb.arg_s_mx[i].barcode, :arg_s_gb.arg_s_mx[i].qty, :arg_s_gb.arg_s_mx[i].mtrlid, :arg_s_gb.arg_s_mx[i].Status, :arg_s_gb.arg_s_mx[i].woodcode, :arg_s_gb.arg_s_mx[i].pcode, :arg_s_gb.arg_s_mx[i].plancode, :arg_s_gb.arg_s_mx[i].Sptid, :arg_s_gb.arg_s_mx[i].dscrp, :arg_s_gb.arg_s_mx[i].relbillid) Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT uo_getbarid = ll_newid uo_getbarcode = ls_getbarcode ELSE UPDATE u_getbar SET getbardate = :arg_s_gb.getbardate, dscrp = :arg_s_gb.dscrp, modemp = :arg_opemp, moddate = :server_dt, relbillid = :arg_s_gb.relbillid WHERE u_getbar.getbarid = :arg_s_gb.getbarid And flag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN arg_msg = '单据正在更新,请稍后重试' rslt = 0 GOTO ext END IF //删除原有明细 DELETE FROM u_mtrlware_mx Where u_mtrlware_mx.getbarid = :arg_s_gb.getbarid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF FOR i = 1 To ll_it_mxbt IF IsNull(arg_s_gb.arg_s_mx[i].printid) THEN arg_s_gb.arg_s_mx[i].printid =0 IF IsNull(arg_s_gb.arg_s_mx[i].barcode) THEN arg_s_gb.arg_s_mx[i].barcode = '' IF IsNull(arg_s_gb.arg_s_mx[i].qty) THEN arg_s_gb.arg_s_mx[i].qty =0 IF IsNull(arg_s_gb.arg_s_mx[i].mtrlid) THEN arg_s_gb.arg_s_mx[i].mtrlid = 0 IF IsNull(arg_s_gb.arg_s_mx[i].Status) THEN arg_s_gb.arg_s_mx[i].Status = '' IF IsNull(arg_s_gb.arg_s_mx[i].woodcode) THEN arg_s_gb.arg_s_mx[i].woodcode = '' IF IsNull(arg_s_gb.arg_s_mx[i].pcode) THEN arg_s_gb.arg_s_mx[i].pcode = '' IF IsNull(arg_s_gb.arg_s_mx[i].plancode) THEN arg_s_gb.arg_s_mx[i].plancode = '' IF IsNull(arg_s_gb.arg_s_mx[i].Sptid) THEN arg_s_gb.arg_s_mx[i].Sptid = 0 IF IsNull(arg_s_gb.arg_s_mx[i].dscrp) THEN arg_s_gb.arg_s_mx[i].dscrp = '' IF IsNull(arg_s_gb.arg_s_mx[i].relbillid) THEN arg_s_gb.arg_s_mx[i].relbillid = 0 INSERT INTO u_mtrlware_mx ( scid, getbarid, printid, barcode, qty, mtrlid, Status, woodcode, pcode, plancode, Sptid, dscrp, relbillid) VALUES ( :arg_s_gb.scid, :arg_s_gb.getbarid, :arg_s_gb.arg_s_mx[i].printid, :arg_s_gb.arg_s_mx[i].barcode, :arg_s_gb.arg_s_mx[i].qty, :arg_s_gb.arg_s_mx[i].mtrlid, :arg_s_gb.arg_s_mx[i].Status, :arg_s_gb.arg_s_mx[i].woodcode, :arg_s_gb.arg_s_mx[i].pcode, :arg_s_gb.arg_s_mx[i].plancode, :arg_s_gb.arg_s_mx[i].Sptid, :arg_s_gb.arg_s_mx[i].dscrp, :arg_s_gb.arg_s_mx[i].relbillid) Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT uo_getbarid = arg_s_gb.getbarid END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer getinfo (long arg_getbarid, ref s_mtrlware_mx arg_gbmx[], ref string arg_msg);Int rslt = 1 Long i = 1,NO_MXCHECK = 0 IF arg_getbarid <= 0 THEN rslt = 0 ARG_MSG = '错误的条码生成单唯一码' GOTO ext END IF //用游标读取明细 DECLARE cur_getbarmx CURSOR FOR SELECT barcode,qty FROM u_mtrlware_mx WHERE u_mtrlware_mx.getbarid = :arg_getbarid Order By barcode; OPEN cur_getbarmx; FETCH cur_getbarmx Into :arg_gbmx[i].barcode,:arg_gbmx[i].qty; DO WHILE SQLCA.SQLCode = 0 i++ FETCH cur_getbarmx Into :arg_gbmx[i].barcode,:arg_gbmx[i].qty; LOOP CLOSE cur_getbarmx; //检验明细是否读入完整 SELECT COUNT(*) INTO :NO_MXCHECK FROM u_mtrlware_mx Where u_mtrlware_mx.getbarid = :arg_getbarid; IF SQLCA.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "查询操作失败,条码生成单明细数量" GOTO ext END IF IF i <> (NO_MXCHECK+1) THEN rslt = 0 ARG_MSG = "查询操作失败,条码生成单明细数量不相符" GOTO ext END IF ext: RETURN rslt end function public function integer add_dscrp (long arg_getbarid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 s_getbar arg_s_gb IF arg_getbarid <= 0 THEN rslt = 0 arg_msg = '错误条码生成单唯一码' GOTO ext END IF IF arg_newdescppart = '' THEN rslt = 0 arG_MSG = "要添加内容为空,操作取消" GOTO ext END IF IF p_getinfo(arg_getbarid,arg_s_gb,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_gb.flag = 0 THEN rslt = 0 arg_msg = "条码生成单未审核,操作取消" GOTO ext END IF UPDATE u_getbar SET DSCRP = DSCRP+' '+:arg_newdescppart WHERE getbarid = :arg_getbarid; IF SQLCA.SQLCode <> 0 THEN rslt = 0 arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF Return (rslt) end function public function integer del (long arg_getbarid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt = 0 s_getbar arg_s_gb IF arg_getbarid <= 0 THEN rslt = 0 arg_msg = "没有删除对象,操作取消" GOTO ext END IF IF p_getinfo(arg_getbarid,arg_s_gb,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_gb.flag = 1 THEN rslt = 0 arg_msg = "条码生成单已经审核,操作取消" GOTO ext END IF DELETE From u_mtrlware_mx Where u_mtrlware_mx.getbarid = :arg_getbarid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除条码生成单明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE From u_getbar Where u_getbar.getbarid = :arg_getbarid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除条码生成单操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 and arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer c_auditing (long arg_getbarid, boolean arg_ifauto, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt = 0,j DateTime null_dt SetNull(null_dt) s_getbar arg_s_gb s_mtrlware_mx arg_s_gbmx[] If arg_getbarid <= 0 Then rslt = 0 arg_msg = '错误条码生成单唯一码' Goto ext End If If p_getinfo(arg_getbarid,arg_s_gb,arg_msg) = 0 Then rslt = 0 Goto ext End If If arg_s_gb.flag = 0 Then rslt = 0 arg_msg = "条码生成单还未审核,操作取消" Goto ext End If If getinfo(arg_getbarid,arg_s_gbmx,arg_msg) = 0 Then rslt = 0 Goto ext End If Update u_getbar Set flag = 0 , auditingrep = '', auditingdate = :null_dt Where u_getbar.getbarid = :arg_getbarid And u_getbar.flag = 1 ; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '更新条码生成单状态失败,原因:'+sqlca.SQLErrText Goto ext ElseIf sqlca.SQLNRows = 0 Then rslt = 0 arg_msg = '单据正在撤审,请稍后重试' Goto ext End If ext: If rslt = 0 Then Rollback; ElseIf rslt = 1 And arg_ifcommit Then Commit; End If Return rslt end function on uo_getbar.create call super::create TriggerEvent( this, "constructor" ) end on on uo_getbar.destroy TriggerEvent( this, "destructor" ) call super::destroy end on