12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013 |
- $PBExportHeader$uo_ordermtrl_workgroup_picscheck.sru
- forward
- global type uo_ordermtrl_workgroup_picscheck from nonvisualobject
- end type
- end forward
- global type uo_ordermtrl_workgroup_picscheck from nonvisualobject
- end type
- global uo_ordermtrl_workgroup_picscheck uo_ordermtrl_workgroup_picscheck
- type variables
- long pkid
- string billcode
- long scid
- long orderid
- string barcode
- long wrkgrpid
- long ifok
- string dscrp
- decimal qty
- string qcResult
- string opemp
- datetime opdate
- long auditflag
- string audit_emp
- datetime audit_date
- PUBLIC PRIVATEWRITE long billtype = 1466
- end variables
- forward prototypes
- public function integer uf_save (ref string arg_msg)
- public function integer uf_save_file (long arg_pkid, string arg_filename, blob arg_picdata, ref long arg_rt_fileid, ref string arg_msg)
- public function integer uf_del (long arg_pkid, ref string arg_msg)
- public function integer auditing (long arg_pkid, ref string arg_msg)
- public function integer cauditing (long arg_pkid, ref string arg_msg)
- public function long pf_getclassid (ref string arg_msg)
- private function integer uof_add_workgroup_qty (long arg_scid, long arg_orderid, long arg_swkpid, long arg_workgroupid, datetime arg_finishdate, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_pordermtrl_workgroup (string arg_pordercode, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer uf_save (ref string arg_msg);Int rslt = 1
- IF IsNull(pkid) THEN pkid = 0
- IF IsNull(scid) THEN scid = 0
- IF IsNull(orderid) THEN orderid = 0
- IF IsNull(barcode) THEN barcode = ''
- IF IsNull(wrkgrpid) THEN wrkgrpid = 0
- IF IsNull(ifok) THEN ifok = 0
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(qty) THEN qty = 0
- IF IsNull(qcResult) THEN qcResult = ''
- IF orderid <= 0 THEN
- rslt = 0
- arg_msg = '请选择关联的指令单'
- GOTO ext
- END IF
- Long ll_scid, ll_orderid, ll_wkpid
- Decimal ld_qty
- IF barcode <> '' THEN
- SELECT scid, orderid, packqty * qty
- INTO :ll_scid, :ll_orderid, :ld_qty
- FROM u_mtrlware_mx
- Where (barcode = :barcode);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询条码['+barcode+']相关信息失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF scid <> ll_scid Or orderid <> ll_orderid THEN
- rslt = 0
- arg_msg = '条码['+barcode+']对应指令单'+String(ll_scid)+'_'+String(ll_orderid)+'与传入指令单'+String(scid)+'_'+String(orderid)+'不一至'
- GOTO ext
- END IF
-
- IF ld_qty <> qty THEN
- rslt = 0
- arg_msg = '条码['+barcode+']对应数量'+String(ld_qty)+'与传入数量'+String(qty)+'不一至'
- GOTO ext
- END IF
-
- END IF
- String ls_wrkgrpname
- Long ll_inwkpid
- SELECT wrkgrpname, storageid
- INTO :ls_wrkgrpname, :ll_inwkpid
- FROM u_sc_workgroup
- Where wrkgrpid = :wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询传入工组名称失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- String ls_wkpname
- SELECT u_order_ml.wrkgrpid, u_sc_wkp.wrkgrpname
- INTO :ll_wkpid, :ls_wkpname
- FROM u_order_ml INNER join u_sc_wkp ON u_order_ml.wrkgrpid = u_sc_wkp.wrkgrpid
- WHERE u_order_ml.scid = :scid
- And u_order_ml.orderid = :orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单车间失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_inwkpid <> ll_wkpid THEN
- rslt = 0
- arg_msg = '传入工组"' + ls_wrkgrpname + '"不属于指令单的车间"' + ls_wkpname + '"'
- GOTO ext
- END IF
- IF pkid = 0 THEN
- // 新建
- Long ls_newid
- ls_newid = f_sys_scidentity(0,"u_OrderMtrl_workgroup_picsCheck","pkid",arg_msg,True,id_sqlca)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
- DateTime server_datetime
- SELECT top 1 GETDATE()
- INTO :server_datetime
- From u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '获取服务器时间失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- String ls_newcode
- ls_newcode = getid(0,'WQ',Date(server_datetime),False,sqlca)
- IF ls_newcode = "err" THEN
- rslt = 0
- arg_msg = "无法获取指令单工组质检单编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_OrderMtrl_workgroup_picsCheck(pkid, billcode, scid, orderid, wrkgrpid,opemp, opdate, ifok, dscrp, qty, qcResult, barcode)
- Values(:ls_newid, :ls_newcode, :scid, :orderid, :wrkgrpid, :publ_operator, GETDATE(), :ifok, :dscrp, :qty, :qcResult, :barcode);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入指令单工组质检单失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- pkid = ls_newid
- billcode = ls_newcode
- ELSE
-
- UPDATE u_OrderMtrl_workgroup_picsCheck
- SET scid = :scid,
- orderid = :orderid,
- wrkgrpid = :wrkgrpid,
- opemp = :publ_operator,
- opdate = GETDATE(),
- ifok = :ifok,
- qty = :qty,
- dscrp = :dscrp,
- qcResult = :qcResult,
- barcode = :barcode
- Where pkid = :pkid And auditflag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新指令单工组质检单信息失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = '单据已经被删除或者已被审核不能修改'
- GOTO ext
- END IF
-
- END IF
- ext:
- IF rslt = 1 THEN
- COMMIT;
- ELSE
- ROLLBACK;
- END IF
- RETURN rslt
- end function
- public function integer uf_save_file (long arg_pkid, string arg_filename, blob arg_picdata, ref long arg_rt_fileid, ref string arg_msg);Int rslt = 1
- Long ll_fileid, ll_classid
- String ls_filetype
- IF arg_pkid <= 0 THEN
- rslt = 0
- arg_msg = '参数单据ID无效'
- GOTO ext
- END IF
- String ls_billcode
- SELECT billcode
- INTO :ls_billcode
- FROM u_OrderMtrl_workgroup_picsCheck
- Where pkid = :arg_pkid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据编号失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- ll_classid = pf_getclassid(Ref arg_msg)
- IF ll_classid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ls_filetype = ''
- Long ll_pos
- ll_pos = lastpos(arg_filename, '.')
- IF ll_pos > 0 THEN
- ls_filetype = Mid(arg_filename, ll_pos + 1)
- END IF
- SELECT isnull(max(fileid),0) + 1
- INTO :ll_fileid
- From u_file Using sys_fileDB_sqlca;
- IF sys_fileDB_sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "即时获取新档案ID失败(请重试)" + sys_fileDB_sqlca.SQLErrText
- GOTO ext
- END IF
- INSERT INTO U_File
- (
- FileID,
- DisplayName,
- FileName,
- ClassID,
- FileType,
- Dscrp,
- Opdate,
- Opemp,
- Compressed,
- Encrypted,
- relid,
- relcode,
- billtype,
- relid_mx,
- relcode_mx,
- scid)
- VALUES (
- :ll_fileid,
- :arg_filename,
- :arg_filename,
- :ll_classid,
- :ls_filetype,
- '',
- GETDATE(),
- :publ_operator,
- 0,
- 0,
- :arg_pkid,
- :ls_billcode,
- :billtype,
- 0,
- '',
- :scid)
- Using sys_fileDB_sqlca;
- IF sys_fileDB_sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "插入文件信息失败," + sys_fileDB_sqlca.SQLErrText
- ROLLBACK Using sys_fileDB_sqlca;
- GOTO ext
- END IF
- COMMIT Using sys_fileDB_sqlca;
- UpdateBlob u_file
- Set filedata = :arg_picdata
- Where fileid = :ll_fileid
- Using sys_fileDB_sqlca;
- IF sys_fileDB_sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新文件失败" + sys_fileDB_sqlca.SQLErrText
- ROLLBACK Using sys_fileDB_sqlca;
- GOTO ext
- END IF
- arg_rt_fileid = ll_fileid
- COMMIT Using sys_fileDB_sqlca;
- ext:
- RETURN rslt
- end function
- public function integer uf_del (long arg_pkid, ref string arg_msg);Int rslt = 1
- Long ll_auditflag
- SELECT auditflag
- INTO :ll_auditflag
- FROM u_OrderMtrl_workgroup_picsCheck
- Where pkid = :arg_pkid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据审核状态失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_auditflag <> 0 THEN
- rslt = 0
- arg_msg = '单据不在待审状态,不能删除'
- GOTO ext
- END IF
- DELETE From u_OrderMtrl_workgroup_picsCheck Where pkid = :arg_pkid And auditflag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除单据失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = '删除单据失败,由于单据已经被删除或已被审核'
- GOTO ext
- END IF
- DELETE From U_File Where billtype = :billtype And relid = :arg_pkid Using sys_fileDB_sqlca;
- IF sys_fileDB_sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除单据附件失败,' + sys_fileDB_sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 1 THEN
- COMMIT;
- COMMIT Using sys_fileDB_sqlca;
- ELSE
- ROLLBACK;
- ROLLBACK Using sys_fileDB_sqlca;
- END IF
- RETURN rslt
- end function
- public function integer auditing (long arg_pkid, ref string arg_msg);Int rslt = 1
- Long ll_auditflag, ll_wrkgrpid, ll_ifok, ll_scid, ll_orderid,ll_mtrlid,ll_statusflag
- Decimal ld_qty
- Long ll_jdtype = 0
- DateTime ld_now
- String ls_ordercode
- Long ll_pos = 0
- SELECT auditflag, wrkgrpid, qty, ifok, scid, orderid, GETDATE()
- INTO :ll_auditflag, :ll_wrkgrpid, :ld_qty, :ll_ifok, :ll_scid, :ll_orderid, :ld_now
- FROM u_OrderMtrl_workgroup_picsCheck
- Where pkid = :arg_pkid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据审核状态失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_auditflag <> 0 THEN
- rslt = 0
- arg_msg = '单据不在待审状态,不能审核'
- GOTO ext
- END IF
- UPDATE u_OrderMtrl_workgroup_picsCheck
- SET auditflag = 1,
- audit_emp = :publ_operator,
- audit_date = GETDATE()
- Where pkid = :arg_pkid And auditflag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据审核状态失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = '审核失败,单据已经被删除或已被审核'
- GOTO ext
- END IF
- IF ll_ifok = 1 THEN
- SELECT jdtype
- INTO :ll_jdtype
- FROM u_sc_workgroup
- Where wrkgrpid = :ll_wrkgrpid;
- IF sqlca.SQLCode = 0 And ll_jdtype = 7 THEN
- // 更新工组进度
-
- SELECT mtrlid, ordercode
- INTO :ll_mtrlid, :ls_ordercode
- FROM u_order_ml
- WHERE scid = :ll_scid
- And orderid = :ll_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT statusflag
- INTO :ll_statusflag
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料信息失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- ll_pos = Pos(ls_ordercode, '.')
-
- IF ll_statusflag = 2 And ll_pos > 0 THEN
- // DONE: 汇总直接更新工组进度
- ls_ordercode = Mid(ls_ordercode, 1, ll_pos - 1)
-
- IF uof_update_pordermtrl_workgroup(ls_ordercode, ll_wrkgrpid, Ref arg_msg, False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF uof_add_workgroup_qty(ll_scid, ll_orderid, ll_wrkgrpid, 0, ld_now, ld_qty, Ref arg_msg, False) <> 1 THEN
- rslt = 0
- arg_msg = '更新工组进度失败,原因:' + arg_msg
- GOTO ext
- END IF
- END IF
- END IF
- END IF
- ext:
- IF rslt = 1 THEN
- COMMIT;
- ELSE
- ROLLBACK;
- END IF
- RETURN rslt
- end function
- public function integer cauditing (long arg_pkid, ref string arg_msg);Int rslt = 1
- Long ll_auditflag, ll_wrkgrpid, ll_ifok, ll_scid, ll_orderid, ll_mtrlid, ll_statusflag, ll_pos
- Decimal ld_qty
- Long ll_jdtype = 0
- DateTime ld_now
- string ls_ordercode
- SELECT auditflag, wrkgrpid, qty, ifok, scid, orderid, GETDATE()
- INTO :ll_auditflag, :ll_wrkgrpid, :ld_qty, :ll_ifok, :ll_scid, :ll_orderid, :ld_now
- FROM u_OrderMtrl_workgroup_picsCheck
- Where pkid = :arg_pkid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据审核状态失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_auditflag <> 1 THEN
- rslt = 0
- arg_msg = '单据不在已审状态,不能搞撤审'
- GOTO ext
- END IF
- UPDATE u_OrderMtrl_workgroup_picsCheck
- SET auditflag = 0,
- audit_emp = '',
- audit_date = NULL
- Where pkid = :arg_pkid And auditflag = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据审核状态失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = '撤审失败,单据已经被删除或已被撤审'
- GOTO ext
- END IF
- IF ll_ifok = 1 THEN
- SELECT jdtype
- INTO :ll_jdtype
- FROM u_sc_workgroup
- Where wrkgrpid = :ll_wrkgrpid;
- IF sqlca.SQLCode = 0 And ll_jdtype = 7 THEN
- // 更新工组进度
-
- SELECT mtrlid, ordercode
- INTO :ll_mtrlid, :ls_ordercode
- FROM u_order_ml
- WHERE scid = :ll_scid
- And orderid = :ll_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT statusflag
- INTO :ll_statusflag
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料信息失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- ll_pos = Pos(ls_ordercode, '.')
-
- IF ll_statusflag = 2 And ll_pos > 0 THEN
- // DONE: 汇总直接更新工组进度
- ls_ordercode = Mid(ls_ordercode, 1, ll_pos - 1)
-
- IF uof_update_pordermtrl_workgroup(ls_ordercode, ll_wrkgrpid, Ref arg_msg, False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
-
- IF uof_add_workgroup_qty(ll_scid, ll_orderid, ll_wrkgrpid, 0, ld_now, -ld_qty, Ref arg_msg, False) <> 1 THEN
- rslt = 0
- arg_msg = '更新工组进度失败,原因:' + arg_msg
- GOTO ext
- END IF
- END IF
- END IF
- END IF
- ext:
- IF rslt = 1 THEN
- COMMIT;
- ELSE
- ROLLBACK;
- END IF
- RETURN rslt
- end function
- public function long pf_getclassid (ref string arg_msg);Long ll_classid = 0
- Int rslt = 1
- Long cnt
- SELECT count(0)
- INTO :cnt
- FROM U_FileClass
- Where billtype = :billtype;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据分类失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- ll_classid = f_sys_scidentity(0,"U_FileClass","classid",arg_msg,True,id_sqlca)
- IF ll_classid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- INSERT INTO U_FileClass(ClassID, ClassName, billtype)
- Values(:ll_classid, '质检图', :billtype);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入指令单工组质检单分类失败,' + sqlca.SQLErrText
- ROLLBACK;
- GOTO ext
- END IF
- COMMIT;
- ELSE
- SELECT top 1 classid
- INTO :ll_classid
- FROM U_FileClass
- WHERE billtype = :billtype
- Order By ClassID;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单工组质检单分类ID失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 1 THEN
- COMMIT;
- ELSE
- ROLLBACK;
- ll_classid = 0
- END IF
- RETURN ll_classid
- end function
- private function integer uof_add_workgroup_qty (long arg_scid, long arg_orderid, long arg_swkpid, long arg_workgroupid, datetime arg_finishdate, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);//更新工组进度完成数
- Int rslt = 1
- String ls_ordercode
- String ls_mtrlcode
- Decimal ld_orderqty,ld_acmpqty,ld_trueqty
- DateTime null_dt
- SetNull(null_dt)
- DateTime dt_fdate
- IF arg_orderid <= 0 THEN
- rslt = 0
- arg_msg = '错误的计划唯一码'
- GOTO ext
- END IF
- SELECT ordercode INTO :ls_ordercode
- FROM u_Order_ml
- WHERE OrderID = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询生产计划编号失败'
- rslt = 0
- GOTO ext
- END IF
- SELECT u_mtrldef.mtrlcode ,
- u_order_ml.orderqty,
- u_order_ml.acmpqty
- INTO :ls_mtrlcode,
- :ld_orderqty,
- :ld_acmpqty
- FROM u_mtrldef,u_order_ml
- WHERE u_order_ml.mtrlid = u_mtrldef.mtrlid
- AND u_order_ml.scid = :arg_scid
- And u_Order_ml.OrderID = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料编号失败'
- rslt = 0
- GOTO ext
- END IF
- //arg_swkpid:源工组;
- Decimal finishqty, totalqty
- SELECT isnull(sum(orderqty - stopqty),0), isnull(sum(finishqty),0)
- INTO :totalqty, :finishqty
- FROM u_OrderMtrl_workgroup
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkGrpid = :arg_swkpid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = ',查询物料:'+ls_mtrlcode+'源工组未完成数量失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_qty + finishqty > totalqty THEN
- arg_qty = totalqty - finishqty
- END IF
- IF arg_qty + finishqty < 0 THEN
- arg_qty = -finishqty
- END IF
- IF arg_qty = 0 THEN
- GOTO ext
- END IF
- Long ll_owrkgrpid, arr_owrkgrpid[]
- String ls_wkpname, arr_wkpname[]
- Long ll_workgroupid, arr_workgroupid[]
- Decimal ld_ufqty, ld_fqty, arr_ufqty[], arr_fqty[]
- Long ll_cnt = 0
- DECLARE cur1 CURSOR FOR
- SELECT owrkgrpid, wkpname, workgroupid, orderqty - finishqty - stopqty, finishqty
- FROM u_OrderMtrl_workgroup
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkGrpid = :arg_swkpid
- AND workgroupid = :arg_workgroupid
- UNION
- SELECT owrkgrpid, wkpname, workgroupid, orderqty - finishqty - stopqty, finishqty
- FROM u_OrderMtrl_workgroup
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkGrpid = :arg_swkpid
- And workgroupid <> :arg_workgroupid;
- OPEN cur1;
- FETCH cur1 Into :ll_owrkgrpid, :ls_wkpname, :ll_workgroupid, :ld_ufqty, :ld_fqty;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt++
- arr_owrkgrpid[ll_cnt] = ll_owrkgrpid
- arr_wkpname[ll_cnt] = ls_wkpname
- arr_workgroupid[ll_cnt] = ll_workgroupid
- arr_ufqty[ll_cnt] = ld_ufqty
- arr_fqty[ll_cnt] = ld_fqty
- FETCH cur1 Into :ll_owrkgrpid, :ls_wkpname, :ll_workgroupid, :ld_ufqty, :ld_fqty;
- LOOP
- CLOSE cur1;
- Long i
- Decimal ld_addqty
- ld_addqty = arg_qty
- FOR i = 1 To ll_cnt
- ll_owrkgrpid = arr_owrkgrpid[i]
- ls_wkpname = arr_wkpname[i]
- ll_workgroupid = arr_workgroupid[i]
- ld_ufqty = arr_ufqty[i]
- ld_fqty = arr_fqty[i]
-
- IF ld_addqty = 0 THEN
- EXIT
- END IF
-
- IF ld_addqty >= ld_ufqty THEN
- IF ld_ufqty = 0 THEN CONTINUE
- UPDATE u_OrderMtrl_workgroup
- SET finishqty = finishqty + :ld_ufqty,
- finishflag = 1,
- finishdate = :arg_finishdate
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :arg_swkpid
- AND owrkgrpid = :ll_owrkgrpid
- AND wkpname = :ls_wkpname
- And workgroupid = :ll_workgroupid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新物料:'+ls_mtrlcode+'源工组未完成数量失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ld_addqty = ld_addqty - ld_ufqty
- ELSEIF ld_addqty <= -ld_fqty THEN
- UPDATE u_OrderMtrl_workgroup
- SET finishqty = finishqty - :ld_fqty,
- finishflag = 0,
- finishdate = NULL
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :arg_swkpid
- AND owrkgrpid = :ll_owrkgrpid
- AND wkpname = :ls_wkpname
- And workgroupid = :ll_workgroupid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新物料:'+ls_mtrlcode+'源工组未完成数量失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ld_addqty = ld_addqty + ld_fqty
- ELSE
- UPDATE u_OrderMtrl_workgroup
- SET finishqty = finishqty + :ld_addqty,
- finishflag = 0,
- finishdate = NULL
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :arg_swkpid
- AND owrkgrpid = :ll_owrkgrpid
- AND wkpname = :ls_wkpname
- And workgroupid = :ll_workgroupid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新物料:'+ls_mtrlcode+'源工组未完成数量失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ld_addqty = 0
- END IF
- NEXT
- //IF pf_checklast(arg_scid, arg_orderid, arg_swkpid, arg_owkpid) = 1 THEN
-
- Decimal ld_sumorderqty
- SELECT isnull(sum(orderqty - stopqty),0)
- INTO :ld_sumorderqty
- FROM u_OrderMtrl_workgroup
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkGrpid = :arg_swkpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料:'+ls_mtrlcode+'计划数失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- Decimal ld_sumfqty
- SELECT isnull(sum(fqty),0)
- INTO :ld_sumfqty
- FROM u_OrderMtrl_workgroup_date
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And wrkGrpid = :arg_swkpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料:'+ls_mtrlcode+'已完成数失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- ld_addqty = arg_qty
- IF ld_addqty + ld_sumfqty > ld_sumorderqty THEN
- ld_addqty = ld_sumorderqty - ld_sumfqty
- END IF
- IF ld_addqty + ld_sumfqty < 0 THEN
- ld_addqty = -ld_sumfqty
- END IF
-
- dt_fdate = DateTime(Date(arg_finishdate), Time(0))
- IF ld_addqty >= 0 THEN
- UPDATE u_OrderMtrl_workgroup_date
- SET fqty = fqty + :ld_addqty
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :arg_swkpid
- And fdate = :dt_fdate;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- INSERT INTO u_OrderMtrl_workgroup_date
- (scid,orderid,wrkgrpid,fdate,fqty)
- VALUES
- (:arg_scid,:arg_orderid,:arg_swkpid,:dt_fdate,:ld_addqty);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入工组当天进度失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- rslt = 0
- arg_msg = '更新工组当天进度失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
-
- DateTime ld_date, arr_date[]
- Decimal ld_fqtyd, arr_fqtyd[]
- i = 0
-
- DECLARE cur2 CURSOR FOR SELECT fdate, fqty
- FROM u_OrderMtrl_workgroup_date
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :arg_swkpid
- AND fdate = :dt_fdate
- UNION
- SELECT fdate, fqty
- FROM u_OrderMtrl_workgroup_date
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :arg_swkpid
- And fdate <> :dt_fdate;
- OPEN cur2;
- FETCH cur2 Into :ld_date,:ld_fqtyd;
- DO WHILE sqlca.SQLCode = 0
- i++
- arr_date[i] = ld_date
- arr_fqtyd[i] = ld_fqtyd
- FETCH cur2 Into :ld_date,:ld_fqtyd;
- LOOP
- CLOSE cur2;
-
- FOR i = 1 To UpperBound(arr_date)
- ld_date = arr_date[i]
- ld_fqtyd = arr_fqtyd[i]
- IF ld_addqty = 0 THEN
- EXIT
- END IF
-
- IF ld_addqty <= -ld_fqtyd THEN
- UPDATE u_OrderMtrl_workgroup_date
- SET fqty = fqty - :ld_fqtyd
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :arg_swkpid
- And fdate = :ld_date;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新工组当天进度失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ld_addqty = ld_addqty + ld_fqtyd
- ELSE
- UPDATE u_OrderMtrl_workgroup_date
- SET fqty = fqty + :ld_addqty
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :arg_swkpid
- And fdate = :ld_date;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新工组当天进度失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ld_addqty = 0
- END IF
-
- NEXT
-
- END IF
- //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 uof_update_pordermtrl_workgroup (string arg_pordercode, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_pscid, ll_porderid
- Decimal ld_porderqty, ld_rate, ld_fqty
- SELECT orderqty, scid, orderid
- INTO :ld_porderqty, :ll_pscid, :ll_porderid
- FROM u_order_ml
- Where ordercode = :arg_pordercode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询主指令单信息失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT MIN(rate)
- INTO :ld_rate
- FROM (
- SELECT sum(u_OrderMtrl_workgroup_picsCheck.qty) / u_Order_ml.orderqty AS rate, u_Order_ml.OrderCode
- FROM u_OrderMtrl_workgroup_picsCheck INNER JOIN
- u_Order_ml ON u_OrderMtrl_workgroup_picsCheck.scid = u_Order_ml.scid AND u_OrderMtrl_workgroup_picsCheck.orderid = u_Order_ml.OrderID
- WHERE (u_Order_ml.OrderCode LIKE :arg_pordercode + '.%')
- AND (u_Order_ml.OrderCode <> :arg_pordercode)
- AND u_OrderMtrl_workgroup_picsCheck.wrkgrpid = :arg_wrkgrpid
- AND u_OrderMtrl_workgroup_picsCheck.auditflag = 1
- AND u_OrderMtrl_workgroup_picsCheck.ifok = 1
- Group By u_order_ml.orderqty,u_order_ml.ordercode) a;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询主指令单的整体进度失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- ld_fqty = Long(ld_porderqty * ld_rate)
- IF ld_fqty > ld_porderqty THEN
- ld_fqty = ld_porderqty
- END IF
- UPDATE u_ordermtrl_workgroup
- SET finishqty = case when (:ld_fqty >= orderqty - stopqty) then orderqty - stopqty else :ld_fqty END,
- finishflag = case when (:ld_fqty >= orderqty - stopqty) then 1 else 0 END,
- finishdate = case when (:ld_fqty >= orderqty - stopqty) then GETDATE() else NULL END
- WHERE scid = :ll_pscid
- AND orderid = :ll_porderid
- And wrkgrpid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新主指令单工组进度失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF arg_ifcommit THEN
- IF rslt = 1 THEN
- COMMIT;
- ELSE
- ROLLBACK;
- END IF
- END IF
- RETURN rslt
- end function
- on uo_ordermtrl_workgroup_picscheck.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_ordermtrl_workgroup_picscheck.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|