1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123 |
- $PBExportHeader$uo_finish_tech.sru
- forward
- global type uo_finish_tech from nonvisualobject
- end type
- end forward
- global type uo_finish_tech from nonvisualobject
- end type
- global uo_finish_tech uo_finish_tech
- type variables
- long uo_billid
- string uo_billcode
- long wrkgrpid,scid
- datetime billdate
- string billcode,opemp,dscrp
- int flag, secflag
- string rep
- int uo_option_inware_mtrlcuscode
- int uo_option_taskplancode
- end variables
- forward prototypes
- public function integer save (s_finish_tech arg_tech, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_billid, ref string arg_msg)
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer getinfo (long arg_billid, ref s_finish_tech_mx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg)
- public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_getflag (long arg_billid, ref integer arg_flag, ref integer arg_secflag, ref string arg_msg)
- public function integer uof_find_cust (long arg_scid, long arg_orderid, ref long arg_cusid, ref string arg_plancode, ref string arg_mtrlcuscode, ref string arg_msg)
- public function integer p_getinfo (long arg_billid, ref string arg_msg)
- public function integer p_reset ()
- public function integer c_secaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_del_inware (long arg_inwareid, long arg_billid, long arg_printid, ref string arg_msg)
- public function integer p_create_inware (long arg_billid, long arg_printid, long arg_storageid, string arg_location, decimal arg_qty, string arg_mxdscrp, ref string arg_msg)
- public function integer secaudit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer save (s_finish_tech arg_tech, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0
- DateTime server_dt
- Long ll_billid,it_mxbt,i
- String ls_sccode,ls_billcode
- IF IsNull(arg_tech.scid) THEN arg_tech.scid = 0
- IF IsNull(arg_tech.billid) THEN arg_tech.billid = 0
- IF IsNull(arg_tech.rep) THEN arg_tech.rep = ''
- IF IsNull(arg_tech.wrkgrpid) THEN arg_tech.wrkgrpid = 0
- IF IsNull(arg_tech.dscrp) THEN arg_tech.dscrp = ''
- IF arg_tech.rep = '' THEN
- rslt = 0
- arg_msg = '请填写经手人'
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_dt From u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- it_mxbt = UpperBound(arg_tech.arg_s_mx)
- IF it_mxbt <= 0 THEN
- rslt = 0
- arg_msg = "没有正确明细内容"
- GOTO ext
- END IF
- IF arg_tech.billid = 0 THEN
- ll_billid = f_sys_scidentity(0,"u_finish_tech","billid",arg_msg,True,id_sqlca)
-
- IF ll_billid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_get_sccode(arg_tech.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ls_billcode = getid(arg_tech.scid,ls_sccode + 'FT',Date(server_dt),False,sqlca)
-
-
- IF ls_billcode = "err" THEN
- rslt = 0
- arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_finish_tech
- (scid,
- billid,
- billcode,
- rep,
- billdate,
- wrkgrpid,
- dscrp,
- opemp,
- opdate)
- VALUES (:arg_tech.scid,
- :ll_billid,
- :ls_billcode,
- :arg_tech.rep,
- :arg_tech.billdate,
- :arg_tech.wrkgrpid,
- :arg_tech.dscrp,
- :arg_opemp,
- :server_dt);
- 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_finish_tech_mx
- (scid,
- billid,
- printid,
- relid,
- qty,
- mxdscrp,
- storageid,
- location)
- VALUES (:arg_tech.scid,
- :ll_billid,
- :arg_tech.arg_s_mx[i].printid,
- :arg_tech.arg_s_mx[i].relid,
- :arg_tech.arg_s_mx[i].qty,
- :arg_tech.arg_s_mx[i].mxdscrp,
- :arg_tech.arg_s_mx[i].storageid,
- :arg_tech.arg_s_mx[i].location);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- uo_billid = ll_billid
- uo_billcode = ls_billcode
-
- ELSE
- UPDATE u_finish_tech
- SET rep = :arg_tech.rep,
- billdate = :arg_tech.billdate,
- wrkgrpid = :arg_tech.wrkgrpid,
- dscrp = :arg_tech.dscrp,
- modemp = :arg_opemp,
- moddate = :server_dt
- WHERE billid = :arg_tech.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_finish_tech_mx
- WHERE billid = :arg_tech.billid;
- 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_finish_tech_mx
- (scid,
- billid,
- printid,
- relid,
- qty,
- mxdscrp,
- storageid,
- location)
- VALUES (:arg_tech.scid,
- :arg_tech.billid,
- :arg_tech.arg_s_mx[i].printid,
- :arg_tech.arg_s_mx[i].relid,
- :arg_tech.arg_s_mx[i].qty,
- :arg_tech.arg_s_mx[i].mxdscrp,
- :arg_tech.arg_s_mx[i].storageid,
- :arg_tech.arg_s_mx[i].location);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- uo_billid = arg_tech.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 updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
- Int li_flag,li_secflag
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,li_flag,li_secflag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag = 1 THEN
- rslt = 0
- arg_msg = '单据已经审核,不可以修改,要修改请先撤销审核'
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag,li_secflag
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,li_flag,li_secflag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 0 THEN
- rslt = 0
- arg_msg = '单据不是待审核状态,不能删除'
- GOTO ext
- END IF
- DELETE FROM u_finish_tech_mx
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_finish_tech
- 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 getinfo (long arg_billid, ref s_finish_tech_mx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg);Int rslt = 1
- Long i = 1,no_mxcheck = 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
- Declare cur_mx Cursor For
- Select u_finish_tech_mx.scid,
- u_finish_tech_mx.printid,
- u_finish_tech_mx.relid,
- u_finish_tech_mx.qty,
- u_finish_tech_mx.mxdscrp,
- u_OrderMtrl_workgroup_tree.iflast,
- u_finish_tech_mx.storageid,
- u_finish_tech_mx.location,
- u_finish_tech_mx.relinwareid,
- u_finish_tech_mx.relinwarecode
- From u_OrderMtrl_workgroup_tree RIGHT Outer JOIN
- u_order_plan_tech ON
- u_OrderMtrl_workgroup_tree.scid = u_order_plan_tech.scid And
- u_OrderMtrl_workgroup_tree.orderid = u_order_plan_tech.orderid And
- u_OrderMtrl_workgroup_tree.printid = u_order_plan_tech.printid RIGHT Outer JOIN
- u_finish_tech_mx ON u_order_plan_tech.billid = u_finish_tech_mx.relid
- Where u_finish_tech_mx.billid = :arg_billid
- Order By u_finish_tech_mx.printid;
-
- Open cur_mx;
- Fetch cur_mx Into :arg_ref_mx[i].scid,
- :arg_ref_mx[i].printid,
- :arg_ref_mx[i].relid,
- :arg_ref_mx[i].qty,
- :arg_ref_mx[i].mxdscrp,
- :arg_ref_mx[i].iflast,
- :arg_ref_mx[i].storageid,
- :arg_ref_mx[i].location,
- :arg_ref_mx[i].relinwareid,
- :arg_ref_mx[i].relinwarecode;
-
- Do While sqlca.SQLCode = 0
- i++
- Fetch cur_mx Into :arg_ref_mx[i].scid,
- :arg_ref_mx[i].printid,
- :arg_ref_mx[i].relid,
- :arg_ref_mx[i].qty,
- :arg_ref_mx[i].mxdscrp,
- :arg_ref_mx[i].iflast,
- :arg_ref_mx[i].storageid,
- :arg_ref_mx[i].location,
- :arg_ref_mx[i].relinwareid,
- :arg_ref_mx[i].relinwarecode;
- Loop
- Close cur_mx;
- //检验明细是否读入完整
- Select count(*) Into :no_mxcheck
- From u_finish_tech_mx
- 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
- arg_arr_cnt = i - 1
- 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
- Int li_flag,li_secflag
- s_finish_tech_mx s_mx[]
- Long ll_arr_cnt,ll_i
- uo_order_plan_tech uo_plan
- uo_plan = Create uo_order_plan_tech
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,li_flag,li_secflag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 0 THEN
- rslt = 0
- arg_msg = '单据不是待审核状态,不能审核'
- GOTO ext
- END IF
- IF getinfo(arg_billid,s_mx,ll_arr_cnt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- FOR ll_i = 1 To ll_arr_cnt
- IF s_mx[ll_i].relid > 0 THEN
- IF uo_plan.addcmpqty(s_mx[ll_i].relid,s_mx[ll_i].qty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- UPDATE u_finish_tech
- SET flag = 1,
- auditemp = :arg_opemp,
- auditdate = getdate()
- WHERE billid = :arg_billid
- And flag = 0 ;
- IF sqlca.SQLCode <> 0 And sqlca.SQLNRows <= 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
- Destroy uo_plan
- RETURN rslt
- end function
- public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag,li_secflag
- s_finish_tech_mx s_mx[]
- Long ll_arr_cnt,ll_i
- DateTime null_dt
- SetNull(null_dt)
- uo_order_plan_tech uo_plan
- uo_plan = Create uo_order_plan_tech
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,li_flag,li_secflag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 1 THEN
- rslt = 0
- arg_msg = '单据不是已审核状态,不能撤审'
- GOTO ext
- END IF
- IF getinfo(arg_billid,s_mx,ll_arr_cnt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- FOR ll_i = 1 To ll_arr_cnt
- IF s_mx[ll_i].relid > 0 THEN
- IF uo_plan.addcmpqty(s_mx[ll_i].relid,0 - s_mx[ll_i].qty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- UPDATE u_finish_tech
- SET flag = 0,
- auditemp = '',
- auditdate = :null_dt
- WHERE billid = :arg_billid
- And flag = 1 ;
- IF sqlca.SQLCode <> 0 And sqlca.SQLNRows <= 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
- Destroy uo_plan
- RETURN rslt
- end function
- public function integer p_getflag (long arg_billid, ref integer arg_flag, ref integer arg_secflag, ref string arg_msg);Int rslt = 1
- SELECT flag,secflag
- INTO :arg_flag,:arg_secflag
- FROM u_finish_tech
- 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 uof_find_cust (long arg_scid, long arg_orderid, ref long arg_cusid, ref string arg_plancode, ref string arg_mtrlcuscode, ref string arg_msg);Int rslt = 1
- IF uo_option_inware_mtrlcuscode = -1000 THEN
- rslt = 0
- arg_msg = '选项:[138]生产进仓单产品批号策略按指令单号,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_taskplancode = -1000 THEN
- rslt = 0
- arg_msg = '选项:[038]使用客户批号库存,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- Long li_ordertype,cnt
- Long ll_cusid
- String ls_cuscode,ls_cusname,ls_plancode
- Long ll_mtrlid,ll_mtrlid_p,ll_porderid
- Boolean lb_ifsameorder
- Int li_ifmtrlcuscode
- String ls_ordercode
- SELECT ordercode,ordertype,mtrlid,porderid INTO :ls_ordercode,:li_ordertype,:ll_mtrlid,:ll_porderid
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_ordertype = 0 THEN
- ll_cusid = 0
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_order_ml_mx
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt <> 1 THEN
- ll_cusid = 0
- GOTO ext
- END IF
- SELECT ifmtrlcuscode INTO :li_ifmtrlcuscode
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料是否使用产品批号属性失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF uo_option_inware_mtrlcuscode = 1 AND li_ifmtrlcuscode = 1 THEN
- arg_mtrlcuscode = ls_ordercode
- ELSE
- arg_mtrlcuscode = ''
- END IF
- IF li_ordertype = 4 THEN
- SELECT mtrlid INTO :ll_mtrlid_p
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND orderid = :ll_porderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ll_mtrlid_p = ll_mtrlid THEN
- lb_ifsameorder = TRUE
- SELECT u_cust.cusid,
- u_cust.cuscode,
- u_cust.name,
- u_order_ml.taskrelcode
- INTO
- :ll_cusid,
- :ls_cuscode,
- :ls_cusname,
- :ls_plancode
- FROM u_cust,u_order_ml
- WHERE u_cust.cusid = u_order_ml.cusid
- AND u_order_ml.scid = :arg_scid
- AND u_order_ml.orderid = :ll_porderid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
-
- ELSE
- SELECT u_cust.cusid,
- u_cust.cuscode,
- u_cust.name,
- u_order_ml.taskrelcode
- INTO
- :ll_cusid,
- :ls_cuscode,
- :ls_cusname,
- :ls_plancode
- FROM u_cust,u_order_ml
- WHERE u_cust.cusid = u_order_ml.cusid
- AND u_order_ml.scid = :arg_scid
- AND u_order_ml.orderid = :arg_orderid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- IF lb_ifsameorder AND uo_option_taskplancode = 1 THEN
- arg_plancode = ls_plancode
- ELSE
- arg_plancode = ''
- END IF
- ext:
- arg_cusid = ll_cusid
- RETURN rslt
- end function
- public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
- If arg_billid <= 0 Then
- rslt = 0
- arg_msg = '错误生产任务单唯一码'
- Goto ext
- End If
- Select scid,
- billcode,
- rep,
- billdate,
- wrkgrpid,
- dscrp,
- opemp,
- flag,
- secflag
- Into
- :scid,
- :billcode,
- :rep,
- :billdate,
- :wrkgrpid,
- :dscrp,
- :opemp,
- :flag,
- :secflag
- From u_finish_tech
- Where billid = :arg_billid ;
-
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询生产任务完工单内容失败(错误生产任务完工单唯一码)'
- Goto ext
- End If
- ext:
- IF rslt = 0 THEN p_reset()
- Return rslt
- end function
- public function integer p_reset ();scid = 0
- billcode = ''
- rep = ''
- setnull(billdate)
- wrkgrpid = 0
- dscrp = ''
- opemp = ''
- flag = 0
- secflag = 0
- return 1
- end function
- public function integer c_secaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,i
- DateTime null_dt
- SetNull(null_dt)
- s_finish_tech_mx s_mx[]
- Long ll_arr_cnt
- IF arg_billid = 0 THEN
- rslt = 0
- arg_msg = "没有撤审对象"
- GOTO ext
- END IF
- IF getinfo(arg_billid,s_mx,ll_arr_cnt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag <> 1 THEN
- rslt = 0
- arg_msg = "确认状态有误,请核对"
- GOTO ext
- END IF
- IF secflag <> 1 THEN
- rslt = 0
- arg_msg = "只有在已仓库审核状态才可以执行仓库撤审,请核对"
- GOTO ext
- END IF
- UPDATE u_finish_tech
- SET secauditrep = '',
- secauditdate = :null_dt,
- secflag = 0
- WHERE billid = :arg_billid
- AND flag = 1
- AND secflag = 1;
- IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致完工单仓库撤审操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- FOR i = 1 TO ll_arr_cnt
- IF s_mx[i].relinwareid > 0 THEN
- IF p_del_inware(s_mx[i].relinwareid,arg_billid,s_mx[i].printid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- p_reset()
- RETURN rslt
- end function
- public function integer p_del_inware (long arg_inwareid, long arg_billid, long arg_printid, ref string arg_msg);Int rslt = 1
- Long ll_cnt,ll_flag
- String ls_inwarecode
- uo_inware uo_ware
- uo_ware = Create uo_inware
- uo_ware.commit_transaction = sqlca
- uo_ware.if_getid_ture = False
- If arg_inwareid <= 0 Then
- rslt = 0
- arg_msg = '错误的进仓单ID'
- Goto ext
- End If
- Select count(*)
- Into :ll_cnt
- From u_inware
- Where inwareid = :arg_inwareid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致查询相关进仓单失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- If ll_cnt = 0 Then
- rslt = 1
- Goto ext
- ElseIf ll_cnt > 0 Then
- Select flag
- Into :ll_flag
- From u_inware
- Where inwareid = :arg_inwareid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致查询相关进仓单审核标记失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
- If ll_flag = 1 Then
- rslt = 0
- arg_msg = '第'+String(arg_printid)+'行,相关进仓单已经审核,请先撤审'
- Goto ext
-
- // IF uo_ware.getinfo(scid,arg_inwareid,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF uo_ware.c_auditing(false,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- End If
- If uo_ware.del(scid,arg_inwareid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- Update u_finish_tech_mx
- Set relinwareid = 0,
- relinwarecode = ''
- Where billid = :arg_billid And
- printid = :arg_printid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新完工单明细相关进仓单失败'
- Goto ext
- End If
- ext:
- Destroy uo_ware
- If rslt = 0 Then
- Rollback;
- End If
- Return rslt
- end function
- public function integer p_create_inware (long arg_billid, long arg_printid, long arg_storageid, string arg_location, decimal arg_qty, string arg_mxdscrp, ref string arg_msg);Long rslt = 1
- Long i
- Long ll_wrkid,mtrlid,orderid,balctype,cusid,ll_ref_inwareid
- String status,woodcode,pcode,mtrlcode,unit,ls_ref_inwarecode
- String ls_plancode,ls_mtrlcuscode
- Decimal ld_planprice
- uo_inware uo_ware
- uo_ware = Create uo_inware
- uo_ware.commit_transaction = sqlca
- uo_ware.if_getid_ture = False
- Select storageid
- Into :ll_wrkid
- From u_sc_workgroup
- Where wrkgrpid = :wrkgrpid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查找工组对应车间失败'
- Goto ext
- End If
- Select u_Order_ml.mtrlid,
- u_Order_ml.status_mode,
- u_Order_ml.woodcode,
- u_Order_ml.pcode,
- u_mtrldef.mtrlcode,
- u_Order_ml.OrderID,
- u_mtrldef.unit
- Into :mtrlid,
- :status,
- :woodcode,
- :pcode,
- :mtrlcode,
- :orderid,
- :unit
- From u_finish_tech_mx LEFT Outer JOIN
- u_order_plan_tech LEFT Outer JOIN
- u_mtrldef Inner JOIN
- u_Order_ml ON u_mtrldef.mtrlid = u_Order_ml.mtrlid ON
- u_order_plan_tech.scid = u_Order_ml.scid And
- u_order_plan_tech.orderid = u_Order_ml.OrderID ON
- u_finish_tech_mx.relid = u_order_plan_tech.billid
- Where u_finish_tech_mx.billid = :arg_billid And
- u_finish_tech_mx.printid = :arg_printid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询明细信息失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Select balctype
- Into :balctype
- From u_storage
- Where storageid = :arg_storageid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询仓库资料失败'
- Goto ext
- End If
- f_get_planprice_mtrl(mtrlid,status,woodcode,pcode,ld_planprice)
- If balctype = 1 Then
- If uof_find_cust(scid,orderid,cusid,ls_plancode,ls_mtrlcuscode,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- If uo_ware.newbegin(scid,3,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- uo_ware.indate = billdate
- uo_ware.inrep = opemp
- uo_ware.part = billcode
- uo_ware.dscrp = ''
- uo_ware.storageid = arg_storageid
- uo_ware.sptname = '工序完工单自动生成'
- uo_ware.relid = ll_wrkid
- If mtrlid > 0 Then
- If uo_ware.acceptmx(1,&
- mtrlid,&
- mtrlcode,&
- ls_plancode,&
- status,&
- arg_qty,&
- ld_planprice,&
- 1,&
- arg_mxdscrp,&
- arg_msg,&
- 0,&
- orderid,&
- 1,&
- woodcode,&
- pcode,&
- cusid,&
- unit,&
- 1,arg_qty,0,0,'','',0,0,ls_mtrlcuscode,arg_location,&
- arg_qty,&
- 0) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- If uo_ware.Save(False,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- ll_ref_inwareid = uo_ware.inwareid
- ls_ref_inwarecode = uo_ware.inwarecode
- //IF uo_ware.getinfo(scid,ll_ref_inwareid,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF uo_ware.auditing(false,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- Update u_finish_tech_mx
- Set relinwareid = :ll_ref_inwareid,
- relinwarecode = :ls_ref_inwarecode
- Where billid = :arg_billid And
- printid = :arg_printid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新完工单明细相关进仓单失败'
- Goto ext
- End If
- ext:
- Destroy uo_ware
- If rslt = 0 Then
- Rollback;
- End If
- Return rslt
- end function
- public function integer secaudit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1 ,i
- Long ll_taskid
- Int li_flag,li_secflag
- String ls_taskcode
- s_finish_tech_mx s_mx[]
- Long ll_arr_cnt
- If arg_billid = 0 Then
- rslt = 0
- arg_msg = "没有审核对象"
- Goto ext
- End If
- IF getinfo(arg_billid,s_mx,ll_arr_cnt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- If flag <> 1 Then
- rslt = 0
- arg_msg = "完工单只有在已确认状态才可以执行仓库审核"
- Goto ext
- End If
- If secflag <> 0 Then
- rslt = 0
- arg_msg = "完工单只有在待仓库核状态才可以执行仓库审核"
- Goto ext
- End If
- Update u_finish_tech
- Set secauditrep = :arg_opemp,
- secauditdate = getdate(),
- secflag = 1
- Where billid = :arg_billid
- And flag = 1
- And secflag = 0;
- If sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致完工单仓库审批操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- FOR i = 1 TO ll_arr_cnt
- IF s_mx[i].iflast = 1 AND s_mx[i].storageid > 0 THEN
- IF p_create_inware(arg_billid,s_mx[i].printid,s_mx[i].storageid,s_mx[i].location,s_mx[i].qty,s_mx[i].mxdscrp,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- ext:
- If rslt = 0 Then
- Rollback;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit;
- End If
- p_reset()
- Return rslt
- end function
- on uo_finish_tech.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_finish_tech.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;String str_optionvalue,arg_msg
- f_get_sys_option_value('138',str_optionvalue,arg_msg)
- uo_option_inware_mtrlcuscode = Long(str_optionvalue)
- f_get_sys_option_value('038',str_optionvalue,arg_msg)
- uo_option_taskplancode = Long(str_optionvalue)
- end event
|