123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959 |
- $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
|