$PBExportHeader$uo_buytask_adjust.sru forward global type uo_buytask_adjust from nonvisualobject end type type s_buytaskmx from structure within uo_buytask_adjust end type end forward type s_buytaskmx from structure long requestbuyid string ordercode long mtrlid decimal { 5 } qty decimal { 4 } plprice decimal { 4 } acprice string dscrp string mtrlcode long printid decimal { 4 } fprice decimal { 4 } rebate decimal { 4 } price datetime requiredate datetime accomplishdate long storageid integer iforder string sptmtrlname string unit decimal { 5 } rate decimal { 5 } uqty decimal { 5 } uprice string papery long admtrlid long relprintid decimal { 5 } rebuyqty long orderid long buybargainid long buybargainprintid string buybargaincode decimal { 5 } consignedqty decimal { 5 } newadmtrlid end type global type uo_buytask_adjust from nonvisualobject end type global uo_buytask_adjust uo_buytask_adjust type variables PUBLIC PROTECTEDWRITE Long scid = 0 PUBLIC PROTECTEDWRITE Long billid = 0 PUBLIC PROTECTEDWRITE String billcode = '' PUBLIC PROTECTEDWRITE DateTime opdate PUBLIC PROTECTEDWRITE String operator = '' PUBLIC PROTECTEDWRITE Int status = 0 PUBLIC PROTECTEDWRITE DateTime Accomplishdate PUBLIC PROTECTEDWRITE String Permit_emp = '' int billtype datetime billdate int flag,secflag Long relid = 0 Int Kind = 0 Long sptID = 0 String dscrp string relcode Transaction commit_transaction PRIVATE: s_buytaskmx buytaskmx[] //明细结构数组 s_buytask_mx_ch s_mx Long it_MXBT = 0 //明细结构数组末指针 Boolean IT_NEWBEGIN = TRUE //新建标志 Boolean IT_UPDATEBEGIN = FALSE//修改标志 end variables forward prototypes public function integer p_reset () public function integer p_clearmx () public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit) public function integer getinfo (long arg_taskid, ref string arg_msg) public function integer newbegin (long arg_scid, ref string arg_msg) public function integer p_getinfo (long arg_billid, ref string arg_msg) public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit) public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer updatebegin (long arg_billid, ref string arg_msg) public function integer cancelpermit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer acceptmx (s_buytask_mx_ch arg_mx, ref string arg_msg) public function integer auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer c_auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer c_secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer p_reset ();//INT p_RESET() //清除对象及其明细 scid = 0 billid = 0 billcode = '' operator = '' relcode = '' status = 0 SETNULL(opdate) SETNULL(Accomplishdate) Permit_emp = '' flag=0 secflag=0 it_newbegin = FALSE it_updatebegin = FALSE //清除明细 P_CLEARMX() RETURN 1 end function public function integer p_clearmx ();//INT p_clearmx() //清除明细 it_mxbt=0 RETURN 1 end function public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i Long LS_NEWbillid DateTime server_datetime String ls_sccode Long ll_billid IF IsNull(dscrp) THEN dscrp = '' IF IsNull(arg_operator) THEN arg_operator = '' //==================================================================== // Script - save ( ref string arg_msg, boolean arg_ifcommit ) // Reason: //-------------------------------------------------------------------- // Modified By: yyx Date: 2004.02.20 //-------------------------------------------------------------------- IF Len(dscrp) > 0 THEN dscrp = ' ' + dscrp //==================================================================== operator = arg_operator IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN rslt = 0 arg_msg = "非编辑状态不可以提交" GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_spt Where sptID = :sptID USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,客户资料" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "供应商未定义或错误" GOTO ext END IF IF cnt = 0 THEN arg_msg = '结算方式不存在' rslt = 0 GOTO ext END IF SELECT Top 1 getdate() INTO :server_datetime FROM u_user USING commit_transaction; //取得系统时间,借用操作员表 IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空 rslt = 0 arg_msg = "没有正确采购订单明细内容" GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_user Where username = :operator USING commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,操作员!" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "操作员姓名未登记或已取消!" GOTO ext END IF opdate = server_datetime //填写单据建立时间(最近修改时间) ////////////////////////////////////////////////开始区分:新建/更新 处理 IF billid = 0 THEN //新建 ll_billid = f_sys_scidentity(0,"u_buytaskmx_adjust","billid",arg_msg,FALSE, commit_transaction) //数据commit事务) IF ll_billid <= 0 THEN rslt = 0 GOTO ext END IF IF f_get_sccode(0,commit_transaction,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF billcode = getid(0,ls_sccode + 'CDT',Date(server_datetime),FALSE,commit_transaction) IF billcode = "err" THEN billcode = '' rslt = 0 arg_msg = "无法获取采购订单编号"+"~n"+commit_transaction.SQLErrText GOTO ext END IF INSERT INTO u_buytaskmx_adjust (scid, billid, billcode, sptID, Status, Opemp, Dscrp, opdate, relcode, relid, billdate, billtype) VALUES (:scid, :ll_billid, :billcode, :sptID, :Status, :Operator, :Dscrp, :opdate, :relcode, :relid, :billdate, :billtype) USING commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入采购订单单价变更单操作失败"+"~n"+commit_transaction.SQLErrText //ROLLBACK USING commit_transaction; GOTO ext END IF //读取新billid billid = ll_billid ELSE //////////////////////////////////////////////////更新 UPDATE u_buyTaskMx_adjust SET Opemp = :publ_operator , Dscrp = :Dscrp, opdate = getdate(), relid=:relid, relcode = :relcode, billdate=:billdate, billtype=:billtype WHERE u_buyTaskMx_adjust.scid = :scid AND u_buyTaskMx_adjust.billid = :billid AND Status = 0 USING commit_transaction; IF commit_transaction.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN rslt = 0 arg_msg = "更新采购订单单价变更单操作失败"+"~n"+commit_transaction.SQLErrText //ROLLBACK USING commit_transaction; GOTO ext END IF //删除原有明细 DELETE FROM u_buyTaskMx_adjustmx Where u_buyTaskMx_adjustmx.scid = :scid and u_buyTaskMx_adjustmx.billid = :billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText //ROLLBACK USING commit_transaction; GOTO ext END IF END IF FOR i = 1 TO it_mxbt INSERT INTO u_buyTaskMx_adjustmx (scid, billid, printid, TaskID, taskprintid, MtrlID, iforder, Qty, fprice, rebate, Price, AssignQty, dscrp, consignedqty, Requiredate, storageid, orderid, sptmtrlname, unit, rate, uqty, uprice, stopflag, stopemp, stopdate, stopreason, accomplishdate, jgdscrp, stopqty, requestbuyid, relprintid, rebuyqty, buybargainid, buybargainprintid, buybargaincode, newbuybargainid, newbuybargainprintid, newbuybargaincode, newprice, newjgdscrp) VALUES (:scid, :billid, :s_mx.printid[i], :s_mx.TaskID[i], :s_mx.taskprintid[i], :s_mx.MtrlID[i], :s_mx.iforder[i], :s_mx.Qty[i], :s_mx.fprice[i], :s_mx.rebate[i], :s_mx.Price[i], :s_mx.AssignQty[i], :s_mx.dscrp[i], :s_mx.consignedqty[i], :s_mx.Requiredate[i], :s_mx.storageid[i], :s_mx.orderid[i], :s_mx.sptmtrlname[i], :s_mx.unit[i], :s_mx.rate[i], :s_mx.uqty[i], :s_mx.uprice[i], :s_mx.stopflag[i], :s_mx.stopemp[i], :s_mx.stopdate[i], :s_mx.stopreason[i], :s_mx.accomplishdate[i], :s_mx.jgdscrp[i], :s_mx.stopqty[i], :s_mx.requestbuyid[i], :s_mx.relprintid[i], :s_mx.rebuyqty[i], :s_mx.buybargainid[i], :s_mx.buybargainprintid[i], :s_mx.buybargaincode[i], :s_mx.newbuybargainid[i], :s_mx.newbuybargainprintid[i], :s_mx.newbuybargaincode[i], :s_mx.newprice[i], :s_mx.newjgdscrp[i]) USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN if it_newbegin then billid = 0 //还原billid rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText //ROLLBACK USING commit_transaction; GOTO ext END IF NEXT it_newbegin = FALSE it_updatebegin = FALSE ext: IF rslt = 0 THEN p_clearmx() ROLLBACK USING commit_transaction; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT USING commit_transaction; END IF Return(rslt) end function public function integer getinfo (long arg_taskid, ref string arg_msg);//getinfo(long arg_taskid,string arg_msg) //0 失败 1成功 Int rslt = 1,I = 1,NO_MXCHECK = 0 IF arg_taskid <= 0 THEN rslt = 0 ARG_MSG = '错误采购订单唯一码' GOTO ext END IF IF p_getinfo(arg_taskid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF //用游标读取明细 DECLARE CUR_INWAERMX CURSOR FOR SELECT u_buyTaskMx_adjustmx.mtrlid, u_buyTaskMx_adjustmx.qty, u_buyTaskMx_adjustmx.price, u_buyTaskMx_adjustmx.dscrp, u_mtrldef.mtrlcode, u_buyTaskMx_adjustmx.printid, u_buyTaskMx_adjustmx.fprice, u_buyTaskMx_adjustmx.rebate, u_buyTaskMx_adjustmx.requestbuyid, u_buyTaskMx_adjustmx.storageid, u_buyTaskMx_adjustmx.sptmtrlname, u_buyTaskMx_adjustmx.unit, u_buyTaskMx_adjustmx.rate, u_buyTaskMx_adjustmx.uqty, u_buyTaskMx_adjustmx.uprice, u_buyTaskMx_adjustmx.jgdscrp, u_buyTaskMx_adjustmx.relprintid, u_buyTaskMx_adjustmx.buybargainid, u_buyTaskMx_adjustmx.buybargainprintid, u_buyTaskMx_adjustmx.buybargaincode, u_buyTaskMx_adjustmx.consignedqty, u_buyTaskMx_adjustmx.newbuybargainid, u_buyTaskMx_adjustmx.newbuybargainprintid, u_buyTaskMx_adjustmx.newbuybargaincode, u_buyTaskMx_adjustmx.newprice, u_buyTaskMx_adjustmx.newjgdscrp, u_buyTaskMx_adjustmx.taskid, u_buyTaskMx_adjustmx.taskprintid FROM u_buyTaskMx_adjustmx,u_mtrldef WHERE u_buyTaskMx_adjustmx.billid = :arg_taskid AND u_buyTaskMx_adjustmx.mtrlid = u_mtrldef.mtrlid USING commit_transaction; OPEN CUR_INWAERMX; FETCH CUR_INWAERMX INTO :s_mx.mtrlid[i],:s_mx.qty[i],:s_mx.price[i], :s_mx.dscrp[i],:s_mx.mtrlcode[i], :s_mx.printid[i],:s_mx.fprice[i],:s_mx.rebate[i], :s_mx.requestbuyid[i],:s_mx.storageid[i], :s_mx.sptmtrlname[i],:s_mx.unit[i],:s_mx.rate[i], :s_mx.uqty[i],:s_mx.uprice[i],:s_mx.jgdscrp[i],:s_mx.relprintid[i], :s_mx.buybargainid[i], :s_mx.buybargainprintid[i], :s_mx.buybargaincode[i], :s_mx.consignedqty[i], :s_mx.newbuybargainid[i], :s_mx.newbuybargainprintid[i], :s_mx.newbuybargaincode[i], :s_mx.newprice[i], :s_mx.newjgdscrp[i], :s_mx.taskid[i], :s_mx.taskprintid[i]; DO WHILE commit_transaction.SQLCode = 0 I++ FETCH CUR_INWAERMX INTO :s_mx.mtrlid[i],:s_mx.qty[i],:s_mx.price[i], :s_mx.dscrp[i],:s_mx.mtrlcode[i], :s_mx.printid[i],:s_mx.fprice[i],:s_mx.rebate[i], :s_mx.requestbuyid[i],:s_mx.storageid[i], :s_mx.sptmtrlname[i],:s_mx.unit[i],:s_mx.rate[i], :s_mx.uqty[i],:s_mx.uprice[i],:s_mx.jgdscrp[i],:s_mx.relprintid[i], :s_mx.buybargainid[i], :s_mx.buybargainprintid[i], :s_mx.buybargaincode[i], :s_mx.consignedqty[i], :s_mx.newbuybargainid[i], :s_mx.newbuybargainprintid[i], :s_mx.newbuybargaincode[i], :s_mx.newprice[i], :s_mx.newjgdscrp[i], :s_mx.taskid[i], :s_mx.taskprintid[i]; LOOP CLOSE CUR_INWAERMX; //检验明细是否读入完整 SELECT COUNT(*) INTO :NO_MXCHECK FROM u_buyTaskMx_adjustmx Where u_buyTaskMx_adjustmx.billid = :arg_taskid USING commit_transaction; IF commit_transaction.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 it_mxbt = I - 1 it_newbegin = FALSE it_updatebegin = FALSE ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer newbegin (long arg_scid, ref string arg_msg);//重置对象,设定业务类型与关联ID,准备建立新单 //0 fail 1 success Long rslt = 1,CNT = 0 IF arg_scid < 0 THEN arg_msg = '请选择分部' rslt = 0 GOTO ext END IF p_reset() it_newbegin = TRUE it_updatebegin = FALSE scid = arg_scid ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1 SELECT scid, billid, billCode, sptID, Status, Dscrp, relcode, flag, secflag INTO :scid, :billid, :billCode, :sptID, :Status, :Dscrp, :relcode, :flag, :secflag FROM u_buyTaskMx_adjust Where u_buyTaskMx_adjust.billid = :arg_billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询订单内容失败(错误订单唯一码)' GOTO ext END IF ext: RETURN rslt end function public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart) //0 fail 1 SUCCESS Int rslt = 1 arg_newdescppart = Trim(arg_newdescppart) IF it_updatebegin Or it_newbegin 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_billid,arG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF status = 0 THEN rslt = 0 arG_MSG = "待采购审核状态下不可用" GOTO ext END IF UPDATE u_buyTaskMx_adjust SET DSCRP = DSCRP+' '+:arg_newdescppart Where u_buyTaskMx_adjust.billid = :arg_billid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arG_MSG = "因网络或其它原因导致添加采购订单备注操作失败"+"~n"+commit_transaction.SQLErrText ROLLBACK Using commit_transaction; GOTO ext END IF DSCRP = DSCRP+' '+arg_newdescppart it_newbegin = False it_updatebegin = False ext: IF arg_ifcommit And rslt = 1 THEN COMMIT Using commit_transaction; END IF p_reset() Return (rslt) end function public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit);//删除未审核的订单 //0 FAIL, 1 SUCCESS Int rslt = 1 IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误采购订单唯一码' GOTO ext END IF IF p_getinfo(arg_billid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF Status <> 0 THEN rslt = 0 ARG_MSG = "订单已经审核,不可以删除" GOTO ext END IF Long cnt cnt = 0 DELETE FROM u_buyTaskMx_adjust Where u_buyTaskMx_adjust.billid = :arg_billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "删除采购订单操作失败"+"~n"+commit_transaction.SQLErrText ROLLBACK USING commit_transaction; GOTO ext END IF DELETE FROM u_buyTaskMx_adjustmx Where u_buyTaskMx_adjustmx.billid = :arg_billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "删除采购订单明细操作失败"+"~n"+SQLCA.SQLErrText ROLLBACK USING commit_transaction; GOTO ext END IF it_newbegin = FALSE it_updatebegin = FALSE IF arg_ifcommit AND rslt = 1 THEN COMMIT USING commit_transaction; END IF ext: p_reset() Return (rslt) end function public function integer updatebegin (long arg_billid, ref string arg_msg);//UPDATEbegin(long arg_billid,ref string arg_msg) //从置对象,设定业务类型与关联ID,准备更新进仓单 //0 fail 1 success Long rslt = 1,CNT = 0 IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误采购订单唯一码' GOTO ext END IF IF p_getinfo(arg_billid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 0 THEN rslt = 0 ARG_MSG = '已经处于审核或完成等状态,不可以修改,如果订单未完成并要修改请先撤销审核' GOTO ext END IF it_newbegin = False it_updatebegin = True p_clearmx() //清除明细 ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer cancelpermit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0 DateTime NULLDT SetNull(NULLDT) //uo_requestbuy uo_task //uo_task = CREATE uo_requestbuy //uo_task.commit_transaction = commit_transaction IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误采购订单唯一码' GOTO ext END IF IF getinfo(arg_billid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF Status <> 1 THEN rslt = 0 ARG_MSG = "订单只有在已审核状态才可以执行撤消审核,请核对" GOTO ext END IF UPDATE u_buyTaskMx_adjust SET Status = 0,Permit_date = :NULLDT, Permit_Emp = '' Where billid = :arg_billid AND Status = 1 USING commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致采购订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF it_newbegin = FALSE it_updatebegin = FALSE ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT USING commit_transaction; END IF //DESTROY uo_task p_reset() Return (rslt) end function public function integer acceptmx (s_buytask_mx_ch arg_mx, ref string arg_msg); Long rslt = 1,cnt = 0,LS_i //写入内容 FOR LS_i = 1 TO UpperBound(arg_mx.taskid) IF arg_mx.mtrlid[LS_i]=0 THEN CONTINUE it_mxbt++ s_mx.taskid[it_mxbt] = arg_mx.taskid[LS_i] s_mx.taskcode[it_mxbt] = arg_mx.taskcode[LS_i] s_mx.requiredate[it_mxbt] = arg_mx.requiredate[LS_i] s_mx.dscrp[it_mxbt] = arg_mx.dscrp[LS_i] s_mx.mtrlid[it_mxbt] = arg_mx.mtrlid[LS_i] s_mx.fprice[it_mxbt] = arg_mx.fprice[LS_i] s_mx.rebate[it_mxbt] = arg_mx.rebate[LS_i] s_mx.qty[it_mxbt] = arg_mx.qty[LS_i] s_mx.jgdscrp[it_mxbt] = arg_mx.jgdscrp[LS_i] s_mx.relprintid[it_mxbt] = arg_mx.relprintid[LS_i] s_mx.uprice[it_mxbt] = arg_mx.uprice[LS_i] s_mx.mx_unit[it_mxbt] = arg_mx.unit[LS_i] s_mx.requestbuyid[it_mxbt] = arg_mx.requestbuyid[LS_i] s_mx.taskprintid[it_mxbt] = arg_mx.taskprintid[LS_i] s_mx.printid[it_mxbt] = it_mxbt s_mx.price[it_mxbt] = arg_mx.price[LS_i] s_mx.accomplishdate[it_mxbt] = arg_mx.accomplishdate[LS_i] s_mx.storageid[it_mxbt] = arg_mx.storageid[LS_i] s_mx.iforder[it_mxbt] = arg_mx.iforder[LS_i] s_mx.sptmtrlname[it_mxbt] = arg_mx.sptmtrlname[LS_i] s_mx.unit[it_mxbt] = arg_mx.unit[LS_i] s_mx.uqty[it_mxbt] = arg_mx.uqty[LS_i] s_mx.rebuyqty[it_mxbt] = arg_mx.rebuyqty[LS_i] s_mx.orderid[it_mxbt] = arg_mx.orderid[LS_i] s_mx.buybargainid[it_mxbt] = arg_mx.buybargainid[LS_i] s_mx.buybargainprintid[it_mxbt] = arg_mx.buybargainprintid[LS_i] s_mx.buybargaincode[it_mxbt] = arg_mx.buybargaincode[LS_i] s_mx.newbuybargainid[it_mxbt] = arg_mx.newbuybargainid[LS_i] s_mx.newbuybargainprintid[it_mxbt] = arg_mx.newbuybargainprintid[LS_i] s_mx.newbuybargaincode[it_mxbt] = arg_mx.newbuybargaincode[LS_i] s_mx.newjgdscrp[it_mxbt] = arg_mx.newjgdscrp[LS_i] s_mx.newprice[it_mxbt] = arg_mx.newprice[LS_i] s_mx.consignedqty[it_mxbt] = arg_mx.consignedqty[LS_i] NEXT //ext: IF rslt = 0 THEN p_clearmx() Return(rslt) end function public function integer auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit); Int rslt = 1,i IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF getinfo( arg_billid, ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 1 THEN rslt = 0 ARG_MSG = "调价单还没有审核,请核对" GOTO ext END IF //更新审核标记 UPDATE u_buyTaskMx_adjust SET auditingrep = :publ_operator , 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 END IF FOR i = 1 To it_mxbt UPDATE u_buytaskmx SET rebate = :s_mx.rebate[i], enprice = :s_mx.newprice[i], uprice = :s_mx.newprice[i] * u_buytask.mrate, fprice = Round((:s_mx.newprice[i] * u_buytaskmx.uqty * u_buytask.mrate)/(Round(u_buytaskmx.uqty * rate,:sys_option_unit_dec)),10), price = (Round((:s_mx.newprice[i] * u_buytaskmx.uqty * u_buytask.mrate)/(Round(u_buytaskmx.uqty * rate,:sys_option_unit_dec)),5)) * :s_mx.rebate[i], buybargaincode = :s_mx.newbuybargaincode[i], buybargainid = :s_mx.newbuybargainid[i], buybargainprintid = :s_mx.newbuybargainprintid[i], jgdscrp = :s_mx.newjgdscrp[i] FROM u_buyTaskMx INNER JOIN u_buyTask ON u_buyTaskMx.scid = u_buyTask.scid AND u_buyTaskMx.TaskID = u_buyTask.TaskID WHERE u_buyTaskMx.scid = :scid AND u_buyTaskMx.taskid = :s_mx.taskid[i] AND u_buyTaskMx.printid = :s_mx.taskprintid[i] And u_buyTaskMx.mtrlid = :s_mx.mtrlid[i]; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '更新采购订单单价失败'+sqlca.SQLErrText GOTO ext END IF NEXT 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_billid, ref string arg_msg, boolean arg_ifcommit); Int rslt = 1,i datetime ls_null setnull(ls_null) IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF getinfo( arg_billid, ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag =0 THEN rslt = 0 ARG_MSG = "调价单还没有审核,请核对" GOTO ext END IF //更新审核标记 UPDATE u_buyTaskMx_adjust SET auditingrep = '' , Auditingdate = :ls_null, flag = 0 WHERE billid = :arg_billid AND flag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF //FOR i = 1 TO it_mxbt // // UPDATE u_buytaskmx SET // uprice = s_mx.newprice[i], // fprice = Round((:s_mx.newprice[i] * uqty)/(Round(uqty * rate,:sys_option_unit_dec)),5), // acprice = (Round((:s_mx.newprice[i] * uqty)/(Round(uqty * rate,:sys_option_unit_dec)),5)) * arg_rebate // Where taskid = :s_mx.taskid[i] AND printid = :s_mx.taskprintid[i]; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // ARG_MSG = '更新采购单价失败'+sqlca.SQLErrText // GOTO ext // END IF // //NEXT ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit); Int rslt = 1,i IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF getinfo( arg_billid, ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 2 THEN rslt = 0 ARG_MSG = "调价单已高审,请核对" GOTO ext END IF //更新审核标记 UPDATE u_buyTaskMx_adjust SET secauditingrep = :publ_operator , secauditingdate = getdate(), flag = 2 WHERE billid = :arg_billid AND flag = 1; 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_secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit); Int rslt = 1,i datetime ls_null setnull(ls_null) IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF getinfo( arg_billid, ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 2 THEN rslt = 0 ARG_MSG = "调价单未高审,不能撤审,请核对" GOTO ext END IF //更新审核标记 UPDATE u_buyTaskMx_adjust SET secauditingrep = '' , secauditingdate = :ls_null, flag = 1 WHERE billid = :arg_billid AND flag = 2; 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 on uo_buytask_adjust.create call super::create TriggerEvent( this, "constructor" ) end on on uo_buytask_adjust.destroy TriggerEvent( this, "destructor" ) call super::destroy end on