1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127 |
- $PBExportHeader$uo_outware_sale.sru
- forward
- global type uo_outware_sale from uo_outware
- end type
- end forward
- global type uo_outware_sale from uo_outware
- end type
- global uo_outware_sale uo_outware_sale
- type variables
- //dec totalamt = 0
- //dec getamt = 0
- //int lsflag = 0
- //string transcode
- //string carcode
- //string paytype
- //
- s_outwaremx_mx mx_mx[]
- Long it_mxmxbt = 0
- s_outware_itemmx outware_itemmx[]
- Long it_mxbt_item = 0
- end variables
- forward prototypes
- 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 priceaudit (long arg_scid, long arg_outwareid, boolean arg_ifcommit, ref string arg_msg)
- public function integer c_priceaudit (long arg_scid, long arg_outwareid, boolean arg_ifcommit, ref string arg_msg)
- public function integer p_update_outdate (long arg_scid, long arg_outwareid, datetime arg_outdate, boolean arg_ifcommit, ref string arg_msg)
- public function integer secpriceaudit (long arg_scid, long arg_outwareid, boolean arg_ifcommit, ref string arg_msg)
- public function integer c_secpriceaudit (long arg_scid, long arg_outwareid, boolean arg_ifcommit, ref string arg_msg)
- public function integer auditing_chk (ref string arg_msg)
- public function integer auditing_end (ref string arg_msg)
- public function integer c_auditing_end (ref string arg_msg)
- public function integer c_auditing_chk (ref string arg_msg)
- public function integer acceptmxmx (s_outwaremx_mx arg_mx_mx, ref string arg_msg)
- public function integer createmxmx (ref string arg_msg)
- public function integer p_clearmx ()
- public function integer acceptmx_item (s_outware_itemmx arg_item, ref string arg_msg)
- public function integer save_end (ref string arg_msg)
- public function integer uof_create_dismantle_install (ref string arg_msg)
- public function integer uof_destroy_dismantle_install (ref string arg_msg)
- public function integer add_fy_takerecmx ()
- public function integer c_add_fy_takerecmx ()
- public function integer uf_chk_assemble_qty (long arg_scid, long arg_storageid, long arg_outwareid, ref string arg_msg)
- public function integer auditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer auditing_th (boolean arg_ifcommit, ref string arg_msg)
- public function integer uf_chk_assemble_qty2 (long arg_scid, long arg_storageid, long arg_outwareid, ref string arg_msg)
- end prototypes
- public function integer secauditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i
- uo_cusprice uo_update_cusprice
- uo_update_cusprice = Create uo_cusprice
- uo_musttake uo_take
- uo_take = Create uo_musttake
- String ls_mtrlname
- String ls_about
- Decimal ld_takeamt = 0,ld_msttakeamt = 0, ld_otheramt = 0,ld_taxamt,ld_takeamt_tax
- Long ll_moneyid
- IF outwareid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF it_newbegin Or it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行财务审核"
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "单据还没有经过仓库审核"
- GOTO ext
- END IF
- IF secflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经过财务审核"
- GOTO ext
- END IF
- 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
- arg_msg = '查询结算方式类型失败,'+ commit_transaction.SQLErrText
- 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 u_outware
- SET secauditingrep = :publ_operator,
- secauditingdate = getdate(),
- secflag = 1
- WHERE u_outware.outwareid = :outwareid 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 = "单据正在财务审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- FOR i = 1 To it_mxbt
- IF uo_update_cusprice.uf_update_custprice(thflag,0,cusid,outwaremx[i].mtrlid,outwaremx[i].mtrlcode,outwaremx[i].woodcode,outwaremx[i].status,outwaremx[i].pcode,&
- outwareid,outwarecode,outdate,outwaremx[i].enprice,outwaremx[i].rebate,outwaremx[i].costamt,0,outwaremx[i].mxdscrp,outwaremx[i].printid,&
- relint_2,False,arg_msg,outwaremx[i].rate,outwaremx[i].ware_enprice,outwaremx[i].unit) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- //附加费用
- Decimal ld_otheramt_sum
- FOR i = 1 To it_mxbt
- ld_otheramt_sum += outwaremx[i].otherprice
- NEXT
- IF sum_enamt <> 0 THEN
- Long ll_dft_itemid_take,ll_dft_itemid_yh, ll_dft_itemid_sj
-
- IF thflag = 1 THEN
-
- ls_about = outwarecode + "退货款"
-
- IF f_get_itemid(4,ll_dft_itemid_take, arg_msg) = 0 THEN // 销售退货项目
- rslt = 0
- GOTO ext
- END IF
- ELSE
- ls_about = outwarecode + "应收款"
-
- IF f_get_itemid(1,ll_dft_itemid_take, arg_msg) = 0 THEN // 销售收款项目
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF part <> "" THEN
- ls_about += ",相关号:"+part
- END IF
-
- ls_about += ',联系人:'+rel_rep
-
- //摘要增加备注
- IF sys_option_sale_dscrp_sec = 1 THEN
- ls_about += ",备注:" + Trim(dscrp)
- END IF
-
- If lena(ls_about) > 255 Then ls_about = lefta(ls_about,250)+'...'
-
- //财务支持多币种
- IF sys_option_mst_multimoney = 0 THEN //本位币
-
- SELECT moneyid Into :ll_moneyid From cw_currency Where native = 1;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询本位币失败!'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- sum_bsamt = Round(sum_bsamt , sys_saleamt_round)
- ld_msttakeamt = sum_bsamt - sum_bsamt_tax + ld_otheramt_sum
- ld_otheramt = Round(otheramt * mrate, 2)
- ld_taxamt = sum_bsamt_tax
-
- ELSE //原币
- ll_moneyid = relint_2
-
- sum_enamt = Round(sum_enamt , sys_saleamt_round)
- ld_msttakeamt = sum_enamt - sum_enamt_tax + ld_otheramt_sum //含税金额 - 税金
- ld_otheramt = otheramt
- ld_taxamt = sum_enamt_tax
- END IF
-
- IF li_btype = 1 THEN
- IF sys_option_msttake_takeamt_secaudit = 1 THEN
- arg_msg = '系统选项使用了[070]客户收款单使用二级审核,只能使用客户收款单增加收款!'
- rslt = 0
- GOTO ext
- END IF
-
- ld_takeamt = ld_msttakeamt - ld_otheramt + ld_taxamt
- //ld_takeamt_tax = ld_taxamt
- ELSE
- ld_takeamt = 0
- //ld_takeamt_tax = 0
- END IF
-
-
- IF uo_take.add_takerec(scid,cusid,outdate,outrep,ld_msttakeamt,&
- ld_msttakeamt,ld_takeamt,ls_about,&
- outwarecode,relint_1,1,publ_operator,outwareid,0,&
- arg_msg,False,viewdate,ll_accountsid,ll_dft_itemid_take,ll_moneyid,part) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //游标读费用项目
- Long ii = 0,arry_saletaskid[],arry_itemid[]
- Decimal arry_amt[]
- String arry_itemname[]
- DECLARE fyitem CURSOR FOR
- SELECT
- u_itemdef.itemname,
- u_outware_itemmx.itype * u_outware_itemmx.amt,
- u_outware_itemmx.saletaskid,
- u_outware_itemmx.itemid
- FROM u_outware_itemmx LEFT OUTER JOIN
- u_itemdef ON u_outware_itemmx.itemid = u_itemdef.itemid
- WHERE u_outware_itemmx.scid = :scid
- And u_outware_itemmx.outwareid = :outwareid ;
-
- OPEN fyitem;
- ii++
- FETCH fyitem Into :arry_itemname[ii],:arry_amt[ii],:arry_saletaskid[ii],:arry_itemid[ii];
-
- DO WHILE sqlca.SQLCode = 0
- ii++
- FETCH fyitem Into :arry_itemname[ii],:arry_amt[ii],:arry_saletaskid[ii],:arry_itemid[ii];
- LOOP
- CLOSE fyitem;
-
- //插入明细费用数据
- FOR ii = 1 To UpperBound(arry_itemname)
- IF arry_itemname[ii] <> '' And Not IsNull(arry_itemname[ii]) and arry_amt[ii]<>0 THEN
- IF uo_take.add_takerecmx(scid,uo_take.ref_takeid,outwarecode,outdate,relint_1,arry_amt[ii],0,&
- publ_operator,outwarecode + arry_itemname[ii],outrep,3,0,arry_itemid[ii],cusid, ll_moneyid,arg_msg,False,part) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_saletask_itemmx Set amtyfh = amtyfh + :arry_amt[ii] Where scid = :scid And saletaskid = :arry_saletaskid[ii] And itemid = :arry_itemid[ii];
-
- END IF
- NEXT
- //游标读费用项目
-
-
- IF ld_taxamt <> 0 THEN
- ls_about = outwarecode + "税金" //撤审有用, 应收明细增加有用
-
- IF f_get_itemid(6,ll_dft_itemid_sj, arg_msg) = 0 THEN // 销售税金项目
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_take.add_takerecmx(scid,uo_take.ref_takeid,outwarecode,outdate,relint_1,ld_taxamt,ld_takeamt_tax,&
- publ_operator,ls_about,outrep,3,0,ll_dft_itemid_sj,cusid, ll_moneyid,arg_msg,False,part) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF ld_otheramt <> 0 THEN
- ls_about = outwarecode + sys_option_change_otheramt
-
- IF f_get_itemid(3,ll_dft_itemid_yh, arg_msg) = 0 THEN // 销售税金项目
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_take.add_takerecmx(scid,uo_take.ref_takeid,outwarecode,outdate,relint_1,0 - ld_otheramt,0,&
- publ_operator,ls_about,outrep,3,0,ll_dft_itemid_yh,cusid, ll_moneyid,arg_msg,False,part) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- // IF ld_takeamt <> 0 THEN
- // ls_about = outwarecode + "结算已收"
- //
- // IF uo_take.add_takerecmx(scid,uo_take.ref_takeid,outwarecode,outdate,relint_1,0,ld_takeamt,&
- // publ_operator,ls_about,outrep,3,0,ll_dft_itemid_take,cusid, ll_moneyid,arg_msg,FALSE,part) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- // END IF
-
- UPDATE u_outware
- SET relint_3 = :uo_take.ref_takeid
- WHERE u_outware.outwareid = :outwareid
- AND scid = :scid
- AND flag = 1
- And secflag = 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_update_cusprice
- Destroy uo_take
- RETURN rslt
- end function
- public function integer c_secauditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i
- uo_cusprice uo_update_cusprice
- uo_update_cusprice = Create uo_cusprice
- uo_musttake uo_take
- uo_take = Create uo_musttake
- String ls_mtrlname
- String ls_cusname
- DateTime null_datetime
- String ls_tmpcode
- IF outwareid = 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 cwauditingflag = 1 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
- SetNull(null_datetime)
- UPDATE u_outware
- SET secAuditingrep = '',
- secAuditingdate = :null_datetime,
- secflag = 0,
- relint_3 = 0
- WHERE u_outware.outwareid = :outwareid
- 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 = "单据正在财务撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- FOR i = 1 To it_mxbt
- IF uo_update_cusprice.uf_del_cusprice(thflag,cusid,outwaremx[i].mtrlid,outwaremx[i].unit,outwaremx[i].status,outwaremx[i].woodcode,outwaremx[i].pcode,outwareid,outwaremx[i].printid,relint_2,False,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- 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
- arG_MSG = '查询结算方式类型失败,'+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF sum_enamt <> 0 THEN
- Long ll_takeid, ll_listno
- String ls_about
- Boolean lb_del
-
- ll_takeid = relint_3
-
- //====================================================================
- // 修改:检查是否已开客户收款结算单
- //--------------------------------------------------------------------
- // 作者: lwl 日期: 2015年06月03日
- SELECT count(0)
- INTO :cnt
- FROM u_Bmstamtmx INNER JOIN
- u_Bmstamt ON u_Bmstamtmx.Baid = u_Bmstamt.Baid
- WHERE (u_Bmstamt.billtype = 0)
- And (u_Bmstamtmx.takeid = :ll_takeid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = '查询应收帐是否已经开客户收款结算单失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- SELECT top 1 u_Bmstamt.BaCode
- INTO :ls_tmpcode
- FROM u_Bmstamtmx INNER JOIN
- u_Bmstamt ON u_Bmstamtmx.Baid = u_Bmstamt.Baid
- WHERE (u_Bmstamt.billtype = 0)
- And (u_Bmstamtmx.takeid = :ll_takeid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = '查询已开客户收款结算单失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- rslt = 0
- arG_MSG = '已开客户收款结算单['+ls_tmpcode+'],不能撤审'
- GOTO ext
- END IF
-
- //====================================================================
-
-
- // IF li_btype = 1 THEN
- // ls_about = outwarecode + "结算已收"
- //
- // //删已收
- // SELECT listno
- // INTO :ll_listno
- // FROM u_bmsttakemx
- // WHERE takeid = :ll_takeid
- // And dscrp = :ls_about
- // and buildtype = 3;
- //
- // IF sqlca.SQLCode <> 0 THEN
- // //兼容旧程序
- // lb_del = False
- // ELSE
- // lb_del = True
- // END IF
- //
- // IF uo_take.del_takerecmx(3, ll_takeid , ll_listno,arG_MSG,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- // END IF
-
- IF otheramt <> 0 THEN
- //删优惠
- ls_about = outwarecode + sys_option_change_otheramt
-
- SELECT listno
- INTO :ll_listno
- FROM u_bmsttakemx
- WHERE takeid = :ll_takeid
- AND dscrp = :ls_about
- And buildtype = 3;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询应收帐"+sys_option_change_otheramt+"金额明细失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF uo_take.del_takerecmx(3, ll_takeid , ll_listno,arG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF sum_enamt_tax <> 0 THEN
- //删税金
- ls_about = outwarecode + "税金"
-
- //删已收
- SELECT listno
- INTO :ll_listno
- FROM u_bmsttakemx
- WHERE takeid = :ll_takeid
- AND dscrp = :ls_about
- And buildtype = 3;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询应收帐税金明细失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF uo_take.del_takerecmx(3, ll_takeid , ll_listno,arG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- //删费用明细
- //游标读费用项目
- Long ii = 0,arry_saletaskid[],arry_itemid[]
- Decimal arry_amt[]
- String arry_itemname[]
- DECLARE fyitem CURSOR FOR
- SELECT
- u_itemdef.itemname,
- u_outware_itemmx.itype * u_outware_itemmx.amt,
- u_outware_itemmx.saletaskid,
- u_outware_itemmx.itemid
- FROM u_outware_itemmx LEFT OUTER JOIN
- u_itemdef ON u_outware_itemmx.itemid = u_itemdef.itemid
- WHERE u_outware_itemmx.scid = :scid
- And u_outware_itemmx.outwareid = :outwareid ;
-
- OPEN fyitem;
- ii++
- FETCH fyitem Into :arry_itemname[ii],:arry_amt[ii],:arry_saletaskid[ii],:arry_itemid[ii];
-
- DO WHILE sqlca.SQLCode = 0
- ii++
- FETCH fyitem Into :arry_itemname[ii],:arry_amt[ii],:arry_saletaskid[ii],:arry_itemid[ii];
- LOOP
- CLOSE fyitem;
-
- //插入明细费用数据
- FOR ii = 1 To UpperBound(arry_itemname)
- IF arry_itemname[ii] <> '' And Not IsNull(arry_itemname[ii]) THEN
- ll_listno = -1
- ls_about = outwarecode + arry_itemname[ii]
-
- SELECT listno
- INTO :ll_listno
- FROM u_bmsttakemx
- WHERE takeid = :ll_takeid
- AND dscrp = :ls_about
- And buildtype = 3;
-
-
- IF ll_listno <> -1 THEN
- IF uo_take.del_takerecmx(3, ll_takeid , ll_listno,arG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- UPDATE u_saletask_itemmx Set amtyfh = amtyfh - (:arry_amt[ii]) Where scid = :scid And saletaskid = :arry_saletaskid[ii] And itemid = :arry_itemid[ii];
-
- END IF
- NEXT
- //游标读费用项目
- //删费用明细
-
-
-
-
-
- IF uo_take.del_takerec(scid,1,relint_3,cusid,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_update_cusprice
- Destroy uo_take
- RETURN rslt
- end function
- public function integer priceaudit (long arg_scid, long arg_outwareid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,i
- uo_cusprice uo_price
- IF arg_scid < 0 THEN
- rslt = 0
- arg_msg = "错误的分部ID"
- GOTO ext
- END IF
- IF arg_outwareid <= 0 THEN
- rslt = 0
- arg_msg = "没有确认对象"
- GOTO ext
- END IF
- if getinfo(arg_scid,arg_outwareid,arg_msg) = 0 then
- rslt = 0
- goto ext
- end if
- IF priceflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经确认"
- GOTO ext
- END IF
- uo_price = create uo_cusprice
- FOR i = 1 TO it_mxbt
- IF uo_price.uf_check_price ( cusid, outwaremx[i].mtrlid, &
- outwaremx[i].mtrlcode,outwaremx[i].unit,outwaremx[i].status,outwaremx[i].pcode,&
- outwaremx[i].woodcode,relint_2,outwaremx[i].price,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- UPDATE u_outware
- SET priceemp = :publ_operator,
- pricedate = getdate(),
- priceflag = 1
- WHERE u_outware.outwareid = :arg_outwareid
- AND priceflag = 0
- AND scid = :arg_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 = "单据正在确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- priceflag = 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_price
- RETURN rslt
- end function
- public function integer c_priceaudit (long arg_scid, long arg_outwareid, boolean arg_ifcommit, ref string arg_msg);
- Long rslt = 1,i
- DateTime null_dt
- uo_cusprice uo_price
- SetNull(null_dt)
- IF arg_scid < 0 THEN
- rslt = 0
- arg_msg = "错误的分部ID"
- GOTO ext
- END IF
- IF arg_outwareid <= 0 THEN
- rslt = 0
- arg_msg = "没有确认对象"
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF priceflag = 0 THEN
- rslt = 0
- arg_msg = "单据还未确认,不能反确认"
- GOTO ext
- END IF
- IF sys_option_confirmaudit_sale = 1 THEN
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "销售单已仓审,不能反确认"
- GOTO ext
- END IF
- END IF
- uo_price = CREATE uo_cusprice
- FOR i = 1 TO it_mxbt
- IF uo_price.uf_check_price ( cusid, outwaremx[i].mtrlid, &
- outwaremx[i].mtrlcode,outwaremx[i].unit,outwaremx[i].status,&
- outwaremx[i].pcode,outwaremx[i].woodcode,relint_2,&
- outwaremx[i].price,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- UPDATE u_outware
- SET priceemp = '',
- pricedate = :null_dt,
- priceflag = 0
- WHERE u_outware.outwareid = :arg_outwareid
- AND priceflag = 1
- AND scid = :arg_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 = "单据正在反确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- priceflag = 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_price
- RETURN rslt
- end function
- public function integer p_update_outdate (long arg_scid, long arg_outwareid, datetime arg_outdate, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- IF arg_outwareid <= 0 THEN
- rslt = 0
- arg_msg = "错误的单据唯一码"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF priceflag <> 1 THEN
- rslt = 0
- arg_msg = "单据未确认"
- GOTO ext
- END IF
- IF flag <> 0 THEN
- rslt = 0
- arg_msg = "单据已仓审"
- GOTO ext
- END IF
- IF arg_outdate < DateTime(2000-01-01,00:00:00) THEN
- rslt = 0
- arg_msg = "销售时间错误"
- GOTO ext
- END IF
- UPDATE u_outware
- SET outdate = :arg_outdate
- WHERE scid = :arg_scid
- AND outwareid = :arg_outwareid
- AND priceflag = 1
- And flag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新单据销售时间失败,"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "更新单据销售时间失败,单据正在仓审...."+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 secpriceaudit (long arg_scid, long arg_outwareid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,i
- IF arg_scid < 0 THEN
- rslt = 0
- arg_msg = "错误的分部ID"
- GOTO ext
- END IF
- IF arg_outwareid <= 0 THEN
- rslt = 0
- arg_msg = "没有回单对象"
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF secpflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经回单"
- GOTO ext
- END IF
- UPDATE u_outware
- SET secpemp = :publ_operator,
- secpdate = getdate(),
- secpflag = 1
- WHERE u_outware.outwareid = :arg_outwareid
- AND secpflag = 0
- And scid = :arg_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 = "单据正在回单,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- secpflag = 1
- 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 c_secpriceaudit (long arg_scid, long arg_outwareid, boolean arg_ifcommit, ref string arg_msg);
- Long rslt = 1,i
- DateTime null_dt
- SetNull(null_dt)
- IF arg_scid < 0 THEN
- rslt = 0
- arg_msg = "错误的分部ID"
- GOTO ext
- END IF
- IF arg_outwareid <= 0 THEN
- rslt = 0
- arg_msg = "没有回单对象"
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF secpflag = 0 THEN
- rslt = 0
- arg_msg = "单据还未回单,不能反回单"
- GOTO ext
- END IF
- UPDATE u_outware
- SET secpemp = '',
- secpdate = :null_dt,
- secpflag = 0
- WHERE u_outware.outwareid = :arg_outwareid
- AND secpflag = 1
- AND scid = :arg_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 = "单据正在反回单,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- secpflag = 0
- 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 auditing_chk (ref string arg_msg);Long rslt = 1
- Long i
- IF sys_option_confirmaudit_sale = 1 THEN
- IF priceflag = 0 THEN
- rslt = 0
- arg_msg = "系统选项[025]限制,销售单要确认后才能审核"
- GOTO ext
- END IF
- END IF
- //检查定价
- Decimal ld_dftsaleprice
- IF sys_option_outwaresale_dft_lmsaleprice = 1 THEN
- FOR i = 1 To it_mxbt
- IF outwaremx[i].dftsaleprice = 0 THEN
- f_get_defsaleprice(cusid,outwaremx[i].mtrlid,outwaremx[i].unit,outwaremx[i].status,outwaremx[i].pcode,outwaremx[i].woodcode,relint_2,ld_dftsaleprice,outwaremx[i].uqty)
- IF ld_dftsaleprice = 0 THEN
- rslt = 0
- arg_msg = "系统选项[075]限制,行:"+String(i)+",产品编号: "+String(outwaremx[i].mtrlcode)+", 需先设定客户定价"
- GOTO ext
- END IF
-
-
- UPDATE u_outwaremx
- SET dftsaleprice = :ld_dftsaleprice
- WHERE scid = :scid
- AND outwareid = :outwareid
- AND printid = :outwaremx[i].printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "行:"+String(i)+",更新客户定价失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- outwaremx[i].dftsaleprice = ld_dftsaleprice
-
- END IF
- NEXT
- END IF
- IF sys_option_hide_ware = 0 THEN
- IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //自动生成组装单
- IF sys_option_outware_if_di <> 0 THEN
- IF thflag = 0 THEN
- IF uof_create_dismantle_install(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- END IF
- ext:
- RETURN rslt
- end function
- public function integer auditing_end (ref string arg_msg);Long rslt = 1
- Long i
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = commit_transaction
- FOR i = 1 To it_mxbt
- IF billtype = 1 And outwaremx[i].relid > 0 And outwaremx[i].ifrel = 1 THEN
- IF uo_task.addmxcmpl(scid,outwaremx[i].relid,outwaremx[i].relprintid,outwaremx[i].saleqty,arg_msg,False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_task.trycmplsaletask(scid,outwaremx[i].relid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- ext:
- Destroy uo_task
- RETURN rslt
- end function
- public function integer c_auditing_end (ref string arg_msg);Long rslt = 1
- Long i
- IF sys_option_hide_ware = 0 THEN
- //自动删除组装单
- IF sys_option_outware_if_di <> 0 THEN
- IF uof_destroy_dismantle_install(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = commit_transaction
- FOR i = 1 To it_mxbt
- IF billtype = 1 And outwaremx[i].relid > 0 And ( outwaremx[i].ifrel = 1 or thflag = 1 ) THEN
- IF uo_task.addmxcmpl(scid,outwaremx[i].relid,outwaremx[i].relprintid, 0 - outwaremx[i].saleqty,arg_msg,False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_task.trycmplsaletask(scid,outwaremx[i].relid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- ext:
- Destroy uo_task
- RETURN rslt
- end function
- public function integer c_auditing_chk (ref string arg_msg);long rslt = 1
- long i
- IF secflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经过财务审核"
- GOTO ext
- END IF
- IF sys_option_hide_ware = 0 THEN
- IF billtype <> 9 THEN
- IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF Not sysautobuild THEN
- IF dscrp = '盘点表审核自动生成盘亏单' THEN
- arg_msg = '系统自动生成的单据不能手动撤审'
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- END IF
- ext:
- return rslt
- end function
- public function integer acceptmxmx (s_outwaremx_mx arg_mx_mx, ref string arg_msg);Int rslt = 1
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- IF IsNull(arg_mx_mx.scid) THEN arg_mx_mx.scid = 0
- IF IsNull(arg_mx_mx.outwareid) THEN arg_mx_mx.outwareid = 0
- IF IsNull(arg_mx_mx.mxprintid) THEN arg_mx_mx.mxprintid = 0
- IF IsNull(arg_mx_mx.printid) THEN arg_mx_mx.printid = 0
- IF IsNull(arg_mx_mx.packcode) THEN arg_mx_mx.packcode = ''
- IF IsNull(arg_mx_mx.packname) THEN arg_mx_mx.packname = ''
- IF IsNull(arg_mx_mx.packnum) THEN arg_mx_mx.packnum = 0
- IF IsNull(arg_mx_mx.net_weight) THEN arg_mx_mx.net_weight = 0
- IF IsNull(arg_mx_mx.gross_weight) THEN arg_mx_mx.gross_weight = 0
- IF IsNull(arg_mx_mx.cubage) THEN arg_mx_mx.cubage = 0
- it_mxmxbt++
- mx_mx[it_mxmxbt] = arg_mx_mx
- ext:
- RETURN rslt
- end function
- public function integer createmxmx (ref string arg_msg);Int rslt = 1
- s_outwaremx_mx s_mxmx[], s_empty[]
- Long cnt = 0
- Long i, j, k = 0
- FOR i = 1 To it_mxbt
- cnt = 1
- s_mxmx = s_empty
-
- DECLARE cur1 CURSOR FOR SELECT packcode, packname, packnum, net_weight, gross_weight, cubage
- FROM u_mtrldef_pack
- WHERE mtrlid = :outwaremx[i].mtrlid
- ORDER BY printid
- Using commit_transaction;
- OPEN cur1;
- FETCH cur1 Into :s_mxmx[cnt].packcode, :s_mxmx[cnt].packname, :s_mxmx[cnt].packnum, :s_mxmx[cnt].net_weight, :s_mxmx[cnt].gross_weight, :s_mxmx[cnt].cubage;
- DO WHILE commit_transaction.SQLCode = 0
-
- cnt++
- FETCH cur1 Into :s_mxmx[cnt].packcode, :s_mxmx[cnt].packname, :s_mxmx[cnt].packnum, :s_mxmx[cnt].net_weight, :s_mxmx[cnt].gross_weight, :s_mxmx[cnt].cubage;
- LOOP
- cnt --
-
- FOR j = 1 To cnt
- k++
- s_mxmx[j].mxprintid = k
- s_mxmx[j].printid = outwaremx[i].printid
- s_mxmx[j].packnum = s_mxmx[j].packnum * outwaremx[i].qty
- IF acceptmxmx(s_mxmx[j], arg_msg) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer p_clearmx ();it_mxmxbt = 0
- it_mxbt_item = 0
- RETURN Super::p_clearmx()
- end function
- public function integer acceptmx_item (s_outware_itemmx arg_item, ref string arg_msg);Int rslt = 1
- Long cnt
- cnt = 0
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- IF IsNull(arg_item.scid) THEN arg_item.scid = 0
- IF IsNull(arg_item.outwareid) THEN arg_item.outwareid = 0
- IF IsNull(arg_item.printid) THEN arg_item.printid = 0
- IF IsNull(arg_item.itemid) THEN arg_item.itemid = 0
- IF IsNull(arg_item.amt) THEN arg_item.amt = 0
- IF IsNull(arg_item.mxdscrp) THEN arg_item.mxdscrp = ''
- IF IsNull(arg_item.saletaskid) THEN arg_item.saletaskid = 0
- IF IsNull(arg_item.saletaskprintid) THEN arg_item.saletaskprintid = 0
- IF IsNull(arg_item.itype) THEN arg_item.itype =1//默认方向类型为增项
- IF arg_item.itemid = 0 Or arg_item.amt = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM u_itemdef
- Where itemid = :arg_item.itemid;
- 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 = '第'+String(arg_item.printid)+'行,收支项目不存在,请检查'
- GOTO ext
- END IF
- it_mxbt_item++
- outware_itemmx[it_mxbt_item] = arg_item
- ext:
- IF rslt = 0 THEN p_clearmx()
- RETURN rslt
- end function
- public function integer save_end (ref string arg_msg);Long rslt = 1
- Long i
- //sys_option_chk_wkd //销售发货单开单时,使用物料清单计算 未开单库存
- IF sys_option_chk_wkd = 1 THEN
- IF uf_chk_assemble_qty2(scid,storageid,outwareid,arg_msg) = 0 THEN
- IF it_newbegin THEN outwareid = 0 //还原outwareid
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF it_newbegin THEN
- FOR i = 1 To it_mxmxbt
- INSERT INTO u_outwaremx_mx(scid,
- outwareid,
- mxprintid,
- printid,
- packcode,
- packname,
- packnum,
- net_weight,
- gross_weight,
- cubage)
- VALUES (:scid,
- :outwareid,
- :mx_mx[i].mxprintid,
- :mx_mx[i].printid,
- :mx_mx[i].packcode,
- :mx_mx[i].packname,
- :mx_mx[i].packnum,
- :mx_mx[i].net_weight,
- :mx_mx[i].gross_weight,
- :mx_mx[i].cubage)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN outwareid = 0 //还原outwareid
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_outwaremx_mx') > 0 THEN
- arg_msg = '插入单据包件明细内容失败,关键字ID重复'
- ELSE
- arg_msg = '因网络或其它原因导致插入单据包件明细内容失败,'+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
- NEXT
- ELSE
-
- IF flag = 0 And priceflag = 0 THEN
- //删除原有包件明细
- DELETE FROM u_outwaremx_mx
- WHERE u_outwaremx_mx.outwareid = :outwareid
- And u_outwaremx_mx.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有包件明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- FOR i = 1 To it_mxmxbt
- INSERT INTO u_outwaremx_mx(scid,
- outwareid,
- mxprintid,
- printid,
- packcode,
- packname,
- packnum,
- net_weight,
- gross_weight,
- cubage)
- VALUES (:scid,
- :outwareid,
- :mx_mx[i].mxprintid,
- :mx_mx[i].printid,
- :mx_mx[i].packcode,
- :mx_mx[i].packname,
- :mx_mx[i].packnum,
- :mx_mx[i].net_weight,
- :mx_mx[i].gross_weight,
- :mx_mx[i].cubage)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_outwaremx_mx') > 0 THEN
- arg_msg = '插入单据包件明细内容失败,关键字ID重复'
- ELSE
- arg_msg = '因网络或其它原因导致插入单据包件明细内容失败,'+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
- NEXT
-
- END IF
-
-
- DELETE FROM u_outware_itemmx
- WHERE u_outware_itemmx.outwareid = :outwareid
- And u_outware_itemmx.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_item
- INSERT INTO u_outware_itemmx
- (scid,
- outwareid,
- printid,
- itemid,
- amt,
- mxdscrp,
- saletaskid,
- saletaskprintid,
- itype
- )
- VALUES (:scid,
- :outwareid,
- :outware_itemmx[i].printid,
- :outware_itemmx[i].itemid,
- :outware_itemmx[i].amt,
- :outware_itemmx[i].mxdscrp,
- :outware_itemmx[i].saletaskid,
- :outware_itemmx[i].saletaskprintid,
- :outware_itemmx[i].itype
- ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN outwareid = 0 //还原outwareid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入费用明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer uof_create_dismantle_install (ref string arg_msg);Long rslt = 1
- Long ll_j,ll_i,it_mxt = 1
- String ls_mtrlcode, ls_plancode,ls_status,ls_woodcode,ls_pcode
- Long ll_mtrlwareid,ll_mtrlid,ll_storageid
- Dec ld_qty,ld_saleqty,ld_qty_b
- String ls_reason
- Long ll_cnt
- Decimal lde_noallocqty, lde_planprice
- long ll_Mtrlorigin
- Decimal ld_rqty,ld_mxqty
- Long j
- uo_dismantle_install uo_ware_install
- uo_ware_install = Create uo_dismantle_install
- uo_ware_install.if_getid_ture = False
- DataStore ds_mtrlware_di
- ds_mtrlware_di = create DataStore
- ds_mtrlware_di.dataObject = 'ds_mtrlwware_find_di'
- ds_mtrlware_di.SetTransObject(sqlca)
- ls_reason = '销售发货单:'+outwarecode+'自动组装'
- SELECT count(*)
- INTO :ll_cnt
- FROM u_dismantle_install
- WHERE reason = :ls_reason
- And billtype = 0;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询自动组装相关单据失败!'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ll_cnt > 0 THEN
- arg_msg = '单据已经有自动组装单!'
- rslt = 0
- GOTO ext
- END IF
- String ls_cusname
- SELECT name
- INTO :ls_cusname
- FROM u_cust
- Where cusid = :cusid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询客户信息失败!'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- FOR ll_j = 1 To it_mxbt
- ll_mtrlwareid = outwaremx[ll_j].mtrlwareid
- ld_saleqty = outwaremx[ll_j].qty
-
- it_mxt = 1
-
- SELECT u_mtrlware.mtrlid,
- u_mtrlware.planprice,
- u_mtrlware.storageid,
- u_mtrlware.status,
- u_mtrlware.woodcode,
- u_mtrlware.pcode,
- u_mtrlware.plancode,
- u_mtrldef.mtrlcode,
- u_mtrlware.noallocqty,
- u_mtrldef.Mtrlorigin
- INTO :ll_mtrlid,
- :lde_planprice,
- :ll_storageid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ls_plancode,
- :ls_mtrlcode,
- :lde_noallocqty,
- :ll_Mtrlorigin
- FROM u_mtrldef,
- u_mtrlware
- WHERE ( u_mtrldef.mtrlid = u_mtrlware.mtrlid )
- And ( u_mtrlware.mtrlwareid = :ll_mtrlwareid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '第'+String(ll_j)+'行,查询物料库存信息失败.'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- if sys_option_outware_if_di = 2 then
- if ll_Mtrlorigin = 3 then CONTINUE // 当选项为2时自动组装需要排除外协属性的物料
- end if
-
- IF lde_noallocqty > 0 THEN
- //存在一种情况,同一张单有多行相同明细(不同订单),库存数是之前的明细组装的
- IF ll_j > 1 THEN
- ld_qty_b = 0
- FOR ll_i = 1 To ll_j - 1
- IF ll_mtrlwareid = outwaremx[ll_i].mtrlwareid THEN
- ld_qty_b += outwaremx[ll_i].qty
- END IF
- NEXT
- END IF
- IF lde_noallocqty - ld_qty_b >= ld_saleqty THEN //足够库存的, 不需要组装
- CONTINUE
- ELSEIF lde_noallocqty - ld_qty_b > 0 THEN //部分库存,只安装差额
- ld_saleqty = outwaremx[ll_j].qty - (lde_noallocqty - ld_qty_b)
- END IF
- END IF
-
- //计算组装结构
- Long ll_SonMtrlid[]
- String ls_pf_status[]
- Decimal ld_Sonscale[]
- int ls_Mtrlorigin[]
- String ls_mtrlname,ls_status_find
- Decimal ld_noallocqty,ld_allqty,ld_maxqty
-
- DECLARE cur_pf CURSOR FOR
- SELECT u_PrdPF.SonMtrlid,
- u_PrdPF.Sonscale,
- u_PrdPF.status
- FROM u_PrdPF
- Where u_PrdPF.mtrlid = :ll_mtrlid;
-
- OPEN cur_pf;
- FETCH cur_pf Into :ll_SonMtrlid[it_mxt],:ld_Sonscale[it_mxt],:ls_pf_status[it_mxt];
- DO WHILE sqlca.SQLCode = 0
- it_mxt++
- FETCH cur_pf Into :ll_SonMtrlid[it_mxt],:ld_Sonscale[it_mxt],:ls_pf_status[it_mxt];
- LOOP
- it_mxt = it_mxt - 1
- CLOSE cur_pf;
-
-
- IF it_mxt = 0 THEN
- IF sys_option_outware_if_di <> 0 THEN //没有bom的,成功跳过
- CONTINUE
- //elseif sys_option_outware_if_di = 2 then //没有bom的,错误提示
- // rslt = 0
- // arg_msg = '第'+String(ll_j)+'行,该产品没有建立组装结构,不能计算'
- // GOTO ext
- END IF
- END IF
-
- ld_maxqty = 1000000
- FOR ll_i = 1 To it_mxt
- SELECT mtrlname,Mtrlorigin INTO :ls_mtrlname,:ll_Mtrlorigin
- FROM u_mtrldef
- Where mtrlid = :ll_SonMtrlid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '第'+String(ll_j)+'行,查询产品资料失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ls_Mtrlorigin[ll_i] = ll_Mtrlorigin
-
- if sys_option_outware_if_di = 2 then
- if ll_Mtrlorigin = 3 then CONTINUE // 当选项为2时自动组装需要排除外协属性的物料
- end if
-
- IF sys_option_if_color = 1 THEN
- ls_status_find = ls_status
- ELSE
- ls_status_find = ls_pf_status[ll_i]
- END IF
-
- ld_noallocqty = 0
- ld_allqty = 0
- SELECT sum(noallocqty) INTO :ld_noallocqty
- FROM u_mtrlware
- WHERE storageid = :ll_storageid
- AND mtrlid = :ll_SonMtrlid[ll_i]
- And status = :ls_status_find;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '第'+String(ll_j)+'行,查询该产品组装材料'+ls_mtrlname+'的库存资料失败'
- GOTO ext
- END IF
-
- ld_allqty = ld_noallocqty/ld_Sonscale[ll_i]
-
- ld_maxqty = Min(ld_maxqty,ld_allqty)
-
- IF IsNull(ld_maxqty) THEN ld_maxqty = 0
- NEXT
- ld_qty = Truncate ( ld_maxqty, 0 )
-
- IF ld_saleqty > ld_qty THEN
- rslt = 0
- arg_msg = '第'+String(ll_j)+'行,产品没有足够的组装材料库存~n'+'发货单组装数量:'+String(ld_saleqty,'#,###0.##')+',库存最大可装数:'+String(ld_qty,'#,###0.##')
- GOTO ext
- END IF
-
- String mx_status,mx_woodcode,mx_plancode,mx_pcode,mx_mtrlcode
- Dec mx_noallocqty,mx_cost
- Long mx_mtrlwareid,mx_dxflag,mx_sptid
-
- IF uo_ware_install.newbegin(0,arg_msg) = 0 THEN //新建
- rslt = 0
- GOTO ext
- END IF
-
- uo_ware_install.billdate = outdate //DateTime(Today(),Now()) // 发生时间
- uo_ware_install.rep = publ_operator // 经手人
- uo_ware_install.dscrp = ls_reason+","+ls_cusname //备注
- uo_ware_install.reason = ls_reason //原因
- uo_ware_install.storageid = ll_storageid
- uo_ware_install.mtrlid = ll_mtrlid
- uo_ware_install.mtrlwareid = ll_mtrlwareid
- uo_ware_install.status = ls_status
- uo_ware_install.woodcode = ls_woodcode
- uo_ware_install.pcode = ls_pcode
- uo_ware_install.plancode = ls_plancode
- uo_ware_install.qty = ld_saleqty
- uo_ware_install.addqty = 0
- uo_ware_install.price = lde_planprice
- uo_ware_install.buildtype = 0
- uo_ware_install.mtrlcode = ls_mtrlcode
-
-
- decimal lde_planprice_temp //保存时计算主表的单价的公式改为 等于明细标准数量*明细单价的合计//后改为明细单价合计 不需要*数量
- lde_planprice_temp=0
-
- Long num
- FOR ll_i = 1 To it_mxt
- if sys_option_outware_if_di = 2 then
- if ls_Mtrlorigin[ll_i] = 3 then CONTINUE // 当选项为2时自动组装需要排除外协属性的物料
- end if
- IF sys_option_if_color = 1 THEN
- ls_status_find = ls_status
- ELSE
- ls_status_find = ls_pf_status[ll_i]
- END IF
-
- //清单每行全部装载数
- ld_rqty = ld_saleqty * ld_Sonscale[ll_i]
-
- ds_mtrlware_di.retrieve(ll_SonMtrlid[ll_i],ll_storageid,ls_status_find)
- FOR j = 1 to ds_mtrlware_di.rowcount()
- IF ld_rqty = 0 THEN CONTINUE
- mx_mtrlwareid = ds_mtrlware_di.Object.mtrlwareid[j]
- mx_status = ds_mtrlware_di.Object.status[j]
- mx_woodcode = ds_mtrlware_di.Object.woodcode[j]
- mx_plancode = ds_mtrlware_di.Object.plancode[j]
- mx_pcode = ds_mtrlware_di.Object.pcode[j]
- mx_noallocqty = ds_mtrlware_di.Object.noallocqty[j]
- mx_cost = ds_mtrlware_di.Object.cost[j]
- mx_dxflag = ds_mtrlware_di.Object.dxflag[j]
- mx_sptid = ds_mtrlware_di.Object.sptid[j]
- mx_mtrlcode = ds_mtrlware_di.Object.mtrlcode[j]
- IF mx_noallocqty >= ld_rqty THEN
- ld_mxqty = ld_rqty
- ld_rqty = 0
- ELSE
- ld_mxqty = mx_noallocqty
- ld_rqty = ld_rqty - mx_noallocqty
- END IF
- num++
- IF uo_ware_install.acceptmx(num,&
- ll_storageid,&
- mx_mtrlwareid,&
- ll_SonMtrlid[ll_i],&
- ld_mxqty,&
- 0,&
- mx_cost,&
- mx_status,&
- mx_plancode,&
- mx_woodcode,&
- '',&
- mx_mtrlcode,&
- mx_pcode,&
- mx_dxflag,&
- mx_sptid,&
- arg_msg,&
- ld_Sonscale[ll_i]) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- lde_planprice_temp= lde_planprice_temp + ld_mxqty * mx_cost
- NEXT
- NEXT
-
-
- uo_ware_install.price=lde_planprice_temp / ld_saleqty
-
- IF uo_ware_install.Save(arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_install.getinfo(uo_ware_install.billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_install.auditing(publ_operator,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- Destroy uo_ware_install
- IF rslt = 0 THEN
- // ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 THEN
- // COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_destroy_dismantle_install (ref string arg_msg);Long rslt = 1
- Long ll_row,ll_ucrow, ll_j,ll_i,it_mxt = 1,i
- String ls_mtrlcode, ls_plancode,ls_status,ls_woodcode,ls_pcode
- Long ll_mtrlwareid,ll_mtrlid,ll_storageid
- Dec ls_noallocqty,ls_planprice,ls_cost,ld_qty,ld_saleqty
- String ls_reason
- Long ll_cnt
- long ll_billid, ll_billid_arr[]
- string ls_billcode, ls_billcode_arr[]
- uo_dismantle_install uo_ware_install
- uo_ware_install = Create uo_dismantle_install
- uo_ware_install.sysautobuild = true
- ls_reason = '销售发货单:'+outwarecode+'自动组装'
- //读取单据
- DECLARE cur_getdi CURSOR FOR
- SELECT billid , billcode
- FROM u_dismantle_install
- WHERE billtype = 0
- AND reason = :ls_reason
- Using commit_transaction;
- OPEN cur_getdi;
- DO WHILE commit_transaction.SQLCode = 0
- FETCH cur_getdi Into :ll_billid, :ls_billcode;
- IF commit_transaction.SQLCode <> 0 THEN EXIT
- ll_cnt++
- ll_billid_arr[ll_cnt] = ll_billid
- ls_billcode_arr[ll_cnt] = ls_billcode
- LOOP
- CLOSE cur_getdi;
- FOR ll_j = 1 To ll_cnt
-
-
- IF uo_ware_install.getinfo(ll_billid_arr[ll_j],arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_install.c_auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_install.del(ll_billid_arr[ll_j],False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
- ext:
- destroy uo_ware_install
- IF rslt = 0 THEN
- // ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 THEN
- // COMMIT Using commit_transaction;
- END IF
- return rslt
- end function
- public function integer add_fy_takerecmx ();Long i, j, rslt = 1
- Long ll_rowcnt = 0,child_row, count, ll_addmxcnt,ll_itemid,ll_saletaskid
- Decimal amt,sum_amt_1 = 0
- datastore dw_itemmx
- dw_itemmx = Create datastore
- dw_itemmx.DataObject = 'dw_outware_itemmx_edit'
- dw_itemmx.SetTransObject(sqlca)
- dw_itemmx.Retrieve(scid,outwareid)
- FOR i = 1 To dw_itemmx.RowCount()
- ll_itemid = dw_itemmx.Object.u_outware_itemmx_itemid[i]
- ll_saletaskid = dw_itemmx.Object.u_outware_itemmx_saletaskid[i]
- amt = dw_itemmx.Object.u_outware_itemmx_amt[i] * dw_itemmx.Object.u_outware_itemmx_itype[i]
- sum_amt_1 = sum_amt_1 + amt
- UPDATE u_saletask_itemmx Set amtyfh = amtyfh + :amt Where scid = :scid And saletaskid = :ll_saletaskid And itemid = :ll_itemid;
-
- NEXT
- COMMIT;
- uo_musttake uo_take
- uo_take = Create uo_musttake
- String ls_mtrlname
- String ls_about,arg_msg
- Decimal ld_takeamt = 0,ld_msttakeamt = 0, ld_otheramt = 0,ld_taxamt,ld_takeamt_tax
- Long ll_moneyid,ll_accountsid,ll_dft_itemid_take,li_btype
- 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
- arg_msg = '查询结算方式类型失败,'+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- SELECT itemid INTO :ll_dft_itemid_take
- FROM u_itemdef
- Where dfttype = 1 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询默认销售收款项目资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //财务支持多币种
- IF sys_option_mst_multimoney = 0 THEN //本位币
-
- SELECT moneyid Into :ll_moneyid From cw_currency Where native = 1;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询本位币失败!'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
-
-
- ELSE //原币
- ll_moneyid = relint_2
-
-
- END IF
- ld_msttakeamt = sum_amt_1
- ld_msttakeamt = sum_amt_1
- ls_about = outwarecode + "的费用明细"
- part = 'fhd_fy'
- //IF uo_take.add_takerec(scid,cusid,outdate,outrep,ld_msttakeamt,&
- // ld_msttakeamt,ld_takeamt,ls_about,&
- // outwarecode,relint_1,1,publ_operator,outwareid,0,&
- // arg_msg,False,outdate,ll_accountsid,ll_dft_itemid_take,ll_moneyid,part) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- ext:
- Destroy dw_itemmx
- IF rslt = 0 THEN
- MessageBox("错误","生成费用明细失败" + arg_msg)
- END IF
- RETURN rslt
- end function
- public function integer c_add_fy_takerecmx ();Long i, j, rslt = 1
- Long ll_rowcnt = 0,child_row, count, ll_addmxcnt,ll_itemid,ll_saletaskid
- Decimal amt
- datastore dw_itemmx
- dw_itemmx = Create datastore
- dw_itemmx.DataObject = 'dw_outware_itemmx_edit'
- dw_itemmx.SetTransObject(sqlca)
- dw_itemmx.Retrieve(scid,outwareid)
- FOR i = 1 To dw_itemmx.RowCount()
- ll_itemid = dw_itemmx.Object.u_outware_itemmx_itemid[i]
- ll_saletaskid = dw_itemmx.Object.u_outware_itemmx_saletaskid[i]
- amt = dw_itemmx.Object.u_outware_itemmx_amt[i] * dw_itemmx.Object.u_outware_itemmx_itype[i]
- UPDATE u_saletask_itemmx Set amtyfh = amtyfh - (:amt) Where scid = :scid And saletaskid = :ll_saletaskid And itemid = :ll_itemid;
-
- NEXT
- COMMIT;
- long ll_takeid
- string arg_msg
- select takeid into :ll_takeid from u_Bmsttake where u_Bmsttake.scid=:scid and u_Bmsttake.outwareid =:outwareid and u_Bmsttake.relcode='fhd_fy';
- uo_musttake uo_take
- uo_take = Create uo_musttake
- //IF uo_take.del_takerec(scid,1,ll_takeid,cusid,arg_msg,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //ext:
- Destroy dw_itemmx
- IF rslt = 0 THEN
- MessageBox("错误","删除费用明细失败" + arg_msg)
- END IF
- RETURN rslt
- end function
- public function integer uf_chk_assemble_qty (long arg_scid, long arg_storageid, long arg_outwareid, ref string arg_msg);Int rslt = 1
- Long i,j,k,new_it_mxbt
- Long li_flag //检查物料是否有清单
- s_outwaremx temp_outwaremx[],new_outwaremx[] ,new_sonmtrl_outwaremx[],null_outwaremx[] //明细结构数组
- temp_outwaremx = outwaremx
- Long ll_flag1
- FOR i = 1 To it_mxbt
-
-
- FOR j = 1 To UpperBound(new_outwaremx)
- IF temp_outwaremx[i].mtrlwareid = new_outwaremx[j].mtrlwareid THEN
- new_outwaremx[j].qty = new_outwaremx[j].qty + temp_outwaremx[i].qty
- GOTO nxt1
- END IF
- NEXT
-
- new_it_mxbt++
- new_outwaremx[new_it_mxbt].mtrlwareid = temp_outwaremx[i].mtrlwareid
- new_outwaremx[new_it_mxbt].mtrlid = temp_outwaremx[i].mtrlid
- new_outwaremx[new_it_mxbt].qty = temp_outwaremx[i].qty
- new_outwaremx[new_it_mxbt].status = temp_outwaremx[i].status
- new_outwaremx[new_it_mxbt].woodcode = temp_outwaremx[i].woodcode
- new_outwaremx[new_it_mxbt].pcode = temp_outwaremx[i].pcode
- nxt1:
- NEXT
- Decimal i_noauditingqty = 0 //已开单未审
- Decimal i_noallocqty = 0 //现库存数
- Decimal i_nowbjmxqty
- FOR i = 1 To UpperBound(new_outwaremx)
- i_noauditingqty = 0
- i_noallocqty = 0
-
-
- //计算库存数
- SELECT
-
- IsNull(u_mtrlware.noallocqty,0)
-
- Into
-
- :i_noallocqty
-
- 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) Inner join
- u_mtrldef On ( u_mtrlware.mtrlid = u_mtrldef.mtrlid )
- Where ( u_mtrlware.scid = :arg_scid )
- And (u_mtrlware.storageid = :arg_storageid)
- And ( u_mtrlware.mtrlwareid = :new_outwaremx[i].mtrlwareid )
- Using commit_transaction;
-
-
- //计算已开单数
- SELECT isnull(sum(u_outwaremx.uqty),0) INTO :i_noauditingqty FROM u_outwaremx INNER join u_outware
- on u_outware.scid = u_outwaremx.scid AND u_outware.outwareid = u_outwaremx.outwareid
- WHERE u_outwaremx.scid = :arg_scid AND
- u_outware.flag = 0 AND
- u_outwaremx.outwareid <> :arg_outwareid AND
- u_outwaremx.mtrlwareid = :new_outwaremx[i].mtrlwareid
- Using commit_transaction;
- //计算上级已开未审总和
- SELECT ISNULL(SUM(u_PrdPF.Sonscale * u_outwaremx.qty),0) AS sumqty INTO :i_nowbjmxqty
- FROM u_PrdPF
- INNER JOIN u_outwaremx ON u_outwaremx.mtrlid = u_PrdPF.mtrlid
- INNER JOIN u_outware ON u_outware.scid = u_outwaremx.scid
- AND u_outware.outwareid = u_outwaremx.outwareid
- WHERE (u_outware.flag = 0)
- AND (u_PrdPF.SonMtrlid = :new_outwaremx[i].mtrlid)
- AND (u_PrdPF.STATUS = :new_outwaremx[i].status)
- AND (u_PrdPF.woodcode = :new_outwaremx[i].woodcode)
- AND (u_PrdPF.pcode = :new_outwaremx[i].pcode)
- AND u_outwaremx.scid = :arg_scid
- AND u_outwaremx.outwareid <> :arg_outwareid
- Using commit_transaction;
- IF SQLCA.SQLCODE <> 0 THEN
- i_nowbjmxqty = 0
- END IF
-
-
-
-
- //检查是否有清单
- li_flag = 0
-
- SELECT count(*) INTO :li_flag
- FROM u_PrdPF
- Where u_PrdPF.mtrlid = :new_outwaremx[i].mtrlid;
-
- IF IsNull(li_flag) THEN li_flag = 0
-
- IF li_flag = 0 THEN //没有清单
- new_outwaremx[i].qty = new_outwaremx[i].qty + i_noauditingqty + i_nowbjmxqty
- ELSE
- new_outwaremx[i].qty = new_outwaremx[i].qty + i_noauditingqty - i_noallocqty + i_nowbjmxqty
- END IF
-
-
-
-
- NEXT
- //查下级物料清单
- Long cur_mxt_pf
- Long ll_SonMtrlid[],temp_ll[]
- String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[],temp_str[]
- Decimal ld_Sonscale[]
- new_it_mxbt = 0
- new_sonmtrl_outwaremx = null_outwaremx //物料清单汇总
- FOR i = 1 To UpperBound(new_outwaremx)
- cur_mxt_pf = 1
- ll_SonMtrlid = temp_ll
- ls_pf_status = temp_str
- ls_pf_woodcode = temp_str
- ls_pf_pcode = temp_str
-
-
-
- li_flag = 0
-
- SELECT count(*) INTO :li_flag
- FROM u_PrdPF
- Where u_PrdPF.mtrlid = :new_outwaremx[i].mtrlid;
-
- IF IsNull(li_flag) THEN li_flag = 0
-
-
- IF li_flag = 0 THEN //没有清单
-
-
- FOR k = 1 To UpperBound(new_sonmtrl_outwaremx)
- IF new_sonmtrl_outwaremx[k].mtrlid = new_outwaremx[i].mtrlid And new_sonmtrl_outwaremx[k].status = new_outwaremx[i].status And new_sonmtrl_outwaremx[k].woodcode = new_outwaremx[i].woodcode And new_sonmtrl_outwaremx[k].pcode = new_outwaremx[i].pcode THEN
- new_sonmtrl_outwaremx[k].qty = new_sonmtrl_outwaremx[k].qty + new_outwaremx[i].qty
- GOTO nxt0
- END IF
- NEXT
-
- new_it_mxbt++
-
- new_sonmtrl_outwaremx[new_it_mxbt].mtrlid = new_outwaremx[i].mtrlid
- new_sonmtrl_outwaremx[new_it_mxbt].qty = new_outwaremx[i].qty
- new_sonmtrl_outwaremx[new_it_mxbt].status = new_outwaremx[i].status
- new_sonmtrl_outwaremx[new_it_mxbt].woodcode = new_outwaremx[i].woodcode
- new_sonmtrl_outwaremx[new_it_mxbt].pcode = new_outwaremx[i].pcode
-
-
-
- nxt0:
-
- END IF //没有清单
-
-
-
-
-
-
-
- IF li_flag <> 0 THEN //有清单
- DECLARE cur_pf CURSOR FOR
- SELECT u_PrdPF.SonMtrlid,
- u_PrdPF.Sonscale,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode
- FROM u_PrdPF
- Where u_PrdPF.mtrlid = :new_outwaremx[i].mtrlid;
-
- OPEN cur_pf;
- FETCH cur_pf Into :ll_SonMtrlid[cur_mxt_pf],:ld_Sonscale[cur_mxt_pf],:ls_pf_status[cur_mxt_pf],:ls_pf_woodcode[cur_mxt_pf],:ls_pf_pcode[cur_mxt_pf];
- DO WHILE sqlca.SQLCode = 0
- cur_mxt_pf++
- FETCH cur_pf Into :ll_SonMtrlid[cur_mxt_pf],:ld_Sonscale[cur_mxt_pf],:ls_pf_status[cur_mxt_pf],:ls_pf_woodcode[cur_mxt_pf],:ls_pf_pcode[cur_mxt_pf];
- LOOP
- cur_mxt_pf = cur_mxt_pf - 1
- CLOSE cur_pf;
-
- //物料清单 放到新数组
- FOR j = 1 To cur_mxt_pf
-
-
- FOR k = 1 To UpperBound(new_sonmtrl_outwaremx)
- IF new_sonmtrl_outwaremx[k].mtrlid = ll_SonMtrlid[j] And new_sonmtrl_outwaremx[k].status = ls_pf_status[j] And new_sonmtrl_outwaremx[k].woodcode = ls_pf_woodcode[j] And new_sonmtrl_outwaremx[k].pcode = ls_pf_pcode[j] THEN
- new_sonmtrl_outwaremx[k].qty = new_sonmtrl_outwaremx[k].qty + ld_Sonscale[j] * new_outwaremx[i].qty
- GOTO nxt2
- END IF
- NEXT
-
- new_it_mxbt++
-
- new_sonmtrl_outwaremx[new_it_mxbt].mtrlid = ll_SonMtrlid[j]
- new_sonmtrl_outwaremx[new_it_mxbt].qty = ld_Sonscale[j] * new_outwaremx[i].qty
- new_sonmtrl_outwaremx[new_it_mxbt].status = ls_pf_status[j]
- new_sonmtrl_outwaremx[new_it_mxbt].woodcode = ls_pf_woodcode[j]
- new_sonmtrl_outwaremx[new_it_mxbt].pcode = ls_pf_pcode[j]
- NEXT
- END IF //有清单
- nxt2:
-
- NEXT
- //检查下级清单够不够库存
- String ls_mtrlcode,ls_mtrlname
- Decimal ld_compareqty
- FOR i = 1 To UpperBound(new_sonmtrl_outwaremx)
- i_noallocqty = 0
- ls_mtrlcode = ''
- ls_mtrlname = ''
- //计算库存数
- SELECT
- u_mtrldef.mtrlcode,
- u_mtrldef.mtrlname,
- IsNull(sum(u_mtrlware.noallocqty),0)
-
- Into
- :ls_mtrlcode,
- :ls_mtrlname,
- :i_noallocqty
-
- 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) Inner join
- u_mtrldef On ( u_mtrlware.mtrlid = u_mtrldef.mtrlid )
- Where ( u_mtrlware.scid = :arg_scid )
- And (u_mtrlware.storageid = :arg_storageid)
- And ( u_mtrlware.mtrlid = :new_sonmtrl_outwaremx[i].mtrlid )
- And ( u_mtrlware.status = :new_sonmtrl_outwaremx[i].status )
- And ( u_mtrlware.woodcode = :new_sonmtrl_outwaremx[i].woodcode )
- And ( u_mtrlware.pcode = :new_sonmtrl_outwaremx[i].pcode )
- Group By u_mtrldef.mtrlcode,
- u_mtrldef.mtrlname
- Using commit_transaction;
-
-
-
- //计算下级已开单数
- SELECT isnull(sum(u_outwaremx.uqty),0) INTO :i_noauditingqty FROM u_outwaremx INNER join u_outware
- on u_outware.scid = u_outwaremx.scid AND u_outware.outwareid = u_outwaremx.outwareid
- WHERE u_outwaremx.scid = :arg_scid AND
- u_outware.flag = 0 AND
- u_outwaremx.outwareid <> :arg_outwareid
- And ( u_outwaremx.scid = :arg_scid )
- And ( u_outwaremx.mtrlid = :new_sonmtrl_outwaremx[i].mtrlid )
- And ( u_outwaremx.status = :new_sonmtrl_outwaremx[i].status )
- And ( u_outwaremx.woodcode = :new_sonmtrl_outwaremx[i].woodcode )
- And ( u_outwaremx.pcode = :new_sonmtrl_outwaremx[i].pcode )
- Using commit_transaction;
-
- //计算上级已开未审总和
- SELECT ISNULL(SUM(u_PrdPF.Sonscale * u_outwaremx.qty),0) AS sumqty INTO :i_nowbjmxqty
- FROM u_PrdPF
- INNER JOIN u_outwaremx ON u_outwaremx.mtrlid = u_PrdPF.mtrlid
- INNER JOIN u_outware ON u_outware.scid = u_outwaremx.scid
- AND u_outware.outwareid = u_outwaremx.outwareid
- WHERE (u_outware.flag = 0)
- AND (u_PrdPF.SonMtrlid = :new_sonmtrl_outwaremx[i].mtrlid)
- AND (u_PrdPF.STATUS = :new_sonmtrl_outwaremx[i].status)
- AND (u_PrdPF.woodcode = :new_sonmtrl_outwaremx[i].woodcode)
- AND (u_PrdPF.pcode = :new_sonmtrl_outwaremx[i].pcode)
- AND u_outwaremx.scid = :arg_scid
- AND u_outwaremx.outwareid <> :arg_outwareid
- Using commit_transaction;
- IF SQLCA.SQLCODE <> 0 THEN
- i_nowbjmxqty = 0
- END IF
-
-
- ld_compareqty = i_noallocqty - i_noauditingqty - i_nowbjmxqty
- IF new_sonmtrl_outwaremx[i].qty > ld_compareqty THEN
-
- IF arg_msg = '' THEN
- arg_msg = '物料编码:' + String(ls_mtrlcode) + ' 物料名称:' + String(ls_mtrlname) + ' 总需求数(本单+其他已开单):' + String(new_sonmtrl_outwaremx[i].qty,'#,##0.00') + ' 当前库存数(扣减已开单未审):' + String(ld_compareqty,'#,##0.00') + ' 还差:' + String(new_sonmtrl_outwaremx[i].qty - ld_compareqty,'#,##0.00') + '~r~n'
- ELSE
- arg_msg = arg_msg + '~r~n' + '物料编码:' + String(ls_mtrlcode) + ' 物料名称:' + String(ls_mtrlname) + ' 总需求数(本单+其他已开单):' + String(new_sonmtrl_outwaremx[i].qty,'#,##0.00') + ' 当前库存数(扣减已开单未审):' + String(ld_compareqty,'#,##0.00') + ' 还差:' + String(new_sonmtrl_outwaremx[i].qty - ld_compareqty,'#,##0.00') + '~r~n'
- END IF
- END IF
-
-
-
- NEXT
- IF arg_msg <> '' THEN
-
- rslt = 0
- END IF
- RETURN rslt
- // //数量相关的检查
- // //*****检查大于未开数不可以开单
- // IF billtype <> 9 THEN//盘亏单不检查
- // IF flag = 0 THEN
- //
- // Decimal ld_mx_qty //本单当前累计数量
- // Decimal ol_mtrl_qty = 0 //本单保存前开单数量
- // Int ls_noallocflag
- //
- // IF s_mx.uqty > 0 THEN
- // SELECT noallocflag INTO :ls_noallocflag
- // FROM u_storage
- // Where storageid = :storageid;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询仓库允许使用未开单库存属性失败'+sqlca.SQLErrText
- // GOTO ext
- // END IF
- //
- // IF ls_noallocflag = 1 THEN
- //
- // IF it_updatebegin THEN //修改
- // SELECT sum(u_outwaremx.qty)
- // INTO :ol_mtrl_qty
- // FROM u_outwaremx
- // WHERE u_outwaremx.outwareid = :outwareid
- // AND u_outwaremx.mtrlwareid = :s_mx.mtrlwareid
- // And scid = :scid;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '第' + String(s_mx.printid) + '行,查询原开单数量失败'
- // GOTO ext
- // END IF
- // if isnull(ol_mtrl_qty) then ol_mtrl_qty = 0
- // END IF //IF it_updatebegin THEN //修改
- //
- // FOR ll_i = 1 To it_mxbt
- // IF s_mx.mtrlwareid = outwaremx[ll_i].mtrlwareid THEN
- // ld_mx_qty = ld_mx_qty + outwaremx[ll_i].qty
- // END IF
- // NEXT
- //
- // ld_mx_qty = ld_mx_qty + Round(s_mx.uqty * s_mx.rate,sys_option_unit_dec_sale) //s_mx.qty
- //
- //
- // IF ld_mx_qty > ( i_allouseqty + ol_mtrl_qty ) THEN
- // rslt = 0
- // arg_msg = '第' + String(s_mx.printid) + '行,' + String(i_mtrlcode)+"库存未开单数不够,不能开单.未开单数{"+String(i_allouseqty - i_notauditqty + ol_mtrl_qty,'#####,0.00##')+"}"
- // GOTO ext
- // END IF
- // END IF //IF ls_noallocflag = 1 THEN
- // END IF //IF s_mx.uqty > 0 THEN
- // END IF
- // END IF
- //END IF
- //
- // //检查物料库存ID
- //SELECT
- // u_mtrlware.noallocqty,
- // INTO
- // :i_allouseqty
- // 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) INNER JOIN
- // u_mtrldef ON ( u_mtrlware.mtrlid = u_mtrldef.mtrlid )
- // WHERE ( u_mtrlware.scid = :scid )
- // AND ( u_mtrlware.mtrlwareid = :s_mx.mtrlwareid )
- // Using commit_transaction;
- //IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "第" + String(s_mx.printid) + "行,查询操作失败,库存信息错误"
- // GOTO ext
- //END IF
- 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
- IF outwareid = 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
- IF auditing_chk(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_outware
- SET Auditingrep = :publ_operator,
- Auditingdate = getdate(),
- flag = 1
- WHERE u_outware.outwareid = :outwareid
- AND flag = 0
- And scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "审核单据操作失败"+"~n"
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"
- GOTO ext
- END IF
- Long li_if_fifo = 0
- SELECT if_fifo
- INTO :li_if_fifo
- FROM u_storage
- Where storageid = :storageid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = "查询仓库存货核算方法错误!"
- rslt = 0
- GOTO ext
- END IF
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = commit_transaction
- IF sys_option_hide_ware = 0 THEN
- FOR i = 1 To it_mxbt
-
- Decimal ld_ref_costamt,ld_ref_costamt_notax
-
- Long li_mtrlwaremxid = 0
-
- // If billtype = 1 And outwaremx[i].relid > 0 Then
- // If uo_task.addmxcmpl(scid,outwaremx[i].relid,outwaremx[i].relprintid,outwaremx[i].qty,arg_msg,False) <> 1 Then
- // arg_msg = '退货明细行:'+String(i)+','+arg_msg
- // rslt = 0
- // Goto ext
- // End If
- // End If
-
- IF li_if_fifo = 0 THEN //移动平均法
- IF p_update_cost(outwaremx[i],ld_ref_costamt,ld_ref_costamt_notax,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF p_update_cost_fifo(outwaremx[i],ld_ref_costamt,ld_ref_costamt_notax,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- END IF
-
-
- Decimal dec_fifo_inprice,dec_fifo_inprice_notax
-
- //dec_fifo_inprice = outwaremx[i].enprice * outwaremx[i].rebate
- //负数出仓 取库存cost作为入仓成本单价
- dec_fifo_inprice = 0
- SELECT cost,cost_notax Into :dec_fifo_inprice,:dec_fifo_inprice_notax From u_mtrlware Where scid = :scid And mtrlwareid = :outwaremx[i].mtrlwareid;
- IF dec_fifo_inprice > 0 THEN
- ELSE
- dec_fifo_inprice = 0
- END IF
- IF dec_fifo_inprice_notax > 0 THEN
- ELSE
- dec_fifo_inprice_notax = 0
- END IF
-
-
-
- IF p_update_mtrlware ( outwaremx[i].mtrlwareid, outwaremx[i].mtrlid, &
- outwaremx[i].mtrlcode, storageid, outwaremx[i].plancode,&
- outwaremx[i].status, outwaremx[i].qty,outwaremx[i].addqty, ld_ref_costamt,&
- outwaremx[i].planprice, outwaremx[i].sptid, outwaremx[i].dxflag,&
- outwaremx[i].woodcode, outwaremx[i].pcode,arg_msg,ld_ref_costamt_notax) = 0 THEN
- arg_msg = "行:"+String(i)+","+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- //先进先出法 ,加入进仓批 u_mtrlware_inmx star
-
-
-
- IF li_if_fifo = 1 And outwaremx[i].qty < 0 THEN //负数 使用先进先出
- IF f_add_mtrlware_inmx(scid, outwaremx[i].mtrlwareid,outwareid,outwaremx[i].printid,outwarecode,outdate,outwaremx[i].qty,dec_fifo_inprice,dec_fifo_inprice_notax,1,False,commit_transaction,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_trigger_fifo_procedure(scid,outwaremx[i].mtrlwareid,outdate,1,outwareid,li_mtrlwaremxid,False,commit_transaction,arg_msg) = 0 THEN //负数等于进仓
-
- rslt = 0
- GOTO ext
- END IF
-
- //重算结存表
- IF f_cmp_fifo_warebalc(scid,outwaremx[i].mtrlwareid,False,commit_transaction,arg_msg) = 0 THEN
-
- rslt = 0
- GOTO ext
- END IF
-
- END IF
-
- IF li_if_fifo = 1 And outwaremx[i].qty > 0 THEN //正数
- IF f_trigger_fifo_procedure(scid,outwaremx[i].mtrlwareid,outdate,2,outwareid,li_mtrlwaremxid,False,commit_transaction,arg_msg) = 0 THEN
-
- rslt = 0
- GOTO ext
- END IF
-
- //重算结存表
- IF f_cmp_fifo_warebalc(scid,outwaremx[i].mtrlwareid,False,commit_transaction,arg_msg) = 0 THEN
-
- rslt = 0
- GOTO ext
- END IF
-
- END IF
-
-
-
-
-
- //先进先出法 ,加入进仓批 u_mtrlware_inmx end
-
-
-
-
- NEXT
-
- //检查是否正确生成进仓批
- IF li_if_fifo = 1 THEN
- FOR i = 1 To it_mxbt
-
- IF f_check_mtrlware_inmx(scid, outwaremx[i].mtrlwareid,commit_transaction,arg_msg) = 0 THEN
-
- IF uf_w_cmp_fifo_cb_bill(scid,outwaremx[i].mtrlwareid,False,arg_msg) = 0 THEN //尝试修复
- rslt = 0
- arg_msg = '第' + String(i) + '行 ' + arg_msg
- GOTO ext
- ELSE
- IF f_check_mtrlware_inmx(scid, outwaremx[i].mtrlwareid,commit_transaction,arg_msg) = 0 THEN //再检查一次
- rslt = 0
- arg_msg = '第' + String(i) + '行 ' + arg_msg
- GOTO ext
- END IF
-
- END IF
-
-
-
-
-
-
-
- END IF
-
- NEXT
- END IF
-
-
- END IF
- IF auditing_end(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- IF billname <> "" THEN
- arg_msg = billname + ',' + arg_msg
- END IF
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer auditing_th (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i
- Dec new_noallocqty = 0
- Long ls_newid
- IF outwareid = 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
- IF auditing_chk(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_outware
- SET Auditingrep = :publ_operator,
- Auditingdate = getdate(),
- flag = 1
- WHERE u_outware.outwareid = :outwareid
- AND flag = 0
- And scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "审核单据操作失败"+"~n"
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"
- GOTO ext
- END IF
- Long li_if_fifo = 0
- SELECT if_fifo
- INTO :li_if_fifo
- FROM u_storage
- Where storageid = :storageid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = "查询仓库存货核算方法错误!"
- rslt = 0
- GOTO ext
- END IF
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = commit_transaction
- IF sys_option_hide_ware = 0 THEN
- FOR i = 1 To it_mxbt
-
- Decimal ld_ref_costamt,ld_ref_costamt_notax
-
- Long li_mtrlwaremxid = 0
-
- If billtype = 1 And outwaremx[i].relid > 0 Then
- If uo_task.addmxcmpl(scid,outwaremx[i].relid,outwaremx[i].relprintid,outwaremx[i].qty,arg_msg,False) <> 1 Then
- arg_msg = '退货明细行:'+String(i)+','+arg_msg
- rslt = 0
- Goto ext
- End If
- End If
-
- IF li_if_fifo = 0 THEN //移动平均法
- IF p_update_cost(outwaremx[i],ld_ref_costamt,ld_ref_costamt_notax,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF p_update_cost_fifo(outwaremx[i],ld_ref_costamt,ld_ref_costamt_notax,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- END IF
-
-
- Decimal dec_fifo_inprice,dec_fifo_inprice_notax
-
- //dec_fifo_inprice = outwaremx[i].enprice * outwaremx[i].rebate
- //负数出仓 取库存cost作为入仓成本单价
- dec_fifo_inprice = 0
- SELECT cost,cost_notax Into :dec_fifo_inprice,:dec_fifo_inprice_notax From u_mtrlware Where scid = :scid And mtrlwareid = :outwaremx[i].mtrlwareid;
- IF dec_fifo_inprice > 0 THEN
- ELSE
- dec_fifo_inprice = 0
- END IF
- IF dec_fifo_inprice_notax > 0 THEN
- ELSE
- dec_fifo_inprice_notax = 0
- END IF
-
-
-
- IF p_update_mtrlware ( outwaremx[i].mtrlwareid, outwaremx[i].mtrlid, &
- outwaremx[i].mtrlcode, storageid, outwaremx[i].plancode,&
- outwaremx[i].status, outwaremx[i].qty,outwaremx[i].addqty, ld_ref_costamt,&
- outwaremx[i].planprice, outwaremx[i].sptid, outwaremx[i].dxflag,&
- outwaremx[i].woodcode, outwaremx[i].pcode,arg_msg,ld_ref_costamt_notax) = 0 THEN
- arg_msg = "行:"+String(i)+","+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
-
- //先进先出法 ,加入进仓批 u_mtrlware_inmx star
-
-
-
-
-
-
-
- IF li_if_fifo = 1 And outwaremx[i].qty < 0 THEN //负数 使用先进先出
- IF f_add_mtrlware_inmx(scid, outwaremx[i].mtrlwareid,outwareid,outwaremx[i].printid,outwarecode,outdate,outwaremx[i].qty,dec_fifo_inprice,dec_fifo_inprice_notax,1,False,commit_transaction,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_trigger_fifo_procedure(scid,outwaremx[i].mtrlwareid,outdate,1,outwareid,li_mtrlwaremxid,False,commit_transaction,arg_msg) = 0 THEN //负数等于进仓
-
- rslt = 0
- GOTO ext
- END IF
-
- //重算结存表
- IF f_cmp_fifo_warebalc(scid,outwaremx[i].mtrlwareid,False,commit_transaction,arg_msg) = 0 THEN
-
- rslt = 0
- GOTO ext
- END IF
-
- END IF
-
- IF li_if_fifo = 1 And outwaremx[i].qty > 0 THEN //正数
- IF f_trigger_fifo_procedure(scid,outwaremx[i].mtrlwareid,outdate,2,outwareid,li_mtrlwaremxid,False,commit_transaction,arg_msg) = 0 THEN
-
- rslt = 0
- GOTO ext
- END IF
-
- //重算结存表
- IF f_cmp_fifo_warebalc(scid,outwaremx[i].mtrlwareid,False,commit_transaction,arg_msg) = 0 THEN
-
- rslt = 0
- GOTO ext
- END IF
-
- END IF
-
-
-
-
-
- //先进先出法 ,加入进仓批 u_mtrlware_inmx end
-
-
-
-
- NEXT
-
- //检查是否正确生成进仓批
- IF li_if_fifo = 1 THEN
- FOR i = 1 To it_mxbt
-
- IF f_check_mtrlware_inmx(scid, outwaremx[i].mtrlwareid,commit_transaction,arg_msg) = 0 THEN
-
- IF uf_w_cmp_fifo_cb_bill(scid,outwaremx[i].mtrlwareid,False,arg_msg) = 0 THEN //尝试修复
- rslt = 0
- arg_msg = '第' + String(i) + '行 ' + arg_msg
- GOTO ext
- ELSE
- IF f_check_mtrlware_inmx(scid, outwaremx[i].mtrlwareid,commit_transaction,arg_msg) = 0 THEN //再检查一次
- rslt = 0
- arg_msg = '第' + String(i) + '行 ' + arg_msg
- GOTO ext
- END IF
-
- END IF
-
-
-
-
-
-
-
- END IF
-
- NEXT
- END IF
-
-
- END IF
- IF auditing_end(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- IF billname <> "" THEN
- arg_msg = billname + ',' + arg_msg
- END IF
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uf_chk_assemble_qty2 (long arg_scid, long arg_storageid, long arg_outwareid, ref string arg_msg);Int rslt = 1
- Long i,j,k
- Long new_it_mxbt
- Long cur_mxt_pf
- Long ll_SonMtrlid[],temp_ll[]
- String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[],temp_str[]
- Decimal ld_Sonscale[]
- Decimal i_noauditingqty = 0 //已开单未审
- Decimal i_noallocqty = 0 //现库存数
- Decimal i_nowbjmxqty //上级已开单数
- Long cnt
- String ls_mtrlcode,ls_mtrlname
- Decimal ld_compareqty,i_nowwaremxqty
- s_outwaremx temp_outwaremx[],new_outwaremx[] ,new_sonmtrl_outwaremx[],null_outwaremx[] //明细结构数组
- temp_outwaremx = outwaremx
- FOR i = 1 To it_mxbt
- FOR j = 1 To UpperBound(new_outwaremx)
- IF temp_outwaremx[i].mtrlwareid = new_outwaremx[j].mtrlwareid THEN
- new_outwaremx[j].qty = new_outwaremx[j].qty + temp_outwaremx[i].qty
- GOTO nxt1
- END IF
- NEXT
-
- new_it_mxbt++
- new_outwaremx[new_it_mxbt].mtrlwareid = temp_outwaremx[i].mtrlwareid
- new_outwaremx[new_it_mxbt].mtrlid = temp_outwaremx[i].mtrlid
- new_outwaremx[new_it_mxbt].qty = temp_outwaremx[i].qty
- new_outwaremx[new_it_mxbt].status = temp_outwaremx[i].status
- new_outwaremx[new_it_mxbt].woodcode = temp_outwaremx[i].woodcode
- new_outwaremx[new_it_mxbt].pcode = temp_outwaremx[i].pcode
- nxt1:
- NEXT
- FOR i = 1 To UpperBound(new_outwaremx)
- SELECT count(*) INTO :cnt
- FROM u_PrdPF
- Where u_PrdPF.mtrlid = :new_outwaremx[i].mtrlid;
-
- new_sonmtrl_outwaremx = null_outwaremx
- new_it_mxbt = 0
- IF cnt = 0 THEN
- new_it_mxbt = 1
- new_sonmtrl_outwaremx[new_it_mxbt].mtrlwareid = new_outwaremx[i].mtrlwareid
- new_sonmtrl_outwaremx[new_it_mxbt].mtrlid = new_outwaremx[i].mtrlid
- new_sonmtrl_outwaremx[new_it_mxbt].qty = new_outwaremx[i].qty
- new_sonmtrl_outwaremx[new_it_mxbt].status = new_outwaremx[i].status
- new_sonmtrl_outwaremx[new_it_mxbt].woodcode = new_outwaremx[i].woodcode
- new_sonmtrl_outwaremx[new_it_mxbt].pcode = new_outwaremx[i].pcode
- ELSE
- Decimal ld_kkdqty,ld_topUqty,ld_topOcqty
- SELECT u_mtrlware.noallocqty INTO :ld_topOcqty
- FROM u_mtrlware
- where (u_mtrlware.scid = :arg_scid)
- AND ( u_mtrlware.mtrlwareid = :new_outwaremx[i].mtrlwareid) Using commit_transaction;
- IF SQLCA.SQLCODE <> 0 THEN
- ld_topOcqty = 0
- END IF
-
- SELECT isnull(sum(u_outwaremx.uqty),0) INTO :ld_topUqty FROM u_outwaremx INNER join u_outware
- on u_outware.scid = u_outwaremx.scid AND u_outware.outwareid = u_outwaremx.outwareid
- WHERE u_outwaremx.scid = :arg_scid AND
- u_outware.flag = 0 AND
- u_outwaremx.outwareid <> :arg_outwareid
- And ( u_outwaremx.scid = :arg_scid )
- And ( u_outwaremx.mtrlid = :new_outwaremx[i].mtrlid )
- And ( u_outwaremx.status = :new_outwaremx[i].status )
- And ( u_outwaremx.woodcode = :new_outwaremx[i].woodcode )
- And ( u_outwaremx.pcode = :new_outwaremx[i].pcode )
- And ( u_outwaremx.mtrlwareid = :new_outwaremx[i].mtrlwareid )
- Using commit_transaction;
- IF SQLCA.SQLCODE <> 0 THEN
- ld_topUqty = 0
- END IF
-
- ld_kkdqty = new_outwaremx[i].qty - (ld_topOcqty - ld_topUqty )
- IF ld_kkdqty <= 0 THEN CONTINUE
-
- cur_mxt_pf = 1
- DECLARE cur_pf CURSOR FOR
- SELECT u_PrdPF.SonMtrlid,
- u_PrdPF.Sonscale,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode
- FROM u_PrdPF
- Where u_PrdPF.mtrlid = :new_outwaremx[i].mtrlid;
-
- OPEN cur_pf;
- FETCH cur_pf Into :ll_SonMtrlid[cur_mxt_pf],:ld_Sonscale[cur_mxt_pf],:ls_pf_status[cur_mxt_pf],:ls_pf_woodcode[cur_mxt_pf],:ls_pf_pcode[cur_mxt_pf];
- DO WHILE sqlca.SQLCode = 0
- cur_mxt_pf++
- FETCH cur_pf Into :ll_SonMtrlid[cur_mxt_pf],:ld_Sonscale[cur_mxt_pf],:ls_pf_status[cur_mxt_pf],:ls_pf_woodcode[cur_mxt_pf],:ls_pf_pcode[cur_mxt_pf];
- LOOP
- cur_mxt_pf = cur_mxt_pf - 1
- CLOSE cur_pf;
-
- FOR j = 1 To cur_mxt_pf
-
- new_it_mxbt++
- new_sonmtrl_outwaremx[new_it_mxbt].mtrlwareid = 0
- new_sonmtrl_outwaremx[new_it_mxbt].mtrlid = ll_SonMtrlid[j]
- new_sonmtrl_outwaremx[new_it_mxbt].qty = ld_Sonscale[j] * ld_kkdqty
- new_sonmtrl_outwaremx[new_it_mxbt].status = ls_pf_status[j]
- new_sonmtrl_outwaremx[new_it_mxbt].woodcode = ls_pf_woodcode[j]
- new_sonmtrl_outwaremx[new_it_mxbt].pcode = ls_pf_pcode[j]
- NEXT
- END IF
-
- FOR k = 1 To UpperBound(new_sonmtrl_outwaremx)
- SELECT mtrlcode,mtrlname
- INTO :ls_mtrlcode,:ls_mtrlname
- FROM u_mtrldef
- WHERE mtrlid = :new_sonmtrl_outwaremx[k].mtrlid Using commit_transaction;
-
-
- //计算库存数
- SELECT IsNull(sum(u_mtrlware.noallocqty), 0) INTO :i_noallocqty
- 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)
- INNER JOIN u_mtrldef ON (u_mtrlware.mtrlid = u_mtrldef.mtrlid)
- WHERE (u_mtrlware.scid = :arg_scid)
- AND (u_mtrlware.mtrlid = :new_sonmtrl_outwaremx [k].mtrlid)
- AND (u_mtrlware.STATUS = :new_sonmtrl_outwaremx [k].STATUS)
- AND (u_mtrlware.woodcode = :new_sonmtrl_outwaremx [k].woodcode)
- AND (u_mtrlware.pcode = :new_sonmtrl_outwaremx [k].pcode)
- AND (u_mtrlware.mtrlwareid = :new_sonmtrl_outwaremx [k].mtrlwareid OR :new_sonmtrl_outwaremx [k].mtrlwareid = 0) Using commit_transaction;
-
- //计算已开单未审数
- SELECT isnull(sum(u_outwaremx.uqty),0) INTO :i_noauditingqty FROM u_outwaremx INNER join u_outware
- on u_outware.scid = u_outwaremx.scid AND u_outware.outwareid = u_outwaremx.outwareid
- WHERE u_outwaremx.scid = :arg_scid AND
- u_outware.flag = 0 AND
- u_outwaremx.outwareid <> :arg_outwareid
- And ( u_outwaremx.scid = :arg_scid )
- And ( u_outwaremx.mtrlid = :new_sonmtrl_outwaremx[k].mtrlid )
- And ( u_outwaremx.status = :new_sonmtrl_outwaremx[k].status )
- And ( u_outwaremx.woodcode = :new_sonmtrl_outwaremx[k].woodcode )
- And ( u_outwaremx.pcode = :new_sonmtrl_outwaremx[k].pcode )
- And ( u_outwaremx.mtrlwareid = :new_sonmtrl_outwaremx[k].mtrlwareid OR :new_sonmtrl_outwaremx[k].mtrlwareid = 0 )
- Using commit_transaction;
-
- //计算上级已开未审总和
- SELECT ISNULL(SUM(u_PrdPF.Sonscale * u_outwaremx.qty),0) AS sumqty INTO :i_nowbjmxqty
- FROM u_PrdPF
- INNER JOIN u_outwaremx ON u_outwaremx.mtrlid = u_PrdPF.mtrlid
- INNER JOIN u_outware ON u_outware.scid = u_outwaremx.scid
- AND u_outware.outwareid = u_outwaremx.outwareid
- WHERE (u_outware.flag = 0)
- AND (u_PrdPF.SonMtrlid = :new_sonmtrl_outwaremx[k].mtrlid)
- AND (u_PrdPF.STATUS = :new_sonmtrl_outwaremx[k].status)
- AND (u_PrdPF.woodcode = :new_sonmtrl_outwaremx[k].woodcode)
- AND (u_PrdPF.pcode = :new_sonmtrl_outwaremx[k].pcode)
- AND u_outwaremx.scid = :arg_scid
- AND u_outwaremx.outwareid <> :arg_outwareid
- AND u_outwaremx.mtrlwareid <> :new_outwaremx[i].mtrlwareid
- Using commit_transaction;
- IF SQLCA.SQLCODE <> 0 THEN
- i_nowbjmxqty = 0
- END IF
- SELECT sum(TMP.noallocqty * TMP.Sonscale) INTO :i_nowwaremxqty
- FROM (
- SELECT DISTINCT u_mtrlware.scid
- ,u_mtrlware.mtrlwareid
- ,u_mtrlware.noallocqty
- ,u_PrdPF.Sonscale
- FROM u_PrdPF
- INNER JOIN u_outwaremx ON u_outwaremx.mtrlid = u_PrdPF.mtrlid
- INNER JOIN u_outware ON u_outware.scid = u_outwaremx.scid
- AND u_outware.outwareid = u_outwaremx.outwareid
- LEFT OUTER JOIN u_mtrlware ON u_mtrlware.scid = u_outwaremx.scid
- AND u_mtrlware.mtrlwareid = u_outwaremx.mtrlwareid
- WHERE (u_outware.flag = 0)
- AND (u_PrdPF.SonMtrlid = :new_sonmtrl_outwaremx [k].mtrlid)
- AND (u_PrdPF.STATUS = :new_sonmtrl_outwaremx [k].STATUS)
- AND (u_PrdPF.woodcode = :new_sonmtrl_outwaremx [k].woodcode)
- AND (u_PrdPF.pcode = :new_sonmtrl_outwaremx [k].pcode)
- AND u_outwaremx.scid = :arg_scid
- AND u_outwaremx.outwareid <> :arg_outwareid
- AND u_outwaremx.mtrlwareid <> :new_outwaremx [i].mtrlwareid
- ) AS TMP Using commit_transaction;
- IF SQLCA.SQLCODE <> 0 THEN
- i_nowwaremxqty = 0
- END IF
-
- IF ISNULL(i_nowwaremxqty) THEN i_nowwaremxqty = 0
-
- i_nowbjmxqty = i_nowbjmxqty - i_nowwaremxqty
- IF i_nowbjmxqty <= 0 THEN
- i_nowbjmxqty = 0
- END IF
-
- //得出剩余可以开单的数量
- ld_compareqty = i_noallocqty - i_noauditingqty - i_nowbjmxqty
- IF new_sonmtrl_outwaremx[k].qty > ld_compareqty THEN
- arg_msg += "物料:"+ls_mtrlcode + "【"+ls_mtrlname+"】"+",不够可用数冲减:"+"剩余可用数为(包含库存数-已开单未审核-上级占用):"+String(ld_compareqty,"#,##0.00###")+",本次开单数为:"+String(new_sonmtrl_outwaremx[k].qty,"#,##0.00###")+"~r~n"
- END IF
- NEXT
-
- NEXT
- IF arg_msg <> '' THEN
- rslt = 0
- END IF
- RETURN rslt
- end function
- on uo_outware_sale.create
- call super::create
- end on
- on uo_outware_sale.destroy
- call super::destroy
- end on
|