123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612 |
- $PBExportHeader$uo_order_ml.sru
- forward
- global type uo_order_ml from nonvisualobject
- end type
- end forward
- global type uo_order_ml from nonvisualobject
- end type
- global uo_order_ml uo_order_ml
- type variables
- PUBLIC PROTECTEDWRITE Long scid
- PUBLIC PROTECTEDWRITE Long taskid
- PUBLIC PROTECTEDWRITE String taskcode
- PUBLIC PROTECTEDWRITE DateTime opdate
- PUBLIC PROTECTEDWRITE String operator
- PUBLIC PROTECTEDWRITE DateTime accomplishdate
- PUBLIC PROTECTEDWRITE String permit_emp
- PUBLIC PROTECTEDWRITE String last_emp
- long MtrlID
- decimal SaleQty
- string mxdscrp
- string status
- string pcode
- string woodcode
- long outtype
- string unit
- datetime sclldate
- string scllrep
- long scllflag
- datetime auditingdate
- string auditingrep
- long flag
- string mtrlcode
- Transaction commit_transaction //数据commit事务
- PRIVATE:
- s_saletaskmx saletaskmx[] //明细结构
- Long it_mxbt = 0 //明细结构数组末指针
- Boolean it_newbegin = TRUE //新建标志
- Boolean it_updatebegin = FALSE//修改标志
- Long it_mxbt_mx = 0
- decimal mx_sumqty = 0
- end variables
- forward prototypes
- public function integer salemxprimt (long arg_scid, long arg_taskid, long arg_printid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer c_salemxprimt (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_pz_change (long arg_type, string arg_updatestr, long arg_rqmtrlid, ref string arg_msg)
- public function integer c_salemxscllprimt (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_mxdscrp (long arg_scid, long arg_taskid, long arg_printid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- private function integer p_getinfo (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg)
- public function integer uof_cmp (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_cmp_mx (long arg_scid, long arg_taskid, long arg_printid, long arg_mtrlid, decimal arg_qty, string arg_status, string arg_woodcode, string arg_pcode, integer arg_type, boolean arg_ifcommit)
- public function integer uof_delcard (long arg_cardid[], string arg_cardcode[], ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_buildcard1 (long arg_scid[], long arg_taskid[], long arg_printid[], long arg_qty[], string arg_operator, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_delcard1 (long arg_cardid[], string arg_cardcode[], long arg_row[], long arg_scid[], long arg_taskid[], long arg_printid[], ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_auditcard (long arg_cardid[], string arg_cardcode[], ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_cauditcard (long arg_cardid[], string arg_cardcode[], ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_sc (s_saletaskmx arg_mx[], long arg_itmx, integer arg_scflag, ref string arg_msg)
- public function integer uof_add_rqmtrl_scll (s_order_ml_rqmtrl arg_rqmtrl, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_cmp_workprice (long arg_scid, long arg_taskid, long arg_printid, long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_add_workprice (s_order_ml_workprice_array arg_rqmtrl, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_order_add_pro (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function int p_reset ()
- public function integer uof_finish_procode_qty (long arg_scid, long arg_taskid, long arg_printid, string arg_procode, integer arg_type, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_mod_rqmtrl (s_order_ml_rqmtrl arg_rqmtrl, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_auto_build_buy_forrq (long arg_mxpkid[], ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_auto_build_buy_forarr (long arg_scid[], long arg_taskid[], long arg_printid[], ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_auto_build_buy_notuse (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer salemxscllprimt (long arg_scid, long arg_taskid, long arg_printid, integer arg_chk_zero, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_add_procode_qty (long arg_scid, long arg_taskid, long arg_printid, string arg_procode, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_finish_procode_qty_dsr (long arg_scid, long arg_taskid, long arg_printid, string arg_procode, long arg_type, decimal arg_fpqty, ref string arg_msg, boolean arg_ifcommit)
- public subroutine uof_workprice_parm (decimal arg_orderqty, string arg_status, string arg_woodcode, string arg_pcode, string arg_ls_mtrlsectype, string arg_ls_zxmtrlmode, string arg_ls_mtrlmode, string arg_ls_cuscode, string arg_ls_cusname, string arg_parmstr, ref decimal arg_value_dec, decimal arg_price)
- end prototypes
- public function integer salemxprimt (long arg_scid, long arg_taskid, long arg_printid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);//salepermit
- Int rslt = 1,cnt = 0
- Int ll_flag
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- SELECT flag
- INTO :ll_flag
- FROM u_saletaskmx
- WHERE scid = :Arg_scid AND
- taskid = :arg_taskid AND
- printid = :arg_printid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询操作失败,销售订单明细内容!"
- GOTO ext
- END IF
- IF ll_flag <> 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
- UPDATE u_SaleTaskmx
- SET auditingrep = :arg_emp ,auditingdate = getdate(),
- flag = 1
- WHERE TaskID = :arg_taskid AND
- scid = :arg_scid AND
- printid = :arg_printid
- 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
- Return (rslt)
- end function
- public function integer c_salemxprimt (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);//salepermit
- Int rslt = 1,cnt = 0
- Int ll_flag
- DateTime nulldate
- SetNull(nulldate)
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- SELECT flag
- INTO :ll_flag
- FROM u_saletaskmx
- WHERE scid = :Arg_scid AND
- taskid = :arg_taskid AND
- printid = :arg_printid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询操作失败,销售订单明细内容!"
- GOTO ext
- END IF
- IF ll_flag = 0 THEN
- rslt = 0
- ARG_MSG = "销售订单明细还没有审核,操作取消"
- GOTO ext
- END IF
- Decimal ld_DstrQty
- SELECT sum(u_saleRqMtrl_scll.DstrQty)
- INTO :ld_DstrQty
- FROM u_saleRqMtrl_scll
- WHERE TaskID = :arg_taskid AND
- scid = :arg_scid AND
- 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 ld_DstrQty > 0 THEN
- rslt = 0
- ARG_MSG = "已开相关领料单,撤审操作取消"+"~n"
- GOTO ext
- END IF
- //检查计件
- //个人产品工序 已开单数
- cnt = 0
- SELECT COUNT(*)
- INTO :cnt
- FROM u_scwg_taskwork_2,u_scwg_taskwork_2_mx
- WHERE u_scwg_taskwork_2_mx.billid = u_scwg_taskwork_2.billid
- AND u_scwg_taskwork_2_mx.orderid = :arg_taskid
- AND u_scwg_taskwork_2_mx.relprintid = :arg_printid
- And u_scwg_taskwork_2_mx.relscid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ARG_MSG = "查询是否建立个人产品工序计件单操作失败"+"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已经有相关个人产品工序计件单,不可以撤消审核"
- GOTO ext
- END IF
- //产品个人工序 已开单数
- cnt = 0
- SELECT COUNT(*)
- INTO :cnt
- FROM u_sc_taskworkmx,u_sc_taskwork
- WHERE u_sc_taskworkmx.billid = u_sc_taskwork.billid
- AND u_sc_taskworkmx.scid = u_sc_taskwork.scid
- And u_sc_taskwork.orderid = :arg_taskid
- AND u_sc_taskwork.relid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- ARG_MSG = "查询是否建立产品个人工序计件单操作失败"+"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已经有相关产品个人工序计件单,不可以撤消审核"
- GOTO ext
- END IF
- UPDATE u_SaleTaskmx
- SET auditingrep = '' ,auditingdate = :nulldate,
- flag = 0
- WHERE TaskID = :arg_taskid AND
- scid = :arg_scid AND
- printid = :arg_printid AND
- flag = 1
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致销售订单明细撤销审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- // DONE: 删除运算结果
- DELETE FROM u_orderRqMtrl
- WHERE taskid = :arg_taskid
- AND scid = :arg_scid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '删除物料需求表失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_orderRqMtrl_tree
- WHERE taskid = :arg_taskid
- AND scid = :arg_scid
- AND printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '删除物料需求结构表失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_saleRqMtrl_scll
- WHERE u_saleRqMtrl_scll.scid = :arg_scid AND
- u_saleRqMtrl_scll.taskID = :arg_taskid AND
- u_saleRqMtrl_scll.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '删除领料明细表失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- //删除工价表
- DELETE FROM U_OrderRqwp
- WHERE U_OrderRqwp.scid = :Arg_scid AND
- U_OrderRqwp.taskid = :arg_taskid AND
- u_orderrqwp.printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除订单明细产品' + mtrlcode + '对应的工价明细失败'+"~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
- Return (rslt)
- end function
- public function integer uof_pz_change (long arg_type, string arg_updatestr, long arg_rqmtrlid, ref string arg_msg);Int rslt = 1
- CHOOSE CASE arg_type
- CASE 1
- UPDATE u_saleRqMtrl_scll
- SET status = :arg_updatestr
- Where u_saleRqMtrl_scll.rqmtrlid = :arg_rqmtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- CASE 2
- UPDATE u_saleRqMtrl_scll
- SET woodcode = :arg_updatestr
- Where u_saleRqMtrl_scll.rqmtrlid = :arg_rqmtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- CASE 3
- UPDATE u_saleRqMtrl_scll
- SET pcode = :arg_updatestr
- Where u_saleRqMtrl_scll.rqmtrlid = :arg_rqmtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END CHOOSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSE
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer c_salemxscllprimt (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);//salepermit
- Int rslt = 1,cnt = 0
- Int ll_flag,ll_scllflag
- DateTime nulldate
- Decimal ld_assignqty,ld_consignedqty
- SetNull(nulldate)
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- SELECT flag,
- scllflag,
- assignqty,
- consignedqty
- INTO :ll_flag,
- :ll_scllflag,
- :ld_assignqty,
- :ld_consignedqty
- FROM u_saletaskmx
- WHERE scid = :Arg_scid AND
- taskid = :arg_taskid AND
- printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询操作失败,销售订单明细内容!"
- GOTO ext
- END IF
- IF ll_flag = 0 THEN
- rslt = 0
- ARG_MSG = "销售订单明细还没有审核,不能撤销领料审核,操作取消"
- GOTO ext
- END IF
- IF ll_scllflag = 0 THEN
- rslt = 0
- ARG_MSG = "销售订单明细还没有领料审核,操作取消"
- GOTO ext
- END IF
- IF ld_assignqty > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单明细已生产进仓,操作取消"
- GOTO ext
- END IF
- IF ld_consignedqty > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单明细已发货,操作取消"
- GOTO ext
- END IF
- //检查是否已进仓、领料
- Decimal ld_dstrqty
- SELECT sum(dstrqty)
- INTO :ld_dstrqty
- FROM u_saleRqMtrl_scll
- WHERE u_saleRqMtrl_scll.scid = :arg_scid AND
- u_saleRqMtrl_scll.taskID = :arg_taskid AND
- u_saleRqMtrl_scll.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 ld_dstrqty > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单明细已领料,操作取消"
- GOTO ext
- END IF
- //检查采购订单
- SELECT count(*)
- INTO :cnt
- FROM u_buytask INNER join u_buytaskmx
- on u_buytask.scid = u_buytaskmx.scid
- AND u_buytask.taskid = u_buytaskmx.taskid
- WHERE u_buytask.scid = :arg_scid
- AND u_buytaskmx.relid = :arg_taskid
- AND u_buytaskmx.relprintid = :arg_printid
- 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 = "已开采购订单["+String(cnt)+"]"
- GOTO ext
- END IF
- //检查领料单
- SELECT count(*)
- INTO :cnt
- FROM u_outware INNER join u_outwaremx
- on u_outware.scid = u_outwaremx.scid
- AND u_outware.outwareid = u_outwaremx.outwareid
- WHERE u_outware.scid = :arg_scid
- AND u_outwaremx.relid = :arg_taskid
- AND u_outwaremx.relprintid = :arg_printid
- AND u_outware.billtype = 3
- 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 = "已开领料出仓单["+String(cnt)+"]"
- GOTO ext
- END IF
- //检查外协订单
- SELECT count(*)
- INTO :cnt
- FROM u_order_wfjgMx INNER JOIN
- u_order_wfjg ON u_order_wfjgMx.scid = u_order_wfjg.scid AND
- u_order_wfjgMx.wfjgID = u_order_wfjg.wfjgID
- WHERE u_order_wfjg.scid = :arg_scid
- AND u_order_wfjgMx.orderid = :arg_taskid
- AND u_order_wfjgMx.relprintid = :arg_printid
- 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 = "已开外协订单["+String(cnt)+"]"
- GOTO ext
- END IF
- //检查生产进仓单
- SELECT count(*)
- INTO :cnt
- FROM u_inware INNER join u_inwaremx
- on u_inware.scid = u_inwaremx.scid
- AND u_inware.inwareid = u_inwaremx.inwareid
- WHERE u_inware.scid = :arg_scid
- AND u_inwaremx.relid = :arg_taskid
- AND u_inwaremx.relprintid = :arg_printid
- AND u_inware.billtype = 3
- 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 = "已开生产进仓单["+String(cnt)+"]"
- GOTO ext
- END IF
- //检查计件
- //个人产品工序 已开单数
- cnt = 0
- SELECT COUNT(*)
- INTO :cnt
- FROM u_scwg_taskwork_2,u_scwg_taskwork_2_mx
- WHERE u_scwg_taskwork_2_mx.billid = u_scwg_taskwork_2.billid
- AND u_scwg_taskwork_2_mx.orderid = :arg_taskid
- AND u_scwg_taskwork_2_mx.relprintid = :arg_printid
- And u_scwg_taskwork_2_mx.relscid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ARG_MSG = "查询是否建立个人产品工序计件单操作失败"+"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已经有相关个人产品工序计件单,不可以撤消审核"
- GOTO ext
- END IF
- //产品个人工序 已开单数
- cnt = 0
- SELECT COUNT(*)
- INTO :cnt
- FROM u_sc_taskworkmx,u_sc_taskwork
- WHERE u_sc_taskworkmx.billid = u_sc_taskwork.billid
- AND u_sc_taskworkmx.scid = u_sc_taskwork.scid
- And u_sc_taskwork.orderid = :arg_taskid
- AND u_sc_taskwork.relid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- ARG_MSG = "查询是否建立产品个人工序计件单操作失败"+"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已经有相关产品个人工序计件单,不可以撤消审核"
- GOTO ext
- END IF
- UPDATE u_SaleTaskmx
- SET scllrep = '' ,sclldate = :nulldate,
- scllflag = 0
- WHERE TaskID = :arg_taskid AND
- scid = :arg_scid AND
- printid = :arg_printid AND
- flag = 1 AND scllflag = 1
- 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
- Return (rslt)
- end function
- public function integer add_mxdscrp (long arg_scid, long arg_taskid, long arg_printid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart)
- //0 fail 1 SUCCESS
- Int rslt = 1
- arg_newdescppart = Trim(arg_newdescppart)
-
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- UPDATE u_saletaskmx
- SET mxDSCRP = mxDSCRP+' '+:arg_newdescppart
- WHERE u_saletaskmx.taskid = :arg_taskid AND
- scid = :arg_scid AND
- printid = :arg_printid 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 arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- Return (rslt)
- end function
- private function integer p_getinfo (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg);Int rslt = 1
- SELECT u_SaleTaskMx.MtrlID,
- u_SaleTaskMx.mxdscrp,
- u_SaleTaskMx.status,
- u_SaleTaskMx.pcode,
- u_SaleTaskMx.woodcode,
- u_SaleTaskMx.outtype,
- u_SaleTaskMx.unit,
- u_SaleTaskMx.sclldate,
- u_SaleTaskMx.scllrep,
- u_SaleTaskMx.scllflag,
- u_SaleTaskMx.auditingdate,
- u_SaleTaskMx.auditingrep,
- u_SaleTaskMx.flag,
- u_mtrldef.mtrlcode
- INTO :MtrlID,
- :mxdscrp,
- :status,
- :pcode,
- :woodcode,
- :outtype,
- :unit,
- :sclldate,
- :scllrep,
- :scllflag,
- :auditingdate,
- :auditingrep,
- :flag,
- :mtrlcode
- FROM u_SaleTaskMx,u_mtrldef
- WHERE u_SaleTaskMx.scid = :Arg_scid AND
- u_SaleTaskMx.taskid = :arg_taskid AND
- u_SaleTaskMx.printid = :Arg_printid and
- u_SaleTaskMx.mtrlid = u_mtrldef.mtrlid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询订单内容失败(错误订单唯一码)'
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_cmp (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- Decimal orderqty
- Long ll_mtrlid
- String ls_status,ls_woodcode,ls_pcode
- Long ll_scllflag
- SELECT u_saletaskmx.orderqty,
- u_saletaskmx.mtrlid,
- u_saletaskmx.status,
- u_saletaskmx.woodcode,
- u_saletaskmx.pcode,
- u_saletaskmx.scllflag
- INTO :orderqty,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ll_scllflag
- FROM u_saletaskmx
- WHERE u_saletaskmx.scid = :Arg_scid AND
- u_saletaskmx.taskid = :arg_taskid AND
- u_saletaskmx.printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询订单明细信息失败'
- GOTO ext
- END IF
- IF ll_scllflag = 1 THEN
- arg_msg = '已用料审核,不能再计算'
- END IF
- Long ll_sum
- SELECT sum(u_saleRqMtrl_scll.dstrqty)
- INTO :ll_sum
- FROM u_saleRqMtrl_scll WHERE u_saleRqMtrl_scll.scid = :Arg_scid AND
- u_saleRqMtrl_scll.taskid = :arg_taskid AND
- u_saleRqMtrl_scll.printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询需求明细已开单数量失败'
- GOTO ext
- END IF
- IF ll_sum > 0 THEN
- rslt = 0
- arg_msg = '需求明细已开领料单,不能再用料运算'
- GOTO ext
- END IF
- DELETE FROM u_saleRqMtrl_scll
- WHERE u_saleRqMtrl_scll.scid = :Arg_scid AND
- u_saleRqMtrl_scll.taskid = :arg_taskid AND
- u_saleRqMtrl_scll.printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除订单明细对应的需求明细失败'
- GOTO ext
- END IF
- IF uof_cmp_mx(Arg_scid,arg_taskid,arg_printid,ll_mtrlid,orderqty,ls_status,ls_woodcode,ls_pcode,1,FALSE) = 0 THEN
- rslt = 0
- arg_msg = '生成订单明细对应的需求明细失败'
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- Return (rslt)
- end function
- public function integer uof_cmp_mx (long arg_scid, long arg_taskid, long arg_printid, long arg_mtrlid, decimal arg_qty, string arg_status, string arg_woodcode, string arg_pcode, integer arg_type, boolean arg_ifcommit);Long it_mxbt1,i,mtrlorigin,ls_newid
- Long rslt = 1
- s_outwaremx outwaremx[]
- String ls_msg
- SELECT mtrlorigin
- INTO :mtrlorigin
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- END IF
- SELECT count(*)
- INTO :i
- FROM u_PrdPF
- Where u_PrdPF.mtrlid = :arg_mtrlid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF i = 0 OR mtrlorigin = 2 THEN
- IF arg_type = 1 THEN
- rslt = 1
- GOTO ext
- END IF
- ls_newid = f_sys_scidentity(arg_scid,"u_saleRqMtrl_scll","rqmtrlid",ls_msg,TRUE,commit_transaction)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ////插入运算结果表
- UPDATE u_saleRqMtrl_scll
- SET trueRqqty = trueRqqty + :arg_qty
- WHERE scid = :arg_scid AND
- taskID = :arg_taskID AND
- MtrlID = :arg_mtrlid AND
- printid = :arg_printid AND
- status = :arg_status AND
- woodcode = :arg_woodcode AND
- pcode = :arg_pcode USING commit_transaction;
- IF commit_transaction.SQLCode = 0 THEN
- IF commit_transaction.SQLNRows = 0 THEN
- INSERT INTO u_saleRqMtrl_scll
- ( rqmtrlid,
- scid,
- taskID,
- MtrlID,
- printid,
- trueRqqty,
- status,
- woodcode,
- pcode
- )
- VALUES ( :ls_newid,
- :arg_scid,
- :arg_taskID,
- :arg_mtrlid,
- :arg_printid,
- :arg_qty,
- :arg_status,
- :arg_woodcode,
- :arg_pcode
- ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- rslt = 0
- GOTO ext
- END IF
- END IF
- it_mxbt1 = 1
- DECLARE cur_outwaremx CURSOR FOR
- SELECT u_PrdPF.SonMtrlid,
- u_mtrldef.mtrlcode ,
- u_mtrldef.mtrlname ,
- u_mtrldef.mtrlmode,
- u_mtrldef.unit ,
- u_mtrldef.mtrlsectype,
- u_mtrldef.zxmtrlmode,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode,
- reqty = case when u_PrdPF.sonloss = 1 then 0 else :arg_qty * u_PrdPF.Sonscale /( 1 - u_PrdPF.sonloss) + u_PrdPF.sondecloss END
- FROM u_PrdPF ,
- u_mtrldef
- WHERE ( u_PrdPF.SonMtrlid = u_mtrldef.mtrlid ) AND
- ( u_PrdPF.mtrlid = :arg_mtrlid ) USING commit_transaction;
- OPEN cur_outwaremx;
- FETCH cur_outwaremx INTO
- :outwaremx[it_mxbt1].Mtrlid,
- :outwaremx[it_mxbt1].mtrlcode,
- :outwaremx[it_mxbt1].mtrlname,
- :outwaremx[it_mxbt1].mtrlmode,
- :outwaremx[it_mxbt1].unit,
- :outwaremx[it_mxbt1].mtrlsectype,
- :outwaremx[it_mxbt1].zxmtrlmode,
- :outwaremx[it_mxbt1].status,
- :outwaremx[it_mxbt1].woodcode,
- :outwaremx[it_mxbt1].pcode,
- :outwaremx[it_mxbt1].qty;
- DO WHILE commit_transaction.SQLCode = 0
- it_mxbt1++
- FETCH cur_outwaremx INTO
- :outwaremx[it_mxbt1].Mtrlid,
- :outwaremx[it_mxbt1].mtrlcode,
- :outwaremx[it_mxbt1].mtrlname,
- :outwaremx[it_mxbt1].mtrlmode,
- :outwaremx[it_mxbt1].mtrlsectype,
- :outwaremx[it_mxbt1].zxmtrlmode,
- :outwaremx[it_mxbt1].unit,
- :outwaremx[it_mxbt1].status,
- :outwaremx[it_mxbt1].woodcode,
- :outwaremx[it_mxbt1].pcode,
- :outwaremx[it_mxbt1].qty;
- LOOP
- CLOSE cur_outwaremx;
- it_mxbt1 = it_mxbt1 - 1
- FOR i = 1 TO it_mxbt1
- IF uof_cmp_mx(arg_scid,arg_taskID,arg_printid,outwaremx[i].mtrlid,outwaremx[i].qty,outwaremx[i].status,outwaremx[i].woodcode,outwaremx[i].pcode,0,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_delcard (long arg_cardid[], string arg_cardcode[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long i
- String ls_cardcode
- String ls_mtrlcode,ls_taskcode
- Long ls_printid,ll_taskid,ll_scid
- String ls_status,ls_woodcode,ls_pcode
- SELECT u_mtrldef.mtrlcode,
- u_saletaskmx.printid,
- u_saletask.taskcode,
- u_saletaskmx.status,
- u_saletaskmx.woodcode,
- u_saletaskmx.pcode,
- u_saletaskmx.taskid,
- u_saletaskmx.scid
- INTO :ls_mtrlcode,
- :ls_printid,
- :ls_taskcode,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ll_taskid,
- :ll_scid
- FROM u_saletaskmx_card INNER JOIN
- u_SaleTaskMx ON u_saletaskmx_card.scid = u_SaleTaskMx.scid AND
- u_saletaskmx_card.taskid = u_SaleTaskMx.TaskID AND
- u_saletaskmx_card.mxprintid = u_SaleTaskMx.printid INNER JOIN
- u_mtrldef ON u_SaleTaskMx.MtrlID = u_mtrldef.mtrlid INNER JOIN
- u_SaleTask ON u_SaleTask.TaskID = u_SaleTaskMx.TaskID AND
- u_SaleTask.scid = u_SaleTaskMx.scid
- Where u_saletaskmx_card.cardid = :arg_cardid[1] USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询订单明细操作失败' +"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- Long ll_count
- SELECT count(*)
- INTO :ll_count
- FROM u_saletaskmx_card
- WHERE u_saletaskmx_card.scid = :ll_scid AND
- u_saletaskmx_card.taskid = :ll_taskid AND
- u_saletaskmx_card.mxprintid = :ls_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询流程卡数量操作失败' +"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ll_count = UpperBound(arg_cardid) THEN
- UPDATE u_saletaskmx
- SET ifsc = 0
- WHERE scid = :ll_scid AND
- taskid = :ll_taskid AND
- printid = :ls_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新订单明细排产标记操作失败' +"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- FOR i = 1 TO UpperBound(arg_cardid)
- DELETE FROM
- u_saletaskmx_card
- Where cardid = :arg_cardid[i] USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '删除流程卡' +arg_cardcode[i] + '失败' +"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ls_cardcode = ls_cardcode + arg_cardcode[i] + ','
- NEXT
- ls_cardcode = Left(ls_cardcode,Len(ls_cardcode) - 1)
- String ls_log
- ls_log = ls_log + '删除销售订单:' + ls_taskcode + '明细第' + String(ls_printid) + '行,编码:' + ls_mtrlcode + ','
- IF ls_status <> '' THEN
- ls_log = ls_log + sys_option_change_status + ':' + ls_status + ','
- END IF
- IF ls_woodcode <> '' THEN
- ls_log = ls_log + sys_option_change_woodcode + ':' + ls_woodcode + ','
- END IF
- IF ls_woodcode <> '' THEN
- ls_log = ls_log + sys_option_change_pcode + ':' + ls_pcode + ','
- END IF
- ls_log = ls_log + '卡号:'+ls_cardcode
- //日志
- if f_setsysoplog('生产流程卡',ls_log,arg_msg,false) = 0 then
- rslt = 0
- goto ext
- end if
- //--
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_buildcard1 (long arg_scid[], long arg_taskid[], long arg_printid[], long arg_qty[], string arg_operator, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long i,ll_cardid,j
- String cardcode
- DateTime server_datetime
- Long ll_count = 0
- 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
- FOR j = 1 TO UpperBound(arg_scid)
-
- FOR i = 1 TO arg_qty[j]
- ll_cardid = f_sys_scidentity(0,"u_saletaskmx_card","cardid",arg_msg,TRUE, commit_transaction) //数据commit事务)
- IF ll_cardid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- cardcode = getid(0, 'LC',Date(server_datetime),FALSE,commit_transaction)
- IF cardcode = "err" THEN
- cardcode = ''
- rslt = 0
- arg_msg = "无法获取流程卡编号"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_saletaskmx_card
- ( scid,
- taskid,
- mxprintid,
- cardid,
- cardcode,
- opdate,
- opemp )
- VALUES ( :arg_scid[j],
- :arg_taskid[j],
- :arg_printid[j],
- :ll_cardid,
- :cardcode,
- :server_datetime,
- :arg_operator ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "流程卡" + cardcode +",插入数据库失败"+"~n"+commit_transaction.SQLErrText
- cardcode = ''
- GOTO ext
- END IF
-
- ll_count++
- NEXT
- NEXT
- IF ll_count = 0 THEN
- rslt = 0
- arg_msg = "没有可生成流程卡的数据"
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_delcard1 (long arg_cardid[], string arg_cardcode[], long arg_row[], long arg_scid[], long arg_taskid[], long arg_printid[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long i,j
- String ls_cardcode[]
- Long ll_cardqty
- Long ll_count
- String ls_log
- String ls_mtrlcode,ls_taskcode
- Long ls_printid,ll_taskid,ll_scid
- String ls_status,ls_woodcode,ls_pcode
- s_saletask_mtrl s_mtrl
- s_saletaskmx_card s_card[]
- FOR i = 1 TO UpperBound(arg_taskid)
- ll_cardqty = 0
- ll_count = 0
- SELECT u_mtrldef.mtrlcode,
- u_saletaskmx.printid,
- u_saletask.taskcode,
- u_saletaskmx.status,
- u_saletaskmx.woodcode,
- u_saletaskmx.pcode,
- u_saletaskmx.ifsc
- INTO :s_mtrl.mtrlcode[i],
- :s_mtrl.printid[i],
- :s_mtrl.taskcode[i],
- :s_mtrl.status[i],
- :s_mtrl.woodcode[i],
- :s_mtrl.pcode[i],
- :s_mtrl.ifsc[i]
- FROM
- u_SaleTaskMx INNER JOIN
- u_mtrldef ON u_SaleTaskMx.MtrlID = u_mtrldef.mtrlid INNER JOIN
- u_SaleTask ON u_SaleTask.TaskID = u_SaleTaskMx.TaskID AND
- u_SaleTask.scid = u_SaleTaskMx.scid
- WHERE u_SaleTaskMx.scid = :arg_scid[i] AND
- u_SaleTaskMx.taskid = :arg_taskid[i] AND
- u_saletaskmx.printid = :arg_printid[i] USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询订单明细操作失败' +"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF s_mtrl.ifsc[i] = 1 THEN
- arg_msg = '销售订单:' + s_mtrl.taskcode[i] + '明细第' + String(arg_printid[i]) + '行,编码[' + s_mtrl.mtrlcode[i] + ']已排产,不能删除流程卡!'
- rslt = 0
- GOTO ext
- END IF
- //
- ls_cardcode[i] = ''
- FOR j = 1 TO UpperBound(arg_cardid)
- IF arg_row[j] = i THEN
- ls_cardcode[i] = ls_cardcode[i] + arg_cardcode[j] + ','
- ll_cardqty = ll_cardqty + 1
- END IF
-
- DELETE FROM u_saletaskmx_card
- Where cardid In (:arg_cardid[j]) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '删除流程卡操作失败' +"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
-
- // ////写日志
- // IF ls_cardcode[i] <> '' THEN
- // ls_cardcode[i] = Left(ls_cardcode[i],Len(ls_cardcode[i] ) - 1)
- //
- // ls_log = ''
- //
- // ls_log = ls_log + '删除销售订单:' + s_mtrl.taskcode[i] + '明细第' + String(arg_printid[i]) + '行,编码:' + s_mtrl.mtrlcode[i] + ','
- // IF ls_status <> '' THEN
- // ls_log = ls_log + sys_option_change_status + ':' + s_mtrl.status[i] + ','
- // END IF
- // IF ls_woodcode <> '' THEN
- // ls_log = ls_log + sys_option_change_woodcode + ':' + s_mtrl.woodcode[i] + ','
- // END IF
- // IF ls_woodcode <> '' THEN
- // ls_log = ls_log + sys_option_change_pcode + ':' + s_mtrl.pcode[i] + ','
- // END IF
- // ls_log = ls_log + '卡号:'+ls_cardcode[i]
- //
- // if len(ls_log) > 250 then ls_log = left(ls_log, 250)
- // //日志
- // f_setsysoplog('生产流程卡',ls_log,arg_msg,FALSE)
- // END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_auditcard (long arg_cardid[], string arg_cardcode[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long i,printnum
- DateTime server_dt
- SELECT Top 1 getdate() Into :server_dt From u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- FOR i = 1 To UpperBound(arg_cardid)
-
- IF sys_option_saletask_sc_card3 = 1 THEN
- printnum = 0
- SELECT printnum
- INTO :printnum
- FROM u_saletaskmx_card
- Where cardid = :arg_cardid[i] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '确认流程卡' +arg_cardcode[i] + '失败,查询流程卡打印次数失败' +"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF printnum = 0 THEN
- arg_msg = ' 流程卡' +arg_cardcode[i] + '必须先打印后确认'
- rslt = 0
- GOTO ext
- END IF
-
- END IF
-
-
-
- UPDATE u_saletaskmx_card
- SET flag = 1,
- audittime = :server_dt,
- auditemp = :publ_operator
- Where cardid = :arg_cardid[i] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '确认流程卡' +arg_cardcode[i] + '失败' +"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_cauditcard (long arg_cardid[], string arg_cardcode[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long i
- DateTime null_dt
- SetNull(null_dt)
- FOR i = 1 TO UpperBound(arg_cardid)
- UPDATE u_saletaskmx_card
- SET flag = 0,
- audittime = :null_dt,
- auditemp = ''
- Where cardid = :arg_cardid[i] USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '确认流程卡' +arg_cardcode[i] + '失败' +"~n"+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_sc (s_saletaskmx arg_mx[], long arg_itmx, integer arg_scflag, ref string arg_msg);Int rslt = 1
- Long i
- Long ll_count,ll_count1
- DateTime server_dt
- DateTime null_dt
-
- Long ll_storageid_arr[],ll_storageid
- Long ll_scid_arr[],ll_scid
- Long ll_if_cus_mtrlware_arr[],ll_if_cus_mtrlware
- String ll_storagename_arr[],ls_storagename
- Long ll_inwaretype_arr[],ll_inwaretype
- Long ll_j,count,ll_i
- Decimal ld_add_qty
- //Decimal ld_orderqty
- Long if_plancode_arr[],if_plancode
- String ls_status,ls_mtrlcode,ls_pcode,ls_woodcode
- Long ll_mtrlwareid,ll_mtrlid
- Long ll_cusid
- String ls_plancode
- SetNull(null_dt)
- SELECT Top 1 getdate() INTO :server_dt FROM u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- FOR i = 1 TO arg_itmx
- IF arg_scflag = 1 THEN
- IF sys_option_saletask_sc_card = 1 THEN
- ll_count = 0
- SELECT printnum
- INTO :ll_count
- FROM u_saletaskmx
- WHERE scid = :arg_mx[i].scid AND
- taskid = :arg_mx[i].taskid AND
- printid = :arg_mx[i].printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询打印次数失败!'
- GOTO ext
- END IF
-
- IF ll_count = 0 THEN
- rslt = 0
- arg_msg = '订单生产跟踪表必须先打印后确认!操作取消'
- GOTO ext
- END IF
- END IF
-
- UPDATE u_saletaskmx
- SET u_saletaskmx.ifsc = 1,
- u_saletaskmx.audittime = :server_dt,
- u_saletaskmx.auditemp = :publ_operator
- WHERE scid = :arg_mx[i].scid AND
- taskid = :arg_mx[i].taskid AND
- printid = :arg_mx[i].printid USING commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新销售订单明细确认标记失败!'
- GOTO ext
- END IF
- if sys_option_saletask_sc_mx_addware = 1 then
- DECLARE pf_cur CURSOR FOR
- SELECT u_storage.storageid,
- u_storage.storagename,
- u_storage.scid,
- u_storage.balctype,
- u_storage.inwaretype,
- u_storage.if_plancode
- FROM u_storage
- WHERE ( u_storage.Mtrlprp = 0 ) AND
- ( u_storage.scid = :scid )
- Using commit_transaction;
- OPEN pf_cur;
- FETCH pf_cur Into :ll_storageid,:ls_storagename,:ll_scid,:ll_if_cus_mtrlware,:ll_inwaretype,:if_plancode;
- DO WHILE commit_transaction.SQLCode = 0
- count++
- ll_storageid_arr[count] = ll_storageid
- ll_storagename_arr[count] = ls_storagename
- ll_scid_arr[count] = ll_scid
- ll_if_cus_mtrlware_arr[count] = ll_if_cus_mtrlware
- ll_inwaretype_arr[count] = ll_inwaretype
- if_plancode_arr[count] = if_plancode
- FETCH pf_cur Into :ll_storageid,:ls_storagename,:ll_scid,:ll_if_cus_mtrlware,:ll_inwaretype,:if_plancode;
- LOOP
- CLOSE pf_cur;
-
- ll_mtrlid = arg_mx[i].mtrlid
- ls_mtrlcode = arg_mx[i].mtrlcode
- ls_status = arg_mx[i].Status
- ls_pcode = arg_mx[i].pcode
- ls_woodcode = arg_mx[i].woodcode
- // ld_orderqty = arg_mx[i].orderqty
- ld_add_qty = 0
-
- FOR ll_j = 1 To count
-
- ll_cusid = 0///不分客户
- // IF ll_if_cus_mtrlware_arr[ll_j] = 1 THEN
- // ll_cusid = 0 ///
- // ELSE
- // ll_cusid = 0
- // END IF
- IF if_plancode_arr[ll_j] = 0 THEN
- ls_plancode = ''
- ELSE
- ls_plancode = arg_mx[i].plancode
- END IF
-
- SELECT top 1 mtrlwareid INTO :ll_mtrlwareid
- FROM u_mtrlware
- WHERE mtrlid = :ll_mtrlid
- AND status = :ls_status
- AND storageid = :ll_storageid_arr[ll_j]
- AND woodcode = :ls_woodcode
- AND pcode = :ls_pcode
- AND SCID = :ll_scid_arr[ll_j]
- AND ( sptid = :ll_cusid OR :ll_cusid = 0 )
- AND plancode = :ls_plancode
- Using commit_transaction;
- IF commit_transaction.SQLCode = 0 THEN
- // UPDATE u_mtrlware
- // SET noallocqty = noallocqty + :ld_add_qty
- // WHERE mtrlwareid = :ll_mtrlwareid
- // AND scid = :ll_scid_arr[ll_j]
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // ARG_MSG = '产品:' + ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'增加库存失败'
- // rslt = 0
- // GOTO ext
- // END IF
- ELSEIF commit_transaction.SQLCode = -1 THEN
- ARG_MSG = '查询:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'库存失败'
- rslt = 0
- GOTO ext
- ELSEIF commit_transaction.SQLCode = 100 THEN
- ll_mtrlwareid = 0
-
- ll_mtrlwareid = f_sys_scidentity(ll_scid_arr[ll_j],"u_mtrlware","mtrlwareid",ARG_MSG,False,commit_transaction)
- IF ll_mtrlwareid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- INSERT INTO u_mtrlware(scid,
- mtrlwareid,
- mtrlid,
- storageid,
- noallocqty,
- status,
- woodcode,
- pcode,
- sptid,
- plancode)
- VALUES(:ll_scid_arr[ll_j],
- :ll_mtrlwareid,
- :ll_mtrlid,
- :ll_storageid_arr[ll_j],
- :ld_add_qty,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ll_cusid,
- :ls_plancode)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ARG_MSG = '产品:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'加0库存失败或物料已经有库存,请检查'
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
-
- end if
-
- ELSE
- Long cnt
- SELECT count(*) INTO :cnt
- FROM u_inwaremx
- INNER JOIN u_inware ON u_inware.scid = u_inwaremx.scid
- AND u_inware.inwareid = u_inwaremx.inwareid
- INNER JOIN u_saletaskmx ON u_SaleTaskMx.scid = u_inwaremx.scid
- AND u_SaleTaskMx.taskid = u_inwaremx.relid
- AND u_SaleTaskMx.printid = u_inwaremx.relprintid
- WHERE u_inware.billtype = 3
- AND u_SaleTaskMx.scid = :arg_mx[i].scid
- AND u_SaleTaskMx.taskid = :arg_mx[i].taskid
- AND u_SaleTaskMx.printid = :arg_mx[i].printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询是否已开生产进仓失败!'+sqlca.sqlerrtext
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "该明细已经开了生产进仓单,不能反确认"
- GOTO ext
- END IF
-
- SELECT count(*) INTO :cnt
- FROM u_outwaremx
- INNER JOIN u_outware ON u_outware.scid = u_outwaremx.scid
- AND u_outware.outwareid = u_outwaremx.outwareid
- INNER JOIN u_SaleTaskMX ON u_outwaremx.scid = u_SaleTaskMX.scid
- AND u_outwaremx.relid = u_SaleTaskMX.TaskID
- AND u_outwaremx.relprintid = u_SaleTaskMX.printid
- WHERE u_outware.billtype = 1 AND u_outware.thflag = 0
- AND u_SaleTaskMx.scid = :arg_mx[i].scid
- AND u_SaleTaskMx.taskid = :arg_mx[i].taskid
- AND u_SaleTaskMx.printid = :arg_mx[i].printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询是否已开发货单失败!'+sqlca.sqlerrtext
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "该明细已经开了发货单,不能反确认"
- GOTO ext
- END IF
-
-
- UPDATE u_saletaskmx
- SET ifsc = 0,
- u_saletaskmx.audittime = :null_dt,
- u_saletaskmx.auditemp = ''
- WHERE scid = :arg_mx[i].scid AND
- taskid = :arg_mx[i].taskid AND
- printid = :arg_mx[i].printid USING commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新销售订单明细确认标记失败!'
- GOTO ext
- END IF
- END IF
-
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '更新销售订单明细确认标记失败!'
- // GOTO ext
- // END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSE
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_add_rqmtrl_scll (s_order_ml_rqmtrl arg_rqmtrl, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
- Long i,ls_newid
- DELETE FROM u_saleRqMtrl_scll
- WHERE u_saleRqMtrl_scll.scid = :arg_rqmtrl.scid[1] AND
- u_saleRqMtrl_scll.taskID = :arg_rqmtrl.taskid[1] AND
- u_saleRqMtrl_scll.printid = :arg_rqmtrl.printid[1] USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除订单明细的物料领料明细失败'
- GOTO ext
- END IF
- FOR i = 1 TO UpperBound(arg_rqmtrl.taskID)
- ls_newid = f_sys_scidentity(arg_rqmtrl.scid[i],"u_saleRqMtrl_scll","rqmtrlid",arg_msg,TRUE,commit_transaction)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- INSERT INTO u_saleRqMtrl_scll
- ( rqmtrlid,
- scid,
- taskID,
- MtrlID,
- printid,
- trueRqqty,
- costamt,
- status,
- woodcode,
- pcode,
- ifchanged )
- VALUES ( :ls_newid,
- :arg_rqmtrl.scid[i],
- :arg_rqmtrl.taskID[i],
- :arg_rqmtrl.MtrlID[i],
- :arg_rqmtrl.printid[i],
- :arg_rqmtrl.cmplqty[i],
- 0,
- :arg_rqmtrl.status[i],
- :arg_rqmtrl.woodcode[i],
- :arg_rqmtrl.pcode[i],
- :arg_rqmtrl.ifchanged[i] ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入订单明细的物料领料明细失败'
- GOTO ext
- END IF
-
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_cmp_workprice (long arg_scid, long arg_taskid, long arg_printid, long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg);Long it_mxbt1,mtrlorigin,ls_newid
- Long rslt = 1,I = 1,NO_MXCHECK = 0
- s_outwaremx outwaremx[]
- String ls_msg
- Long ll_flag
- SELECT auditflag
- INTO :ll_flag
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '工价表没有审核'
- GOTO ext
- END IF
- s_workpricetable_array s_workprice
- DECLARE CUR_INWAERMX CURSOR FOR
- SELECT u_sc_workprice.proid,
- u_sc_workprice.proorder,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.workprice,
- u_sc_workprice.workqty,
- u_sc_workprice.worklevel,
- u_sc_workprice.techlevel,
- u_sc_workprice.workhour,
- u_sc_workprice.dscrp,
- u_sc_workprice.Lastflag
- FROM u_sc_workprice
- Where u_sc_workprice.mtrlid = :arg_mtrlid USING commit_transaction;
- OPEN CUR_INWAERMX;
- FETCH CUR_INWAERMX INTO :s_workprice.proid[i],
- :s_workprice.proorder[i],
- :s_workprice.procode[i],
- :s_workprice.proname[i],
- :s_workprice.wrkgrpid[i],
- :s_workprice.workprice[i],
- :s_workprice.workqty[i],
- :s_workprice.worklevel[i],
- :s_workprice.techlevel[i],
- :s_workprice.workhour[i],
- :s_workprice.dscrp[i],
- :s_workprice.Lastflag[I] ;
- DO WHILE commit_transaction.SQLCode = 0
- I++
- FETCH CUR_INWAERMX INTO :s_workprice.proid[i],
- :s_workprice.proorder[i],
- :s_workprice.procode[i],
- :s_workprice.proname[i],
- :s_workprice.wrkgrpid[i],
- :s_workprice.workprice[i],
- :s_workprice.workqty[i],
- :s_workprice.worklevel[i],
- :s_workprice.techlevel[i],
- :s_workprice.workhour[i],
- :s_workprice.dscrp[i],
- :s_workprice.Lastflag[I] ;
- LOOP
- CLOSE CUR_INWAERMX;
- //检验明细是否读入完整
- SELECT COUNT(*) INTO :NO_MXCHECK
- FROM u_sc_workprice
- Where u_sc_workprice.mtrlid = :arg_mtrlid 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
- FOR I = 1 TO NO_MXCHECK
- INSERT INTO u_order_ml_workprice
- ( scid,
- taskid,
- printid,
- proid,
- proorder,
- procode,
- proname,
- wrkgrpid,
- workprice,
- workqty,
- worklevel,
- techlevel,
- workhour,
- dscrp,
- Lastflag )
- VALUES ( :arg_scid,
- :arg_taskid,
- :arg_printid,
- :s_workprice.proid[i],
- :s_workprice.proorder[i],
- :s_workprice.procode[i],
- :s_workprice.proname[i],
- :s_workprice.wrkgrpid[i],
- :s_workprice.workprice[i],
- :s_workprice.workqty[i],
- :s_workprice.worklevel[i],
- :s_workprice.techlevel[i],
- :s_workprice.workhour[i],
- :s_workprice.dscrp[i],
- :s_workprice.Lastflag[I] ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "插入明细操作失败,销售订单明细运算工价明细"
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_add_workprice (s_order_ml_workprice_array arg_rqmtrl, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
- Long i,ls_newid
- DELETE FROM u_order_ml_workprice
- WHERE u_order_ml_workprice.scid = :arg_rqmtrl.scid[1] AND
- u_order_ml_workprice.taskID = :arg_rqmtrl.taskid[1] AND
- u_order_ml_workprice.printid = :arg_rqmtrl.printid[1] USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除订单明细的工价设定失败'
- GOTO ext
- END IF
- FOR i = 1 TO UpperBound(arg_rqmtrl.taskID)
- INSERT INTO u_order_ml_workprice
- ( scid,
- taskid,
- printid,
- proid,
- proorder,
- procode,
- proname,
- wrkgrpid,
- workprice,
- workqty,
- worklevel,
- techlevel,
- workhour,
- dscrp,
- Lastflag,
- ifchanged )
- VALUES ( :arg_rqmtrl.scid[i],
- :arg_rqmtrl.taskid[i],
- :arg_rqmtrl.printid[i],
- :arg_rqmtrl.proid[i],
- :arg_rqmtrl.proorder[i],
- :arg_rqmtrl.procode[i],
- :arg_rqmtrl.proname[i],
- :arg_rqmtrl.wrkgrpid[i],
- :arg_rqmtrl.workprice[i],
- :arg_rqmtrl.workqty[i],
- :arg_rqmtrl.worklevel[i],
- :arg_rqmtrl.techlevel[i],
- :arg_rqmtrl.workhour[i],
- :arg_rqmtrl.dscrp[i],
- :arg_rqmtrl.Lastflag[i],
- :arg_rqmtrl.ifchanged[i]) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入订单明细的工价设定失败'
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_order_add_pro (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- If arg_taskid = 0 Then
- rslt = 0
- arg_msg = "没有审核对象"
- Goto ext
- End If
- If p_getinfo(arg_scid,arg_taskid,arg_printid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If flag <> 1 And flag <> 5 And flag <> 6 Then
- rslt = 0
- arg_msg = '订单明细产品' + mtrlcode + ',只有在(在进行,完成)状态才可以生成工序,请核对'
- Goto ext
- End If
- If scllflag = 1 Then
- arg_msg = '订单明细产品' + mtrlcode + '已用料审核,不能再重新生成工序'
- End If
- cnt = 0
- Select count(*) Into :cnt
- From u_orderrqwp
- Where scid = :arg_scid
- And taskid = :arg_taskid
- And printid = :arg_printid
- And finishqty > 0;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询销售订单明细产品' + mtrlcode + '的工序明细是否有完成数量失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- If cnt > 0 Then
- arg_msg = '销售订单明细产品' + mtrlcode + '的工序明细已有完成数量,不能生成计划工序明细'
- rslt = 0
- Goto ext
- End If
- //检查计件单
- cnt = 0
- Select count(*) Into :cnt
- From u_scwg_taskwork_2_mx
- Where relscid = :arg_scid
- And orderid = :arg_taskid
- And relprintid = :arg_printid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询销售订单明细产品' + mtrlcode + '的工序明细是否有个人产品工序计件单失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- If cnt > 0 Then
- arg_msg = '销售订单明细产品' + mtrlcode + '的工序明细已有个人产品工序计件单,不能生成计划工序明细'
- rslt = 0
- Goto ext
- End If
- //检查产品个人工序计件单
- cnt = 0
- Select count(*) Into :cnt
- From u_sc_taskwork
- Where scid = :arg_scid
- And orderid = :arg_taskid
- And relid = :arg_printid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询销售订单明细产品' + mtrlcode + '的工序明细是否有产品个人工序计件单失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- If cnt > 0 Then
- arg_msg = '销售订单明细产品' + mtrlcode + '的工序明细已有产品个人工序计件单,不能生成计划工序明细'
- rslt = 0
- Goto ext
- End If
- //检查工价表
- cnt = 0
- Select count(*) Into :cnt
- From u_sc_workprice
- Where mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品' + mtrlcode + '工价表失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- // 系统选项233,未使用工资时,审核不提示工价表未设置。
- If sys_option_order_skip_workprice = 1 Then //检查建立
- If cnt = 0 Then
- arg_msg = '系统选项[233]限制,产品' + mtrlcode + '工价表未建立,不能建立工序工价'
- rslt = 0
- Goto ext
- End If
- ElseIf sys_option_order_skip_workprice = 2 Then //检查审核
- If cnt = 0 Then
- arg_msg = '产品' + mtrlcode + '工价表未建立,请先建立工价表'
- rslt = 0
- Goto ext
- End If
-
- Int li_auditflag_workprice
- Select auditflag
- Into :li_auditflag_workprice
- From u_mtrldef
- Where mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品' + mtrlcode + '工价表失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- If li_auditflag_workprice = 0 Then
- arg_msg = '系统选项[233]限制,产品' + mtrlcode + '工价表未审核,不能建立工序工价'
- rslt = 0
- Goto ext
- End If
- Else //0 不检查
-
- End If
- //IF cnt = 0 THEN
- //
- //
- // IF sys_option_order_skip_workprice = 1 THEN
- // rslt = 1
- // GOTO ext
- // ELSE
- // arg_msg = '产品' + mtrlcode + '工价表未建立,请先建立工价表'
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- Delete From U_OrderRqwp
- Where U_OrderRqwp.scid = :Arg_scid And
- U_OrderRqwp.taskid = :arg_taskid And
- u_orderrqwp.printid = :arg_printid Using sqlca;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '删除订单明细产品' + mtrlcode + '对应的工价明细失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- /// //
- //messagebox("",arg_taskid)
- //messagebox("",arg_printid)
- /////status
- Insert Into u_orderrqwp(scid,taskid,mtrlid,procode,proname,proorder,proqty,wrkgrpid,lsxtype,workprice,status,ifjd,printid,pricestr,stepstr)
- (Select u_SaleTaskMx.scid,u_SaleTaskMx.taskid,u_SaleTaskMx.mtrlid,u_sc_workprice.procode,
- u_sc_workprice.proname,u_sc_workprice.proorder,u_sc_workprice.workqty * u_SaleTaskMx.orderqty,
- u_sc_workprice.wrkgrpid,u_sc_workprice.lsxtype,u_sc_workprice.workprice,
- case u_mtrldef.statusflag when 2 then u_SaleTaskMx.status else u_sc_workprice.status End as status,
- u_sc_workprice.ifjd,u_SaleTaskMx.printid,u_sc_workprice.pricestr,u_sc_workprice.stepstr
- From u_sc_workprice,u_SaleTaskMx,u_mtrldef
- Where u_sc_workprice.mtrlid = u_SaleTaskMx.mtrlid
- And u_mtrldef.mtrlid = u_SaleTaskMx.mtrlid
- And u_SaleTaskMx.taskid = :arg_taskid
- And u_SaleTaskMx.scid = :arg_scid
- And u_SaleTaskMx.printid = :arg_printid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '添加销售订单明细的工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- //单价公式
- //orderqty 排产数量
- //status 配置
- //woodcode 配置1
- //pcode 配置2
- //ls_mtrlsectype 自定义1
- //ls_zxmtrlmode 自定义2
- //物料规格arg_ls_mtrlmode
- //客户编码 arg_ls_cuscode
- //客户名称 arg_ls_cusname
- //arg_parmstr 公式
- //arg_value_dec 返回的工价
- Decimal arg_orderqty
- String arg_ls_mtrlmode,arg_ls_mtrlsectype,arg_ls_zxmtrlmode,arg_ls_cuscode,arg_ls_cusname
- Long ii = 0,arry_saletaskid[],arry_itemid[]
- Decimal de_temp = 0,arry_price[]
- String arry_pricestr[],arry_procode[]
- Select u_SaleTaskMx.orderqty,u_mtrldef.mtrlmode,u_mtrldef.mtrlsectype,u_mtrldef.zxmtrlmode,u_cust.cuscode,u_cust.name
- Into :arg_orderqty,:arg_ls_mtrlmode,:arg_ls_mtrlsectype,:arg_ls_zxmtrlmode,:arg_ls_cuscode,:arg_ls_cusname
- From u_SaleTaskMx Inner join u_mtrldef on u_SaleTaskMx.MtrlID = u_mtrldef.MtrlID
- Inner join
- u_SaleTask on u_SaleTaskMx.scid = u_SaleTask.scid And
- u_SaleTaskMx.TaskID = u_SaleTask.TaskID Inner JOIN
- u_cust ON u_SaleTask.CusID = u_cust.cusid
- Where u_SaleTaskMx.taskid = :arg_taskid
- And u_SaleTaskMx.scid = :arg_scid
- And u_SaleTaskMx.printid = :arg_printid;
-
- //游标读费用项目
- Declare gongjia Cursor For
- Select
- u_orderrqwp.pricestr,
- u_orderrqwp.procode,
- u_orderrqwp.workprice
- From u_orderrqwp
- Where u_orderrqwp.taskid = :arg_taskid
- And u_orderrqwp.scid = :arg_scid
- And u_orderrqwp.printid = :arg_printid;
-
- Open gongjia;
- ii++
- Fetch gongjia Into :arry_pricestr[ii],:arry_procode[ii],:arry_price[ii];
- Do While sqlca.SQLCode = 0
- ii++
- Fetch gongjia Into :arry_pricestr[ii],:arry_procode[ii],:arry_price[ii];
- Loop
- Close gongjia;
- //按公式计算工价
- For ii = 1 To UpperBound(arry_pricestr)
- If arry_pricestr[ii] <> '' Then
- de_temp = 0
- uof_workprice_parm(arg_orderqty,status,woodcode,pcode,arg_ls_mtrlsectype,arg_ls_zxmtrlmode,arg_ls_mtrlmode,arg_ls_cuscode,arg_ls_cusname,arry_pricestr[ii],de_temp,arry_price[ii])
- If de_temp <> 0 Then
- Update u_orderrqwp Set workprice = :de_temp
- Where u_orderrqwp.taskid = :arg_taskid
- And u_orderrqwp.scid = :arg_scid
- And u_orderrqwp.printid = :arg_printid
- And u_orderrqwp.procode = :arry_procode[ii];
- End If
- End If
- Next
- ext:
- If rslt = 0 Then
- Rollback;
- p_reset()
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Return rslt
- end function
- public function int p_reset ();scid = 0
- taskid = 0
- taskcode = ''
- MtrlID = 0
- SaleQty = 0
- mxdscrp = ''
- status = ''
- pcode = ''
- woodcode = ''
- outtype = 0
- unit = ''
- scllflag = 0
- flag = 0
- RETURN 1
- end function
- public function integer uof_finish_procode_qty (long arg_scid, long arg_taskid, long arg_printid, string arg_procode, integer arg_type, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Int li_finishflag
- DateTime null_dt
- SetNull(null_dt)
- IF sys_option_add_orderrqwp_fqty = 1 THEN
- arg_msg = '系统选项[071]限制,工序确认完成数只能由计件单确认增减'
- rslt = 0
- GOTO ext
- END IF
- SELECT finishflag INTO :li_finishflag
- FROM U_OrderRqwp
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid
- And Procode = :arg_procode;
- 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_OrderRqwp
- SET finishflag = 1,
- finishdate = getdate(),
- finishqty = proqty
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid
- AND Procode = :arg_procode
- 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_OrderRqwp
- SET finishflag = 0,
- finishdate = :null_dt,
- finishqty = 0
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid
- AND Procode = :arg_procode
- 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 uof_mod_rqmtrl (s_order_ml_rqmtrl arg_rqmtrl, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
- Long i
- FOR i = 1 To UpperBound(arg_rqmtrl.taskID)
- UPDATE u_OrderRqMtrl
- SET sptid = :arg_rqmtrl.sptid[i]
- Where scid = :arg_rqmtrl.scid[i] and
- taskID = :arg_rqmtrl.taskID[i] and
- MtrlID = :arg_rqmtrl.MtrlID[i] and
- status = :arg_rqmtrl.status[i] and
- woodcode = :arg_rqmtrl.woodcode[i] and
- pcode = :arg_rqmtrl.pcode[i] and
- plantype = :arg_rqmtrl.plantype[i] and
- printid = :arg_rqmtrl.printid[i]
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新默认供应商失败'
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_auto_build_buy_forrq (long arg_mxpkid[], ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- Long sptid[]
- Long it_mx = 0
- Long ll_bound, ll_i, ll_j, ll_sptid, ll_cnt
- Boolean has_spt
- arg_msg = ''
- string ls_msg = ''
- ll_bound = UpperBound(arg_mxpkid)
- uo_buytask obj_task
- obj_task = Create uo_buytask
- obj_task.commit_transaction = commit_transaction
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- IF ll_bound <= 0 THEN
- rslt = 1
- arg_msg = '没有需求明细'
- GOTO ext
- END IF
- Long ll_scid, ll_lastscid
- FOR ll_i = 1 To ll_bound
-
- SELECT sptid
- INTO :ll_sptid
- FROM u_orderRqMtrl
- Where mxpkid = :arg_mxpkid[ll_i] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料需求表失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- SELECT COUNT(0)
- INTO :ll_cnt
- FROM u_spt
- Where sptid = :ll_sptid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询供应商表失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ll_cnt <= 0 THEN CONTINUE
-
- has_spt = False
- FOR ll_j = 1 To it_mx
- IF sptid[ll_j] = ll_sptid THEN
- has_spt = True
- EXIT
- END IF
- NEXT
-
- IF Not has_spt THEN
- it_mx++
- sptid[it_mx] = ll_sptid
- END IF
-
- NEXT
- s_buytaskmx_arr s_buy
- Long it_buy
- FOR ll_i = 1 To it_mx
- it_buy = 0
- FOR ll_j = 1 To ll_bound
-
- SELECT COUNT(0)
- INTO :ll_cnt
- FROM u_OrderRqMtrl INNER JOIN
- u_mtrldef ON u_OrderRqMtrl.MtrlID = u_mtrldef.mtrlid LEFT OUTER JOIN
- uv_orderrqmtrl_buyqty ON u_OrderRqMtrl.mxpkid = uv_orderrqmtrl_buyqty.mxpkid
- WHERE (u_OrderRqMtrl.plantype = 2) AND
- (u_OrderRqMtrl.truerqqty - isnull(uv_orderrqmtrl_buyqty.buyQty, 0) > 0) AND
- (u_orderRqMtrl.mxpkid = :arg_mxpkid[ll_j]) AND
- (u_orderRqMtrl.sptid = :sptid[ll_i]) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料需求表数量失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ll_cnt <= 0 THEN CONTINUE
-
- it_buy ++
- SELECT u_mtrldef.mtrlcode,
- u_mtrldef.unit,
- u_OrderRqMtrl.truerqqty - ISNULL(uv_orderrqmtrl_buyqty.buyQty, 0) AS Expr1,
- u_OrderRqMtrl.MtrlID,
- u_OrderRqMtrl.status,
- u_OrderRqMtrl.woodcode,
- u_OrderRqMtrl.pcode,
- u_OrderRqMtrl.mxpkid,
- u_mtrldef.mrp_unit,
- u_mtrldef.rate_buy,
- u_mtrldef.rate_scll,
- u_mtrldef.rate_sale,
- u_mtrldef.unit_buy,
- u_mtrldef.unit_scll,
- u_mtrldef.unit_sale,
- u_OrderRqMtrl.scid,
- u_OrderRqMtrl.TaskID,
- u_OrderRqMtrl.printid,
- u_OrderRqMtrl.plancode
- INTO :s_buy.mtrlcode[it_buy],
- :s_buy.unit[it_buy],
- :s_buy.uqty[it_buy],
- :s_buy.MtrlID[it_buy],
- :s_buy.status[it_buy],
- :s_buy.woodcode[it_buy],
- :s_buy.pcode[it_buy],
- :s_buy.relid2[it_buy],
- :s_buy.mrp_unit[it_buy],
- :s_buy.rate_buy[it_buy],
- :s_buy.rate_scll[it_buy],
- :s_buy.rate_sale[it_buy],
- :s_buy.unit_buy[it_buy],
- :s_buy.unit_scll[it_buy],
- :s_buy.unit_sale[it_buy],
- :ll_scid,
- :s_buy.Orderid[it_buy],
- :s_buy.relprintid[it_buy],
- :s_buy.plancode[it_buy]
- FROM u_OrderRqMtrl INNER JOIN
- u_mtrldef ON u_OrderRqMtrl.MtrlID = u_mtrldef.mtrlid LEFT OUTER JOIN
- uv_orderrqmtrl_buyqty ON u_OrderRqMtrl.mxpkid = uv_orderrqmtrl_buyqty.mxpkid
- WHERE (u_OrderRqMtrl.plantype = 2) AND
- (u_OrderRqMtrl.truerqqty - ISNULL(uv_orderrqmtrl_buyqty.buyQty, 0) > 0) AND
- (u_orderRqMtrl.mxpkid = :arg_mxpkid[ll_j]) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '物料需求不存在ID:' + String(arg_mxpkid[ll_j]) + ',' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- SELECT requiredate,taskcode
- INTO :s_buy.requiredate[it_buy],:s_buy.relcode[it_buy]
- FROM u_saletask
- Where scid = :ll_scid And TaskID = :s_buy.Orderid[it_buy] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询订单需求日与相关号失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
-
- IF it_buy > 1 And ll_scid <> ll_lastscid THEN
- rslt = 0
- arg_msg = '物料需求不同分部不能保存'
- GOTO ext
- END IF
-
- ll_lastscid = ll_scid
- NEXT
-
- IF it_buy = 0 THEN CONTINUE
-
- IF obj_task.newbegin(ll_scid,arg_msg) = 0 THEN //
- rslt = 0
- GOTO ext
- END IF
-
- obj_task.requiredate = DateTime(Today(), Now())
- obj_task.Assign_emp = publ_operator
- obj_task.Kind = 0
- obj_task.sptid = sptid[ll_i]
- obj_task.relcode = ''
- Long dftbanktypeid,dftmoneyid
- SELECT dftbanktypeid,dftmoneyid
- INTO :dftbanktypeid,:dftmoneyid
- FROM u_spt
- Where sptid = :sptid[ll_i] Using commit_transaction;
-
- obj_task.banktypeid = dftbanktypeid
- obj_task.train = ''
- obj_task.billtype = 2
- obj_task.moneyid = dftmoneyid
- obj_task.mrate = f_get_mrate( dftmoneyid)
-
- FOR ll_j = 1 To it_buy
-
- CHOOSE CASE s_buy.mrp_unit[ll_j]
- CASE 0
- s_buy.rate[ll_j] = 1
- CASE 1
- IF s_buy.rate_buy[ll_j] = 0 THEN s_buy.rate_buy[ll_j] = 1
- s_buy.uqty[ll_j] = s_buy.uqty[ll_j] / s_buy.rate_buy[ll_j]
- s_buy.rate[ll_j] = s_buy.rate_buy[ll_j]
- s_buy.unit[ll_j] = s_buy.unit_buy[ll_j]
- CASE 2
- s_buy.unit[ll_j] = s_buy.unit_scll[ll_j]
- s_buy.rate[ll_j] = s_buy.rate_scll[ll_j]
- IF s_buy.rate_scll[ll_j] = 0 THEN s_buy.rate_scll[ll_j] = 1
- s_buy.uqty[ll_j] = s_buy.uqty[ll_j] / s_buy.rate_scll[ll_j]
- CASE 3
- s_buy.unit[ll_j] = s_buy.unit_sale[ll_j]
- s_buy.rate[ll_j] = s_buy.rate_sale[ll_j]
- IF s_buy.rate_sale[ll_j] = 0 THEN s_buy.rate_sale[ll_j] = 1
- s_buy.uqty[ll_j] = s_buy.uqty[ll_j] / s_buy.rate_sale[ll_j]
- END CHOOSE
-
-
- Decimal ls_1stnewcost,ls_1stzqrate,ls_1strate,ld_rate
- String ls_unit
- ls_unit = s_buy.unit[ll_j]
- IF uo_sptprice.uf_getmtrlsptprice(sptid[ll_i],s_buy.MtrlID[ll_j],ls_unit,s_buy.status[ll_j],s_buy.woodcode[ll_j],s_buy.pcode[ll_j],0,ls_1stnewcost,ls_1stzqrate,ls_1strate,arg_msg) = 1 THEN
- s_buy.uprice[ll_j] = ls_1stnewcost
- // s_buy.rate[ll_j] = ls_1stzqrate
- ELSE
- s_buy.uprice[ll_j] = 0
- END IF
-
-
- SELECT top 1 storageid
- INTO :s_buy.storageid[ll_j]
- FROM u_mtrl_storage
- Where MtrlID = :s_buy.MtrlID[ll_j] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- SELECT storageid
- INTO :s_buy.storageid[ll_j]
- FROM u_buytaskmx
- WHERE mtrlid = :s_buy.MtrlID[ll_j]
- Order By TaskID Desc Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = s_buy.mtrlcode[ll_j] + '请先设置存放仓库'
- END IF
- END IF
-
-
- IF obj_task.acceptmx(0,&
- 0,&
- '',&
- s_buy.MtrlID[ll_j],&
- s_buy.uqty[ll_j],&
- 0,&
- s_buy.uprice[ll_j],&
- 1,&
- 0,&
- '',&
- s_buy.mtrlcode[ll_j],&
- arg_msg,&
- ll_j,&
- s_buy.requiredate[ll_j],&
- s_buy.storageid[ll_j],&
- s_buy.status[ll_j],&
- s_buy.woodcode[ll_j],&
- s_buy.pcode[ll_j],&
- s_buy.unit[ll_j],&
- s_buy.rate[ll_j],&
- s_buy.Orderid[ll_j],&
- s_buy.relprintid[ll_j],&
- s_buy.relcode[ll_j],&
- '',&
- s_buy.relid2[ll_j],0,&
- s_buy.plancode[ll_j],'','','') = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- IF obj_task.savesubmit(publ_operator,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ls_msg = '' THEN
- ls_msg = obj_task.taskcode
- ELSE
- ls_msg += ',' + obj_task.taskcode
- END IF
- NEXT
- IF ls_msg = '' THEN
- ls_msg = '没有采购订单生成'
- ELSE
- ls_msg = '生成采购订单:' + ls_msg
- END IF
- arg_msg = ls_msg
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy obj_task
- Destroy uo_sptprice
- Return (rslt)
- end function
- public function integer uof_auto_build_buy_forarr (long arg_scid[], long arg_taskid[], long arg_printid[], ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- Long ll_mtrlid
- String ls_msg = ''
- s_order_ml_rqmtrl s_rqmtrl
- Long sptid[]
- Long it_mx = 0
- uo_buytask obj_task
- obj_task = Create uo_buytask
- obj_task.commit_transaction = commit_transaction
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- //DateTime requiredate
- //String ls_taskcode
- //SELECT requiredate,taskcode
- // INTO :requiredate,:ls_taskcode
- // FROM u_saletask
- // Where scid = :arg_scid And taskid = :arg_taskid;
- Long it_buy = 1
- Long ll_bound, ll_i, ll_j, ll_sptid, ll_scid
- Boolean has_spt
- IF UpperBound(arg_scid) <> UpperBound(arg_taskid) Or UpperBound(arg_taskid) <> UpperBound(arg_printid) THEN
- rslt = 0
- arg_msg = '参数不正确'
- GOTO ext
- END IF
- ll_bound = UpperBound(arg_scid)
- IF ll_bound <= 0 THEN
- rslt = 0
- arg_msg = '订单明细队列不能为空'
- GOTO ext
- END IF
- ll_scid = arg_scid[1]
- FOR ll_i = 2 To ll_bound
- IF ll_scid <> arg_scid[ll_i] THEN
- rslt = 0
- arg_msg = '不同分部的订单明细不能汇总'
- GOTO ext
- END IF
- NEXT
- FOR ll_i = 1 To ll_bound
- //用游标读取明细
- DECLARE CUR_INWAERMX CURSOR FOR
- SELECT distinct u_OrderRqMtrl.sptid
- FROM u_OrderRqMtrl LEFT OUTER JOIN uv_OrderRqMtrl_buyqty ON u_OrderRqMtrl.mxpkid = uv_OrderRqMtrl_buyqty.mxpkid
- WHERE u_orderrqmtrl.plantype = 2 AND
- u_orderrqmtrl.taskid = :arg_taskid[ll_i] AND
- u_orderrqmtrl.printid = :arg_printid[ll_i] AND
- u_orderrqmtrl.scid = :arg_scid[ll_i] AND
- u_OrderRqMtrl.truerqqty - IsNull(uv_OrderRqMtrl_buyqty.buyqty, 0) > 0 And u_OrderRqMtrl.sptid > 0 Using commit_transaction;
-
- OPEN CUR_INWAERMX;
- FETCH CUR_INWAERMX Into :ll_sptid;
- DO WHILE commit_transaction.SQLCode = 0
- // 不含
- has_spt = False
- FOR ll_j = 1 To it_mx
- IF sptid[ll_j] = ll_sptid THEN
- has_spt = True
- EXIT
- END IF
- NEXT
- IF Not has_spt THEN
- it_mx ++
- sptid[it_mx] = ll_sptid
- END IF
- FETCH CUR_INWAERMX Into :ll_sptid;
- LOOP
- CLOSE CUR_INWAERMX;
- NEXT
- Long i,j
- FOR i = 1 To it_mx
- s_buytaskmx_arr s_buy
-
- IF obj_task.newbegin(ll_scid,arg_msg) = 0 THEN //
- rslt = 0
- GOTO ext
- END IF
-
- obj_task.requiredate = DateTime(Today(), Now())
- obj_task.Assign_emp = publ_operator
- obj_task.Kind = 0
- obj_task.sptid = sptid[i]
- obj_task.relcode = ''
-
- Long dftbanktypeid,dftmoneyid
- String ls_sptcode, ls_sptname
- SELECT dftbanktypeid,dftmoneyid, sptcode,name
- INTO :dftbanktypeid,:dftmoneyid, :ls_sptcode, :ls_sptname
- FROM u_spt
- Where sptid = :sptid[i] Using commit_transaction;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询供应商信息失败,ID['+String(sptid[i])+'],'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF dftbanktypeid = 0 THEN
- rslt = 0
- arg_msg = '供应商编号['+ls_sptcode+']未定义默认结算方式'
- GOTO ext
- END IF
-
- IF dftmoneyid = 0 THEN
- rslt = 0
- arg_msg = '供应商编号['+ls_sptcode+']未定义默认币种'
- GOTO ext
- END IF
-
- obj_task.banktypeid = dftbanktypeid
-
- obj_task.train = ''
- obj_task.billtype = 2
- obj_task.moneyid = dftmoneyid
- obj_task.mrate = f_get_mrate( dftmoneyid)
- it_buy = 1
-
- FOR ll_i = 1 To ll_bound
- DECLARE CUR_INWAERMX2 CURSOR FOR
-
- SELECT u_mtrldef.mtrlcode ,
- u_mtrldef.unit ,
- u_OrderRqMtrl.truerqqty - ISNULL(uv_OrderRqMtrl_buyqty.buyqty, 0) ,
- u_OrderRqMtrl.MtrlID ,
- u_OrderRqMtrl.status ,
- u_OrderRqMtrl.woodcode ,
- u_OrderRqMtrl.pcode,
- u_orderrqmtrl.mxpkid,
- u_mtrldef.mrp_unit,
- u_mtrldef.rate_buy,
- u_mtrldef.rate_scll,
- u_mtrldef.rate_sale,
- u_mtrldef.unit_buy,
- u_mtrldef.unit_scll,
- u_mtrldef.unit_sale,
- u_OrderRqMtrl.plancode
- FROM u_orderrqmtrl LEFT OUTER JOIN uv_OrderRqMtrl_buyqty ON u_orderrqmtrl.mxpkid = uv_OrderRqMtrl_buyqty.mxpkid,u_mtrldef
- WHERE u_orderrqmtrl.plantype = 2 AND
- u_orderrqmtrl.taskid = :arg_taskid[ll_i] AND
- u_orderrqmtrl.printid = :arg_printid[ll_i] AND
- u_orderrqmtrl.scid = :arg_scid[ll_i] AND
- u_OrderRqMtrl.truerqqty - ISNULL(uv_OrderRqMtrl_buyqty.buyqty, 0) > 0 AND
- u_OrderRqMtrl.sptid = :sptid[i] AND
- u_mtrldef.MtrlID = u_OrderRqMtrl.MtrlID Using commit_transaction;
-
- OPEN CUR_INWAERMX2;
- FETCH CUR_INWAERMX2 INTO :s_buy.mtrlcode[it_buy],
- :s_buy.unit[it_buy],
- :s_buy.uqty[it_buy],
- :s_buy.MtrlID[it_buy],
- :s_buy.status[it_buy],
- :s_buy.woodcode[it_buy],
- :s_buy.pcode[it_buy],
- :s_buy.relid2[it_buy],
- :s_buy.mrp_unit[it_buy],
- :s_buy.rate_buy[it_buy],
- :s_buy.rate_scll[it_buy],
- :s_buy.rate_sale[it_buy],
- :s_buy.unit_buy[it_buy],
- :s_buy.unit_scll[it_buy],
- :s_buy.unit_sale[it_buy],
- :s_buy.plancode[it_buy];
- DO WHILE commit_transaction.SQLCode = 0
- s_buy.orderid[it_buy] = arg_taskid[ll_i]
- s_buy.relprintid[it_buy] = arg_printid[ll_i]
- s_buy.printid[it_buy] = it_buy
- SELECT requiredate,taskcode
- INTO :s_buy.requiredate[it_buy],:s_buy.relcode[it_buy]
- FROM u_saletask
- Where scid = :arg_scid[ll_i] And taskid = :arg_taskid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询订单需求日与相关号失败'
- GOTO ext
- END IF
- it_buy++
- FETCH CUR_INWAERMX2 INTO :s_buy.mtrlcode[it_buy],
- :s_buy.unit[it_buy],
- :s_buy.uqty[it_buy],
- :s_buy.MtrlID[it_buy],
- :s_buy.status[it_buy],
- :s_buy.woodcode[it_buy],
- :s_buy.pcode[it_buy],
- :s_buy.relid2[it_buy],
- :s_buy.mrp_unit[it_buy],
- :s_buy.rate_buy[it_buy],
- :s_buy.rate_scll[it_buy],
- :s_buy.rate_sale[it_buy],
- :s_buy.unit_buy[it_buy],
- :s_buy.unit_scll[it_buy],
- :s_buy.unit_sale[it_buy],
- :s_buy.plancode[it_buy];
- LOOP
- CLOSE CUR_INWAERMX2;
- NEXT
- it_buy --
-
-
- FOR j = 1 To it_buy
-
- CHOOSE CASE s_buy.mrp_unit[j]
- CASE 0
- s_buy.rate[j] = 1
- CASE 1
- IF s_buy.rate_buy[j] = 0 THEN s_buy.rate_buy[j] = 1
- s_buy.uqty[j] = s_buy.uqty[j] / s_buy.rate_buy[j]
- s_buy.rate[j] = s_buy.rate_buy[j]
- s_buy.unit[j] = s_buy.unit_buy[j]
- CASE 2
- s_buy.unit[j] = s_buy.unit_scll[j]
- s_buy.rate[j] = s_buy.rate_scll[j]
- IF s_buy.rate_scll[j] = 0 THEN s_buy.rate_scll[j] = 1
- s_buy.uqty[j] = s_buy.uqty[j] / s_buy.rate_scll[j]
- CASE 3
- s_buy.unit[j] = s_buy.unit_sale[j]
- s_buy.rate[j] = s_buy.rate_sale[j]
- IF s_buy.rate_sale[j] = 0 THEN s_buy.rate_sale[j] = 1
- s_buy.uqty[j] = s_buy.uqty[j] / s_buy.rate_sale[j]
- END CHOOSE
-
-
- Decimal ls_1stnewcost,ls_1stzqrate,ls_1strate,ld_rate
- String ls_unit
- ls_unit = s_buy.unit[j]
- IF uo_sptprice.uf_getmtrlsptprice(sptid[i],s_buy.MtrlID[j],ls_unit,s_buy.status[j],s_buy.woodcode[j],s_buy.pcode[j],0,ls_1stnewcost,ls_1stzqrate,ls_1strate,arg_msg) = 1 THEN
- s_buy.uprice[j] = ls_1stnewcost
- // s_buy.rate[j] = ls_1stzqrate
- ELSE
- s_buy.uprice[j] = 0
- END IF
-
-
- SELECT top 1 storageid
- INTO :s_buy.storageid[j]
- FROM u_mtrl_storage
- Where MtrlID = :s_buy.MtrlID[j] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- SELECT storageid
- INTO :s_buy.storageid[j]
- FROM u_buytaskmx
- WHERE mtrlid = :s_buy.MtrlID[j]
- Order By taskid Desc Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = s_buy.mtrlcode[j] + '请先设置存放仓库'
- END IF
- END IF
-
-
- IF obj_task.acceptmx(0,&
- 0,&
- '',&
- s_buy.MtrlID[j],&
- s_buy.uqty[j],&
- 0,&
- s_buy.uprice[j],&
- 1,&
- 0,&
- '',&
- s_buy.mtrlcode[j],&
- arg_msg,&
- j,&
- s_buy.requiredate[j],&
- s_buy.storageid[j],&
- s_buy.status[j],&
- s_buy.woodcode[j],&
- s_buy.pcode[j],&
- s_buy.unit[j],&
- s_buy.rate[j],&
- s_buy.orderid[j],&
- s_buy.relprintid[j],&
- s_buy.relcode[j],&
- '',&
- s_buy.relid2[j],0,s_buy.plancode[j],'','','') = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- IF obj_task.savesubmit(publ_operator,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ls_msg = '' THEN
- ls_msg = obj_task.taskcode
- ELSE
- ls_msg += ',' + obj_task.taskcode
- END IF
- NEXT
- IF ls_msg = '' THEN
- ls_msg = '没有采购订单生成'
- ELSE
- ls_msg = '生成采购订单:' + ls_msg
- END IF
- arg_msg = ls_msg
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Return (rslt)
- end function
- public function integer uof_auto_build_buy_notuse (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- Long ll_mtrlid
- string ls_msg = ''
- s_order_ml_rqmtrl s_rqmtrl
- Long sptid[]
- Long it_mx = 1
- uo_buytask obj_task
- obj_task = Create uo_buytask
- obj_task.commit_transaction = commit_transaction
- uo_spt_price uo_sptprice
- uo_sptprice = create uo_spt_price
- DateTime requiredate
- String ls_taskcode
- SELECT requiredate,taskcode
- INTO :requiredate,:ls_taskcode
- FROM u_saletask
- Where scid = :arg_scid And taskid = :arg_taskid;
- Long it_buy = 1
- //用游标读取明细
- DECLARE CUR_INWAERMX CURSOR FOR
- SELECT distinct u_OrderRqMtrl.sptid
- FROM u_OrderRqMtrl LEFT OUTER JOIN uv_OrderRqMtrl_buyqty ON u_OrderRqMtrl.mxpkid = uv_OrderRqMtrl_buyqty.mxpkid
- WHERE u_orderrqmtrl.plantype = 2 AND
- u_orderrqmtrl.taskid = :arg_taskid AND
- u_orderrqmtrl.printid = :arg_printid AND
- u_orderrqmtrl.scid = :arg_scid AND
- u_OrderRqMtrl.truerqqty - ISNULL(uv_OrderRqMtrl_buyqty.buyqty, 0) > 0 and u_OrderRqMtrl.sptid > 0 Using commit_transaction;
-
- OPEN CUR_INWAERMX;
- FETCH CUR_INWAERMX Into :sptid[it_mx];
- DO WHILE commit_transaction.SQLCode = 0
- it_mx++
- FETCH CUR_INWAERMX Into :sptid[it_mx];
- LOOP
- CLOSE CUR_INWAERMX;
- Long i,j
- FOR i = 1 To it_mx - 1
- s_buytaskmx_arr s_buy
-
- IF obj_task.newbegin(arg_scid,arg_msg) = 0 THEN //
- rslt = 0
- GOTO ext
- END IF
-
- obj_task.requiredate = requiredate
- obj_task.Assign_emp = publ_operator
- obj_task.Kind = 0
- obj_task.sptid = sptid[i]
- obj_task.relcode = ''
- Long dftbanktypeid,dftmoneyid
- SELECT dftbanktypeid,dftmoneyid
- INTO :dftbanktypeid,:dftmoneyid
- FROM u_spt
- Where sptid = :sptid[i] Using commit_transaction;
-
- obj_task.banktypeid = dftbanktypeid
- obj_task.train = ''
- obj_task.billtype = 2
- obj_task.moneyid = dftmoneyid
- obj_task.mrate = f_get_mrate( dftmoneyid)
- it_buy = 1
- DECLARE CUR_INWAERMX2 CURSOR FOR
-
- SELECT u_mtrldef.mtrlcode ,
- u_mtrldef.unit ,
- u_OrderRqMtrl.truerqqty - ISNULL(uv_OrderRqMtrl_buyqty.buyqty, 0) ,
- u_OrderRqMtrl.MtrlID ,
- u_OrderRqMtrl.status ,
- u_OrderRqMtrl.woodcode ,
- u_OrderRqMtrl.pcode,
- u_orderrqmtrl.mxpkid,
- u_mtrldef.mrp_unit,
- u_mtrldef.rate_buy,
- u_mtrldef.rate_scll,
- u_mtrldef.rate_sale,
- u_mtrldef.unit_buy,
- u_mtrldef.unit_scll,
- u_mtrldef.unit_sale
- FROM u_orderrqmtrl LEFT OUTER JOIN uv_OrderRqMtrl_buyqty ON u_orderrqmtrl.mxpkid = uv_OrderRqMtrl_buyqty.mxpkid,u_mtrldef
- WHERE u_orderrqmtrl.plantype = 2 AND
- u_orderrqmtrl.taskid = :arg_taskid AND
- u_orderrqmtrl.printid = :arg_printid AND
- u_orderrqmtrl.scid = :arg_scid AND
- u_OrderRqMtrl.truerqqty - ISNULL(uv_OrderRqMtrl_buyqty.buyqty, 0) > 0 AND
- u_OrderRqMtrl.sptid = :sptid[i] AND
- u_mtrldef.MtrlID = u_OrderRqMtrl.MtrlID Using commit_transaction;
-
- OPEN CUR_INWAERMX2;
- FETCH CUR_INWAERMX2 INTO :s_buy.mtrlcode[it_buy],
- :s_buy.unit[it_buy],
- :s_buy.uqty[it_buy],
- :s_buy.MtrlID[it_buy],
- :s_buy.status[it_buy],
- :s_buy.woodcode[it_buy],
- :s_buy.pcode[it_buy],
- :s_buy.relid2[it_buy],
- :s_buy.mrp_unit[it_buy],
- :s_buy.rate_buy[it_buy],
- :s_buy.rate_scll[it_buy],
- :s_buy.rate_sale[it_buy],
- :s_buy.unit_buy[it_buy],
- :s_buy.unit_scll[it_buy],
- :s_buy.unit_sale[it_buy];
- DO WHILE commit_transaction.SQLCode = 0
- it_buy++
- FETCH CUR_INWAERMX2 INTO :s_buy.mtrlcode[it_buy],
- :s_buy.unit[it_buy],
- :s_buy.uqty[it_buy],
- :s_buy.MtrlID[it_buy],
- :s_buy.status[it_buy],
- :s_buy.woodcode[it_buy],
- :s_buy.pcode[it_buy],
- :s_buy.relid2[it_buy],
- :s_buy.mrp_unit[it_buy],
- :s_buy.rate_buy[it_buy],
- :s_buy.rate_scll[it_buy],
- :s_buy.rate_sale[it_buy],
- :s_buy.unit_buy[it_buy],
- :s_buy.unit_scll[it_buy],
- :s_buy.unit_sale[it_buy];
- LOOP
- CLOSE CUR_INWAERMX2;
-
- FOR j = 1 To it_buy - 1
-
- CHOOSE CASE s_buy.mrp_unit[j]
- case 0
- s_buy.rate[j] = 1
- CASE 1
- if s_buy.rate_buy[j] = 0 then s_buy.rate_buy[j] = 1
- s_buy.uqty[j] = s_buy.uqty[j] / s_buy.rate_buy[j]
- s_buy.rate[j] = s_buy.rate_buy[j]
- s_buy.unit[j] = s_buy.unit_buy[j]
- CASE 2
- s_buy.unit[j] = s_buy.unit_scll[j]
- s_buy.rate[j] = s_buy.rate_scll[j]
- if s_buy.rate_scll[j] = 0 then s_buy.rate_scll[j] = 1
- s_buy.uqty[j] = s_buy.uqty[j] / s_buy.rate_scll[j]
- CASE 3
- s_buy.unit[j] = s_buy.unit_sale[j]
- s_buy.rate[j] = s_buy.rate_sale[j]
- if s_buy.rate_sale[j] = 0 then s_buy.rate_sale[j] = 1
- s_buy.uqty[j] = s_buy.uqty[j] / s_buy.rate_sale[j]
- END CHOOSE
-
-
- decimal ls_1stnewcost,ls_1stzqrate,ls_1strate,ld_rate
- string ls_unit
- ls_unit = s_buy.unit[j]
- IF uo_sptprice.uf_getmtrlsptprice(sptid[i],s_buy.MtrlID[j],ls_unit,s_buy.status[j],s_buy.woodcode[j],s_buy.pcode[j],0,ls_1stnewcost,ls_1stzqrate,ls_1strate,arg_msg) = 1 THEN
- s_buy.uprice[j] = ls_1stnewcost
- // s_buy.rate[j] = ls_1stzqrate
- else
- s_buy.uprice[j] = 0
- end if
-
-
- select top 1 storageid
- into :s_buy.storageid[j]
- from u_mtrl_storage
- where mtrlid = :s_buy.MtrlID[j] Using commit_transaction;
- if commit_transaction.sqlcode <> 0 then
- select storageid
- into :s_buy.storageid[j]
- from u_buytaskmx
- where mtrlid = :s_buy.MtrlID[j]
- order by taskid desc Using commit_transaction;
- if commit_transaction.sqlcode <> 0 then
- arg_msg = s_buy.mtrlcode[j] + '请先设置存放仓库'
- end if
- end if
-
-
- IF obj_task.acceptmx(0,&
- 0,&
- '',&
- s_buy.MtrlID[j],&
- s_buy.uqty[j],&
- 0,&
- s_buy.uprice[j],&
- 1,&
- 0,&
- '',&
- s_buy.mtrlcode[j],&
- arg_msg,&
- j,&
- requiredate,&
- s_buy.storageid[j],&
- s_buy.status[j],&
- s_buy.woodcode[j],&
- s_buy.pcode[j],&
- s_buy.unit[j],&
- s_buy.rate[j],&
- arg_taskid,&
- arg_printid,&
- ls_taskcode,&
- '',&
- s_buy.relid2[j],0,'','','','') = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- IF obj_task.savesubmit(publ_operator,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ls_msg = '' THEN
- ls_msg = obj_task.taskcode
- ELSE
- ls_msg += ',' + obj_task.taskcode
- END IF
-
- NEXT
- IF ls_msg = '' THEN
- ls_msg = '没有采购订单生成'
- ELSE
- ls_msg = '生成采购订单:' + ls_msg
- END IF
- arg_msg = ls_msg
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Return (rslt)
- end function
- public function integer salemxscllprimt (long arg_scid, long arg_taskid, long arg_printid, integer arg_chk_zero, string arg_emp, ref string arg_msg, boolean arg_ifcommit);//salepermit
- //arg_chk_zero //是否检查0需求
- Int rslt = 1,cnt = 0
- Int ll_flag,ll_scllflag
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- SELECT flag,scllflag
- INTO :ll_flag,:ll_scllflag
- FROM u_saletaskmx
- WHERE scid = :Arg_scid AND
- taskid = :arg_taskid AND
- printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询操作失败,销售订单明细内容!"
- GOTO ext
- END IF
- IF ll_flag = 0 THEN
- rslt = 0
- ARG_MSG = "销售订单明细还没有审核,不能领料审核,操作取消"
- GOTO ext
- END IF
- IF ll_scllflag <> 0 THEN
- rslt = 0
- ARG_MSG = "销售订单明细已领料审核,操作取消"
- GOTO ext
- END IF
- IF arg_chk_zero = 1 THEN
- SELECT count(*)
- INTO :cnt
- FROM u_orderrqmtrl
- WHERE ( u_OrderRqMtrl.taskID = :arg_taskid )
- AND ( u_OrderRqMtrl.scid = :arg_scid )
- AND u_OrderRqMtrl.printid = :arg_printid
- AND truerqqty = 0
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询订单明细物料需求失败!"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "订单明细物料需求存在需求数为0!"
- GOTO ext
- END IF
- END IF
- ////检查工价表是否已审核
- //IF sys_option_chk_workprice = 1 THEN
- //
- //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
- UPDATE u_SaleTaskmx
- SET scllrep = :arg_emp ,sclldate = getdate(),
- scllflag = 1
- WHERE TaskID = :arg_taskid AND
- scid = :arg_scid AND
- printid = :arg_printid AND
- flag = 1 AND scllflag = 0
- 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
- Return (rslt)
- end function
- public function integer uof_add_procode_qty (long arg_scid, long arg_taskid, long arg_printid, string arg_procode, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);//==============================================================================
- // 函数: uo_order_ml::uof_add_procode_qty()
- //------------------------------------------------------------------------------
- // 描述: 更新工序完成数
- //------------------------------------------------------------------------------
- // 参数:
- // value long arg_scid
- // value long arg_taskid
- // value long arg_printid
- // value string arg_procode
- // value decimal arg_qty
- // reference string arg_msg
- // value boolean arg_ifcommit
- //------------------------------------------------------------------------------
- // 返回值: integer
- //------------------------------------------------------------------------------
- // 作者: HD Lee 日期: 2011.12.01
- //------------------------------------------------------------------------------
- // 修改历史:
- //
- //==============================================================================
- Int rslt = 1
- String ls_taskcode
- String ls_mtrlcode
- DateTime null_dt
- SetNull(null_dt)
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误的销售订单唯一码'
- GOTO ext
- END IF
- IF arg_qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- //if sys_option_add_orderrqwp_fqty = 0 then
- // arg_msg = '系统选项[071]限制,工序确认完成数只能手动完成'
- // rslt = 0
- // GOTO ext
- //end if
- SELECT taskcode
- INTO :ls_taskcode
- FROM u_SaleTask
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询订单编号失败'
- rslt = 0
- GOTO ext
- END IF
- SELECT mtrlcode
- INTO :ls_mtrlcode
- FROM u_mtrldef,u_SaleTaskMx
- WHERE u_SaleTaskMx.mtrlid = u_mtrldef.mtrlid
- AND u_SaleTaskMx.scid = :arg_scid
- AND u_SaleTaskMx.taskid = :arg_taskid
- AND u_SaleTaskMx.printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料编号失败'
- rslt = 0
- GOTO ext
- END IF
- Decimal lde_proqty, lde_finishqty ,ld_nofinqty
- SELECT U_OrderRqwp.proqty , U_OrderRqwp.finishqty
- INTO :lde_proqty, :lde_finishqty
- FROM U_OrderRqwp
- WHERE scid = :arg_scid AND
- taskid = :arg_taskid AND
- printid = :arg_printid AND
- Procode = :arg_procode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询销售订单:'+ls_taskcode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',未完成数量失败~r~n'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF arg_qty > 0 THEN //增加
- IF arg_qty > lde_proqty - lde_finishqty THEN
- rslt = 0
- arg_msg = '销售订单:'+ls_taskcode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',未完成数量为:'+String(lde_proqty - lde_finishqty,'#,##0.##########')+',不能增加完成:'+String(arg_qty,'#,##0.##########')
- GOTO ext
- END IF
- ELSE
- IF Abs(arg_qty) > lde_finishqty THEN
- rslt = 0
- arg_msg = '销售订单:'+ls_taskcode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',完成数量为:'+String(lde_finishqty,'#,##0.##########')+',不能取消完成:'+String(Abs(arg_qty),'#,##0.##########')
- GOTO ext
- END IF
- END IF
- UPDATE U_OrderRqwp
- SET finishqty = finishqty + :arg_qty
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid
- AND Procode = :arg_procode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新销售订单:'+ls_taskcode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',完成数量失败~r~n'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_finish_procode_qty_dsr (long arg_scid, long arg_taskid, long arg_printid, string arg_procode, long arg_type, decimal arg_fpqty, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Int li_finishflag
- DateTime null_dt
- SetNull(null_dt)
- IF sys_option_add_orderrqwp_fqty = 1 THEN
- arg_msg = '系统选项[071]限制,工序确认完成数只能由计件单确认增减'
- rslt = 0
- GOTO ext
- END IF
- SELECT finishflag INTO :li_finishflag
- FROM U_OrderRqwp
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid
- And Procode = :arg_procode;
- 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
-
- string ls_dscrp
- ls_dscrp='//' + string(today(),'yyyymmdd') + ' ' + string(now(),'hh:mm') + '本次完成' + string(arg_fpqty,'#,##0.####')
- //proqty
- UPDATE U_OrderRqwp
- SET
- finishdate = getdate(),
- finishqty = finishqty + :arg_fpqty,
- dscrp= dscrp + :ls_dscrp
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid
- AND Procode = :arg_procode
- And finishflag = 0;
-
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '确认工序完成失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- Decimal dec_proqty ,dec_finishqty
- dec_proqty = 0
- dec_finishqty = 0
- SELECT proqty ,finishqty INTO :dec_proqty ,:dec_finishqty
- FROM U_OrderRqwp
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid
- AND Procode = :arg_procode
- And finishflag = 0;
-
- IF IsNull(dec_proqty) THEN dec_proqty = 0
- IF IsNull(dec_finishqty) THEN dec_finishqty = 0
-
-
- IF dec_proqty = dec_finishqty THEN
- UPDATE U_OrderRqwp
- SET finishflag = 1
-
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid
- AND Procode = :arg_procode
- And finishflag = 0;
-
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '确认工序完成失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
-
-
-
-
- ELSE
-
- // IF li_finishflag = 0 THEN
- // arg_msg = '工序还未确认,不能取消确认'
- // rslt = 0
- // GOTO ext
- // END IF
- // And finishflag = 1
- UPDATE U_OrderRqwp
- SET finishflag = 0,
- finishdate = :null_dt,
- finishqty = 0,
- dscrp=''
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid
- AND Procode = :arg_procode
- ;
- 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 subroutine uof_workprice_parm (decimal arg_orderqty, string arg_status, string arg_woodcode, string arg_pcode, string arg_ls_mtrlsectype, string arg_ls_zxmtrlmode, string arg_ls_mtrlmode, string arg_ls_cuscode, string arg_ls_cusname, string arg_parmstr, ref decimal arg_value_dec, decimal arg_price);//orderqty 排产数量
- //status 配置
- //woodcode 配置1
- //pcode 配置2
- //ls_mtrlsectype 自定义1
- //ls_zxmtrlmode 自定义2
- //物料规格arg_ls_mtrlmode
- //arg_parmstr 公式
- //arg_value_dec 返回的工价
- datastore ds_pricestr
- ds_pricestr = Create datastore
- ds_pricestr.DataObject = 'ds_pricestr_cmpl'
- ds_pricestr.SetTransObject(commit_transaction)
- ds_pricestr.Retrieve()
- ds_pricestr.InsertRow(0)
- String s_rtn
- Select Top 1 Replace( :arg_parmstr,'不包含',' not like ') Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'不等于','<>') Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'包含',' like ') Into :arg_parmstr From u_user;
- arg_orderqty = Dec(String(arg_orderqty,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'指令单数量',:arg_orderqty) Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'大于等于',' >= ') Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'小于等于',' <= ') Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'等于',' = ') Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'大于',' > ') Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'小于',' < ') Into :arg_parmstr From u_user;
- If Pos(arg_parmstr,'配置1') > 0 Then
- Select Top 1 Replace( :arg_parmstr,'配置1',"'"+:arg_woodcode+"'") Into :arg_parmstr From u_user;
- End If
- If Pos(arg_parmstr,'配置2') > 0 Then
- Select Top 1 Replace( :arg_parmstr,'配置2',"'"+:arg_pcode+"'") Into :arg_parmstr From u_user;
- End If
- If Pos(arg_parmstr,'配置') > 0 Then
- Select Top 1 Replace( :arg_parmstr,'配置',"'"+:arg_status+"'") Into :arg_parmstr From u_user;
- End If
- Select Top 1 Replace( :arg_parmstr,'自定义1',"'"+:arg_ls_mtrlsectype+"'") Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'自定义2',"'"+:arg_ls_zxmtrlmode+"'") Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'物料规格',"'"+:arg_ls_mtrlmode+"'") Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'客户编号',"'"+:arg_ls_cuscode+"'") Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'客户名称',"'"+:arg_ls_cusname+"'") Into :arg_parmstr From u_user;
- //SELECT Top 1 Replace( :arg_parmstr,'工价表工价',"'"+:arg_price+"'") Into :arg_parmstr From u_user; ll_code = sqlca.SQLCode
- Long ll_pos
- String as_old
- as_old = '工价表工价'
- ll_pos = Pos(arg_parmstr,as_old)
- If ll_pos > 0 Then
-
- Do While ll_pos > 0
- arg_parmstr = Replace(arg_parmstr, ll_pos, Len(as_old), String(arg_price))
- ll_pos = Pos(arg_parmstr, as_old, ll_pos+Len(String(arg_price)))
- Loop
-
- End If
- ds_pricestr.Modify('cmpl.expression= "'+arg_parmstr+'"')
- ds_pricestr.AcceptText()
- //ds_pricestr.Retrieve()
- s_rtn = String(ds_pricestr.Object.cmpl[ds_pricestr.GetRow()])
- arg_value_dec = Round(Dec(s_rtn),2)
- Destroy ds_pricestr
- end subroutine
- on uo_order_ml.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_order_ml.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|