$PBExportHeader$uo_mtrlware_trans_fp.sru forward global type uo_mtrlware_trans_fp from nonvisualobject end type end forward global type uo_mtrlware_trans_fp from nonvisualobject end type global uo_mtrlware_trans_fp uo_mtrlware_trans_fp type variables Long uo_billid String uo_billcode end variables forward prototypes public function integer save (s_mtrlware_trans_fp arg_fp, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg) public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer updatebegin (long arg_billid, ref string arg_msg) public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer p_getinfo (long arg_billid, ref s_mtrlware_trans_fp arg_s_ref, ref string arg_msg) public function integer caudit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer getinfo (long arg_billid, ref s_mtrlware_trans_fpmx arg_ref_mx[], ref s_mtrlware_trans_fpmx2 arg_ref_mx2[], ref long arg_arr_cnt, ref long arg_arr_cnt2, ref string arg_msg) public function integer affirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer caffirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer save (s_mtrlware_trans_fp arg_fp, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1 Long cnt = 0 DateTime server_dt Long ll_billid,it_mxbt,it_mxbt2,i,j Int li_storagetype,li_ifbarcodefp,li_outtype Decimal ld_mxqty_sum,ld_barcodeqty String ls_sccode,ls_billcode Long ll_mx_taskid,ll_mx_taskprintid,ll_mtrlid IF IsNull(arg_fp.scid) THEN arg_fp.scid = 0 IF IsNull(arg_fp.billid) THEN arg_fp.billid = 0 IF IsNull(arg_fp.inrep) THEN arg_fp.inrep = '' IF IsNull(arg_fp.part) THEN arg_fp.part = '' IF IsNull(arg_fp.dscrp) THEN arg_fp.dscrp = '' IF IsNull(arg_fp.transqty) THEN arg_fp.transqty = 0 IF IsNull(arg_fp.storageid) THEN arg_fp.storageid = 0 IF IsNull(arg_fp.taskid) THEN arg_fp.taskid = 0 IF IsNull(arg_fp.printid) THEN arg_fp.printid = 0 IF IsNull(arg_fp.assignid) THEN arg_fp.assignid = 0 IF IsNull(arg_fp.mtrlwareid) THEN arg_fp.mtrlwareid = 0 IF IsNull(arg_fp.billtype) THEN arg_fp.billtype = 0 IF IsNull(arg_fp.fpgrade) THEN arg_fp.fpgrade = 2 IF arg_fp.scid < 0 THEN arg_msg = '错误的分部id' rslt = 0 GOTO ext END IF IF arg_fp.storageid = 0 THEN arg_msg = '没有选择仓库,请检查' rslt = 0 GOTO ext END IF IF f_rst_storage_storagetype(arg_fp.storageid,li_storagetype) = 0 THEN arg_msg = '查询仓库库存策略失败,操作取消' rslt = 0 GOTO ext END IF IF li_storagetype <> 1 THEN arg_msg = '仓库不是使用库存分配策略失败,不能使用本单据,操作取消' rslt = 0 GOTO ext END IF IF f_rst_storage_outtype(arg_fp.storageid,li_outtype) = 0 THEN arg_msg = '查询仓库出仓策略失败,操作取消' rslt = 0 GOTO ext END IF //IF arg_fp.mtrlwareid = 0 THEN // arg_msg = '错误的调货库存id,可能调入的订单不存在库存资料,请检查' // rslt = 0 // GOTO ext //END IF //select mtrlid into :ll_mtrlid //from u_mtrlware //where scid = :arg_fp.scid //and mtrlwareid = :arg_fp.mtrlwareid; //if sqlca.sqlcode <> 0 then // arg_msg = '查询调入库存物料id失败,'+sqlca.sqlerrtext // rslt = 0 // goto ext //end if // //IF arg_fp.transqty <= 0 THEN // arg_msg = '错误的调货数量,请检查' // rslt = 0 // GOTO ext //END IF IF arg_fp.inrep = '' THEN arg_msg = '请输入经手人' rslt = 0 GOTO ext END IF IF arg_fp.taskid = 0 THEN arg_msg = '没有选择调入订单,请检查' rslt = 0 GOTO ext END IF SELECT mtrlid INTO :ll_mtrlid FROM u_saletaskmx WHERE scid = :arg_fp.scid AND taskid = :arg_fp.taskid And printid = :arg_fp.printid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询订单明细资料失败,操作取消,'+sqlca.SQLErrText rslt = 0 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 it_mxbt = UpperBound(arg_fp.arg_s_mx) IF it_mxbt <= 0 THEN rslt = 0 arg_msg = "没有正确调货分配明细内容,请检查" GOTO ext END IF it_mxbt2 = UpperBound(arg_fp.arg_s_mx2) IF it_mxbt2 <= 0 THEN rslt = 0 arg_msg = "没有正确调货明细内容,请检查" GOTO ext END IF FOR j = 1 To it_mxbt2 ld_mxqty_sum = 0 FOR i = 1 To it_mxbt IF arg_fp.arg_s_mx2[j].printid = arg_fp.arg_s_mx[i].mxprintid THEN ld_mxqty_sum += arg_fp.arg_s_mx[i].qty END IF NEXT IF arg_fp.arg_s_mx2[j].transqty <> ld_mxqty_sum THEN rslt = 0 arg_msg = "单据调入明细行:"+String(j)+",调入数量:"+String(arg_fp.arg_s_mx2[j].transqty,'#0.##########')+",与调出明细调出数量总数:"+String(ld_mxqty_sum,'#0.##########')+",不相符,请检查" GOTO ext END IF NEXT IF arg_fp.billtype = 0 Or arg_fp.billtype = 1 THEN FOR i = 1 To it_mxbt IF arg_fp.arg_s_mx[i].transtype = 0 THEN arg_fp.arg_s_mx[i].assignid = 0 arg_fp.arg_s_mx[i].taskid = 0 arg_fp.arg_s_mx[i].taskprintid = 0 ELSE SELECT Relbillid,relprintid INTO :ll_mx_taskid,:ll_mx_taskprintid FROM u_mtrlware_assign Where assignid = :arg_fp.arg_s_mx[i].assignid; IF sqlca.SQLCode <> 0 THEN arg_msg = '调出明细行:'+String(i)+',查询库存分配相关订单信息失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF arg_fp.arg_s_mx[i].taskid = ll_mx_taskid arg_fp.arg_s_mx[i].taskprintid = ll_mx_taskprintid END IF IF li_outtype = 2 Or li_outtype = 3 THEN SELECT u_mtrldef.ifbarcodefp INTO :li_ifbarcodefp FROM u_mtrldef,u_mtrlware WHERE u_mtrldef.mtrlid = u_mtrlware.mtrlid AND u_mtrlware.scid = :arg_fp.scid And u_mtrlware.mtrlwareid = :arg_fp.arg_s_mx[i].mtrlwareid; IF sqlca.SQLCode <> 0 THEN arg_msg = '调出明细行:'+String(i)+',查询库存对应物料属性<库存条码指定分配订单>失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF li_ifbarcodefp = 1 THEN IF arg_fp.arg_s_mx[i].barcode = '' THEN arg_msg = '调出明细行:'+String(i)+',库存对应物料设置了<库存条码指定分配订单>属性,但没有选择条码,请检查' rslt = 0 GOTO ext END IF SELECT u_mtrlware_mx.qty*u_mtrlware_mx.packqty INTO :ld_barcodeqty FROM u_mtrlware_mx Where u_mtrlware_mx.barcode = :arg_fp.arg_s_mx[i].barcode; IF sqlca.SQLCode <> 0 THEN arg_msg = '调出明细行:'+String(i)+',查询条码:'+arg_fp.arg_s_mx[i].barcode+',库存信息失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF arg_fp.arg_s_mx[i].qty <> ld_barcodeqty THEN arg_msg = '调出明细行:'+String(i)+',条码:'+arg_fp.arg_s_mx[i].barcode+',代表库存数与调出数量不相符,请检查' rslt = 0 GOTO ext END IF END IF END IF NEXT END IF IF arg_fp.billid = 0 THEN ll_billid = f_sys_scidentity(0,"u_mtrlware_trans_fp","billid",arg_msg,True,id_sqlca) IF ll_billid <= 0 THEN rslt = 0 GOTO ext END IF IF f_get_sccode(arg_fp.scid,sqlca,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF arg_fp.billtype = 0 THEN //调货单 ls_billcode = getid(arg_fp.scid,ls_sccode + 'TP',Date(server_dt),False,sqlca) ELSEIF arg_fp.billtype = 1 THEN //借货单 ls_billcode = getid(arg_fp.scid,ls_sccode + 'TB',Date(server_dt),False,sqlca) ELSEIF arg_fp.billtype = 2 THEN //还货单 ls_billcode = getid(arg_fp.scid,ls_sccode + 'TR',Date(server_dt),False,sqlca) END IF IF ls_billcode = "err" THEN rslt = 0 arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText GOTO ext END IF INSERT INTO u_mtrlware_trans_fp (scid, billid, billcode, billdate, inrep, opdate, opemp, flag, part, dscrp, storageid, mtrlwareid, taskid, printid, transqty, billtype, mtrlid, fpgrade) VALUES ( :arg_fp.scid, :ll_billid, :ls_billcode, :arg_fp.billdate, :arg_fp.inrep, getdate(), :arg_opemp, 0, :arg_fp.part, :arg_fp.dscrp, :arg_fp.storageid, :arg_fp.mtrlwareid, :arg_fp.taskid, :arg_fp.printid, :arg_fp.transqty, :arg_fp.billtype, :ll_mtrlid, :arg_fp.fpgrade) ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF FOR i = 1 To it_mxbt INSERT INTO u_mtrlware_transmx_fp (billid, printid, transtype, assignid, Qty, mxdscrp, taskid, taskprintid, mxprintid, relid, relprintid, mtrlwareid, rel_assignid, barcode, scid) VALUES (:ll_billid, :arg_fp.arg_s_mx[i].printid, :arg_fp.arg_s_mx[i].transtype, :arg_fp.arg_s_mx[i].assignid, :arg_fp.arg_s_mx[i].qty, :arg_fp.arg_s_mx[i].mxdscrp, :arg_fp.arg_s_mx[i].taskid, :arg_fp.arg_s_mx[i].taskprintid, :arg_fp.arg_s_mx[i].mxprintid, :arg_fp.arg_s_mx[i].relid, :arg_fp.arg_s_mx[i].relprintid, :arg_fp.arg_s_mx[i].mtrlwareid, :arg_fp.arg_s_mx[i].rel_assignid, :arg_fp.arg_s_mx[i].barcode, :arg_fp.scid); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT FOR i = 1 To it_mxbt2 INSERT INTO u_mtrlware_transmx_fp2 (billid, printid, mtrlid, assignid, transqty, mtrlwareid, taskid, taskprintid, status, woodcode, pcode, sonscale, mxtype, scid) VALUES (:ll_billid, :arg_fp.arg_s_mx2[i].printid, :arg_fp.arg_s_mx2[i].mtrlid, :arg_fp.arg_s_mx2[i].assignid, :arg_fp.arg_s_mx2[i].transqty, :arg_fp.arg_s_mx2[i].mtrlwareid, :arg_fp.arg_s_mx2[i].taskid, :arg_fp.arg_s_mx2[i].taskprintid, :arg_fp.arg_s_mx2[i].status, :arg_fp.arg_s_mx2[i].woodcode, :arg_fp.arg_s_mx2[i].pcode, :arg_fp.arg_s_mx2[i].sonscale, :arg_fp.arg_s_mx2[i].mxtype, :arg_fp.scid); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细2操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT uo_billid = ll_billid uo_billcode = ls_billcode ELSE UPDATE u_mtrlware_trans_fp SET billdate = :arg_fp.billdate, inrep = :arg_fp.inrep, moddate = getdate(), modemp = :arg_opemp, part = :arg_fp.part, storageid = :arg_fp.storageid, mtrlwareid = :arg_fp.mtrlwareid, taskid = :arg_fp.taskid, printid = :arg_fp.printid, transqty = :arg_fp.transqty, fpgrade = :arg_fp.fpgrade, dscrp = :arg_fp.dscrp, mtrlid = :ll_mtrlid WHERE billid = :arg_fp.billid And flag = 0; IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_mtrlware_transmx_fp Where billid = :arg_fp.billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除原明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_mtrlware_transmx_fp2 Where billid = :arg_fp.billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除原明细2操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF FOR i = 1 To it_mxbt INSERT INTO u_mtrlware_transmx_fp (billid, printid, transtype, assignid, Qty, mxdscrp, taskid, taskprintid, mxprintid, relid, relprintid, mtrlwareid, rel_assignid, barcode, scid) VALUES (:arg_fp.billid, :arg_fp.arg_s_mx[i].printid, :arg_fp.arg_s_mx[i].transtype, :arg_fp.arg_s_mx[i].assignid, :arg_fp.arg_s_mx[i].qty, :arg_fp.arg_s_mx[i].mxdscrp, :arg_fp.arg_s_mx[i].taskid, :arg_fp.arg_s_mx[i].taskprintid, :arg_fp.arg_s_mx[i].mxprintid, :arg_fp.arg_s_mx[i].relid, :arg_fp.arg_s_mx[i].relprintid, :arg_fp.arg_s_mx[i].mtrlwareid, :arg_fp.arg_s_mx[i].rel_assignid, :arg_fp.arg_s_mx[i].barcode, :arg_fp.scid); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT FOR i = 1 To it_mxbt2 INSERT INTO u_mtrlware_transmx_fp2 (billid, printid, mtrlid, assignid, transqty, mtrlwareid, taskid, taskprintid, status, woodcode, pcode, sonscale, mxtype, scid) VALUES (:arg_fp.billid, :arg_fp.arg_s_mx2[i].printid, :arg_fp.arg_s_mx2[i].mtrlid, :arg_fp.arg_s_mx2[i].assignid, :arg_fp.arg_s_mx2[i].transqty, :arg_fp.arg_s_mx2[i].mtrlwareid, :arg_fp.arg_s_mx2[i].taskid, :arg_fp.arg_s_mx2[i].taskprintid, :arg_fp.arg_s_mx2[i].status, :arg_fp.arg_s_mx2[i].woodcode, :arg_fp.arg_s_mx2[i].pcode, :arg_fp.arg_s_mx2[i].sonscale, :arg_fp.arg_s_mx2[i].mxtype, :arg_fp.scid); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细2操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT uo_billid = arg_fp.billid END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit And rslt = 1 THEN COMMIT; END IF RETURN rslt end function public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg); Int rslt = 1 s_mtrlware_trans_fp arg_s_ref IF arg_newdescppart = '' THEN rslt = 0 arG_MSG = "要添加内容为空,操作取消" GOTO ext END IF IF p_getinfo(arg_billid,arg_s_ref,arG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_ref.flag = 0 THEN rslt = 0 arG_MSG = "待审核状态下不可用" GOTO ext END IF UPDATE u_mtrlware_trans_fp SET DSCRP = DSCRP+' '+:arg_newdescppart Where u_mtrlware_trans_fp.billid = :arg_billid; IF SQLCA.SQLCode <> 0 THEN rslt = 0 arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText GOTO ext END IF ext: IF rslt = 1 THEN COMMIT; ELSE ROLLBACK; END IF Return (rslt) end function public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 s_mtrlware_trans_fp arg_s_ref IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_ref,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_ref.affirmflag <> 0 THEN rslt = 0 arg_msg = '单据不是在待初审状态,不可以删除' GOTO ext END IF DELETE FROM u_mtrlware_transmx_fp Where billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据调出明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_mtrlware_transmx_fp2 Where billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据调入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_mtrlware_trans_fp WHERE billid = :arg_billid And flag = 0; 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 updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1 s_mtrlware_trans_fp arg_s_ref Long cnt IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_ref,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_ref.flag = 1 THEN rslt = 0 arg_msg = '单据已经审核,不可以修改,要修改请先撤销审核' GOTO ext END IF IF arg_s_ref.affirmflag = 1 THEN rslt = 0 ARG_MSG = '单据已经初审,不可以修改,要修改请先撤销审核' GOTO ext END IF ext: RETURN rslt end function public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_array,ll_array2,i,j,k,ll_ref_assiginid Decimal ld_qty_lend,ld_qty_return Decimal ld_notoutqty Decimal ld_sumoutqty_bill,ld_sumnotoutqty,ld_assign_outqty Long ll_row,ll_mtrlwareid Long ll_mxprintid Long ll_taskid,ll_taskprintid String ls_taskcode Int li_ifbarcodefp,li_outtype_storage Decimal ld_notallocqty s_mtrlware_trans_fp arg_s_ref s_mtrlware_trans_fpmx arg_ref_mx[] s_mtrlware_trans_fpmx2 arg_ref_mx2[] uo_mtrlware_assign uo_assign_bill uo_assign_bill = Create uo_mtrlware_assign uo_assign_bill.commit_transaction = sqlca uo_getbar uo_bar uo_bar = Create uo_getbar datastore ds_out_assign ds_out_assign = Create datastore ds_out_assign.DataObject = 'ds_outwaremx_assign' ds_out_assign.SetTransObject(sqlca) IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_ref,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_ref.affirmflag <> 1 THEN rslt = 0 ARG_MSG = '单据没有初审,不可以终审' GOTO ext END IF IF arg_s_ref.flag <> 0 THEN rslt = 0 ARG_MSG = '单据不是在待终审状态,不可以终审' GOTO ext END IF SELECT outtype INTO :li_outtype_storage FROM u_storage Where u_storage.storageid = :arg_s_ref.storageid; IF sqlca.SQLCode <> 0 THEN ARG_MSG = '查询仓库出仓策略失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF getinfo(arg_billid,arg_ref_mx,arg_ref_mx2,ll_array,ll_array2,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF //更新审核标记 UPDATE u_mtrlware_trans_fp SET auditingrep = :arg_opemp, auditingdate = getdate(), flag = 1 WHERE billid = :arg_billid And flag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 ARG_MSG = "单据正在审核,请稍后重试" GOTO ext END IF IF arg_s_ref.billtype = 0 Or arg_s_ref.billtype = 1 THEN //处理调出明细 FOR i = 1 To ll_array IF arg_ref_mx[i].transtype = 0 THEN CONTINUE IF arg_s_ref.billtype = 0 And arg_ref_mx[i].barcode <> '' THEN uo_assign_bill.li_if_uo_mtrlware_trans_fp_deluse = 1 ELSE uo_assign_bill.li_if_uo_mtrlware_trans_fp_deluse = 0 END IF IF uo_assign_bill.uof_assign_del(arg_ref_mx[i].assignid,& arg_ref_mx[i].qty,ARG_MSG,False) = 0 THEN ARG_MSG = '明细行:'+String(i)+','+ARG_MSG rslt = 0 GOTO ext END IF NEXT //处理调入明细 FOR i = 1 To ll_array ll_taskid = 0 ll_taskprintid = 0 FOR j = 1 To ll_array2 IF arg_ref_mx2[j].printid = arg_ref_mx[i].mxprintid THEN ll_taskid = arg_ref_mx2[j].taskid ll_taskprintid = arg_ref_mx2[j].taskprintid li_ifbarcodefp = arg_ref_mx2[j].ifbarcodefp ls_taskcode = arg_s_ref.taskcode EXIT END IF NEXT IF uo_assign_bill.uof_assign_add(arg_s_ref.scid,& arg_ref_mx[i].mtrlwareid,1,ll_taskid,& ll_taskprintid,arg_ref_mx[i].qty,0,'','','',& 0,arg_s_ref.fpgrade,arg_opemp,ARG_MSG,False) = 0 THEN rslt = 0 GOTO ext END IF ll_ref_assiginid = uo_assign_bill.uo_assignid UPDATE u_mtrlware_transmx_fp SET rel_assignid = :ll_ref_assiginid WHERE billid = :arg_billid And printid = :arg_ref_mx[i].printid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "更新调入明细相关库存分配id操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF IF li_ifbarcodefp = 1 And & arg_s_ref.billtype = 0 And & arg_ref_mx[i].barcode <> '' And & ( li_outtype_storage = 2 Or li_outtype_storage = 3 ) THEN IF uo_bar.uof_barcode_fp(arg_ref_mx[i].barcode,ls_taskcode,ll_taskid,ll_taskprintid,ARG_MSG,False) = 0 THEN rslt = 0 ARG_MSG = "更新调出明细行:"+String(i)+",条码相关调入订单信息失败"+"~n"+ARG_MSG GOTO ext END IF END IF NEXT // FOR i = 1 To ll_array2 // IF uo_assign_bill.uof_assign_add(arg_s_ref.scid,& // arg_ref_mx2[i].mtrlwareid,1,arg_ref_mx2[i].taskid,& // arg_ref_mx2[i].taskprintid,arg_ref_mx2[i].transqty,0,'','','',& // 0,arg_s_ref.fpgrade,arg_opemp,ARG_MSG,False) = 0 THEN // rslt = 0 // GOTO ext // END IF // // ll_ref_assiginid = uo_assign_bill.uo_assignid // // UPDATE u_mtrlware_transmx_fp2 // SET assignid = :ll_ref_assiginid // WHERE billid = :arg_billid // And printid = :arg_ref_mx2[i].printid; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // ARG_MSG = "更新调入明细相关库存分配id操作失败"+"~n"+sqlca.SQLErrText // GOTO ext // END IF // NEXT ELSEIF arg_s_ref.billtype = 2 THEN //扣减还货明细 FOR i = 1 To ll_array FOR k = 1 To ll_array2 IF arg_ref_mx2[k].printid = arg_ref_mx[i].mxprintid THEN IF arg_ref_mx2[k].mxtype = 0 THEN GOTO _next END IF ll_taskid = arg_ref_mx2[k].taskid ll_taskprintid = arg_ref_mx2[k].taskprintid EXIT END IF NEXT ll_row = ds_out_assign.Retrieve(arg_s_ref.scid,arg_ref_mx[i].mtrlwareid,ll_taskid,ll_taskprintid) ds_out_assign.AcceptText() IF ll_row <= 0 THEN ld_sumnotoutqty = 0 ELSE ld_sumnotoutqty = ds_out_assign.Object.sumnotoutqty[1] END IF ld_sumoutqty_bill = 0 ld_sumoutqty_bill = arg_ref_mx2[i].transqty IF ld_sumoutqty_bill > ld_sumnotoutqty THEN rslt = 0 ARG_MSG = '第'+String(i)+'行,库存可还货数量只有:'+String(ld_sumnotoutqty,'#,##0.##########')+',不能还货:'+String(arg_ref_mx2[i].transqty,'#,##0.##########') GOTO ext ELSE ld_assign_outqty = 0 FOR j = 1 To ds_out_assign.RowCount() IF ds_out_assign.Object.notoutqty[j] >= ld_sumoutqty_bill THEN ld_assign_outqty = ld_sumoutqty_bill IF uo_assign_bill.uof_assign_del(ds_out_assign.Object.assignid[j],& ld_assign_outqty,ARG_MSG,False) = 0 THEN ARG_MSG = '明细行:'+String(i)+','+ARG_MSG rslt = 0 GOTO ext END IF EXIT ELSE ld_assign_outqty = ds_out_assign.Object.notoutqty[j] IF uo_assign_bill.uof_assign_del(ds_out_assign.Object.assignid[j],& ld_assign_outqty,ARG_MSG,False) = 0 THEN ARG_MSG = '明细行:'+String(i)+','+ARG_MSG rslt = 0 GOTO ext END IF ld_sumoutqty_bill = ld_sumoutqty_bill - ld_assign_outqty END IF NEXT END IF _next: NEXT //增加调入明细 FOR i = 1 To ll_array IF uo_assign_bill.uof_assign_add(arg_s_ref.scid,& arg_ref_mx[i].mtrlwareid,1,arg_ref_mx[i].taskid,& arg_ref_mx[i].taskprintid,arg_ref_mx[i].qty,0,'','','',& 0,arg_s_ref.fpgrade,arg_opemp,ARG_MSG,False) = 0 THEN rslt = 0 GOTO ext END IF ll_ref_assiginid = uo_assign_bill.uo_assignid UPDATE u_mtrlware_transmx_fp SET assignid = :ll_ref_assiginid WHERE billid = :arg_billid And printid = :arg_ref_mx[i].printid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "更新调入明细相关库存分配id操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT END IF //还货单要更新借货单的已还货数 IF arg_s_ref.billtype = 2 THEN FOR i = 1 To ll_array IF arg_ref_mx[i].relid > 0 And arg_ref_mx[i].Relprintid > 0 THEN SELECT qty,returnqty INTO :ld_qty_lend,:ld_qty_return FROM u_mtrlware_transmx_fp WHERE billid = :arg_ref_mx[i].relid And printid = :arg_ref_mx[i].Relprintid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '第'+String(i)+'行,查询相关借货单数量失败,'+sqlca.SQLErrText GOTO ext END IF IF arg_ref_mx[i].qty > ld_qty_lend - ld_qty_return THEN rslt = 0 ARG_MSG = '第'+String(i)+'行,未还货数只有:'+String(ld_qty_lend - ld_qty_return,'#,##0.##########')+',不能还货:'+String(arg_ref_mx[i].qty,'#,##0.##########') GOTO ext END IF UPDATE u_mtrlware_transmx_fp SET returnqty = returnqty + :arg_ref_mx[i].qty WHERE billid = :arg_ref_mx[i].relid And printid = :arg_ref_mx[i].Relprintid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '第'+String(i)+'行,更新相关借货单已还货数失败,'+sqlca.SQLErrText GOTO ext END IF SELECT mxprintid INTO :ll_mxprintid FROM u_mtrlware_transmx_fp WHERE billid = :arg_ref_mx[i].relid And printid = :arg_ref_mx[i].Relprintid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '第'+String(i)+'行,查询相关借货单明细信息失败,'+sqlca.SQLErrText GOTO ext END IF UPDATE u_mtrlware_transmx_fp2 SET returnqty = returnqty + :arg_ref_mx[i].qty WHERE billid = :arg_ref_mx[i].relid And printid = :ll_mxprintid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '第'+String(i)+'行,更新相关借货单调入明细已还货数失败,'+sqlca.SQLErrText GOTO ext END IF END IF NEXT END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Destroy uo_assign_bill Destroy ds_out_assign Destroy uo_bar RETURN rslt end function public function integer p_getinfo (long arg_billid, ref s_mtrlware_trans_fp arg_s_ref, ref string arg_msg);Int rslt = 1 SELECT u_mtrlware_trans_fp.scid, u_mtrlware_trans_fp.billid, u_mtrlware_trans_fp.billdate, u_mtrlware_trans_fp.flag, u_mtrlware_trans_fp.inrep, u_mtrlware_trans_fp.part, u_mtrlware_trans_fp.dscrp, u_mtrlware_trans_fp.storageid, u_mtrlware_trans_fp.taskid, u_mtrlware_trans_fp.printid, u_mtrlware_trans_fp.transqty, u_mtrlware_trans_fp.assignid, u_mtrlware_trans_fp.mtrlwareid, u_mtrlware_trans_fp.billtype, u_mtrlware_trans_fp.fpgrade, isnull(u_saletask.taskcode,''), u_mtrlware_trans_fp.affirmflag, u_mtrlware_trans_fp.affirmrep, u_mtrlware_trans_fp.affirmdate INTO :arg_s_ref.scid, :arg_s_ref.billid, :arg_s_ref.billdate, :arg_s_ref.flag, :arg_s_ref.inrep, :arg_s_ref.part, :arg_s_ref.dscrp, :arg_s_ref.storageid, :arg_s_ref.taskid, :arg_s_ref.printid, :arg_s_ref.transqty, :arg_s_ref.assignid, :arg_s_ref.mtrlwareid, :arg_s_ref.billtype, :arg_s_ref.fpgrade, :arg_s_ref.taskcode, :arg_s_ref.affirmflag, :arg_s_ref.affirmrep, :arg_s_ref.affirmdate FROM u_mtrlware_trans_fp left outer join u_saletask on u_mtrlware_trans_fp.scid = u_saletask.scid and u_mtrlware_trans_fp.taskid = u_saletask.taskid Where billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: RETURN rslt end function public function integer caudit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt,ll_array,ll_array2,i,j,k Decimal ld_qty_return Long ll_mtrlwareid,ll_mxprintid Long ll_taskid,ll_taskprintid,ll_assiginid s_mtrlware_trans_fp arg_s_ref s_mtrlware_trans_fpmx arg_ref_mx[] s_mtrlware_trans_fpmx2 arg_ref_mx2[] uo_mtrlware_assign uo_assign_bill uo_assign_bill = Create uo_mtrlware_assign uo_assign_bill.commit_transaction = sqlca uo_getbar uo_bar uo_bar = Create uo_getbar DateTime null_dt SetNull(null_dt) IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_ref,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_ref.flag <> 1 THEN rslt = 0 ARG_MSG = '单据不是在已审状态,不可以撤审' GOTO ext END IF IF getinfo(arg_billid,arg_ref_mx,arg_ref_mx2,ll_array,ll_array2,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF //如果是借货单,需求检查是否已开还货单 IF arg_s_ref.billtype = 1 THEN SELECT count(*) INTO :cnt FROM u_mtrlware_transmx_fp Where relid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询借货单是否已开还货单失败,'+sqlca.SQLErrText GOTO ext END IF IF cnt > 0 THEN ARG_MSG = '本借货单已开相关还货单,不能撤审,请检查' rslt = 0 GOTO ext END IF END IF //更新审核标记 UPDATE u_mtrlware_trans_fp SET auditingrep = '', auditingdate = :null_dt, flag = 0, assignid = 0 WHERE billid = :arg_billid And flag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 ARG_MSG = "单据正在撤审,请稍后重试" GOTO ext END IF IF arg_s_ref.billtype = 0 Or arg_s_ref.billtype = 1 THEN //处理调入明细 FOR i = 1 To ll_array IF arg_s_ref.billtype = 0 And arg_ref_mx[i].barcode <> '' THEN uo_assign_bill.li_if_uo_mtrlware_trans_fp_deluse = 1 ELSE uo_assign_bill.li_if_uo_mtrlware_trans_fp_deluse = 0 END IF IF uo_assign_bill.uof_assign_del(arg_ref_mx[i].rel_assignid,& arg_ref_mx[i].qty,ARG_MSG,False) = 0 THEN rslt = 0 GOTO ext END IF NEXT //处理调出明细 FOR i = 1 To ll_array IF arg_ref_mx[i].transtype = 0 THEN CONTINUE cnt = 0 SELECT count(*) INTO :cnt FROM u_mtrlware_assign Where assignid = :arg_ref_mx[i].assignid; IF sqlca.SQLCode <> 0 THEN cnt = 0 IF cnt = 1 THEN IF uo_assign_bill.uof_assign_del(arg_ref_mx[i].assignid,& 0 - arg_ref_mx[i].qty,ARG_MSG,False) = 0 THEN rslt = 0 GOTO ext END IF ELSE // SELECT mtrlwareid // INTO :ll_mtrlwareid // FROM u_mtrlware_transmx_fp // WHERE billid = :arg_billid // And printid = :arg_ref_mx[i].printid; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // ARG_MSG = '调出明细第'+String(i)+'行,查询库存信息失败,'+sqlca.SQLErrText // GOTO ext // END IF IF uo_assign_bill.uof_assign_add(arg_s_ref.scid,& arg_ref_mx[i].mtrlwareid,1,arg_ref_mx[i].taskid,& arg_ref_mx[i].taskprintid,arg_ref_mx[i].qty,0,'','','',& 0,arg_s_ref.fpgrade,arg_opemp,ARG_MSG,False) = 0 THEN rslt = 0 GOTO ext END IF ll_assiginid = uo_assign_bill.uo_assignid UPDATE u_mtrlware_transmx_fp SET assignid = :ll_assiginid WHERE billid = :arg_billid And printid = :arg_ref_mx[i].printid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "更新调入明细库存分配id操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF IF arg_ref_mx[i].barcode <> '' And arg_s_ref.billtype = 0 THEN IF uo_bar.uof_barcode_fp(arg_ref_mx[i].barcode,arg_ref_mx[i].taskcode,arg_ref_mx[i].taskid,arg_ref_mx[i].taskprintid,ARG_MSG,False) = 0 THEN rslt = 0 ARG_MSG = "更新调出明细行:"+String(i)+",条码相关调入订单信息失败"+"~n"+ARG_MSG GOTO ext END IF END IF END IF NEXT ELSEIF arg_s_ref.billtype = 2 THEN //扣减调入明细_mx FOR i = 1 To ll_array IF uo_assign_bill.uof_assign_del(arg_ref_mx[i].assignid,& arg_ref_mx[i].qty,ARG_MSG,False) = 0 THEN rslt = 0 GOTO ext END IF NEXT //增加还货明细_mx2 FOR i = 1 To ll_array FOR k = 1 To ll_array2 IF arg_ref_mx2[k].printid = arg_ref_mx[i].mxprintid THEN IF arg_ref_mx2[k].mxtype = 0 THEN GOTO _next END IF ll_taskid = arg_ref_mx2[k].taskid ll_taskprintid = arg_ref_mx2[k].taskprintid EXIT END IF NEXT IF uo_assign_bill.uof_assign_add(arg_s_ref.scid,& arg_ref_mx[i].mtrlwareid,1,ll_taskid,& ll_taskprintid,arg_ref_mx[i].qty,0,'','','',& 0,arg_s_ref.fpgrade,arg_opemp,ARG_MSG,False) = 0 THEN rslt = 0 GOTO ext END IF _next: NEXT END IF IF arg_s_ref.billtype = 2 THEN FOR i = 1 To ll_array IF arg_ref_mx[i].relid > 0 And arg_ref_mx[i].Relprintid > 0 THEN SELECT returnqty INTO :ld_qty_return FROM u_mtrlware_transmx_fp WHERE billid = :arg_ref_mx[i].relid And printid = :arg_ref_mx[i].Relprintid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '第'+String(i)+'行,查询相关借货单数量失败,'+sqlca.SQLErrText GOTO ext END IF IF arg_ref_mx[i].qty > ld_qty_return THEN rslt = 0 ARG_MSG = '第'+String(i)+'行,已还货数只有:'+String(ld_qty_return,'#,##0.##########')+',不能撤消还货:'+String(arg_ref_mx[i].qty,'#,##0.##########') GOTO ext END IF UPDATE u_mtrlware_transmx_fp SET returnqty = returnqty - :arg_ref_mx[i].qty WHERE billid = :arg_ref_mx[i].relid And printid = :arg_ref_mx[i].Relprintid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '第'+String(i)+'行,更新相关借货单已还货数失败,'+sqlca.SQLErrText GOTO ext END IF SELECT mxprintid INTO :ll_mxprintid FROM u_mtrlware_transmx_fp WHERE billid = :arg_ref_mx[i].relid And printid = :arg_ref_mx[i].Relprintid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '第'+String(i)+'行,查询相关借货单明细信息失败,'+sqlca.SQLErrText GOTO ext END IF UPDATE u_mtrlware_transmx_fp2 SET returnqty = returnqty - :arg_ref_mx[i].qty WHERE billid = :arg_ref_mx[i].relid And printid = :ll_mxprintid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '第'+String(i)+'行,更新相关借货单调入明细已还货数失败,'+sqlca.SQLErrText GOTO ext END IF END IF NEXT END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Destroy uo_assign_bill Destroy uo_bar RETURN rslt end function public function integer getinfo (long arg_billid, ref s_mtrlware_trans_fpmx arg_ref_mx[], ref s_mtrlware_trans_fpmx2 arg_ref_mx2[], ref long arg_arr_cnt, ref long arg_arr_cnt2, ref string arg_msg);Int rslt = 1 Long i = 1,no_mxcheck = 0 Long j = 1,no_mxcheck2 = 0 IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF //用游标读取明细 DECLARE cur_mx CURSOR FOR SELECT u_mtrlware_transmx_fp.transtype, u_mtrlware_transmx_fp.assignid, u_mtrlware_transmx_fp.qty, u_mtrlware_transmx_fp.mxDscrp, u_mtrlware_transmx_fp.taskid, u_mtrlware_transmx_fp.taskprintid, u_mtrlware_transmx_fp.mxprintid, u_mtrlware_transmx_fp.relid, u_mtrlware_transmx_fp.relprintid, u_mtrlware_transmx_fp.printid, u_mtrlware_transmx_fp.mtrlwareid, u_mtrlware_transmx_fp.rel_assignid, u_mtrlware_transmx_fp.barcode, isnull(u_saletask.taskcode,'') FROM u_mtrlware_transmx_fp INNER join u_mtrlware_trans_fp on u_mtrlware_transmx_fp.billid = u_mtrlware_trans_fp.billid left OUTER join u_saletask on u_mtrlware_transmx_fp.taskid = u_saletask.taskid AND u_mtrlware_trans_fp.scid = u_saletask.scid WHERE u_mtrlware_transmx_fp.billid = :arg_billid Order By u_mtrlware_transmx_fp.printid; OPEN cur_mx; FETCH cur_mx INTO :arg_ref_mx[i].transtype, :arg_ref_mx[i].assignid,:arg_ref_mx[i].qty,:arg_ref_mx[i].mxDscrp,& :arg_ref_mx[i].taskid,:arg_ref_mx[i].taskprintid,:arg_ref_mx[i].mxprintid,& :arg_ref_mx[i].relid,:arg_ref_mx[i].relprintid,:arg_ref_mx[i].printid,& :arg_ref_mx[i].mtrlwareid,:arg_ref_mx[i].rel_assignid,:arg_ref_mx[i].barcode,:arg_ref_mx[i].taskcode; DO WHILE sqlca.SQLCode = 0 i++ FETCH cur_mx INTO :arg_ref_mx[i].transtype, :arg_ref_mx[i].assignid,:arg_ref_mx[i].qty,:arg_ref_mx[i].mxDscrp,& :arg_ref_mx[i].taskid,:arg_ref_mx[i].taskprintid,:arg_ref_mx[i].mxprintid,& :arg_ref_mx[i].relid,:arg_ref_mx[i].relprintid,:arg_ref_mx[i].printid,& :arg_ref_mx[i].mtrlwareid,:arg_ref_mx[i].rel_assignid,:arg_ref_mx[i].barcode,:arg_ref_mx[i].taskcode; LOOP CLOSE cur_mx; //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck FROM u_mtrlware_transmx_fp Where billid = :arg_billid; 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 //2 //用游标读取明细 DECLARE cur_mx2 CURSOR FOR SELECT u_mtrlware_transmx_fp2.mtrlwareid, u_mtrlware_transmx_fp2.assignid, u_mtrlware_transmx_fp2.transqty, u_mtrlware_transmx_fp2.mtrlid, u_mtrlware_transmx_fp2.taskid, u_mtrlware_transmx_fp2.taskprintid, u_mtrlware_transmx_fp2.printid, u_mtrlware_transmx_fp2.mxtype, u_mtrldef.ifbarcodefp FROM u_mtrlware_transmx_fp2 INNER join u_mtrldef on u_mtrlware_transmx_fp2.mtrlid = u_mtrldef.mtrlid WHERE u_mtrlware_transmx_fp2.billid = :arg_billid Order By u_mtrlware_transmx_fp2.printid; OPEN cur_mx2; FETCH cur_mx2 INTO :arg_ref_mx2[j].mtrlwareid, :arg_ref_mx2[j].assignid,:arg_ref_mx2[j].transqty,:arg_ref_mx2[j].mtrlid,& :arg_ref_mx2[j].taskid,:arg_ref_mx2[j].taskprintid,:arg_ref_mx2[j].printid,& :arg_ref_mx2[j].mxtype,:arg_ref_mx2[j].ifbarcodefp; DO WHILE sqlca.SQLCode = 0 j++ FETCH cur_mx2 INTO :arg_ref_mx2[j].mtrlwareid, :arg_ref_mx2[j].assignid,:arg_ref_mx2[j].transqty,:arg_ref_mx2[j].mtrlid,& :arg_ref_mx2[j].taskid,:arg_ref_mx2[j].taskprintid,:arg_ref_mx2[j].printid,& :arg_ref_mx2[j].mxtype,:arg_ref_mx2[j].ifbarcodefp; LOOP CLOSE cur_mx2; //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck2 FROM u_mtrlware_transmx_fp2 Where billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,单据明细2数量" GOTO ext END IF IF j <> (no_mxcheck2 + 1) THEN rslt = 0 arg_msg = "查询操作失败,单据明细内容2" GOTO ext END IF arg_arr_cnt = i - 1 arg_arr_cnt2 = j - 1 ext: RETURN rslt end function public function integer affirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 s_mtrlware_trans_fp arg_s_ref IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_ref,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_ref.affirmflag <> 0 THEN rslt = 0 ARG_MSG = '单据不是在待初审状态,不可以初审' GOTO ext END IF //更新审核标记 UPDATE u_mtrlware_trans_fp SET affirmrep = :arg_opemp, affirmdate = getdate(), affirmflag = 1 WHERE billid = :arg_billid And affirmflag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+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 public function integer caffirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 datetime ldt_null setnull(ldt_null) s_mtrlware_trans_fp arg_s_ref IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_ref,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_ref.affirmflag <> 1 THEN rslt = 0 ARG_MSG = '单据不是在待终审状态,不可以初撤' GOTO ext END IF IF arg_s_ref.flag <> 0 THEN rslt = 0 ARG_MSG = '单据不是在待终审状态,不可以初撤' GOTO ext END IF //更新审核标记 UPDATE u_mtrlware_trans_fp SET affirmrep = '', affirmdate = :ldt_null, affirmflag = 0 WHERE billid = :arg_billid And affirmflag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+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_mtrlware_trans_fp.create call super::create TriggerEvent( this, "constructor" ) end on on uo_mtrlware_trans_fp.destroy TriggerEvent( this, "destructor" ) call super::destroy end on