$PBExportHeader$uo_cpcheck.sru forward global type uo_cpcheck from nonvisualobject end type type s_saleplanmx from structure within uo_cpcheck end type end forward type s_saleplanmx from structure long mtrlid string mtrlcode long printid decimal { 10 } planqty string mxdscrp end type global type uo_cpcheck from nonvisualobject end type global uo_cpcheck uo_cpcheck type variables Long uo_billid int uo_ifauto = 0 //billtype 质检类型:0-自制质检;1-采购质检;2-外协质检; 4-采购收货质检 end variables forward prototypes public function integer save (s_cpcheck arg_s_cpcheck, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) 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 caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) 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_cpcheck arg_s_check, ref string arg_msg) public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg) public function integer secaudit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer csecaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer uf_save_chk (ref s_cpcheck arg_s_cpcheck, ref string arg_msg) end prototypes public function integer save (s_cpcheck arg_s_cpcheck, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1 Long cnt = 0 DateTime server_dt Long ll_billid,it_mxbt,ll_i,i String ls_sccode,ls_billcode IF IsNull(arg_s_cpcheck.scid) THEN arg_s_cpcheck.scid = 0 IF IsNull(arg_s_cpcheck.billid) THEN arg_s_cpcheck.billid = 0 IF IsNull(arg_s_cpcheck.checktype) THEN arg_s_cpcheck.checktype = 0 IF IsNull(arg_s_cpcheck.relid) THEN arg_s_cpcheck.relid = 0 IF IsNull(arg_s_cpcheck.qty) THEN arg_s_cpcheck.qty = 0 IF IsNull(arg_s_cpcheck.checkqty) THEN arg_s_cpcheck.checkqty = 0 IF IsNull(arg_s_cpcheck.badqty) THEN arg_s_cpcheck.badqty = 0 IF IsNull(arg_s_cpcheck.goodqty) THEN arg_s_cpcheck.goodqty = 0 IF IsNull(arg_s_cpcheck.dscrp) THEN arg_s_cpcheck.dscrp = '' IF IsNull(arg_s_cpcheck.reson) THEN arg_s_cpcheck.reson = '' IF IsNull(arg_s_cpcheck.suggest) THEN arg_s_cpcheck.suggest = '' IF IsNull(arg_s_cpcheck.feedback) THEN arg_s_cpcheck.feedback = '' IF IsNull(arg_s_cpcheck.opinion) THEN arg_s_cpcheck.opinion = '' IF IsNull(arg_s_cpcheck.billemp) THEN arg_s_cpcheck.billemp = '' IF IsNull(arg_s_cpcheck.unit) THEN arg_s_cpcheck.unit = '' IF IsNull(arg_s_cpcheck.rate) THEN arg_s_cpcheck.rate = 1 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_s_cpcheck.arg_s_cpcheckmx) // //允许没有明细保存 - 20080423_dyy改, 其他暂时不考虑 IF arg_s_cpcheck.billtype = 4 THEN IF it_mxbt <= 0 THEN rslt = 0 arg_msg = "没有明细质检项目" GOTO ext END IF END IF IF uf_save_chk(arg_s_cpcheck, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF FOR ll_i = 1 To it_mxbt cnt = 0 SELECT count(*) INTO :cnt FROM u_checkitem Where u_checkitem.itemid = :arg_s_cpcheck.arg_s_cpcheckmx[ll_i].itemid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询行:'+String(arg_s_cpcheck.arg_s_cpcheckmx[ll_i].printid)+',项目资料是否存在失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt = 0 THEN arg_msg = '行:'+String(arg_s_cpcheck.arg_s_cpcheckmx[ll_i].printid)+',项目资料已存在失败!' rslt = 0 GOTO ext END IF arg_s_cpcheck.arg_s_cpcheckmx[ll_i].checkemp = Trim(arg_s_cpcheck.arg_s_cpcheckmx[ll_i].checkemp) arg_s_cpcheck.arg_s_cpcheckmx[ll_i].checkresult = Trim(arg_s_cpcheck.arg_s_cpcheckmx[ll_i].checkresult) //自动生成,先不用 IF uo_ifauto = 0 THEN IF arg_s_cpcheck.arg_s_cpcheckmx[ll_i].checkemp = '' THEN arg_msg = '行:'+String(arg_s_cpcheck.arg_s_cpcheckmx[ll_i].printid)+',请输入明细质检人!' rslt = 0 GOTO ext END IF END IF NEXT IF arg_s_cpcheck.billid = 0 THEN ll_billid = f_sys_scidentity(0,"u_cpcheck","billid",arg_msg,True,id_sqlca) IF ll_billid <= 0 THEN rslt = 0 GOTO ext END IF IF f_get_sccode(arg_s_cpcheck.scid,sqlca,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF CHOOSE CASE arg_s_cpcheck.billtype CASE 0 ls_billcode = getid(arg_s_cpcheck.scid,ls_sccode + 'QA',Date(server_dt),False,sqlca) CASE 1 ls_billcode = getid(arg_s_cpcheck.scid,ls_sccode + 'QD',Date(server_dt),False,sqlca) CASE 2 ls_billcode = getid(arg_s_cpcheck.scid,ls_sccode + 'QE',Date(server_dt),False,sqlca) CASE 4 ls_billcode = getid(arg_s_cpcheck.scid,ls_sccode + 'QB',Date(server_dt),False,sqlca) END CHOOSE IF ls_billcode = "err" THEN rslt = 0 arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText GOTO ext END IF INSERT INTO u_cpcheck ( scid, billid, billcode, checkdate, checktype, opdate, opemp, flag, relid, relcode, mtrlid, qty, checkqty, badqty, goodqty, status, woodcode, pcode, dscrp, itemtypeid, reson, suggest, feedback, opinion , billemp, billtype, Relprintid, QcResult, unit, rate) VALUES ( :arg_s_cpcheck.scid, :ll_billid, :ls_billcode, :arg_s_cpcheck.checkdate, :arg_s_cpcheck.checktype, getdate(), :arg_opemp, 0, :arg_s_cpcheck.relid, :arg_s_cpcheck.relcode, :arg_s_cpcheck.mtrlid, :arg_s_cpcheck.qty, :arg_s_cpcheck.checkqty, :arg_s_cpcheck.badqty, :arg_s_cpcheck.goodqty, :arg_s_cpcheck.status, :arg_s_cpcheck.woodcode, :arg_s_cpcheck.pcode, :arg_s_cpcheck.dscrp, :arg_s_cpcheck.itemtypeid, :arg_s_cpcheck.reson, :arg_s_cpcheck.suggest, :arg_s_cpcheck.feedback, :arg_s_cpcheck.opinion, :arg_s_cpcheck.billemp, :arg_s_cpcheck.billtype, :arg_s_cpcheck.Relprintid, :arg_s_cpcheck.QcResult, :arg_s_cpcheck.unit, :arg_s_cpcheck.rate) ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF uo_billid = ll_billid ELSE UPDATE u_cpcheck SET checkdate = :arg_s_cpcheck.checkdate, checktype = :arg_s_cpcheck.checktype, moddate = getdate(), modemp = :arg_opemp, relid = :arg_s_cpcheck.relid, relcode = :arg_s_cpcheck.relcode, mtrlid = :arg_s_cpcheck.mtrlid, qty = :arg_s_cpcheck.qty, checkqty = :arg_s_cpcheck.checkqty, badqty = :arg_s_cpcheck.badqty, goodqty = :arg_s_cpcheck.goodqty, status = :arg_s_cpcheck.status, woodcode = :arg_s_cpcheck.woodcode, pcode = :arg_s_cpcheck.pcode, dscrp = :arg_s_cpcheck.dscrp, itemtypeid = :arg_s_cpcheck.itemtypeid, reson = :arg_s_cpcheck.reson, suggest = :arg_s_cpcheck.suggest, feedback = :arg_s_cpcheck.feedback, opinion = :arg_s_cpcheck.opinion, billemp = :arg_s_cpcheck.billemp, Relprintid = :arg_s_cpcheck.Relprintid, QcResult = :arg_s_cpcheck.QcResult, unit = :arg_s_cpcheck.unit, rate = :arg_s_cpcheck.rate WHERE billid = :arg_s_cpcheck.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_cpcheckmx Where billid = :arg_s_cpcheck.billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF uo_billid = arg_s_cpcheck.billid END IF FOR i = 1 To it_mxbt INSERT INTO u_cpcheckmx ( scid, billid, itemid, checkresult, checkemp, badqty, goodqty, printid, mxdscrp, QcResult, Environmen, Method, Basis, Equipment, Standard) VALUES (:arg_s_cpcheck.scid, :uo_billid, :arg_s_cpcheck.arg_s_cpcheckmx[i].itemid, :arg_s_cpcheck.arg_s_cpcheckmx[i].checkresult, :arg_s_cpcheck.arg_s_cpcheckmx[i].checkemp, :arg_s_cpcheck.arg_s_cpcheckmx[i].badqty, :arg_s_cpcheck.arg_s_cpcheckmx[i].goodqty, :arg_s_cpcheck.arg_s_cpcheckmx[i].printid, :arg_s_cpcheck.arg_s_cpcheckmx[i].mxdscrp, :arg_s_cpcheck.arg_s_cpcheckmx[i].QcResult, :arg_s_cpcheck.arg_s_cpcheckmx[i].Environmen, :arg_s_cpcheck.arg_s_cpcheckmx[i].Method, :arg_s_cpcheck.arg_s_cpcheckmx[i].Basis, :arg_s_cpcheck.arg_s_cpcheckmx[i].Equipment, :arg_s_cpcheck.arg_s_cpcheckmx[i].Standard); IF sqlca.SQLCode <> 0 THEN uo_billid = arg_s_cpcheck.billid rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT ext: IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit And rslt = 1 THEN COMMIT; END IF RETURN rslt end function public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 s_cpcheck arg_s_check IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_check,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_check.flag = 1 THEN rslt = 0 ARG_MSG = '单据已经审核,不可以删除' GOTO ext END IF DELETE FROM u_cpcheck Where billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_cpcheckmx Where billid = :arg_billid ; 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_cpcheck arg_s_check IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_check,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_check.flag = 1 THEN rslt = 0 ARG_MSG = '单据已经审核,不可以修改,要修改请先撤销审核' GOTO ext END IF ext: RETURN rslt end function public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 DateTime null_dt s_cpcheck arg_s_check SetNull(null_dt) uo_inware_buy uo_ware uo_ware = Create uo_inware_buy IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_check,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_check.flag = 0 THEN rslt = 0 arg_msg = '单据未审核,不可以撤审' GOTO ext END IF UPDATE u_cpcheck SET flag = 0, permit_emp = '', permit_date = :null_dt WHERE billid = :arg_billid AND flag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致单据撤消审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF IF arg_s_check.billtype = 4 THEN //采购收货质检单 IF arg_s_check.relid > 0 And arg_s_check.relprintid > 0 THEN IF sys_option_cpcheck_update_chkqty = 1 THEN s_inwaremx s_mx Decimal lde_rate IF sys_option_cpcheck_use_chkpassrate = 0 THEN s_mx.chkqty = 0 - arg_s_check.checkqty s_mx.badqty = 0 - arg_s_check.badqty s_mx.goodqty = 0 - arg_s_check.goodqty s_mx.chkinqty = 0 s_mx.chkinqty2 = 0 ELSE IF arg_s_check.checkqty = 0 THEN lde_rate = 0 ELSE lde_rate = arg_s_check.goodqty / arg_s_check.checkqty END IF s_mx.chkqty = 0 - arg_s_check.checkqty s_mx.badqty = 0 - arg_s_check.badqty s_mx.goodqty = 0 - arg_s_check.goodqty IF arg_s_check.checktype = 1 THEN //全检, 按原合格数,不合格数登记 s_mx.chkinqty = 0 - arg_s_check.goodqty s_mx.chkinqty2 = 0 - arg_s_check.badqty ELSE //抽检,按抽检合格比率,超过比率的,算全合格,否则全不合格 IF lde_rate >= arg_s_check.chkpassrate THEN s_mx.chkinqty = 0 - arg_s_check.qty s_mx.chkinqty2 = 0 ELSE s_mx.chkinqty = 0 s_mx.chkinqty2 = 0 - arg_s_check.qty END IF END IF END IF // s_inwaremx s_mx // s_mx.chkqty = 0 - arg_s_check.checkqty // s_mx.badqty = 0 - arg_s_check.badqty // s_mx.goodqty = 0 - arg_s_check.goodqty IF uo_ware.uof_update_chkqty(arg_s_check.scid, arg_s_check.relid , arg_s_check.relprintid, s_mx, ARG_MSG, False) = 0 THEN rslt = 0 ARG_MSG = "更新采购收货单质检相关数据失败"+"~n"+ARG_MSG GOTO ext END IF END IF END IF END IF ext: Destroy uo_ware IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF 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 it_mxbt s_cpcheck arg_s_check uo_inware_buy uo_ware uo_ware = Create uo_inware_buy //uo_ware.commit_transaction = sqlca IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_check,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_check.flag = 1 THEN rslt = 0 ARG_MSG = '单据已经审核,不可以再审' GOTO ext END IF IF arg_s_check.qty <= 0 THEN rslt = 0 ARG_MSG = '错误的批量' GOTO ext END IF IF arg_s_check.checkqty <= 0 THEN rslt = 0 ARG_MSG = '错误的抽检数量' GOTO ext END IF IF arg_s_check.qty < arg_s_check.checkqty THEN rslt = 0 ARG_MSG = '抽检数量大于批量' GOTO ext END IF //更新审核标记 UPDATE u_cpcheck SET permit_emp = :arg_opemp, permit_date = 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 IF arg_s_check.billtype = 4 THEN //采购收货质检单 IF arg_s_check.relid > 0 And arg_s_check.relprintid > 0 THEN IF sys_option_cpcheck_update_chkqty = 1 THEN s_inwaremx s_mx Decimal lde_rate IF sys_option_cpcheck_use_chkpassrate = 0 THEN s_mx.chkqty = arg_s_check.checkqty s_mx.badqty = arg_s_check.badqty s_mx.goodqty = arg_s_check.goodqty s_mx.chkinqty = 0 s_mx.chkinqty2 = 0 ELSE IF arg_s_check.checkqty = 0 THEN lde_rate = 0 ELSE lde_rate = arg_s_check.goodqty / arg_s_check.checkqty END IF s_mx.chkqty = arg_s_check.checkqty s_mx.badqty = arg_s_check.badqty s_mx.goodqty = arg_s_check.goodqty IF arg_s_check.checktype = 1 THEN //全检, 按原合格数,不合格数登记 s_mx.chkinqty = arg_s_check.goodqty s_mx.chkinqty2 = arg_s_check.badqty ELSE //抽检,按抽检合格比率,超过比率的,算全合格,否则全不合格 IF lde_rate >= arg_s_check.chkpassrate THEN s_mx.chkinqty = arg_s_check.qty s_mx.chkinqty2 = 0 ELSE s_mx.chkinqty = 0 s_mx.chkinqty2 = arg_s_check.qty END IF END IF END IF IF uo_ware.uof_update_chkqty(arg_s_check.scid, arg_s_check.relid , arg_s_check.relprintid, s_mx, ARG_MSG, False) = 0 THEN rslt = 0 ARG_MSG = "更新采购收货单质检相关数据失败"+"~n"+ARG_MSG GOTO ext END IF END IF END IF END IF ext: Destroy uo_ware IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer p_getinfo (long arg_billid, ref s_cpcheck arg_s_check, ref string arg_msg);Int rslt = 1 IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF SELECT u_cpcheck.relcode, u_cpcheck.qty, u_cpcheck.checkqty, u_cpcheck.checktype, u_cpcheck.dscrp, u_cpcheck.checkdate, u_cpcheck.itemtypeid, u_cpcheck.flag, u_cpcheck.relid, u_cpcheck.scid, u_cpcheck.mtrlid, u_cpcheck.status, u_cpcheck.woodcode, u_cpcheck.pcode, u_cpcheck.billtype, u_cpcheck.relprintid, u_cpcheck.QcResult, u_cpcheck.secflag, u_cpcheck.unit, u_cpcheck.rate, u_cpcheck.goodqty, u_cpcheck.badqty, u_mtrldef.checkrate, u_mtrldef.chkpassrate INTO :arg_s_check.relcode, :arg_s_check.qty, :arg_s_check.checkqty, :arg_s_check.checktype, :arg_s_check.dscrp, :arg_s_check.checkdate, :arg_s_check.itemtypeid, :arg_s_check.flag, :arg_s_check.relid, :arg_s_check.scid, :arg_s_check.mtrlid, :arg_s_check.status, :arg_s_check.woodcode, :arg_s_check.pcode, :arg_s_check.billtype, :arg_s_check.relprintid, :arg_s_check.QcResult, :arg_s_check.secflag, :arg_s_check.unit, :arg_s_check.rate, :arg_s_check.goodqty, :arg_s_check.badqty, :arg_s_check.checkrate, :arg_s_check.chkpassrate FROM u_cpcheck INNER JOIN u_mtrldef on u_cpcheck.mtrlid = u_mtrldef.mtrlid Where u_cpcheck.billid = :arg_billid; IF sqlca.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);Int rslt = 1 s_cpcheck arg_s_check IF arg_billid <= 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_billid,arg_s_check,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_check.flag = 0 THEN rslt = 0 arg_msg = '单据未审核,不可以增加备注' GOTO ext END IF UPDATE u_cpcheck SET DSCRP = DSCRP+' '+:arg_newdescppart WHERE u_cpcheck.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 = 1 THEN COMMIT; ELSE ROLLBACK; END IF Return (rslt) end function public function integer secaudit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long it_mxbt s_cpcheck arg_s_check IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_check,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_check.secflag = 1 THEN rslt = 0 ARG_MSG = '单据已经二审,不可以再审' GOTO ext END IF IF arg_s_check.flag = 0 THEN rslt = 0 ARG_MSG = '单据未审核,不可以二审' GOTO ext END IF //更新审核标记 UPDATE u_cpcheck SET secauditemp = :arg_opemp, SecAuditdate = getdate(), secflag = 1 WHERE billid = :arg_billid AND flag = 1 and secflag = 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 csecaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 DateTime null_dt s_cpcheck arg_s_check SetNull(null_dt) IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_check,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_check.secflag = 0 THEN rslt = 0 arg_msg = '单据未二审,不可以撤审' GOTO ext END IF UPDATE u_cpcheck SET secflag = 0, secAuditemp = '', secAuditDate = :null_dt WHERE billid = :arg_billid AND secflag = 1 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 uf_save_chk (ref s_cpcheck arg_s_cpcheck, ref string arg_msg);//保存前的检查 Int rslt = 1 Long cnt CHOOSE CASE arg_s_cpcheck.billtype CASE 0 //自制 IF arg_s_cpcheck.relid = 0 THEN rslt = 0 arg_msg = "请选择指令单" GOTO ext END IF SELECT mtrlid, status, woodcode, pcode INTO :arg_s_cpcheck.mtrlid, :arg_s_cpcheck.status, :arg_s_cpcheck.woodcode, :arg_s_cpcheck.pcode FROM u_Order_ml WHERE orderid = :arg_s_cpcheck.relid And scid = :arg_s_cpcheck.scid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询指令单资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF CASE 1 //采购 IF arg_s_cpcheck.relid = 0 THEN rslt = 0 arg_msg = "请选择采购送检单" GOTO ext END IF //检查是否唯一生成 SELECT count(*) INTO :cnt FROM u_cpcheck WHERE scid = :arg_s_cpcheck.scid AND relid = :arg_s_cpcheck.relid AND Relprintid = :arg_s_cpcheck.relprintid And billtype = 1 and billid <> :arg_s_cpcheck.billid; IF sqlca.SQLCode <> 0 THEN cnt = 0 END IF IF cnt > 0 THEN //已经生成过采购送检单,不能重复生成 rslt = 0 arg_msg = "采购送检明细已有相关采购质检单,不能重复建单" GOTO ext END IF CASE 2 //外协 CASE 4 //采购收货单 IF arg_s_cpcheck.relid = 0 THEN rslt = 0 arg_msg = "请选择采购收货单" GOTO ext END IF //检查是否唯一生成 SELECT count(*) INTO :cnt FROM u_cpcheck WHERE scid = :arg_s_cpcheck.scid AND relid = :arg_s_cpcheck.relid AND Relprintid = :arg_s_cpcheck.relprintid And billtype = 4 and billid <> :arg_s_cpcheck.billid; IF sqlca.SQLCode <> 0 THEN cnt = 0 END IF IF cnt > 0 THEN //已经生成过收货质检单,不能重复生成 rslt = 0 arg_msg = "采购收货单明细已有相关收货质检单,不能重复建单" GOTO ext END IF END CHOOSE ext: RETURN rslt end function on uo_cpcheck.create call super::create TriggerEvent( this, "constructor" ) end on on uo_cpcheck.destroy TriggerEvent( this, "destructor" ) call super::destroy end on global type uo_incase from nonvisualobject end type