1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013 |
- $PBExportHeader$uo_order_wfjg.sru
- forward
- global type uo_order_wfjg from nonvisualobject
- end type
- type s_order_wfjgmx from structure within uo_order_wfjg
- end type
- type s_order_wfjgmx_out from structure within uo_order_wfjg
- end type
- end forward
- type s_order_wfjgmx from structure
- long orderid
- string ordercode
- long mtrlid
- decimal { 4 } qty
- string dscrp
- string mtrlcode
- long printid
- decimal { 10 } price
- datetime requiredate
- datetime accomplishdate
- long storageid
- string jgdscrp
- integer iforder
- string status
- string woodcode
- string pcode
- long relprintid
- long relid2
- string relcode
- string plancode
- string mxdscrp2
- string mxdscrp3
- string mxdscrp4
- end type
- type s_order_wfjgmx_out from structure
- long orderid
- string ordercode
- long mtrlid
- decimal { 4 } qty
- string dscrp
- string mtrlcode
- long printid
- decimal { 10 } price
- long storageid
- integer iforder
- string status
- string woodcode
- string pcode
- string dscrp2
- string unit
- string plancode
- string saletaskcode
- end type
- global type uo_order_wfjg from nonvisualobject
- end type
- global uo_order_wfjg uo_order_wfjg
- type variables
- PUBLIC PROTECTEDWRITE Long scid = 0
- PUBLIC PROTECTEDWRITE Long wfjgid = 0
- PUBLIC PROTECTEDWRITE String taskcode
- PUBLIC PROTECTEDWRITE DateTime opdate
- PUBLIC PROTECTEDWRITE String operator
- PUBLIC PROTECTEDWRITE Int status
- PUBLIC PROTECTEDWRITE DateTime accomplishdate
- PUBLIC PROTECTEDWRITE String permit_emp
-
- Long sptid = 0
- String assign_emp
- DateTime requiredate
- String dscrp = '' //备注
- Transaction commit_transaction //数据commit事务
- Int billtype
- int banktypeid
- PRIVATE:
- s_order_wfjgmx wfjgmx[] //明细结构数组
- s_order_wfjgmx_out wfjgmx_out[] //明细结构数组
- Long it_mxbt = 0 //明细结构数组末指针
- Long it_mxbt_out = 0 //明细结构数组末指针
- Boolean it_newbegin = TRUE //新建标志
- Boolean it_updatebegin = FALSE//修改标志
- end variables
- forward prototypes
- public function integer p_reset ()
- public function integer p_clearmx ()
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
- public function integer newbegin (long arg_scid, ref string arg_msg)
- public function integer p_getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg)
- public function integer getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg)
- public function integer add_dscrp (long arg_scid, long arg_wfjgid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancel (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancelpermit (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer finishtask (integer arg_finishtype, long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer firstpermit (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer lastpermit (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopbuytask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer tempstoptask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer trycmplbuytask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_scid, long arg_wfjgid, ref string arg_msg)
- public function integer addmxcmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, long arg_orderid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer checkmxmpl (long arg_scid, long arg_wfjgid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg)
- public function integer checkmxmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg)
- public function integer wasteqty (long arg_scid, decimal arg_wasteqty, long arg_wfjg_orderid, long arg_mtrlid, long arg_orderid, string arg_status, string arg_woodcode, string arg_pcode, string arg_mtrlcode, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopmx (long arg_scid, long arg_orderid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, decimal arg_stopqty, ref string arg_msg, boolean arg_commit)
- public function integer stopmx1 (long arg_scid, long arg_orderid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, decimal arg_stopqty, ref string arg_msg, boolean arg_commit)
- public function integer uf_del_outware_wfjg (boolean arg_ifcommit, ref string arg_msg)
- public function integer uf_create_outware_wfjg (boolean arg_ifcommit, ref string arg_msg)
- public function integer check_addmxcmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, long arg_orderid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (long arg_mtrlid, decimal arg_qty, decimal arg_price, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, datetime arg_requiredate, long arg_storageid, string arg_jgdscrp, string arg_status, string arg_woodcode, string arg_pcode, long arg_relprintid, long arg_relid2, string arg_relcode, long arg_orderid, string arg_plancode, string arg_mxdscrp2, string arg_mxdscrp3, string arg_mxdscrp4)
- public function integer uf_create_outware_wfjg_noaudit (boolean arg_ifcommit, ref string arg_msg)
- public function integer addmxcmpl (long arg_scid, long arg_wfjgid, long arg_mtrlid, long arg_orderid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit, long arg_printid)
- public function integer acceptmx_out (long arg_mtrlid, decimal arg_qty, decimal arg_price, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, long arg_storageid, string arg_status, string arg_woodcode, string arg_pcode, string arg_dscrp2, string arg_plancode, string arg_saletaskcode)
- end prototypes
- public function integer p_reset ();//INT p_RESET()
- //清除对象及其明细
- scid = 0
- wfjgid = 0
- taskcode = ''
- operator = ''
- status = 0
- it_newbegin = FALSE
- it_updatebegin = FALSE
- //清除明细
- P_CLEARMX()
- RETURN 1
- end function
- public function integer p_clearmx ();//INT p_clearmx()
- //清除明细
- it_mxbt = 0
- it_mxbt_out = 0
- RETURN 1
- end function
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit);//====================================================================
- // Function: savesubmit()
- //--------------------------------------------------------------------
- // Description:
- //--------------------------------------------------------------------
- // Arguments:
- // value string arg_operator
- // reference string arg_msg
- // value boolean arg_ifcommit
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2004.06.23
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- Integer rslt = 1,cnt = 0,i,j
- Long LS_NEWwfjgID
- DateTime server_datetime
- String ls_sccode
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(assign_emp) THEN assign_emp = ''
- IF IsNull(arg_operator) THEN arg_operator = ''
- IF Len(dscrp) > 0 THEN dscrp = ' ' + dscrp
- IF IsNull(billtype) THEN billtype = 0
- IF IsNull(banktypeid) THEN banktypeid = 0
- operator = arg_operator
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arG_MSG = "非编辑状态不可以提交"
- GOTO ext
- END IF
- IF Trim(assign_emp) = '' THEN
- rslt = 0
- arG_MSG = "请输入外加工负责人"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_spt
- Where sptid = :sptid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,供应商资料"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arG_MSG = "供应商未定义或错误"
- GOTO ext
- END IF
- SELECT Top 1 getdate() INTO :server_datetime FROM u_user USING commit_transaction;
- //取得系统时间,借用操作员表
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
- rslt = 0
- arG_MSG = "没有正确计划收货明细内容"
- GOTO ext
- END IF
- IF sys_option_wfjg_outmx = 1 And it_mxbt_out = 0 THEN
- rslt = 0
- arg_msg = "系统选项[079]限制,没有正确的计划发出明细内容"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :operator USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arG_MSG = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- opdate = server_datetime //填写单据建立时间(最近修改时间)
- ////////////////////////////////////////////////开始区分:新建/更新 处理
- IF wfjgID = 0 THEN //新建
- LS_NEWwfjgID = f_sys_scidentity(scid,"u_order_wfjg","wfjgID",arG_MSG,TRUE, commit_transaction) //数据commit事务)
- IF LS_NEWwfjgID <= 0 THEN
- rslt = 0
- // ROLLBACK;
- GOTO ext
- END IF
-
- IF f_get_sccode(scid,commit_transaction,ls_sccode,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- taskcode = getid(scid,ls_sccode + 'WJ',Date(server_datetime),FALSE,commit_transaction)
- IF taskcode = "err" THEN
- taskcode = ''
- rslt = 0
- arG_MSG = "无法获取外加工编号"+"~n"+commit_transaction.SQLErrText
- // ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- INSERT INTO u_order_wfjg
- ( scid,
- wfjgID,
- TaskCode,
- sptID,
- requiredate,
- Status,
- Opemp,
- Assign_Emp,
- Dscrp,
- opdate,
- billtype,
- banktypeid)
- VALUES ( :scid,
- :LS_NEWwfjgID,
- :TaskCode,
- :sptID,
- :requiredate,
- :Status,
- :Operator,
- :Assign_Emp,
- :Dscrp,
- :opdate,
- :billtype,
- :banktypeid) USING commit_transaction ;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- if pos(lower(commit_transaction.SQLErrText),'pk_u_order_wfjg') > 0 then
- arg_msg = '插入外加工计划操作失败,关键字分部ID、单据ID重复'
- else
- arG_MSG = "插入外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- end if
- // ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
-
- //读取新taskid
- wfjgID = LS_NEWwfjgID
-
- ELSE //////////////////////////////////////////////////更新
- UPDATE u_order_wfjg
- SET sptID = :sptID,
- requiredate = :requiredate,
- Assign_Emp = :Assign_Emp,
- Dscrp = :Dscrp,
- moddate = getdate(),
- Modemp = :publ_operator,
- billtype = :billtype,
- banktypeid = :banktypeid
- WHERE u_order_wfjg.wfjgID = :wfjgID
- AND u_order_wfjg.scid = :scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- if pos(lower(commit_transaction.SQLErrText),'pk_u_order_wfjg') > 0 then
- arg_msg = '更新外加工计划操作失败,关键字分部ID、单据ID重复'
- else
- arG_MSG = "更新外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- end if
- // ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
-
- //删除原有明细
- DELETE FROM u_order_wfjgMx
- WHERE u_order_wfjgMx.wfjgID = :wfjgID
- AND u_order_wfjgMx.scid = :scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
- // ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
-
-
-
- //删除原有明细
- DELETE FROM u_order_wfjgMx_out
- WHERE u_order_wfjgMx_out.wfjgID = :wfjgID
- AND u_order_wfjgMx_out.scid = :scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "删除旧有明细/计划出操作失败"+"~n"+commit_transaction.SQLErrText
- // ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
-
-
-
- END IF
- FOR i = 1 TO it_mxbt
- INSERT INTO u_order_wfjgMx
- ( scid,
- wfjgID,
- mtrlid,
- qty,
- price,
- dscrp,
- printid,
- requiredate,
- orderid,
- storageid,
- jgdscrp,
- status,
- woodcode,
- pcode,
- iforder,
- relprintid,
- relid2,
- relcode,
- plancode,
- mxdscrp2,
- mxdscrp3,
- mxdscrp4)
- VALUES (:scid,
- :wfjgID,
- :wfjgmx[i].mtrlid,
- :wfjgmx[i].QTY,
- :wfjgmx[i].price,
- :wfjgmx[i].dscrp,
- :wfjgmx[i].printid,
- :wfjgmx[i].requiredate,
- :wfjgmx[i].orderid,
- :wfjgmx[i].storageid,
- :wfjgmx[i].jgdscrp,
- :wfjgmx[i].status,
- :wfjgmx[i].woodcode,
- :wfjgmx[i].pcode,
- :wfjgmx[i].iforder,
- :wfjgmx[i].relprintid,
- :wfjgmx[i].relid2,
- :wfjgmx[i].relcode ,
- :wfjgmx[i].plancode,
- :wfjgmx[i].mxdscrp2,
- :wfjgmx[i].mxdscrp3,
- :wfjgmx[i].mxdscrp4
- ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
-
- if it_newbegin then
- wfjgID = 0 //还原taskid
- end if
- rslt = 0
- arG_MSG = "插入收货明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- FOR j = 1 TO it_mxbt_out
- INSERT INTO u_order_wfjgMx_out
- ( scid,
- wfjgID,
- mtrlid,
- qty,
- price,
- dscrp,
- printid,
- orderid,
- storageid,
- status,
- woodcode,
- pcode,
- iforder,
- dscrp2,
- plancode,
- saletaskcode)
- VALUES (:scid,
- :wfjgID,
- :wfjgmx_out[j].mtrlid,
- :wfjgmx_out[j].QTY,
- :wfjgmx_out[j].price,
- :wfjgmx_out[j].dscrp,
- :wfjgmx_out[j].printid,
- :wfjgmx_out[j].orderid,
- :wfjgmx_out[j].storageid,
- :wfjgmx_out[j].status,
- :wfjgmx_out[j].woodcode,
- :wfjgmx_out[j].pcode,
- :wfjgmx_out[j].iforder,
- :wfjgmx_out[j].dscrp2,
- :wfjgmx_out[j].plancode,
- :wfjgmx_out[j].saletaskcode) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- if it_newbegin then
- wfjgID = 0 //还原taskid
- end if
- rslt = 0
- arG_MSG = "插入发料明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
-
-
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 then
- ROLLBACK USING commit_transaction;
- p_clearmx()
- elseif arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- arg_msg = '外协订单,'+ arg_msg
- Return(rslt)
- end function
- public function integer newbegin (long arg_scid, ref string arg_msg);//重置对象,设定业务类型与关联ID,准备建立新单
- //0 fail 1 success
- long rslt=1,CNT=0
- if arg_scid < 0 then
- arg_msg = '请选择分部'
- rslt = 0
- goto ext
- end if
- p_reset()
- it_newbegin=TRUE
- it_updatebegin=FALSE
- scid=arg_scid
- ext:
- if rslt = 0 then p_reset()
- arg_msg = '外协订单,'+ arg_msg
- return rslt
- end function
- public function integer p_getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg);int rslt=1
- SELECT wfjgID,
- TaskCode,
- sptID,
- requiredate,
- accomplishdate,
- Status,
- Opemp,
- Assign_Emp,
- Permit_Emp,
- Dscrp,
- opdate,
- billtype
- INTO :wfjgID,
- :TaskCode,
- :sptID,
- :requiredate,
- :accomplishdate,
- :Status,
- :Operator,
- :Assign_Emp,
- :Permit_Emp,
- :Dscrp,
- :opdate,
- :billtype
- FROM u_order_wfjg
- WHERE u_order_wfjg.wfjgID = :arg_wfjgID
- and u_order_wfjg.scid = :arg_scid using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- if pos(lower(commit_transaction.SQLErrText),'more than') > 0 then
- arg_msg = '查询外加工计划内容失败,查询数据返回值多于一个'
- else
- ARG_MSG='查询外加工计划内容失败(错误外加工计划唯一码)'
- end if
- goto ext
- end if
- scid=arg_scid
- ext:
- return rslt
- end function
- public function integer getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg);Int rslt = 1,i = 1,no_mxcheck = 0,j = 1
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_inwaermx CURSOR FOR
- SELECT u_order_wfjgmx.mtrlid,
- u_order_wfjgmx.qty,
- u_order_wfjgmx.price,
- u_order_wfjgmx.dscrp,
- u_mtrldef.mtrlcode,
- u_order_wfjgmx.printid,
- u_order_wfjgmx.orderid,
- u_order_wfjgmx.storageid,
- u_order_wfjgmx.jgdscrp,
- u_order_wfjgmx.iforder,
- u_order_wfjgmx.status,
- u_order_wfjgmx.woodcode,
- u_order_wfjgmx.pcode,
- u_order_wfjgmx.relprintid,
- u_order_wfjgmx.relid2,
- u_order_wfjgmx.relcode
- FROM u_order_wfjgmx,u_mtrldef
- WHERE u_order_wfjgmx.wfjgid = :arg_wfjgid AND
- u_order_wfjgmx.scid = :arg_scid AND
- u_order_wfjgmx.mtrlid = u_mtrldef.mtrlid USING commit_transaction;
-
- OPEN cur_inwaermx;
- FETCH cur_inwaermx INTO :wfjgmx[i].mtrlid,
- :wfjgmx[i].qty,
- :wfjgmx[i].price,
- :wfjgmx[i].dscrp,
- :wfjgmx[i].mtrlcode,
- :wfjgmx[i].printid,
- :wfjgmx[i].orderid,
- :wfjgmx[i].storageid,
- :wfjgmx[i].jgdscrp,
- :wfjgmx[i].iforder,
- :wfjgmx[i].status,
- :wfjgmx[i].woodcode,
- :wfjgmx[i].pcode,
- :wfjgmx[i].relprintid,
- :wfjgmx[i].relid2,
- :wfjgmx[i].relcode;
- DO WHILE commit_transaction.SQLCode = 0
- i++
- FETCH cur_inwaermx INTO :wfjgmx[i].mtrlid,:wfjgmx[i].qty,:wfjgmx[i].price,
- :wfjgmx[i].dscrp,:wfjgmx[i].mtrlcode,
- :wfjgmx[i].printid,:wfjgmx[i].orderid,
- :wfjgmx[i].storageid,:wfjgmx[i].jgdscrp,:wfjgmx[i].iforder,
- :wfjgmx[i].status,:wfjgmx[i].woodcode,:wfjgmx[i].pcode,
- :wfjgmx[i].relprintid,
- :wfjgmx[i].relid2,
- :wfjgmx[i].relcode;
- LOOP
- CLOSE cur_inwaermx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_order_wfjgmx
- WHERE u_order_wfjgmx.wfjgid = :arg_wfjgid
- AND u_order_wfjgmx.scid = :arg_scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN
- arg_msg = '查询外加工计划收货明细操作失败,查询数据返回值多于一个'
- ELSE
- arg_msg = "查询操作失败,外加工计划收货明细数量"
- END IF
- GOTO ext
- END IF
- IF i <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,外加工计划明细"
- GOTO ext
- END IF
- it_mxbt = i - 1
- //
- //用游标读取明细
- DECLARE cur_inwaermx_out CURSOR FOR
- SELECT u_order_wfjgmx_out.mtrlid,
- u_order_wfjgmx_out.qty,
- u_order_wfjgmx_out.price,
- u_order_wfjgmx_out.dscrp,
- u_mtrldef.mtrlcode,
- u_order_wfjgmx_out.printid,
- u_order_wfjgmx_out.orderid,
- u_order_wfjgmx_out.storageid,
- u_order_wfjgmx_out.iforder,
- u_order_wfjgmx_out.status,
- u_order_wfjgmx_out.woodcode,
- u_order_wfjgmx_out.pcode,
- u_order_wfjgmx_out.dscrp2,
- u_mtrldef.unit
- FROM u_order_wfjgmx_out,u_mtrldef
- WHERE u_order_wfjgmx_out.wfjgid = :arg_wfjgid AND
- u_order_wfjgmx_out.scid = :arg_scid AND
- u_order_wfjgmx_out.mtrlid = u_mtrldef.mtrlid USING commit_transaction;
-
- OPEN cur_inwaermx_out;
- FETCH cur_inwaermx_out INTO :wfjgmx_out[j].mtrlid,
- :wfjgmx_out[j].qty,
- :wfjgmx_out[j].price,
- :wfjgmx_out[j].dscrp,
- :wfjgmx_out[j].mtrlcode,
- :wfjgmx_out[j].printid,
- :wfjgmx_out[j].orderid,
- :wfjgmx_out[j].storageid,
- :wfjgmx_out[j].iforder,
- :wfjgmx_out[j].status,
- :wfjgmx_out[j].woodcode,
- :wfjgmx_out[j].pcode,
- :wfjgmx_out[j].dscrp2,
- :wfjgmx_out[j].unit;
- DO WHILE commit_transaction.SQLCode = 0
- j++
- FETCH cur_inwaermx_out INTO :wfjgmx_out[j].mtrlid,
- :wfjgmx_out[j].qty,
- :wfjgmx_out[j].price,
- :wfjgmx_out[j].dscrp,
- :wfjgmx_out[j].mtrlcode,
- :wfjgmx_out[j].printid,
- :wfjgmx_out[j].orderid,
- :wfjgmx_out[j].storageid,
- :wfjgmx_out[j].iforder,
- :wfjgmx_out[j].status,
- :wfjgmx_out[j].woodcode,
- :wfjgmx_out[j].pcode,
- :wfjgmx_out[j].dscrp2,
- :wfjgmx_out[j].unit;
- LOOP
- CLOSE cur_inwaermx_out;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_order_wfjgmx_out
- WHERE u_order_wfjgmx_out.wfjgid = :arg_wfjgid
- AND u_order_wfjgmx_out.scid = :arg_scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN
- arg_msg = '查询外加工计划发料明细操作失败,查询数据返回值多于一个'
- ELSE
- arg_msg = "查询操作失败,外加工计划发料明细数量"
- END IF
- GOTO ext
- END IF
- IF j <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,外加工计划明细"
- GOTO ext
- END IF
- it_mxbt_out = j - 1
- //
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer add_dscrp (long arg_scid, long arg_wfjgid, 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 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
- if p_getinfo(arg_scid,arg_wfjgid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- IF status=0 THEN
- rslt=0
- arG_MSG="待审核状态下不可用"
- goto ext
- END IF
- UPDATE u_order_wfjg
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- WHERE u_order_wfjg.wfjgid = :arg_wfjgid
- and u_order_wfjg.scid = :arg_scid using commit_transaction;
- if commit_transaction.SQLCode<>0 then
- rslt=0
- arG_MSG="因网络或其它原因导致添加外加工计划备注操作失败"+"~n"+commit_transaction.SQLErrText
- rollback using commit_transaction;
- goto ext
- end if
- DSCRP = DSCRP+' '+arg_newdescppart
- it_newbegin=FALSE
- it_updatebegin=FALSE
- EXT:
- if arg_ifcommit and rslt=1 then
- COMMIT using commit_transaction;
- end if
- p_reset()
- arg_msg = '外协订单,'+ arg_msg
- return (rslt)
- end function
- public function integer cancel (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);//删除未审核的订单
- //0 FAIL, 1 SUCCESS
- INT rslt=1
- IF arg_wfjgid<=0 THEN
- rslt=0
- ARG_MSG='错误外加工计划唯一码'
- goto ext
- end if
- if p_getinfo(arg_scid,arg_wfjgid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- IF Status<>0 THEN
- rslt=0
- arG_MSG="外加工计划已经审核,不可以删除"
- goto ext
- END IF
- DELETE FROM u_order_wfjg
- WHERE u_order_wfjg.wfjgid = :arg_wfjgid
- and u_order_wfjg.scid = :arg_scid using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="删除外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK using commit_transaction;
- goto ext
- end if
- DELETE FROM u_order_wfjgMx
- WHERE u_order_wfjgMx.wfjgid = :arg_wfjgid
- and u_order_wfjgMx.scid = :arg_scid using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="删除外加工计划明细操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK using commit_transaction;
- goto ext
- end if
- DELETE FROM u_order_wfjgMx_out
- WHERE u_order_wfjgMx_out.wfjgID = :wfjgID
- AND u_order_wfjgMx_out.scid = :scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "删除旧有明细/计划出操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- it_newbegin=FALSE
- it_updatebegin=FALSE
- if arg_ifcommit and rslt =1 then
- COMMIT using commit_transaction;
- end if
- EXT:
- p_reset()
- arg_msg = '外协订单,'+ arg_msg
- return (rslt)
- end function
- public function integer cancelpermit (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- uo_saletask uo_sale
- uo_sale = CREATE uo_saletask
- uo_sale.commit_transaction = commit_transaction
- uo_order_ml_mrp uo_mrp
- uo_mrp = CREATE uo_order_ml_mrp
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "外加工计划只有在已审核状态才可以执行撤消审核,请核对"
- GOTO ext
- END IF
- //检查进仓单
- SELECT count(*)
- INTO :cnt
- FROM u_inwaremx,u_inware
- WHERE ( u_inware.scid = u_inwaremx.scid ) AND
- ( u_inware.inwareid = u_inwaremx.inwareid ) AND
- ( u_inware.billtype = 4) AND
- ( u_inwaremx.relid = :arg_wfjgid ) AND
- ( u_inwaremx.scid = :arg_scid) USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询外加工计划收货数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "外加工计划已经有相关进仓单据,不可以撤消审核"
- GOTO ext
- END IF
- //检查发出单
- SELECT count(*)
- INTO :cnt
- FROM u_outwaremx,u_outware
- WHERE ( u_outware.scid = u_outwaremx.scid ) AND
- ( u_outware.outwareid = u_outwaremx.outwareid ) AND
- ( u_outware.billtype = 4) AND
- ( u_outwaremx.relid = :arg_wfjgid ) AND
- ( u_outwaremx.scid = :arg_scid) USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询外加工计划发货数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "外加工计划已经有相关出仓单据,不可以撤消审核"
- GOTO ext
- END IF
- //检查外协收货单
- SELECT count(*) INTO :cnt FROM ow_wfjgmx_in_aft Where relid = :arg_wfjgid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询外加工计划车间收货数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "外加工计划已经有相关车间收货或返工单据,不可以撤消审核"
- GOTO ext
- END IF
- //检查外协发出单
- if sys_option_autocreate_outware = 0 then
- SELECT count(*) INTO :cnt FROM ow_wfjgmx_out Where relid = :arg_wfjgid USING commit_transaction ;
- else
- //如果使用订单自动生成发出单,则检查是否有非自动生成的发出单(原则上没有)
- SELECT count(*)
- INTO :cnt
- FROM ow_wfjgmx_out,ow_wfjg_out
- WHERE ( ow_wfjgmx_out.scid = :arg_scid )
- AND ( ow_wfjgmx_out.relid = :arg_wfjgid )
- AND (ow_wfjg_out.scid = ow_wfjgmx_out.scid)
- AND (ow_wfjg_out.outwareid = ow_wfjgmx_out.outwareid)
- And (ow_wfjg_out.relid <> :arg_wfjgid ) Using commit_transaction;
- end if
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询外加工计划车间发货数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "外加工计划已经有相关车间发货或退回单据,不可以撤消审核"
- GOTO ext
- END IF
- //检查损耗单
- SELECT count(*) INTO :cnt FROM u_order_wfjg_wasteMx Where wfjg_orderid = :arg_wfjgid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询外加工计划损耗数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "外加工计划已经有相关损耗单据,不可以撤消审核"
- GOTO ext
- END IF
- //删除外协发出单, 系统选项控制 sys_option_autocreate_outware ;
- if uf_del_outware_wfjg(false, arg_msg) = 0 then
- rslt = 0
- GOTO ext
- end if
- Long i
- IF billtype > 0 THEN
- FOR i = 1 TO it_mxbt
- IF billtype = 1 THEN
- UPDATE u_SaleTaskMx
- SET wfjgtaskqty = wfjgtaskqty - :wfjgmx[i].qty
- WHERE scid = :scid AND
- TaskID = :wfjgmx[i].orderid AND
- printid = :wfjgmx[i].relprintid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致外加工计划最终审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSEIF billtype = 2 THEN
- IF wfjgmx[i].orderid > 0 AND wfjgmx[i].relprintid > 0 AND wfjgmx[i].relid2 > 0 THEN
- IF uo_mrp.uof_add_rqmtrl_consignedqty(scid, wfjgmx[i].orderid, wfjgmx[i].relprintid, wfjgmx[i].relid2, 3, 0 - wfjgmx[i].qty, FALSE, ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- NEXT
- END IF
- UPDATE u_order_wfjg
- SET Status = 0,
- permit_date = NULL,
- permit_emp = ''
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- AND Status = 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
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- DESTROY uo_sale
- DESTROY uo_mrp
- ARG_MSG = '外协订单,'+ ARG_MSG
- Return (rslt)
- end function
- public function integer finishtask (integer arg_finishtype, long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);INT rslt=1,cnt=0
- datetime null_dt
- setnull(null_dt)
- IF arg_wfjgid<=0 THEN
- rslt=0
- ARG_MSG='错误外加工计划唯一码'
- goto ext
- end if
- if p_getinfo(arg_scid,arg_wfjgid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- if arg_finishtype = 5 or arg_finishtype = 6 then
- IF Status<>1 THEN
- rslt=0
- arG_MSG="外加工计划只有在进行状态才可以执行完成,请核对"
- goto ext
- END IF
- else
- if arg_finishtype = 1 then
- IF Status<>6 THEN
- rslt=0
- arG_MSG="外加工计划只有在手动完成状态下才可以执行取消手动完成,请核对"
- goto ext
- END IF
- end if
- end if
- if arg_finishtype = 5 or arg_finishtype = 6 then
- UPDATE u_order_wfjg
- SET status=:arg_finishtype,
- accomplishdate=getdate(),
- finishemp=:publ_operator
- WHERE ( u_order_wfjg.wfjgid = :arg_wfjgid )
- and ( u_order_wfjg.scid = :arg_scid ) using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="因网络或其它原因导致完成外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- rollback using commit_transaction;
- goto ext
- end if
- else
- UPDATE u_order_wfjg
- SET status=:arg_finishtype,
- accomplishdate=:null_dt,
- finishemp=''
- WHERE ( u_order_wfjg.wfjgid = :arg_wfjgid )
- and ( u_order_wfjg.scid = :arg_scid ) using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="因网络或其它原因导致取消手动完成外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- rollback using commit_transaction;
- goto ext
- end if
- end if
-
- EXT:
- if arg_ifcommit and rslt=1 then
- COMMIT using commit_transaction;
- end if
- p_reset()
- arg_msg = '外协订单,'+ arg_msg
- return (rslt)
- end function
- public function integer firstpermit (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);//buypermit
- Int rslt = 1,cnt = 0
- uo_saletask uo_sale
- uo_sale = Create uo_saletask
- uo_sale.commit_transaction = commit_transaction
- uo_order_ml_mrp uo_mrp
- uo_mrp = Create uo_order_ml_mrp
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 0 THEN
- rslt = 0
- ARG_MSG = "外加工计划已经审核,操作取消"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_emp Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- ARG_MSG = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- Long i
- IF billtype > 0 THEN
- FOR i = 1 To it_mxbt
- IF billtype = 1 THEN
- UPDATE u_SaleTaskMx
- SET wfjgtaskqty = wfjgtaskqty + :wfjgmx[i].qty
- WHERE scid = :scid AND
- TaskID = :wfjgmx[i].orderid AND
- printid = :wfjgmx[i].relprintid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致外加工计划最终审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSEIF billtype = 2 THEN
- IF wfjgmx[i].orderid > 0 And wfjgmx[i].relprintid > 0 And wfjgmx[i].relid2 > 0 THEN
- IF uo_mrp.uof_add_rqmtrl_consignedqty(scid, wfjgmx[i].orderid, wfjgmx[i].relprintid, wfjgmx[i].relid2, 3, wfjgmx[i].qty, False, ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- NEXT
- END IF
- UPDATE u_order_wfjg
- SET Permit_Emp = :arg_emp,
- Permit_date = getdate(),
- Status = 1
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- AND Status = 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
- //自动生产外协发出单, 系统选项控制 sys_option_autocreate_outware ;
- IF sys_option_autocreate_outware = 1 THEN //自动生成 且 审核
- IF uf_create_outware_wfjg(False, ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ELSEIF sys_option_autocreate_outware = 2 THEN //自动生成 不审核
- IF uf_create_outware_wfjg_noaudit(False, ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Destroy uo_sale
- Destroy uo_mrp
- ARG_MSG = '外协订单,'+ ARG_MSG
- Return (rslt)
- end function
- public function integer lastpermit (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);INT rslt=1,cnt=0
- IF arg_wfjgid<=0 THEN
- rslt=0
- ARG_MSG='错误外加工计划唯一码'
- goto ext
- end if
- if p_getinfo(arg_scid,arg_wfjgid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- IF Status<>4 THEN
- rslt=0
- arG_MSG="外加工计划只有在已采购审核状态才可以执行最终审核,请核对"
- goto ext
- END IF
- cnt=0
- SELECT count(*) INTO :cnt
- FROM u_user
- WHERE username=:arg_emp ;
- if sqlca.sqlcode<>0 then
- rslt=0
- arG_MSG="查询操作失败,操作员!"
- goto ext
- end if
- if cnt=0 then
- rslt=0
- arG_MSG="操作员姓名未登记或已取消!"
- goto ext
- end if
- UPDATE u_order_wfjg
- SET Permit_emp = :arg_emp,
- Status = 1
- WHERE wfjgid = :arg_wfjgid
- and scid = :arg_scid ;
- if sqlca.sqlcode<>0 then
- rslt=0
- arG_MSG="因网络或其它原因导致外加工计划最终审核操作失败"+"~n"+SQLCA.SQLErrText
- goto ext
- end if
- it_newbegin=FALSE
- it_updatebegin=FALSE
- EXT:
- if rslt=0 then
- rollback;
- elseif arg_ifcommit then
- COMMIT;
- end if
- p_reset()
- arg_msg = '外协订单,'+ arg_msg
- return (rslt)
- end function
- public function integer stopbuytask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);INT rslt=1,cnt=0
- IF arg_wfjgid<=0 THEN
- rslt=0
- ARG_MSG='错误外加工计划唯一码'
- goto ext
- end if
- if p_getinfo(arg_scid,arg_wfjgid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- IF Status<>1 THEN
- rslt=0
- arG_MSG="外加工计划只有在进行状态才可以执行终止,请核对"
- goto ext
- END IF
- UPDATE u_order_wfjg
- SET Status = 5,
- accomplishdate=getdate(),
- stopemp=:publ_operator
- WHERE wfjgid = :arg_wfjgid
- and scid = :arg_scid using commit_transaction ;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="因网络或其它原因导致终止外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- rollback using commit_transaction;
- goto ext
- end if
- it_newbegin=FALSE
- it_updatebegin=FALSE
- EXT:
- if arg_ifcommit and rslt=1 then
- COMMIT using commit_transaction;
- end if
- p_reset()
- arg_msg = '外协订单,'+ arg_msg
- return (rslt)
- end function
- public function integer tempstoptask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);INT rslt=1,cnt=0
- IF arg_wfjgid<=0 THEN
- rslt=0
- ARG_MSG='错误外加工计划唯一码'
- goto ext
- end if
- if p_getinfo(arg_scid,arg_wfjgid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- IF Status<>1 and Status<>2 THEN
- rslt=0
- arG_MSG="外加工计划只有在进行状态或暂停状态才可以执行暂停/取消暂停操作"
- goto ext
- END IF
- if Status=1 then
- UPDATE u_order_wfjg
- SET Status = 2 ,
- stopemp=:publ_operator
- WHERE wfjgid = :arg_wfjgid
- and scid = :arg_scid using commit_transaction ;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="因网络或其它原因导致暂停外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- goto ext
- end if
- else
- UPDATE u_order_wfjg
- SET Status = 1,stopemp=''
- WHERE wfjgid = :arg_wfjgid
- and scid = :arg_scid using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="因网络或其它原因导致取消暂停外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- goto ext
- end if
- end if
- it_newbegin=FALSE
- it_updatebegin=FALSE
- EXT:
- if rslt=0 then
- rollback using commit_transaction;
- elseif arg_ifcommit then
- COMMIT using commit_transaction;
- end if
- p_reset()
- arg_msg = '外协订单,'+ arg_msg
- return (rslt)
- end function
- public function integer trycmplbuytask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);//trycmplbuytask(arg_taskid,arg_msg,arg_ifcommit)
- int rslt = 1,cnt = 0
- datetime null_dt
- setnull(null_dt)
- if arg_wfjgid <= 0 then
- rslt = 0
- arg_msg = '错误外加工计划唯一码'
- goto ext
- end if
- if p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 then
- rslt = 0
- goto ext
- end if
- if status<>1 and status <> 5 then
- rslt=1
- if status<>1 then
- arg_msg="外加工计划只有在进行状态下才可以执行设完成状态"
- elseif status <>5 then
- arg_msg="外加工计划只有在完成状态下才可以执行撤消完成状态"
- end if
- goto ext
- end if
- decimal ls_zerook
- boolean if_finish
- if_finish=true
- declare zero_cur cursor for
- select u_order_wfjgMx.qty - u_order_wfjgMx.stopqty - u_order_wfjgMx.consignedqty - u_order_wfjgMx.wasteqty
- from u_order_wfjgMx
- where ( u_order_wfjgMx.wfjgid = :arg_wfjgid )
- and ( u_order_wfjgMx.scid = :arg_scid )
- using commit_transaction ;
- open zero_cur;
- fetch zero_cur into :ls_zerook;
- do while commit_transaction.sqlcode = 0
- if if_finish then
- if ls_zerook > 0 then if_finish=false
- end if
- fetch zero_cur into :ls_zerook;
- loop
- close zero_cur;
- if status = 1 and if_finish then
- update u_order_wfjg
- set status = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- where ( u_order_wfjg.wfjgid = :arg_wfjgid )
- and ( u_order_wfjg.scid = :arg_scid ) using commit_transaction;
- if commit_transaction.sqlcode <> 0 then
- rslt = 0
- arg_msg = "因网络或其他原因导致外加工计划完成状态设置操作失败"+"~n"+commit_transaction.sqlerrtext
- goto ext
- end if
- end if
- if status = 5 and not if_finish then
- update u_order_wfjg
- set status = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- where ( u_order_wfjg.wfjgid = :arg_wfjgid )
- and ( u_order_wfjg.scid = :arg_scid ) using commit_transaction;
- if commit_transaction.sqlcode <> 0 then
- rslt = 0
- arg_msg = "因网络或其他原因导致外加工计划撤消完成状态设置操作失败"+"~n"+commit_transaction.sqlerrtext
- goto ext
- end if
- end if
- it_newbegin = false
- it_updatebegin = false
- ext:
- if rslt=0 then
- rollback using commit_transaction;
- elseif arg_ifcommit then
- commit using commit_transaction;
- end if
- p_reset()
- arg_msg = '外协订单,'+ arg_msg
- return (rslt)
- end function
- public function integer updatebegin (long arg_scid, long arg_wfjgid, ref string arg_msg);//UPDATEbegin(long arg_taskid,ref string arg_msg)
- //从置对象,设定业务类型与关联ID,准备更新进仓单
- //0 fail 1 success
- long rslt=1,CNT=0
- IF arg_wfjgid<=0 THEN
- rslt=0
- ARG_MSG='错误外加工计划唯一码'
- goto ext
- end if
- if p_getinfo(arg_scid,arg_wfjgid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- if Status<>0 then
- rslt=0
- ARG_MSG='已经处于审核或完成等状态,不可以修改,如果外加工计划未完成并要修改请先撤销审核'
- goto ext
- end if
- it_newbegin=FALSE
- it_updatebegin=TRUE
- p_clearmx() //清除明细
- ext:
- if rslt=0 then p_reset()
- arg_msg = '外协订单,'+ arg_msg
- return rslt
- end function
- public function integer addmxcmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, long arg_orderid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);int rslt = 1,cnt = 0
- if arg_wfjgid <= 0 then
- rslt = 0
- arg_msg = '错误外加工计划唯一码'
- goto ext
- end if
- if arg_addqty = 0 then
- rslt = 1
- goto ext
- end if
- if p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 then
- rslt = 0
- goto ext
- end if
-
- //====================================================================
- // Script - addmxcmpl ( long arg_scid, long arg_taskid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit )
- // Reason:检查数量限制
- //--------------------------------------------------------------------
- // Modified By: yyx Date: 2004.02.12
- //--------------------------------------------------------------------
- long ls_isbuylimit
- decimal ls_buyqty,ls_consignedqty
- string ls_mtrlcode
- select isbuylimit,mtrlcode into :ls_isbuylimit,:ls_mtrlcode from u_mtrldef
- where mtrlid = :arg_mtrlid
- using commit_transaction;
- if commit_transaction.sqlcode <> 0 then
- rslt = 0
- arg_msg = '查询物料资料失败'
- goto ext
- end if
- //if ls_isbuylimit = 1 then
- select u_order_wfjgMx_out.qty,
- u_order_wfjgMx_out.consignedqty
- into :ls_buyqty,
- :ls_consignedqty
- from u_order_wfjgMx_out
- where ( u_order_wfjgMx_out.wfjgid = :arg_wfjgid ) and
- ( u_order_wfjgMx_out.scid = :arg_scid ) and
- ( u_order_wfjgMx_out.mtrlid = :arg_mtrlid ) and
- ( u_order_wfjgMx_out.status = :arg_status ) and
- ( u_order_wfjgMx_out.orderid = :arg_orderid ) and
- (u_order_wfjgMx_out.woodcode=:arg_woodcode) and
- (u_order_wfjgMx_out.pcode=:arg_pcode) using commit_transaction;
- if commit_transaction.sqlcode <> 0 then
- rslt = 0
- if pos(lower(sqlca.SQLErrText),'more than') > 0 then
- arg_msg = '查询外协订单已完成数量操作失败,查询数据返回值多于一个'
- else
- arg_msg = "物料编码["+ls_mtrlcode+"]不存在对应属性的外协订单发出明细"
- end if
- goto ext
- end if
- if sys_option_ifovertask_wfjg_out = 0 then
- if ls_buyqty < ls_consignedqty + arg_addqty then
- rslt = 0
- arg_msg = "物料["+ls_mtrlcode+"]的未完成数量只有"+string(ls_buyqty - ls_consignedqty,'#,##0.0###')+",不能发出"+string(arg_addqty,'#,##0.0#')
- goto ext
- end if
- end if
- //end if
- //====================================================================
- update u_order_wfjgMx_out
- set consignedqty = consignedqty + :arg_addqty
- where ( u_order_wfjgMx_out.wfjgid = :arg_wfjgid ) and
- ( u_order_wfjgMx_out.scid = :arg_scid ) and
- ( u_order_wfjgMx_out.mtrlid = :arg_mtrlid ) and
- ( u_order_wfjgMx_out.status = :arg_status ) and
- ( u_order_wfjgMx_out.orderid = :arg_orderid ) and
- (u_order_wfjgMx_out.woodcode=:arg_woodcode) and
- (u_order_wfjgMx_out.pcode=:arg_pcode) using commit_transaction;
- if sqlca.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 arg_ifcommit then
- commit using commit_transaction;
- end if
- p_reset()
- arg_msg = '外协订单,'+ arg_msg
- return (rslt)
- end function
- public function integer checkmxmpl (long arg_scid, long arg_wfjgid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg);//checkmxcmpl(long arg_taskid,long arg_mtrlid,decimal arg_addqty,ref string arg_msg,boolean arg_ifcommit)
- INT rslt=1,cnt=0
- IF arg_wfjgid<=0 THEN
- rslt=0
- ARG_MSG='错误外加工计划唯一码'
- goto ext
- end if
- if arg_addqty=0 then
- rslt=1
- goto ext
- end if
- rslt=p_getinfo(arg_scid,arg_wfjgid,arg_msg)
- if rslt=0 then goto ext
- IF Status<>1 THEN
- rslt=0
- arG_MSG="外加工计划只有在进行状态下才可以执行进仓"
- goto ext
- END IF
- decimal ls_buyQty,ls_assignQty
- string ls_mtrlcode
- SELECT u_order_wfjgMx.Qty,
- u_order_wfjgMx.consignedqty,
- u_mtrldef.mtrlcode
- INTO :ls_buyQty,
- :ls_assignQty,
- :ls_mtrlcode
- FROM u_order_wfjgMx ,u_mtrldef
- WHERE ( u_order_wfjgMx.wfjgid =:arg_wfjgid ) AND
- ( u_order_wfjgMx.scid =:arg_scid ) and
- ( u_order_wfjgMx.MtrlID =:arg_mtrlid ) and
- ( u_mtrldef.mtrlid=u_order_wfjgMx.MtrlID ) and
- ( u_order_wfjgMx.status=:arg_status ) and
- ( u_order_wfjgMx.woodcode=:arg_woodcode ) and
- (u_order_wfjgMx.pcode=:arg_pcode) using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- if pos(lower(sqlca.SQLErrText),'more than') > 0 then
- arg_msg = '查询外加工计划已完成数量操作失败,查询数据返回值多于一个'
- else
- arG_MSG="物料编码["+ls_mtrlcode+"]不存在对应属性的外加工计划收货明细"
- end if
- goto ext
- end if
- if ls_buyQty < ls_assignQty + arg_addqty then
- rslt=0
- arG_MSG="物料["+ls_mtrlcode+"]的外加工计划未完成数量只有"+string(ls_buyQty - ls_assignQty,'#,##0.0#')+",不能入库"+string(arg_addqty,'#,##0.0#')
- goto ext
- end if
- EXT:
- p_reset()
- arg_msg = '外协订单,'+ arg_msg
- return (rslt)
- end function
- public function integer checkmxmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg);//checkmxcmpl(long arg_taskid,long arg_mtrlid,decimal arg_addqty,ref string arg_msg,boolean arg_ifcommit)
- INT rslt=1,cnt=0
- IF arg_wfjgid<=0 THEN
- rslt=0
- ARG_MSG='错误外加工计划唯一码'
- goto ext
- end if
- if arg_addqty=0 then
- rslt=1
- goto ext
- end if
- rslt=p_getinfo(arg_scid,arg_wfjgid,arg_msg)
- if rslt=0 then goto ext
- IF Status<>1 THEN
- rslt=0
- arG_MSG="外加工计划只有在进行状态下才可以执行进仓"
- goto ext
- END IF
- decimal ls_buyQty,ls_assignQty
- string ls_mtrlcode
- SELECT u_order_wfjgMx_out.Qty,
- u_order_wfjgMx_out.consignedqty,
- u_mtrldef.mtrlcode
- INTO :ls_buyQty,
- :ls_assignQty,
- :ls_mtrlcode
- FROM u_order_wfjgMx_out ,u_mtrldef
- WHERE ( u_order_wfjgMx_out.wfjgid =:arg_wfjgid ) AND
- ( u_order_wfjgMx_out.scid =:arg_scid ) and
- ( u_order_wfjgMx_out.MtrlID =:arg_mtrlid ) and
- ( u_mtrldef.mtrlid=u_order_wfjgMx_out.MtrlID ) and
- ( u_order_wfjgMx_out.status=:arg_status ) and
- ( u_order_wfjgMx_out.woodcode=:arg_woodcode) and
- (u_order_wfjgMx_out.pcode=:arg_pcode) using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- if pos(lower(sqlca.SQLErrText),'more than') > 0 then
- arg_msg = '查询外加工计划已完成数量操作失败,查询数据返回值多于一个'
- else
- arG_MSG="物料编码["+ls_mtrlcode+"]不存在对应属性的外加工计划发料明细"+"~n"+commit_transaction.SQLErrText
- end if
- goto ext
- end if
- if ls_buyQty < ls_assignQty + arg_addqty then
- rslt=0
- arG_MSG="物料["+ls_mtrlcode+"]的外加工计划未完成数量只有"+string(ls_buyQty - ls_assignQty,'#,##0.0#')+",不能入库"+string(arg_addqty,'#,##0.0#')
- goto ext
- end if
- EXT:
- p_reset()
- arg_msg = '外协订单,'+ arg_msg
- return (rslt)
- end function
- public function integer wasteqty (long arg_scid, decimal arg_wasteqty, long arg_wfjg_orderid, long arg_mtrlid, long arg_orderid, string arg_status, string arg_woodcode, string arg_pcode, string arg_mtrlcode, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- Decimal ls_buyqty,ls_consignedqty
- IF arg_wfjg_orderid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外加工计划唯一码'
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM u_order_wfjgmx
- WHERE u_order_wfjgmx.scid = :arg_scid AND
- u_order_wfjgmx.wfjgid = :arg_wfjg_orderid AND
- u_order_wfjgmx.mtrlid = :arg_mtrlid AND
- ( u_order_wfjgMx.status = :arg_status ) AND
- ( u_order_wfjgMx.woodcode = :arg_woodcode ) AND
- ( u_order_wfjgMx.pcode = :arg_pcode ) AND
- ( u_order_wfjgmx.orderid = :arg_orderid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询外加工明细操作失败!在物料"+String(arg_mtrlcode)
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- ARG_MSG = "外加工明细不存在,在物料!"+String(arg_mtrlcode)
- GOTO ext
- END IF
- SELECT u_order_wfjgMx.qty,
- u_order_wfjgMx.consignedqty + u_order_wfjgMx.wasteqty
- INTO :ls_buyqty,
- :ls_consignedqty
- FROM u_order_wfjgMx
- WHERE ( u_order_wfjgMx.wfjgid = :arg_wfjg_orderid ) AND
- ( u_order_wfjgMx.scid = :arg_scid ) AND
- ( u_order_wfjgMx.mtrlid = :arg_mtrlid ) AND
- ( u_order_wfjgMx.status = :arg_status ) AND
- ( u_order_wfjgMx.woodcode = :arg_woodcode ) AND
- ( u_order_wfjgMx.pcode = :arg_pcode ) AND
- ( u_order_wfjgmx.orderid = :arg_orderid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- if pos(lower(sqlca.SQLErrText),'more than') > 0 then
- arg_msg = '查询外加工计划已完成数量操作失败,查询数据返回值多于一个'
- else
- ARG_MSG = "物料编码["+arg_mtrlcode+"]不存在对应属性的外加工计划明细"
- end if
- GOTO ext
- END IF
- IF ls_buyqty < ls_consignedqty + arg_wasteqty THEN
- rslt = 0
- ARG_MSG = "物料["+arg_mtrlcode+"]的未完成数量只有"+String(ls_buyqty - ls_consignedqty,'#,##0.0###')+",不能入库"+String(arg_wasteqty,'#,##0.0#')
- GOTO ext
- END IF
- UPDATE u_order_wfjgmx
- SET u_order_wfjgmx.wasteqty = u_order_wfjgmx.wasteqty + :arg_wasteqty
- WHERE u_order_wfjgmx.scid = :arg_scid AND
- u_order_wfjgmx.wfjgid = :arg_wfjg_orderid AND
- u_order_wfjgmx.mtrlid = :arg_mtrlid AND
- ( u_order_wfjgMx.status = :arg_status ) AND
- ( u_order_wfjgMx.woodcode = :arg_woodcode ) AND
- ( u_order_wfjgMx.pcode = :arg_pcode ) AND
- ( u_order_wfjgmx.orderid = :arg_orderid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致更新外加工计划损耗操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- arg_msg = '外协订单,'+ arg_msg
- Return (rslt)
- end function
- public function integer stopmx (long arg_scid, long arg_orderid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, decimal arg_stopqty, ref string arg_msg, boolean arg_commit);Int rslt = 1
- Int li_flag
- DateTime null_dt
- Decimal ld_notconsignedqty
- SetNull(null_dt)
- IF p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- arg_msg = '订单只能在进行状态下才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT stopflag INTO :li_flag
- FROM u_order_wfjgmx
- WHERE scid = :arg_scid
- AND wfjgid = :arg_orderid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- if pos(lower(sqlca.SQLErrText),'more than') > 0 then
- arg_msg = '查询明细物料'+arg_mtrlcode+'中止标记失败,查询数据返回值多于一个'
- else
- arg_msg = '查询明细物料'+arg_mtrlcode+'中止标记失败'
- end if
- rslt = 0
- GOTO ext
- END IF
- IF arg_flag = 0 THEN
- IF li_flag = 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'还未中止,不能取消中止'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF li_flag = 1 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已中止,不能重复中止'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_flag = 1 THEN
- SELECT u_order_wfjgmx.Qty - u_order_wfjgmx.consignedqty
- INTO :ld_notconsignedqty
- FROM u_order_wfjgmx
- WHERE scid = :arg_scid
- AND wfjgid = :arg_orderid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- if pos(lower(sqlca.SQLErrText),'more than') > 0 then
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败,查询数据返回值多于一个'
- else
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- end if
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_notconsignedqty <= 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已完成收货,不能中止'
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_notconsignedqty < arg_stopqty THEN
- arg_msg = '明细物料'+arg_mtrlcode+'未完成数量只有:' + String(ld_notconsignedqty,'###,##0.#####') + ',不能中止:' + String(arg_stopqty,'###,##0.#####')
- rslt = 0
- GOTO ext
- END IF
-
- IF trycmplbuytask(arg_scid,arg_orderid,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- IF arg_flag = 0 THEN
- UPDATE u_order_wfjgmx
- SET stopflag = 0,
- stopemp = '',
- stopdate = :null_dt,
- stopreason = '',
- stopqty = 0
- WHERE scid = :arg_scid
- AND wfjgid = :arg_orderid
- AND printid = :arg_printid;
- ELSE
- UPDATE u_order_wfjgmx
- SET stopflag = 1,
- stopemp = :publ_operator,
- stopdate = getdate(),
- stopreason = :arg_stopreason,
- stopqty = :arg_stopqty
- WHERE scid = :arg_scid
- AND wfjgid = :arg_orderid
- AND printid = :arg_printid;
- END IF
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'中止标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_commit THEN
- COMMIT;
- END IF
- arg_msg = '外协订单,'+ arg_msg
- RETURN rslt
- end function
- public function integer stopmx1 (long arg_scid, long arg_orderid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, decimal arg_stopqty, ref string arg_msg, boolean arg_commit);Int rslt = 1
- Int li_flag
- DateTime null_dt
- Decimal ld_notconsignedqty
- SetNull(null_dt)
- IF p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- arg_msg = '订单只能在进行状态下才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT stopflag INTO :li_flag
- FROM u_order_wfjgmx_out
- WHERE scid = :arg_scid
- AND wfjgid = :arg_orderid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- if pos(lower(sqlca.SQLErrText),'more than') > 0 then
- arg_msg = '查询明细物料'+arg_mtrlcode+'中止标记失败,查询数据返回值多于一个'
- else
- arg_msg = '查询明细物料'+arg_mtrlcode+'中止标记失败'
- end if
- rslt = 0
- GOTO ext
- END IF
- IF arg_flag = 0 THEN
- IF li_flag = 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'还未中止,不能取消中止'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF li_flag = 1 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已中止,不能重复中止'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_flag = 1 THEN
- SELECT u_order_wfjgmx_out.Qty - u_order_wfjgmx_out.consignedqty
- INTO :ld_notconsignedqty
- FROM u_order_wfjgmx_out
- WHERE scid = :arg_scid
- AND wfjgid = :arg_orderid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- if pos(lower(sqlca.SQLErrText),'more than') > 0 then
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败,查询数据返回值多于一个'
- else
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- end if
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_notconsignedqty <= 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已完成发出,不能中止'
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_notconsignedqty < arg_stopqty THEN
- arg_msg = '明细物料'+arg_mtrlcode+'未完成数量只有:' + String(ld_notconsignedqty,'###,##0.#####') + ',不能中止:' + String(arg_stopqty,'###,##0.#####')
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_flag = 0 THEN
- UPDATE u_order_wfjgmx_out
- SET stopflag = 0,
- stopemp = '',
- stopdate = :null_dt,
- stopreason = '',
- stopqty = 0
- WHERE scid = :arg_scid
- AND wfjgid = :arg_orderid
- AND printid = :arg_printid;
- ELSE
- UPDATE u_order_wfjgmx_out
- SET stopflag = 1,
- stopemp = :publ_operator,
- stopdate = getdate(),
- stopreason = :arg_stopreason,
- stopqty = :arg_stopqty
- WHERE scid = :arg_scid
- AND wfjgid = :arg_orderid
- AND printid = :arg_printid;
- END IF
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'中止标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_commit THEN
- COMMIT;
- END IF
- arg_msg = '外协订单,'+ arg_msg
- RETURN rslt
- end function
- public function integer uf_del_outware_wfjg (boolean arg_ifcommit, ref string arg_msg);//辅助生成外协发出单
- IF sys_option_autocreate_outware = 0 THEN RETURN 1
- //IF it_mxbt_out <= 0 THEN RETURN 1
- Int rslt = 1
- Long cnt
- Long ll_outwareid
- //====================================================================
- //撤审并删除自动生成的仓库外协发出单
- //====================================================================
- uo_outware_wfjg uo_ware
- uo_ware = Create uo_outware_wfjg
- uo_ware.commit_transaction = sqlca
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM ow_wfjg_out
- WHERE relid = :wfjgid
- AND billtype = 4
- And scid = :scid Using commit_transaction;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询是否有自动建立的外协发出单失败'+'~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt = 1 THEN
- SELECT outwareid INTO :ll_outwareid
- FROM ow_wfjg_out
- WHERE relid = :wfjgid
- AND billtype = 4
- And scid = :scid Using commit_transaction;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询自动建立的外协发出单信息失败'+'~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF uo_ware.getinfo(scid,ll_outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- IF uo_ware.flag = 1 THEN
- IF uo_ware.c_auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF uo_ware.del(scid,ll_outwareid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- Destroy uo_ware
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- arg_msg = "辅助删除外协发出单失败,"+arg_msg
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uf_create_outware_wfjg (boolean arg_ifcommit, ref string arg_msg);//辅助生成外协发出单
- IF it_mxbt_out <= 0 THEN RETURN 1
- Int rslt = 1
- //====================================================================
- // 按外协订单发出明细内容自动建立
- //====================================================================
- uo_outware_wfjg uo_ware
- uo_ware = Create uo_outware_wfjg
- uo_ware.commit_transaction = sqlca
- Long i,j
- Long ll_mx
- Decimal ld_sumqty,ld_acceptqty,ld_lastqty
- Long ll_mtrlwareid[]
- Decimal ld_noallocqty[]
- Long ll_printid = 0
- DateTime server_dt
- 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 uo_ware.newbegin(scid,4,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- // //初始化主表参数
- uo_ware.outdate = server_dt
- uo_ware.outrep = publ_operator
- uo_ware.dscrp = '外协订单 '+taskcode+' 自动生成'
- uo_ware.relid = wfjgid //相关ID
- uo_ware.sptid = sptid
- uo_ware.part = taskcode
- uo_ware.if_getid_ture = False
- //检查是否够库存
- FOR i = 1 To it_mxbt_out
-
- SELECT sum(noallocqty) INTO :ld_sumqty
- FROM u_mtrlware
- WHERE mtrlid = :wfjgmx_out[i].mtrlid
- AND storageid = :wfjgmx_out[i].storageid
- AND status = :wfjgmx_out[i].status
- AND woodcode = :wfjgmx_out[i].woodcode
- And pcode = :wfjgmx_out[i].pcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询 '+wfjgmx_out[i].mtrlcode+' 库存数量失败'+'~r~n'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ld_sumqty < wfjgmx_out[i].qty THEN
- rslt = 0
- arg_msg = wfjgmx_out[i].mtrlcode+' 库存数量:'+String(ld_sumqty,'#,##0.##########')+'少于本次出仓数量:'+String(wfjgmx_out[i].qty,'#,##0.##########')+',不能自动生成发出单'
- GOTO ext
- END IF
-
- NEXT
- //插入明细
- FOR i = 1 To it_mxbt_out
- ll_mx = 1
- DECLARE cur_mx CURSOR FOR
- SELECT noallocqty,mtrlwareid
- FROM u_mtrlware
- WHERE mtrlid = :wfjgmx_out[i].mtrlid
- AND storageid = :wfjgmx_out[i].storageid
- AND status = :wfjgmx_out[i].status
- AND woodcode = :wfjgmx_out[i].woodcode
- AND pcode = :wfjgmx_out[i].pcode
- ORDER BY noallocqty DESC
- Using commit_transaction;
-
- OPEN cur_mx;
- FETCH cur_mx Into :ld_noallocqty[ll_mx],:ll_mtrlwareid[ll_mx];
- DO WHILE commit_transaction.SQLCode = 0
- ll_mx++
- FETCH cur_mx Into :ld_noallocqty[ll_mx],:ll_mtrlwareid[ll_mx];
- LOOP
- CLOSE cur_mx;
-
- ld_lastqty = wfjgmx_out[i].qty
- FOR j = 1 To ll_mx - 1
- IF ld_lastqty <= ld_noallocqty[j] THEN
- ld_acceptqty = ld_lastqty
- ld_lastqty = 0
- ELSE
- ld_acceptqty = ld_noallocqty[j]
- ld_lastqty = ld_lastqty - ld_noallocqty[j]
- END IF
-
-
- ll_printid++
-
- IF uo_ware.acceptmx(ll_mtrlwareid[j],&
- ld_acceptqty ,&
- wfjgmx_out[i].unit,&
- ld_acceptqty ,&
- wfjgmx_out[i].dscrp,&
- ll_printid,&
- arg_msg,&
- 1,&
- wfjgid,&
- wfjgmx_out[i].printid,&
- 1,&
- 0,&
- '',&
- wfjgmx_out[i].dscrp2) = 0 THEN
- arg_msg = "行:"+String(i)+","+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
-
- IF ld_lastqty = 0 THEN EXIT
- NEXT
-
- NEXT
- //保存发出单
- IF uo_ware.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_ware.getinfo(scid,uo_ware.outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //审核发出单
- IF uo_ware.auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //
- ext:
- Destroy uo_ware
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- arg_msg = "辅助建立外协发出单失败,"+arg_msg
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer check_addmxcmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, long arg_orderid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);
- int rslt = 1,cnt = 0
- if arg_wfjgid <= 0 then
- rslt = 0
- arg_msg = '错误外加工计划唯一码'
- goto ext
- end if
- if arg_addqty = 0 then
- rslt = 1
- goto ext
- end if
- if p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 then
- rslt = 0
- goto ext
- end if
-
- //====================================================================
- // Script - addmxcmpl ( long arg_scid, long arg_taskid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit )
- // Reason:检查数量限制
- //--------------------------------------------------------------------
- // Modified By: yyx Date: 2004.02.12
- //--------------------------------------------------------------------
- long ls_isbuylimit
- decimal ls_buyqty,ls_consignedqty
- string ls_mtrlcode
- select isbuylimit,mtrlcode into :ls_isbuylimit,:ls_mtrlcode from u_mtrldef
- where mtrlid = :arg_mtrlid
- using commit_transaction;
- if commit_transaction.sqlcode <> 0 then
- rslt = 0
- arg_msg = '查询物料资料失败'
- goto ext
- end if
- //if ls_isbuylimit = 1 then
- select u_order_wfjgMx_out.qty,
- u_order_wfjgMx_out.consignedqty
- into :ls_buyqty,
- :ls_consignedqty
- from u_order_wfjgMx_out
- where ( u_order_wfjgMx_out.wfjgid = :arg_wfjgid ) and
- ( u_order_wfjgMx_out.scid = :arg_scid ) and
- ( u_order_wfjgMx_out.mtrlid = :arg_mtrlid ) and
- ( u_order_wfjgMx_out.status = :arg_status ) and
- ( u_order_wfjgMx_out.orderid = :arg_orderid ) and
- (u_order_wfjgMx_out.woodcode=:arg_woodcode) and
- (u_order_wfjgMx_out.pcode=:arg_pcode) using commit_transaction;
- if commit_transaction.sqlcode <> 0 then
- rslt = 0
- if pos(lower(sqlca.SQLErrText),'more than') > 0 then
- arg_msg = '查询外协订单已完成数量操作失败,查询数据返回值多于一个'
- else
- arg_msg = "物料编码["+ls_mtrlcode+"]不存在对应属性的外协订单发出明细"
- end if
- goto ext
- end if
- if ls_buyqty < ls_consignedqty + arg_addqty then
- rslt = 0
- arg_msg = "物料["+ls_mtrlcode+"]的未完成数量只有"+string(ls_buyqty - ls_consignedqty,'#,##0.0###')+",不能发出"+string(arg_addqty,'#,##0.0#')
- goto ext
- end if
- //end if
- ext:
- if rslt = 0 then
-
- elseif arg_ifcommit then
- end if
- arg_msg = '外协订单,'+ arg_msg
- return (rslt)
- end function
- public function integer acceptmx (long arg_mtrlid, decimal arg_qty, decimal arg_price, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, datetime arg_requiredate, long arg_storageid, string arg_jgdscrp, string arg_status, string arg_woodcode, string arg_pcode, long arg_relprintid, long arg_relid2, string arg_relcode, long arg_orderid, string arg_plancode, string arg_mxdscrp2, string arg_mxdscrp3, string arg_mxdscrp4);//RETURN 0 fail 1 success
- // 函数增加一个明细项
- Long rslt = 1,cnt = 0,LS_i
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arG_MSG = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_price) THEN arg_price = 0
- IF IsNull(arg_dscrp) THEN arg_dscrp = ''
- IF IsNull(ARG_mtrlCODE) THEN ARG_mtrlCODE = ''
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_storageid) THEN arg_storageid = 0
- IF IsNull(arg_jgdscrp) THEN arg_jgdscrp = ''
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_relprintid) THEN arg_relprintid = 0
- IF IsNull(arg_relid2) THEN arg_relid2 = 0
- IF IsNull(arg_relcode) THEN arg_relcode = ''
- IF IsNull(arg_orderid) THEN arg_orderid = 0
- IF IsNull(arg_plancode) THEN arg_plancode = ''
- IF IsNull(arg_mxdscrp2) THEN arg_mxdscrp2 = ''
- IF IsNull(arg_mxdscrp3) THEN arg_mxdscrp3 =''
- IF IsNull(arg_mxdscrp4) THEN arg_mxdscrp4 = ''
- arg_requiredate = datetime(date(arg_requiredate))
- IF arg_mtrlid = 0 OR arg_qty = 0 THEN // 如果进仓数量为 0,或物料编号为空,则不作任何处理
- rslt = 1
- GOTO ext
- END IF
- IF arg_price < 0 THEN //检查进仓价
- rslt = 0
- arG_MSG = "物料:" + String(ARG_mtrlCODE)+" 单价错误"
- GOTO ext
- END IF
- //检查物料ID
- SELECT COUNT(*)
- INTO :cnt
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,物料编码"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arG_MSG = "错误的物料编码: "+String(ARG_mtrlCODE)
- GOTO ext
- END IF
- cnt = 0
- SELECT COUNT(*)
- INTO :cnt
- FROM u_storage
- Where u_storage.storageid = :arg_storageid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,仓库编号"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arG_MSG = "错误的仓库编号"
- GOTO ext
- END IF
- //检查超数量
- IF arg_orderid > 0 AND arg_relid2 > 0 THEN
- Decimal ld_noqty,ld_readyqty
- SELECT u_OrderRqMtrl.truerqqty - u_OrderRqMtrl.consignedqty - ISNULL(notmp.noauditqty,0) as noqty
- INTO :ld_noqty
- FROM u_OrderRqMtrl
- LEFT OUTER JOIN (
- SELECT u_order_wfjgMx.scid
- ,orderid
- ,relprintid
- ,relid2
- ,SUM(Qty) AS noauditqty
- FROM u_order_wfjgMx
- inner join u_order_wfjg on u_order_wfjg.scid = u_order_wfjgMx.scid
- and u_order_wfjg.wfjgID = u_order_wfjgMx.wfjgID
- where u_order_wfjg.status = 0 and u_order_wfjg.scid = :scid and u_order_wfjg.wfjgid <> :wfjgid
- GROUP BY u_order_wfjgMx.scid
- ,orderid
- ,relprintid
- ,relid2
- ) AS notmp ON u_OrderRqMtrl.scid = notmp.scid
- AND u_OrderRqMtrl.taskID = notmp.orderid
- AND u_OrderRqMtrl.printid = notmp.relprintid
- AND u_OrderRqMtrl.mxpkid = notmp.relid2
- WHERE (u_OrderRqMtrl.plantype = 3)
- AND u_OrderRqMtrl.scid = :scid
- AND u_OrderRqMtrl.taskID = :arg_orderid
- AND u_OrderRqMtrl.printid = :arg_relprintid
- AND u_OrderRqMtrl.mxpkid = :arg_relid2;
- IF SQLCA.SQLCODE <> 0 THEN
- arg_msg = "第" + String(arg_printid) + "行,查询需求表失败"+arg_mtrlcode+'失败!'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ld_readyqty = arg_qty
- FOR LS_i = 1 TO it_mxbt
- IF wfjgmx[it_mxbt].orderid = arg_orderid AND &
- wfjgmx[it_mxbt].relprintid = arg_relprintid AND &
- wfjgmx[it_mxbt].relid2 = arg_relid2 THEN
- ld_readyqty += wfjgmx[it_mxbt].qty
- END IF
- NEXT
-
- IF ld_readyqty > ld_noqty THEN
- arg_msg = "第" + String(arg_printid) + '行,本次开单数'+String(ld_readyqty,"#,##0.00##")+'不能大于未开单数'+String(ld_noqty,"#,##0.00##")
- rslt = 0
- GOTO ext
- END IF
- END IF
- FOR LS_i = 1 TO it_mxbt //合并重复项
- IF sys_option_order_wfjg_mxhb = 0 THEN
- IF wfjgmx[it_mxbt].orderid = arg_orderid AND &
- wfjgmx[it_mxbt].mtrlid = arg_mtrlid AND &
- wfjgmx[it_mxbt].status = arg_status AND &
- wfjgmx[it_mxbt].woodcode = arg_woodcode AND &
- wfjgmx[it_mxbt].pcode = arg_pcode AND &
- wfjgmx[it_mxbt].requiredate = arg_requiredate THEN
- wfjgmx[it_mxbt].Qty = wfjgmx[it_mxbt].Qty+arg_qty
- rslt = 1
- GOTO ext
- END IF
- END IF
- NEXT
- //写入内容
- it_mxbt++
- wfjgmx[it_mxbt].printid = arg_printid
- wfjgmx[it_mxbt].mtrlid = arg_mtrlid
- wfjgmx[it_mxbt].mtrlcode = ARG_mtrlCODE
- wfjgmx[it_mxbt].status = arg_status
- wfjgmx[it_mxbt].woodcode = arg_woodcode
- wfjgmx[it_mxbt].pcode = arg_pcode
- wfjgmx[it_mxbt].Qty = arg_qty
- wfjgmx[it_mxbt].price = arg_price
- wfjgmx[it_mxbt].dscrp = arg_dscrp
- wfjgmx[it_mxbt].requiredate = arg_requiredate
- wfjgmx[it_mxbt].storageid = arg_storageid
- wfjgmx[it_mxbt].jgdscrp = arg_jgdscrp
- wfjgmx[it_mxbt].relprintid = arg_relprintid
- wfjgmx[it_mxbt].relid2 = arg_relid2
- wfjgmx[it_mxbt].relcode = arg_relcode
- wfjgmx[it_mxbt].orderid = arg_orderid
- wfjgmx[it_mxbt].plancode = arg_plancode
- wfjgmx[it_mxbt].mxdscrp2 = arg_mxdscrp2
- wfjgmx[it_mxbt].mxdscrp3 = arg_mxdscrp3
- wfjgmx[it_mxbt].mxdscrp4= arg_mxdscrp4
- IF arg_orderid > 0 THEN
- wfjgmx[it_mxbt].iforder = 1
- END IF
- ext:
- IF rslt = 0 THEN p_clearmx()
- arG_MSG = '外协订单,'+ arG_MSG
- Return(rslt)
- end function
- public function integer uf_create_outware_wfjg_noaudit (boolean arg_ifcommit, ref string arg_msg);//辅助生成外协发出单
- IF it_mxbt_out <= 0 THEN RETURN 1
- Int rslt = 1
- //====================================================================
- // 按外协订单发出明细内容自动建立
- //====================================================================
- uo_outware_wfjg uo_ware
- uo_ware = Create uo_outware_wfjg
- uo_ware.commit_transaction = sqlca
- Long i,j
- Long ll_mx
- Decimal ld_sumqty,ld_acceptqty,ld_lastqty
- Long ll_mtrlwareid[]
- Decimal ld_noallocqty[]
- Long ll_printid = 0
- DateTime server_dt
- 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 uo_ware.newbegin(scid,4,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- // //初始化主表参数
- uo_ware.outdate = server_dt
- uo_ware.outrep = publ_operator
- uo_ware.dscrp = '外协订单 '+taskcode+' 自动生成'
- uo_ware.relid = wfjgid //相关ID
- uo_ware.sptid = sptid
- uo_ware.part = taskcode
- uo_ware.if_getid_ture = False
- //检查是否够库存
- FOR i = 1 To it_mxbt_out
-
- SELECT top 1 mtrlwareid INTO :ld_sumqty
- FROM u_mtrlware
- WHERE mtrlid = :wfjgmx_out[i].mtrlid
- AND storageid = :wfjgmx_out[i].storageid
- AND status = :wfjgmx_out[i].status
- AND woodcode = :wfjgmx_out[i].woodcode
- And pcode = :wfjgmx_out[i].pcode;
- IF sqlca.SQLCode <> 0 And sqlca.SQLCode <> 100 THEN
- rslt = 0
- arg_msg = '查询 '+wfjgmx_out[i].mtrlcode+' 库存数量失败'+'~r~n'+sqlca.SQLErrText
- GOTO ext
-
- ELSEIF sqlca.SQLCode = 100 THEN
- Long ls_mtrlwareid,ls_sptid
- String ls_mtrlcode,ls_plancode
- ls_mtrlwareid = 0
- ls_sptid = 0
- ls_mtrlcode = ''
- ls_plancode = ''
- IF f_insert_0_mtrlware(ls_mtrlwareid, wfjgmx_out[i].mtrlid,ls_mtrlcode, wfjgmx_out[i].storageid,ls_sptid,wfjgmx_out[i].status,wfjgmx_out[i].woodcode,wfjgmx_out[i].pcode,ls_plancode,0,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ELSE
- END IF
-
- // IF ld_sumqty < wfjgmx_out[i].qty THEN
- // rslt = 0
- // arg_msg = wfjgmx_out[i].mtrlcode+' 库存数量:'+String(ld_sumqty,'#,##0.##########')+'少于本次出仓数量:'+String(wfjgmx_out[i].qty,'#,##0.##########')+',不能自动生成发出单'
- // GOTO ext
- // END IF
-
- NEXT
- //插入明细
- FOR i = 1 To it_mxbt_out
- ll_mx = 1
- DECLARE cur_mx CURSOR FOR
- SELECT noallocqty,mtrlwareid
- FROM u_mtrlware
- WHERE mtrlid = :wfjgmx_out[i].mtrlid
- AND storageid = :wfjgmx_out[i].storageid
- AND status = :wfjgmx_out[i].status
- AND woodcode = :wfjgmx_out[i].woodcode
- AND pcode = :wfjgmx_out[i].pcode
- ORDER BY noallocqty DESC
- Using commit_transaction;
-
- OPEN cur_mx;
- FETCH cur_mx Into :ld_noallocqty[ll_mx],:ll_mtrlwareid[ll_mx];
- DO WHILE commit_transaction.SQLCode = 0
- ll_mx++
- FETCH cur_mx Into :ld_noallocqty[ll_mx],:ll_mtrlwareid[ll_mx];
- LOOP
- CLOSE cur_mx;
-
- ld_lastqty = wfjgmx_out[i].qty
- FOR j = 1 To ll_mx - 1
- // IF ld_lastqty <= ld_noallocqty[j] THEN
- // ld_acceptqty = ld_lastqty
- // ld_lastqty = 0
- // ELSE
- // ld_acceptqty = ld_noallocqty[j]
- // ld_lastqty = ld_lastqty - ld_noallocqty[j]
- // END IF
-
-
- ll_printid++
-
- IF uo_ware.acceptmx(ll_mtrlwareid[j],&
- ld_lastqty ,&
- wfjgmx_out[i].unit,&
- ld_lastqty ,&
- wfjgmx_out[i].dscrp,&
- ll_printid,&
- arg_msg,&
- 1,&
- wfjgid,&
- wfjgmx_out[i].printid,&
- 1,&
- 0,&
- '',&
- wfjgmx_out[i].dscrp2) = 0 THEN
- arg_msg = "行:"+String(i)+","+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
-
- IF ld_lastqty = 0 THEN EXIT
- NEXT
-
- NEXT
- //保存发出单
- IF uo_ware.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //
- ext:
- Destroy uo_ware
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- arg_msg = "辅助建立外协发出单失败,"+arg_msg
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer addmxcmpl (long arg_scid, long arg_wfjgid, long arg_mtrlid, long arg_orderid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit, long arg_printid);Int rslt = 1,cnt = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 AND status <> 5 THEN
- rslt = 0
- IF status <> 1 THEN
- arg_msg = "外加工计划只有在进行状态下才可以执行进仓"
- ELSEIF status <> 5 THEN
- arg_msg = "外加工计划只有在完成状态下才可以撤消进仓"
- END IF
- GOTO ext
- END IF
- Long ls_isbuylimit,ll_relid2
- Decimal ls_buyqty,ls_consignedqty = 0
- String ls_mtrlcode
- SELECT isbuylimit,mtrlcode INTO :ls_isbuylimit,:ls_mtrlcode FROM u_mtrldef
- WHERE mtrlid = :arg_mtrlid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(sqlca.SQLErrText),'more than') > 0 THEN
- arg_msg = '查询物料资料失败,查询数据返回值多于一个'
- ELSE
- arg_msg = '查询物料资料失败'
- END IF
- GOTO ext
- END IF
- SELECT u_order_wfjgMx.qty,
- u_order_wfjgMx.consignedqty + u_order_wfjgMx.wasteqty,
- u_order_wfjgMx.relid2
- INTO :ls_buyqty,
- :ls_consignedqty,
- :ll_relid2
- FROM u_order_wfjgMx
- WHERE ( u_order_wfjgMx.wfjgid = :arg_wfjgid ) AND
- ( u_order_wfjgMx.scid = :arg_scid ) AND
- ( u_order_wfjgMx.mtrlid = :arg_mtrlid ) AND
- ( u_order_wfjgMx.status = :arg_status ) AND
- u_order_wfjgMx.woodcode = :arg_woodcode AND
- u_order_wfjgMx.pcode = :arg_pcode AND
- u_order_wfjgMx.printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN
- arg_msg = '查询外加工计划已完成数量失败,查询数据返回值多于一个'
- ELSE
- arg_msg = "物料编码["+ls_mtrlcode+"]不存在对应属性的外加工计划明细"
- END IF
- GOTO ext
- END IF
- IF sys_option_ifovertask_wfjg = 0 THEN
- IF ls_buyqty < ls_consignedqty + arg_addqty THEN
- rslt = 0
- arg_msg = "物料["+ls_mtrlcode+"]的未完成数量只有"+String(ls_buyqty - ls_consignedqty,'#,##0.0###')+",不能入库"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- END IF
- // or :arg_orderid=0 荣改20170506
- UPDATE u_order_wfjgMx
- SET consignedqty = consignedqty + :arg_addqty
- WHERE ( u_order_wfjgMx.wfjgid = :arg_wfjgid ) AND
- ( u_order_wfjgMx.scid = :arg_scid ) AND
- ( u_order_wfjgMx.mtrlid = :arg_mtrlid ) AND
- ( u_order_wfjgMx.status = :arg_status ) AND
- ( u_order_wfjgMx.orderid = :arg_orderid or :arg_orderid=0 ) AND
- u_order_wfjgMx.woodcode = :arg_woodcode AND
- u_order_wfjgMx.pcode = :arg_pcode AND
- u_order_wfjgMx.printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致外加工计划完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF ll_relid2 > 0 THEN
- UPDATE u_OrderRqMtrl
- SET inqty = inqty + :arg_addqty
- Where mxpkid = :ll_relid2 USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新销售订单明细的外协需求已订货数操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- arg_msg = '外协订单,'+ arg_msg
- Return (rslt)
- end function
- public function integer acceptmx_out (long arg_mtrlid, decimal arg_qty, decimal arg_price, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, long arg_storageid, string arg_status, string arg_woodcode, string arg_pcode, string arg_dscrp2, string arg_plancode, string arg_saletaskcode);//return 0 fail 1 success
- // 函数增加一个明细项
- Long rslt = 1,cnt = 0,ls_i
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_price) THEN arg_price = 0
- IF IsNull(arg_dscrp) THEN arg_dscrp = ''
- IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_storageid) THEN arg_storageid = 0
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_dscrp2) THEN arg_dscrp2 = ''
- IF IsNull(arg_plancode) THEN arg_plancode = ''
- IF IsNull(arg_saletaskcode) THEN arg_saletaskcode = ''
- IF arg_mtrlid = 0 OR arg_qty = 0 THEN // 如果进仓数量为 0,或物料编号为空,则不作任何处理
- rslt = 1
- GOTO ext
- END IF
- IF arg_price < 0 THEN
- rslt = 0
- arg_msg = "物料:" + String(arg_mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- //检查物料id
- SELECT count(*)
- INTO :cnt
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,物料编号"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "错误的产品编号: "+String(arg_mtrlcode)
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_storage
- Where u_storage.storageid = :arg_storageid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库编号"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "错误的仓库编号"
- GOTO ext
- END IF
- FOR ls_i = 1 TO it_mxbt_out //合并重复项
- IF wfjgmx_out[ls_i].mtrlid = arg_mtrlid AND &
- wfjgmx_out[ls_i].status = arg_status AND &
- wfjgmx_out[ls_i].woodcode = arg_woodcode AND &
- wfjgmx_out[ls_i].pcode = arg_pcode THEN
- wfjgmx_out[ls_i].qty = wfjgmx_out[ls_i].qty+arg_qty
- rslt = 1
- GOTO ext
- END IF
- NEXT
- //写入内容
- it_mxbt_out++
- wfjgmx_out[it_mxbt_out].mtrlid = arg_mtrlid
- wfjgmx_out[it_mxbt_out].qty = arg_qty
- wfjgmx_out[it_mxbt_out].dscrp = arg_dscrp
- wfjgmx_out[it_mxbt_out].mtrlcode = arg_mtrlcode
- wfjgmx_out[it_mxbt_out].printid = arg_printid
- wfjgmx_out[it_mxbt_out].price = arg_price
- wfjgmx_out[it_mxbt_out].storageid = arg_storageid
- wfjgmx_out[it_mxbt_out].status = arg_status
- wfjgmx_out[it_mxbt_out].woodcode = arg_woodcode
- wfjgmx_out[it_mxbt_out].pcode = arg_pcode
- wfjgmx_out[it_mxbt_out].dscrp2 = arg_dscrp2
- wfjgmx_out[it_mxbt_out].plancode = arg_plancode
- wfjgmx_out[it_mxbt_out].saletaskcode = arg_saletaskcode
- ext:
- IF rslt = 0 THEN p_clearmx()
- arg_msg = '外协订单,'+ arg_msg
- Return(rslt)
- end function
- on uo_order_wfjg.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_order_wfjg.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|