1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763 |
- $PBExportHeader$uo_saletask_ll.sru
- forward
- global type uo_saletask_ll from nonvisualobject
- end type
- type s_saletaskmx from structure within uo_saletask_ll
- end type
- type s_saletaskmx_mx from structure within uo_saletask_ll
- end type
- type s_saletaskmx_in from structure within uo_saletask_ll
- end type
- end forward
- type s_saletaskmx from structure
- long mtrlid
- decimal { 10 } saleqty
- decimal { 10 } plprice
- decimal { 10 } acprice
- string dscrp
- string mtrlcode
- decimal { 10 } fprice
- decimal { 5 } rebate
- string status
- long printid
- string woodcode
- string pcode
- string mtrlcuscode
- string mtrlchangecode
- decimal { 10 } enprice
- string outtype
- decimal { 10 } dftsaleprice
- integer auditflag
- string auditemp
- datetime auditdate
- datetime requiredate
- string pfcode
- string dscrp2
- decimal { 10 } scidprice
- decimal { 10 } inwareqty
- decimal { 10 } usaleqty
- decimal { 10 } uprice
- decimal { 5 } rate
- string unit
- decimal { 5 } capacity
- end type
- type s_saletaskmx_mx from structure
- long mtrlwareid
- decimal { 10 } qty
- end type
- type s_saletaskmx_in from structure
- long mtrlid
- string status
- string woodcode
- string pcode
- string plancode
- string mxdscrp
- decimal { 5 } fprice
- long printid
- decimal { 10 } qty
- long storageid
- end type
- global type uo_saletask_ll from nonvisualobject
- end type
- global uo_saletask_ll uo_saletask_ll
- type variables
- Public ProtectedWrite Long taskid
- Public ProtectedWrite String taskcode
- Public ProtectedWrite DateTime opdate
- Public ProtectedWrite String operator
- Public ProtectedWrite Int status
- Public ProtectedWrite DateTime accomplishdate
- Public ProtectedWrite String permit_emp
- Public ProtectedWrite String last_emp
- Public ProtectedWrite Long ctmint
- Long scid
- Long banktypeid
- Long moneyid
- Decimal damt
- Decimal otheramt
- Decimal mrate
- Int Kind
- Long cusid
- String assign_emp
- DateTime requiredate
- DateTime taskdate
- String freight
- String dscrp
- String dscrp2
- String relcode
- String paytype
- String freight_tele
- String cus_address
- String cus_tele
- String cus_fax
- String upname
- Decimal msttakeamt,takeamt
- Long audit_buildtype
- Transaction commit_transaction //数据commit事务
- Private:
- s_saletaskmx saletaskmx[] //明细结构
- s_saletaskmx_in saletaskmx_in[] //明细结构
- Long it_mxbt_in = 0 //来料加工订单收料明细
- Long it_mxbt = 0 //明细结构数组末指针
- Boolean it_newbegin = True //新建标志
- Boolean it_updatebegin = False //修改标志
- s_saletaskmx_mx taskmx[]
- Long it_mxbt_mx = 0
- Decimal mx_sumqty = 0
- String uo_option_change_status
- String uo_option_change_woodcode
- String uo_option_change_pcode
- Int uo_option_saletask_secaudit
- Int uo_option_if_oa_saletask
- Int uo_option_taskplancode_auto_ll
- Int uo_option_autocreate_buy_cp
- Int uo_option_m_msttake
- Int uo_option_taskaudit_dprice
- Int uo_option_if_msg
- Int uo_option_saletask_fore_secaudit
- Int uo_option_saletask_addware
- Int uo_option_unit_dec
- end variables
- forward prototypes
- public function integer p_reset ()
- public function integer p_clearmx ()
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
- private function integer uof_p_check_dprice (ref string arg_msg)
- public function integer acceptmx_in (long arg_mtrlid, long arg_printid, string arg_mtrlcode, long arg_storageid, decimal arg_qty, string arg_status, string arg_woodcode, string arg_pcode, string arg_plancode, decimal arg_fprice, string arg_mxdscrp, ref string arg_msg)
- public function integer acceptmx (long arg_mtrlid, decimal arg_uqty, string arg_unit, decimal arg_rate, decimal arg_uprice, decimal arg_rebate, string arg_dscrp, string arg_dscrp2, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, string arg_mtrlcuscode, long arg_printid, string arg_outtype, datetime arg_requiredate, decimal arg_scidprice, ref string arg_msg)
- private function integer p_getinfo (long arg_taskid, ref string arg_msg)
- public function integer getinfo (long arg_taskid, ref string arg_msg)
- public function integer addmxcmpl (long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmxcmpl_in (long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancel (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer canceloapermit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updateassignqty (long arg_scid, long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_taskid, ref string arg_msg)
- public function integer trycmplsaletask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer tempstoptask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopsaletask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopmx (long arg_taskid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, ref string arg_msg, boolean arg_commit)
- public function integer salepermit (long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer propermit (long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer trycmptask_fore (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer ddpermit (long arg_taskid, long arg_printid, integer arg_flag, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_cprqplan (long arg_taskid, long arg_printid, long arg_flag, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancelpermit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer checkmxcmpl (long arg_taskid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
- public function integer finishtask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancelpropermit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebqty (long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer updateinwareqty (long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer newbegin ()
- end prototypes
- public function integer p_reset ();//int p_reset()
- //清除对象及其明细
- scid = 0
- taskid = 0
- taskcode = ''
- operator = ''
- status = 0
- damt = 0
- otheramt = 0
- banktypeid = 0
- moneyid = 0
- relcode = ''
- freight_tele = ''
- msttakeamt = 0
- takeamt = 0
- it_newbegin = FALSE
- it_updatebegin = FALSE
- //清除明细
- p_clearmx()
- RETURN 1
- end function
- public function integer p_clearmx ();//INT p_clearmx()
- //清除明细
- it_mxbt=0
- it_mxbt_in=0
- RETURN 1
- end function
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i,j
- Long ls_newtaskid
- DateTime server_datetime
- Long ll_taskid
- String ls_sccode
- String ls_mtrlcuscode
- IF uo_option_taskplancode_auto_ll = -1000 THEN
- arg_msg = '选项:[133]来料加工订单生产批号类型,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(dscrp2) THEN dscrp2 = ''
- IF IsNull(assign_emp) THEN assign_emp = ''
- IF IsNull(arg_operator) THEN arg_operator = ''
- IF IsNull(paytype) THEN paytype = ''
- IF IsNull(relcode) THEN relcode = ''
- IF IsNull(banktypeid) THEN banktypeid = 0
- IF IsNull(moneyid) THEN moneyid = 0
- IF IsNull(damt) THEN damt = 0
- IF IsNull(otheramt) THEN otheramt = 0
- IF IsNull(mrate) THEN mrate = 0
- IF IsNull(Kind) THEN Kind = 0
- IF IsNull(freight) THEN freight = ''
- IF IsNull(freight_tele) THEN freight_tele = ''
- IF IsNull(cus_address) THEN cus_address = ''
- IF IsNull(cus_tele) THEN cus_tele = ''
- IF IsNull(cus_fax) THEN cus_fax = ''
- IF IsNull(upname) THEN upname = ''
- IF IsNull(msttakeamt) THEN msttakeamt = 0
- operator = arg_operator
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以提交"
- GOTO ext
- END IF
- IF Trim(assign_emp) = '' THEN
- rslt = 0
- arg_msg = "请输入订单业务员"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_cust
- Where cusid = :cusid 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
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_banktype
- Where banktypeid = :banktypeid;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询结算方式失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '结算方式不存在'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_currency
- Where moneyid = :moneyid;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询币种失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '币种资料不存在'
- rslt = 0
- GOTO ext
- END IF
- IF mrate = 0 THEN
- arg_msg = '币种汇率错误'
- rslt = 0
- GOTO ext
- END IF
- SELECT Top 1 getdate() INTO :server_datetime FROM u_user USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF f_check_inoutdate(0,taskdate,FALSE,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Date(taskdate) > Date(requiredate) THEN
- arg_msg = '交货日期不能在订货日期前'
- rslt = 0
- GOTO ext
- END IF
- IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
- rslt = 0
- arg_msg = "没有正确销售订单明细内容"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :operator USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- opdate = server_datetime //填写单据建立时间(最近修改时间)
- ////////////////////////////////////////////// //开始区分:新建/更新 处理
- IF taskid = 0 THEN //新建
- ll_taskid = f_sys_scidentity(0,"u_saletask_ll","taskid",arg_msg,TRUE,id_sqlca)
- IF ll_taskid <= 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
-
-
- taskcode = getid(0,ls_sccode + 'SJ',Date(server_datetime),FALSE,commit_transaction)
- IF taskcode = "err" THEN
- taskcode = ''
- rslt = 0
- arg_msg = "无法获取来料加工订单编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_saletask_ll
- ( scid,
- taskcode,
- cusid,
- requiredate,
- status,
- opemp,
- assign_emp,
- permit_emp,
- dscrp,
- dscrp2,
- opdate,
- taskid,
- damt,
- otheramt,
- freight,
- taskdate,
- banktypeid,
- moneyid,
- relcode,
- paytype,
- freight_tele,
- cus_address,
- cus_tele,
- cus_fax,
- mrate,
- upname,
- msttakeamt)
- VALUES ( :scid,
- :taskcode,
- :cusid,
- :requiredate,
- :status,
- :operator,
- :assign_emp,
- :permit_emp,
- :dscrp,
- :dscrp2,
- :opdate,
- :ll_taskid,
- :damt,
- :otheramt,
- :freight,
- :taskdate,
- :banktypeid,
- :moneyid,
- :relcode,
- :paytype,
- :freight_tele,
- :cus_address,
- :cus_tele,
- :cus_fax,
- :mrate,
- :upname,
- :msttakeamt) USING commit_transaction ;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入销售订单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //读取新taskid
- taskid = ll_taskid
-
- FOR i = 1 TO it_mxbt
- ls_mtrlcuscode = ''
- CHOOSE CASE uo_option_taskplancode_auto_ll
- CASE 1
- ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
- CASE 2
- ls_mtrlcuscode = taskcode
- CASE 3
- ls_mtrlcuscode = relcode
- CASE ELSE
- arg_msg = '错误的生产批号,管理员请在系统选项设置先设定好订单批号模式'
- rslt = 0
- GOTO ext
- END CHOOSE
-
- INSERT INTO u_saletaskmx_ll
- ( scid,
- saleqty,
- price,
- mtrlid,
- taskid,
- mxdscrp,
- mxdscrp2,
- fprice,
- rebate,
- status,
- printid,
- woodcode,
- pcode,
- mtrlcuscode,
- enprice,
- outtypestr,
- dftsaleprice,
- requiredate,
- pfcode,
- scidprice,
- usaleqty,
- unit,
- rate)
- VALUES (:scid,
- :saletaskmx[i].saleqty,
- :saletaskmx[i].acprice,
- :saletaskmx[i].mtrlid,
- :ll_taskid,
- :saletaskmx[i].dscrp,
- :saletaskmx[i].dscrp2,
- :saletaskmx[i].fprice,
- :saletaskmx[i].rebate,
- :saletaskmx[i].status,
- :saletaskmx[i].printid,
- :saletaskmx[i].woodcode,
- :saletaskmx[i].pcode,
- :ls_mtrlcuscode,
- :saletaskmx[i].enprice,
- :saletaskmx[i].outtype,
- :saletaskmx[i].dftsaleprice,
- :saletaskmx[i].requiredate,
- :saletaskmx[i].pfcode,
- :saletaskmx[i].scidprice,
- :saletaskmx[i].usaleqty,
- :saletaskmx[i].unit,
- :saletaskmx[i].rate) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- FOR j = 1 TO it_mxbt_in
- INSERT INTO u_saletaskmx_in
- (scid,
- taskid,
- printid,
- mtrlid,
- plancode,
- status,
- woodcode,
- pcode,
- qty,
- fprice,
- mxdscrp,
- storageid)
- VALUES
- (:scid,
- :ll_taskid,
- :saletaskmx_in[j].printid,
- :saletaskmx_in[j].mtrlid,
- :saletaskmx_in[j].plancode,
- :saletaskmx_in[j].status,
- :saletaskmx_in[j].woodcode,
- :saletaskmx_in[j].pcode,
- :saletaskmx_in[j].qty,
- :saletaskmx_in[j].fprice,
- :saletaskmx_in[j].mxdscrp,
- :saletaskmx_in[j].storageid) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入收料明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- ELSE //////////////////////////////////////////////// //更新
- UPDATE u_saletask_ll
- SET kind = :Kind,
- cusid = :cusid,
- requiredate = :requiredate,
- assign_emp = :assign_emp,
- dscrp = :dscrp,
- dscrp2 = :dscrp2,
- moddate = :opdate,
- modemp = :operator,
- damt = :damt,
- otheramt = :otheramt,
- freight = :freight,
- taskdate = :taskdate,
- banktypeid = :banktypeid,
- moneyid = :moneyid,
- relcode = :relcode,
- paytype = :paytype,
- freight_tele = :freight_tele,
- cus_address = :cus_address,
- cus_tele = :cus_tele,
- cus_fax = :cus_fax,
- mrate = :mrate,
- upname = :upname,
- msttakeamt = :msttakeamt
- WHERE taskid = :taskid
- AND scid = :scid
- AND status = 0 USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 OR commit_transaction.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新来料加工订单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //删除原有明细
- DELETE FROM u_saletaskmx_ll
- Where u_saletaskmx_ll.taskid = :taskid AND u_saletaskmx_ll.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_mxbt
- ls_mtrlcuscode = ''
- CHOOSE CASE uo_option_taskplancode_auto_ll
- CASE 1
- ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
- CASE 2
- ls_mtrlcuscode = taskcode
- CASE 3
- ls_mtrlcuscode = relcode
- CASE ELSE
- arg_msg = '错误的生产批号,管理员请先设定好订单批号模式'
- rslt = 0
- GOTO ext
- END CHOOSE
- INSERT INTO u_saletaskmx_ll
- ( scid,
- taskid,
- mtrlid,
- saleqty,
- price,
- mxdscrp,
- mxdscrp2,
- fprice,
- rebate,
- status,
- printid,
- woodcode,
- pcode,
- mtrlcuscode,
- enprice,
- outtypestr,
- dftsaleprice,
- requiredate,
- pfcode,
- scidprice,
- usaleqty,
- unit,
- rate)
- VALUES (:scid,
- :taskid,
- :saletaskmx[i].mtrlid,
- :saletaskmx[i].saleqty,
- :saletaskmx[i].acprice,
- :saletaskmx[i].dscrp,
- :saletaskmx[i].dscrp2,
- :saletaskmx[i].fprice,
- :saletaskmx[i].rebate,
- :saletaskmx[i].status,
- :saletaskmx[i].printid,
- :saletaskmx[i].woodcode,
- :saletaskmx[i].pcode,
- :ls_mtrlcuscode,
- :saletaskmx[i].enprice,
- :saletaskmx[i].outtype,
- :saletaskmx[i].dftsaleprice,
- :saletaskmx[i].requiredate,
- :saletaskmx[i].pfcode,
- :saletaskmx[i].scidprice,
- :saletaskmx[i].usaleqty,
- :saletaskmx[i].unit,
- :saletaskmx[i].rate
- ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
-
-
- DELETE FROM u_saletaskmx_in
- Where u_saletaskmx_in.taskid = :taskid AND scid = :scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有收料明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- FOR j = 1 TO it_mxbt_in
- INSERT INTO u_saletaskmx_in
- (scid,
- taskid,
- printid,
- mtrlid,
- plancode,
- status,
- woodcode,
- pcode,
- qty,
- fprice,
- mxdscrp,
- storageid)
- VALUES
- (:scid,
- :taskid,
- :saletaskmx_in[j].printid,
- :saletaskmx_in[j].mtrlid,
- :saletaskmx_in[j].plancode,
- :saletaskmx_in[j].status,
- :saletaskmx_in[j].woodcode,
- :saletaskmx_in[j].pcode,
- :saletaskmx_in[j].qty,
- :saletaskmx_in[j].fprice,
- :saletaskmx_in[j].mxdscrp,
- :saletaskmx_in[j].storageid) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入收料明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- p_clearmx()
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- private function integer uof_p_check_dprice (ref string arg_msg);Int rslt = 1
- Long ll_i
- String ls_mtrlcode
- Decimal ld_dftsaleprice
- IF uo_option_taskaudit_dprice = -1000 THEN
- arg_msg = '选项:[051]销售订单审核前必须有定价,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_taskaudit_dprice = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- FOR ll_i = 1 TO it_mxbt
- ls_mtrlcode = saletaskmx[ll_i].mtrlcode
- ld_dftsaleprice = saletaskmx[ll_i].dftsaleprice
-
- IF saletaskmx[ll_i].outtype <> '' THEN CONTINUE
-
- IF ld_dftsaleprice = 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+'未有定价,请检查'
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer acceptmx_in (long arg_mtrlid, long arg_printid, string arg_mtrlcode, long arg_storageid, decimal arg_qty, string arg_status, string arg_woodcode, string arg_pcode, string arg_plancode, decimal arg_fprice, string arg_mxdscrp, ref string arg_msg);Int rslt = 1
- Long cnt = 0,ls_i
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- IF uo_option_change_status = '-1000' THEN
- arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_change_woodcode = '-1000' THEN
- arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_change_pcode = '-1000' THEN
- arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_fprice) THEN arg_fprice = 0
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_plancode) THEN arg_plancode = ''
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF IsNull(arg_storageid) THEN arg_storageid = 0
- IF arg_mtrlid = 0 OR arg_qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF arg_storageid = 0 THEN
- rslt = 0
- arg_msg = '请选择仓库,第'+String(arg_printid)+'行'
- GOTO ext
- END IF
- IF f_check_status(1,arg_status) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能'+uo_option_change_status+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_status
- GOTO ext
- END IF
- IF f_check_status(2,arg_woodcode) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能'+uo_option_change_woodcode+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_woodcode
- GOTO ext
- END IF
- IF f_check_status(3,arg_pcode) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能'+uo_option_change_pcode+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_pcode
- GOTO ext
- END IF
- IF arg_fprice < 0 THEN
- rslt = 0
- arg_msg = "物料编码:" + String(arg_mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- FOR ls_i = 1 TO it_mxbt_in //合并重复项
- IF saletaskmx_in[ls_i].mtrlid = arg_mtrlid AND &
- saletaskmx_in[ls_i].status = arg_status AND &
- saletaskmx_in[ls_i].pcode = arg_pcode AND &
- saletaskmx_in[ls_i].plancode = arg_plancode AND &
- saletaskmx_in[ls_i].woodcode = arg_woodcode and &
- saletaskmx_in[ls_i].storageid = arg_storageid THEN
-
- saletaskmx_in[ls_i].qty = saletaskmx_in[ls_i].qty+arg_qty
- rslt = 1
- GOTO ext
- END IF
- NEXT
- //写入内容
- it_mxbt_in++
- saletaskmx_in[it_mxbt_in].mtrlid = arg_mtrlid
- saletaskmx_in[it_mxbt_in].qty = arg_qty
- saletaskmx_in[it_mxbt_in].fprice = arg_fprice
- saletaskmx_in[it_mxbt_in].mxdscrp = arg_mxdscrp
- saletaskmx_in[it_mxbt_in].status = arg_status
- saletaskmx_in[it_mxbt_in].printid = arg_printid
- saletaskmx_in[it_mxbt_in].woodcode = arg_woodcode
- saletaskmx_in[it_mxbt_in].pcode = arg_pcode
- saletaskmx_in[it_mxbt_in].plancode = arg_plancode
- saletaskmx_in[it_mxbt_in].storageid = arg_storageid
- ext:
- IF rslt = 0 THEN p_clearmx()
- RETURN rslt
- end function
- public function integer acceptmx (long arg_mtrlid, decimal arg_uqty, string arg_unit, decimal arg_rate, decimal arg_uprice, decimal arg_rebate, string arg_dscrp, string arg_dscrp2, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, string arg_mtrlcuscode, long arg_printid, string arg_outtype, datetime arg_requiredate, decimal arg_scidprice, ref string arg_msg);Int rslt = 1
- Long cnt = 0,ls_i
- Decimal ld_dftsaleprice
- Decimal ld_planprice
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_uqty) THEN arg_uqty = 0
- IF IsNull(arg_uprice) THEN arg_uprice = 0
- IF IsNull(arg_rebate) THEN arg_rebate = 0
- IF arg_rebate = 0 THEN arg_rebate = 1
- IF IsNull(arg_dscrp) THEN arg_dscrp = ''
- IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_outtype) THEN arg_outtype = ''
- IF IsNull(arg_mtrlcuscode) THEN arg_mtrlcuscode = ''
- IF IsNull(arg_dscrp2) THEN arg_dscrp2 = ''
- IF IsNull(arg_unit) THEN arg_unit = ''
- IF IsNull(arg_rate) THEN arg_rate = 1
- IF arg_rate = 0 THEN arg_rate = 1
- IF IsNull(arg_uprice) THEN arg_uprice = 0
- IF uo_option_change_status = '-1000' THEN
- arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_change_woodcode = '-1000' THEN
- arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_change_pcode = '-1000' THEN
- arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_m_msttake = -1000 THEN
- arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_unit_dec = -1000 THEN
- arg_msg = '选项:[023]辅助单位转换库存单位小数位,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_mtrlid = 0 OR arg_uqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF f_check_status(1,arg_status) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能"+uo_option_change_status+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_status
- GOTO ext
- END IF
- IF f_check_status(2,arg_woodcode) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能"+uo_option_change_woodcode+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_woodcode
- GOTO ext
- END IF
- IF f_check_status(3,arg_pcode) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能"+uo_option_change_pcode+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_pcode
- GOTO ext
- END IF
- IF arg_uprice * arg_rebate < 0 THEN
- rslt = 0
- arg_msg = "产品:" + String(arg_mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- IF arg_rebate <= 0 THEN
- arg_msg = '折扣错误,请检查'
- rslt = 0
- GOTO ext
- END IF
- String ls_pfcode
- ls_pfcode = f_get_dft_pf(arg_mtrlid)
- //检查物料id
- Int li_statusflag
- Decimal ld_capacity,ld_capacity_zj
- s_mtrlcfg_expr s_pz[]
- String ls_status_zj
- long ll_i
- SELECT planprice,statusflag,capacity
- INTO :ld_planprice,:li_statusflag,:ld_capacity
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,产品计划价"
- GOTO ext
- END IF
- IF li_statusflag = 2 AND Trim(arg_status) = '' THEN
- rslt = 0
- arg_msg = '第'+String(arg_printid)+'行,产品:'+arg_mtrlcode+' 属于组合配置类型,但没有输入配置,请检查'
- GOTO ext
- END IF
- //IF li_statusflag = 2 THEN
- // ld_capacity = 0
- // f_checkpz(arg_status,s_pz[])
- // FOR ll_i = 1 TO UpperBound(s_pz)
- // ls_status_zj = s_pz[ll_i].cfgname
- //
- // SELECT capacity
- // INTO :ld_capacity_zj
- // FROM u_mtrl_configure
- // WHERE mtrlid = :arg_mtrlid
- // AND Name = :ls_status_zj;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "查询子件 "+ls_status_zj+" 产能参数操作失败"
- // GOTO ext
- // END IF
- //
- // ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_i].qty)
- //
- // NEXT
- //
- //END IF
- ld_dftsaleprice = 0
- f_get_defsaleprice(cusid,arg_mtrlid,arg_status,arg_pcode,arg_woodcode,moneyid,ld_dftsaleprice)
- //写入内容
- it_mxbt++
- saletaskmx[it_mxbt].dftsaleprice = ld_dftsaleprice
- saletaskmx[it_mxbt].mtrlid = arg_mtrlid
- saletaskmx[it_mxbt].usaleqty = arg_uqty
- saletaskmx[it_mxbt].saleqty = Round(arg_uqty * arg_rate,uo_option_unit_dec)
- saletaskmx[it_mxbt].plprice = ld_planprice
- saletaskmx[it_mxbt].dscrp = arg_dscrp
- saletaskmx[it_mxbt].dscrp2 = arg_dscrp2
- saletaskmx[it_mxbt].mtrlcode = arg_mtrlcode
- saletaskmx[it_mxbt].status = arg_status
- saletaskmx[it_mxbt].printid = arg_printid
- saletaskmx[it_mxbt].woodcode = arg_woodcode
- saletaskmx[it_mxbt].pcode = arg_pcode
- saletaskmx[it_mxbt].mtrlcuscode = arg_mtrlcuscode
- saletaskmx[it_mxbt].unit = arg_unit
- saletaskmx[it_mxbt].rate = arg_rate
- //saletaskmx[it_mxbt].uprice = arg_uprice
- saletaskmx[it_mxbt].enprice = arg_uprice // * arg_rebate//Round((arg_uprice * arg_uqty)/(Round(arg_uqty * arg_rate,uo_option_unit_dec)),10)
- saletaskmx[it_mxbt].rebate = arg_rebate
- saletaskmx[it_mxbt].fprice = arg_uprice * mrate / arg_rate
- saletaskmx[it_mxbt].acprice = saletaskmx[it_mxbt].fprice * arg_rebate
- saletaskmx[it_mxbt].scidprice = arg_scidprice
- saletaskmx[it_mxbt].outtype = arg_outtype
- saletaskmx[it_mxbt].requiredate = arg_requiredate
- saletaskmx[it_mxbt].pfcode = ls_pfcode
- IF uo_option_m_msttake = 1 THEN //使用多币种
- msttakeamt = msttakeamt + arg_uprice * arg_uqty * arg_rebate
- ELSE // 系统不使用多币种,转换为人民币
- msttakeamt = msttakeamt + arg_uprice * arg_uqty * arg_rebate * mrate
- END IF
- ext:
- IF rslt = 0 THEN p_clearmx()
- RETURN rslt
- end function
- private function integer p_getinfo (long arg_taskid, ref string arg_msg);Int rslt = 1
- SELECT scid,
- taskid,
- TaskCode,
- kind,
- CusID,
- requiredate,
- accomplishdate,
- Status,
- Opemp,
- Assign_Emp,
- Permit_Emp,
- Dscrp,
- Dscrp2,
- opdate,
- damt,
- otheramt,
- freight,
- taskdate,
- banktypeid ,
- moneyid,
- relcode,
- paytype,
- freight_tele,
- cus_address,
- cus_tele,
- cus_fax,
- mrate,
- upname,
- ctmint,
- msttakeamt,
- takeamt
- INTO :scid,
- :taskid,
- :TaskCode,
- :Kind,
- :CusID,
- :requiredate,
- :accomplishdate,
- :Status,
- :Operator,
- :Assign_Emp,
- :Permit_Emp,
- :Dscrp,
- :Dscrp2,
- :opdate ,
- :damt,
- :otheramt,
- :freight,
- :taskdate,
- :banktypeid,
- :moneyid,
- :relcode,
- :paytype,
- :freight_tele,
- :cus_address,
- :cus_tele,
- :cus_fax,
- :mrate,
- :upname,
- :ctmint,
- :msttakeamt,
- :takeamt
- FROM u_SaleTask_ll
- Where u_SaleTask_ll.taskid = :arg_taskid
- USING commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询订单内容失败(错误来料加工订单唯一码)'
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer getinfo (long arg_taskid, ref string arg_msg);//getinfo(long arg_taskid,string arg_msg)
- //0 失败 1成功
- Int rslt = 1,i = 1,j = 1 ,no_mxcheck = 0
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_inwaermx CURSOR FOR
- SELECT u_saletaskmx_ll.mtrlid,
- u_saletaskmx_ll.saleqty,
- u_saletaskmx_ll.price,
- u_saletaskmx_ll.mxdscrp,
- u_saletaskmx_ll.mxdscrp2,
- u_mtrldef.mtrlcode,
- u_saletaskmx_ll.fprice,
- u_saletaskmx_ll.rebate,
- u_saletaskmx_ll.status,
- u_saletaskmx_ll.printid,
- u_saletaskmx_ll.woodcode,
- u_saletaskmx_ll.pcode,
- u_saletaskmx_ll.mtrlcuscode,
- u_saletaskmx_ll.enprice,
- u_saletaskmx_ll.outtypestr,
- u_saletaskmx_ll.dftsaleprice,
- u_saletaskmx_ll.requiredate,
- u_saletaskmx_ll.pfcode,
- u_saletaskmx_ll.scidprice
- FROM u_saletaskmx_ll,u_mtrldef
- WHERE u_saletaskmx_ll.taskid = :arg_taskid AND
- u_saletaskmx_ll.mtrlid = u_mtrldef.mtrlid
- USING commit_transaction;
-
- OPEN cur_inwaermx;
- FETCH cur_inwaermx INTO :saletaskmx[i].mtrlid,:saletaskmx[i].saleqty,
- :saletaskmx[i].acprice,:saletaskmx[i].dscrp,:saletaskmx[i].dscrp2,
- :saletaskmx[i].mtrlcode,:saletaskmx[i].fprice,
- :saletaskmx[i].rebate,:saletaskmx[i].status,
- :saletaskmx[i].printid,:saletaskmx[i].woodcode,
- :saletaskmx[i].pcode,:saletaskmx[i].mtrlcuscode,
- :saletaskmx[i].enprice,:saletaskmx[i].outtype,
- :saletaskmx[i].dftsaleprice,
- :saletaskmx[i].requiredate,
- :saletaskmx[i].pfcode,:saletaskmx[i].scidprice;
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_inwaermx INTO :saletaskmx[i].mtrlid,:saletaskmx[i].saleqty,
- :saletaskmx[i].acprice,:saletaskmx[i].dscrp,:saletaskmx[i].dscrp2,
- :saletaskmx[i].mtrlcode,:saletaskmx[i].fprice,
- :saletaskmx[i].rebate,:saletaskmx[i].status,
- :saletaskmx[i].printid,:saletaskmx[i].woodcode,
- :saletaskmx[i].pcode,:saletaskmx[i].mtrlcuscode,
- :saletaskmx[i].enprice,:saletaskmx[i].outtype,
- :saletaskmx[i].dftsaleprice,
- :saletaskmx[i].requiredate,
- :saletaskmx[i].pfcode,:saletaskmx[i].scidprice;
- LOOP
- CLOSE cur_inwaermx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_saletaskmx_ll
- Where u_saletaskmx_ll.taskid = :arg_taskid
- 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
- it_mxbt = i - 1
- //读取来料加工订单收料明细
- //用游标读取明细
- DECLARE cur_saletaskmx_in CURSOR FOR
- SELECT u_saletaskmx_in.mtrlid,
- u_saletaskmx_in.qty,
- u_saletaskmx_in.fprice,
- u_saletaskmx_in.mxdscrp,
- u_saletaskmx_in.status,
- u_saletaskmx_in.printid,
- u_saletaskmx_in.woodcode,
- u_saletaskmx_in.pcode,
- u_saletaskmx_in.plancode,
- u_saletaskmx_in.storageid
- FROM u_saletaskmx_in
- WHERE u_saletaskmx_in.taskid = :arg_taskid
- USING commit_transaction;
- OPEN cur_saletaskmx_in;
- FETCH cur_saletaskmx_in INTO :saletaskmx_in[j].mtrlid,:saletaskmx_in[j].qty,
- :saletaskmx_in[j].fprice,:saletaskmx_in[j].mxdscrp,
- :saletaskmx_in[j].status,:saletaskmx_in[j].printid,:saletaskmx_in[j].woodcode,
- :saletaskmx_in[j].pcode,:saletaskmx_in[j].plancode,:saletaskmx_in[j].storageid;
- DO WHILE sqlca.SQLCode = 0
- j++
- FETCH cur_saletaskmx_in INTO :saletaskmx_in[j].mtrlid,:saletaskmx_in[j].qty,
- :saletaskmx_in[j].fprice,:saletaskmx_in[j].mxdscrp,
- :saletaskmx_in[j].status,:saletaskmx_in[j].printid,:saletaskmx_in[j].woodcode,
- :saletaskmx_in[j].pcode,:saletaskmx_in[j].plancode,:saletaskmx_in[j].storageid;
- LOOP
- CLOSE cur_saletaskmx_in;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_saletaskmx_in
- Where u_saletaskmx_in.taskid = :arg_taskid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,销售订单明细数量"
- GOTO ext
- END IF
- IF j <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,销售订单明细"
- GOTO ext
- END IF
- it_mxbt_in = j - 1
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer addmxcmpl (long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 AND status <> 5 THEN
- rslt = 0
- IF status <> 1 THEN
- arg_msg = "销售订单只有在进行状态下才可以执行进仓"
- ELSEIF status <> 5 THEN
- arg_msg = "销售订单只有在完成状态下才可以撤消进仓"
- END IF
- GOTO ext
- END IF
- Decimal ls_usaleqty,ls_consignedqty
- String ls_mtrlcode
- SELECT u_saletaskmx_ll.usaleqty,
- u_saletaskmx_ll.consignedqty,
- u_mtrldef.mtrlcode
- INTO :ls_usaleqty,
- :ls_consignedqty,
- :ls_mtrlcode
- FROM u_saletaskmx_ll ,u_mtrldef
- WHERE ( u_saletaskmx_ll.taskid = :arg_taskid ) AND
- ( u_saletaskmx_ll.printid = :arg_printid ) AND
- ( u_saletaskmx_ll.stopflag = 0 ) AND
- ( u_saletaskmx_ll.mtrlid = u_mtrldef.mtrlid) USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品编码["+ls_mtrlcode+"]导致查询销售订单已完成数量操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ls_usaleqty < ls_consignedqty+arg_addqty THEN
- rslt = 0
- arg_msg = "产品["+ls_mtrlcode+"]的未完成数量只有"+String(ls_usaleqty - ls_consignedqty,'#,##0.0#')+",不能出仓"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- UPDATE u_saletaskmx_ll
- SET consignedqty = consignedqty +:arg_addqty
- WHERE ( u_saletaskmx_ll.taskid = :arg_taskid ) AND
- ( u_saletaskmx_ll.printid = :arg_printid ) AND
- ( u_saletaskmx_ll.stopflag = 0 ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致销售订单完成数量操作失败"+"~n"+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer addmxcmpl_in (long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 AND status <> 5 THEN
- rslt = 0
- IF status <> 1 THEN
- ARG_MSG = "销售订单只有在进行状态下才可以执行收料进仓"
- ELSEIF status <> 5 THEN
- ARG_MSG = "销售订单只有在完成状态下才可以撤消收料进仓"
- END IF
- GOTO ext
- END IF
- Decimal ls_SaleQty,ls_consignedQty
- String ls_mtrlcode
- SELECT u_SaleTaskMx_in.Qty,
- u_SaleTaskMx_in.consignedQty,
- u_mtrldef.mtrlcode
- INTO :ls_SaleQty,
- :ls_consignedQty,
- :ls_mtrlcode
- FROM u_SaleTaskMx_in ,u_mtrldef
- WHERE ( u_SaleTaskMx_in.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx_in.printid = :arg_printid ) and
- ( u_SaleTaskMx_in.mtrlid = u_mtrldef.mtrlid) USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误产品编码["+ls_mtrlcode+"]导致查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_SaleQty < ls_consignedQty+arg_addqty THEN
- rslt = 0
- ARG_MSG = "产品["+ls_mtrlcode+"]的未完成收料数量只有"+String(ls_SaleQty - ls_consignedQty,'#,##0.0#')+",不能出仓"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- UPDATE u_SaleTaskMx_in
- SET consignedQty = consignedQty +:arg_addqty
- WHERE ( u_SaleTaskMx_in.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx_in.printid = :arg_printid )
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误产品唯一码导致销售订单收料完成数量操作失败"+"~n"+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit and rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer cancel (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 0 THEN
- rslt = 0
- arg_msg = "订单已经审核,不可以删除"
- GOTO ext
- END IF
- //IF sys_option_if_OA = 1 AND audit_buildtype = 0 THEN
- // IF f_check_if_oaflow( arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- DELETE FROM u_saletask_ll
- Where u_saletask_ll.taskid = :arg_taskid
- USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除来料加工订单操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- DELETE FROM u_saletaskmx_ll
- Where taskid = :arg_taskid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除来料加工订单发货明细操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- DELETE FROM u_SaleTaskMx_in
- Where taskid = :arg_taskid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除来料加工订单收料明细操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- IF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- ext:
- p_reset()
- Return (rslt)
- end function
- public function integer canceloapermit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//相关OA公文被否决时调用
- Int rslt = 1,cnt = 0
- DateTime nulldate
- Decimal ls_consignedQty
- SetNull(nulldate)
- IF uo_option_saletask_secaudit = -1000 THEN
- arg_msg = '选项:[035]销售订单使用二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- ARG_MSG = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF NOT (uo_option_saletask_secaudit = 1 AND uo_option_if_oa_saletask = 1) THEN
- rslt = 0
- ARG_MSG = '系统设置没有使用OA审批流程,请联系管理员'
- GOTO ext
- END IF
- IF Status <> 4 THEN
- rslt = 0
- ARG_MSG = "订单只有在已待生产审核状态才可以执行撤消审核,请核对"
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE scid = :scid
- AND taskid = :arg_taskid
- AND ordertype = 2
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询销售订单排产数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已经有相关生产计划,不可以撤消审核"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware_ll,u_outwaremx_ll
- WHERE ( u_outware_ll.outwareid = u_outwaremx_ll.outwareid ) AND
- ( u_outwaremx_ll.relid = :arg_taskid )
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询销售订单发货数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已经有相关出仓单据,不可以撤消审核"
- GOTO ext
- END IF
- SELECT sum(u_saletaskmx_ll.consignedQty)
- INTO :ls_consignedQty
- FROM u_saletaskmx_ll
- WHERE ( u_saletaskmx_ll.TaskID = :arg_taskid ) AND
- ( u_saletaskmx_ll.stopflag = 0 ) USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_consignedQty > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已有完成数量,不能撤审"
- GOTO ext
- END IF
- UPDATE u_SaleTask_ll
- SET Status = 0,
- permit_emp = '',
- permit_date = :nulldate
- WHERE TaskID = :arg_taskid
- AND status = 4
- 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
- //默认订单调度
- Long i
- FOR i = 1 TO it_mxbt
- IF p_cprqplan(arg_taskid,saletaskmx[i].printid,0,saletaskmx[i].saleqty,ARG_MSG,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer updateassignqty (long arg_scid, long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Dec ld_SaleQty,ld_AssignQty
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- arg_msg = '订单未审核,不能更新!'
- rslt = 0
- GOTO ext
- END IF
- SELECT SaleQty,
- AssignQty
- INTO :ld_SaleQty,
- :ld_AssignQty
- FROM u_SaleTaskMx_ll
- WHERE taskid = :arg_taskid AND
- printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询销售订单已排产数量失败!'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ld_SaleQty - ld_AssignQty < arg_qty THEN
- arg_msg = '排产数量大于待生产数!'
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_SaleTaskMx_ll
- SET AssignQty = AssignQty + :arg_qty
- WHERE taskid = :arg_taskid AND
- printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新排产数失败>>'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- ELSEIF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer updatebegin (long arg_taskid, ref string arg_msg);Long rslt = 1,CNT = 0
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 0 THEN
- rslt = 0
- arg_msg = '已经处于审核或完成等状态,不可以修改,如果订单未完成并要修改请先撤销审核'
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask = 1 AND audit_buildtype = 0 THEN
- IF f_check_if_oaflow(scid,arg_taskid,6,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- it_newbegin = FALSE
- it_updatebegin = TRUE
- p_clearmx() //清除明细
- msttakeamt = 0
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer trycmplsaletask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0,ll_status
- DateTime null_dt
- SetNull(null_dt)
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 AND status <> 5 THEN
- rslt = 0
- IF status <> 1 THEN
- arg_msg = "销售订单只有在进行状态下才可以执行设完成状态"
- ELSEIF status <> 5 THEN
- arg_msg = "销售订单只有在完成状态下才可以执行撤消完成状态"
- END IF
- GOTO ext
- END IF
- Decimal ls_zerook
- Boolean if_finish
- if_finish = TRUE
- DECLARE zero_cur CURSOR FOR
- SELECT u_saletaskmx_ll.usaleqty - u_saletaskmx_ll.consignedqty
- FROM u_saletaskmx_ll
- WHERE ( u_saletaskmx_ll.taskid = :arg_taskid ) AND
- ( u_saletaskmx_ll.stopflag = 0 )
- USING commit_transaction ;
-
- OPEN zero_cur;
- FETCH zero_cur INTO :ls_zerook;
- DO WHILE commit_transaction.SQLCode = 0
- IF if_finish THEN
- IF ls_zerook > 0 THEN if_finish = FALSE
- END IF
- FETCH zero_cur INTO :ls_zerook;
- LOOP
- CLOSE zero_cur;
- IF status = 1 AND if_finish THEN
- UPDATE u_saletask_ll
- SET status = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_saletask_ll.taskid = :arg_taskid )
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致销售订单完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- END IF
- IF status = 5 AND NOT if_finish THEN
- UPDATE u_saletask_ll
- SET status = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- WHERE ( u_saletask_ll.taskid = :arg_taskid )
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致销售订单撤消完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer tempstoptask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 AND Status <> 2 THEN
- rslt = 0
- ARG_MSG = "订单只有在进行状态或暂停状态才可以执行暂停/取消暂停操作"
- GOTO ext
- END IF
- IF Status = 1 THEN
- UPDATE u_SaleTask_ll
- SET Status = 2,stopemp = :publ_operator
- Where TaskID = :arg_taskid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致暂停销售订单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- UPDATE u_SaleTask_ll
- SET Status = 1,stopemp = ''
- Where TaskID = :arg_taskid
- USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致取消暂停销售订单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer stopsaletask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "订单只有在进行状态才可以执行终止,请核对"
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask = 1 AND audit_buildtype = 0 THEN
- IF f_check_if_oaflow(scid,arg_taskid,6,ARG_MSG ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- UPDATE u_SaleTask_ll
- SET Status = 3,
- accomplishdate = getdate() ,
- stopemp = :publ_operator
- WHERE TaskID = :arg_taskid
- USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致终止销售订单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer stopmx (long arg_taskid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, ref string arg_msg, boolean arg_commit);Int rslt = 1
- Int li_flag,li_bjflag
- string ls_outtype
- DateTime null_dt
- Decimal ld_notconsignedqty
- SetNull(null_dt)
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- arg_msg = '订单只能在进行状态下才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT stopflag,outtypestr INTO :li_flag,:ls_outtype
- FROM u_saletaskmx_ll
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'中止标记失败'
- rslt = 0
- GOTO ext
- END IF
- IF arg_flag = 0 THEN
- IF li_flag = 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'还未中止,不能取消中止'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF li_flag = 1 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已中止,不能重复中止'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_flag = 1 THEN
- SELECT u_saletaskmx_ll.usaleQty - u_saletaskmx_ll.consignedqty
- INTO :ld_notconsignedqty
- FROM u_saletaskmx_ll
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_notconsignedqty <= 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已完成收货,不能中止'
- rslt = 0
- GOTO ext
- END IF
-
- if ls_outtype = '补件' and li_bjflag = 1 then
- arg_msg = '该明细内容为补件明细,并已审核,不能中止'
- rslt = 0
- goto ext
- end if
- END IF
- IF arg_flag = 0 THEN
- UPDATE u_saletaskmx_ll
- SET stopflag = 0,
- stopemp = '',
- stopdate = :null_dt,
- stopreason = ''
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid;
- ELSE
- UPDATE u_saletaskmx_ll
- SET stopflag = 1,
- stopemp = :publ_operator,
- stopdate = getdate(),
- stopreason = :arg_stopreason
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid;
- END IF
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'中止标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF trycmplsaletask(arg_taskid,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_commit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer salepermit (long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- IF uo_option_saletask_secaudit = -1000 THEN
- arg_msg = '选项:[035]销售订单使用二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_msg = -1000 THEN
- arg_msg = '选项:[044]销售订单使用消息确认,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_saletask_addware = -1000 THEN
- arg_msg = '选项:[039]销售订单审核自动加0库存,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 0 THEN
- rslt = 0
- arg_msg = "订单已经审核或已作其它处理,操作取消"
- GOTO ext
- END IF
- //IF sys_option_if_oa = 1 AND audit_buildtype = 0 THEN
- // IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- IF uof_p_check_dprice(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_emp USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- IF uo_option_saletask_secaudit = 0 THEN
- UPDATE u_saletask_ll
- SET permit_emp = :arg_emp ,
- permit_date = getdate(),
- p_Auditingdate = getdate(),
- p_Auditingrep = :arg_emp,
- status = 1
- WHERE taskid = :arg_taskid
- AND status = 0
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致订单审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- UPDATE u_saletask_ll
- SET permit_emp = :arg_emp ,
- permit_date = getdate(),
- status = 4
- WHERE taskid = :arg_taskid
- AND status = 0
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致订单审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- //成品仓加0库存
- //-----------------------------------------------
- IF uo_option_saletask_addware = 1 AND Kind > 0 THEN
- Long ll_storageid_arr[],ll_storageid
- Long ll_scid_arr[],ll_scid
- String ll_storagename_arr[],ls_storagename
- Long ll_j,count,ll_i
- Int li_balctype_arr[],li_balctype
- Long ll_cusid
-
- String ls_status,ls_mtrlcode,ls_pcode,ls_woodcode,ls_plancode
- Long ll_mtrlwareid,ll_mtrlid
-
- DECLARE pf_cur CURSOR FOR
- SELECT u_storage.storageid,
- u_storage.storagename,
- u_storage.scid,
- u_storage.balctype
- FROM u_storage
- Where ( u_storage.mtrlprp = 0 );
- OPEN pf_cur;
-
- FETCH pf_cur INTO :ll_storageid,:ls_storagename,:ll_scid,:li_balctype;
- DO WHILE sqlca.SQLCode = 0
- count++
- ll_storageid_arr[count] = ll_storageid
- ll_storagename_arr[count] = ls_storagename
- ll_scid_arr[count] = ll_scid
- li_balctype_arr[count] = li_balctype
- FETCH pf_cur INTO :ll_storageid,:ls_storagename,:ll_scid,:li_balctype;
- LOOP
- CLOSE pf_cur;
-
- FOR ll_i = 1 TO it_mxbt
- ll_mtrlid = saletaskmx[ll_i].mtrlid
- ls_mtrlcode = saletaskmx[ll_i].mtrlcode
- ls_status = saletaskmx[ll_i].status
- ls_pcode = saletaskmx[ll_i].pcode
- ls_woodcode = saletaskmx[ll_i].woodcode
- ls_plancode = saletaskmx[ll_i].mtrlcuscode
-
- FOR ll_j = 1 TO count
- IF li_balctype_arr[ll_j] = 1 THEN
- ll_cusid = cusid
- ELSE
- ll_cusid = 0
- END IF
-
- SELECT top 1 mtrlwareid INTO :ll_mtrlwareid
- FROM u_mtrlware
- WHERE mtrlid = :ll_mtrlid
- AND status = :ls_status
- AND storageid = :ll_storageid_arr[ll_j]
- AND woodcode = :ls_woodcode
- AND plancode = :ls_plancode
- AND pcode = :ls_pcode
- AND sptid = :ll_cusid;
-
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'库存失败'
- rslt = 0
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 THEN
- ll_mtrlwareid = 0
-
- ll_mtrlwareid = f_sys_scidentity(ll_scid_arr[ll_j],"u_mtrlware","mtrlwareid",arg_msg,TRUE,id_sqlca)
- IF ll_mtrlwareid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- INSERT INTO u_mtrlware(scid,mtrlwareid,mtrlid,storageid,noallocqty,status,plancode,woodcode,pcode,sptid)
- Values(:ll_scid_arr[ll_j],:ll_mtrlwareid,:ll_mtrlid,:ll_storageid_arr[ll_j],0,:ls_status,:ls_plancode,:ls_woodcode,:ls_pcode,:ll_cusid);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '产品:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'加0库存失败或物料已经有库存,请检查'
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- NEXT
-
- END IF
- IF uo_option_if_msg = 1 THEN
- IF f_billmsg(scid,taskcode,taskcode+'销售订单确认',taskcode+'销售订单确认',commit_transaction,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //默认订单调度
- Long i
- IF uo_option_saletask_secaudit = 0 THEN
- FOR i = 1 TO it_mxbt
- IF p_cprqplan(arg_taskid,saletaskmx[i].printid,1,saletaskmx[i].saleqty,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- IF uo_option_if_oa_saletask = 1 AND uo_option_saletask_secaudit = 1 THEN
- IF f_oa(commit_transaction,FALSE,arg_msg,6,scid,taskid,taskcode,relcode,dscrp) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- RETURN rslt
- end function
- public function integer propermit (long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);//salepermit
- Int rslt = 1,cnt = 0
- IF uo_option_saletask_secaudit = -1000 THEN
- arg_msg = '选项:[035]销售订单使用二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_saletask_fore_secaudit = -1000 THEN
- arg_msg = '选项:[088]销售预测单二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 4 THEN
- rslt = 0
- arg_msg = "订单不是在待生产审状态,操作取消"
- GOTO ext
- END IF
- IF Kind <> 0 THEN
- IF uo_option_if_oa_saletask = 1 AND uo_option_saletask_fore_secaudit = 1 AND audit_buildtype = 0 THEN
- IF f_check_if_oaflow(scid,arg_taskid,6,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- Long i
- FOR i = 1 TO it_mxbt
- IF p_cprqplan(arg_taskid,saletaskmx[i].printid,1,saletaskmx[i].saleqty,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_emp USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- UPDATE u_saletask_ll
- SET p_Auditingdate = getdate(),
- p_Auditingrep = :arg_emp,
- status = 1
- WHERE taskid = :arg_taskid
- AND status = 4
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致订单生产审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer trycmptask_fore (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//trycmplsaletask(arg_taskid,arg_msg,arg_ifcommit)
- Int rslt = 1,cnt = 0,ll_status
- DateTime null_dt
- SetNull(null_dt)
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Kind <> 0 THEN
- rslt = 0
- arg_msg = '不是销售预测单不能按进仓数来完成单据'
- GOTO ext
- END IF
- IF status <> 1 AND status <> 5 THEN
- rslt = 0
- IF status <> 1 THEN
- arg_msg = "销售订单只有在进行状态下才可以执行设完成状态"
- ELSEIF status <> 5 THEN
- arg_msg = "销售订单只有在完成状态下才可以执行撤消完成状态"
- END IF
- GOTO ext
- END IF
- Decimal ls_zerook
- Boolean if_finish
- if_finish = TRUE
- DECLARE zero_cur CURSOR FOR
- SELECT u_saletaskmx.saleqty - u_saletaskmx.inwareqty
- FROM u_saletaskmx
- WHERE ( u_saletaskmx.taskid = :arg_taskid ) AND
- ( u_saletaskmx.stopflag = 0 )
- USING commit_transaction ;
-
- OPEN zero_cur;
- FETCH zero_cur INTO :ls_zerook;
- DO WHILE commit_transaction.SQLCode = 0
- IF if_finish THEN
- IF ls_zerook > 0 THEN if_finish = FALSE
- END IF
- FETCH zero_cur INTO :ls_zerook;
- LOOP
- CLOSE zero_cur;
- IF status = 1 AND if_finish THEN
- UPDATE u_saletask
- SET status = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_saletask.taskid = :arg_taskid )
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致销售订单完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- END IF
- IF status = 5 AND NOT if_finish THEN
- UPDATE u_saletask
- SET status = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- WHERE ( u_saletask.taskid = :arg_taskid )
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致销售订单撤消完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer add_dscrp (long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- arg_newdescppart = Trim(arg_newdescppart)
- IF it_updatebegin OR it_newbegin THEN
- rslt = 0
- arG_MSG = "编辑状态下不可用"
- GOTO ext
- END IF
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待销售审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_saletask_ll
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- Where u_saletask_ll.taskid = :arg_taskid
- 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
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer ddpermit (long arg_taskid, long arg_printid, integer arg_flag, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- Int li_ddflag,li_stopflag
- Long ll_mtrlid,ll_scid
- Decimal ld_bqty
- DateTime ldt_null
- SetNull(ldt_null)
- IF uo_option_autocreate_buy_cp = -1000 THEN
- arg_msg = '选项:[113]销售订单调度审核自动建立成品申购单,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- uo_requestbuy uo_rqbuy
- uo_rqbuy = CREATE uo_requestbuy
- SELECT u_saletaskmx_ll.mtrlid,
- u_saletaskmx_ll.ddflag,
- u_saletaskmx_ll.stopflag,
- u_saletask_ll.scid
- INTO :ll_mtrlid,
- :li_ddflag,
- :li_stopflag,
- :ll_scid
- FROM u_saletaskmx_ll,u_saletask_ll
- WHERE u_saletaskmx_ll.taskid = u_saletask_ll.taskid
- AND u_saletaskmx_ll.taskid = :arg_taskid
- AND u_saletaskmx_ll.printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询订单产品明细失败 '+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF li_stopflag = 1 THEN
- rslt = 0
- arg_msg = '该订单明细已经终止,不能再调度审核'
- GOTO ext
- END IF
- Int li_ifautodd
- SELECT ifautodd INTO :li_ifautodd
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid ;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询订单明细物料是否自动调度失败,'+SQLCA.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_ifautodd = 0 THEN
- IF arg_flag = 0 THEN
- IF li_ddflag = 1 THEN
- rslt = 0
- arg_msg = '该订单明细已经调度审核'
- GOTO ext
- END IF
- ELSE
- IF li_ddflag = 0 THEN
- rslt = 0
- arg_msg = '该订单明细未调度审核'
- GOTO ext
- END IF
- END IF
- END IF
- IF arg_flag = 0 THEN
- IF uo_option_autocreate_buy_cp = 1 THEN
- ld_bqty = 0
- SELECT bqty INTO :ld_bqty
- FROM u_saletaskmx_ll
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询订单明细安排采购数量失败 ' + SQLCA.SQLErrText
- GOTO ext
- END IF
-
- IF ld_bqty > 0 THEN
- Long ll_cusid
- String ls_mtrlcode,ls_status,ls_woodcode,ls_pcode,ls_unit
-
- SELECT u_saletaskmx_ll.mtrlid,
- u_saletaskmx_ll.status,
- u_saletaskmx_ll.woodcode,
- u_saletaskmx_ll.pcode,
- u_mtrldef.mtrlcode,
- u_mtrldef.unit,
- u_saletask_ll.cusid
- INTO :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ls_mtrlcode,
- :ls_unit,
- :ll_cusid
- FROM u_saletaskmx_ll,
- u_mtrldef,
- u_saletask_ll
- WHERE u_saletaskmx_ll.mtrlid = u_mtrldef.mtrlid
- AND u_saletask_ll.taskid = u_saletaskmx_ll.taskid
- AND u_saletaskmx_ll.taskid = :arg_taskid
- AND u_saletaskmx_ll.printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询订单明细内容失败 ' + SQLCA.SQLErrText
- GOTO ext
- END IF
-
- s_requestbuy arg_s_rqbuy
-
- arg_s_rqbuy.scid = ll_scid
- arg_s_rqbuy.requestbuyid = 0
- arg_s_rqbuy.requestbuydate = DateTime(Today(),Time(0))
- arg_s_rqbuy.assign_emp = publ_operator
- arg_s_rqbuy.relcode = ''
- arg_s_rqbuy.dscrp = ''
- arg_s_rqbuy.ifauto = 1
- arg_s_rqbuy.billtype = 1
-
- arg_s_rqbuy.arg_s_rqbuymx[1].mtrlcode = ls_mtrlcode
- arg_s_rqbuy.arg_s_rqbuymx[1].uqty = ld_bqty
- arg_s_rqbuy.arg_s_rqbuymx[1].unit = ls_unit
- arg_s_rqbuy.arg_s_rqbuymx[1].status = ls_status
- arg_s_rqbuy.arg_s_rqbuymx[1].woodcode = ls_woodcode
- arg_s_rqbuy.arg_s_rqbuymx[1].pcode = ls_pcode
- arg_s_rqbuy.arg_s_rqbuymx[1].mxdscrp = ''
- arg_s_rqbuy.arg_s_rqbuymx[1].mtrlid = ll_mtrlid
- arg_s_rqbuy.arg_s_rqbuymx[1].orderid = arg_taskid
- arg_s_rqbuy.arg_s_rqbuymx[1].wrkgrpid = 0
- arg_s_rqbuy.arg_s_rqbuymx[1].ifrel = 1
- arg_s_rqbuy.arg_s_rqbuymx[1].printid = 1
- arg_s_rqbuy.arg_s_rqbuymx[1].rate = 1
- arg_s_rqbuy.arg_s_rqbuymx[1].dftsptid = ll_cusid
- arg_s_rqbuy.arg_s_rqbuymx[1].relprintid = arg_printid
-
- IF uo_rqbuy.Save(arg_s_rqbuy,publ_operator,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqbuy.audit(ll_scid,uo_rqbuy.uo_requestbuyid,publ_operator,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqbuy.audit_2(ll_scid,uo_rqbuy.uo_requestbuyid,publ_operator,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- END IF
-
- UPDATE u_saletaskmx_ll
- SET ddflag = 1,
- dddate = getdate(),
- ddemp = :publ_operator
- WHERE ddflag = 0
- AND taskid = :arg_taskid
- AND printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新订单明细调度审核标记失败 ' + SQLCA.SQLErrText
- GOTO ext
- END IF
- ELSE
-
- IF uo_option_autocreate_buy_cp = 1 THEN
- Long ll_requestbuyid[]
- Long ll_i,i
- i = 1
- DECLARE cur_rqbuy CURSOR FOR
- SELECT u_requestbuy.requestbuyid
- FROM u_requestbuymx,u_requestbuy
- WHERE u_requestbuymx.requestbuyid = u_requestbuy.requestbuyid
- AND u_requestbuy.scid = :ll_scid
- AND u_requestbuymx.orderid = :arg_taskid
- AND u_requestbuymx.relprintid = :arg_printid
- AND u_requestbuy.billtype = 1 USING commit_transaction;
-
- OPEN cur_rqbuy;
- FETCH cur_rqbuy INTO :ll_requestbuyid[i];
- DO WHILE commit_transaction.SQLCode = 0
- i++
- FETCH cur_rqbuy INTO :ll_requestbuyid[i];
- LOOP
-
- CLOSE cur_rqbuy;
-
- FOR ll_i = 1 TO i - 1
- IF uo_rqbuy.caudit_2(ll_scid,ll_requestbuyid[ll_i],0,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqbuy.caudit(ll_scid,ll_requestbuyid[ll_i],0,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqbuy.del(ll_scid,ll_requestbuyid[ll_i],0,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ELSE
- //检查申购单
- SELECT count(*) INTO :cnt
- FROM u_requestbuymx,u_requestbuy
- WHERE u_requestbuymx.requestbuyid = u_requestbuy.requestbuyid
- AND u_requestbuy.scid = :ll_scid
- AND u_requestbuymx.orderid = :arg_taskid
- AND u_requestbuymx.relprintid = :arg_printid
- AND u_requestbuy.billtype = 1 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
- END IF
-
- //检查生产计划
- SELECT count(*) INTO :cnt
- FROM u_Order_ml INNER JOIN
- u_order_ml_mx ON u_Order_ml.scid = u_order_ml_mx.scid AND
- u_Order_ml.OrderID = u_order_ml_mx.orderid
- WHERE u_order_ml_mx.taskid = :arg_taskid
- AND u_order_ml_mx.taskmxid = :arg_printid
- AND u_order_ml_mx.scid = :ll_scid
- AND u_Order_ml.ordertype = 2
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询订单相关生产计划失败'
- GOTO ext
- END IF
-
- IF cnt <> 0 THEN
- rslt = 0
- arg_msg = '订单已经存在相关生产计划.不可以撤销审核'
- GOTO ext
- END IF
-
- UPDATE u_saletaskmx_ll
- SET ddflag = 0,
- dddate = :ldt_null,
- ddemp = ''
- WHERE ddflag = 1
- AND taskid = :arg_taskid
- AND printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新订单明细调度审核标记失败 ' + SQLCA.SQLErrText
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- DESTROY uo_rqbuy
- RETURN rslt
- end function
- public function integer p_cprqplan (long arg_taskid, long arg_printid, long arg_flag, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_stopflag,li_ddflag
- Long ll_mtrlid,cnt
- DateTime ldt_null
- SetNull(ldt_null)
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- SELECT mtrlid,ddflag,stopflag
- INTO :ll_mtrlid,:li_ddflag,:li_stopflag
- FROM u_saletaskmx_ll
- WHERE u_saletaskmx_ll.taskid = :arg_taskid
- AND u_saletaskmx_ll.printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ARG_MSG = '查询订单信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_stopflag = 1 THEN
- rslt = 0
- ARG_MSG = '查询订单明细已经终止,请检查'
- GOTO ext
- END IF
- Int li_ifautodd
- SELECT ifautodd INTO :li_ifautodd
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid ;
- IF commit_transaction.SQLCode <> 0 THEN
- ARG_MSG = '查询订单明细物料是否自动调度失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_flag = 1 THEN
- Int li_mtrlorigin
- String ls_mtrlcode
- Int li_iflljg
-
- SELECT mtrlorigin,mtrlcode,iflljg
- INTO :li_mtrlorigin,:ls_mtrlcode,:li_iflljg
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询订单产品['+ls_mtrlcode+']来源失败'
- GOTO ext
- END IF
-
- IF li_mtrlorigin = 0 THEN
- IF li_iflljg = 0 THEN
- UPDATE u_saletaskmx_ll
- SET pqty = :arg_qty
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '更新订单产品['+ls_mtrlcode+']排产数量失败'
- GOTO ext
- END IF
- ELSE
- UPDATE u_saletaskmx_ll
- SET lqty = :arg_qty
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '更新订单产品['+ls_mtrlcode+']客户来料数量失败'
- GOTO ext
- END IF
- END IF
- ELSEIF li_mtrlorigin = 2 THEN
- UPDATE u_saletaskmx_ll
- SET bqty = :arg_qty
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '更新订单产品['+ls_mtrlcode+']采购数量失败'
- GOTO ext
- END IF
- ELSEIF li_mtrlorigin = 3 THEN
- UPDATE u_saletaskmx_ll
- SET wqty = :arg_qty
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '更新订单产品['+ls_mtrlcode+']外协数量失败'
- GOTO ext
- END IF
- ELSEIF li_mtrlorigin = 6 THEN
- UPDATE u_saletaskmx_ll
- SET lqty = :arg_qty
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '更新订单产品['+ls_mtrlcode+']客户来料数量失败'
- GOTO ext
- END IF
- END IF
- ELSE
- IF li_ifautodd = 0 THEN
- IF li_ddflag = 1 THEN
- rslt = 0
- ARG_MSG = '该订单明细已经调度审核'
- GOTO ext
- END IF
- END IF
-
- UPDATE u_saletaskmx_ll
- SET pqty = 0,bqty = 0,wqty = 0,lqty = 0
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '更新订单产品['+ls_mtrlcode+']调度数量失败'
- GOTO ext
- END IF
- END IF
- IF li_ifautodd = 1 THEN
- IF arg_flag = 1 THEN
- IF ddpermit(arg_taskid,arg_printid,0,ARG_MSG,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF ddpermit(arg_taskid,arg_printid,1,ARG_MSG,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK ;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- Return (rslt)
- end function
- public function integer cancelpermit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- DateTime nulldate
- Decimal ls_consignedQty
- SetNull(nulldate)
- IF uo_option_saletask_secaudit = -1000 THEN
- arg_msg = '选项:[035]销售订单使用二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- ARG_MSG = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_saletask_secaudit = 0 OR (uo_option_saletask_secaudit = 1 AND uo_option_if_oa_saletask = 1) THEN
- IF Status <> 1 THEN
- rslt = 0
- IF (uo_option_saletask_secaudit = 1 AND uo_option_if_oa_saletask = 1) THEN
- ARG_MSG = "订单正在执行审批流程,只有在在进行状态才可以执行撤消审核"
- ELSE
- ARG_MSG = "订单只有在已审核状态才可以执行撤消审核,请核对"
- END IF
- GOTO ext
- END IF
- ELSE
- IF Status <> 4 THEN
- rslt = 0
- ARG_MSG = "订单只有在已待生产审核状态才可以执行撤消审核,请核对"
- GOTO ext
- END IF
- END IF
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE scid = :scid
- AND taskid = :arg_taskid
- AND ordertype = 2
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询销售订单排产数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已经有相关生产计划,不可以撤消审核"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware_ll,u_outwaremx_ll
- WHERE ( u_outware_ll.outwareid = u_outwaremx_ll.outwareid ) AND
- ( u_outwaremx_ll.relid = :arg_taskid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询销售订单发货数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已经有相关出仓单据,不可以撤消审核"
- GOTO ext
- END IF
- SELECT sum(u_saletaskmx_ll.consignedQty)
- INTO :ls_consignedQty
- FROM u_saletaskmx_ll
- WHERE ( u_saletaskmx_ll.TaskID = :arg_taskid ) AND
- ( u_saletaskmx_ll.stopflag = 0 ) USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_consignedQty > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已有完成数量,不能撤审"
- GOTO ext
- END IF
- //来料加工订单,检查是否已开收料单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_inware,u_inwaremx
- WHERE ( u_inware.billtype = 5 ) AND
- ( u_inware.scid = u_inwaremx.scid ) AND
- ( u_inware.inwareid = u_inwaremx.inwareid ) AND
- ( u_inwaremx.relid = :arg_taskid ) AND
- ( u_inware.scid = :scid) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询销售订单发货数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "来料加工订单已经有相关收料进仓单据,不可以撤消审核"
- GOTO ext
- END IF
- SELECT sum(u_saletaskmx_in.consignedQty)
- INTO :ls_consignedQty
- FROM u_saletaskmx_in
- WHERE ( u_saletaskmx_in.TaskID = :arg_taskid )
- USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询来料加工订单已收料数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_consignedQty > 0 THEN
- rslt = 0
- ARG_MSG = "来料加工订单已有收料数量,不能撤审"
- GOTO ext
- END IF
- IF uo_option_saletask_secaudit = 0 OR (uo_option_saletask_secaudit = 1 AND uo_option_if_oa_saletask = 1) THEN
- UPDATE u_SaleTask_ll
- SET Status = 0,
- permit_emp = '',
- permit_date = :nulldate,
- p_Auditingrep = '',
- p_Auditingdate = :nulldate
- WHERE TaskID = :arg_taskid
- AND status = 1
- USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致销售订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- ARG_MSG = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- UPDATE u_SaleTask_ll
- SET Status = 0,
- permit_emp = '',
- permit_date = :nulldate
- WHERE TaskID = :arg_taskid
- AND status = 4
- 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
- END IF
- //默认订单调度
- Long i
- FOR i = 1 TO it_mxbt
- IF p_cprqplan(arg_taskid,saletaskmx[i].printid,0,saletaskmx[i].saleqty,ARG_MSG,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer checkmxcmpl (long arg_taskid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg);
- Int rslt = 1
- long cnt = 0
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- rslt = p_getinfo(arg_taskid,ARG_MSG)
- IF rslt = 0 THEN GOTO ext
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "销售订单只有在进行状态下才可以执行进仓"
- GOTO ext
- END IF
- Decimal ls_saleQty,ls_assignQty
- String ls_mtrlcode
- SELECT u_saleTaskMx.saleQty,
- u_saleTaskMx.assignqty,
- u_mtrldef.mtrlcode
- INTO :ls_saleQty,
- :ls_assignQty,
- :ls_mtrlcode
- FROM u_saleTaskMx ,u_mtrldef
- WHERE ( u_saleTaskMx.TaskID = :arg_taskid ) AND
- ( u_saleTaskMx.MtrlID = :arg_mtrlid ) AND
- ( u_mtrldef.mtrlid = u_saleTaskMx.MtrlID )
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误物料编码["+ls_mtrlcode+"]导致查询销售订单已完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF ls_saleQty < ls_assignQty + arg_addqty THEN
- rslt = 0
- ARG_MSG = "物料["+ls_mtrlcode+"]的订单未完成数量只有"+String(ls_saleQty - ls_assignQty,'#,##0.0#')+",不能入库"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- ext:
- p_reset()
- RETURN (rslt)
- end function
- public function integer finishtask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF rslt = 0 THEN GOTO ext
- IF Status <> 1 THEN
- rslt = 0
- arg_msg = "销售订单只有在进行状态才可以执行完成,请核对"
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask = 1 AND audit_buildtype = 0 THEN
- IF f_check_if_oaflow(scid,arg_taskid,6,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- UPDATE u_SaleTask
- SET status = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_SaleTask.TaskID = :arg_taskid )
- USING commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致完成销售订单操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- ext:
- IF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer cancelpropermit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1,cnt = 0
- DateTime nulldate
- Decimal ls_consignedQty
- SetNull(nulldate)
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- ARG_MSG = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "订单只有在进行状态才可以执行撤消生产审核,请核对"
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE taskid = :arg_taskid
- and ordertype = 2
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询销售订单排产数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已经有相关生产计划,不可以撤消审核"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware_ll,u_outwaremx_ll
- WHERE ( u_outware_ll.outwareid = u_outwaremx_ll.outwareid ) AND
- ( u_outwaremx_ll.relid = :arg_taskid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询销售订单发货数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已经有相关出仓单据,不可以撤消审核"
- GOTO ext
- END IF
- SELECT sum(u_SaleTaskMx_ll.consignedQty)
- INTO :ls_consignedQty
- FROM u_SaleTaskMx_ll
- WHERE ( u_SaleTaskMx_ll.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx_ll.stopflag = 0 ) USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询来料加工订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_consignedQty > 0 THEN
- rslt = 0
- ARG_MSG = "来料加工订单已有完成数量,不能撤审"
- GOTO ext
- END IF
- //来料加工订单,检查是否已开收料单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_inware,u_inwaremx
- WHERE ( u_inware.billtype = 5 ) AND
- ( u_inware.scid = u_inwaremx.scid ) AND
- ( u_inware.inwareid = u_inwaremx.inwareid ) AND
- ( u_inwaremx.relid = :arg_taskid ) AND
- ( u_inware.scid = :scid) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致查询销售订单发货数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "来料加工订单已经有相关收料进仓单据,不可以撤消审核"
- GOTO ext
- END IF
-
- SELECT sum(u_SaleTaskMx_in.consignedQty)
- INTO :ls_consignedQty
- FROM u_SaleTaskMx_in
- WHERE ( u_SaleTaskMx_in.TaskID = :arg_taskid )
- USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询来料加工订单已收料数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
-
- IF ls_consignedQty > 0 THEN
- rslt = 0
- ARG_MSG = "来料加工订单已有收料数量,不能撤审"
- GOTO ext
- END IF
- //默认订单调度
- Long i
- FOR i = 1 TO it_mxbt
- IF p_cprqplan(arg_taskid,saletaskmx[i].printid,0,saletaskmx[i].saleqty,ARG_MSG,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- UPDATE u_SaleTask_ll
- SET Status = 4,
- p_Auditingrep = '',
- p_Auditingdate = :nulldate
- WHERE TaskID = :arg_taskid
- AND status = 1
- USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致销售订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- ARG_MSG = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer updatebqty (long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Dec ld_SaleQty,ld_finishbQty,ld_bqty
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- arg_msg = '订单未审核,不能更新!'
- rslt = 0
- GOTO ext
- END IF
- SELECT bqty,
- finishbqty
- INTO :ld_bqty,
- :ld_finishbQty
- FROM u_saletaskmx_ll
- WHERE taskid = :arg_taskid AND
- printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询销售订单已申购数量失败!'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ld_bqty - ld_finishbQty < arg_qty THEN
- arg_msg = '申购数量大于待申购数!'
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_saletaskmx_ll
- SET finishbqty = finishbqty + :arg_qty
- WHERE taskid = :arg_taskid AND
- printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新订单申购数失败>>'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- ELSEIF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer updateinwareqty (long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Dec ld_SaleQty,ld_inwareQty
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- arg_msg = '订单未审核,不能更新!'
- rslt = 0
- GOTO ext
- END IF
- SELECT SaleQty,
- inwareQty
- INTO :ld_SaleQty,
- :ld_inwareQty
- FROM u_saletaskmx_ll
- WHERE taskid = :arg_taskid AND
- printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询销售订单明细已进仓数量失败!'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ld_SaleQty - ld_inwareQty < arg_qty THEN
- arg_msg = '进仓数量大于未进仓数!'
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_saletaskmx_ll
- SET inwareQty = inwareQty + :arg_qty
- WHERE taskid = :arg_taskid AND
- printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新进仓数失败>>'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- ELSEIF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer newbegin ();//重置对象,设定业务类型与关联ID,准备建立新单
- //0 fail 1 success
- int rslt=1
- long CNT=0
- p_reset()
- it_newbegin=TRUE
- it_updatebegin=FALSE
- return rslt
- end function
- on uo_saletask_ll.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_saletask_ll.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;String arg_msg
- String str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('029',str_optionvalue,arg_msg)
- uo_option_change_status = str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('027',str_optionvalue,arg_msg)
- uo_option_change_woodcode = str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('028',str_optionvalue,arg_msg)
- uo_option_change_pcode = str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('035',str_optionvalue,arg_msg)
- uo_option_saletask_secaudit = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('043',str_optionvalue,arg_msg)
- uo_option_if_oa_saletask = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('133',str_optionvalue,arg_msg)
- uo_option_taskplancode_auto_ll = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('113',str_optionvalue,arg_msg)
- uo_option_autocreate_buy_cp = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('045',str_optionvalue,arg_msg)
- uo_option_m_msttake = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('051',str_optionvalue,arg_msg)
- uo_option_taskaudit_dprice = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('044',str_optionvalue,arg_msg)
- uo_option_if_msg = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('088',str_optionvalue,arg_msg)
- uo_option_saletask_fore_secaudit = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('039',str_optionvalue,arg_msg)
- uo_option_saletask_addware = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('023',str_optionvalue,arg_msg)
- uo_option_unit_dec = Long(str_optionvalue)
- end event
|