123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894 |
- $PBExportHeader$uo_taskwork_hz.sru
- forward
- global type uo_taskwork_hz from nonvisualobject
- end type
- end forward
- global type uo_taskwork_hz from nonvisualobject
- end type
- global uo_taskwork_hz uo_taskwork_hz
- type variables
- Long uo_billid
- String uo_billcode
- Int uo_option_taskwork_procode_order
- end variables
- forward prototypes
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
- public function integer p_getflag (long arg_billid, ref long arg_flag, 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 caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer save (s_taskwork_hz arg_s_taskwork, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer getinfo (long arg_billid, ref s_taskwork_hz_mx arg_s_mx[], ref long arg_arr_cnt, ref s_taskwork_hz_ordermx arg_s_ordermx[], ref long arg_arr_cntmx, ref string arg_msg)
- end prototypes
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);
- Int rslt = 1
- long ll_flag
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_taskwork_hz
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- WHERE u_taskwork_hz.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 p_getflag (long arg_billid, ref long arg_flag, ref string arg_msg);Int rslt = 1
- SELECT flag
- INTO :arg_flag
- FROM u_taskwork_hz
- 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 del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);int rslt = 1
- long ll_flag
- if arg_billid <= 0 then
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- if ll_flag <> 0 then
- rslt = 0
- arg_msg = '单据不是在待审核状态,不能删除'
- GOTO ext
- END IF
- DELETE FROM u_taskwork_hz_mx
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据工序明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_taskwork_hz_ordermx
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据计划明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_taskwork_hz
- 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
- long li_flag
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,li_flag,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 audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_flag
- uo_taskwork uo_taskwork_dq
- uo_taskwork_dq = Create uo_taskwork
- uo_taskwork_dq.if_getid_ture = False
- IF uo_option_taskwork_procode_order = -1000 THEN
- arg_msg = '选项:[064]计件单按生产计划工序,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag <> 0 THEN
- rslt = 0
- arg_msg = '单据不是在待审核状态,不可以再审'
- GOTO ext
- END IF
- //自动建立产品个人计件单
- s_taskwork_hz_mx s_mx[]
- s_taskwork_hz_ordermx s_ordermx[]
- Long ll_arr_cnt ,ll_arr_cntmx
- Long ll_i,ll_j
- IF getinfo(arg_billid,s_mx,ll_arr_cnt,s_ordermx,ll_arr_cntmx,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- DateTime ld_billdate
- Long ll_wageid,ll_wagemth,ll_scid
- String ls_dscrp,ls_relcode
- Decimal ls_workqty
- Long ll_orderid_arr[]
- String ls_procode_arr[]
- Decimal ld_proqty_arr[]
- Long ll_k,it_mx_pro = 0
- Decimal ld_amount
- Long ll_printid = 0
- String ls_billcode
- String ls_wpcode
- //查询单据信息
- SELECT scid,billdate ,wageid,wagemth,relcode,billcode
- INTO :ll_scid,:ld_billdate,:ll_wageid,:ll_wagemth,:ls_relcode,:ls_billcode
- FROM u_taskwork_hz
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据相关信息失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- //
- //不重复取工序
- FOR ll_i = 1 To ll_arr_cnt
- FOR ll_k = 1 To it_mx_pro
- IF ls_procode_arr[ll_k] = s_mx[ll_i].procode THEN
- GOTO _next
- END IF
- NEXT
- it_mx_pro++
- ls_procode_arr[it_mx_pro] = s_mx[ll_i].procode
- _next:
- NEXT
- //循环计划
- FOR ll_j = 1 To ll_arr_cntmx
- IF uo_taskwork_dq.newbegin(ll_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_taskwork_dq.orderid = s_ordermx[ll_j].orderid
- uo_taskwork_dq.billdate = ld_billdate
- uo_taskwork_dq.wageid = ll_wageid
- uo_taskwork_dq.mtrlid = s_ordermx[ll_j].mtrlid
- uo_taskwork_dq.qty = s_ordermx[ll_j].orderqty
- uo_taskwork_dq.dscrp = '由单据'+ls_billcode+'辅助自动生成'
- uo_taskwork_dq.relcode = ls_relcode
- uo_taskwork_dq.wagemth = ll_wagemth
- uo_taskwork_dq.relid = arg_billid
-
- IF ll_j <> ll_arr_cntmx THEN //如果不是最后一个计划,按计划扣减数量
-
- FOR ll_i = 1 To it_mx_pro
- IF uo_option_taskwork_procode_order = 1 THEN
- SELECT proqty INTO :ls_workqty
- FROM U_OrderRqwp
- WHERE scid = :ll_scid
- AND orderid = :s_ordermx[ll_j].orderid
- And procode = :ls_procode_arr[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询工序:'+s_mx[ll_i].procode+',计划数量失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- SELECT wpcode INTO :ls_wpcode
- FROM u_order_ml
- WHERE scid = :ll_scid
- And orderid = :s_ordermx[ll_j].orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令单工价表号失败,ID'+String(s_ordermx[ll_j].orderid) + ','+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ELSE
- SELECT top 1 workqty * :s_ordermx[ll_j].orderqty,wpcode INTO :ls_workqty,:ls_wpcode
- FROM u_sc_workprice
- WHERE mtrlid = :s_ordermx[ll_j].mtrlid
- And procode = :ls_procode_arr[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询单件产品工序数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- FOR ll_k = 1 To ll_arr_cnt
- IF s_mx[ll_k].procode = ls_procode_arr[ll_i] And s_mx[ll_k].amount > 0 And ls_workqty > 0 THEN
-
- IF s_mx[ll_k].amount > ls_workqty THEN
- ld_amount = ls_workqty
- s_mx[ll_k].amount = s_mx[ll_k].amount - ls_workqty
- ls_workqty = 0
- ELSE
- ld_amount = s_mx[ll_k].amount
- ls_workqty = ls_workqty - s_mx[ll_k].amount
- s_mx[ll_k].amount = 0
- END IF
-
- ll_printid++
- IF uo_taskwork_dq.acceptmx(s_mx[ll_k].empid,&
- s_mx[ll_k].empcode,&
- s_mx[ll_k].empname,&
- s_mx[ll_k].procode,&
- s_mx[ll_k].proname,&
- ld_amount,&
- s_mx[ll_k].workprice,&
- s_mx[ll_k].workhour,&
- s_mx[ll_k].mxdscrp,&
- arg_msg,&
- ll_printid,&
- s_mx[ll_k].status,&
- 0,'',0,&
- ls_wpcode) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF ls_workqty = 0 THEN
- GOTO _next2
- END IF
- END IF
- NEXT
- _next2:
- NEXT
- ELSE //如果是最后一个计划,将所有未分配完的数量分配完
- FOR ll_k = 1 To ll_arr_cnt
- IF s_mx[ll_k].amount > 0 THEN
- ll_printid++
- IF uo_taskwork_dq.acceptmx(s_mx[ll_k].empid,&
- s_mx[ll_k].empcode,&
- s_mx[ll_k].empname,&
- s_mx[ll_k].procode,&
- s_mx[ll_k].proname,&
- s_mx[ll_k].amount,&
- s_mx[ll_k].workprice,&
- s_mx[ll_k].workhour,&
- s_mx[ll_k].mxdscrp,&
- arg_msg,&
- ll_printid,&
- s_mx[ll_k].status,&
- 0,'',0,&
- ls_wpcode) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- END IF
-
- IF ll_printid > 0 THEN
- IF uo_taskwork_dq.Save(arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- ll_printid = 0
- NEXT
- //更新审核标记
- UPDATE u_taskwork_hz
- 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
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_taskwork_dq
- RETURN rslt
- end function
- public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_flag
- uo_taskwork uo_taskwork_dq
- uo_taskwork_dq = CREATE uo_taskwork
- DateTime null_dt
- SetNull(null_dt)
- IF arg_billid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,ll_flag,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag <> 1 THEN
- rslt = 0
- ARG_MSG = '单据不是在审核状态,不可以撤审'
- GOTO ext
- END IF
- String ls_billcode[]
- Long ll_scid[],ll_billid[]
- Long i,ll_i
- i = 1
- //删除相关自动生成的计件单
- DECLARE cur_billmx CURSOR FOR
- SELECT scid,billid,billcode
- FROM u_sc_taskwork
- Where relid = :arg_billid;
-
- OPEN cur_billmx;
- FETCH cur_billmx INTO :ll_scid[i],:ll_billid[i],:ls_billcode[i];
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_billmx INTO :ll_scid[i],:ll_billid[i],:ls_billcode[i];
- LOOP
- i = i - 1
- FOR ll_i = 1 TO i
- IF uo_taskwork_dq.del(ll_scid[ll_i],ll_billid[ll_i],ARG_MSG,false) = 0 THEN
- rslt = 0
- ARG_MSG = '删除自动建立的计件单 '+ls_billcode[ll_i]+' 失败,'+ARG_MSG
- GOTO ext
- END IF
- NEXT
- //更新审核标记
- UPDATE u_taskwork_hz
- SET auditingrep = '',
- auditingdate = :null_dt,
- flag = 0
- 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
- DESTROY uo_taskwork_dq
- RETURN rslt
- end function
- public function integer save (s_taskwork_hz arg_s_taskwork, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0
- DateTime server_dt
- Long ll_billid,it_mxbt,i,it_mxbt_order,j
- String ls_sccode,ls_billcode
- IF IsNull(arg_s_taskwork.scid) THEN arg_s_taskwork.scid = 0
- IF IsNull(arg_s_taskwork.billid) THEN arg_s_taskwork.billid = 0
- IF IsNull(arg_s_taskwork.rep) THEN arg_s_taskwork.rep = ''
- IF IsNull(arg_s_taskwork.dscrp) THEN arg_s_taskwork.dscrp = ''
- IF IsNull(arg_s_taskwork.relcode) THEN arg_s_taskwork.relcode = ''
- IF IsNull(arg_s_taskwork.wagemth) THEN arg_s_taskwork.wagemth = 0
- IF IsNull(arg_s_taskwork.wageid) THEN arg_s_taskwork.wageid = 0
- IF arg_s_taskwork.rep = '' THEN
- arg_msg = '请输入经手人'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_taskwork.wagemth = 0 THEN
- arg_msg = '请输入工资月份'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_taskwork.wageid = 0 THEN
- arg_msg = '请选择工资项目'
- 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_s_taskwork.arg_s_mx)
- IF it_mxbt <= 0 THEN
- rslt = 0
- arg_msg = "没有正确的工序明细内容"
- GOTO ext
- END IF
- it_mxbt_order = UpperBound(arg_s_taskwork.arg_s_ordermx)
- IF it_mxbt_order <= 0 THEN
- rslt = 0
- arg_msg = "没有正确的计划明细内容"
- GOTO ext
- END IF
- IF arg_s_taskwork.billid = 0 THEN
- ll_billid = f_sys_scidentity(0,"u_taskwork_hz","billid",arg_msg,TRUE,id_sqlca)
-
- IF ll_billid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_get_sccode(arg_s_taskwork.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- ls_billcode = getid(arg_s_taskwork.scid,ls_sccode + 'TH',Date(server_dt),FALSE,sqlca)
-
-
- IF ls_billcode = "err" THEN
- rslt = 0
- arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_taskwork_hz
- (scid,
- billid,
- billcode,
- billdate,
- rep,
- wagemth,
- wageid,
- relcode,
- dscrp,
- opdate,
- opemp)
- VALUES
- (:arg_s_taskwork.scid,
- :ll_billid,
- :ls_billcode,
- :arg_s_taskwork.billdate,
- :arg_s_taskwork.rep,
- :arg_s_taskwork.wagemth,
- :arg_s_taskwork.wageid,
- :arg_s_taskwork.relcode,
- :arg_s_taskwork.dscrp,
- getdate(),
- :arg_opemp);
- 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_taskwork_hz_mx
- (scid,
- billid,
- empid,
- procode,
- proname,
- empcode,
- empname,
- amount,
- workprice,
- workhour,
- mxdscrp,
- printid,
- status,
- proorder)
- VALUES
- (:arg_s_taskwork.scid,
- :ll_billid,
- :arg_s_taskwork.arg_s_mx[i].empid,
- :arg_s_taskwork.arg_s_mx[i].procode,
- :arg_s_taskwork.arg_s_mx[i].proname,
- :arg_s_taskwork.arg_s_mx[i].empcode,
- :arg_s_taskwork.arg_s_mx[i].empname,
- :arg_s_taskwork.arg_s_mx[i].amount,
- :arg_s_taskwork.arg_s_mx[i].workprice,
- :arg_s_taskwork.arg_s_mx[i].workhour,
- :arg_s_taskwork.arg_s_mx[i].mxdscrp,
- :arg_s_taskwork.arg_s_mx[i].printid,
- :arg_s_taskwork.arg_s_mx[i].status,
- :arg_s_taskwork.arg_s_mx[i].proorder);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- FOR j = 1 TO it_mxbt_order
- INSERT INTO u_taskwork_hz_ordermx
- (scid,
- billid,
- printid,
- orderid)
- VALUES
- (:arg_s_taskwork.scid,
- :ll_billid,
- :arg_s_taskwork.arg_s_ordermx[j].printid,
- :arg_s_taskwork.arg_s_ordermx[j].orderid);
- 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_taskwork_hz
- SET billdate = :arg_s_taskwork.billdate,
- rep = :arg_s_taskwork.rep,
- dscrp = :arg_s_taskwork.dscrp,
- relcode = :arg_s_taskwork.relcode,
- wagemth = :arg_s_taskwork.wagemth,
- wageid = :arg_s_taskwork.wageid,
- moddate = getdate(),
- modemp = :arg_opemp
- WHERE billid = :arg_s_taskwork.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_taskwork_hz_mx
- Where billid = :arg_s_taskwork.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_taskwork_hz_mx
- (scid,
- billid,
- empid,
- procode,
- proname,
- empcode,
- empname,
- amount,
- workprice,
- workhour,
- mxdscrp,
- printid,
- status,
- proorder)
- VALUES
- (:arg_s_taskwork.scid,
- :arg_s_taskwork.billid,
- :arg_s_taskwork.arg_s_mx[i].empid,
- :arg_s_taskwork.arg_s_mx[i].procode,
- :arg_s_taskwork.arg_s_mx[i].proname,
- :arg_s_taskwork.arg_s_mx[i].empcode,
- :arg_s_taskwork.arg_s_mx[i].empname,
- :arg_s_taskwork.arg_s_mx[i].amount,
- :arg_s_taskwork.arg_s_mx[i].workprice,
- :arg_s_taskwork.arg_s_mx[i].workhour,
- :arg_s_taskwork.arg_s_mx[i].mxdscrp,
- :arg_s_taskwork.arg_s_mx[i].printid,
- :arg_s_taskwork.arg_s_mx[i].status,
- :arg_s_taskwork.arg_s_mx[i].proorder);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- DELETE FROM u_taskwork_hz_ordermx
- Where billid = :arg_s_taskwork.billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有计划明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- FOR j = 1 TO it_mxbt_order
- INSERT INTO u_taskwork_hz_ordermx
- (scid,
- billid,
- printid,
- orderid)
- VALUES
- (:arg_s_taskwork.scid,
- :arg_s_taskwork.billid,
- :arg_s_taskwork.arg_s_ordermx[j].printid,
- :arg_s_taskwork.arg_s_ordermx[j].orderid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
- uo_billid = arg_s_taskwork.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 getinfo (long arg_billid, ref s_taskwork_hz_mx arg_s_mx[], ref long arg_arr_cnt, ref s_taskwork_hz_ordermx arg_s_ordermx[], ref long arg_arr_cntmx, ref string arg_msg);Int rslt = 1
- Long i = 1,j = 1 ,no_mxcheck = 0
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- DECLARE cur_mx CURSOR FOR
- SELECT u_rs_empinfo.Empcode,
- u_taskwork_hz_mx.procode,
- u_taskwork_hz_mx.Amount,
- u_taskwork_hz_mx.Workprice,
- u_taskwork_hz_mx.Workhour,
- u_taskwork_hz_mx.mxdscrp,
- u_taskwork_hz_mx.proname,
- u_taskwork_hz_mx.Empid,
- u_taskwork_hz_mx.printid,
- u_rs_empinfo.Empname ,
- u_taskwork_hz_mx.status
- FROM u_taskwork_hz_mx,
- u_rs_empinfo
- WHERE ( u_taskwork_hz_mx.Empid = u_rs_empinfo.empid )
- AND ( u_taskwork_hz_mx.billid = :arg_billid )
- Order By u_taskwork_hz_mx.printid;
- OPEN cur_mx;
- FETCH cur_mx INTO :arg_s_mx[i].empcode,:arg_s_mx[i].procode,
- :arg_s_mx[i].amount,:arg_s_mx[i].workprice,:arg_s_mx[i].workhour,
- :arg_s_mx[i].mxdscrp,:arg_s_mx[i].proname,:arg_s_mx[i].empid,
- :arg_s_mx[i].printid,:arg_s_mx[i].Empname,:arg_s_mx[i].status;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx INTO :arg_s_mx[i].empcode,:arg_s_mx[i].procode,
- :arg_s_mx[i].amount,:arg_s_mx[i].workprice,:arg_s_mx[i].workhour,
- :arg_s_mx[i].mxdscrp,:arg_s_mx[i].proname,:arg_s_mx[i].empid,
- :arg_s_mx[i].printid,:arg_s_mx[i].Empname,:arg_s_mx[i].status;
- LOOP
- CLOSE cur_mx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_taskwork_hz_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
- // //
- DECLARE cur_ordermx CURSOR FOR
- SELECT u_taskwork_hz_ordermx.printid,
- u_taskwork_hz_ordermx.orderid,
- u_Order_ml.mtrlid,
- u_Order_ml.orderqty
- FROM u_Order_ml RIGHT OUTER JOIN
- u_taskwork_hz_ordermx ON u_Order_ml.scid = u_taskwork_hz_ordermx.scid AND
- u_Order_ml.OrderID = u_taskwork_hz_ordermx.orderid
- Where u_taskwork_hz_ordermx.billid = :arg_billid;
-
- OPEN cur_ordermx;
- FETCH cur_ordermx INTO :arg_s_ordermx[j].printid,:arg_s_ordermx[j].orderid,
- :arg_s_ordermx[j].mtrlid,:arg_s_ordermx[j].orderqty;
- DO WHILE sqlca.SQLCode = 0
- j++
- FETCH cur_ordermx INTO :arg_s_ordermx[j].printid,:arg_s_ordermx[j].orderid,
- :arg_s_ordermx[j].mtrlid,:arg_s_ordermx[j].orderqty;
- LOOP
- CLOSE cur_ordermx;
- SELECT count(*) INTO :no_mxcheck
- FROM u_taskwork_hz_ordermx
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,工序明细数量"
- GOTO ext
- END IF
- IF j <> (no_mxcheck + 1) THEN
- rslt = 0
- arg_msg = "查询操作失败,计划明细内容"
- GOTO ext
- END IF
- arg_arr_cntmx = j - 1
- ext:
- RETURN rslt
- end function
- on uo_taskwork_hz.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_taskwork_hz.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;String arg_msg
- String str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('064',str_optionvalue,arg_msg)
- uo_option_taskwork_procode_order = Long(str_optionvalue)
- end event
|