12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627 |
- $PBExportHeader$uo_buytask.sru
- forward
- global type uo_buytask from nonvisualobject
- end type
- type s_buytaskmx from structure within uo_buytask
- end type
- end forward
- type s_buytaskmx from structure
- long orderid
- string ordercode
- long mtrlid
- decimal { 4 } qty
- decimal { 10 } plprice
- decimal { 10 } acprice
- string dscrp
- string mtrlcode
- long printid
- decimal { 10 } fprice
- decimal { 4 } rebate
- decimal { 10 } price
- datetime requiredate
- datetime accomplishdate
- long storageid
- string status
- string woodcode
- string pcode
- integer iforder
- string sptmtrlname
- string unit
- decimal { 5 } rate
- decimal { 5 } uqty
- decimal { 10 } uprice
- decimal { 5 } addqty
- decimal { 10 } dftsptprice
- long relid
- long relprintid
- string relcode
- string formula
- decimal { 5 } stopqty
- long relid2
- decimal { 5 } tax
- decimal { 5 } uamt
- decimal { 5 } uamt_tax
- decimal { 5 } bsamt
- decimal { 5 } bsamt_tax
- string plancode
- long scid
- long taskid
- decimal { 5 } assignqty
- datetime sys_changetime
- decimal { 5 } consignedqty
- long ctmint
- long stopflag
- string stopemp
- datetime stopdate
- string stopreason
- decimal { 5 } consignedaddqty
- datetime sptbackdate
- string delayreason
- string dscrp2
- string dscrp3
- string dscrp4
- decimal { 5 } planprice
- decimal { 10 } uprice_notax
- string formula2
- end type
- global type uo_buytask from nonvisualobject
- end type
- global uo_buytask uo_buytask
- type variables
- PUBLIC PROTECTEDWRITE Long scid = 0
- PUBLIC PROTECTEDWRITE Long TaskID = 0
- PUBLIC PROTECTEDWRITE DateTime opdate
- PUBLIC PROTECTEDWRITE String operator = ''
- PUBLIC PROTECTEDWRITE Int status = 0
- PUBLIC PROTECTEDWRITE DateTime Accomplishdate
- PUBLIC PROTECTEDWRITE String Permit_emp = ''
- Long orderid = 0
- String TaskCode = ''
- Int Kind = 0 //
- Long sptID = 0
- String Assign_emp
- DateTime Requiredate
- String dscrp
- string relcode
- string train
- long banktypeid
- long billtype
- Transaction commit_transaction
- decimal mrate
- long moneyid
- decimal mstpayamt,payamt
- Long priceflag
- PRIVATE:
- s_buytaskmx buytaskmx[] //明细结构数组
- Long it_MXBT = 0 //明细结构数组末指针
- Boolean IT_NEWBEGIN = FALSE //新建标志
- Boolean IT_UPDATEBEGIN = FALSE//修改标志
- end variables
- forward prototypes
- public function integer p_reset ()
- public function integer p_clearmx ()
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_getinfo (long arg_scid, long arg_taskid, ref string arg_msg)
- public function integer updatebegin (long arg_scid, long arg_taskid, ref string arg_msg)
- public function integer getinfo (integer arg_scid, long arg_taskid, ref string arg_msg)
- public function integer cancelpermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_scid, long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer tempstoptask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancel (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer firstpermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer lastpermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer checkmxmpl (long arg_scid, long arg_taskid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
- public function integer trycmplbuytask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer finishtask (integer arg_finishtype, long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer newbegin (long arg_scid, ref string arg_msg)
- public function integer stopmx (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, decimal arg_stopqty, ref string arg_msg, boolean arg_commit)
- public function integer addmxcmpl (long arg_scid, long arg_taskid, long arg_printid, decimal arg_qty, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer cstopbuytask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopbuytask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (s_buytask_mx s_mx, ref string arg_msg)
- public function integer acceptmx (integer arg_iforder, long arg_orderid, string arg_ordercode, long arg_mtrlid, decimal arg_uqty, decimal arg_addqty, decimal arg_uprice, decimal arg_rebate, decimal arg_planprice, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, datetime arg_requiredate, long arg_storageid, string arg_status, string arg_woodcode, string arg_pcode, string arg_unit, decimal arg_rate, long arg_relid, long arg_relprintid, string arg_relcode, string arg_formula, long arg_relid2, decimal arg_tax, string arg_plancode, string arg_dscrp2, string arg_dscrp3, string arg_dscrp4)
- public function integer wf_check_taskdamt (integer arg_scid, integer arg_taskid, ref string msg)
- public function integer priceaudit (long arg_scid, long arg_taskid, boolean arg_ifcommit, ref string arg_msg)
- public function integer c_priceaudit (long arg_scid, long arg_taskid, boolean arg_ifcommit, ref string arg_msg)
- end prototypes
- public function integer p_reset ();//INT p_RESET()
- //清除对象及其明细
- taskid = 0
- taskcode = ''
- operator = ''
- relcode = ''
- status = 0
- train = ''
- banktypeid = 0
- mstpayamt = 0
- it_newbegin = FALSE
- it_updatebegin = FALSE
- //清除明细
- P_CLEARMX()
- RETURN 1
- end function
- public function integer p_clearmx ();//INT p_clearmx()
- //清除明细
- it_mxbt=0
- mstpayamt = 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
- Long LS_NEWtaskID
- DateTime server_datetime
- String ls_sccode
- Long ll_taskid
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(assign_emp) THEN assign_emp = ''
- IF IsNull(train) THEN train = ''
- IF IsNull(banktypeid) THEN banktypeid = 0
- IF IsNull(arg_operator) THEN arg_operator = ''
- IF IsNull(billtype) THEN billtype = 0
- IF IsNull(moneyid) THEN moneyid = 0
- IF IsNull(mrate) THEN mrate = 0
- IF Len(dscrp) > 0 THEN dscrp = ' ' + dscrp
- operator = arg_operator
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arG_MSG = "非编辑状态不可以提交"
- GOTO ext
- END IF
- //未注册限制
- IF sys_if_register = 0 THEN
- Long ll_bill_count
- SELECT count(*)
- INTO :ll_bill_count
- From u_buyTask Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,采购订单数量 "
- GOTO ext
- END IF
-
- IF ll_bill_count > 30 THEN
- rslt = 0
- arG_MSG = "未注册版本,采购订单只能保存30张!"
- GOTO ext
- END IF
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_currency
- Where moneyid = :moneyid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '查询币种失败'
- rslt = 0
- GOTO ext
- END IF
- IF Trim(assign_emp) = '' THEN
- rslt = 0
- arG_MSG = "请输入订单负责人"
- GOTO ext
- END IF
- IF Kind = 0 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_spt
- Where sptid = :sptid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,供应商资料"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arG_MSG = "供应商未定义或错误"
- GOTO ext
- END IF
- ELSE
- sptid = -1
- 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
- SELECT Top 1 getdate() Into :server_datetime From u_user Using commit_transaction;
- //取得系统时间,借用操作员表
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
- rslt = 0
- arG_MSG = "没有正确采购订单明细内容"
- GOTO ext
- END IF
- 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(scid,"u_buytask","taskID",arG_MSG,True, commit_transaction) //数据commit事务)
- 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(scid,ls_sccode + 'BG',Date(server_datetime),False,commit_transaction)
- IF taskcode = "err" THEN
- taskcode = ''
- rslt = 0
- arG_MSG = "无法获取采购订单编号"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_buyTask
- ( scid,
- taskid,
- TaskCode,
- kind,
- sptID,
- requiredate,
- Status,
- Opemp,
- Assign_Emp,
- Permit_Emp,
- Dscrp,
- opdate,
- orderid,
- relcode,
- train,
- banktypeid,
- billtype,
- moneyid,
- mrate,
- mstpayamt)
- VALUES ( :scid,
- :ll_taskid,
- :TaskCode,
- :Kind,
- :sptID,
- :requiredate,
- :Status,
- :Operator,
- :Assign_Emp,
- :Permit_Emp,
- :Dscrp,
- :opdate,
- :orderid,
- :relcode,
- :train,
- :banktypeid,
- :billtype,
- :moneyid,
- :mrate,
- :mstpayamt) Using commit_transaction ;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'pk_u_buyTask') > 0 THEN
- arG_MSG = '插入采购订单操作失败,关键字分部ID、单据ID重复'
- ELSEIF Pos(Lower(commit_transaction.SQLErrText),'ix_u_buyTask_1') > 0 THEN
- arG_MSG = '插入采购订单操作失败,单据编号重复'
- ELSE
- arG_MSG = "插入采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
-
- //读取新taskid
- taskid = ll_taskid
-
- ELSE //////////////////////////////////////////////// //更新
- UPDATE u_buytask
- SET kind = :Kind,
- sptID = :sptID,
- requiredate = :requiredate,
- Assign_Emp = :Assign_Emp,
- Dscrp = :Dscrp,
- moddate = getdate(),
- Modemp = :publ_operator,
- orderid = :orderid,
- relcode = :relcode,
- train = :train,
- banktypeid = :banktypeid,
- billtype = :billtype,
- moneyid = :moneyid,
- mrate = :mrate,
- mstpayamt = :mstpayamt
- WHERE u_buytask.taskid = :taskid
- AND scid = :scid
- And Status = 0 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'pk_u_buyTask') > 0 THEN
- arG_MSG = '更新采购订单操作失败,关键字分部ID、单据ID重复'
- ELSEIF Pos(Lower(commit_transaction.SQLErrText),'ix_u_buyTask_1') > 0 THEN
- arG_MSG = '更新采购订单操作失败,单据编号重复'
- ELSE
- arG_MSG = "更新采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
-
- //删除原有明细
- DELETE FROM u_buytaskmx
- Where u_buytaskmx.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
-
-
-
- END IF
- FOR i = 1 To it_mxbt
- INSERT INTO u_buytaskmx
- ( scid,
- taskid,
- mtrlid,
- qty,
- price,
- dscrp,
- printid,
- fprice,
- rebate,
- requiredate,
- orderid,
- storageid,
- status,
- iforder,
- sptmtrlname,
- unit,
- rate,
- uqty,
- addqty,
- uprice,
- woodcode,
- pcode,
- dftsptprice,
- relid,
- relprintid,
- relcode,
- formula,
- relid2,
- tax,
- uamt,
- uamt_tax,
- bsamt,
- bsamt_tax,
- plancode,
- dscrp2,
- dscrp3,
- dscrp4,
- uprice_notax,
- formula2)
- VALUES (:scid,
- :taskid,
- :buytaskmx[i].mtrlid,
- :buytaskmx[i].QTY,
- :buytaskmx[i].acprice,
- :buytaskmx[i].dscrp,
- :buytaskmx[i].printid,
- :buytaskmx[i].fprice ,
- :buytaskmx[i].rebate,
- :buytaskmx[i].requiredate,
- :buytaskmx[i].orderid,
- :buytaskmx[i].storageid,
- :buytaskmx[i].Status,
- :buytaskmx[i].iforder,
- :buytaskmx[i].sptmtrlname,
- :buytaskmx[i].unit,
- :buytaskmx[i].rate,
- :buytaskmx[i].uqty,
- :buytaskmx[i].addqty,
- :buytaskmx[i].uprice,
- :buytaskmx[i].woodcode,
- :buytaskmx[i].pcode,
- :buytaskmx[i].dftsptprice,
- :buytaskmx[i].relid,
- :buytaskmx[i].relprintid,
- :buytaskmx[i].relcode,
- :buytaskmx[i].formula,
- :buytaskmx[i].relid2,
- :buytaskmx[i].tax,
- :buytaskmx[i].uamt,
- :buytaskmx[i].uamt_tax,
- :buytaskmx[i].bsamt,
- :buytaskmx[i].bsamt_tax,
- :buytaskmx[i].plancode,
- :buytaskmx[i].dscrp2,
- :buytaskmx[i].dscrp3,
- :buytaskmx[i].dscrp4,
- :buytaskmx[i].uprice_notax,
- :buytaskmx[i].formula2) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN taskid = 0 //还原taskid
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'pk_u_buytaskmx') > 0 THEN
- arG_MSG = '插入明细表操作失败,关键字分部ID、单据ID、明细ID重复'
- ELSEIF Pos(Lower(commit_transaction.SQLErrText),'u_buytaskmx_x') > 0 THEN
- arG_MSG = '插入明细表操作失败,违反唯一约束'
- ELSE
- arG_MSG = "插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
- NEXT
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- p_clearmx()
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- arG_MSG = '采购订单,'+ arG_MSG
- Return(rslt)
- end function
- public function integer p_getinfo (long arg_scid, long arg_taskid, ref string arg_msg);Int rslt = 1
- SELECT taskid,
- TaskCode,
- kind,
- sptID,
- requiredate,
- accomplishdate,
- Status,
- Opemp,
- Assign_Emp,
- Permit_Emp,
- Dscrp,
- opdate,
- orderid ,
- relcode,
- banktypeid,
- train,
- billtype,
- moneyid,
- mrate,
- mstpayamt,
- payamt,
- priceflag
- INTO :taskid,
- :TaskCode,
- :Kind,
- :sptID,
- :requiredate,
- :accomplishdate,
- :Status,
- :Operator,
- :Assign_Emp,
- :Permit_Emp,
- :Dscrp,
- :opdate,
- :orderid,
- :relcode,
- :banktypeid,
- :train,
- :billtype,
- :moneyid,
- :mrate,
- :mstpayamt,
- :payamt,
- :priceflag
- FROM u_buyTask
- WHERE u_buyTask.TaskID = :arg_taskid AND
- u_buyTask.scid = :arg_scid USING commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN
- arg_msg = '查询单据操作失败,查询数据返回值多于一个'
- ELSE
- arg_msg = '查询订单内容失败(错误订单唯一码)'
- END IF
- GOTO ext
- END IF
- scid = arg_scid
- ext:
- RETURN rslt
- end function
- public function integer updatebegin (long arg_scid, long arg_taskid, ref string arg_msg);//UPDATEbegin(long arg_taskid,ref string arg_msg)
- //从置对象,设定业务类型与关联ID,准备更新进仓单
- //0 fail 1 success
- long rslt=1,CNT=0
- if arg_scid < 0 then
- arg_msg = '请选择分部'
- rslt = 0
- goto ext
- end if
- IF arg_taskid<=0 THEN
- rslt=0
- ARG_MSG='错误采购订单唯一码'
- goto ext
- end if
- if p_getinfo(arg_scid,arg_taskid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- if Status<>0 then
- rslt=0
- ARG_MSG='已经处于审核或完成等状态,不可以修改,如果订单未完成并要修改请先撤销审核'
- goto ext
- end if
- it_newbegin=FALSE
- it_updatebegin=TRUE
- p_clearmx() //清除明细
- scid=arg_scid
- ext:
- if rslt=0 then p_reset()
- arg_msg = '采购订单,'+ arg_msg
- return rslt
- end function
- public function integer getinfo (integer arg_scid, long arg_taskid, ref string arg_msg);//getinfo(long arg_taskid,string arg_msg)
- //0 失败 1成功
- Int rslt = 1,I = 1,NO_MXCHECK = 0
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE CUR_INWAERMX CURSOR FOR
- SELECT u_buytaskmx.mtrlid,
- u_buytaskmx.qty,
- u_buytaskmx.price,
- u_buytaskmx.dscrp,
- u_mtrldef.mtrlcode,
- u_buytaskmx.printid,
- u_buytaskmx.fprice,
- u_buytaskmx.rebate,
- u_buytaskmx.orderid,
- u_buytaskmx.storageid,
- u_buytaskmx.status,
- u_buytaskmx.sptmtrlname,
- u_buytaskmx.unit,
- u_buytaskmx.rate,
- u_buytaskmx.uqty,
- u_buytaskmx.addqty,
- u_buytaskmx.uprice,
- u_buytaskmx.woodcode,
- u_buytaskmx.pcode,
- u_buytaskmx.dftsptprice,
- u_buytaskmx.relid,
- u_buytaskmx.relprintid,
- u_buytaskmx.relcode,
- u_buytaskmx.stopqty,
- u_buytaskmx.relid2,
- u_buytaskmx.tax,
- u_buytaskmx.uamt,
- u_buytaskmx.uamt_tax,
- u_buytaskmx.bsamt,
- u_buytaskmx.bsamt_tax
- FROM u_buytaskmx,u_mtrldef
- WHERE u_buytaskmx.taskid = :arg_taskid AND
- u_buytaskmx.mtrlid = u_mtrldef.mtrlid AND
- u_buytaskmx.scid = :arg_scid Using commit_transaction;
-
- OPEN CUR_INWAERMX;
- FETCH CUR_INWAERMX INTO :buytaskmx[I].mtrlid,:buytaskmx[I].qty,:buytaskmx[I].price,
- :buytaskmx[I].dscrp,:buytaskmx[I].mtrlcode,
- :buytaskmx[I].printid,:buytaskmx[I].fprice,:buytaskmx[I].rebate,
- :buytaskmx[I].orderid,:buytaskmx[I].storageid,:buytaskmx[I].status,
- :buytaskmx[I].sptmtrlname,:buytaskmx[I].unit,:buytaskmx[I].rate,
- :buytaskmx[I].uqty,:buytaskmx[I].addqty,:buytaskmx[I].uprice,
- :buytaskmx[I].woodcode,:buytaskmx[I].pcode,:buytaskmx[I].dftsptprice,
- :buytaskmx[I].relid,:buytaskmx[I].relprintid,:buytaskmx[I].relcode,:buytaskmx[I].stopqty,
- :buytaskmx[I].relid2,
- :buytaskmx[I].tax,
- :buytaskmx[I].uamt,
- :buytaskmx[I].uamt_tax,
- :buytaskmx[I].bsamt,
- :buytaskmx[I].bsamt_tax;
- DO WHILE commit_transaction.SQLCode = 0
- I++
- FETCH CUR_INWAERMX INTO :buytaskmx[I].mtrlid,:buytaskmx[I].qty,:buytaskmx[I].price,
- :buytaskmx[I].dscrp,:buytaskmx[I].mtrlcode,
- :buytaskmx[I].printid,:buytaskmx[I].fprice,:buytaskmx[I].rebate,
- :buytaskmx[I].orderid,:buytaskmx[I].storageid,:buytaskmx[I].status,
- :buytaskmx[I].sptmtrlname,:buytaskmx[I].unit,:buytaskmx[I].rate,
- :buytaskmx[I].uqty,:buytaskmx[I].addqty,:buytaskmx[I].uprice,
- :buytaskmx[I].woodcode,:buytaskmx[I].pcode,:buytaskmx[I].dftsptprice,
- :buytaskmx[I].relid,:buytaskmx[I].relprintid,:buytaskmx[I].relcode,:buytaskmx[I].stopqty,
- :buytaskmx[I].relid2,
- :buytaskmx[I].tax,
- :buytaskmx[I].uamt,
- :buytaskmx[I].uamt_tax,
- :buytaskmx[I].bsamt,
- :buytaskmx[I].bsamt_tax;
- LOOP
- CLOSE CUR_INWAERMX;
- //检验明细是否读入完整
- SELECT COUNT(*) INTO :NO_MXCHECK
- FROM u_buytaskmx
- WHERE u_buytaskmx.taskid = :arg_taskid AND
- u_buytaskmx.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询操作失败,采购订单明细数量"
- GOTO ext
- END IF
- IF I <> (NO_MXCHECK+1) THEN
- rslt = 0
- ARG_MSG = "查询操作失败,采购订单明细"
- GOTO ext
- END IF
- it_mxbt = I - 1
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer cancelpermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- DateTime null_dt
- uo_saletask uo_sale
- uo_sale = Create uo_saletask
- uo_sale.commit_transaction = commit_transaction
- uo_order_ml_mrp uo_mrp
- uo_mrp = Create uo_order_ml_mrp
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误采购订单唯一码'
- GOTO ext
- END IF
- SetNull(null_dt)
- IF getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "订单只有在已审核状态才可以执行撤消审核,请核对"
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM u_inwaremx,u_inware
- WHERE ( u_inware.scid = u_inwaremx.scid ) AND
- ( u_inware.inwareid = u_inwaremx.inwareid ) AND
- ( u_inware.billtype = 1) AND
- ( u_inwaremx.relid = :arg_taskid ) AND
- ( u_inwaremx.scid = :arg_scid) 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
- Decimal lde_consignedqty
- SELECT sum(consignedqty) INTO :lde_consignedqty FROM u_buytaskmx WHERE
- u_buytaskmx.scid = :arg_scid AND u_buytaskmx.taskid = :arg_taskid
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询采购订单收货数量操作失败"
- GOTO ext
- END IF
- IF lde_consignedqty > 0 THEN
- rslt = 0
- ARG_MSG = "采购订单明细已经有已收货数,不可以撤消审核"
- GOTO ext
- END IF
- UPDATE u_buyTask
- SET Status = 0,
- permit_emp = '',
- permit_date = :null_dt
- WHERE scid = :arg_scid
- AND TaskID = :arg_taskid
- AND Status = 1
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF Pos(Lower(commit_transaction.SQLErrText),'pk_u_buyTask') > 0 THEN
- ARG_MSG = '采购订单撤消审核操作失败,关键字分部ID、单据ID重复'
- ELSE
- ARG_MSG = "采购订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
- END IF
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- ARG_MSG = "订单正在更新,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //更新销售订单采购清单订购数
- Long ll_i,ll_status
- FOR ll_i = 1 To it_mxbt
- IF billtype = 1 THEN
- IF buytaskmx[ll_i].relid > 0 And buytaskmx[ll_i].relprintid > 0 THEN
- IF uo_sale.addmxcmpl_assign(scid, buytaskmx[ll_i].relid, buytaskmx[ll_i].relprintid, &
- buytaskmx[ll_i].mtrlid, 2, 0 - buytaskmx[ll_i].qty, False, ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- ELSEIF billtype = 2 THEN
- IF buytaskmx[ll_i].relid > 0 And buytaskmx[ll_i].relprintid > 0 And buytaskmx[ll_i].relid2 > 0 THEN
- IF uo_mrp.uof_add_rqmtrl_consignedqty(scid, buytaskmx[ll_i].relid, buytaskmx[ll_i].relprintid, buytaskmx[ll_i].relid2, 2, 0 - buytaskmx[ll_i].qty, False, ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- NEXT
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Destroy uo_sale
- Destroy uo_mrp
- ARG_MSG = '采购订单,'+ ARG_MSG
- Return (rslt)
- end function
- public function integer add_dscrp (long arg_scid, long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart)
- //0 fail 1 SUCCESS
- Int rslt = 1
- arg_newdescppart = Trim(arg_newdescppart)
- IF it_updatebegin Or it_newbegin THEN
- rslt = 0
- arG_MSG = "编辑状态下不可用"
- GOTO ext
- END IF
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_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_buyTask
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- Where u_buyTask.taskid = :arg_taskid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- // IF Pos(Lower(commit_transaction.SQLErrText),'pk_u_buyTask') > 0 THEN
- // arG_MSG = '添加备注单操作失败,关键字分部ID、单据ID重复'
- // ELSE
- arG_MSG = "添加采购订单备注操作失败"+"~n"+commit_transaction.SQLErrText
- // END IF
- ROLLBACK Using commit_transaction;
- GOTO ext
- END IF
- DSCRP = DSCRP+' '+arg_newdescppart
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- arG_MSG = '采购订单,'+ arG_MSG
- Return (rslt)
- end function
- public function integer tempstoptask (long arg_scid, 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_scid,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_buyTask
- SET Status = 2 ,stopemp=:publ_operator
- WHERE TaskID = :arg_taskid and scid=:arg_scid using commit_transaction ;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="暂停采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- goto ext
- end if
- else
- UPDATE u_buyTask
- SET Status = 1,stopemp=''
- WHERE TaskID = :arg_taskid and scid=:arg_scid using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="取消暂停采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- goto ext
- end if
- end if
- it_newbegin=FALSE
- it_updatebegin=FALSE
- EXT:
- if rslt=0 then
- rollback using commit_transaction;
- elseif arg_ifcommit then
- COMMIT using commit_transaction;
- end if
- p_reset()
- arg_msg = '采购订单,'+ arg_msg
- return (rslt)
- end function
- public function integer cancel (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//删除未审核的订单
- //0 FAIL, 1 SUCCESS
- Int rslt = 1
- uo_order_ml_mrp uo_mrp
- uo_mrp = CREATE uo_order_ml_mrp
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,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 wf_check_taskdamt(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- DELETE FROM u_buytask
- Where u_buytask.taskid = :arg_taskid AND scid = :arg_scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除采购订单操作失败"
- // ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- DELETE FROM u_buytaskmx
- Where u_buytaskmx.taskid = :arg_taskid AND scid = :arg_scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除采购订单明细操作失败"
- // ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- Long ll_i
- FOR ll_i = 1 TO it_MXBT
- IF billtype = 2 THEN
- IF buytaskmx[ll_i].relid > 0 AND buytaskmx[ll_i].relprintid > 0 AND buytaskmx[ll_i].relid2 > 0 THEN
- IF uo_mrp.uof_del_rqmtrl_relcode(scid, buytaskmx[ll_i].relid, buytaskmx[ll_i].relprintid, buytaskmx[ll_i].relid2, 2, FALSE, ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- 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()
- ARG_MSG = '采购订单,'+ ARG_MSG
- DESTROY uo_mrp
- Return (rslt)
- end function
- public function integer firstpermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);//buypermit
- Int rslt = 1,cnt = 0
- uo_saletask uo_sale
- uo_sale = CREATE uo_saletask
- uo_sale.commit_transaction = commit_transaction
- uo_order_ml_mrp uo_mrp
- uo_mrp = CREATE uo_order_ml_mrp
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 0 THEN
- rslt = 0
- ARG_MSG = "订单已经审核,操作取消"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_emp USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- ARG_MSG = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- UPDATE u_buyTask
- SET Permit_Emp = :arg_emp,
- Permit_date = getdate(),
- Status = 1
- WHERE scid = :arg_scid
- AND 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
- //更新销售订单采购清单订购数
- Long ll_i
- Decimal ll_taskrate,ll_taskaddqty,ll_buytaskqty,ll_needbuyqty
- //int li_plantype
- //li_plantype = 2
- FOR ll_i = 1 TO it_mxbt
- IF billtype = 1 THEN
- IF uo_sale.addmxcmpl_assign(scid, buytaskmx[ll_i].relid, buytaskmx[ll_i].relprintid, &
- buytaskmx[ll_i].mtrlid, 2, buytaskmx[ll_i].qty, FALSE, ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSEIF billtype = 2 THEN
- IF buytaskmx[ll_i].relid > 0 AND buytaskmx[ll_i].relprintid > 0 AND buytaskmx[ll_i].relid2 > 0 THEN
- IF uo_mrp.uof_add_rqmtrl_consignedqty(scid, buytaskmx[ll_i].relid, buytaskmx[ll_i].relprintid, buytaskmx[ll_i].relid2, 2, buytaskmx[ll_i].qty, FALSE, ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- NEXT
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- DESTROY uo_sale
- DESTROY uo_mrp
- ARG_MSG = '采购订单,'+ ARG_MSG
- Return (rslt)
- end function
- public function integer lastpermit (long arg_scid, long arg_taskid, string arg_emp, 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_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 4 THEN
- rslt = 0
- ARG_MSG = "订单只有在已采购审核状态才可以执行最终审核,请核对"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_emp ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- ARG_MSG = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- UPDATE u_buyTask
- SET Permit_emp = :arg_emp,
- Status = 1
- Where TaskID = :arg_taskid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "采购订单最终审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit THEN
- COMMIT;
- END IF
- p_reset()
- arg_msg = '采购订单,'+ arg_msg
- RETURN (rslt)
- end function
- public function integer checkmxmpl (long arg_scid, long arg_taskid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg);//checkmxcmpl(long arg_taskid,long arg_mtrlid,decimal arg_addqty,ref string arg_msg,boolean arg_ifcommit)
- INT rslt=1,cnt=0
- IF arg_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_scid,arg_taskid,arg_msg)
- if rslt=0 then goto ext
- IF Status<>1 THEN
- rslt=0
- arG_MSG="采购订单只有在进行状态下才可以执行进仓"
- goto ext
- END IF
- decimal ls_buyQty,ls_assignQty
- string ls_mtrlcode
- SELECT u_buyTaskMx.Qty,
- u_buyTaskMx.assignQty,
- u_mtrldef.mtrlcode
- INTO :ls_buyQty,
- :ls_assignQty,
- :ls_mtrlcode
- FROM u_buyTaskMx ,u_mtrldef
- WHERE ( u_buyTaskMx.TaskID =:arg_taskid ) AND
- ( u_buyTaskMx.MtrlID =:arg_mtrlid ) and
- ( u_mtrldef.mtrlid=u_buyTaskMx.MtrlID ) and
- ( u_buytaskmx.scid=:arg_scid) using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- if pos(lower(sqlca.SQLErrText),'more than') > 0 then
- arg_msg = "物料编码["+ls_mtrlcode+"],查询采购订单已完成数量操作失败,查询数据返回值多于一个"
- else
- arG_MSG="因网络或错误物料编码["+ls_mtrlcode+"]导致查询采购订单已完成数量操作失败"
- end if
- goto ext
- end if
- if ls_buyQty < ls_assignQty + arg_addqty then
- rslt=0
- arG_MSG="物料["+ls_mtrlcode+"]的订单未完成数量只有"+string(ls_buyQty - ls_assignQty,'#,##0.0#')+",不能入库"+string(arg_addqty,'#,##0.0#')
- goto ext
- end if
- EXT:
- p_reset()
- arg_msg = '采购订单,'+ arg_msg
- return (rslt)
- end function
- public function integer trycmplbuytask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//trycmplbuytask(arg_taskid,arg_msg,arg_ifcommit)
- Int rslt = 1,cnt = 0
- DateTime null_dt
- SetNull(null_dt)
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,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_buytaskmx.uqty - u_buytaskmx.stopqty - u_buytaskmx.consignedqty
- FROM u_buytaskmx
- WHERE ( u_buytaskmx.taskid = :arg_taskid )
- AND ( u_buytaskmx.scid = :arg_scid )
- USING commit_transaction ;
-
- OPEN zero_cur;
- FETCH zero_cur INTO :ls_zerook;
- DO WHILE commit_transaction.SQLCode = 0
- IF if_finish THEN
- IF ls_zerook > 0 THEN if_finish = FALSE
- END IF
- FETCH zero_cur INTO :ls_zerook;
- LOOP
- CLOSE zero_cur;
- IF status = 1 AND if_finish THEN
- UPDATE u_buytask
- SET status = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_buytask.taskid = :arg_taskid )
- AND u_buytask.scid = :arg_scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致采购订单完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- IF status = 5 AND NOT if_finish THEN
- UPDATE u_buytask
- SET status = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- WHERE ( u_buytask.taskid = :arg_taskid )
- AND u_buytask.scid = :arg_scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致采购订单撤消完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- arg_msg = '采购订单,'+ arg_msg
- RETURN (rslt)
- end function
- public function integer finishtask (integer arg_finishtype, long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- DateTime null_dt
- SetNull(null_dt)
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_finishtype = 5 OR arg_finishtype = 6 THEN
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "采购订单只有在进行状态才可以执行完成,请核对"
- GOTO ext
- END IF
- ELSE
- IF arg_finishtype = 1 THEN
- IF Status <> 6 THEN
- rslt = 0
- ARG_MSG = "采购订单只有在手动完成状态下才可以执行取消手动完成,请核对"
- GOTO ext
- END IF
- END IF
- END IF
- IF arg_finishtype = 5 OR arg_finishtype = 6 THEN
- UPDATE u_buyTask
- SET status = :arg_finishtype,accomplishdate = getdate(),finishemp = :publ_operator
- WHERE ( u_buyTask.TaskID = :arg_taskid ) AND
- ( u_buyTask.scid = :arg_scid) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "完成采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- ELSE
- UPDATE u_buyTask
- SET status = :arg_finishtype,accomplishdate = :null_dt,finishemp = ''
- WHERE ( u_buyTask.TaskID = :arg_taskid ) AND
- ( u_buyTask.scid = :arg_scid) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "取消手动完成采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- END IF
- ext:
- IF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- arg_msg = '采购订单,'+ arg_msg
- Return (rslt)
- end function
- public function integer newbegin (long arg_scid, ref string arg_msg);//重置对象,设定业务类型与关联ID,准备建立新单
- //0 fail 1 success
- long rslt=1,CNT=0
- if arg_scid < 0 then
- arg_msg = '请选择分部'
- rslt = 0
- goto ext
- end if
- p_reset()
- it_newbegin=TRUE
- it_updatebegin=FALSE
- scid=arg_scid
- ext:
- if rslt = 0 then p_reset()
- arg_msg = '采购订单,'+ arg_msg
- return rslt
- end function
- public function integer stopmx (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, decimal arg_stopqty, ref string arg_msg, boolean arg_commit);Int rslt = 1
- Int li_flag
- DateTime null_dt
- Decimal ld_notconsignedqty
- Decimal ld_notconsignedaddqty
- SetNull(null_dt)
- IF p_getinfo(arg_scid,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 INTO :li_flag
- FROM u_buytaskmx
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- IF Pos(Lower(sqlca.SQLErrText),'more than') > 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'中止标记失败,查询数据返回值多于一个'
- ELSE
- arg_msg = '查询明细物料'+arg_mtrlcode+'中止标记失败'
- END IF
- rslt = 0
- GOTO ext
- END IF
- IF arg_flag = 0 THEN
- IF li_flag = 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'还未中止,不能取消中止'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF li_flag = 1 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已中止,不能重复中止'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_flag = 1 THEN
- SELECT u_buyTaskMx.uQty - u_buyTaskMx.consignedqty,
- u_buyTaskMx.addQty - u_buyTaskMx.consignedaddqty
- INTO :ld_notconsignedqty,
- :ld_notconsignedaddqty
- FROM u_buytaskmx
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- IF Pos(Lower(sqlca.SQLErrText),'more than') > 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败,查询数据返回值多于一个'
- ELSE
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- END IF
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_notconsignedqty <= 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已完成收货,不能中止'
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_notconsignedqty < arg_stopqty THEN
- arg_msg = '明细物料'+arg_mtrlcode+'未完成数量只有:' + String(ld_notconsignedqty,'###,##0.#####') + ',不能中止:' + String(arg_stopqty,'###,##0.#####')
- rslt = 0
- GOTO ext
- END IF
-
-
- END IF
- IF arg_flag = 0 THEN
- UPDATE u_buytaskmx
- SET stopflag = 0,
- stopemp = '',
- stopdate = :null_dt,
- stopreason = '',
- stopqty = 0
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid;
- ELSE
- UPDATE u_buytaskmx
- SET stopflag = 1,
- stopemp = :publ_operator,
- stopdate = getdate(),
- stopreason = :arg_stopreason,
- stopqty = :arg_stopqty
- WHERE scid = :arg_scid
- AND 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
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_commit THEN
- COMMIT;
- END IF
- arg_msg = '采购订单,'+ arg_msg
- RETURN rslt
- end function
- public function integer addmxcmpl (long arg_scid, long arg_taskid, long arg_printid, decimal arg_qty, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1,cnt = 0
- uo_saletask uo_sale
- uo_sale = Create uo_saletask
- uo_sale.commit_transaction = commit_transaction
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF arg_qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,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
- //====================================================================
- // Script - addmxcmpl ( long arg_scid, long arg_taskid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit )
- // Reason:检查数量限制
- //--------------------------------------------------------------------
- // Modified By: yyx Date: 2004.02.12
- //--------------------------------------------------------------------
- Decimal ls_buyqty,ls_consignedqty
- Decimal ls_buyaddqty,ls_consignedaddqty,ld_stopqty
- String ls_mtrlcode
- Long ll_mtrlid, ll_relid2, ll_relid, ll_relprintid
- Decimal ld_uprate,ld_upqty, lde_rate, ld_updatewareqty
- Int li_billtype
- SELECT billtype
- INTO :li_billtype
- FROM u_buytask
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询采购订单信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT mtrlid, relid2, relid, relprintid, rate
- INTO :ll_mtrlid, :ll_relid2, :ll_relid, :ll_relprintid, :lde_rate
- FROM u_buytaskmx
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询采购订单,物料资料失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT mtrlcode, uprate , upqty
- INTO :ls_mtrlcode, :ld_uprate,:ld_upqty
- FROM u_mtrldef
- WHERE mtrlid = :ll_mtrlid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料资料失败'
- GOTO ext
- END IF
- IF sys_option_ifovertask = 0 THEN
- SELECT u_buytaskmx.uqty,
- u_buytaskmx.consignedqty,
- u_buytaskmx.addqty,
- u_buytaskmx.consignedaddqty,
- u_buytaskmx.stopqty
- INTO :ls_buyqty,
- :ls_consignedqty,
- :ls_buyaddqty,
- :ls_consignedaddqty,
- :ld_stopqty
- FROM u_buytaskmx
- WHERE ( u_buytaskmx.taskid = :arg_taskid ) AND
- ( u_buytaskmx.printid = :arg_printid ) AND
- ( u_buytaskmx.scid = :arg_scid) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询编码["+ls_mtrlcode+"]采购订单已完成数量操作失败"
- GOTO ext
- END IF
-
- IF ls_buyqty < ls_consignedqty + arg_qty THEN
- rslt = 0
- arg_msg = "["+ls_mtrlcode+"]的未完成数量只有"+String(ls_buyqty - ls_consignedqty - ld_stopqty,'#,##0.0###')+",不能入库"+String(arg_qty,'#,##0.0#')
- GOTO ext
- END IF
-
- IF ls_buyaddqty < ls_consignedaddqty + arg_addqty THEN
- rslt = 0
- arg_msg = "["+ls_mtrlcode+"]的未完成辅数量只有"+String(ls_buyaddqty - ls_consignedaddqty - ld_stopqty,'#,##0.0###')+",不能入库"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
-
- If (ls_buyqty = ls_consignedqty + arg_qty + ld_stopqty) And (ls_buyaddqty <> ls_consignedaddqty + arg_addqty) THEN
- rslt = 0
- arg_msg = "["+ls_mtrlcode+"]数量已全部到货时,辅数必须也全部到货."
- GOTO ext
- END IF
- ELSEIF sys_option_ifovertask = 2 THEN
-
- SELECT u_buytaskmx.uqty,
- u_buytaskmx.consignedqty,
- u_buytaskmx.addqty,
- u_buytaskmx.consignedaddqty,
- u_buytaskmx.stopqty
- INTO :ls_buyqty,
- :ls_consignedqty,
- :ls_buyaddqty,
- :ls_consignedaddqty,
- :ld_stopqty
- FROM u_buytaskmx
- WHERE ( u_buytaskmx.taskid = :arg_taskid ) AND
- ( u_buytaskmx.printid = :arg_printid ) AND
- ( u_buytaskmx.scid = :arg_scid) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询编码["+ls_mtrlcode+"]采购订单已完成数量操作失败"
- GOTO ext
- END IF
-
- IF ls_buyqty * (1 + ld_uprate) + ld_upqty < ls_consignedqty + arg_qty THEN
- rslt = 0
- arg_msg = "["+ls_mtrlcode+"]的未完成数量只有"+String(ls_buyqty - ls_consignedqty - ld_stopqty,'#,##0.0###')+",不能入库"+String(arg_qty,'#,##0.0#')
- GOTO ext
- END IF
-
- IF ls_buyaddqty < ls_consignedaddqty + arg_addqty THEN
- rslt = 0
- arg_msg = "["+ls_mtrlcode+"]的未完成辅数量只有"+String(ls_buyaddqty - ls_consignedaddqty ,'#,##0.0###')+",不能入库"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
-
-
- If (ls_buyqty * (1 + ld_uprate) + ld_upqty = ls_consignedqty + arg_qty + ld_stopqty) And (ls_buyaddqty <> ls_consignedaddqty + arg_addqty) THEN
- rslt = 0
- arg_msg = "["+ls_mtrlcode+"]数量已全部到货时,辅数必须也全部到货."
- GOTO ext
- END IF
-
-
- END IF
- UPDATE u_buytaskmx
- SET consignedqty = consignedqty + :arg_qty,
- consignedaddqty = consignedaddqty + :arg_addqty
- WHERE ( u_buytaskmx.taskid = :arg_taskid ) AND
- ( u_buytaskmx.printid = :arg_printid ) AND
- ( u_buytaskmx.scid = :arg_scid) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新采购订单完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ld_updatewareqty = arg_qty * lde_rate //库存单位
- IF ll_relid2 > 0 THEN
- UPDATE u_OrderRqMtrl
- SET inqty = inqty + :ld_updatewareqty
- Where mxpkid = :ll_relid2 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新销售订单明细的采购需求已订货数操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- //更新销售订单已进仓数
- IF li_billtype = 1 THEN
- IF uo_sale.addmxcmpl_assign(scid, ll_relid, ll_relprintid, &
- ll_mtrlid, 4, ld_updatewareqty, False, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- Destroy uo_sale
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- arg_msg = '采购订单,'+ arg_msg
- Return (rslt)
- end function
- public function integer cstopbuytask (long arg_scid, 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_scid,arg_taskid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- IF Status<>3 THEN
- rslt=0
- arG_MSG="订单只有在终止状态才可以执行取消终止,请核对"
- goto ext
- END IF
- UPDATE u_buyTask
- SET Status = 1,accomplishdate=null,stopemp=''
- WHERE TaskID = :arg_taskid and scid=:arg_scid using commit_transaction ;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="取消终止采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- rollback using commit_transaction;
- goto ext
- end if
- it_newbegin=FALSE
- it_updatebegin=FALSE
- EXT:
- if arg_ifcommit and rslt=1 then
- COMMIT using commit_transaction;
- end if
- p_reset()
- arg_msg = '采购订单,'+ arg_msg
- return (rslt)
- end function
- public function integer stopbuytask (long arg_scid, 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_scid,arg_taskid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- IF Status<>1 THEN
- rslt=0
- arG_MSG="订单只有在进行状态才可以执行终止,请核对"
- goto ext
- END IF
- UPDATE u_buyTask
- SET Status = 3,accomplishdate=getdate(),stopemp=:publ_operator
- WHERE TaskID = :arg_taskid and scid=:arg_scid using commit_transaction ;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="终止采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- rollback using commit_transaction;
- goto ext
- end if
- it_newbegin=FALSE
- it_updatebegin=FALSE
- EXT:
- if arg_ifcommit and rslt=1 then
- COMMIT using commit_transaction;
- end if
- p_reset()
- arg_msg = '采购订单,'+ arg_msg
- return (rslt)
- end function
- public function integer acceptmx (s_buytask_mx s_mx, ref string arg_msg);Long rslt = 1,cnt = 0,LS_i
- Dec ld_dftsptprice
- Dec ld_round = 100
- ld_round = 10.0 ^ (2 - sys_option_inware_buy_amt_round)
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- String ls_sptmtrlname
- //uo_spt_price uo_price
- //uo_price = CREATE uo_spt_price
- If it_newbegin = False And it_updatebegin = False Then
- rslt = 0
- arG_MSG = "非编辑状态不可以使用,操作取消"
- Goto ext
- End If
- //清除空值
- If IsNull(s_mx.iforder) Then s_mx.iforder = 1
- If IsNull(s_mx.orderid) Then s_mx.orderid = 0
- If IsNull(s_mx.ordercode) Then s_mx.ordercode = ''
- If IsNull(s_mx.mtrlid) Then s_mx.mtrlid = 0
- If IsNull(s_mx.uqty) Then s_mx.uqty = 0
- If IsNull(s_mx.addqty) Then s_mx.addqty = 0
- If IsNull(s_mx.uprice) Then s_mx.uprice = 0
- If IsNull(s_mx.rebate) Then s_mx.rebate = 0
- If IsNull(s_mx.planprice) Then s_mx.planprice = 0
- If IsNull(s_mx.dscrp) Then s_mx.dscrp = ''
- If IsNull(s_mx.mtrlCODE) Then s_mx.mtrlCODE = ''
- If IsNull(s_mx.printid) Then s_mx.printid = 0
- If IsNull(s_mx.storageid) Then s_mx.storageid = 0
- If IsNull(s_mx.status) Then s_mx.status = ''
- If IsNull(s_mx.woodcode) Then s_mx.woodcode = ''
- If IsNull(s_mx.pcode) Then s_mx.pcode = ''
- If IsNull(s_mx.unit) Then s_mx.unit = ''
- If IsNull(s_mx.rate) Then s_mx.rate = 1
- If s_mx.rate = 0 Then s_mx.rate = 1
- If IsNull(s_mx.relid) Then s_mx.relid = 0
- If IsNull(s_mx.relprintid) Then s_mx.relprintid = 0
- If IsNull(s_mx.relid2) Then s_mx.relid2 = 0
- If IsNull(s_mx.relcode) Then s_mx.relcode = ''
- If IsNull(s_mx.formula) Then s_mx.formula = ''
- If IsNull(s_mx.tax) Then s_mx.tax = 0
- If IsNull(s_mx.plancode) Then s_mx.plancode = ''
- If IsNull(s_mx.uprice_notax) Then s_mx.uprice_notax = 0 //不含税单价
- If IsNull(s_mx.uamt_tax) Then s_mx.uamt_tax = 0 //税金
- If IsNull(s_mx.dscrp2) Then s_mx.dscrp2 = ''
- If IsNull(s_mx.dscrp3) Then s_mx.dscrp3 = ''
- If IsNull(s_mx.dscrp4) Then s_mx.dscrp4 = ''
- If s_mx.uprice_notax = 0 Then
- s_mx.uprice_notax = s_mx.uprice / (1 + s_mx.tax)
- End If
- s_mx.uqty = Round(s_mx.uqty,4)
- If s_mx.mtrlid = 0 Or s_mx.uqty = 0 Then // 如果进仓数量为 0,或物料编号为空,则不作任何处理
- rslt = 1
- Goto ext
- End If
- If f_check_status(1, s_mx.status) = 0 Then
- rslt = 0
- arG_MSG = "查询操作失败,可能颜色未定义,"+s_mx.mtrlCODE+",颜色:"+s_mx.status
- Goto ext
- End If
- //检查销售订单单据ID
- If s_mx.relid > 0 Then
- Select count(*)
- Into :cnt
- From u_saletask
- Where taskid = :s_mx.relid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arG_MSG = "查询操作失败,销售订单"
- Goto ext
- End If
- End If
- //检查物料ID
- Select COUNT(*)
- Into :cnt
- From u_mtrldef
- Where u_mtrldef.mtrlid = :s_mx.mtrlid ;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arG_MSG = "查询操作失败,物料编号"
- Goto ext
- End If
- If cnt = 0 Then
- rslt = 0
- arG_MSG = "错误的编码: "+String(s_mx.mtrlCODE)
- Goto ext
- End If
- cnt = 0
- Select COUNT(*)
- Into :cnt
- From u_storage
- Where u_storage.storageid = :s_mx.storageid ;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arG_MSG = "查询操作失败,仓库编号"
- Goto ext
- End If
- If cnt = 0 Then
- rslt = 0
- arG_MSG = "错误的仓库编号"
- Goto ext
- End If
- If s_mx.tax < 0 Then
- rslt = 0
- arG_MSG = "税率不能为负数"
- Goto ext
- End If
- If sys_option_buyprice_buytask_limit = 1 Then
- Int li_iflimitprice
- Select iflimitprice Into :li_iflimitprice
- From u_mtrldef
- Where mtrlid = :s_mx.mtrlid;
- If sqlca.SQLCode <> 0 Then
- arG_MSG = '查询'+s_mx.mtrlCODE+'收货限价属性失败 '
- rslt = 0
- Goto ext
- End If
-
- If li_iflimitprice = 1 Then
- If uo_sptprice.uf_check_price_save(0,sptid,s_mx.mtrlid,s_mx.mtrlCODE,s_mx.unit,s_mx.status,s_mx.woodcode,s_mx.pcode,s_mx.uprice * s_mx.rebate,arG_MSG) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- End If
- f_get_defsptprice(sptid,s_mx.mtrlid,s_mx.unit,s_mx.status,s_mx.pcode,s_mx.woodcode,ld_dftsptprice)
- If sys_option_buytask_mxhb = 0 Then
- For LS_i = 1 To it_mxbt //合并重复项
- If buytaskmx[LS_i].mtrlid = s_mx.mtrlid And &
- buytaskmx[LS_i].orderid = s_mx.orderid And &
- buytaskmx[LS_i].status = s_mx.status And &
- buytaskmx[LS_i].woodcode = s_mx.woodcode And &
- buytaskmx[LS_i].pcode = s_mx.pcode And &
- buytaskmx[LS_i].unit = s_mx.unit And &
- buytaskmx[LS_i].relid = s_mx.relid And &
- buytaskmx[LS_i].relprintid = s_mx.relprintid And &
- buytaskmx[LS_i].relid2 = s_mx.relid2 And &
- buytaskmx[LS_i].plancode = s_mx.plancode Then
- if left(string(buytaskmx[LS_i].requiredate,'yyyy-mm-dd'),10) = left(string(s_mx.requiredate,'yyyy-mm-dd'),10) then
- buytaskmx[LS_i].uqty += s_mx.uqty
- buytaskmx[LS_i].addqty += s_mx.addqty
- buytaskmx[LS_i].Qty += Round(s_mx.uqty * s_mx.rate,sys_option_unit_dec)
-
- buytaskmx[LS_i].uamt += Round(s_mx.uqty * s_mx.uprice * s_mx.rebate * ld_round, 0) / ld_round //原币,实价含税金额
- buytaskmx[LS_i].uamt_tax += Round((s_mx.uqty * s_mx.uprice * s_mx.rebate) * s_mx.tax / (1 + s_mx.tax) * ld_round, 0) / ld_round //原币, 税金
- buytaskmx[LS_i].bsamt += Round(s_mx.uqty * s_mx.uprice * s_mx.rebate * mrate * ld_round, 0) / ld_round //本位币, 实价含税金额
- buytaskmx[LS_i].bsamt_tax += Round((s_mx.uqty * s_mx.uprice * s_mx.rebate * mrate) * s_mx.tax / (1 + s_mx.tax) * ld_round, 0) / ld_round //本位币, 税金
-
- rslt = 1
- Goto ext
- end if
- End If
- Next
- End If
- If uo_sptprice.uf_getmtrlname(sptid,s_mx.mtrlid,ls_sptmtrlname,arG_MSG) = 0 Then
- rslt = 0
- Goto ext
- End If
- //写入内容
- it_mxbt++
- buytaskmx[it_mxbt].printid = s_mx.printid
- buytaskmx[it_mxbt].iforder = s_mx.iforder
- buytaskmx[it_mxbt].orderid = s_mx.orderid
- buytaskmx[it_mxbt].ordercode = s_mx.ordercode
- buytaskmx[it_mxbt].mtrlid = s_mx.mtrlid
- buytaskmx[it_mxbt].uqty = s_mx.uqty
- buytaskmx[it_mxbt].addqty = s_mx.addqty
- buytaskmx[it_mxbt].Qty = Round(s_mx.uqty * s_mx.rate,sys_option_unit_dec)
- buytaskmx[it_mxbt].plprice = s_mx.planprice
- buytaskmx[it_mxbt].dscrp = s_mx.dscrp
- buytaskmx[it_mxbt].dscrp2 = s_mx.dscrp2
- buytaskmx[it_mxbt].dscrp3 = s_mx.dscrp3
- buytaskmx[it_mxbt].dscrp4 = s_mx.dscrp4
- buytaskmx[it_mxbt].mtrlCODE = s_mx.mtrlCODE
- buytaskmx[it_mxbt].unit = s_mx.unit
- buytaskmx[it_mxbt].rate = s_mx.rate
- buytaskmx[it_mxbt].rebate = s_mx.rebate
- buytaskmx[it_mxbt].tax = s_mx.tax
- buytaskmx[it_mxbt].uprice = s_mx.uprice
- If Round(s_mx.uqty * s_mx.rate,sys_option_unit_dec) <> 0 Then //出现除数为0
- buytaskmx[it_mxbt].fprice = Round((s_mx.uprice * s_mx.uqty)/(Round(s_mx.uqty * s_mx.rate,sys_option_unit_dec)),10)
- Else
- buytaskmx[it_mxbt].fprice = s_mx.uprice
- End If
- buytaskmx[it_mxbt].acprice = buytaskmx[it_mxbt].fprice * s_mx.rebate //对应数据库 price
- buytaskmx[it_mxbt].uamt = Round(s_mx.uqty * s_mx.uprice * s_mx.rebate * ld_round, 0) / ld_round //原币,实价含税金额
- If s_mx.uamt_tax = 0 Then
- buytaskmx[it_mxbt].uamt_tax = Round((s_mx.uqty * s_mx.uprice * s_mx.rebate) * s_mx.tax / (1 + s_mx.tax) * ld_round, 0) / ld_round //原币, 税金
- Else
- buytaskmx[it_mxbt].uamt_tax = s_mx.uamt_tax
- End If
- buytaskmx[it_mxbt].bsamt = Round(s_mx.uqty * s_mx.uprice * s_mx.rebate * mrate * ld_round, 0) / ld_round //本位币, 实价含税金额
- buytaskmx[it_mxbt].bsamt_tax = Round((s_mx.uqty * s_mx.uprice * s_mx.rebate * mrate) * s_mx.tax / (1 + s_mx.tax) * ld_round, 0) / ld_round //本位币, 税金
- If sys_option_msp_multimoney = 1 Then //使用多币种
- mstpayamt += buytaskmx[it_mxbt].uamt
- Else // 系统不使用多币种,转换为人民币
- mstpayamt += buytaskmx[it_mxbt].bsamt
- End If
- buytaskmx[it_mxbt].requiredate = s_mx.requiredate
- buytaskmx[it_mxbt].status = s_mx.status
- buytaskmx[it_mxbt].woodcode = s_mx.woodcode
- buytaskmx[it_mxbt].pcode = s_mx.pcode
- buytaskmx[it_mxbt].storageid = s_mx.storageid
- buytaskmx[it_mxbt].dftsptprice = ld_dftsptprice
- buytaskmx[it_mxbt].relid = s_mx.relid
- buytaskmx[it_mxbt].relprintid = s_mx.relprintid
- buytaskmx[it_mxbt].relid2 = s_mx.relid2
- buytaskmx[it_mxbt].relcode = s_mx.relcode
- buytaskmx[it_mxbt].formula = s_mx.formula
- buytaskmx[it_mxbt].formula2 = s_mx.formula2
- buytaskmx[it_mxbt].sptmtrlname = ls_sptmtrlname
- buytaskmx[it_mxbt].plancode = s_mx.plancode
- buytaskmx[it_mxbt].uprice_notax = s_mx.uprice_notax
- ext:
- //DESTROY uo_price
- Destroy uo_sptprice
- If rslt = 0 Then
- p_clearmx()
- arG_MSG = '采购订单,'+ arG_MSG
- End If
- Return(rslt)
- end function
- public function integer acceptmx (integer arg_iforder, long arg_orderid, string arg_ordercode, long arg_mtrlid, decimal arg_uqty, decimal arg_addqty, decimal arg_uprice, decimal arg_rebate, decimal arg_planprice, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, datetime arg_requiredate, long arg_storageid, string arg_status, string arg_woodcode, string arg_pcode, string arg_unit, decimal arg_rate, long arg_relid, long arg_relprintid, string arg_relcode, string arg_formula, long arg_relid2, decimal arg_tax, string arg_plancode, string arg_dscrp2, string arg_dscrp3, string arg_dscrp4);s_buytask_mx s_mx
- s_mx.mtrlid = arg_mtrlid
- s_mx.uqty = arg_uqty
- s_mx.addqty = arg_addqty
- s_mx.uprice = arg_uprice
- s_mx.rebate = arg_rebate
- s_mx.dscrp = arg_dscrp
- s_mx.mtrlcode = arg_mtrlcode
- s_mx.printid = arg_printid
- s_mx.requiredate = arg_requiredate
- s_mx.storageid = arg_storageid
- s_mx.status = arg_status
- s_mx.woodcode = arg_woodcode
- s_mx.pcode = arg_pcode
- s_mx.unit = arg_unit
- s_mx.rate = arg_rate
- s_mx.relid = arg_relid
- s_mx.relprintid = arg_relprintid
- s_mx.relcode = arg_relcode
- s_mx.formula = arg_formula
- s_mx.relid2 = arg_relid2
- s_mx.tax = arg_tax
- s_mx.plancode = arg_plancode
- s_mx.dscrp2 = arg_dscrp2
- s_mx.dscrp3 = arg_dscrp3
- s_mx.dscrp4 = arg_dscrp4
- return acceptmx(s_mx, arg_msg)
- //
- //
- //
- //Long rslt = 1,cnt = 0,LS_i
- //Dec ld_dftsptprice
- //
- //Dec ld_round = 100
- //ld_round = 10.0 ^ (2 - sys_option_inware_buy_amt_round)
- //
- //uo_spt_price uo_sptprice
- //uo_sptprice = Create uo_spt_price
- //
- //String ls_sptmtrlname
- ////uo_spt_price uo_price
- ////uo_price = CREATE uo_spt_price
- //
- //If it_newbegin = False And it_updatebegin = False Then
- // rslt = 0
- // arG_MSG = "非编辑状态不可以使用,操作取消"
- // Goto ext
- //End If
- //
- ////清除空值
- //If IsNull(arg_iforder) Then arg_iforder = 1
- //If IsNull(arg_orderid) Then arg_orderid = 0
- //If IsNull(arg_ordercode) Then arg_ordercode = ''
- //If IsNull(arg_mtrlid) Then arg_mtrlid = 0
- //If IsNull(arg_uqty) Then arg_uqty = 0
- //If IsNull(arg_addqty) Then arg_addqty = 0
- //If IsNull(arg_uprice) Then arg_uprice = 0
- //If IsNull(arg_rebate) Then arg_rebate = 0
- //If IsNull(arg_planprice) Then arg_planprice = 0
- //If IsNull(arg_dscrp) Then arg_dscrp = ''
- //If IsNull(ARG_mtrlCODE) Then ARG_mtrlCODE = ''
- //If IsNull(arg_printid) Then arg_printid = 0
- //If IsNull(arg_storageid) Then arg_storageid = 0
- //If IsNull(arg_status) Then arg_status = ''
- //If IsNull(arg_woodcode) Then arg_woodcode = ''
- //If IsNull(arg_pcode) Then arg_pcode = ''
- //If IsNull(arg_unit) Then arg_unit = ''
- //If IsNull(arg_rate) Then arg_rate = 1
- //If arg_rate = 0 Then arg_rate = 1
- //
- //If IsNull(arg_relid) Then arg_relid = 0
- //If IsNull(arg_relprintid) Then arg_relprintid = 0
- //If IsNull(arg_relid2) Then arg_relid2 = 0
- //
- //If IsNull(arg_relcode) Then arg_relcode = ''
- //If IsNull(arg_formula) Then arg_formula = ''
- //If IsNull(arg_tax) Then arg_tax = 0
- //
- //If IsNull(arg_plancode) Then arg_plancode = ''
- //
- //
- //arg_uqty = Round(arg_uqty,4)
- //
- //If arg_mtrlid = 0 Or arg_uqty = 0 Then // 如果进仓数量为 0,或物料编号为空,则不作任何处理
- // rslt = 1
- // Goto ext
- //End If
- //
- //If f_check_status(1, arg_status) = 0 Then
- // rslt = 0
- // arG_MSG = "查询操作失败,可能颜色未定义,"+ARG_mtrlCODE+",颜色:"+arg_status
- // Goto ext
- //End If
- //
- ////检查销售订单单据ID
- //If arg_relid > 0 Then
- // Select count(*)
- // Into :cnt
- // From u_saletask
- // Where taskid = :arg_relid;
- // If sqlca.SQLCode <> 0 Then
- // rslt = 0
- // arG_MSG = "查询操作失败,销售订单"
- // Goto ext
- // End If
- //End If
- //
- ////检查物料ID
- //Select COUNT(*)
- // Into :cnt
- // From u_mtrldef
- // Where u_mtrldef.mtrlid = :arg_mtrlid ;
- //If sqlca.SQLCode <> 0 Then
- // rslt = 0
- // arG_MSG = "查询操作失败,物料编号"
- // Goto ext
- //End If
- //
- //If cnt = 0 Then
- // rslt = 0
- // arG_MSG = "错误的编码: "+String(ARG_mtrlCODE)
- // Goto ext
- //End If
- //
- //cnt = 0
- //Select COUNT(*)
- // Into :cnt
- // From u_storage
- // Where u_storage.storageid = :arg_storageid ;
- //If sqlca.SQLCode <> 0 Then
- // rslt = 0
- // arG_MSG = "查询操作失败,仓库编号"
- // Goto ext
- //End If
- //
- //If cnt = 0 Then
- // rslt = 0
- // arG_MSG = "错误的仓库编号"
- // Goto ext
- //End If
- //
- //If arg_tax < 0 Then
- // rslt = 0
- // arG_MSG = "税率不能为负数"
- // Goto ext
- //End If
- //
- //
- //If sys_option_buyprice_buytask_limit = 1 Then
- // Int li_iflimitprice
- // Select iflimitprice Into :li_iflimitprice
- // From u_mtrldef
- // Where mtrlid = :arg_mtrlid;
- // If sqlca.SQLCode <> 0 Then
- // arG_MSG = '查询'+ARG_mtrlCODE+'收货限价属性失败 '
- // rslt = 0
- // Goto ext
- // End If
- //
- // If li_iflimitprice = 1 Then
- // If uo_sptprice.uf_check_price_save(0,sptid,arg_mtrlid,ARG_mtrlCODE,arg_unit,arg_status,arg_woodcode,arg_pcode,arg_uprice * arg_rebate,arG_MSG) = 0 Then
- // rslt = 0
- // Goto ext
- // End If
- // End If
- //End If
- //
- //f_get_defsptprice(sptid,arg_mtrlid,arg_unit,arg_status,arg_pcode,arg_woodcode,ld_dftsptprice)
- //
- //If sys_option_buytask_mxhb = 0 Then
- // For LS_i = 1 To it_mxbt //合并重复项
- // If buytaskmx[LS_i].mtrlid = arg_mtrlid And &
- // buytaskmx[LS_i].orderid = arg_orderid And &
- // buytaskmx[LS_i].requiredate = arg_requiredate And &
- // buytaskmx[LS_i].status = arg_status And &
- // buytaskmx[LS_i].woodcode = arg_woodcode And &
- // buytaskmx[LS_i].pcode = arg_pcode And &
- // buytaskmx[LS_i].unit = arg_unit And &
- // buytaskmx[LS_i].relid = arg_relid And &
- // buytaskmx[LS_i].relprintid = arg_relprintid And &
- // buytaskmx[LS_i].relid2 = arg_relid2 Then
- //
- // buytaskmx[LS_i].uqty += arg_uqty
- // buytaskmx[LS_i].addqty += arg_addqty
- // buytaskmx[LS_i].Qty += Round(arg_uqty * arg_rate,sys_option_unit_dec)
- //
- // buytaskmx[LS_i].uamt += Round(arg_uqty * arg_uprice * arg_rebate * ld_round, 0) / ld_round //原币,实价含税金额
- // buytaskmx[LS_i].uamt_tax += Round((arg_uqty * arg_uprice * arg_rebate) * arg_tax / (1 + arg_tax) * ld_round, 0) / ld_round //原币, 税金
- // buytaskmx[LS_i].bsamt += Round(arg_uqty * arg_uprice * arg_rebate * mrate * ld_round, 0) / ld_round //本位币, 实价含税金额
- // buytaskmx[LS_i].bsamt_tax += Round((arg_uqty * arg_uprice * arg_rebate * mrate) * arg_tax / (1 + arg_tax) * ld_round, 0) / ld_round //本位币, 税金
- //
- // rslt = 1
- // Goto ext
- // End If
- // Next
- //End If
- //
- //If uo_sptprice.uf_getmtrlname(sptid,arg_mtrlid,ls_sptmtrlname,arG_MSG) = 0 Then
- // rslt = 0
- // Goto ext
- //End If
- //
- //
- ////写入内容
- //it_mxbt++
- //buytaskmx[it_mxbt].printid = arg_printid
- //
- //buytaskmx[it_mxbt].iforder = arg_iforder
- //buytaskmx[it_mxbt].orderid = arg_orderid
- //buytaskmx[it_mxbt].ordercode = arg_ordercode
- //buytaskmx[it_mxbt].mtrlid = arg_mtrlid
- //
- //buytaskmx[it_mxbt].uqty = arg_uqty
- //buytaskmx[it_mxbt].addqty = arg_addqty
- //buytaskmx[it_mxbt].Qty = Round(arg_uqty * arg_rate,sys_option_unit_dec)
- //
- //buytaskmx[it_mxbt].plprice = arg_planprice
- //buytaskmx[it_mxbt].dscrp = arg_dscrp
- //buytaskmx[it_mxbt].mtrlcode = ARG_mtrlCODE
- //
- //buytaskmx[it_mxbt].unit = arg_unit
- //buytaskmx[it_mxbt].rate = arg_rate
- //buytaskmx[it_mxbt].rebate = arg_rebate
- //buytaskmx[it_mxbt].tax = arg_tax
- //buytaskmx[it_mxbt].uprice = arg_uprice
- //
- //If Round(arg_uqty * arg_rate,sys_option_unit_dec) <> 0 Then //出现除数为0
- // buytaskmx[it_mxbt].fprice = Round((arg_uprice * arg_uqty)/(Round(arg_uqty * arg_rate,sys_option_unit_dec)),10)
- //Else
- // buytaskmx[it_mxbt].fprice = arg_uprice
- //End If
- //
- //buytaskmx[it_mxbt].acprice = buytaskmx[it_mxbt].fprice * arg_rebate //对应数据库 price
- //
- //buytaskmx[it_mxbt].uamt = Round(arg_uqty * arg_uprice * arg_rebate * ld_round, 0) / ld_round //原币,实价含税金额
- //buytaskmx[it_mxbt].uamt_tax = Round((arg_uqty * arg_uprice * arg_rebate) * arg_tax / (1 + arg_tax) * ld_round, 0) / ld_round //原币, 税金
- //buytaskmx[it_mxbt].bsamt = Round(arg_uqty * arg_uprice * arg_rebate * mrate * ld_round, 0) / ld_round //本位币, 实价含税金额
- //buytaskmx[it_mxbt].bsamt_tax = Round((arg_uqty * arg_uprice * arg_rebate * mrate) * arg_tax / (1 + arg_tax) * ld_round, 0) / ld_round //本位币, 税金
- //
- //
- //buytaskmx[it_mxbt].requiredate = arg_requiredate
- //buytaskmx[it_mxbt].status = arg_status
- //buytaskmx[it_mxbt].woodcode = arg_woodcode
- //buytaskmx[it_mxbt].pcode = arg_pcode
- //buytaskmx[it_mxbt].storageid = arg_storageid
- //buytaskmx[it_mxbt].dftsptprice = ld_dftsptprice
- //
- //buytaskmx[it_mxbt].relid = arg_relid
- //buytaskmx[it_mxbt].relprintid = arg_relprintid
- //buytaskmx[it_mxbt].relid2 = arg_relid2
- //buytaskmx[it_mxbt].relcode = arg_relcode
- //buytaskmx[it_mxbt].formula = arg_formula
- //
- //
- //buytaskmx[it_mxbt].sptmtrlname = ls_sptmtrlname
- //buytaskmx[it_mxbt].plancode = arg_plancode
- //
- //
- //ext:
- ////DESTROY uo_price
- //Destroy uo_sptprice
- //If rslt = 0 Then
- // p_clearmx()
- // arG_MSG = '采购订单,'+ arG_MSG
- //End If
- //Return(rslt)
- //
- //
- //
- end function
- public function integer wf_check_taskdamt (integer arg_scid, integer arg_taskid, ref string msg);//检查是否已开采购付款单 //0 失败 1成功
- long i = 0 , rslt = 1
- select COUNT(relid) into :i
- FROM u_taskdamt_mx INNER JOIN
- u_taskdamt ON u_taskdamt_mx.billid = u_taskdamt.billid
- where u_taskdamt_mx.relid = :arg_TaskID and
- u_taskdamt_mx.scid =:arg_scid and
- u_taskdamt.billtype = 1
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- msg = "查询操作失败,采购付款单"
- GOTO ext
- END IF
- if i > 0 then
- msg= '已开采购付款单不允许删除'
- rslt = 0
- GOTO ext
- end if
- ext:
- RETURN rslt
-
- end function
- public function integer priceaudit (long arg_scid, long arg_taskid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,i
- IF arg_scid < 0 THEN
- rslt = 0
- arg_msg = "错误的分部ID"
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = "没有确认对象"
- GOTO ext
- END IF
- if getinfo(arg_scid,arg_taskid,arg_msg) = 0 then
- rslt = 0
- goto ext
- end if
- IF priceflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经确认"
- GOTO ext
- END IF
- UPDATE u_buytask
- SET priceemp = :publ_operator,
- pricedate = getdate(),
- priceflag = 1
- WHERE u_buytask.taskid = :arg_taskid
- AND priceflag = 0
- AND scid = :arg_scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- priceflag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer c_priceaudit (long arg_scid, long arg_taskid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,i
- DateTime null_dt
- SetNull(null_dt)
- IF arg_scid < 0 THEN
- rslt = 0
- arg_msg = "错误的分部ID"
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = "没有确认对象"
- GOTO ext
- END IF
- if getinfo(arg_scid,arg_taskid,arg_msg) = 0 then
- rslt = 0
- goto ext
- end if
- IF priceflag = 0 THEN
- rslt = 0
- arg_msg = "单据未确认"
- GOTO ext
- END IF
- UPDATE u_buytask
- SET priceemp = '',
- pricedate = :null_dt,
- priceflag = 0
- WHERE u_buytask.taskid = :arg_taskid
- AND priceflag = 1
- AND scid = :arg_scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- priceflag = 0
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- on uo_buytask.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_buytask.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|