123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051 |
- $PBExportHeader$uo_inware_wfjg.sru
- forward
- global type uo_inware_wfjg from nonvisualobject
- end type
- end forward
- global type uo_inware_wfjg from nonvisualobject
- end type
- global uo_inware_wfjg uo_inware_wfjg
- type variables
- PUBLIC PROTECTEDWRITE Long scid = 0 //分部id
- PUBLIC PROTECTEDWRITE Long inwareid //进仓单表自动增量id
- PUBLIC PROTECTEDWRITE String inwarecode //单据的唯一编号
- PUBLIC PROTECTEDWRITE Int billtype = 0 //业务类型
- PUBLIC PROTECTEDWRITE DateTime opdate //建立时间,自动
- PUBLIC PROTECTEDWRITE String opemp //建立操作员
- PUBLIC PROTECTEDWRITE DateTime moddate //修改时间,自动
- PUBLIC PROTECTEDWRITE String modemp //修改操作员
- PUBLIC PROTECTEDWRITE Int flag = 0 //仓库审核标志
- PUBLIC PROTECTEDWRITE Int balcflag = 0 //仓库结存标志
- PUBLIC PROTECTEDWRITE DateTime auditingdate //审核时间
- PUBLIC PROTECTEDWRITE String auditingrep //审核操作员
- PUBLIC PROTECTEDWRITE Decimal sum_amt = 0 //单据总金额
- PUBLIC PROTECTEDWRITE Decimal jgsum_amt = 0 //单据加工总金额
- PUBLIC PROTECTEDWRITE Int secflag = 0 //财务审核标志
- PUBLIC PROTECTEDWRITE DateTime secauditingdate //二审核时间
- PUBLIC PROTECTEDWRITE String secauditingrep //二审核操作员
- Long relid = 0 //关联id
- Long storageid = 0 //进仓仓库
- DateTime indate //进仓发生时间
- String inrep = '' //经手人
- String part = '' //相关号码
- String dscrp = '' //备注
- Long sptid = 0 //供应商id
- String sptname = '' //供应商名称(不记帐模式使用)
- Int dxflag = 0 //代销标记
- Int thflag = 0 //退货标记
- Decimal otheramt = 0 //单据费用
- Long relint_1 = 0
- Long relint_2 = 0
- Long relint_3 = 0
- String relstr_1 = ''
- String relstr_2 = ''
- String relstr_3 = ''
- long moneyid = 0
- Boolean if_getid_ture = TRUE
- Transaction commit_transaction //数据commit事务
- s_wfjgmx_in_aft inwaremx[] //明细结构数组
- s_wfjgmx_in_bef inwaremx_bef[] //明细结构数组
- Long it_mxbt = 0 //明细结构数组末指针
- Long it_mxbt_bef = 0 //明细结构数组末指针
- Boolean it_newbegin = FALSE //新建标志
- Boolean it_updatebegin = FALSE //修改标志
- end variables
- forward prototypes
- public function integer save (boolean arg_ifcommit, ref string arg_msg)
- public function integer getinfo (long arg_scid, long arg_inwareid, ref string arg_msg)
- public function integer auditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer del (long arg_scid, long arg_inwareid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_scid, long arg_inwareid, string arg_newdescppart, ref string arg_msg)
- public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer p_clearmx ()
- public function integer p_getinfo (long arg_scid, long arg_inwareid, ref string arg_msg)
- public function integer p_reset ()
- public function integer p_create_inware (boolean arg_ifcommit, ref string arg_msg)
- public function integer p_destroy_inware (boolean arg_ifcommit, ref string arg_msg)
- public function integer secauditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer c_secauditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer p_update_mtrlware (long arg_mtrlwareid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, decimal arg_qty, decimal arg_price, long arg_sptid, string arg_woodcode, string arg_pcode, ref string arg_msg)
- public function integer newbegin (long arg_scid, integer arg_billtype, ref string arg_msg)
- public function integer updatebegin (long arg_scid, long arg_inwareid, integer arg_billtype, ref string arg_msg)
- public function integer p_update_cost (long arg_mtrlwareid, string arg_mtrlcode, long arg_printid, ref decimal arg_ref_cost, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx_bef (long arg_mtrlwareid, decimal arg_qty, decimal arg_price, string arg_mxdscrp, long arg_printid, ref string arg_msg, string arg_unit, decimal arg_uqty, decimal arg_rate)
- public function integer acceptmx_bef_th (long arg_mtrlwareid, decimal arg_qty, decimal arg_price, string arg_mxdscrp, long arg_printid, ref string arg_msg, string arg_unit, decimal arg_uqty, decimal arg_rate, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, string arg_woodcode, string arg_pcode)
- public function integer mod_price (long arg_scid, long arg_inwareid, long arg_printid, decimal arg_fprice, decimal arg_jgprice, decimal arg_rebate, decimal arg_tax, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (long arg_printid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, decimal arg_uqty, decimal arg_fprice, decimal arg_rebate, string arg_mxdscrp, ref string arg_msg, decimal arg_jgprice, long arg_relid, long arg_relprintid, integer arg_ifrel, string arg_woodcode, string arg_pcode, long arg_cusid_sptid, string arg_unit, decimal arg_qty, long arg_storageid, decimal arg_rate, decimal arg_addqty, string arg_mxdscrp2, string arg_mxdscrp3, string arg_mxdscrp4)
- end prototypes
- public function integer save (boolean arg_ifcommit, ref string arg_msg);Integer rslt = 1,cnt = 0,i
- DateTime server_dt
- Long ls_newid
- String ls_sccode
- IF IsNull(relid) THEN relid = 0
- IF IsNull(storageid) THEN storageid = 0
- IF IsNull(inrep) THEN inrep = ''
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(part) THEN part = ''
- IF IsNull(sptid) THEN sptid = 0
- IF IsNull(sptname) THEN sptname = ''
- IF IsNull(dxflag) THEN dxflag = 0
- IF IsNull(thflag) THEN thflag = 0
- IF IsNull(relint_1) THEN relint_1 = 0
- IF IsNull(relint_2) THEN relint_2 = 0
- IF IsNull(relint_3) THEN relint_3 = 0
- IF IsNull(relstr_1) THEN relstr_1 = ''
- IF IsNull(relstr_2) THEN relstr_2 = ''
- IF IsNull(relstr_3) THEN relstr_3 = ''
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以提交"
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction ;
- //取得系统时间,借用操作员表
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF billtype <> 9 THEN
- IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
- rslt = 0
- arg_msg = "没有正确的外协收货明细内容"
- GOTO ext
- END IF
-
- IF sys_option_wfjg_outmx = 1 And it_mxbt_bef = 0 THEN
- rslt = 0
- arg_msg = "系统选项[079]限制,没有正确的外协商库存内容"
- GOTO ext
- END IF
-
- IF relint_1 = 0 THEN
- arg_msg = '请选择结算方式'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF it_mxbt_bef = 0 THEN //如果输入物料资料错则已经清空
- rslt = 0
- arg_msg = "没有正确进仓内容"
- GOTO ext
- END IF
- END IF
- IF Year(Date(indate)) < 2000 Or IsNull(indate) THEN
- rslt = 0
- arg_msg = "缺少进仓发生时间或不合理"
- GOTO ext
- END IF
- //====================================================================
- // Script - save ( boolean arg_ifcommit, ref string arg_msg )
- // Reason:
- //--------------------------------------------------------------------
- // Modified By: yyx Date: 2004.01.02
- //--------------------------------------------------------------------
- IF DaysAfter(Date(String(server_dt,'yyyy-mm-dd')),Date(String(indate,'yyyy-mm-dd'))) > sys_option_input_days THEN
- rslt = 0
- arg_msg = '进仓日期错误,日期不能超前系统日期'
- GOTO ext
- END IF
- IF DaysAfter(Date(String(indate,'yyyy-mm-dd')),Date(String(server_dt,'yyyy-mm-dd'))) > sys_option_input_days THEN
- rslt = 0
- arg_msg = '进仓日期错误,日期不能落后系统日期'
- GOTO ext
- END IF
- //====================================================================
- SELECT name INTO :sptname
- FROM u_spt
- Where sptid = :sptid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,供应商资料"
- GOTO ext
- END IF
- sptname = left(trim(sptname),30)
- ////////////////////////////////////////////// //开始区分:新建/更新 处理
- IF inwareid = 0 THEN //新建
- ls_newid = f_sys_scidentity(scid,"ow_wfjg_in","inwareid",arg_msg,if_getid_ture,commit_transaction)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //取分部代号
- IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //取得新单据编号
- CHOOSE CASE billtype
- CASE 4 //仓库外协
- IF thflag = 0 THEN
- inwarecode = getid(scid,ls_sccode + 'WI',Date(server_dt),if_getid_ture,commit_transaction)
- ELSE
- inwarecode = getid(scid,ls_sccode + 'WT',Date(server_dt),if_getid_ture,commit_transaction)
- END IF
- CASE 5 //车间外协
- IF thflag = 0 THEN
- inwarecode = getid(scid,ls_sccode + 'SI',Date(server_dt),if_getid_ture,commit_transaction)
- ELSE
- inwarecode = getid(scid,ls_sccode + 'ST',Date(server_dt),if_getid_ture,commit_transaction)
- END IF
- CASE 9 //外协盘亏 WK
- inwarecode = getid(scid,ls_sccode + 'WK',Date(server_dt),if_getid_ture,commit_transaction)
- END CHOOSE
-
- IF inwarecode = "err" THEN
- inwarecode = ''
- rslt = 0
- arg_msg = "无法获取进仓单编号"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO ow_wfjg_in (
- scid,
- inwareid,
- inwarecode,
- billtype,
- relid,
- storageid,
- indate,
- inrep,
- part,
- dscrp,
- sptid,
- sptname,
- thflag,
- dxflag,
- otheramt,
- opdate,
- opemp,
- relint_1,
- relint_2,
- relint_3,
- relstr_1,
- relstr_2,
- relstr_3)
- VALUES (
- :scid,
- :ls_newid,
- :inwarecode,
- :billtype,
- :relid,
- :storageid,
- :indate,
- :inrep,
- :part,
- :dscrp,
- :sptid,
- :sptname,
- :thflag,
- :dxflag,
- :otheramt,
- :server_dt,
- :publ_operator,
- :relint_1,
- :relint_2,
- :relint_3,
- :relstr_1,
- :relstr_2,
- :relstr_3) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjg_in') > 0 THEN
- arg_msg = '插入操作失败,关键字分部ID、单据ID重复'
- ELSEIF Pos(Lower(commit_transaction.SQLErrText),'ix_ow_wfjg_in') > 0 THEN
- arg_msg = '插入操作失败,单据编号重复'
- ELSE
- arg_msg = "插入操作失败"+"~n"+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
-
- //读取新inwareid
- inwareid = ls_newid
-
- ELSE //////////////////////////////////////////////// //更新
- UPDATE ow_wfjg_in
- SET billtype = :billtype,
- relid = :relid,
- storageid = :storageid,
- indate = :indate,
- inrep = :inrep,
- part = :part,
- dscrp = :dscrp,
- sptid = :sptid,
- sptname = :sptname,
- thflag = :thflag,
- dxflag = :dxflag,
- otheramt = :otheramt,
- moddate = :server_dt,
- modemp = :publ_operator,
- relint_1 = :relint_1,
- relint_2 = :relint_2,
- relint_3 = :relint_3,
- relstr_1 = :relstr_1,
- relstr_2 = :relstr_2,
- relstr_3 = :relstr_3
- WHERE ow_wfjg_in.inwareid = :inwareid
- AND ow_wfjg_in.scid = :scid
- And flag = 0 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjg_in') > 0 THEN
- arg_msg = '插入操作失败,关键字分部ID、单据ID重复'
- ELSEIF Pos(Lower(commit_transaction.SQLErrText),'ix_ow_wfjg_in') > 0 THEN
- arg_msg = '插入操作失败,单据编号重复'
- ELSE
- arg_msg = "插入操作失败"+"~n"+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
-
- //删除原有明细
- DELETE FROM ow_wfjgmx_in_aft
- WHERE ow_wfjgmx_in_aft.inwareid = :inwareid
- And ow_wfjgmx_in_aft.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //删除原有明细
- DELETE FROM ow_wfjgmx_in_bef
- WHERE ow_wfjgmx_in_bef.inwareid = :inwareid
- And ow_wfjgmx_in_bef.scid = :scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- FOR i = 1 To it_mxbt
- INSERT INTO ow_wfjgmx_in_aft
- (scid,
- inwareid,
- printid,
- mtrlid,
- plancode,
- status,
- qty,
- fprice,
- rebate,
- price,
- planprice,
- mxdscrp,
- jgprice,
- relid,
- relprintid,
- ifrel,
- woodcode,
- relcode,
- pcode,
- sptid_cusid,
- cost,
- sptmtrlname,
- unit,
- rate,
- uprice,
- uqty,
- bootqty,
- noauditqty,
- storageid,
- addqty,
- mxdscrp2,
- mxdscrp3,
- mxdscrp4)
- VALUES (
- :scid,
- :inwareid,
- :inwaremx[i].printid,
- :inwaremx[i].mtrlid,
- :inwaremx[i].plancode,
- :inwaremx[i].status,
- :inwaremx[i].qty,
- :inwaremx[i].fprice,
- :inwaremx[i].rebate,
- :inwaremx[i].price,
- :inwaremx[i].planprice,
- :inwaremx[i].mxdscrp,
- :inwaremx[i].jgprice,
- :inwaremx[i].relid,
- :inwaremx[i].relprintid,
- :inwaremx[i].ifrel,
- :inwaremx[i].woodcode,
- :inwaremx[i].relcode,
- :inwaremx[i].pcode,
- :inwaremx[i].sptid,
- :inwaremx[i].cost,
- :inwaremx[i].sptmtrlname,
- :inwaremx[i].unit,
- :inwaremx[i].rate,
- :inwaremx[i].uprice,
- :inwaremx[i].uqty,
- :inwaremx[i].bootqty,
- :inwaremx[i].noauditqty,
- :inwaremx[i].storageid,
- :inwaremx[i].addqty,
- :inwaremx[i].mxdscrp2,
- :inwaremx[i].mxdscrp3,
- :inwaremx[i].mxdscrp4) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN inwareid = 0 //还原inwareid
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjgmx_in_aft') > 0 THEN
- arg_msg = '插入收货明细操作失败,关键字分部ID、单据ID、明细ID重复'
- ELSE
- arg_msg = "插入收货明细操作失败"+"~n"+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
- NEXT
- //messagebox("",it_mxbt_bef)
- FOR i = 1 To it_mxbt_bef
- INSERT INTO ow_wfjgmx_in_bef
- (scid,
- inwareid,
- mtrlwareid,
- mtrlid,
- status,
- woodcode,
- pcode,
- plancode,
- qty,
- fprice,
- printid,
- mxdscrp,
- rate,
- uqty,
- unit)
- VALUES (
- :scid,
- :inwareid,
- :inwaremx_bef[i].mtrlwareid,
- :inwaremx_bef[i].mtrlid,
- :inwaremx_bef[i].status,
- :inwaremx_bef[i].woodcode,
- :inwaremx_bef[i].pcode,
- :inwaremx_bef[i].plancode,
- abs(:inwaremx_bef[i].qty),
- :inwaremx_bef[i].fprice,
- :inwaremx_bef[i].printid,
- :inwaremx_bef[i].mxdscrp,
- :inwaremx_bef[i].rate,
- abs(:inwaremx_bef[i].uqty),
- :inwaremx_bef[i].unit
- ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN inwareid = 0 //还原inwareid
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjgmx_in_bef') > 0 THEN
- arg_msg = '插入发料明细操作失败,关键字分部ID、单据ID、明细ID重复'
- ELSE
- arg_msg = "插入发料明细操作失败"+"~n"+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
- NEXT
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- p_clearmx()
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- IF billtype = 4 THEN
- IF thflag = 0 THEN
- arg_msg = '仓库外协收货单,'+ arg_msg
- ELSE
- arg_msg = '仓库外协返工单,'+ arg_msg
- END IF
- ELSEIF billtype = 5 THEN
- IF thflag = 0 THEN
- arg_msg = '车间外协收货单,'+ arg_msg
- ELSE
- arg_msg = '车间外协返工单,'+ arg_msg
- END IF
- ELSEIF billtype = 9 THEN
- arg_msg = '外协盘亏单,'+ arg_msg
- END IF
- RETURN rslt
- end function
- public function integer getinfo (long arg_scid, long arg_inwareid, ref string arg_msg);//getinfo(arg_scid,arg_inwareid,arg_msg)
- //0 失败 1成功
- Int rslt = 1,i = 1,no_mxcheck = 0,j = 1,no_mxcheck_bef = 0
- jgsum_amt = 0
- sum_amt = 0
- IF arg_inwareid <= 0 THEN
- rslt = 0
- arg_msg = "非法进仓单唯一码"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_inwareid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- //用游标读取明细
- DECLARE cur_inwaermx CURSOR FOR
- SELECT ow_wfjgmx_in_aft.printid,
- ow_wfjgmx_in_aft.mtrlid,
- ow_wfjgmx_in_aft.plancode,
- ow_wfjgmx_in_aft.status,
- ow_wfjgmx_in_aft.qty,
- ow_wfjgmx_in_aft.fprice,
- ow_wfjgmx_in_aft.rebate,
- ow_wfjgmx_in_aft.price,
- ow_wfjgmx_in_aft.planprice,
- ow_wfjgmx_in_aft.mxdscrp,
- u_mtrldef.mtrlcode,
- ow_wfjgmx_in_aft.jgprice,
- ow_wfjgmx_in_aft.relid,
- ow_wfjgmx_in_aft.relprintid,
- ow_wfjgmx_in_aft.ifrel,
- ow_wfjgmx_in_aft.woodcode,
- ow_wfjgmx_in_aft.pcode,
- ow_wfjgmx_in_aft.plancode,
- ow_wfjgmx_in_aft.sptid_cusid,
- ow_wfjgmx_in_aft.cost,
- ow_wfjgmx_in_aft.sptmtrlname,
- ow_wfjgmx_in_aft.unit,
- ow_wfjgmx_in_aft.uqty,
- ow_wfjgmx_in_aft.uprice,
- ow_wfjgmx_in_aft.rate,
- ow_wfjgmx_in_aft.bootqty,
- ow_wfjgmx_in_aft.noauditqty,
- ow_wfjgmx_in_aft.storageid,
- ow_wfjgmx_in_aft.addqty
- FROM ow_wfjgmx_in_aft,u_mtrldef,ow_wfjg_in
- WHERE ow_wfjg_in.inwareid = :arg_inwareid AND
- ow_wfjgmx_in_aft.mtrlid = u_mtrldef.mtrlid AND
- ow_wfjg_in.scid = :arg_scid AND
- ow_wfjg_in.inwareid = ow_wfjgmx_in_aft.inwareid AND
- ow_wfjg_in.scid = ow_wfjgmx_in_aft.scid USING commit_transaction;
-
- OPEN cur_inwaermx;
- FETCH cur_inwaermx INTO :inwaremx[i].printid,:inwaremx[i].mtrlid,:inwaremx[i].plancode,
- :inwaremx[i].status,:inwaremx[i].qty,:inwaremx[i].fprice,
- :inwaremx[i].rebate,:inwaremx[i].price,:inwaremx[i].planprice,
- :inwaremx[i].mxdscrp,:inwaremx[i].mtrlcode,:inwaremx[i].jgprice,
- :inwaremx[i].relid,:inwaremx[i].relprintid,:inwaremx[i].ifrel,:inwaremx[i].woodcode,
- :inwaremx[i].pcode,:inwaremx[i].plancode,:inwaremx[i].sptid,
- :inwaremx[i].cost,:inwaremx[i].sptmtrlname,:inwaremx[i].unit,
- :inwaremx[i].uqty,:inwaremx[i].uprice,:inwaremx[i].rate,
- :inwaremx[i].bootqty,:inwaremx[i].noauditqty,:inwaremx[i].storageid,
- :inwaremx[i].addqty;
- inwaremx[i].dxflag = dxflag
- DO WHILE commit_transaction.SQLCode = 0
- jgsum_amt = jgsum_amt+ round( inwaremx[i].uqty * inwaremx[i].jgprice * inwaremx[i].rebate,2) //计算单据加工总金额
- sum_amt = sum_amt+ round( inwaremx[i].uqty * inwaremx[i].uprice * inwaremx[i].rebate,2) //计算单据总金额
- i++
- FETCH cur_inwaermx INTO :inwaremx[i].printid,:inwaremx[i].mtrlid,:inwaremx[i].plancode,
- :inwaremx[i].status,:inwaremx[i].qty,:inwaremx[i].fprice,
- :inwaremx[i].rebate,:inwaremx[i].price,:inwaremx[i].planprice,
- :inwaremx[i].mxdscrp,:inwaremx[i].mtrlcode,:inwaremx[i].jgprice,
- :inwaremx[i].relid,:inwaremx[i].relprintid,:inwaremx[i].ifrel,:inwaremx[i].woodcode,
- :inwaremx[i].pcode,:inwaremx[i].plancode,:inwaremx[i].sptid,
- :inwaremx[i].cost,:inwaremx[i].sptmtrlname,:inwaremx[i].unit,
- :inwaremx[i].uqty,:inwaremx[i].uprice,:inwaremx[i].rate,
- :inwaremx[i].bootqty,:inwaremx[i].noauditqty,:inwaremx[i].storageid,
- :inwaremx[i].addqty;
-
- inwaremx[i].dxflag = dxflag
- LOOP
- CLOSE cur_inwaermx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM ow_wfjgmx_in_aft,u_mtrldef,ow_wfjg_in
- WHERE ow_wfjg_in.inwareid = :arg_inwareid AND
- ow_wfjgmx_in_aft.mtrlid = u_mtrldef.mtrlid AND
- ow_wfjg_in.scid = :arg_scid AND
- ow_wfjg_in.inwareid = ow_wfjgmx_in_aft.inwareid AND
- ow_wfjg_in.scid = ow_wfjgmx_in_aft.scid 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
- //用游标读取明细
- DECLARE cur_inwaermx_bef CURSOR FOR
- SELECT ow_wfjgmx_in_bef.mtrlwareid,
- ow_wfjgmx_in_bef.printid,
- ow_wfjgmx_in_bef.mtrlid,
- ow_wfjgmx_in_bef.plancode,
- ow_wfjgmx_in_bef.status,
- ow_wfjgmx_in_bef.qty,
- ow_wfjgmx_in_bef.fprice,
- ow_wfjgmx_in_bef.mxdscrp,
- u_mtrldef.mtrlcode,
- ow_wfjgmx_in_bef.woodcode,
- ow_wfjgmx_in_bef.pcode,
- ow_wfjgmx_in_bef.plancode
- FROM ow_wfjgmx_in_bef,u_mtrldef,ow_wfjg_in
- WHERE ow_wfjg_in.inwareid = :arg_inwareid AND
- ow_wfjgmx_in_bef.mtrlid = u_mtrldef.mtrlid AND
- ow_wfjg_in.scid = :arg_scid AND
- ow_wfjg_in.inwareid = ow_wfjgmx_in_bef.inwareid AND
- ow_wfjg_in.scid = ow_wfjgmx_in_bef.scid
- USING commit_transaction;
-
- OPEN cur_inwaermx_bef;
- FETCH cur_inwaermx_bef INTO :inwaremx_bef[j].mtrlwareid,
- :inwaremx_bef[j].printid,
- :inwaremx_bef[j].mtrlid,:inwaremx_bef[j].plancode,
- :inwaremx_bef[j].status,:inwaremx_bef[j].qty,:inwaremx_bef[j].fprice,
- :inwaremx_bef[j].mxdscrp,
- :inwaremx_bef[j].mtrlcode,:inwaremx_bef[j].woodcode,
- :inwaremx_bef[j].pcode,:inwaremx_bef[j].plancode;
-
- DO WHILE commit_transaction.SQLCode = 0
- j++
- FETCH cur_inwaermx_bef INTO :inwaremx_bef[j].mtrlwareid,
- :inwaremx_bef[j].printid,
- :inwaremx_bef[j].mtrlid,:inwaremx_bef[j].plancode,
- :inwaremx_bef[j].status,:inwaremx_bef[j].qty,:inwaremx_bef[j].fprice,
- :inwaremx_bef[j].mxdscrp,
- :inwaremx_bef[j].mtrlcode,:inwaremx_bef[j].woodcode,
- :inwaremx_bef[j].pcode,:inwaremx_bef[j].plancode;
-
- LOOP
- CLOSE cur_inwaermx_bef;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck_bef
- FROM ow_wfjgmx_in_bef,u_mtrldef,ow_wfjg_in
- WHERE ow_wfjg_in.inwareid = :arg_inwareid AND
- ow_wfjgmx_in_bef.mtrlid = u_mtrldef.mtrlid AND
- ow_wfjg_in.scid = :arg_scid AND
- ow_wfjg_in.inwareid = ow_wfjgmx_in_bef.inwareid AND
- ow_wfjg_in.scid = ow_wfjgmx_in_bef.scid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,外协收货单相关发外明细数量"
- GOTO ext
- END IF
- IF j <> (no_mxcheck_bef+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,外协收货单相关发外明细"
- GOTO ext
- END IF
- inwareid = arg_inwareid
- scid = arg_scid
- it_mxbt = i - 1
- it_mxbt_bef = j - 1
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN p_reset()
- if billtype = 4 then
- if thflag = 0 then
- arg_msg = '仓库外协收货单,'+ arg_msg
- else
- arg_msg = '仓库外协返工单,'+ arg_msg
- end if
- elseif billtype = 5 then
- if thflag = 0 then
- arg_msg = '车间外协收货单,'+ arg_msg
- else
- arg_msg = '车间外协返工单,'+ arg_msg
- end if
- end if
- RETURN rslt
- end function
- public function integer auditing (boolean arg_ifcommit, ref string arg_msg);
- Long rslt = 1,cnt = 0,i
- Dec new_noallocqty = 0
- Long ls_newid
- decimal ls_qty
- uo_order_wfjg uo_wfjg
- uo_wfjg = CREATE uo_order_wfjg
- uo_wfjg.commit_transaction = commit_transaction
- uo_spt_price uo_sptprice
- uo_sptprice = CREATE uo_spt_price
- IF inwareid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF it_newbegin OR it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行审核"
- GOTO ext
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已经审核"
- GOTO ext
- END IF
- UPDATE ow_wfjg_in
- SET auditingrep = :publ_operator,
- auditingdate = getdate(),
- flag = 1
- WHERE ow_wfjg_in.inwareid = :inwareid
- AND flag = 0 AND scid = :scid USING commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"
- GOTO ext
- END IF
- IF billtype = 4 THEN
- IF p_create_inware( FALSE, arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- FOR i = 1 TO it_mxbt_bef
- Decimal ld_ref_cost
-
- IF p_update_cost(inwaremx_bef[i].mtrlwareid,inwaremx_bef[i].mtrlcode,&
- inwaremx_bef[i].printid,ld_ref_cost,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF thflag = 1 THEN //DXY
- ls_qty = 0 - abs(inwaremx_bef[i].qty)
- ELSE
- ls_qty = inwaremx_bef[i].qty
- END IF
-
- IF p_update_mtrlware( inwaremx_bef[i].mtrlwareid,&
- inwaremx_bef[i].mtrlid,&
- inwaremx_bef[i].mtrlcode,&
- inwaremx_bef[i].plancode,&
- inwaremx_bef[i].status,&
- ls_qty,&
- ld_ref_cost,&
- sptid,&
- inwaremx_bef[i].woodcode,&
- inwaremx_bef[i].pcode,&
- arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- // IF f_update_mtrlware_spt_in(billtype,&
- // thflag,&
- // inwaremx_bef[i].mtrlwareid,&
- // inwaremx_bef[i].mtrlid,&
- // inwaremx_bef[i].mtrlcode,&
- // inwaremx_bef[i].plancode,&
- // inwaremx_bef[i].status,&
- // inwaremx_bef[i].qty,&
- // ld_ref_cost,&
- // sptid,&
- // inwaremx_bef[i].woodcode,&
- // inwaremx_bef[i].pcode,&
- // arg_msg,FALSE,commit_transaction) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- NEXT
- FOR i = 1 TO it_mxbt
- IF inwaremx[i].relid > 0 THEN
- IF uo_wfjg.addmxcmpl(scid,inwaremx[i].relid,inwaremx[i].mtrlid,0,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,inwaremx[i].qty,arg_msg,FALSE,inwaremx[i].relprintid) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_wfjg.trycmplbuytask(scid,inwaremx[i].relid,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF uo_sptprice.uf_update_sptprice(thflag,sptid,inwaremx[i].mtrlid,inwaremx[i].unit,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,&
- inwareid,moneyid,inwaremx[i].jgprice,inwaremx[i].rebate,inwaremx[i].rate,inwaremx[i].price,indate,inwarecode,0,inwaremx[i].mxdscrp,inwaremx[i].printid,4,FALSE,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- IF billtype = 4 THEN
- IF thflag = 0 THEN
- arg_msg = '仓库外协收货单,'+ arg_msg
- ELSE
- arg_msg = '仓库外协返工单,'+ arg_msg
- END IF
- ELSEIF billtype = 5 THEN
- IF thflag = 0 THEN
- arg_msg = '车间外协收货单,'+ arg_msg
- ELSE
- arg_msg = '车间外协返工单,'+ arg_msg
- END IF
- END IF
- DESTROY uo_wfjg
- DESTROY uo_sptprice
- RETURN rslt
- end function
- public function integer del (long arg_scid, long arg_inwareid, ref string arg_msg, boolean arg_ifcommit);//del(arg_scid,arg_inwareid,arg_msg)
- //如果单据还没有审核删除单据极其明细
- //0 fail, 1 success
- Int rslt = 1
- IF arg_inwareid = 0 THEN
- rslt = 0
- arg_msg = "没有删除对象,操作取消"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_inwareid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已经审核,不可以删除"
- GOTO ext
- END IF
- DELETE FROM ow_wfjgmx_in_aft
- WHERE ow_wfjgmx_in_aft.inwareid = :arg_inwareid
- And ow_wfjgmx_in_aft.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除外协收货单明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- DELETE FROM ow_wfjgmx_in_bef
- WHERE ow_wfjgmx_in_bef.inwareid = :arg_inwareid
- And ow_wfjgmx_in_bef.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除外协收货单相关发外明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- DELETE FROM ow_wfjg_in
- WHERE ow_wfjg_in.inwareid = :arg_inwareid
- And scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除进仓单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- IF billtype = 4 THEN
- IF thflag = 0 THEN
- arg_msg = '仓库外协收货单,'+ arg_msg
- ELSE
- arg_msg = '仓库外协返工单,'+ arg_msg
- END IF
- ELSEIF billtype = 5 THEN
- IF thflag = 0 THEN
- arg_msg = '车间外协收货单,'+ arg_msg
- ELSE
- arg_msg = '车间外协返工单,'+ arg_msg
- END IF
- END IF
- RETURN rslt
- end function
- public function integer add_dscrp (long arg_scid, long arg_inwareid, string arg_newdescppart, ref string arg_msg);//add_dscrp(string arg_newdescppart)
- //0 fail 1 success
- Int rslt = 1
- arg_newdescppart = Trim(arg_newdescppart)
- IF it_updatebegin Or it_newbegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可用"
- GOTO ext
- END IF
- IF arg_newdescppart = '' THEN
- rslt = 0
- arg_msg = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_inwareid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "非审核状态下不可用"
- GOTO ext
- END IF
- UPDATE ow_wfjg_in
- SET dscrp = dscrp+' '+:arg_newdescppart
- WHERE ow_wfjg_in.inwareid = :inwareid
- And scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "添加单据备注操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- dscrp = dscrp+' '+arg_newdescppart
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSE
- COMMIT Using commit_transaction;
- END IF
- IF billtype = 4 THEN
- IF thflag = 0 THEN
- arg_msg = '仓库外协收货单,'+ arg_msg
- ELSE
- arg_msg = '仓库外协返工单,'+ arg_msg
- END IF
- ELSEIF billtype = 5 THEN
- IF thflag = 0 THEN
- arg_msg = '车间外协收货单,'+ arg_msg
- ELSE
- arg_msg = '车间外协返工单,'+ arg_msg
- END IF
- END IF
- Return (rslt)
- end function
- public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);
- Long rslt = 1,cnt = 0,i
- Dec new_noallocqty = 0
- Long ls_newid
- DateTime null_dt
- decimal ls_qty
- uo_order_wfjg uo_wfjg
- uo_wfjg = Create uo_order_wfjg
- uo_wfjg.commit_transaction = commit_transaction
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- SetNull(null_dt)
- IF inwareid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF it_newbegin Or it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行审核"
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "单据还未审核"
- GOTO ext
- END IF
- IF balcflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经结存,不能撤审"
- GOTO ext
- END IF
- UPDATE ow_wfjg_in
- SET auditingrep = '',
- auditingdate = :null_dt,
- flag = 0
- WHERE ow_wfjg_in.inwareid = :inwareid
- And flag = 1 And scid = :scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在撤审,请稍后查询。"
- GOTO ext
- END IF
- IF billtype = 4 THEN
- IF p_destroy_inware( False, arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- FOR i = 1 To it_mxbt_bef
-
- IF thflag = 1 THEN //DXY
- ls_qty = abs(inwaremx_bef[i].qty)
- ELSE
- ls_qty = 0 - inwaremx_bef[i].qty
- END IF
-
- IF p_update_mtrlware( inwaremx_bef[i].mtrlwareid,&
- inwaremx_bef[i].mtrlid,&
- inwaremx_bef[i].mtrlcode,&
- inwaremx_bef[i].plancode,&
- inwaremx_bef[i].status,&
- ls_qty,&
- inwaremx_bef[i].fprice,&
- sptid,&
- inwaremx_bef[i].woodcode,&
- inwaremx_bef[i].pcode,&
- arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- // IF f_update_mtrlware_spt_in(billtype,&
- // thflag,&
- // inwaremx_bef[i].mtrlwareid,&
- // inwaremx_bef[i].mtrlid,&
- // inwaremx_bef[i].mtrlcode,&
- // inwaremx_bef[i].plancode,&
- // inwaremx_bef[i].status,&
- // 0 - inwaremx_bef[i].qty,&
- // inwaremx_bef[i].fprice,&
- // sptid,&
- // inwaremx_bef[i].woodcode,&
- // inwaremx_bef[i].pcode,&
- // arg_msg,false,commit_transaction) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- NEXT
- FOR i = 1 To it_mxbt
- //更新合同完成数量
- IF inwaremx[i].relid > 0 THEN
- IF uo_wfjg.addmxcmpl(scid,inwaremx[i].relid,inwaremx[i].mtrlid,0,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode, 0 - inwaremx[i].qty,arg_msg,False,inwaremx[i].relprintid) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_wfjg.trycmplbuytask(scid,inwaremx[i].relid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF uo_sptprice.uf_del_sptprice(thflag,sptid,inwaremx[i].mtrlid,inwaremx[i].unit,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,inwareid,inwaremx[i].printid,moneyid,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- flag = 0
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- IF billtype = 4 THEN
- IF thflag = 0 THEN
- arg_msg = '仓库外协收货单,'+ arg_msg
- ELSE
- arg_msg = '仓库外协返工单,'+ arg_msg
- END IF
- ELSEIF billtype = 5 THEN
- IF thflag = 0 THEN
- arg_msg = '车间外协收货单,'+ arg_msg
- ELSE
- arg_msg = '车间外协返工单,'+ arg_msg
- END IF
- END IF
- Destroy uo_wfjg
- Destroy uo_sptprice
- RETURN rslt
- end function
- public function integer p_clearmx ();//int p_clearmx()
- //清除明细
- it_mxbt=0
- it_mxbt_bef=0
- return 1
- end function
- public function integer p_getinfo (long arg_scid, long arg_inwareid, ref string arg_msg);//p_getinfo(arg_scid,arg_inwareid,arg_msg)
- //0 失败 1成功
- Int rslt = 1
- IF arg_inwareid <= 0 THEN
- rslt = 0
- arG_MSG = "非法进仓单唯一码"
- GOTO ext
- END IF
- SELECT ow_wfjg_in.inwarecode,
- ow_wfjg_in.billtype,
- ow_wfjg_in.relid,
- ow_wfjg_in.storageid,
- ow_wfjg_in.indate,
- ow_wfjg_in.inrep,
- ow_wfjg_in.part,
- ow_wfjg_in.sptid,
- ow_wfjg_in.sptname,
- ow_wfjg_in.dscrp,
- ow_wfjg_in.thflag,
- ow_wfjg_in.secflag,
- ow_wfjg_in.dxflag,
- ow_wfjg_in.flag,
- ow_wfjg_in.balcflag,
- ow_wfjg_in.otheramt,
- ow_wfjg_in.relint_1,
- ow_wfjg_in.relint_2,
- ow_wfjg_in.relint_3,
- ow_wfjg_in.relstr_1,
- ow_wfjg_in.relstr_2,
- ow_wfjg_in.relstr_3
- INTO :inwarecode,
- :billtype,
- :relid,
- :storageid,
- :indate,
- :inrep,
- :part,
- :sptid,
- :sptname,
- :dscrp,
- :thflag,
- :secflag,
- :dxflag,
- :flag,
- :balcflag,
- :otheramt,
- :relint_1,
- :relint_2,
- :relint_3,
- :relstr_1,
- :relstr_2,
- :relstr_3
- FROM ow_wfjg_in
- WHERE ow_wfjg_in.inwareid = :arg_inwareid
- AND scid = :arg_scid
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN
- arG_MSG = '查询进仓单操作失败,查询数据返回值多于一个'
- ELSE
- arG_MSG = "查询操作失败(错误进仓单唯一码)"
- END IF
- GOTO ext
- END IF
- //币种, 默认本位币
- SELECT moneyid INTO :moneyid
- FROM cw_currency
- WHERE native = 1
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = '查询本位币失败! '+commit_transaction.SQLErrText
- GOTO ext
- END IF
- inwareid = arg_inwareid
- scid = arg_scid
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer p_reset ();//int p_reset()
- //清除对象及其明细
- scid=0
- inwareid=0
- inwarecode=''
- billtype=0
- opemp=''
- modemp=''
- auditingrep=''
- secauditingrep = ''
- secflag = 0
- flag=0
- relid=0
- storageid=0
- inrep=''
- part=''
- dscrp=''
- sptid=0
- sptname=''
- Dxflag=0
- thflag=0
- otheramt=0
- relint_1=0
- relint_2=0
- relint_3=0
- relstr_1=''
- relstr_2=''
- relstr_3=''
- sum_amt = 0
- jgsum_amt = 0
- it_newbegin=false
- it_updatebegin=false
- //清除明细
- p_clearmx()
- return 1
- end function
- public function integer p_create_inware (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1,i
- Long rst_inwareid,o_scid
- datastore ds_wfjginware_mx
- ds_wfjginware_mx = CREATE datastore
- ds_wfjginware_mx.DataObject = "dw_wfjgmx_in_aft_edit"
- ds_wfjginware_mx.SetTransObject(sqlca)
- ds_wfjginware_mx.Retrieve(scid,inwareid,sys_option_2unit)
- ds_wfjginware_mx.SetSort("ow_wfjgmx_in_aft_storageid A")
- ds_wfjginware_mx.Sort()
- Long ls_rowcount,ll_storageid
- ls_rowcount = ds_wfjginware_mx.RowCount()
- IF ls_rowcount <> it_mxbt THEN
- rslt = 0
- arg_msg = "单据明细数量错误"
- GOTO ext
- END IF
- FOR i = 1 TO it_mxbt
- uo_inware uo_in
- uo_in = CREATE uo_inware
- uo_in.commit_transaction = commit_transaction
- uo_in.if_getid_ture = FALSE
-
- //2.原事务生成进仓单
- ll_storageid = ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_storageid[i]
- SELECT scid INTO :o_scid
- FROM u_storage
- Where storageid = :ll_storageid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询进仓库所属分部资料失败'
- rslt = 0
- GOTO ext
- END IF
- IF uo_in.newbegin(scid,4,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_in.relid = inwareid
- uo_in.relint_2 = relint_2
- uo_in.relint_1 = relint_1
- uo_in.sptid = sptid
- uo_in.inrep = inrep
- uo_in.indate = indate
- uo_in.part = inwarecode
- uo_in.dscrp = dscrp
- uo_in.storageid = ll_storageid
-
- DO While (ll_storageid = ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_storageid[i])
- datetime ld_inworkdate
- setnull(ld_inworkdate)
- //ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_printid[i] 这个不能随意改,关系到生成的进仓单的修改单价功能
- //用库存单位进仓
- IF uo_in.acceptmx(ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_printid[i],&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_mtrlid[i],&
- ds_wfjginware_mx.Object.u_mtrldef_mtrlcode[i],&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_plancode[i],&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_status[i],&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_qty[i],&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_addqty[i],&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_fprice[i] + ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_uprice[i] * ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_rebate[i],&
- 1,&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_mxdscrp[i],&
- arg_msg,&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_uprice[i],&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_relid[i],&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_relprintid[i],&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_ifrel[i],&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_woodcode[i],&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_pcode[i],&
- '',&
- ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_sptid_cusid[i],&
- ds_wfjginware_mx.Object.u_mtrldef_unit[i],&
- 1,'','',ld_inworkdate,0) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- i++
- IF i > it_mxbt THEN EXIT
- LOOP
-
- IF uo_in.Save(FALSE,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- rst_inwareid = uo_in.inwareid
-
- //4.原事务审核进仓单
- IF uo_in.getinfo(o_scid,rst_inwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.auditing(FALSE,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- DESTROY uo_in
- i = i - 1
- NEXT
- 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 p_destroy_inware (boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i
- Int rslt = 1
- Long chc
- Long in_out
- //Long rst_outwareid[],out_i = 1 //出仓出仓id
- Long rst_inwareid[],in_i = 1 //出仓出仓id
- Long s_scid
- Long o_scid
- Long lay_storageid[],ll_storageid
- DateTime null_dt
- SetNull(null_dt)
- uo_inware uo_in
- uo_in = Create uo_inware
- uo_in.commit_transaction = sqlca
- uo_in.if_getid_ture = False
- IF inwareid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- Boolean lb_f = False
- Long j,k,ch
- //统计仓库数量,确定出或出仓单数
- FOR i = 1 To it_mxbt
- FOR j = 1 To UpperBound(lay_storageid)
- IF lay_storageid[j] = inwaremx[i].storageid THEN lb_f = True
- NEXT
- IF lb_f = False THEN
- ch++
- lay_storageid[ch] = inwaremx[i].storageid
- END IF
- lb_f = False
- NEXT
- IF UpperBound(lay_storageid) = 0 THEN
- rslt = 0
- arg_msg = '查询相关进仓单据失败'
- GOTO ext
- END IF
- //2.查询出仓单相关的入仓单,撤审,删除
- FOR k = 1 To UpperBound(lay_storageid)
-
- ll_storageid = lay_storageid[k]
-
- SELECT scid INTO :o_scid
- FROM u_storage
- Where storageid = :ll_storageid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询仓库所属分部资料失败'
- rslt = 0
- GOTO ext
- END IF
-
- DECLARE cur_in_2 CURSOR FOR
- SELECT inwareid
- FROM u_inware
- WHERE scid = :o_scid
- AND relid = :inwareid
- AND storageid = :ll_storageid
- And billtype = 4 Using commit_transaction;
-
- OPEN cur_in_2;
- FETCH cur_in_2 Into :rst_inwareid[in_i];
- DO WHILE commit_transaction.SQLCode = 0
- in_i++
- FETCH cur_in_2 Into :rst_inwareid[in_i];
- LOOP
- in_i = in_i - 1
- CLOSE cur_in_2;
-
- IF in_i = 0 THEN
- arg_msg = '查询该外协单相关进仓单失败'
- rslt = 0
- GOTO ext
- END IF
-
- FOR in_out = 1 To in_i
- //撤审出仓单,再删除
- IF uo_in.getinfo(o_scid,rst_inwareid[in_out],arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.c_auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.del(o_scid,rst_inwareid[in_out],arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_in
- RETURN rslt
- end function
- public function integer secauditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i
- String ls_about,ls_dscrp
- uo_mustpay uo_pay
- uo_pay = Create uo_mustpay
- Decimal ld_payamt = 0,ld_mstpayamt = 0
- IF inwareid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "单据还没有经过仓库审核"
- GOTO ext
- END IF
- IF secflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经过财务审核"
- GOTO ext
- END IF
- Int li_btype
- Long ll_accountsid
- SELECT btype,accountsid INTO :li_btype,:ll_accountsid
- FROM cw_banktype
- Where banktypeid = :relint_1 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN
- arg_msg = '查询结算方式类型失败,查询数据返回值多于一个'
- ELSE
- arg_msg = '查询结算方式类型失败(错误结算方式唯一码)'
- END IF
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :publ_operator Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消"
- GOTO ext
- END IF
- UPDATE ow_wfjg_in
- SET secauditingrep = :publ_operator,
- secauditingdate = getdate(),
- secflag = 1
- WHERE ow_wfjg_in.inwareid = :inwareid
- And flag = 1 And secflag = 0 And scid = :scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "财务审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在财务审核,请稍后查询。"
- GOTO ext
- END IF
- IF jgsum_amt <> 0 THEN
-
- ld_mstpayamt = jgsum_amt - otheramt
-
- IF li_btype = 1 THEN
- ld_payamt = ld_mstpayamt
- ELSE
- ld_payamt = 0
- END IF
-
- Long ll_dft_itemid
- IF thflag = 1 THEN
- ls_about = inwarecode + "退货款,相关号:"+part
-
- IF f_get_itemid(5,ll_dft_itemid, arg_msg) = 0 THEN // 采购外协退货项目
- rslt = 0
- GOTO ext
- END IF
-
- // SELECT itemid INTO :ll_dft_itemid
- // FROM u_itemdef
- // Where dfttype = 5 Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN
- // arg_msg = '查询默认采购外协付款项目资料失败,查询数据返回值多于一个'
- // ELSE
- // arg_msg = '查询默认采购外协付款项目资料失败 '
- // END IF
- // rslt = 0
- // GOTO ext
- // END IF
- ELSE
- ls_about = inwarecode + "应付款,相关号:"+part
-
- IF f_get_itemid(2,ll_dft_itemid, arg_msg) = 0 THEN //采购外协付款项目
- rslt = 0
- GOTO ext
- END IF
-
- // SELECT itemid INTO :ll_dft_itemid
- // FROM u_itemdef
- // Where dfttype = 2 Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN
- // arg_msg = '查询默认采购外协退货项目资料失败,查询数据返回值多于一个'
- // ELSE
- // arg_msg = '查询默认采购外协退货项目资料失败'
- // END IF
- // rslt = 0
- // GOTO ext
- // END IF
- END IF
- ls_dscrp = ls_about
- Long ll_moneyid
- DateTime plandate
- SetNull(plandate)
- SELECT moneyid Into :ll_moneyid From cw_currency Where native = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询本位币失败! '+sqlca.SQLErrText
- GOTO ext
- END IF
- IF uo_pay.add_payrec (scid,sptid,indate,inrep,ld_mstpayamt,ld_mstpayamt,ld_payamt,ls_about,&
- inwarecode,relint_1,1,publ_operator,inwareid,0,arg_msg,False,plandate,ll_accountsid,ll_dft_itemid,ll_moneyid,part) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE ow_wfjg_in
- SET relint_2 = :uo_pay.ref_payid
- WHERE ow_wfjg_in.inwareid = :inwareid
- AND scid = :scid
- And flag = 1 Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新外协单相关应收帐ID失败'
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- secflag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_pay
- IF billtype = 4 THEN
- IF thflag = 0 THEN
- arg_msg = '仓库外协收货单,'+ arg_msg
- ELSE
- arg_msg = '仓库外协返工单,'+ arg_msg
- END IF
- ELSEIF billtype = 5 THEN
- IF thflag = 0 THEN
- arg_msg = '车间外协收货单,'+ arg_msg
- ELSE
- arg_msg = '车间外协返工单,'+ arg_msg
- END IF
- END IF
- RETURN rslt
- end function
- public function integer c_secauditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i
- DateTime null_dt
- uo_mustpay uo_pay
- uo_pay = Create uo_mustpay
- String ls_mtrlname
- SetNull(null_dt)
- IF inwareid = 0 THEN
- rslt = 0
- arg_msg = "没有撤审对象"
- GOTO ext
- END IF
- IF it_newbegin Or it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行撤审"
- GOTO ext
- END IF
- IF secflag = 0 THEN
- rslt = 0
- arg_msg = "该单据财务未审,不能进行财务撤审"
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :publ_operator Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消"
- GOTO ext
- END IF
- UPDATE ow_wfjg_in
- SET secauditingrep = '',
- secauditingdate = :null_dt,
- secflag = 0,relint_3 = 0
- WHERE ow_wfjg_in.inwareid = :inwareid
- And secflag = 1 And scid = :scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "财务审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在财务审核,请稍后查询。"
- GOTO ext
- END IF
- IF jgsum_amt <> 0 THEN
- IF uo_pay.del_payrec(scid,1,relint_2,sptid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- secflag = 0
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_pay
- IF billtype = 4 THEN
- IF thflag = 0 THEN
- arg_msg = '仓库外协收货单,'+ arg_msg
- ELSE
- arg_msg = '仓库外协返工单,'+ arg_msg
- END IF
- ELSEIF billtype = 5 THEN
- IF thflag = 0 THEN
- arg_msg = '车间外协收货单,'+ arg_msg
- ELSE
- arg_msg = '车间外协返工单,'+ arg_msg
- END IF
- END IF
- RETURN rslt
- end function
- public function integer p_update_mtrlware (long arg_mtrlwareid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, decimal arg_qty, decimal arg_price, long arg_sptid, string arg_woodcode, string arg_pcode, ref string arg_msg);//====================================================================
- // 事件: uo_inware_wfjg.p_update_mtrlware()
- //--------------------------------------------------------------------
- // 描述:
- //--------------------------------------------------------------------
- // 参数:
- // value long arg_mtrlwareid
- // value long arg_mtrlid
- // value string arg_mtrlcode
- // value string arg_plancode
- // value string arg_status
- // value decimal arg_qty
- // value decimal arg_price
- // value long arg_sptid
- // value string arg_woodcode
- // value string arg_pcode
- // reference string arg_msg
- //--------------------------------------------------------------------
- // 返回: intege
- //--------------------------------------------------------------------
- // 作者: LHD 日期: 2013年08月17日
- //--------------------------------------------------------------------
- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved.
- //--------------------------------------------------------------------
- // 修改历史:
- //
- //====================================================================
- //外协商库存减少
- Int rslt = 1
- Long ls_newid
- String or_err_part
- Decimal ld_cost
- //-------------------------------------------更新库存
- ld_cost = arg_price
- UPDATE ow_wfjgware
- SET noallocqty = noallocqty - :arg_qty ,
- wareamt = case when :sys_option_wfjgware_nocost = 1 then 0
- else (case noallocqty + :arg_qty when 0 then 0
- else (case when (wareamt - round(:arg_qty * :arg_price,2)) * (noallocqty - :arg_qty) < 0 then 0 - (wareamt - round(:arg_qty * :arg_price,2)) else wareamt - round(:arg_qty * :arg_price,2) END) END) END,
- cost = case when :sys_option_wfjgware_nocost = 1 then 0
- else (case noallocqty - :arg_qty when 0 then cost
- else (case when round((wareamt - round(:arg_qty * :arg_price,2))/(noallocqty - :arg_qty),10) < 0 then :ld_cost else round((wareamt - round(:arg_qty * :arg_price,2))/(noallocqty - :arg_qty),10) END) END) END,
- newprice = :arg_price,
- waredate = getdate(),
- indate = case when :arg_qty < 0 then getdate() else indate END,
- outdate = case when :arg_qty > 0 then getdate() else outdate END
- WHERE ( mtrlwareid = :arg_mtrlwareid ) AND
- ( scid = :scid ) Using commit_transaction ;
-
- IF commit_transaction.SQLCode = 0 THEN
- IF commit_transaction.SQLNRows = 0 THEN
- ///////////////////////// //
- ls_newid = f_sys_scidentity(scid,"ow_wfjgware","mtrlwareid",arg_msg,False,commit_transaction)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ///////////////////////// //
- INSERT INTO ow_wfjgware
- ( scid,
- sptid,
- mtrlwareid,
- mtrlid,
- plancode,
- status,
- woodcode,
- pcode,
- noallocqty,
- allocqty,
- wareamt,
- cost,
- indate)
- VALUES (
- :scid,
- :arg_sptid,
- :ls_newid,
- :arg_mtrlid,
- :arg_plancode,
- :arg_status,
- :arg_woodcode,
- :arg_pcode,
- :arg_qty,
- 0,
- case when :sys_option_wfjgware_nocost = 1 then 0 else round(:arg_price * :arg_qty,2) END,
- case when :sys_option_wfjgware_nocost = 1 then 0 else :ld_cost END,
- getdate()) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjgware') > 0 THEN
- arg_msg = '插入外协商库存操作失败,关键字分部ID、库存ID重复'
- ELSE
- arg_msg = "物料["+arg_mtrlcode+"]外协商库存建立操作失败"+"~n"+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
-
- END IF
- ELSE
- rslt = 0
- or_err_part = 'column insert or update conflicts with a rule imposed by a previous create rule statement'
- IF commit_transaction.SQLCode = 513 Or Pos(Lower(commit_transaction.SQLErrText),or_err_part) > 0 THEN
- arg_msg = "物料["+arg_mtrlcode+"]同外协商内同批号没有足够的库存支持冲减"
- ELSE
- arg_msg = "物料["+arg_mtrlcode+"]外协商库存更新操作失败"+"~n"+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
- //-----------------------------------更新结存
- Decimal ld_balcqty,ld_balcamt
- Decimal ld_outqty,ld_outamt
- Decimal ld_reoutqty,ld_reoutamt
- Decimal ld_pypkqty,ld_pypkamt
- Decimal ld_wasteqty,ld_wasteamt
- ld_balcqty = arg_qty
- ld_balcamt = Round(arg_qty * arg_price,2)
- CHOOSE CASE billtype
- CASE 4,5
- IF thflag = 0 THEN
- ld_outqty = arg_qty
- ld_outamt = Round(arg_qty * arg_price,2)
- ld_reoutqty = 0
- ld_reoutamt = 0
- ld_pypkqty = 0
- ld_pypkamt = 0
- ld_wasteqty = 0
- ld_wasteamt = 0
- ELSE
- ld_outqty = 0
- ld_outamt = 0
- ld_reoutqty = 0 - arg_qty
- ld_reoutamt = 0 - Round(arg_qty * arg_price,2)
- ld_pypkqty = 0
- ld_pypkamt = 0
- ld_wasteqty = 0
- ld_wasteamt = 0
- END IF
-
- CASE 9
- ld_outqty = 0
- ld_outamt = 0
- ld_reoutqty = 0
- ld_reoutamt = 0
- ld_pypkqty = 0 - arg_qty
- ld_pypkamt = 0 - Round(arg_qty * arg_price,2)
- ld_wasteqty = 0
- ld_wasteamt = 0
- CASE 10
- ld_outqty = 0
- ld_outamt = 0
- ld_reoutqty = 0
- ld_reoutamt = 0
- ld_pypkqty = 0
- ld_pypkamt = 0
- ld_wasteqty = arg_qty
- ld_wasteamt = Round(arg_qty * arg_price,2)
- END CHOOSE
- UPDATE ow_wfjgbalc
- SET
- balcqty = balcqty - :ld_balcqty,
- balcamt = case when :sys_option_wfjgware_nocost = 1 then 0 else balcamt - :ld_balcamt end,
- outqty = outqty + :ld_outqty ,
- outamt = case when :sys_option_wfjgware_nocost = 1 then 0 else outamt + :ld_outamt end,
- reoutqty = reoutqty + :ld_reoutqty ,
- reoutamt = case when :sys_option_wfjgware_nocost = 1 then 0 else reoutamt + :ld_reoutamt end,
- pypkqty = pypkqty + :ld_pypkqty,
- pypkamt = case when :sys_option_wfjgware_nocost = 1 then 0 else pypkamt + :ld_pypkamt end,
- wasteqty = wasteqty + :ld_wasteqty,
- wasteamt = case when :sys_option_wfjgware_nocost = 1 then 0 else wasteamt + :ld_wasteamt end
- WHERE ( mtrlid = :arg_mtrlid ) AND
- ( sptid = :arg_sptid ) AND
- ( balcdateint = 0) 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 ow_wfjgbalc
- ( balcdateint,
- mtrlid,
- sptid,
- bgqty,
- bgamt,
- inqty,
- inamt,
- outqty,
- outamt,
- reoutqty,
- reoutamt,
- thqty,
- thamt,
- balcqty,
- balcamt,
- wasteqty,
- wasteamt,
- pypkqty,
- pypkamt,
- status,
- woodcode,
- pcode,
- scid)
- VALUES (
- 0,
- :arg_mtrlid,
- :arg_sptid,
- 0,
- 0,
- 0,
- 0,
- :ld_outqty,
- case when :sys_option_wfjgware_nocost = 1 then 0 else :ld_outamt end,
- :ld_reoutqty,
- case when :sys_option_wfjgware_nocost = 1 then 0 else :ld_reoutamt end,
- 0,
- 0,
- 0 - :ld_balcqty,
- case when :sys_option_wfjgware_nocost = 1 then 0 else 0 - :ld_balcamt end,
- :ld_wasteqty,
- case when :sys_option_wfjgware_nocost = 1 then 0 else :ld_wasteamt end,
- :ld_pypkqty,
- case when :sys_option_wfjgware_nocost = 1 then 0 else :ld_pypkamt end,
- :arg_status,
- :arg_woodcode,
- :arg_pcode,
- :scid) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjgbalc') > 0 THEN
- arg_msg = '插入外协商结存操作失败,关键字重复'
- ELSE
- arg_msg = "物料["+arg_mtrlcode+"]外协商结存建立操作失败"+"~n"+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
- END IF
- ELSE
- rslt = 0
- or_err_part = 'column insert or update conflicts with a rule imposed by a previous create rule statement'
- IF commit_transaction.SQLCode = 513 Or Pos(Lower(commit_transaction.SQLErrText),or_err_part) > 0 THEN
- arg_msg = "物料["+arg_mtrlcode+"]同外协商内同批号没有足够的结存支持冲减"
- ELSE
- arg_msg = "物料["+arg_mtrlcode+"]外协商结存更新操作失败"+"~n"+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- END IF
- RETURN rslt
- end function
- public function integer newbegin (long arg_scid, integer arg_billtype, ref string arg_msg);//====================================================================
- // Function: newbegin(long arg_scid,int arg_billtype,ref string arg_msg)
- //--------------------------------------------------------------------
- // Description: 从置对象,设定业务类型,准备建立新进仓单
- //--------------------------------------------------------------------
- // Arguments:
- // value long arg_scid
- // value integer arg_billtype
- // reference string arg_msg
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2003.11.12
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- Int rslt = 1
- IF arg_scid < 0 THEN
- arg_msg = '请选择分部'
- rslt = 0
- GOTO ext
- END IF
- p_reset()
- scid = arg_scid
- billtype = arg_billtype
- it_newbegin = True
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer updatebegin (long arg_scid, long arg_inwareid, integer arg_billtype, ref string arg_msg);//====================================================================
- // Function: updatebegin(arg_scid,arg_inwareid,arg_billtype,arg_msg)
- //--------------------------------------------------------------------
- // Description: 从置对象,设定业务类型与关联ID,准备更新进仓单
- //--------------------------------------------------------------------
- // Arguments:
- // value long arg_scid
- // value long arg_inwareid
- // value integer arg_billtype
- // reference string arg_msg
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2003.11.12
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- Long rslt = 1
- IF arg_scid < 0 THEN
- arg_msg = '请选择分部'
- rslt = 0
- GOTO ext
- END IF
- IF arg_inwareid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_inwareid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF flag = 1 THEN
- rslt = 0
- arg_msg = '单据已经审核,不可以修改'
- GOTO ext
- END IF
- inwareid = arg_inwareid
- scid = arg_scid
- billtype = arg_billtype
- it_newbegin = False
- it_updatebegin = True
- p_clearmx() //清除明细
- ext:
- IF rslt = 0 THEN p_reset()
- IF billtype = 4 THEN
- IF thflag = 0 THEN
- arg_msg = '仓库外协收货单,'+ arg_msg
- ELSE
- arg_msg = '仓库外协返工单,'+ arg_msg
- END IF
- ELSEIF billtype = 5 THEN
- IF thflag = 0 THEN
- arg_msg = '车间外协收货单,'+ arg_msg
- ELSE
- arg_msg = '车间外协返工单,'+ arg_msg
- END IF
- END IF
- RETURN rslt
- end function
- public function integer p_update_cost (long arg_mtrlwareid, string arg_mtrlcode, long arg_printid, ref decimal arg_ref_cost, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal ld_cost
- //IF sys_option_wfjgth_wareamt = 0 THEN
- SELECT cost INTO :ld_cost
- FROM ow_wfjgware
- WHERE sptid = :sptid
- And mtrlwareid = :arg_mtrlwareid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询'+arg_mtrlcode+'供应商库存成本价失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //ELSE
- // SELECT price INTO :ld_cost
- // FROM ow_wfjgmx_in_bef
- // WHERE inwareid = :inwareid
- // And printid = :arg_printid Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // arg_msg = '查询'+arg_mtrlcode+'退货单价价失败,'+commit_transaction.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- UPDATE ow_wfjgmx_in_bef
- SET fprice = :ld_cost
- WHERE inwareid = :inwareid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新'+arg_mtrlcode+'成本价失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- arg_ref_cost = ld_cost
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer acceptmx_bef (long arg_mtrlwareid, decimal arg_qty, decimal arg_price, string arg_mxdscrp, long arg_printid, ref string arg_msg, string arg_unit, decimal arg_uqty, decimal arg_rate);Long rslt = 1,cnt = 0,LS_i
- Long i_mtrlid,i_sptid
- String i_plancode,i_mtrlcode,i_status,i_woodcode,i_pcode
- Double i_cost,i_newprice
- Decimal i_allouseqty
- String ls_relcode
- Decimal ld_rate = 1
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- IF IsNull(arg_mtrlwareid) THEN arg_mtrlwareid = 0
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- //messagebox("",arg_mtrlwareid)
- IF arg_mtrlwareid = 0 Or arg_qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT ow_wfjgware.mtrlid,
- ow_wfjgware.sptid,
- ow_wfjgware.plancode,
- ow_wfjgware.status,
- ow_wfjgware.cost,
- u_mtrldef.mtrlcode,
- ow_wfjgware.woodcode,
- ow_wfjgware.pcode,
- ow_wfjgware.noallocqty
- INTO :i_mtrlid,
- :i_sptid,
- :i_plancode,
- :i_status,
- :i_cost,
- :i_mtrlcode,
- :i_woodcode,
- :i_pcode,
- :i_allouseqty
- FROM ow_wfjgware ,u_mtrldef
- WHERE ( ow_wfjgware.mtrlwareid = :arg_mtrlwareid )
- AND ( ow_wfjgware.mtrlid = u_mtrldef.mtrlid )
- And ( ow_wfjgware.scid = :scid ) Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN
- arg_msg = '库存查询操作失败,查询数据返回值多于一个'
- ELSE
- arg_msg = "查询操作失败(错误库存编号唯一码)"
- END IF
- GOTO ext
- END IF
- IF IsNull(i_cost) THEN i_cost = 0
- IF IsNull(i_plancode) THEN i_plancode = ''
- IF IsNull(i_status) THEN i_status = ''
- IF IsNull(i_mtrlid) THEN i_mtrlid = 0
- IF IsNull(i_sptid) THEN i_sptid = 0
- IF IsNull(i_woodcode) THEN i_woodcode = ''
- IF IsNull(i_pcode) THEN i_pcode = ''
- IF sptid <> i_sptid THEN
- arg_msg = "物料:" + String(i_mtrlcode) + '所属加工商资料不对应'
- rslt = 0
- GOTO ext
- END IF
- IF i_cost < 0 THEN //检查进仓价
- rslt = 0
- arg_msg = "物料:" + String(i_mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- IF sys_option_2unit = 0 THEN
- arg_uqty = arg_qty
- END IF
- //写入内容
- it_mxbt_bef++
- inwaremx_bef[it_mxbt_bef].mtrlwareid = arg_mtrlwareid
- inwaremx_bef[it_mxbt_bef].mtrlid = i_mtrlid
- inwaremx_bef[it_mxbt_bef].status = i_status
- inwaremx_bef[it_mxbt_bef].qty = arg_qty
- inwaremx_bef[it_mxbt_bef].sptid = i_sptid
- inwaremx_bef[it_mxbt_bef].cost = i_cost
- inwaremx_bef[it_mxbt_bef].costamt = Round(i_cost * arg_qty,2)
- inwaremx_bef[it_mxbt_bef].plancode = i_plancode
- inwaremx_bef[it_mxbt_bef].mtrlcode = i_mtrlcode
- inwaremx_bef[it_mxbt_bef].mxdscrp = arg_mxdscrp
- inwaremx_bef[it_mxbt_bef].printid = arg_printid
- inwaremx_bef[it_mxbt_bef].woodcode = i_woodcode
- inwaremx_bef[it_mxbt_bef].pcode = i_pcode
- //messagebox("",it_mxbt_bef)
- IF thflag = 0 THEN
- inwaremx_bef[it_mxbt_bef].fprice = i_cost
- ELSE
- inwaremx_bef[it_mxbt_bef].fprice = arg_price
- END IF
- IF sys_option_2unit = 0 THEN
- IF arg_rate = 0 THEN
- arg_rate = arg_qty/arg_uqty
- ELSE
- arg_uqty = arg_qty/arg_rate
- END IF
- END IF
- IF arg_uqty <> 0 THEN
- inwaremx_bef[it_mxbt_bef].rate = arg_qty / arg_uqty
- ELSE
- inwaremx_bef[it_mxbt_bef].rate = 0
- END IF
- inwaremx_bef[it_mxbt_bef].unit = arg_unit
- inwaremx_bef[it_mxbt_bef].uqty = arg_uqty
- ext:
- IF rslt = 0 THEN p_clearmx()
- IF billtype = 4 THEN
- IF thflag = 0 THEN
- arg_msg = '仓库外协收货单,'+ arg_msg
- ELSE
- arg_msg = '仓库外协返工单,'+ arg_msg
- END IF
- ELSEIF billtype = 5 THEN
- IF thflag = 0 THEN
- arg_msg = '车间外协收货单,'+ arg_msg
- ELSE
- arg_msg = '车间外协返工单,'+ arg_msg
- END IF
- END IF
- RETURN rslt
- end function
- public function integer acceptmx_bef_th (long arg_mtrlwareid, decimal arg_qty, decimal arg_price, string arg_mxdscrp, long arg_printid, ref string arg_msg, string arg_unit, decimal arg_uqty, decimal arg_rate, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, string arg_woodcode, string arg_pcode);Long rslt = 1,cnt = 0,LS_i
- Long i_mtrlid,i_sptid
- String i_plancode,i_mtrlcode,i_status,i_woodcode,i_pcode
- Double i_cost,i_newprice
- Decimal i_allouseqty
- String ls_relcode
- Decimal ld_rate = 1
- Long ls_newid
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- IF IsNull(arg_mtrlwareid) THEN arg_mtrlwareid = 0
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- SELECT ow_wfjgware.mtrlid,
- ow_wfjgware.sptid,
- ow_wfjgware.plancode,
- ow_wfjgware.status,
- ow_wfjgware.cost,
- u_mtrldef.mtrlcode,
- ow_wfjgware.woodcode,
- ow_wfjgware.pcode,
- ow_wfjgware.noallocqty
- INTO :i_mtrlid,
- :i_sptid,
- :i_plancode,
- :i_status,
- :i_cost,
- :i_mtrlcode,
- :i_woodcode,
- :i_pcode,
- :i_allouseqty
- FROM ow_wfjgware ,u_mtrldef
- WHERE ( ow_wfjgware.mtrlwareid = :arg_mtrlwareid )
- AND ( ow_wfjgware.mtrlid = u_mtrldef.mtrlid )
- And ( ow_wfjgware.scid = :scid ) Using commit_transaction;
- IF commit_transaction.SQLCode = 0 THEN
- IF commit_transaction.SQLNRows = 0 THEN
-
- END IF
- //ELSEIF commit_transaction.SQLCode = 100 THEN
- // ls_newid = f_sys_scidentity(0,"ow_wfjgware","mtrlwareid",arg_msg,False,commit_transaction)
- // IF ls_newid <= 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- // ///////////////////////// //
- // INSERT INTO ow_wfjgware
- // (
- // scid,
- // mtrlwareid,
- // mtrlid,
- // plancode,
- // status,
- // noallocqty,
- // allocqty,
- // wareamt,
- // sptid,
- // woodcode,
- // pcode,
- // cost,
- // indate)
- // VALUES (
- // :scid,
- // :ls_newid,
- // :arg_mtrlid,
- // :arg_plancode,
- // :arg_status,
- // 0,
- // 0,
- // 0,
- // :sptid,
- // :arg_woodcode,
- // :arg_pcode,
- // 0,
- // getdate()) Using commit_transaction ;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjgware') > 0 THEN
- // arg_msg = '插入外协商库存操作失败,关键字分部ID、库存ID重复'
- // ELSE
- // arg_msg = "物料["+arg_mtrlcode+"]库存建立操作失败"+"~n"+commit_transaction.SQLErrText
- // END IF
- // GOTO ext
- // END IF
- // arg_mtrlwareid = ls_newid
- // i_sptid=sptid
- ELSEIF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败(错误库存编号唯一码)"
- GOTO ext
- END IF
- IF IsNull(i_cost) THEN i_cost = 0
- IF IsNull(i_plancode) THEN i_plancode = ''
- IF IsNull(i_status) THEN i_status = ''
- IF IsNull(i_mtrlid) THEN i_mtrlid = 0
- IF IsNull(i_sptid) THEN i_sptid = 0
- IF IsNull(i_woodcode) THEN i_woodcode = ''
- IF IsNull(i_pcode) THEN i_pcode = ''
- IF sptid <> i_sptid THEN
- arg_msg = "物料:" + String(i_mtrlcode) + '所属加工商资料不对应'
- rslt = 0
- GOTO ext
- END IF
- IF i_cost < 0 THEN //检查进仓价
- rslt = 0
- arg_msg = "物料:" + String(i_mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- //写入内容
- it_mxbt_bef++
- inwaremx_bef[it_mxbt_bef].mtrlwareid = arg_mtrlwareid
- inwaremx_bef[it_mxbt_bef].mtrlid = i_mtrlid
- inwaremx_bef[it_mxbt_bef].status = i_status
- inwaremx_bef[it_mxbt_bef].qty = arg_qty
- inwaremx_bef[it_mxbt_bef].sptid = i_sptid
- inwaremx_bef[it_mxbt_bef].cost = i_cost
- inwaremx_bef[it_mxbt_bef].costamt = Round(i_cost * arg_qty,2)
- inwaremx_bef[it_mxbt_bef].plancode = i_plancode
- inwaremx_bef[it_mxbt_bef].mtrlcode = i_mtrlcode
- inwaremx_bef[it_mxbt_bef].mxdscrp = arg_mxdscrp
- inwaremx_bef[it_mxbt_bef].printid = arg_printid
- inwaremx_bef[it_mxbt_bef].woodcode = i_woodcode
- inwaremx_bef[it_mxbt_bef].pcode = i_pcode
- IF thflag = 0 THEN
- inwaremx_bef[it_mxbt_bef].fprice = i_cost
- ELSE
- inwaremx_bef[it_mxbt_bef].fprice = arg_price
- END IF
- IF sys_option_2unit = 0 THEN
- IF arg_rate = 0 THEN
- arg_rate = arg_qty/arg_uqty
- ELSE
- arg_uqty = arg_qty/arg_rate
- END IF
- END IF
- IF arg_uqty <> 0 THEN
- inwaremx_bef[it_mxbt_bef].rate = arg_qty / arg_uqty
- ELSE
- inwaremx_bef[it_mxbt_bef].rate = 0
- END IF
- inwaremx_bef[it_mxbt_bef].unit = arg_unit
- inwaremx_bef[it_mxbt_bef].uqty = arg_uqty
- ext:
- IF rslt = 0 THEN p_clearmx()
- IF billtype = 4 THEN
- IF thflag = 0 THEN
- arg_msg = '仓库外协收货单,'+ arg_msg
- ELSE
- arg_msg = '仓库外协返工单,'+ arg_msg
- END IF
- ELSEIF billtype = 5 THEN
- IF thflag = 0 THEN
- arg_msg = '车间外协收货单,'+ arg_msg
- ELSE
- arg_msg = '车间外协返工单,'+ arg_msg
- END IF
- END IF
- RETURN rslt
- end function
- public function integer mod_price (long arg_scid, long arg_inwareid, long arg_printid, decimal arg_fprice, decimal arg_jgprice, decimal arg_rebate, decimal arg_tax, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- uo_inware uo_in
- uo_in = CREATE uo_inware
- uo_in.commit_transaction = sqlca
- IF p_getinfo(arg_scid,arg_inwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = '待审核状态不能执行修改单价功能'
- GOTO ext
- END IF
- IF secflag = 1 THEN
- rslt = 0
- arg_msg = '已财审状态不能执行修改单价功能'
- GOTO ext
- END IF
- Decimal ld_jgprice,ld_fprice,ld_uqty,ld_rate,ld_qty,ld_rebate,lde_tax
- Long ll_mtrlid
- String ls_status,ls_woodcode,ls_pcode
- Long ll_storageid
- SELECT jgprice,
- fprice,
- tax,
- uqty,
- qty,
- rebate,
- mtrlid,
- status,
- woodcode,
- pcode,
- storageid
- INTO :ld_jgprice,
- :ld_fprice,
- :lde_tax,
- :ld_uqty,
- :ld_qty,
- :ld_rebate,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ll_storageid
- FROM ow_wfjgmx_in_aft
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- AND printid = :arg_printid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据明细内容失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- if arg_tax = -1 then arg_tax = lde_tax
- if arg_rebate = -1 then arg_rebate = ld_rebate
- IF arg_jgprice = ld_jgprice AND arg_fprice = ld_fprice AND ld_rebate = arg_rebate and lde_tax = arg_tax THEN
- rslt = 0
- arg_msg = '加工价、材料成本价、折扣、税率没有任何修改,不能保存'
- GOTO ext
- END IF
- Decimal ld_uprice_new,ld_price_new,ld_cost_new
- IF ld_qty <> 0 THEN
- ld_uprice_new = Round(arg_jgprice * ld_uqty/ld_qty,5)
- ELSE
- ld_uprice_new = 0
- END IF
- ld_cost_new = ld_uprice_new * arg_rebate + arg_fprice
- ld_price_new = ld_uprice_new * arg_rebate + arg_fprice
- UPDATE ow_wfjgmx_in_aft
- SET jgprice = :arg_jgprice,
- fprice = :arg_fprice,
- uprice = :ld_uprice_new,
- price = :ld_price_new,
- cost = :ld_cost_new
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- AND printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据明细失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF billtype = 4 THEN
-
- Long ll_inwareid
- SELECT inwareid
- INTO :ll_inwareid
- FROM u_inware
- WHERE scid = :arg_scid
- AND relid = :arg_inwareid
- AND storageid = :ll_storageid
- AND billtype = 4 USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关进仓单失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //进仓单用库存单位进仓
- IF uo_in.mod_price(arg_scid,ll_inwareid,arg_printid,ld_uprice_new * arg_rebate + arg_fprice,arg_jgprice,-1,-1,arg_msg,false) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer acceptmx (long arg_printid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, decimal arg_uqty, decimal arg_fprice, decimal arg_rebate, string arg_mxdscrp, ref string arg_msg, decimal arg_jgprice, long arg_relid, long arg_relprintid, integer arg_ifrel, string arg_woodcode, string arg_pcode, long arg_cusid_sptid, string arg_unit, decimal arg_qty, long arg_storageid, decimal arg_rate, decimal arg_addqty, string arg_mxdscrp2, string arg_mxdscrp3, string arg_mxdscrp4);
- Decimal ld_planprice,ld_cost
- Decimal ld_noauditqty,ld_bootqty
- String ls_relcode,ls_saletaskcode
- Int li_iflimitprice
- Long rslt = 1,cnt = 0,ls_i
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- String ls_sptmtrlname
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
- IF IsNull(arg_plancode) THEN arg_plancode = ''
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_uqty) THEN arg_uqty = 0
- IF IsNull(arg_fprice) THEN arg_fprice = 0
- IF IsNull(arg_rebate) THEN arg_rebate = 0
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF IsNull(arg_jgprice) THEN arg_jgprice = 0
- IF IsNull(arg_relid) THEN arg_relid = 0
- IF IsNull(arg_relprintid) THEN arg_relprintid = 0
- IF IsNull(arg_ifrel) THEN arg_ifrel = 0
- IF IsNull(arg_mxdscrp) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_cusid_sptid) THEN arg_cusid_sptid = 0
- IF IsNull(arg_storageid) THEN arg_storageid = 0
- IF IsNull(arg_unit) THEN arg_unit = ''
- IF IsNull(arg_rate) THEN arg_rate = 1
- IF IsNull(arg_addqty) THEN arg_addqty = 0
- IF IsNull(arg_mxdscrp2) THEN arg_mxdscrp2 = ''
- IF IsNull(arg_mxdscrp3) THEN arg_mxdscrp3 = ''
- IF IsNull(arg_mxdscrp4) THEN arg_mxdscrp4 = ''
- IF arg_mtrlid = 0 Or arg_qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF sys_option_2unit = 1 THEN
- IF arg_uqty = 0 THEN
- arg_msg = '行:'+String(arg_printid)+ ',请输入计价数量'
- rslt = 0
- GOTO ext
- END IF
-
- IF Trim(arg_unit) = '' THEN
- arg_msg = '行:'+String(arg_printid)+ ',请输入计价单位'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- arg_uqty = arg_qty/arg_rate
- END IF
- IF billtype = 4 THEN
- Decimal ol_mtrl_qty = 0
- Int ls_noallocflag
- Decimal lde_nouseqty
-
- SELECT noallocflag INTO :ls_noallocflag
- FROM u_storage
- Where storageid = :arg_storageid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询仓库允许使用未开单库存属性失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ls_noallocflag = 1 AND thflag = 1 THEN
- SELECT sum(u_mtrlware.noallocqty - isnull(uv_mtrlware_noauditingqty.noauditingqty, 0))
- INTO :lde_nouseqty
- FROM u_mtrlware LEFT OUTER JOIN uv_mtrlware_noauditingqty
- ON (u_mtrlware.mtrlwareid = uv_mtrlware_noauditingqty.mtrlwareid)
- AND (u_mtrlware.scid = uv_mtrlware_noauditingqty.scid)
- WHERE u_mtrlware.scid = :scid
- AND u_mtrlware.mtrlid = :arg_mtrlid
- AND u_mtrlware.STATUS = :arg_status
- AND u_mtrlware.plancode = :arg_plancode
- AND u_mtrlware.woodcode = :arg_woodcode
- AND u_mtrlware.pcode = :arg_pcode
- AND u_mtrlware.storageid = :arg_storageid
- AND u_mtrlware.dxflag = :dxflag
- AND u_mtrlware.sptid = :arg_cusid_sptid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库"
- GOTO ext
- END IF
-
- If (Abs(arg_qty) > lde_nouseqty ) THEN
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+"物料:" + arg_mtrlcode+' 未开单数:'+String(lde_nouseqty,'#,##0.##########')+'少于本次返工数量:'+String(Abs(arg_qty),'#,##0.##########')
- GOTO ext
- END IF
- END IF
-
- END IF
- IF f_check_status(1, arg_status) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能颜色未定义,"+arg_mtrlcode+",颜色:"+arg_status
- GOTO ext
- END IF
- //检查物料id
- SELECT planprice
- INTO :ld_planprice
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,编码:"+arg_mtrlcode
- GOTO ext
- END IF
- //检查物料限价属性
- SELECT iflimitprice
- INTO :li_iflimitprice
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询物料限价属性失败:"+arg_mtrlcode
- GOTO ext
- END IF
- //查询采购限价并检查进仓价
- IF billtype = 1 Or billtype = 4 THEN
- IF li_iflimitprice = 1 THEN
- IF uo_sptprice.uf_check_price_save(thflag,sptid,arg_mtrlid,arg_mtrlcode,arg_unit,arg_status,arg_woodcode,arg_pcode,arg_jgprice,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- IF arg_ifrel > 0 THEN
- IF arg_relid = 0 THEN
- arg_msg = '请先择相应的加工计划'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_order_wfjg.taskcode,a = CASE when u_order_wfjg.billtype = 1 THEN u_order_wfjgmx.relcode ELSE '' END
- Into :ls_relcode,:ls_saletaskcode
- From u_order_wfjgmx,u_order_wfjg
- Where u_order_wfjgmx.wfjgid = :arg_relid
- And u_order_wfjgmx.printid = :arg_relprintid
- And u_order_wfjgmx.mtrlid = :arg_mtrlid
- And u_order_wfjgmx.status = :arg_status
- And u_order_wfjgmx.woodcode = :arg_woodcode
- And u_order_wfjgmx.pcode = :arg_pcode
- And u_order_wfjgmx.wfjgid = u_order_wfjg.wfjgid
- And u_order_wfjgmx.scid = u_order_wfjg.scid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询加工计划是否有加工产品:'+arg_mtrlcode+'失败'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_fprice * arg_rebate < 0 THEN //检查进仓价
- rslt = 0
- arg_msg = "编码:" + String(arg_mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- //写入内容
- it_mxbt++
- inwaremx[it_mxbt].noauditqty = ld_noauditqty
- inwaremx[it_mxbt].printid = arg_printid
- inwaremx[it_mxbt].mtrlid = arg_mtrlid
- inwaremx[it_mxbt].mtrlcode = arg_mtrlcode
- inwaremx[it_mxbt].unit = arg_unit
- inwaremx[it_mxbt].storageid = arg_storageid
- inwaremx[it_mxbt].bootqty = ld_bootqty
- Long ll_if_plancode,ll_inwaretype
- IF arg_storageid > 0 THEN
- SELECT if_plancode,inwaretype
- INTO :ll_if_plancode,:ll_inwaretype
- FROM u_storage
- Where storageid = :arg_storageid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询仓库资料失败'
- GOTO ext
- END IF
-
- IF ll_if_plancode = 0 THEN
- inwaremx[it_mxbt].plancode = ''
- ELSEIF ll_inwaretype = 1 THEN
- inwaremx[it_mxbt].plancode = arg_plancode
- ELSEIF ll_inwaretype = 2 THEN
- inwaremx[it_mxbt].plancode = String(Round(arg_fprice * arg_rebate,5))
- ELSEIF ll_inwaretype = 3 THEN
- IF ls_saletaskcode <> '' THEN
- inwaremx[it_mxbt].plancode = ls_saletaskcode
- ELSE
- inwaremx[it_mxbt].plancode = arg_plancode
- END IF
- END IF
- END IF
- inwaremx[it_mxbt].uqty = arg_uqty
- inwaremx[it_mxbt].jgprice = arg_jgprice
- inwaremx[it_mxbt].rebate = arg_rebate
- IF arg_qty <> 0 THEN
- inwaremx[it_mxbt].uprice = Round(arg_jgprice * arg_uqty/arg_qty,5) //加工价,本位币,库存单位
- ELSE
- inwaremx[it_mxbt].uprice = 0
- END IF
- IF arg_uqty <> 0 THEN
- inwaremx[it_mxbt].rate = arg_qty/arg_uqty
- ELSE
- inwaremx[it_mxbt].rate = 0
- END IF
- inwaremx[it_mxbt].qty = arg_qty
- inwaremx[it_mxbt].addqty = arg_addqty
- inwaremx[it_mxbt].fprice = arg_fprice //材料成本价
- inwaremx[it_mxbt].price = inwaremx[it_mxbt].uprice * arg_rebate + arg_fprice //进仓成本价,本位币,库存单位
- inwaremx[it_mxbt].planprice = ld_planprice
- inwaremx[it_mxbt].mxdscrp = arg_mxdscrp
- inwaremx[it_mxbt].dxflag = dxflag
- inwaremx[it_mxbt].ifrel = arg_ifrel
- inwaremx[it_mxbt].relid = arg_relid
- inwaremx[it_mxbt].relprintid = arg_relprintid
- inwaremx[it_mxbt].relcode = ls_relcode
- inwaremx[it_mxbt].status = arg_status
- inwaremx[it_mxbt].woodcode = arg_woodcode
- inwaremx[it_mxbt].pcode = arg_pcode
- IF dxflag = 0 THEN
- inwaremx[it_mxbt].sptid = arg_cusid_sptid
- ELSE
- inwaremx[it_mxbt].sptid = sptid
- END IF
- inwaremx[it_mxbt].mxdscrp2 = arg_mxdscrp2
- inwaremx[it_mxbt].mxdscrp3 = arg_mxdscrp3
- inwaremx[it_mxbt].mxdscrp4 = arg_mxdscrp4
- IF billtype = 1 THEN
- IF uo_sptprice.uf_getmtrlname(sptid,arg_mtrlid,ls_sptmtrlname,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- inwaremx[it_mxbt].sptmtrlname = ls_sptmtrlname
- END IF
- IF thflag = 1 THEN
- IF sys_option_wfjgth_wareamt = 0 THEN
- SELECT cost
- INTO :ld_cost
- FROM u_mtrlware
- WHERE scid = :scid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND plancode = :arg_plancode
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND storageid = :arg_storageid
- AND dxflag = :dxflag
- And sptid = :arg_cusid_sptid;
- IF sqlca.SQLCode <> 0 Or IsNull(ld_cost) THEN ld_cost = 0
- inwaremx[it_mxbt].cost = ld_cost
- ELSE
- inwaremx[it_mxbt].cost = inwaremx[it_mxbt].price
- END IF
- ELSE
- inwaremx[it_mxbt].cost = inwaremx[it_mxbt].price
- END IF
- ext:
- Destroy uo_sptprice
- IF rslt = 0 THEN p_clearmx()
- IF billtype = 4 THEN
- IF thflag = 0 THEN
- arg_msg = '仓库外协收货单,'+ arg_msg
- ELSE
- arg_msg = '仓库外协返工单,'+ arg_msg
- END IF
- ELSEIF billtype = 5 THEN
- IF thflag = 0 THEN
- arg_msg = '车间外协收货单,'+ arg_msg
- ELSE
- arg_msg = '车间外协返工单,'+ arg_msg
- END IF
- END IF
- Return(rslt)
- end function
- on uo_inware_wfjg.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_inware_wfjg.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|