1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227 |
- $PBExportHeader$uo_workgroup_num.sru
- forward
- global type uo_workgroup_num from nonvisualobject
- end type
- end forward
- global type uo_workgroup_num from nonvisualobject
- end type
- global uo_workgroup_num uo_workgroup_num
- type variables
- Public ProtectedWrite Long billid
- Public ProtectedWrite String billcode //单据的唯一编号
- Public ProtectedWrite DateTime opdate //建立时间,自动
- Public ProtectedWrite String opemp //建立操作员
- Public ProtectedWrite Int flag = 0 //审核标志
- Public ProtectedWrite DateTime auditdate //审核时间
- Public ProtectedWrite String auditrep //审核操作员
- Public ProtectedWrite Int secflag = 0 //审核标志
- Public ProtectedWrite DateTime secauditdate //审核时间
- Public ProtectedWrite String secauditemp //审核操作员
- Long sworkgroupid = 0
- Long dworkgroupid = 0
- Long relcpscid = 0
- Long relcpid = 0
- String relcpcode = ''
- String dscrp = ''
- String relcode = ''
- String relrep = ''
- DateTime billdate
- Int billtype
- Long scid = 0
- Long rellossscid
- Long rellossid
- Boolean if_getid_ture = True
- Transaction commit_transaction //数据commit事务
- s_orderworkgroup_nummx wkpmx[] //明细结构数组
- Long it_mxbt = 0 //明细结构数组末指针
- Boolean it_newbegin = False //新建标志
- Boolean it_updatebegin = False //修改标志
- Int uo_option_orderworkgroup_time
- Int uo_option_orderworkgroup_num_cp
- Int uo_option_ml_wkp
- Int uo_option_taskplancode
- int uo_option_workgroup_num_check
- end variables
- forward prototypes
- public function integer save (boolean arg_ifcommit, ref string arg_msg)
- public function integer auditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer p_reset ()
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
- public function integer p_getinfo (long arg_billid, ref string arg_msg)
- 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 p_clearmx ()
- public function integer getinfo (long arg_billid, ref string arg_msg)
- public function integer secauditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer c_secauditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer newbegin (ref string arg_msg)
- public function integer uof_finish_wkp (long arg_scid, long arg_orderid, string arg_wkpname, long arg_wrkgrpid, long arg_owrkgrpid, integer arg_type, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_mxdscrp (long arg_billid, long arg_printid, string arg_newdescppart, ref string arg_msg)
- public function integer acceptmx (long arg_printid, long arg_orderscid, long arg_orderid, string arg_ordercode, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_qty, string arg_mxdscrp, string arg_wkpname, string arg_mtrlcuscode, string arg_location, string arg_waredscrp, long arg_planscid, long arg_planid, long arg_planprintid, decimal arg_uqty, string arg_unit, decimal arg_rate, decimal arg_lossqty, ref string arg_msg)
- end prototypes
- public function integer save (boolean arg_ifcommit, ref string arg_msg);Integer rslt = 1,cnt = 0,i
- DateTime server_dt
- Long ls_newid
- String ls_sccode
- Long ll_printid
- IF uo_option_orderworkgroup_time = -1000 THEN
- arg_msg = '选项:[118]工组交接时间精确到小时,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_orderworkgroup_num_cp = -1000 THEN
- arg_msg = '选项:[210]工组完工单使用仓库审,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_workgroup_num_check = -1000 THEN
- arg_msg = '选项:[371]工组交接单严格按工组顺序交接,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(sworkgroupid) THEN sworkgroupid = 0
- IF IsNull(dworkgroupid) THEN dworkgroupid = 0
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(relcode) THEN relcode = ''
- IF IsNull(relrep) THEN relrep = ''
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以提交"
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction ;
- //取得系统时间,借用操作员表
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF relrep = '' THEN
- rslt = 0
- arg_msg = "请输入经手人"
- GOTO ext
- END IF
- IF it_mxbt <= 0 THEN
- rslt = 0
- arg_msg = "没有正确明细内容"
- GOTO ext
- END IF
- IF uo_option_orderworkgroup_time = 0 THEN
- billdate = DateTime(Date(billdate),Time(0))
- END IF
- IF billtype = 0 THEN
- IF sworkgroupid = 0 THEN
- rslt = 0
- arg_msg = '请选择调出工组'
- GOTO ext
- END IF
-
- IF dworkgroupid = 0 THEN
- rslt = 0
- arg_msg = '请选择调入工组'
- GOTO ext
- END IF
-
- IF sworkgroupid = dworkgroupid THEN
- rslt = 0
- arg_msg = '调出工组与调入工组不能相同'
- GOTO ext
- END IF
- ELSEIF billtype = 2 THEN
-
- IF sworkgroupid = 0 THEN
- rslt = 0
- arg_msg = '请选择完工工组'
- GOTO ext
- END IF
-
- IF uo_option_orderworkgroup_num_cp = 1 THEN
- IF dworkgroupid = 0 THEN
- rslt = 0
- arg_msg = '请选择调入仓库'
- GOTO ext
- END IF
- END IF
- END IF
- //检查调出工组,工组进度解决方案 110527
- //////////////////////////////////////////////////
- Int li_jdtype
- SELECT jdtype
- INTO :li_jdtype
- FROM u_sc_workgroup
- Where wrkGrpid = :sworkgroupid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询调出工组工组进度解决方案操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF li_jdtype <> 0 THEN
- rslt = 0
- IF billtype = 0 THEN
- arg_msg = "调出工组工组进度解决方案设置不是[按工组交接数统计],不能使用工组交接单"
- ELSE
- arg_msg = "完成工组工组进度解决方案设置不是[按工组交接数统计],不能使用工组完工单"
- END IF
- GOTO ext
- END IF
- //////////////////////////////////////////////// //
- IF f_check_inoutdate(0,billdate,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_workgroup_num_check = 1 And billtype = 0 THEN
- FOR i = 1 To it_mxbt
- SELECT printid
- INTO :ll_printid
- FROM u_OrderMtrl_workgroup
- WHERE orderid = :wkpmx[i].orderid
- AND scid = :wkpmx[i].orderscid
- AND wrkGrpid = :sworkgroupid
- AND ( owrkGrpid = :dworkgroupid AND iflast = 0 )
- AND wkpname = :wkpmx[i].wkpname
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',查询物料:'+wkpmx[i].mtrlcode+'源工组信息失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_printid = 0 THEN CONTINUE
-
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_OrderMtrl_workgroup
- WHERE orderid = :wkpmx[i].orderid
- AND scid = :wkpmx[i].orderscid
- AND ( owrkGrpid = :sworkgroupid AND iflast = 0 )
- AND printid < :ll_printid
- AND finishqty = 0
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',查询物料:'+wkpmx[i].mtrlcode+'前工组信息失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',查询物料:'+wkpmx[i].mtrlcode+'调出工组未接收,不能交接'
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- ////////////////////////////////////////////// //开始区分:新建/更新 处理
- IF billid = 0 THEN //新建
- ls_newid = f_sys_scidentity(scid,"u_orderworkgroup_num","billid",arg_msg,True,id_sqlca)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //取分部代号
- IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //取得新单据编号
- IF billtype = 0 THEN
- billcode = getid(scid,ls_sccode + 'BS',Date(server_dt),if_getid_ture,commit_transaction)
- ELSEIF billtype = 2 THEN
- billcode = getid(scid,ls_sccode + 'WG',Date(server_dt),if_getid_ture,commit_transaction)
- END IF
-
- IF billcode = "err" THEN
- billcode = ''
- rslt = 0
- arg_msg = "无法获取单编号"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_orderworkgroup_num (
- billid,
- billcode,
- billdate,
- relcode,
- sworkgroupid,
- dworkgroupid,
- dscrp,
- opdate,
- opemp,
- relrep,
- billtype,
- scid)
- VALUES (
- :ls_newid,
- :billcode,
- :billdate,
- :relcode,
- :sworkgroupid,
- :dworkgroupid,
- :dscrp,
- :server_dt,
- :publ_operator,
- :relrep,
- :billtype,
- :scid) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- billid = ls_newid
-
- FOR i = 1 To it_mxbt
- INSERT INTO u_orderworkgroup_nummx
- (billid,
- printid,
- mtrlid,
- orderscid,
- orderid,
- status,
- woodcode,
- pcode,
- qty,
- mxdscrp,
- wkpname,
- mtrlcuscode,
- location,
- waredscrp,
- planscid,
- planid,
- planprintid,
- oplancode,
- uqty,
- unit,
- rate,
- lossqty)
- VALUES (
- :ls_newid,
- :wkpmx[i].printid,
- :wkpmx[i].mtrlid,
- :wkpmx[i].orderscid,
- :wkpmx[i].orderid,
- :wkpmx[i].status,
- :wkpmx[i].woodcode,
- :wkpmx[i].pcode,
- :wkpmx[i].qty,
- :wkpmx[i].mxdscrp,
- :wkpmx[i].wkpname,
- :wkpmx[i].mtrlcuscode,
- :wkpmx[i].location,
- :wkpmx[i].waredscrp,
- :wkpmx[i].planscid,
- :wkpmx[i].planid,
- :wkpmx[i].planprintid,
- :wkpmx[i].oplancode,
- :wkpmx[i].uqty,
- :wkpmx[i].unit,
- :wkpmx[i].rate,
- :wkpmx[i].lossqty) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- billid = 0 //billid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- ELSE //////////////////////////////////////////////// //更新
- UPDATE u_orderworkgroup_num
- SET billdate = :billdate,
- relcode = :relcode,
- sworkgroupid = :sworkgroupid,
- dworkgroupid = :dworkgroupid,
- dscrp = :dscrp,
- relrep = :relrep
- WHERE u_orderworkgroup_num.billid = :billid
- And flag = 0 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //删除原有明细
- DELETE FROM u_orderworkgroup_nummx
- Where u_orderworkgroup_nummx.billid = :billid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- FOR i = 1 To it_mxbt
- INSERT INTO u_orderworkgroup_nummx
- (billid,
- printid,
- mtrlid,
- orderscid,
- orderid,
- status,
- woodcode,
- pcode,
- qty,
- mxdscrp,
- wkpname,
- mtrlcuscode,
- location,
- waredscrp,
- planscid,
- planid,
- planprintid,
- oplancode,
- uqty,
- unit,
- rate,
- lossqty)
- VALUES (
- :billid,
- :wkpmx[i].printid,
- :wkpmx[i].mtrlid,
- :wkpmx[i].orderscid,
- :wkpmx[i].orderid,
- :wkpmx[i].status,
- :wkpmx[i].woodcode,
- :wkpmx[i].pcode,
- :wkpmx[i].qty,
- :wkpmx[i].mxdscrp,
- :wkpmx[i].wkpname,
- :wkpmx[i].mtrlcuscode,
- :wkpmx[i].location,
- :wkpmx[i].waredscrp,
- :wkpmx[i].planscid,
- :wkpmx[i].planid,
- :wkpmx[i].planprintid,
- :wkpmx[i].oplancode,
- :wkpmx[i].uqty,
- :wkpmx[i].unit,
- :wkpmx[i].rate,
- :wkpmx[i].lossqty) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- p_clearmx()
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- Long cnt = 0,i
- Int li_ifloss
- IF uo_option_ml_wkp = -1000 THEN
- arg_msg = '选项:[047]生产计划直接确认车间或工序完成,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- uo_order_plan uo_oplan
- uo_oplan = Create uo_order_plan
- uo_order_wkp_jd uo_jd
- uo_jd = Create uo_order_wkp_jd
- uo_inware_other uo_loss_in
- uo_loss_in = Create uo_inware_other
- uo_loss_in.commit_transaction = commit_transaction
- uo_loss_in.if_getid_ture = FALSE
- datastore ds_update_acceptqty
- ds_update_acceptqty = Create datastore
- ds_update_acceptqty.DataObject = 'ds_order_ml_update_acceptqty'
- ds_update_acceptqty.SetTransObject(commit_transaction)
- IF uo_option_ml_wkp = 1 THEN
- arg_msg = '系统已设置为生产计划直接确认车间完成'
- rslt = 0
- GOTO ext
- END IF
- IF billid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF it_newbegin Or it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行审核"
- GOTO ext
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已经审核"
- GOTO ext
- END IF
- //检查调出工组,工组进度解决方案 110527
- //////////////////////////////////////////////////
- Int li_jdtype
- SELECT jdtype
- INTO :li_jdtype
- FROM u_sc_workgroup
- Where wrkGrpid = :sworkgroupid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询调出工组工组进度解决方案操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF li_jdtype <> 0 THEN
- rslt = 0
- IF billtype = 0 THEN
- arg_msg = "调出工组工组进度解决方案设置不是[按工组交接数统计],不能使用工组交接单"
- ELSE
- arg_msg = "完成工组工组进度解决方案设置不是[按工组交接数统计],不能使用工组完工单"
- END IF
- GOTO ext
- END IF
- //////////////////////////////////////////////// //
- UPDATE u_orderworkgroup_num
- SET auditrep = :publ_operator,
- auditdate = getdate(),
- flag = 1
- WHERE u_orderworkgroup_num.billid = :billid
- And flag = 0 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //更新工组完成数
- Decimal not_finishqty
- Long ll_printid,ll_printid_next,ll_owrkGrpid_next,ll_workgroupid_next
- String ls_wkpname_next
- Int li_iflast
- Long ll_j
- FOR i = 1 To it_mxbt
- not_finishqty = 0
- SELECT (orderqty - finishqty - stopqty) * (1 + uprate),printid,iflast
- INTO :not_finishqty,:ll_printid,:li_iflast
- FROM u_OrderMtrl_workgroup
- WHERE orderid = :wkpmx[i].orderid
- AND scid = :wkpmx[i].orderscid
- AND wrkGrpid = :sworkgroupid
- AND ( owrkGrpid = :dworkgroupid AND iflast = 0 AND :billtype = 0 OR iflast = 1 AND :billtype = 2 )
- AND wkpname = :wkpmx[i].wkpname
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',查询物料:'+wkpmx[i].mtrlcode+'源工组未完成数量失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF wkpmx[i].qty > not_finishqty THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',物料:'+wkpmx[i].mtrlcode+'当前数量'+String(wkpmx[i].qty,'#,##0.0###')+' > 工组未完成数量'+String(not_finishqty,'#,##0.0###')+',不能审核'
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_OrderMtrl_workgroup
- SET finishqty = finishqty + :wkpmx[i].qty
- WHERE orderid = :wkpmx[i].orderid
- AND scid = :wkpmx[i].orderscid
- AND wrkGrpid = :sworkgroupid
- AND ( owrkGrpid = :dworkgroupid AND iflast = 0 AND :billtype = 0 OR iflast = 1 AND :billtype = 2 )
- AND wkpname = :wkpmx[i].wkpname
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',更新物料:'+wkpmx[i].mtrlcode+'源工组未完成数量失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_OrderMtrl_workgroup
- SET finishflag = 1,
- finishdate = :billdate
- WHERE orderid = :wkpmx[i].orderid
- AND scid = :wkpmx[i].orderscid
- AND mtrlid = :wkpmx[i].mtrlid
- AND wrkGrpid = :sworkgroupid
- AND ( owrkGrpid = :dworkgroupid AND iflast = 0 AND :billtype = 0 OR iflast = 1 AND :billtype = 2 )
- AND wkpname = :wkpmx[i].wkpname
- AND orderqty <= finishqty + stopqty
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',更新物料:'+wkpmx[i].mtrlcode+'工组完成标记失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- //更新下一调拨接收数
- IF li_iflast = 0 THEN
- SELECT min(printid) INTO :ll_printid_next
- FROM u_OrderMtrl_workgroup
- WHERE orderid = :wkpmx[i].orderid
- AND scid = :wkpmx[i].orderscid
- AND printid > :ll_printid
- AND wrkgrpid = :dworkgroupid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',查询物料:'+wkpmx[i].mtrlcode+'调入工组调拨资料失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ds_update_acceptqty.Retrieve(wkpmx[i].orderscid,wkpmx[i].orderid,ll_printid_next,dworkgroupid)
- FOR ll_j = 1 To ds_update_acceptqty.RowCount()
- ll_owrkGrpid_next = ds_update_acceptqty.Object.owrkGrpid[ll_j]
- ls_wkpname_next = ds_update_acceptqty.Object.wkpname[ll_j]
- ll_workgroupid_next = ds_update_acceptqty.Object.workgroupid[ll_j]
-
- UPDATE u_OrderMtrl_workgroup
- SET acceptqty = acceptqty + :wkpmx[i].qty
- WHERE orderid = :wkpmx[i].orderid
- AND scid = :wkpmx[i].orderscid
- AND wrkGrpid = :dworkgroupid
- AND owrkGrpid = :ll_owrkGrpid_next
- AND wkpname = :ls_wkpname_next
- AND workgroupid = :ll_workgroupid_next
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',更新物料:'+wkpmx[i].mtrlcode+'下工组调入数量失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
-
-
- If (billtype = 0 Or billtype = 2 ) And wkpmx[i].planid > 0 THEN
- IF uo_oplan.addmxcmpl(wkpmx[i].planscid,wkpmx[i].planid,wkpmx[i].planprintid,wkpmx[i].qty,arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_oplan.tryfinish(wkpmx[i].planscid,wkpmx[i].planid,arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF uo_jd.uof_order_add_wrk_jd(scid,wkpmx[i].orderid,arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF wkpmx[i].lossqty > 0 And li_ifloss = 0 THEN
- li_ifloss = 1
- END IF
- NEXT
- //建损耗进仓单
- IF li_ifloss = 1 THEN
- Long ll_rellossid,ll_scid,ll_storageid
- String ls_rellosscode
-
- SELECT u_storage.storageid,
- u_storage.scid
- INTO :ll_storageid,:ll_scid
- FROM u_storage,u_sc_workgroup,u_sc_wkp
- WHERE u_sc_workgroup.storageid = u_sc_wkp.wrkgrpid
- AND u_sc_wkp.storageid2 = u_storage.storageid
- AND u_sc_workgroup.wrkgrpid = :sworkgroupid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询调出工组对应车间所属对应损耗仓库资料失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
-
- IF uo_loss_in.newbegin(ll_scid,8,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_loss_in.indate = billdate
- uo_loss_in.inrep = relrep
- uo_loss_in.part = billcode
- uo_loss_in.storageid = ll_storageid
- uo_loss_in.sptname = '工组调拨单|工组完工单(损耗进仓)'
-
- FOR i = 1 To it_mxbt
- IF wkpmx[i].mtrlid > 0 And wkpmx[i].lossqty > 0 THEN
- String ls_mtrlcode,ls_unit
- String ls_plancode
- Decimal ls_planprice
- Long ll_cusid
-
- SELECT u_mtrldef.mtrlcode,
- u_mtrldef.unit
- INTO :ls_mtrlcode,
- :ls_unit
- FROM u_mtrldef
- WHERE u_mtrldef.mtrlid = :wkpmx[i].mtrlid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(i)+",查询资料失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- ls_plancode = ''
- ll_cusid = 0
-
- f_get_planprice_mtrl(wkpmx[i].mtrlid,wkpmx[i].status,wkpmx[i].woodcode,wkpmx[i].pcode,ls_planprice)
-
-
- IF uo_loss_in.acceptmx(wkpmx[i].printid,&
- wkpmx[i].mtrlid,&
- ls_mtrlcode,&
- ls_plancode,&
- wkpmx[i].status,&
- wkpmx[i].lossqty,&
- ls_planprice,&
- 1,&
- '',&
- arg_msg,&
- 0,&
- wkpmx[i].orderid,&
- 1,&
- wkpmx[i].woodcode,&
- wkpmx[i].pcode,&
- ll_cusid,&
- ls_unit,&
- 1,wkpmx[i].lossqty,0,0,'',wkpmx[i].waredscrp,0,0,&
- wkpmx[i].mtrlcuscode,&
- wkpmx[i].Location,&
- wkpmx[i].qty,0) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
-
- IF uo_loss_in.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_loss_in.getinfo(uo_loss_in.scid,uo_loss_in.inwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_loss_in.auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ll_rellossid = uo_loss_in.inwareid
- ls_rellosscode = uo_loss_in.inwarecode
-
- UPDATE u_orderworkgroup_num
- SET rellossid = :ll_rellossid,
- relcpscid = :ll_scid,
- rellosscode = :ls_rellosscode
- WHERE u_orderworkgroup_num.billid = :billid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新单据相关损耗进仓单资料操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_oplan
- Destroy uo_jd
- Destroy uo_loss_in
- Destroy ds_update_acceptqty
- RETURN rslt
- end function
- public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- Long cnt = 0,i
- DateTime null_dt
- SetNull(null_dt)
- IF uo_option_ml_wkp = -1000 THEN
- arg_msg = '选项:[047]生产计划直接确认车间或工序完成,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- uo_order_plan uo_oplan
- uo_oplan = Create uo_order_plan
- uo_order_wkp_jd uo_jd
- uo_jd = Create uo_order_wkp_jd
- uo_inware_other uo_loss_in
- uo_loss_in = Create uo_inware_other
- uo_loss_in.commit_transaction = commit_transaction
- datastore ds_update_acceptqty
- ds_update_acceptqty = Create datastore
- ds_update_acceptqty.DataObject = 'ds_order_ml_update_acceptqty'
- ds_update_acceptqty.SetTransObject(commit_transaction)
- IF uo_option_ml_wkp = 1 THEN
- arg_msg = '系统已设置为生产计划直接确认车间完成'
- rslt = 0
- GOTO ext
- END IF
- IF billid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF it_newbegin Or it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行审核"
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "单据还未审核"
- GOTO ext
- END IF
- IF secflag = 1 THEN
- rslt = 0
- arg_msg = "单据已仓库审核"
- GOTO ext
- END IF
- UPDATE u_orderworkgroup_num
- SET auditrep = '',
- auditdate = :null_dt,
- flag = 0,
- rellossscid = 0,
- rellossid = 0
- WHERE u_orderworkgroup_num.billid = :billid
- AND flag = 1
- And secflag = 0 Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在撤消审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //更新工组完成数
- Decimal ld_finishqty
- Long ll_printid,ll_printid_next,ll_owrkGrpid_next,ll_workgroupid_next
- String ls_wkpname_next
- Int li_iflast
- Long ll_j
- FOR i = 1 To it_mxbt
- ld_finishqty = 0
- SELECT finishqty,printid,iflast
- INTO :ld_finishqty,:ll_printid,:li_iflast
- FROM u_OrderMtrl_workgroup
- WHERE orderid = :wkpmx[i].orderid
- AND scid = :wkpmx[i].orderscid
- AND wrkGrpid = :sworkgroupid
- AND ( owrkGrpid = :dworkgroupid AND iflast = 0 AND :billtype = 0 OR iflast = 1 AND :billtype = 2 )
- AND wkpname = :wkpmx[i].wkpname
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',查询物料:'+wkpmx[i].mtrlcode+'源工组已完成数量失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF wkpmx[i].qty > ld_finishqty THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',物料:'+wkpmx[i].mtrlcode+'当前数量'+String(wkpmx[i].qty,'#,##0.0###')+' > 工组已完成数量'+String(ld_finishqty,'#,##0.0###')+',不能撤审'
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_ordermtrl_workgroup
- SET finishqty = finishqty - :wkpmx[i].qty
- WHERE orderid = :wkpmx[i].orderid
- AND mtrlid = :wkpmx[i].mtrlid
- AND wrkGrpid = :sworkgroupid
- AND ( owrkGrpid = :dworkgroupid AND iflast = 0 AND :billtype = 0 OR iflast = 1 AND :billtype = 2 )
- AND wkpname = :wkpmx[i].wkpname
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',更新源工组未完成数量失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_ordermtrl_workgroup
- SET finishflag = 0,
- finishdate = :null_dt
- WHERE orderid = :wkpmx[i].orderid
- AND mtrlid = :wkpmx[i].mtrlid
- AND wrkGrpid = :sworkgroupid
- AND ( owrkGrpid = :dworkgroupid AND iflast = 0 AND :billtype = 0 OR iflast = 1 AND :billtype = 2 )
- AND wkpname = :wkpmx[i].wkpname
- AND orderqty <> finishqty + stopqty
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',更新源工组完成标记失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- //更新下一调拨接收数
- IF li_iflast = 0 THEN
- SELECT min(printid) INTO :ll_printid_next
- FROM u_OrderMtrl_workgroup
- WHERE orderid = :wkpmx[i].orderid
- AND scid = :wkpmx[i].orderscid
- AND printid > :ll_printid
- AND wrkgrpid = :dworkgroupid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',查询物料:'+wkpmx[i].mtrlcode+'调入工组调拨资料失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ds_update_acceptqty.Retrieve(wkpmx[i].orderscid,wkpmx[i].orderid,ll_printid_next,dworkgroupid)
- FOR ll_j = 1 To ds_update_acceptqty.RowCount()
- ll_owrkGrpid_next = ds_update_acceptqty.Object.owrkGrpid[ll_j]
- ls_wkpname_next = ds_update_acceptqty.Object.wkpname[ll_j]
- ll_workgroupid_next = ds_update_acceptqty.Object.workgroupid[ll_j]
-
- UPDATE u_OrderMtrl_workgroup
- SET acceptqty = acceptqty - :wkpmx[i].qty
- WHERE orderid = :wkpmx[i].orderid
- AND scid = :wkpmx[i].orderscid
- AND wrkGrpid = :dworkgroupid
- AND owrkGrpid = :ll_owrkGrpid_next
- AND wkpname = :ls_wkpname_next
- AND workgroupid = :ll_workgroupid_next
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+',更新物料:'+wkpmx[i].mtrlcode+'下工组调入数量失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
-
- If (billtype = 0 Or billtype = 2 ) And wkpmx[i].planid > 0 THEN
- IF uo_oplan.addmxcmpl(wkpmx[i].planscid,wkpmx[i].planid,wkpmx[i].planprintid,0 - wkpmx[i].qty,arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_oplan.tryfinish(wkpmx[i].planscid,wkpmx[i].planid,arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF uo_jd.uof_order_add_wrk_jd(scid,wkpmx[i].orderid,arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(wkpmx[i].printid)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- //撤审删除损耗进仓单
- IF rellossid > 0 THEN
- IF uo_loss_in.getinfo(rellossscid,rellossid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_loss_in.c_auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_loss_in.del(rellossscid,rellossid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- flag = 0
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_oplan
- Destroy uo_jd
- Destroy uo_loss_in
- Destroy ds_update_acceptqty
- RETURN rslt
- end function
- public function integer p_reset ();//int p_reset()
- //清除对象及其明细
- billid=0
- billcode=''
- opemp=''
- auditrep=''
- flag=0
- scid = 0
- relcode=''
- sworkgroupid = 0
- dworkgroupid = 0
- dscrp = ''
- relcpscid = 0
- relcpid = 0
- rellossscid = 0
- rellossid = 0
- it_newbegin=false
- it_updatebegin=false
- //清除明细
- p_clearmx()
- return 1
- end function
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);//add_dscrp(string arg_newdescppart)
- //0 fail 1 success
- int rslt=1
- arg_newdescppart=trim(arg_newdescppart)
- if it_updatebegin or it_newbegin then
- rslt=0
- arg_msg="编辑状态下不可用"
- goto ext
- end if
- if arg_newdescppart='' then
- rslt=0
- arg_msg="要添加内容为空,操作取消"
- goto ext
- end if
- rslt=p_getinfo(arg_billid,arg_msg)
- if rslt=0 then goto ext
- if flag=0 then
- rslt=0
- arg_msg="非审核状态下不可用"
- goto ext
- end if
- update u_orderworkgroup_num
- set dscrp = dscrp+' '+:arg_newdescppart
- where u_orderworkgroup_num.billid = :arg_billid using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rollback using commit_transaction;
- rslt=0
- arg_msg="因网络或其它原因导致添加单据备注操作失败"+"~n"+commit_transaction.sqlerrtext
- goto ext
- end if
- commit using commit_transaction;
- dscrp = dscrp+' '+arg_newdescppart
- ext: 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 billcode,
- relcode,
- sworkgroupid,
- dworkgroupid,
- flag,
- secflag,
- dscrp,
- billdate,
- relcpscid,
- relcpid,
- relcpcode,
- relrep,
- billtype,
- scid,
- rellossscid,
- rellossid
- INTO :billcode,
- :relcode,
- :sworkgroupid,
- :dworkgroupid,
- :flag,
- :secflag,
- :dscrp,
- :billdate,
- :relcpscid,
- :relcpid,
- :relcpcode,
- :relrep,
- :billtype,
- :scid,
- :rellossscid,
- :rellossid
- FROM u_orderworkgroup_num
- WHERE u_orderworkgroup_num.billid = :arg_billid
- USING commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败(错误单据唯一码)"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- billid = arg_billid
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer updatebegin (long arg_billid, ref string arg_msg);Long rslt = 1
- IF uo_option_ml_wkp = -1000 THEN
- arg_msg = '选项:[047]生产计划直接确认车间或工序完成,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_ml_wkp = 1 THEN
- arg_msg = '系统已设置为生产计划直接确认车间完成'
- rslt = 0
- GOTO ext
- END IF
- IF arg_billid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
- rslt = p_getinfo(arg_billid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF flag = 1 THEN
- rslt = 0
- arg_msg = '单据已经审核,不可以修改'
- GOTO ext
- END IF
- billid = arg_billid
- it_newbegin = False
- it_updatebegin = True
- p_clearmx() //清除明细
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- IF uo_option_ml_wkp = -1000 THEN
- arg_msg = '选项:[047]生产计划直接确认车间或工序完成,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_ml_wkp = 1 THEN
- arg_msg = '系统已设置为生产计划直接确认车间完成'
- rslt = 0
- GOTO ext
- END IF
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = "没有删除对象,操作取消"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_billid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已经审核,不可以删除"
- GOTO ext
- END IF
- DELETE FROM u_orderworkgroup_num
- Where u_orderworkgroup_num.billid = :arg_billid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_orderworkgroup_nummx
- Where u_orderworkgroup_nummx.billid = :arg_billid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- RETURN rslt
- end function
- public function integer p_clearmx ();//int p_clearmx()
- //清除明细
- it_mxbt=0
- return 1
- end function
- public function integer getinfo (long arg_billid, 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
- rslt = p_getinfo(arg_billid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- //用游标读取明细
- DECLARE cur_wkpmx CURSOR FOR
- SELECT u_orderworkgroup_nummx.printid,
- u_orderworkgroup_nummx.mtrlid,
- u_mtrldef.mtrlcode,
- u_orderworkgroup_nummx.status,
- u_orderworkgroup_nummx.qty,
- u_orderworkgroup_nummx.orderid,
- u_order_ml.ordercode,
- u_orderworkgroup_nummx.mxdscrp,
- u_orderworkgroup_nummx.wkpname,
- u_orderworkgroup_nummx.orderscid,
- u_orderworkgroup_nummx.woodcode,
- u_orderworkgroup_nummx.pcode,
- u_orderworkgroup_nummx.mtrlcuscode,
- u_orderworkgroup_nummx.location,
- u_orderworkgroup_nummx.waredscrp,
- u_orderworkgroup_nummx.planscid,
- u_orderworkgroup_nummx.planid,
- u_orderworkgroup_nummx.planprintid,
- u_orderworkgroup_nummx.uqty,
- u_orderworkgroup_nummx.unit,
- u_orderworkgroup_nummx.rate,
- u_orderworkgroup_nummx.lossqty
- FROM u_orderworkgroup_nummx INNER JOIN
- u_mtrldef ON u_orderworkgroup_nummx.mtrlid = u_mtrldef.mtrlid INNER JOIN
- u_Order_ml ON u_orderworkgroup_nummx.orderid = u_Order_ml.OrderID AND
- u_orderworkgroup_nummx.orderscid = u_Order_ml.scid
- WHERE u_orderworkgroup_nummx.billid = :arg_billid
- USING commit_transaction;
-
- OPEN cur_wkpmx;
- FETCH cur_wkpmx INTO :wkpmx[i].printid,:wkpmx[i].mtrlid,
- :wkpmx[i].mtrlcode,:wkpmx[i].status,:wkpmx[i].qty,
- :wkpmx[i].orderid,:wkpmx[i].ordercode,:wkpmx[i].mxdscrp,
- :wkpmx[i].wkpname,:wkpmx[i].orderscid,
- :wkpmx[i].woodcode,:wkpmx[i].pcode,
- :wkpmx[i].mtrlcuscode,:wkpmx[i].location,
- :wkpmx[i].waredscrp,:wkpmx[i].planscid,
- :wkpmx[i].planid,:wkpmx[i].planprintid,
- :wkpmx[i].uqty,:wkpmx[i].unit,:wkpmx[i].rate,:wkpmx[i].lossqty;
-
- DO WHILE commit_transaction.SQLCode = 0
- i++
- FETCH cur_wkpmx INTO :wkpmx[i].printid,:wkpmx[i].mtrlid,
- :wkpmx[i].mtrlcode,:wkpmx[i].status,:wkpmx[i].qty,
- :wkpmx[i].orderid,:wkpmx[i].ordercode,:wkpmx[i].mxdscrp,
- :wkpmx[i].wkpname,:wkpmx[i].orderscid,
- :wkpmx[i].woodcode,:wkpmx[i].pcode,
- :wkpmx[i].mtrlcuscode,:wkpmx[i].location,
- :wkpmx[i].waredscrp,:wkpmx[i].planscid,
- :wkpmx[i].planid,:wkpmx[i].planprintid,
- :wkpmx[i].uqty,:wkpmx[i].unit,:wkpmx[i].rate,:wkpmx[i].lossqty;
- LOOP
- CLOSE cur_wkpmx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_orderworkgroup_nummx
- WHERE u_orderworkgroup_nummx.billid = :arg_billid
- USING commit_transaction;
- IF commit_transaction.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
- billid = arg_billid
- it_mxbt = i - 1
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer secauditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i
- Long ll_wrkGrpid
- uo_inware_cp uo_cp
- uo_cp = CREATE uo_inware_cp
- uo_cp.commit_transaction = commit_transaction
- uo_cp.if_getid_ture = FALSE
- IF uo_option_ml_wkp = -1000 THEN
- arg_msg = '选项:[047]生产计划直接确认车间或工序完成,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_orderworkgroup_num_cp = -1000 THEN
- arg_msg = '选项:[210]工组完工单使用仓库审,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_taskplancode = -1000 THEN
- arg_msg = '选项:[048]销售订单生产批号类型,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_ml_wkp = 1 THEN
- arg_msg = '系统已设置为生产计划直接确认车间完成'
- rslt = 0
- GOTO ext
- END IF
- if uo_option_orderworkgroup_num_cp = 0 then
- arg_msg = '系统已设置为工组完工单不使用仓库审'
- rslt = 0
- GOTO ext
- END IF
-
- IF billid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF it_newbegin OR it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行审核"
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "单据还未审核"
- GOTO ext
- END IF
- IF secflag = 1 THEN
- rslt = 0
- arg_msg = "单据已仓库审核"
- GOTO ext
- END IF
- UPDATE u_orderworkgroup_num
- SET secauditemp = :publ_operator,
- secauditdate = getdate(),
- secflag = 1
- WHERE u_orderworkgroup_num.billid = :billid
- AND flag = 1 AND secflag = 0 USING commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致仓库审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在仓库审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //查调出工组所属车间
- SELECT u_sc_workgroup.storageid
- INTO :ll_wrkGrpid
- FROM u_sc_workgroup
- WHERE u_sc_workgroup.wrkGrpid = :sworkgroupid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询调出工组所属车间资料失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF ll_wrkGrpid = 0 THEN
- rslt = 0
- arg_msg = "调出工组未设所属车间资料,请检查"
- GOTO ext
- END IF
- //建成品进仓单
- Long ll_relcpid,ll_scid,ll_storageid
- String ls_relcpcode
- SELECT u_storage.storageid,
- u_storage.scid
- INTO :ll_storageid,:ll_scid
- FROM u_storage
- WHERE u_storage.storageid = :dworkgroupid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询调入仓库资料失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF uo_cp.newbegin(ll_scid,3,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_cp.indate = billdate
- uo_cp.inrep = relrep
- uo_cp.part = billcode
- uo_cp.storageid = ll_storageid
- uo_cp.relid = ll_wrkGrpid
- FOR i = 1 TO it_mxbt
- IF wkpmx[i].mtrlid > 0 THEN
- String ls_mtrlcode,ls_unit
- String ls_taskrelcode,ls_plancode
- Decimal ls_planprice
- Long ll_cusid
-
- SELECT u_mtrldef.mtrlcode,
- u_mtrldef.unit,
- u_order_ml.taskrelcode
- INTO :ls_mtrlcode,
- :ls_unit,
- :ls_taskrelcode
- FROM u_mtrldef,u_order_ml
- WHERE u_mtrldef.mtrlid = u_order_ml.mtrlid
- AND u_order_ml.scid = :wkpmx[i].orderscid
- AND u_order_ml.orderid = :wkpmx[i].orderid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询计划资料失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF uo_option_taskplancode = 1 THEN
- ls_plancode = ls_taskrelcode
- ELSE
- ls_plancode = ''
- END IF
-
- f_get_planprice_mtrl(wkpmx[i].mtrlid,wkpmx[i].status,wkpmx[i].woodcode,wkpmx[i].pcode,ls_planprice)
-
-
- SELECT u_order_ml.cusid
- INTO :ll_cusid
- FROM u_order_ml
- WHERE u_order_ml.scid = :wkpmx[i].orderscid
- AND u_order_ml.orderid = :wkpmx[i].orderid
- USING commit_transaction;
- IF commit_transaction.SQLCode = -1 THEN
- rslt = 0
- arg_msg = "查询计划资料(客户)失败"
- GOTO ext
- ELSEIF commit_transaction.SQLCode = 100 THEN
- ll_cusid = 0
- END IF
-
- IF IsNull(ll_cusid) THEN ll_cusid = 0
-
- IF uo_cp.acceptmx(wkpmx[i].printid,&
- wkpmx[i].mtrlid,&
- ls_mtrlcode,&
- ls_plancode,&
- wkpmx[i].status,&
- wkpmx[i].uqty,&
- ls_planprice,&
- 1,&
- '',&
- arg_msg,&
- 0,&
- wkpmx[i].orderid,&
- 1,&
- wkpmx[i].woodcode,&
- wkpmx[i].pcode,&
- ll_cusid,&
- wkpmx[i].unit,&
- wkpmx[i].rate,wkpmx[i].qty,0,0,'',wkpmx[i].waredscrp,0,0,&
- wkpmx[i].mtrlcuscode,&
- wkpmx[i].Location,&
- wkpmx[i].qty,0) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- IF uo_cp.Save(FALSE,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_cp.getinfo(uo_cp.scid,uo_cp.inwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_cp.auditing(FALSE,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ll_relcpid = uo_cp.inwareid
- ls_relcpcode = uo_cp.inwarecode
- UPDATE u_orderworkgroup_num
- SET relcpid = :ll_relcpid,
- relcpscid = :ll_scid,
- relcpcode = :ls_relcpcode
- WHERE u_orderworkgroup_num.billid = :billid
- USING commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新单据相关成品进仓单资料操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- secflag = 1
- ext:
- DESTROY uo_cp
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer c_secauditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0
- DateTime null_dt
- SetNull(null_dt)
- uo_inware_cp uo_cp
- uo_cp = Create uo_inware_cp
- uo_cp.commit_transaction = commit_transaction
- IF uo_option_ml_wkp = -1000 THEN
- arg_msg = '选项:[047]生产计划直接确认车间或工序完成,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_ml_wkp = 1 THEN
- arg_msg = '系统已设置为生产计划直接确认车间完成'
- rslt = 0
- GOTO ext
- END IF
- IF billid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF it_newbegin Or it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行审核"
- GOTO ext
- END IF
- IF secflag = 0 THEN
- rslt = 0
- arg_msg = "单据还未仓审"
- GOTO ext
- END IF
- UPDATE u_orderworkgroup_num
- SET secauditemp = '',
- secauditdate = :null_dt,
- secflag = 0
- WHERE u_orderworkgroup_num.billid = :billid
- And flag = 1 And secflag = 1 Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致仓审撤审单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在仓审撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //撤审删除成品进仓单
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_inware
- WHERE scid = :relcpscid
- And inwareid = :relcpid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询相关生产进仓单是否存在失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 1 THEN
- arg_msg = '相关生产进仓单数目错误,操作取消'
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 1 THEN
- IF uo_cp.getinfo(relcpscid,relcpid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_cp.c_auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_cp.del(relcpscid,relcpid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- UPDATE u_orderworkgroup_num
- SET relcpid = 0,
- relcpscid = 0,
- relcpcode = ''
- WHERE u_orderworkgroup_num.billid = :billid
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新单据相关成品进仓单资料操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- secflag = 0
- ext:
- Destroy uo_cp
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer newbegin (ref string arg_msg);Int rslt = 1
- IF uo_option_ml_wkp = -1000 THEN
- arg_msg = '选项:[047]生产计划直接确认车间或工序完成,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_ml_wkp = 1 THEN
- arg_msg = '系统已设置为生产计划直接确认车间完成'
- rslt = 0
- GOTO ext
- END IF
- p_reset()
- it_newbegin = TRUE
- it_updatebegin = FALSE
- ext:
- RETURN rslt
- end function
- public function integer uof_finish_wkp (long arg_scid, long arg_orderid, string arg_wkpname, long arg_wrkgrpid, long arg_owrkgrpid, integer arg_type, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_finishflag
- DateTime null_dt
- SetNull(null_dt)
- IF uo_option_ml_wkp = -1000 THEN
- arg_msg = '选项:[047]生产计划直接确认车间或工序完成,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_ml_wkp = 0 THEN
- arg_msg = '系统没有设置为直接确认生产计划车间完成'
- rslt = 0
- GOTO ext
- END IF
- SELECT finishflag INTO :li_finishflag
- FROM u_OrderMtrl_workgroup
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wkpname = :arg_wkpname
- AND wrkGrpid = :arg_wrkGrpid
- AND owrkGrpid = :arg_owrkGrpid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询车间完成标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_type = 0 THEN
-
- IF li_finishflag = 1 THEN
- arg_msg = '车间已确认,不能再确认'
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_OrderMtrl_workgroup
- SET finishflag = 1,
- finishdate = getdate(),
- finishqty = orderqty
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wkpname = :arg_wkpname
- AND wrkGrpid = :arg_wrkGrpid
- AND owrkGrpid = :arg_owrkGrpid
- AND finishflag = 0;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '确认车间完成失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
-
- IF li_finishflag = 0 THEN
- arg_msg = '车间还未确认,不能取消确认'
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_OrderMtrl_workgroup
- SET finishflag = 0,
- finishdate = :null_dt,
- finishqty = 0
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wkpname = :arg_wkpname
- AND wrkGrpid = :arg_wrkGrpid
- AND owrkGrpid = :arg_owrkGrpid
- AND finishflag = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '取消确认车间完成失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- 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 add_mxdscrp (long arg_billid, long arg_printid, string arg_newdescppart, ref string arg_msg);//add_dscrp(string arg_newdescppart)
- //0 fail 1 success
- Int rslt = 1
- arg_newdescppart = Trim(arg_newdescppart)
- IF it_updatebegin OR it_newbegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可用"
- GOTO ext
- END IF
- IF arg_newdescppart = '' THEN
- rslt = 0
- arg_msg = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_billid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "非审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_orderworkgroup_nummx
- SET mxdscrp = ltrim(rtrim(mxdscrp))+' '+:arg_newdescppart
- WHERE u_orderworkgroup_nummx.billid = :arg_billid
- AND u_orderworkgroup_nummx.printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ROLLBACK USING commit_transaction;
- rslt = 0
- arg_msg = "因网络或其它原因导致添加明细备注操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- COMMIT USING commit_transaction;
- ext:
- Return (rslt)
- end function
- public function integer acceptmx (long arg_printid, long arg_orderscid, long arg_orderid, string arg_ordercode, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_qty, string arg_mxdscrp, string arg_wkpname, string arg_mtrlcuscode, string arg_location, string arg_waredscrp, long arg_planscid, long arg_planid, long arg_planprintid, decimal arg_uqty, string arg_unit, decimal arg_rate, decimal arg_lossqty, ref string arg_msg);Int rslt = 1
- Long cnt = 0,ls_i
- String ls_swkpname,ls_owkpname,ls_oplancode
- Decimal ld_Qty_oplan_notfinish,ld_Qty_oplan_notaudit
- Decimal ld_qty_owkp_notfinish,ld_Qty_owkp_notaudit
- Decimal ld_uprate
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_orderscid) THEN arg_orderscid = 0
- IF IsNull(arg_orderid) THEN arg_orderid = 0
- IF IsNull(arg_ordercode) THEN arg_ordercode = ''
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
- IF IsNull(arg_wkpname) THEN arg_wkpname = ''
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_mtrlcuscode) THEN arg_mtrlcuscode = ''
- IF IsNull(arg_location) THEN arg_location = ''
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF IsNull(arg_waredscrp) THEN arg_waredscrp = ''
- IF IsNull(arg_planid) THEN arg_planid = 0
- IF IsNull(arg_planprintid) THEN arg_planprintid = 0
- IF IsNull(arg_planscid) THEN arg_planscid = 0
- IF IsNull(arg_uqty) THEN arg_uqty = 0
- IF IsNull(arg_unit) THEN arg_unit = ''
- IF IsNull(arg_rate) THEN arg_rate = 1
- IF arg_rate = 0 THEN arg_rate = 1
- // 如果数量为 0则不作任何处理
- IF arg_qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- //检查物料id
- SELECT count(*)
- INTO :cnt
- FROM u_order_ml
- WHERE mtrlid = :arg_mtrlid
- AND orderid = :arg_orderid
- And scid = :sys_scid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+",查询生产计划操作失败,编号:"+arg_mtrlcode
- GOTO ext
- END IF
- //检查工组
- SELECT wrkGrpName INTO :ls_swkpname
- FROM u_sc_workgroup
- Where wrkGrpid = :sworkgroupid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',查询调出工组名称失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF billtype = 0 THEN
- SELECT wrkGrpName INTO :ls_owkpname
- FROM u_sc_workgroup
- Where wrkGrpid = :dworkgroupid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',查询调入工组名称失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF billtype = 0 Or billtype = 2 THEN
- IF arg_planid > 0 THEN
- SELECT oplancode INTO :ls_oplancode
- FROM u_order_plan
- WHERE scid = :arg_planscid
- And oplanid = :arg_planid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',查询派工单号失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- //检查已开单数
- SELECT u_order_planmx.qty - u_order_planmx.fqty,
- u_order_planmx.uprate
- INTO :ld_Qty_oplan_notfinish,:ld_uprate
- FROM u_order_planmx
- WHERE u_order_planmx.scid = :arg_orderscid
- AND u_order_planmx.oplanid = :arg_planid
- AND u_order_planmx.printid = :arg_planprintid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',工组派工单:'+ls_oplancode+',查询未完数失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- SELECT isnull(sum(u_orderworkgroup_nummx.qty),0) INTO :ld_Qty_oplan_notaudit
- FROM u_orderworkgroup_num,u_orderworkgroup_nummx
- WHERE u_orderworkgroup_num.billid = u_orderworkgroup_nummx.billid
- AND u_orderworkgroup_nummx.orderscid = :arg_orderscid
- AND u_orderworkgroup_nummx.planid = :arg_planid
- AND u_orderworkgroup_nummx.planprintid = :arg_planprintid
- AND u_orderworkgroup_num.flag = 0
- AND u_orderworkgroup_num.billid <> :billid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',工组派工单:'+ls_oplancode+',查询工组交接单已开单未审数失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF (ld_Qty_oplan_notfinish - ld_Qty_oplan_notaudit) * (1+ld_uprate) < arg_qty THEN
- arg_msg = '明细行:'+String(arg_printid)+',工组派工单:'+ls_oplancode+',未完成数:'+String(ld_Qty_oplan_notfinish,'#,#0.##########')+',已开单未审数:'+String(ld_Qty_oplan_notaudit,'#,#0.##########')+',不能再开单:'+String(arg_qty,'#,#0.##########')+',允许超比例:'+String(ld_uprate,'#,#0.##########')
- rslt = 0
- GOTO ext
- END IF
- ELSE
- arg_planscid = 0
- arg_planprintid = 0
- ls_oplancode = ''
- END IF
- END IF
- IF billtype = 0 THEN
- SELECT u_OrderMtrl_workgroup.orderqty - u_OrderMtrl_workgroup.finishqty - u_OrderMtrl_workgroup.stopqty,
- u_OrderMtrl_workgroup.uprate
- INTO :ld_qty_owkp_notfinish,:ld_uprate
- FROM u_OrderMtrl_workgroup
- WHERE u_OrderMtrl_workgroup.wrkGrpid = :sworkgroupid
- AND u_OrderMtrl_workgroup.owrkGrpid = :dworkgroupid
- AND u_OrderMtrl_workgroup.orderid = :arg_orderid
- AND u_OrderMtrl_workgroup.scid = :arg_orderscid
- AND u_OrderMtrl_workgroup.wkpname = :arg_wkpname
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询工组进度未完成数失败,工组调拨,计划:"+arg_ordercode+",物料:"+arg_mtrlcode+','+commit_transaction.sqlerrtext
- GOTO ext
- END IF
-
- SELECT isnull(sum(u_orderworkgroup_nummx.qty),0)
- INTO :ld_Qty_owkp_notaudit
- FROM u_orderworkgroup_num,u_orderworkgroup_nummx
- WHERE u_orderworkgroup_num.billid = u_orderworkgroup_nummx.billid
- AND u_orderworkgroup_nummx.orderscid = :arg_orderscid
- AND u_orderworkgroup_nummx.orderid = :arg_orderid
- AND u_orderworkgroup_nummx.wkpname = :arg_wkpname
- AND u_orderworkgroup_num.sworkgroupid = :sworkgroupid
- AND u_orderworkgroup_num.dworkgroupid = :dworkgroupid
- AND u_orderworkgroup_num.flag = 0
- AND u_orderworkgroup_num.billtype = 0
- AND u_orderworkgroup_num.billid <> :billid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',查询工组交接单已开单未审数失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF (ld_qty_owkp_notfinish - ld_Qty_owkp_notaudit) * (1 + ld_uprate) < arg_qty THEN
- arg_msg = '明细行:'+String(arg_printid)+',工组进度:'+ls_oplancode+',未完成数:'+String(ld_qty_owkp_notfinish,'#,#0.##########')+',已开单未审数:'+String(ld_Qty_owkp_notaudit,'#,#0.##########')+',不能再开单:'+String(arg_qty,'#,#0.##########')+',允许超比例:'+String(ld_uprate,'#,#0.##########')
- rslt = 0
- GOTO ext
- END IF
- ELSE
- SELECT u_OrderMtrl_workgroup.orderqty - u_OrderMtrl_workgroup.finishqty - u_OrderMtrl_workgroup.stopqty,
- u_OrderMtrl_workgroup.uprate
- INTO :ld_qty_owkp_notfinish,:ld_uprate
- FROM u_OrderMtrl_workgroup
- WHERE u_OrderMtrl_workgroup.wrkGrpid = :sworkgroupid
- AND u_OrderMtrl_workgroup.iflast = 1
- AND u_OrderMtrl_workgroup.orderid = :arg_orderid
- AND u_OrderMtrl_workgroup.scid = :arg_orderscid
- AND u_OrderMtrl_workgroup.wkpname = :arg_wkpname
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询工组进度未完成数失败,工组调拨,计划:"+arg_ordercode+",物料:"+arg_mtrlcode+','+commit_transaction.sqlerrtext
- GOTO ext
- END IF
-
- SELECT isnull(sum(u_orderworkgroup_nummx.qty),0)
- INTO :ld_Qty_owkp_notaudit
- FROM u_orderworkgroup_num,u_orderworkgroup_nummx
- WHERE u_orderworkgroup_num.billid = u_orderworkgroup_nummx.billid
- AND u_orderworkgroup_nummx.orderscid = :arg_orderscid
- AND u_orderworkgroup_nummx.orderid = :arg_orderid
- AND u_orderworkgroup_nummx.wkpname = :arg_wkpname
- AND u_orderworkgroup_num.sworkgroupid = :sworkgroupid
- AND u_orderworkgroup_num.flag = 0
- AND u_orderworkgroup_num.billtype = 2
- AND u_orderworkgroup_num.billid <> :billid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',查询工组完工单已开单未审数失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF (ld_qty_owkp_notfinish - ld_Qty_owkp_notaudit) * (1 + ld_uprate) < arg_qty THEN
- arg_msg = '明细行:'+String(arg_printid)+',工组进度:'+ls_oplancode+',未完成数:'+String(ld_qty_owkp_notfinish,'#,#0.##########')+',已开单未审数:'+String(ld_Qty_owkp_notaudit,'#,#0.##########')+',不能再开单:'+String(arg_qty,'#,#0.##########')+',允许超比例:'+String(ld_uprate,'#,#0.##########')
- rslt = 0
- GOTO ext
- END IF
- END IF
- //写入内容
- it_mxbt++
- wkpmx[it_mxbt].printid = arg_printid
- wkpmx[it_mxbt].orderid = arg_orderid
- wkpmx[it_mxbt].orderscid = arg_orderscid
- wkpmx[it_mxbt].ordercode = arg_ordercode
- wkpmx[it_mxbt].mtrlid = arg_mtrlid
- wkpmx[it_mxbt].mtrlcode = arg_mtrlcode
- wkpmx[it_mxbt].status = arg_status
- wkpmx[it_mxbt].woodcode = arg_woodcode
- wkpmx[it_mxbt].pcode = arg_pcode
- wkpmx[it_mxbt].wkpname = arg_wkpname
- wkpmx[it_mxbt].mtrlcuscode = arg_mtrlcuscode
- wkpmx[it_mxbt].Location = arg_location
- wkpmx[it_mxbt].qty = arg_qty
- wkpmx[it_mxbt].mxdscrp = arg_mxdscrp
- wkpmx[it_mxbt].waredscrp = arg_waredscrp
- wkpmx[it_mxbt].planscid = arg_planscid
- wkpmx[it_mxbt].planprintid = arg_planprintid
- wkpmx[it_mxbt].planid = arg_planid
- wkpmx[it_mxbt].oplancode = ls_oplancode
- wkpmx[it_mxbt].uqty = arg_uqty
- wkpmx[it_mxbt].lossqty = arg_lossqty
- wkpmx[it_mxbt].rate = arg_rate
- wkpmx[it_mxbt].unit = arg_unit
- ext:
- IF rslt = 0 THEN p_clearmx()
- Return(rslt)
- end function
- on uo_workgroup_num.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_workgroup_num.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;String arg_msg
- String str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('118',str_optionvalue,arg_msg)
- uo_option_orderworkgroup_time = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('210',str_optionvalue,arg_msg)
- uo_option_orderworkgroup_num_cp = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('047',str_optionvalue,arg_msg)
- uo_option_ml_wkp = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('038',str_optionvalue,arg_msg)
- uo_option_taskplancode = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('371',str_optionvalue,arg_msg)
- uo_option_workgroup_num_check = Long(str_optionvalue)
- end event
|