12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073 |
- $PBExportHeader$uo_saletaskmx_change.sru
- forward
- global type uo_saletaskmx_change from nonvisualobject
- end type
- end forward
- global type uo_saletaskmx_change from nonvisualobject
- end type
- global uo_saletaskmx_change uo_saletaskmx_change
- type variables
- Long uo_billid
- String uo_billcode
- end variables
- forward prototypes
- 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_saletaskmx_change arg_s_change, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer getinfo (long arg_billid, ref s_saletaskmx_changemx arg_ref_changemx[], ref long arg_arr_cnt, ref string arg_msg)
- public function integer p_getflag (long arg_billid, ref s_saletaskmx_change arg_s_change, ref string arg_msg)
- public function integer affirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer caffirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- 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
- s_saletaskmx_change arg_change
- IF p_getflag(arg_billid,arg_change,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- if arg_change.affirmflag <> 0 then
- rslt = 0
- arg_msg = '单据不是在待审核状态,不能删除'
- GOTO ext
- END IF
- if arg_change.flag <> 0 then
- rslt = 0
- arg_msg = '单据不是在待审核状态,不能删除'
- GOTO ext
- END IF
- DELETE FROM u_saletaskmx_changemx
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_saletaskmx_change
- 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
- s_saletaskmx_change arg_change
- IF p_getflag(arg_billid,arg_change,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_change.flag = 1 THEN
- rslt = 0
- arg_msg = '单据已经审核,不可以修改,要修改请先撤销审核'
- GOTO ext
- END IF
- IF arg_change.affirmflag = 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
- Long ll_mtrlid,cnt,ll_cnt
- Int li_ordertype_mtrl,li_statusflag,li_ifpackpro
- String ls_ordercode,ls_ordercode_str
- If arg_billid <= 0 Then
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- Goto ext
- End If
- s_saletaskmx_change arg_change
- If p_getflag(arg_billid,arg_change,ARG_MSG) = 0 Then
- rslt = 0
- Goto ext
- End If
- If f_aps_mrp_cklock(arg_change.scid,ARG_MSG) = 0 Then
- rslt = 0
- Goto ext
- End If
- s_saletaskmx_changemx arg_changmx[]
- Long it_max,i
- If getinfo(arg_billid,arg_changmx,it_max,ARG_MSG) = 0 Then
- rslt = 0
- Goto ext
- End If
- If arg_change.affirmflag <> 1 Then
- rslt = 0
- ARG_MSG = '单据没有初审,不可以终审'
- Goto ext
- End If
- If arg_change.flag <> 0 Then
- rslt = 0
- ARG_MSG = '单据不是在待审核状态,不可以再审'
- Goto ext
- End If
- //dyy2014-07-26 检查明细,如果没有主计划的明细,检查订单是否已下生产计划,如果是,要求用户修改单据,重新生成明细
- cnt = 0
- For i = 1 To it_max
- If arg_changmx[i].mxtype = 0 Then
- cnt++
- End If
- Next
- //明细没有主计划类型,检查实际是否存在订单相关的主生产计划
- If cnt = 0 Then
- Select count(*)
- Into :ll_cnt
- From u_Order_ml
- Where u_Order_ml.scid = :arg_change.scid And
- u_Order_ml.taskid = :arg_change.taskid And
- u_Order_ml.taskmxid = :arg_change.printid And
- u_Order_ml.ordertype <> 4 ;
- If sqlca.SQLCode <> 0 Then
- ARG_MSG = '查询订单明细是否已有主生产计划失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If ll_cnt > 0 Then
- rslt = 0
- ARG_MSG = '订单明细已有生产计划,单据明细没有生产计划类型的明细,请修改单据,执行单据功能-重新生成明细功能'
- Goto ext
- End If
- End If
- //
- //yyx2013-7-29
- cnt = 0
- Select count(*) Into :cnt
- From u_mtrlware_assign
- Where u_mtrlware_assign.assigntype = 1
- And u_mtrlware_assign.scid = :arg_change.scid
- And u_mtrlware_assign.Relbillid = :arg_change.taskid
- And u_mtrlware_assign.Relprintid = :arg_change.printid;
- If sqlca.SQLCode <> 0 Then
- ARG_MSG = '查询订单明细是否已有库存分配失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- If cnt > 0 Then
- ARG_MSG = '订单明细已有库存分配,操作取消,如需变更,请先取消库存分配'
- rslt = 0
- Goto ext
- End If
- //yyx2013-7-29_end
- Update u_SaleTaskMx
- Set status = :arg_change.newstatus,
- pcode = :arg_change.newpcode,
- woodcode = :arg_change.newwoodcode,
- mxdscrp = :arg_change.newmxdscrp,
- mxdscrp2 = :arg_change.newmxdscrp2,
- changedscrp = :arg_change.billcode
- Where u_SaleTaskMx.scid = :arg_change.scid And
- u_SaleTaskMx.taskid = :arg_change.taskid And
- u_SaleTaskMx.printid = :arg_change.printid ;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- ARG_MSG = "因网络或其它原因导致更新销售订单明细操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- Select u_SaleTaskMx.mtrlid,u_mtrldef.ordertype,u_mtrldef.statusflag,u_mtrldef.ifpackpro
- Into :ll_mtrlid,:li_ordertype_mtrl,:li_statusflag,:li_ifpackpro
- From u_SaleTaskMx,u_mtrldef
- Where u_SaleTaskMx.mtrlid = u_mtrldef.mtrlid And
- u_SaleTaskMx.scid = :arg_change.scid And
- u_SaleTaskMx.taskid = :arg_change.taskid And
- u_SaleTaskMx.printid = :arg_change.printid ;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- ARG_MSG = "因网络或其它原因导致更新销售订单明细操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //检查生产计划/指令单是否已开条码生成单,有则要求作废
- cnt = 0
- For i = 1 To it_max
- If arg_changmx[i].mxtype = 0 Or arg_changmx[i].mxtype = 1 Then
- Select count(*)
- Into :ll_cnt
- From u_getbar Inner JOIN
- u_mtrlware_mx ON u_getbar.getbarid = u_mtrlware_mx.getbarid
- Where u_getbar.scid = :arg_changmx[i].scid
- And u_getbar.orderid = :arg_changmx[i].orderid
- And u_getbar.ifrel = 1
- And u_mtrlware_mx.isuse = 1;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- ARG_MSG = '查询明细生产计划/指令单是否已开条码生成单失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- If ll_cnt > 0 Then
- Select ordercode
- Into :ls_ordercode
- From u_order_ml
- Where scid = :arg_changmx[i].scid
- And orderid = :arg_changmx[i].orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- ARG_MSG = '第'+String(i)+'行,查询明细生产计划/指令单信息失败,'+sqlca.SQLErrText
- Goto ext
- End If
- cnt = cnt + ll_cnt
- ls_ordercode_str = ls_ordercode+ ',' + ls_ordercode_str
- End If
-
- End If
- Next
- If cnt > 0 Then
- rslt = 0
- ARG_MSG = '相关生产计划/指令单已开条码生成单,请先作废,单号:'+ls_ordercode_str
- Goto ext
- End If
- For i = 1 To it_max
- If arg_changmx[i].mxtype = 2 Then //申购
- Update u_requestbuymx
- Set status = :arg_change.newstatus,
- woodcode = :arg_change.newwoodcode,
- pcode = :arg_change.newpcode,
- mxdscrp = :arg_changmx[i].newdscrp
- Where scid = :arg_changmx[i].scid And
- requestbuyid = :arg_changmx[i].orderid And
- printid = :arg_changmx[i].Relprintid;
-
- ElseIf arg_changmx[i].mxtype = 3 Then //采购
- Update u_buyTaskMx
- Set status = :arg_change.newstatus,
- woodcode = :arg_change.newwoodcode,
- pcode = :arg_change.newpcode,
- dscrp = :arg_changmx[i].newdscrp
- Where scid = :arg_changmx[i].scid And
- taskid = :arg_changmx[i].orderid And
- printid = :arg_changmx[i].Relprintid;
-
- Else
- If li_statusflag = 2 And li_ifpackpro = 4 Then
- Update u_Order_ml
- Set woodcode = :arg_change.newwoodcode,
- pcode = :arg_change.newpcode,
- dscrp = :arg_changmx[i].newdscrp,
- thdscrp = :arg_changmx[i].newthdscrp,
- secdscrp = :arg_changmx[i].newsecdscrp,
- changedscrp = :arg_change.billcode
- Where scid = :arg_changmx[i].scid And
- orderid = :arg_changmx[i].orderid;
- Else
- Update u_Order_ml
- Set status_mode = :arg_change.newstatus,
- woodcode = :arg_change.newwoodcode,
- pcode = :arg_change.newpcode,
- dscrp = :arg_changmx[i].newdscrp,
- thdscrp = :arg_changmx[i].newthdscrp,
- secdscrp = :arg_changmx[i].newsecdscrp,
- changedscrp = :arg_change.billcode
- Where scid = :arg_changmx[i].scid And
- orderid = :arg_changmx[i].orderid;
- End If
- End If
-
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- If arg_changmx[i].mxtype = 2 Then //申购
- ARG_MSG = "因网络或其它原因导致更新成品申购单操作失败"+"~n"+sqlca.SQLErrText
- ElseIf arg_changmx[i].mxtype = 3 Then //采购
- ARG_MSG = "因网络或其它原因导致更新成品采购订单单操作失败"+"~n"+sqlca.SQLErrText
- Else
- ARG_MSG = "因网络或其它原因导致更新主计划/排产指令操作失败"+"~n"+sqlca.SQLErrText
- End If
- Goto ext
- End If
-
- If arg_changmx[i].mxtype = 0 Then
- Update u_OrderRqMtrl
- Set status = :arg_change.newstatus,
- pcode = :arg_change.newpcode,
- woodcode = :arg_change.newwoodcode
- Where scid = :arg_changmx[i].scid And
- orderid = :arg_changmx[i].orderid And
- mtrlid = :ll_mtrlid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- ARG_MSG = "因网络或其它原因导致更新生产计划用料需求操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- // ELSE
- // IF li_ordertype_mtrl = 1 THEN
- // IF sqlca.SQLNRows = 0 THEN
- // rslt = 0
- // ARG_MSG = "订单产品为分离排产产品,更新主生产计划分离排产自制需求0行,请检查(可能主生产计划未计算用料)"
- // GOTO ext
- // END IF
- // END IF
- End If
- End If
-
- Next
- //更新审核标记
- Update u_saletaskmx_change
- Set auditemp = :arg_opemp,
- auditdate = 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
- Return rslt
- end function
- public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_flag
- DateTime null_dt
- SetNull(null_dt)
- IF arg_billid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- s_saletaskmx_change arg_change
- IF p_getflag(arg_billid,arg_change,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF f_aps_mrp_cklock(arg_change.scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_change.flag <> 1 THEN
- rslt = 0
- ARG_MSG = '单据不是在审核状态,不可以撤审'
- GOTO ext
- END IF
- //更新审核标记
- UPDATE u_saletaskmx_change
- SET auditemp = '',
- auditdate = :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
- RETURN rslt
- end function
- public function integer save (s_saletaskmx_change arg_s_change, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0
- DateTime server_dt
- Decimal ld_saletaskmx_mqty
- Long ll_billid,it_mxbt,i
- Int li_ordertype_mtrl
- String ls_sccode,ls_billcode
- IF IsNull(arg_s_change.scid) THEN arg_s_change.scid = 0
- IF IsNull(arg_s_change.billid) THEN arg_s_change.billid = 0
- IF IsNull(arg_s_change.rep) THEN arg_s_change.rep = ''
- IF IsNull(arg_s_change.relcode) THEN arg_s_change.relcode = ''
- IF IsNull(arg_s_change.taskid) THEN arg_s_change.taskid = 0
- IF IsNull(arg_s_change.printid) THEN arg_s_change.printid = 0
- IF IsNull(arg_s_change.oldstatus) THEN arg_s_change.oldstatus = ''
- IF IsNull(arg_s_change.oldwoodcode) THEN arg_s_change.oldwoodcode = ''
- IF IsNull(arg_s_change.oldpcode) THEN arg_s_change.oldpcode = ''
- IF IsNull(arg_s_change.oldmxdscrp) THEN arg_s_change.oldmxdscrp = ''
- IF IsNull(arg_s_change.oldmxdscrp2) THEN arg_s_change.oldmxdscrp2 = ''
- IF IsNull(arg_s_change.newstatus) THEN arg_s_change.newstatus = ''
- IF IsNull(arg_s_change.newwoodcode) THEN arg_s_change.newwoodcode = ''
- IF IsNull(arg_s_change.newpcode) THEN arg_s_change.newpcode = ''
- IF IsNull(arg_s_change.newmxdscrp) THEN arg_s_change.newmxdscrp = ''
- IF IsNull(arg_s_change.newmxdscrp2) THEN arg_s_change.newmxdscrp2 = ''
- IF IsNull(arg_s_change.dscrp) THEN arg_s_change.dscrp = ''
- IF arg_s_change.rep = '' THEN
- arg_msg = '请输入经手人'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_change.taskid = 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_change.arg_s_changemx)
- SELECT u_saletaskmx.mqty,u_mtrldef.ordertype
- INTO :ld_saletaskmx_mqty,:li_ordertype_mtrl
- FROM u_saletaskmx,u_mtrldef
- WHERE u_saletaskmx.mtrlid = u_mtrldef.mtrlid
- AND u_saletaskmx.scid = :arg_s_change.scid
- AND u_saletaskmx.taskid = :arg_s_change.taskid
- And u_saletaskmx.printid = :arg_s_change.printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询订单明细调度是否调库存失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //IF ld_saletaskmx_mqty = 0 THEN
- // IF it_mxbt <= 0 THEN
- // rslt = 0
- // arg_msg = "没有正确明细内容"
- // GOTO ext
- // END IF
- //END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_mtrlware_assign
- WHERE u_mtrlware_assign.assigntype = 1
- AND u_mtrlware_assign.scid = :arg_s_change.scid
- AND u_mtrlware_assign.Relbillid = :arg_s_change.taskid
- And u_mtrlware_assign.Relprintid = :arg_s_change.printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询订单明细是否已有库存分配失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- arg_msg = '订单明细已有库存分配,操作取消,如需变更,请先取消库存分配'
- rslt = 0
- GOTO ext
- END IF
- //IF li_ordertype_mtrl = 1 THEN
- // FOR i = 1 To it_mxbt
- // IF arg_s_change.arg_s_changemx[i].mxtype = 0 THEN
- // cnt = 0
- // SELECT count(*) INTO :cnt
- // FROM u_OrderRqMtrl_tree
- // WHERE u_OrderRqMtrl_tree.scid = :arg_s_change.scid
- // And u_OrderRqMtrl_tree = :arg_s_change.arg_s_changemx[i].orderid;
- // IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '查询主生产计划是否已运算失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF cnt = 0 THEN
- // arg_msg = '主生产计划未运算,请检查'
- // rslt = 0
- // GOTO ext
- // END IF
- // END IF
- // NEXT
- //END IF
- IF arg_s_change.billid = 0 THEN
- ll_billid = f_sys_scidentity(0,"u_saletaskmx_change","billid",arg_msg,True,id_sqlca)
-
- IF ll_billid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_get_sccode(arg_s_change.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- ls_billcode = getid(arg_s_change.scid,ls_sccode + 'XC',Date(server_dt),False,sqlca)
- IF ls_billcode = "err" THEN
- rslt = 0
- arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_saletaskmx_change
- ( scid,
- Billid,
- billcode,
- billdate,
- rep,
- relcode,
- taskid,
- printid,
- oldstatus,
- oldwoodcode,
- oldpcode,
- oldmxdscrp,
- oldmxdscrp2,
- newstatus,
- newwoodcode,
- newpcode,
- newmxdscrp,
- newmxdscrp2,
- opemp,
- opdate,
- dscrp)
- VALUES ( :arg_s_change.scid,
- :ll_billid,
- :ls_billcode,
- :arg_s_change.billdate,
- :arg_s_change.rep,
- :arg_s_change.relcode,
- :arg_s_change.taskid,
- :arg_s_change.printid,
- :arg_s_change.oldstatus,
- :arg_s_change.oldwoodcode,
- :arg_s_change.oldpcode,
- :arg_s_change.oldmxdscrp,
- :arg_s_change.oldmxdscrp2,
- :arg_s_change.newstatus,
- :arg_s_change.newwoodcode,
- :arg_s_change.newpcode,
- :arg_s_change.newmxdscrp,
- :arg_s_change.newmxdscrp2,
- :arg_opemp,
- getdate(),
- :arg_s_change.dscrp) ;
- 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_saletaskmx_changemx
- ( billid,
- printid,
- mxtype,
- orderid,
- olddscrp,
- oldsecdscrp,
- oldthdscrp,
- newdscrp,
- newsecdscrp,
- newthdscrp,
- relprintid,
- scid)
- VALUES ( :ll_billid,
- :arg_s_change.arg_s_changemx[i].printid,
- :arg_s_change.arg_s_changemx[i].mxtype,
- :arg_s_change.arg_s_changemx[i].orderid,
- :arg_s_change.arg_s_changemx[i].olddscrp,
- :arg_s_change.arg_s_changemx[i].oldsecdscrp,
- :arg_s_change.arg_s_changemx[i].oldthdscrp,
- :arg_s_change.arg_s_changemx[i].newdscrp,
- :arg_s_change.arg_s_changemx[i].newsecdscrp,
- :arg_s_change.arg_s_changemx[i].newthdscrp,
- :arg_s_change.arg_s_changemx[i].relprintid,
- :arg_s_change.scid ) ;
- 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_saletaskmx_change
- SET scid = :arg_s_change.scid,
- billdate = :arg_s_change.billdate,
- rep = :arg_s_change.rep,
- relcode = :arg_s_change.relcode,
- taskid = :arg_s_change.taskid,
- printid = :arg_s_change.printid,
- oldstatus = :arg_s_change.oldstatus,
- oldwoodcode = :arg_s_change.oldwoodcode,
- oldpcode = :arg_s_change.oldpcode,
- oldmxdscrp = :arg_s_change.oldmxdscrp,
- oldmxdscrp2 = :arg_s_change.oldmxdscrp2,
- newstatus = :arg_s_change.newstatus,
- newwoodcode = :arg_s_change.newwoodcode,
- newpcode = :arg_s_change.newpcode,
- newmxdscrp = :arg_s_change.newmxdscrp,
- newmxdscrp2 = :arg_s_change.newmxdscrp2,
- Modemp = :arg_opemp,
- Moddate = getdate(),
- dscrp = :arg_s_change.dscrp
- WHERE u_saletaskmx_change.flag = 0 AND
- u_saletaskmx_change.billid = :arg_s_change.billid;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- DELETE FROM u_saletaskmx_changemx
- Where billid = :arg_s_change.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_saletaskmx_changemx
- ( billid,
- printid,
- mxtype,
- orderid,
- olddscrp,
- oldsecdscrp,
- oldthdscrp,
- newdscrp,
- newsecdscrp,
- newthdscrp,
- relprintid,
- scid )
- VALUES ( :arg_s_change.billid,
- :arg_s_change.arg_s_changemx[i].printid,
- :arg_s_change.arg_s_changemx[i].mxtype,
- :arg_s_change.arg_s_changemx[i].orderid,
- :arg_s_change.arg_s_changemx[i].olddscrp,
- :arg_s_change.arg_s_changemx[i].oldsecdscrp,
- :arg_s_change.arg_s_changemx[i].oldthdscrp,
- :arg_s_change.arg_s_changemx[i].newdscrp,
- :arg_s_change.arg_s_changemx[i].newsecdscrp,
- :arg_s_change.arg_s_changemx[i].newthdscrp,
- :arg_s_change.arg_s_changemx[i].relprintid,
- :arg_s_change.scid ) ;
- NEXT
-
- uo_billid = arg_s_change.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_saletaskmx_changemx arg_ref_changemx[], 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
- //用游标读取明细
- DECLARE cur_costmx CURSOR FOR
- SELECT u_saletaskmx_changemx.orderid,
- u_saletaskmx_changemx.olddscrp,
- u_saletaskmx_changemx.oldsecdscrp,
- u_saletaskmx_changemx.oldthdscrp,
- u_saletaskmx_changemx.newdscrp,
- u_saletaskmx_changemx.newsecdscrp,
- u_saletaskmx_changemx.newthdscrp,
- u_saletaskmx_changemx.mxtype,
- u_saletaskmx_changemx.relprintid,
- u_saletaskmx_changemx.scid
- FROM u_saletaskmx_changemx
- WHERE u_saletaskmx_changemx.billid = :arg_billid
- Order By u_saletaskmx_changemx.printid;
- OPEN cur_costmx;
- FETCH cur_costmx INTO
- :arg_ref_changemx[i].orderid,
- :arg_ref_changemx[i].olddscrp,
- :arg_ref_changemx[i].oldsecdscrp,
- :arg_ref_changemx[i].oldthdscrp,
- :arg_ref_changemx[i].newdscrp,
- :arg_ref_changemx[i].newsecdscrp,
- :arg_ref_changemx[i].newthdscrp,
- :arg_ref_changemx[i].mxtype,
- :arg_ref_changemx[i].relprintid,
- :arg_ref_changemx[i].scid;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_costmx INTO
- :arg_ref_changemx[i].orderid,
- :arg_ref_changemx[i].olddscrp,
- :arg_ref_changemx[i].oldsecdscrp,
- :arg_ref_changemx[i].oldthdscrp,
- :arg_ref_changemx[i].newdscrp,
- :arg_ref_changemx[i].newsecdscrp,
- :arg_ref_changemx[i].newthdscrp,
- :arg_ref_changemx[i].mxtype,
- :arg_ref_changemx[i].relprintid,
- :arg_ref_changemx[i].scid;
- LOOP
- CLOSE cur_costmx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_saletaskmx_changemx
- 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 p_getflag (long arg_billid, ref s_saletaskmx_change arg_s_change, ref string arg_msg);Int rslt = 1
- SELECT flag,
- taskid,
- billcode,
- printid,
- scid,
- newstatus,
- newwoodcode,
- newpcode,
- newmxdscrp,
- newmxdscrp2,
- affirmflag,
- affirmrep,
- affirmdate
- INTO :arg_s_change.flag,
- :arg_s_change.taskid,
- :arg_s_change.billcode,
- :arg_s_change.printid,
- :arg_s_change.scid,
- :arg_s_change.newstatus,
- :arg_s_change.newwoodcode,
- :arg_s_change.newpcode,
- :arg_s_change.newmxdscrp,
- :arg_s_change.newmxdscrp2,
- :arg_s_change.affirmflag,
- :arg_s_change.affirmrep,
- :arg_s_change.affirmdate
- FROM u_saletaskmx_change
- 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 affirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- long cnt
- IF arg_billid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- s_saletaskmx_change arg_s_ref
- IF p_getflag(arg_billid,arg_s_ref,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_ref.affirmflag <> 0 THEN
- rslt = 0
- ARG_MSG = '单据不是在待初审状态,不可以初审'
- GOTO ext
- END IF
- //yyx2013-7-29
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_mtrlware_assign
- WHERE u_mtrlware_assign.assigntype = 1
- AND u_mtrlware_assign.scid = :arg_s_ref.scid
- AND u_mtrlware_assign.Relbillid = :arg_s_ref.taskid
- And u_mtrlware_assign.Relprintid = :arg_s_ref.printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询订单明细是否已有库存分配失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- arg_msg = '订单明细已有库存分配,操作取消,如需变更,请先取消库存分配'
- rslt = 0
- GOTO ext
- END IF
- //yyx2013-7-29_end
- //更新审核标记
- UPDATE u_saletaskmx_change
- SET affirmrep = :arg_opemp,
- affirmdate = getdate(),
- affirmflag = 1
- WHERE billid = :arg_billid
- And affirmflag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- ARG_MSG = "单据正在审核,请稍后重试"
- 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 caffirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- datetime ldt_null
- setnull(ldt_null)
- IF arg_billid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- s_saletaskmx_change arg_s_ref
- IF p_getflag(arg_billid,arg_s_ref,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_ref.affirmflag <> 1 THEN
- rslt = 0
- ARG_MSG = '单据不是在待终审状态,不可以初撤'
- GOTO ext
- END IF
- IF arg_s_ref.flag <> 0 THEN
- rslt = 0
- ARG_MSG = '单据不是在待终审状态,不可以初撤'
- GOTO ext
- END IF
- //更新审核标记
- UPDATE u_saletaskmx_change
- SET affirmrep = '',
- affirmdate = :ldt_null,
- affirmflag = 0
- WHERE billid = :arg_billid
- And affirmflag = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- ARG_MSG = "单据正在审核,请稍后重试"
- 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 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 arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- s_saletaskmx_change arg_s_ref
- IF p_getflag(arg_billid,arg_s_ref,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_ref.affirmflag = 0 THEN
- rslt = 0
- ARG_MSG = '单据不是在已审核状态,不可以增加备注'
- GOTO ext
- END IF
- UPDATE u_saletaskmx_change
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- 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 arg_ifcommit THEN
- COMMIT;
- END IF
- Return (rslt)
- end function
- on uo_saletaskmx_change.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_saletaskmx_change.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|