1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975 |
- $PBExportHeader$uo_warepdb_bill.sru
- forward
- global type uo_warepdb_bill from nonvisualobject
- end type
- type s_dismantle_install from structure within uo_warepdb_bill
- end type
- end forward
- type s_dismantle_install from structure
- long printid
- long storageid
- long mtrlwareid
- long mtrlid
- decimal { 5 } qty
- decimal { 10 } price
- string status
- string plancode
- string woodcode
- string mxdscrp
- string mtrlcode
- string pcode
- integer dxflag
- long sptid
- long standardqty
- decimal { 5 } addqty
- string unit
- end type
- global type uo_warepdb_bill from nonvisualobject
- end type
- global uo_warepdb_bill uo_warepdb_bill
- type variables
- PUBLIC PROTECTEDWRITE Long billid
- PUBLIC PROTECTEDWRITE String billcode
- PUBLIC PROTECTEDWRITE DateTime opdate
- PUBLIC PROTECTEDWRITE String opemp
- PUBLIC PROTECTEDWRITE DateTime moddate
- PUBLIC PROTECTEDWRITE String modemp
- PUBLIC PROTECTEDWRITE Int flag
- PUBLIC PROTECTEDWRITE DateTime Permit_date
- PUBLIC PROTECTEDWRITE String Permit_emp
- DateTime billdate
- Long storageid
- String dscrp
- String assign_emp
- long scid
- String part
- Transaction commit_transaction //数据commit事务
- long ifpypk
- PRIVATE:
- s_warepdb_billmx d_i[] //明细结构数组
- Long it_mxbt = 0 //明细结构数组末指针
- Boolean it_newbegin = FALSE //新建标志
- Boolean it_updatebegin = FALSE//修改标志
- end variables
- forward prototypes
- public function integer p_clearmx ()
- public function integer p_reset ()
- public function integer updatebegin (long arg_billid, ref string arg_msg)
- public function integer save (ref string arg_msg, boolean arg_ifcommit)
- public function integer del (long arg_billid, ref string arg_msg)
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
- public function integer p_getinfo (long arg_billid, ref string arg_msg)
- public function integer getinfo (long arg_billid, ref string arg_msg)
- public function integer auditing (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg)
- public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer newbegin (ref string arg_msg)
- public function integer pypk (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_create_pypk (ref string arg_msg)
- public function integer uof_destroy_pypk (ref string arg_msg)
- public function integer acceptmx (decimal arg_factqty, decimal arg_factaddqty, string arg_mxdscrp, long arg_mtrlwareid, string arg_status, string arg_plancode, string arg_woodcode, string arg_pcode, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, long arg_sptid, long arg_dxflag, long arg_printid, decimal arg_wareamt, decimal arg_cost, string arg_mtrlcode, integer arg_packqty, ref string arg_msg)
- public function integer acceptmx2 (decimal arg_factqty, decimal arg_factaddqty, string arg_mxdscrp, long arg_mtrlwareid, string arg_status, string arg_plancode, string arg_woodcode, string arg_pcode, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, long arg_sptid, long arg_dxflag, long arg_printid, decimal arg_wareamt, decimal arg_cost, string arg_mtrlcode, integer arg_packqty, ref string arg_msg, string arg_waredscrp)
- end prototypes
- public function integer p_clearmx ();//INT p_clearmx()
- //清除明细
- it_mxbt=0
- RETURN 1
- end function
- public function integer p_reset ();//INT p_RESET()
- //清除对象及其明细
- billid = 0
- billcode = ''
- opemp = ''
- Permit_emp = ''
- flag = 0
- storageid = 0
- dscrp = ''
- part = ''
- it_newbegin = FALSE
- it_updatebegin = FALSE
- //清除明细
- P_CLEARMX()
- RETURN 1
- end function
- public function integer updatebegin (long arg_billid, ref string arg_msg);int rslt = 1
- if arg_billid <= 0 then
- billid = 0
- goto ext
- end if
- if p_getinfo(arg_billid,arg_msg) = 0 then
- rslt = 0
- goto ext
- end if
- if flag = 1 then
- rslt = 0
- arg_msg = '单据已经审核,不可以修改'
- goto ext
- end if
- billid = arg_billid
- p_clearmx()
- it_newbegin = false
- it_updatebegin = true
- ext:
- if rslt = 0 then p_reset()
- return rslt
- end function
- public function integer save (ref string arg_msg, boolean arg_ifcommit);
- Integer rslt = 1,i,cnt = 0
- DateTime server_dt
- Long ls_newid
- //
- IF IsNull(storageid) THEN storageid = 0
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(assign_emp) THEN assign_emp = ''
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以提交"
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_dt From u_user;
- //取得系统时间,借用操作员表
- 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
- ////////////////////////////////////////////// //开始区分:新建/更新 处理
- IF billid = 0 THEN //新建
- ls_newid = f_sys_scidentity(0,"u_warepdb_bill","billid",arg_msg,True,commit_transaction)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- billcode = getid(0,"PD",Date(server_dt),True,commit_transaction) //取得新单据编号
- IF billcode = "err" THEN
- billcode = ''
- rslt = 0
- arg_msg = "无法获取拆装单编号"
- GOTO ext
- END IF
-
-
- INSERT INTO u_warepdb_bill
- ( billid,
- billcode,
- Assign_Emp,
- billdate,
- opemp,
- opdate,
- Dscrp,
- storageid,
- scid,
- part )
- VALUES ( :ls_newid,
- :billcode,
- :Assign_Emp,
- :billdate,
- :publ_operator,
- :server_dt,
- :Dscrp,
- :storageid,
- :scid,
- :part) ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
-
- IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_warepdb_bill') > 0 THEN
- arg_msg = '插入单据资料失败,关键字ID重复'
- ELSEIF Pos(Lower(commit_transaction.SQLErrText),'IX_u_warepdb_bill') > 0 THEN
- arg_msg = '插入单据资料失败,单据编号重复'
- ELSE
- arg_msg = '插入单据资料失败,'+commit_transaction.SQLErrText
- END IF
-
- GOTO ext
- END IF
-
- billid = ls_newid
-
-
- ELSE //////////////////////////////////////////////// //更新
- UPDATE u_warepdb_bill
- SET Assign_Emp = :Assign_Emp,
- billdate = :billdate,
- modemp = :publ_operator,
- moddate = :server_dt,
- Dscrp = :Dscrp,
- storageid = :storageid,
- part = :part
- WHERE u_warepdb_bill.billid = :billid
- And flag = 0;
- 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_warepdb_billmx
- Where u_warepdb_billmx.billid = :billid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- // FOR i = 1 TO it_mxbt
- // INSERT INTO u_warepdb_billmx
- // ( mtrlid,
- // status,
- // qty,
- // factqty,
- // plancode,
- // Sptid,
- // scid,
- // mtrlwareid,
- // Dxflag,
- // woodcode,
- // pcode,
- // wareamt,
- // cost,
- // factaddqty,
- // addqty,
- // billid,
- // printid,
- // mxdscrp )
- // VALUES ( :d_i[i].mtrlid,
- // :d_i[i].status,
- // :d_i[i].qty,
- // :d_i[i].factqty,
- // :d_i[i]. plancode,
- // :d_i[i].Sptid,
- // :scid,
- // :d_i[i].mtrlwareid,
- // :d_i[i].Dxflag,
- // :d_i[i].woodcode,
- // :d_i[i].pcode,
- // :d_i[i].wareamt,
- // :d_i[i].cost,
- // :d_i[i].factaddqty,
- // :d_i[i].addqty,
- // :billid,
- // :d_i[i].printid,
- // :d_i[i].mxdscrp ) ;
- // IF commit_transaction.SQLCode <> 0 THEN
- // billid = 0 //还原billid
- // rslt = 0
- //
- // IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_warepdb_billmx') > 0 THEN
- // arg_msg = '插入单据明细资料失败,关键字ID重复'
- // ELSE
- // arg_msg = '插入单据明细资料失败,'+commit_transaction.SQLErrText
- // END IF
- // ROLLBACK ;
- // GOTO ext
- // END IF
- // NEXT
-
- END IF
- FOR i = 1 To it_mxbt
- INSERT INTO u_warepdb_billmx
- (scid,
- billid,
- printid,
- mtrlid,
- status,
- qty,
- factqty,
- plancode,
- Sptid,
- mtrlwareid,
- Dxflag,
- woodcode,
- pcode,
- wareamt,
- cost,
- factaddqty,
- addqty,
- mxdscrp,
- packqty,waredscrp)
- VALUES ( :scid,
- :billid,
- :d_i[i].printid,
- :d_i[i].mtrlid,
- :d_i[i].status,
- :d_i[i].qty,
- :d_i[i].factqty,
- :d_i[i]. plancode,
- :d_i[i].Sptid,
- :d_i[i].mtrlwareid,
- :d_i[i].Dxflag,
- :d_i[i].woodcode,
- :d_i[i].pcode,
- :d_i[i].wareamt,
- :d_i[i].cost,
- :d_i[i].factaddqty,
- :d_i[i].addqty,
- :d_i[i].mxdscrp,
- :d_i[i].packqty,:d_i[i].waredscrp) ;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN billid = 0 //还原billid
- rslt = 0
- arg_msg = '插入单据明细资料失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- p_clearmx()
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Return(rslt)
- end function
- public function integer del (long arg_billid, ref string arg_msg);//====================================================================
- // Function: del(arg_billid,arg_msg)
- //--------------------------------------------------------------------
- // Description:
- //--------------------------------------------------------------------
- // Arguments:
- // value long arg_billid
- // reference string arg_msg
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2003.11.21
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- int rslt = 1
- if arg_billid <= 0 then
- rslt = 0
- arg_msg = "没有删除对象,操作取消"
- goto ext
- end if
- if it_newbegin or it_updatebegin then
- rslt=0
- arg_msg="编辑状态下不可以执行,操作取消"
- goto ext
- end if
- select u_warepdb_bill.flag
- into :flag
- from u_warepdb_bill
- where u_warepdb_bill.billid = :arg_billid;
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = '查询拆装单操作失败'
- goto ext
- end if
- if flag = 1 then
- rslt = 0
- arg_msg = "单据已经审核,不可以删除"
- goto ext
- end if
- delete from u_warepdb_bill where u_warepdb_bill.billid = :arg_billid;
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = "删除仓库盘点单操作失败"+"~n"+sqlca.sqlerrtext
- goto ext
- end if
- delete from u_warepdb_billmx where u_warepdb_billmx.billid = :arg_billid;
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = "删除仓库盘点单明细操作失败"+"~n"+sqlca.sqlerrtext
- goto ext
- end if
- commit;
- it_newbegin = false
- it_updatebegin = false
- if rslt = 0 then
- rollback;
- p_reset()
- end if
- ext:
- return (rslt)
- end function
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);//====================================================================
- // Function: add_dscrp(arg_billid,arg_newdescppart,arg_msg)
- //--------------------------------------------------------------------
- // Description:
- //--------------------------------------------------------------------
- // Arguments:
- // value long arg_billid
- // value string arg_newdescppart
- // reference string arg_msg
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2003.11.21
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- int rslt = 1
- arg_newdescppart = trim(arg_newdescppart)
- if arg_billid <= 0 then
- rslt = 0
- arg_msg = "没有删除对象,操作取消"
- goto ext
- end if
- if it_newbegin or it_updatebegin then
- rslt=0
- arg_msg="编辑状态下不可以执行,操作取消"
- goto ext
- end if
- select u_warepdb_bill.flag
- into :flag
- from u_warepdb_bill
- where u_warepdb_bill.billid = :arg_billid;
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = '查询仓库盘点单操作失败'
- goto ext
- end if
- if flag = 0 then
- rslt = 0
- arg_msg = "非审核状态下不可用"
- goto ext
- end if
- update u_warepdb_bill
- set dscrp = dscrp+' '+:arg_newdescppart
- where u_warepdb_bill.billid = :billid;
- if sqlca.sqlcode <> 0 then
- rollback ;
- rslt = 0
- arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.sqlerrtext
- goto ext
- end if
- commit;
- dscrp = dscrp+' '+arg_newdescppart
- ext:
- return (rslt)
- end function
- public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
- IF arg_billid <= 0 THEN
- rslt = 0
- arG_MSG = "非法单据唯一码"
- GOTO ext
- END IF
- SELECT u_warepdb_bill.billid,
- u_warepdb_bill.billcode,
- u_warepdb_bill.Assign_Emp,
- u_warepdb_bill.flag,
- u_warepdb_bill.billdate,
- u_warepdb_bill.Dscrp,
- u_warepdb_bill.storageid,
- u_warepdb_bill.part,
- u_warepdb_bill.scid,
- u_warepdb_bill.ifpypk
- INTO :billid,
- :billcode,
- :Assign_Emp,
- :flag,
- :billdate,
- :Dscrp,
- :storageid,
- :part,
- :scid,
- :ifpypk
- FROM u_warepdb_bill
- Where u_warepdb_bill.billid = :arg_billid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败(错误单据唯一码)"+sqlca.SQLErrText
- GOTO ext
- END IF
- billid = arg_billid
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer getinfo (long arg_billid, ref string arg_msg);Int rslt = 1,i = 1,no_mxcheck = 0
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = "非法单据唯一码"
- GOTO ext
- END IF
- IF p_getinfo(arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_d_i_mx CURSOR FOR
- SELECT u_mtrldef.mtrlcode,
- u_warepdb_billmx.factqty,
- u_warepdb_billmx.factaddqty,
- u_warepdb_billmx.mxdscrp,
- u_warepdb_billmx.mtrlwareid,
- u_warepdb_billmx.status,
- u_warepdb_billmx.plancode,
- u_warepdb_billmx.woodcode,
- u_warepdb_billmx.pcode,
- u_warepdb_billmx.mtrlid,
- u_warepdb_billmx.qty,
- u_warepdb_billmx.addqty,
- u_mtrldef.unit,
- u_mtrldef.mtrlmode,
- u_mtrldef.mtrlname,
- u_warepdb_billmx.Sptid,
- u_warepdb_billmx.Dxflag,
- u_warepdb_billmx.wareamt,
- IsNull(u_cust.Name,'') as sptname ,
- IsNull(u_cust.cuscode,'') as sptcode ,
- u_mtrldef.mtrlsectype,
- u_mtrldef.zxmtrlmode,
- u_warepdb_billmx.billid,
- u_warepdb_billmx.printid,
- u_mtrldef.scllflag,
- u_mtrlware.waredscrp,
- u_mtrlware.inworkdate,
- u_warepdb_billmx.factqty - u_warepdb_billmx.qty ,
- u_warepdb_billmx.factaddqty - u_warepdb_billmx.addqty
- FROM u_warepdb_billmx INNER JOIN
- u_mtrldef ON u_warepdb_billmx.mtrlid = u_mtrldef.mtrlid left OUTER join
- u_cust ON u_warepdb_billmx.Sptid = u_cust.cusid INNER JOIN
- u_mtrlware on u_mtrlware.mtrlwareid = u_warepdb_billmx.mtrlwareid
- WHERE ( u_mtrldef.mtrlid = u_warepdb_billmx.mtrlid ) AND
- ( u_warepdb_billmx.billid = :arg_billid);
-
- OPEN cur_d_i_mx;
- FETCH cur_d_i_mx INTO :d_i[i].mtrlcode,
- :d_i[i].factqty,
- :d_i[i].factaddqty,
- :d_i[i].mxdscrp,
- :d_i[i].mtrlwareid,
- :d_i[i].status,
- :d_i[i].plancode,
- :d_i[i].woodcode,
- :d_i[i].pcode,
- :d_i[i].mtrlid,
- :d_i[i].qty,
- :d_i[i].addqty,
- :d_i[i].unit,
- :d_i[i].mtrlmode,
- :d_i[i].mtrlname,
- :d_i[i].Sptid,
- :d_i[i].Dxflag,
- :d_i[i].wareamt,
- :d_i[i].sptname ,
- :d_i[i].sptcode ,
- :d_i[i].mtrlsectype,
- :d_i[i].zxmtrlmode,
- :d_i[i].billid,
- :d_i[i].printid,
- :d_i[i].scllflag,
- :d_i[i].waredscrp,
- :d_i[i].inworkdate,
- :d_i[i].pypkqty,
- :d_i[i].pypkaddqty;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_d_i_mx INTO :d_i[i].mtrlcode,
- :d_i[i].factqty,
- :d_i[i].factaddqty,
- :d_i[i].mxdscrp,
- :d_i[i].mtrlwareid,
- :d_i[i].status,
- :d_i[i].plancode,
- :d_i[i].woodcode,
- :d_i[i].pcode,
- :d_i[i].mtrlid,
- :d_i[i].qty,
- :d_i[i].addqty,
- :d_i[i].unit,
- :d_i[i].mtrlmode,
- :d_i[i].mtrlname,
- :d_i[i].Sptid,
- :d_i[i].Dxflag,
- :d_i[i].wareamt,
- :d_i[i].sptname ,
- :d_i[i].sptcode ,
- :d_i[i].mtrlsectype,
- :d_i[i].zxmtrlmode,
- :d_i[i].billid,
- :d_i[i].printid,
- :d_i[i].scllflag,
- :d_i[i].waredscrp,
- :d_i[i].inworkdate,
- :d_i[i].pypkqty,
- :d_i[i].pypkaddqty;
- LOOP
- CLOSE cur_d_i_mx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_warepdb_billmx INNER JOIN
- u_mtrldef ON u_warepdb_billmx.mtrlid = u_mtrldef.mtrlid left OUTER join
- u_cust ON u_warepdb_billmx.Sptid = u_cust.cusid
- WHERE ( u_mtrldef.mtrlid = u_warepdb_billmx.mtrlid ) AND
- ( u_warepdb_billmx.billid = :arg_billid);
- IF sqlca.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
- billid = arg_billid
- it_mxbt = i - 1
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer auditing (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i
- Int rslt = 1
- IF billid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF it_newbegin Or it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行审核"
- GOTO ext
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已经审核"
- GOTO ext
- END IF
- UPDATE u_warepdb_bill
- SET Permit_emp = :arg_auditingrep,
- Permit_date = getdate(),
- flag = 1
- Where u_warepdb_bill.billid = :billid And flag = 0;
- 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
- IF uof_create_pypk(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSE
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i
- Int rslt = 1
- datetime null_dt
- setnull(null_dt)
- IF billid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF it_newbegin OR it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行审核"
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "单据未审核"
- GOTO ext
- END IF
- UPDATE u_warepdb_bill
- SET Permit_emp = '',
- Permit_date = :null_dt,
- flag = 0
- Where u_warepdb_bill.billid = :billid AND flag = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致撤审单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF uof_destroy_pypk(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer newbegin (ref string arg_msg);Int rslt = 1
-
- p_reset()
- it_newbegin = TRUE
- it_updatebegin = FALSE
-
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer pypk (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i
- Int rslt = 1
- IF billid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF it_newbegin OR it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行审核"
- GOTO ext
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已审核,不能盘盈盘亏!"
- GOTO ext
- END IF
- IF ifpypk = 1 THEN
- rslt = 0
- arg_msg = "单据已盘盈盘亏,不能再盘盈盘亏!"
- GOTO ext
- END IF
- Long ls_storageid,ls_warepdbid,ls_mtrlid
- Decimal ld_cost,ld_cost_mtrlware
- String ls_status,ls_plancode,ls_mtrlcode,ls_unit
- Long ll_scid,ls_dxflag
- Long ls_mtrlwareid,ls_sptid
- String ls_woodcode,ls_pcode
- Decimal ls_planprice,ls_qty
- String ins_pdbdate
- ins_pdbdate = String(Date(billdate),'yyyymmdd')
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_warepdb_bill
- Where storageid = :storageid And (CONVERT(Char(8), billdate, 112) = :ins_pdbdate) AND flag = 0 USING commit_transaction ;
- IF commit_transaction.SQLCode = -1 THEN
- arg_msg = '盘点单查询操作失败,在盘点日:'+String(billdate,"yyyy-mm-dd")+',仓库:'+String(storageid)+'的数据资料!'
- rslt = 0
- GOTO ext
- ELSE
- IF cnt <= 0 THEN
- arg_msg = '盘点单,盘点日:'+String(billdate,"yyyy-mm-dd")+',仓库:'+String(storageid)+'的盘点数据已经审核!'
- rslt = 0
- GOTO ext
- END IF
- END IF
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_warepdb
- Where u_warepdb.storageid = :storageid AND u_warepdb.pdbdate = :ins_pdbdate AND flag = 1 USING commit_transaction;
- IF commit_transaction.SQLCode = -1 THEN
- arg_msg = '盘点表查询操作失败,在盘点日:'+String(ins_pdbdate)+',仓库:'+String(storageid)+'的数据资料!'
- rslt = 0
- GOTO ext
- ELSE
- IF cnt > 0 THEN
- arg_msg = '盘点表,盘点日:'+String(ins_pdbdate)+',仓库:'+String(storageid)+'的盘点数据已经审核!'
- rslt = 0
- GOTO ext
- END IF
- END IF
- SELECT scid INTO :ll_scid
- FROM u_storage
- Where storageid = :storageid;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询仓库所属分部失败'
- rslt = 0
- GOTO ext
- END IF
- uo_inware uo_ware_py
- uo_ware_py = CREATE uo_inware
- uo_outware uo_ware_pk
- uo_ware_pk = CREATE uo_outware
- IF uo_ware_py.newbegin(ll_scid,9,arg_msg) = 0 THEN
- arg_msg = 'error!/盘盈单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- IF uo_ware_pk.newbegin(ll_scid,9,arg_msg) = 0 THEN
- arg_msg = 'error!/盘亏单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- uo_ware_py.indate = billdate
- uo_ware_py.inrep = publ_operator
- uo_ware_py.part = ''
- uo_ware_py.dscrp = '由盘点单' + billcode + '生成的'+ins_pdbdate+'的盘盈单'
- uo_ware_py.storageid = storageid
- uo_ware_py.commit_transaction = commit_transaction
- uo_ware_py.if_getid_ture = FALSE
- uo_ware_pk.outdate = billdate
- uo_ware_pk.outrep = publ_operator
- uo_ware_pk.part = ''
- uo_ware_pk.dscrp = '由盘点单' + billcode + '生成的'+ins_pdbdate+'的盘亏单'
- uo_ware_pk.storageid = storageid
- uo_ware_pk.commit_transaction = commit_transaction
- uo_ware_pk.if_getid_ture = FALSE
- Open(w_sys_wait_jdt) //初始化进度条
- w_sys_wait_jdt.Show()
- w_sys_wait_jdt.wf_accepttol(it_mxbt) //初始化进度条1
- FOR i = 1 TO it_mxbt
- ls_mtrlcode = d_i[i].mtrlcode
- ls_unit = d_i[i].unit
- w_sys_wait_jdt.st_msg.Text = "处理:"+ls_mtrlcode //进度信息
-
- IF d_i[i].mtrlid <= 0 THEN CONTINUE
- // IF d_i[i].factqty = 0 AND d_i[i].factaddqty = 0 THEN CONTINUE
- IF d_i[i].scllflag = 1 THEN CONTINUE
-
- ls_mtrlwareid = d_i[i].mtrlwareid
- ls_mtrlid = d_i[i].mtrlid
- ls_sptid = d_i[i].sptid
- ls_plancode = d_i[i].plancode
- ls_dxflag = d_i[i].dxflag
-
- ls_status = d_i[i].status
- ls_woodcode = d_i[i].woodcode
- ls_pcode = d_i[i].pcode
- ls_qty = d_i[i].qty
-
-
- SELECT cost INTO :ld_cost_mtrlware
- FROM u_mtrlware
- WHERE mtrlwareid = :ls_mtrlwareid
- AND scid = :ll_scid;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',查询库存成本价失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- SELECT planprice INTO :ls_planprice
- FROM u_mtrldef
- Where mtrlid = :ls_mtrlid;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',查询计划价失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
-
- Int ll_mtrlprp
- ll_mtrlprp = f_get_storage_mtrlprp(storageid)
-
- IF ll_mtrlprp = 0 OR ll_mtrlprp = 1 OR ll_mtrlprp = 2 THEN
- IF ld_cost_mtrlware = 0 THEN
- ld_cost = ls_planprice
- ELSE
- ld_cost = ld_cost_mtrlware
- END IF
- ELSE
- ld_cost = 0
- END IF
-
- d_i[i].pypkqty = d_i[i].factqty - d_i[i].qty
- d_i[i].pypkaddqty = d_i[i].factaddqty - d_i[i].addqty
-
- IF d_i[i].pypkqty > 0 OR d_i[i].pypkaddqty > 0 THEN
- IF uo_ware_py.acceptmx(i,&
- d_i[i].mtrlid ,&
- d_i[i].mtrlcode ,&
- ls_plancode,&
- ls_status,&
- d_i[i].pypkqty ,&
- d_i[i].pypkaddqty ,&
- ld_cost,&
- 1,&
- '',&
- arg_msg,0,0,0,0,ls_woodcode,ls_pcode,'',ls_sptid,ls_unit,1,'',d_i[i].waredscrp,&
- d_i[i].inworkdate,0) = 0 THEN
-
- arg_msg = 'error!/盘盈单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- ELSEIF d_i[i].pypkqty < 0 OR d_i[i].pypkaddqty < 0 THEN
-
- IF uo_ware_pk.acceptmx(ls_mtrlwareid,&
- Abs(d_i[i].pypkqty),&
- Abs(d_i[i].pypkaddqty),&
- ld_cost,&
- 1,&
- '',&
- i,&
- arg_msg,0,0,0,0,0,0,0,&
- d_i[i].unit,1,'','') = 0 THEN
- arg_msg = 'error!/盘亏单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- w_sys_wait_jdt.wf_inc(i) //进度
- NEXT
- IF uo_ware_py.it_mxbt > 0 THEN
- IF uo_ware_py.Save(FALSE,arg_msg) = 0 THEN
-
- arg_msg = 'error!/盘盈单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_py.getinfo(ll_scid,uo_ware_py.inwareid,arg_msg) = 0 THEN
- arg_msg = 'error!/盘盈单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_py.auditing(FALSE,arg_msg) = 0 THEN
- arg_msg = 'error!/盘盈单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF uo_ware_pk.it_mxbt > 0 THEN
- IF uo_ware_pk.Save(FALSE,arg_msg) = 0 THEN
- arg_msg = 'error!/盘亏单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_pk.getinfo(ll_scid,uo_ware_pk.outwareid,arg_msg) = 0 THEN
- arg_msg = 'error!/盘亏单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_pk.auditing(FALSE,arg_msg) = 0 THEN
- arg_msg = 'error!/盘亏单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- UPDATE u_warepdb_bill
- SET ifpypk = 1
- Where u_warepdb_bill.billid = :billid AND flag = 0;
- 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
- ifpypk = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSE
- arg_msg = '生成盘盈单/盘亏单成功!'
- COMMIT USING commit_transaction;
- END IF
- Close(w_sys_wait_jdt)
- DESTROY uo_ware_py
- DESTROY uo_ware_pk
- RETURN rslt
- end function
- public function integer uof_create_pypk (ref string arg_msg);Int rslt = 1
-
- Long i,ls_storageid,ls_warepdbid,ls_mtrlid
-
- Long cnt = 0
- Decimal ld_cost,ld_cost_mtrlware
- String ls_status,ls_plancode,ls_mtrlcode,ls_unit
- Long ll_scid,ls_dxflag, ll_wrkgrpid
- Long ls_mtrlwareid,ls_sptid
- String ls_woodcode,ls_pcode
- Decimal ls_planprice,ls_qty
- Int li_mtrlprp, li_ifbalc
- String ld_waredscrp
- DateTime ld_inworkdate
- DateTime ldt_balcdate
- String ins_pdbdate
- ins_pdbdate = String(Date(billdate),'yyyymmdd')
- ldt_balcdate = DateTime(Date(Left(ins_pdbdate,4)+'-'+Mid(ins_pdbdate,5,2)+'-'+Right(ins_pdbdate,2)),Time(23:59:59))
- IF storageid <= 0 THEN
- arg_msg = '请选择要盘点的仓库'
- rslt = 0
- GOTO ext
- END IF
- IF ins_pdbdate = '' THEN
- arg_msg = '请选择盘点日'
- rslt = 0
- GOTO ext
- END IF
- SELECT scid, mtrlprp, ifbalc
- INTO :ll_scid, :li_mtrlprp, :li_ifbalc
- FROM u_storage
- Where storageid = :storageid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询仓库所属分部失败'
- rslt = 0
- GOTO ext
- END IF
- //IF li_ifbalc = 0 THEN
- // IF MessageBox ("询问","是否确定要审核当前盘点?",question!,yesno! ) = 2 THEN RETURN
- //ELSE
- // IF MessageBox ("询问","是否确定要审核当前盘点并且按盘点日期自动结存当前仓库?",question!,yesno! ) = 2 THEN RETURN
- //END IF
- uo_inware uo_ware_py
- uo_ware_py = Create uo_inware
- uo_ware_py.commit_transaction = sqlca
- uo_ware_py.if_getid_ture = False
- uo_ware_py.sysautobuild = True
- uo_outware uo_ware_pk
- uo_ware_pk = Create uo_outware
- uo_ware_pk.commit_transaction = sqlca
- uo_ware_pk.if_getid_ture = False
- uo_ware_pk.sysautobuild = True
- uo_outware_scll uo_ware_scll
- uo_ware_scll = Create uo_outware_scll
- uo_ware_scll.commit_transaction = sqlca
- uo_ware_scll.if_getid_ture = False
- uo_ware_scll.sysautobuild = True
- //cnt = 0
- //SELECT count(*)
- // INTO :cnt
- // FROM u_warepdb_bill
- // WHERE storageid = :storageid
- // AND (CONVERT(Char(8), billdate, 112) = :ins_pdbdate)
- // AND flag = 1
- // Using sqlca ;
- //IF sqlca.SQLCode < 0 THEN
- // arg_msg = '盘点单查询操作失败,在盘点日:'+ins_pdbdate+',仓库:'+String(storageid)+'的数据资料!'
- // rslt = 0
- // GOTO ext
- //ELSE
- // IF cnt > 0 THEN
- // arg_msg = '盘点单,盘点日:'+ins_pdbdate+',仓库:'+String(storageid)+'的盘点数据已经审核!'
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- //
- //cnt = 0
- //SELECT count(*)
- // INTO :cnt
- // FROM u_warepdb
- // WHERE u_warepdb.storageid = :storageid
- // AND u_warepdb.pdbdate = :ins_pdbdate
- // AND flag = 0
- // Using sqlca;
- //IF sqlca.SQLCode < 0 THEN
- // arg_msg = '盘点表查询操作失败,在盘点日:'+String(ins_pdbdate)+',仓库:'+String(storageid)+'的数据资料!'
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF cnt <= 0 THEN
- // arg_msg = '盘点表,盘点日:'+String(ins_pdbdate)+',仓库:'+String(storageid)+'的盘点数据已经审核!'
- // rslt = 0
- // GOTO ext
- //END IF
- ////pypkqty < 0 Or d_i[i].pypkaddqty < 0
- boolean lb_findwrk = false
- FOR i = 1 To it_mxbt
- if d_i[i].scllflag = 1 then
- lb_findwrk = true
- exit
- end if
- next
- IF lb_findwrk THEN
- SELECT top 1 wrkgrpid INTO :ll_wrkgrpid
- From u_sc_workgroup;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '盘点日:'+'查询领料工作中心失败'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF uo_ware_py.newbegin(ll_scid,9,arg_msg) = 0 THEN
- arg_msg = 'error!/盘盈单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- IF uo_ware_pk.newbegin(ll_scid,9,arg_msg) = 0 THEN
- arg_msg = 'error!/盘亏单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- IF uo_ware_scll.newbegin(ll_scid,3,arg_msg) = 0 THEN
- arg_msg = 'error!/生产领料单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- //以下3个dscrp均用作删除的主键信息,要修改时必须同步修改ue_audit_c()
- uo_ware_py.indate = DateTime(Date(Left(ins_pdbdate,4)+'-'+Mid(ins_pdbdate,5,2)+'-'+Right(ins_pdbdate,2)),Time(0))
- uo_ware_py.inrep = publ_operator
- uo_ware_py.part = billcode
- uo_ware_py.dscrp = '盘点单审核自动生成盘盈单'
- uo_ware_py.storageid = storageid
- uo_ware_pk.outdate = DateTime(Date(Left(ins_pdbdate,4)+'-'+Mid(ins_pdbdate,5,2)+'-'+Right(ins_pdbdate,2)),Time(0))
- uo_ware_pk.outrep = publ_operator
- uo_ware_pk.part = billcode
- uo_ware_pk.dscrp = '盘点单审核自动生成盘亏单'
- uo_ware_pk.storageid = storageid
- uo_ware_scll.outdate = DateTime(Date(Left(ins_pdbdate,4)+'-'+Mid(ins_pdbdate,5,2)+'-'+Right(ins_pdbdate,2)),Time(0))
- uo_ware_scll.outrep = publ_operator
- uo_ware_scll.part = billcode
- uo_ware_scll.dscrp = '盘点单审核盘亏自动生成生产领料单'
- uo_ware_scll.storageid = storageid
- uo_ware_scll.relid = ll_wrkgrpid
- FOR i = 1 To it_mxbt
- ls_mtrlcode = d_i[i].mtrlcode
- ls_unit = d_i[i].unit
-
- IF d_i[i].mtrlid <= 0 THEN CONTINUE
- IF d_i[i].pypkqty = 0 And d_i[i].pypkaddqty = 0 THEN CONTINUE
- //IF d_i[i].scllflag = 1 And d_i[i].pypkqty < 0 THEN CONTINUE //只有盘亏的领料才不考虑
-
- ls_mtrlwareid = d_i[i].mtrlwareid
- ls_mtrlid = d_i[i].mtrlid
- ls_sptid = d_i[i].sptid
-
- ls_plancode = d_i[i].plancode
- ls_dxflag = d_i[i].dxflag
-
- ls_status = d_i[i].status
- ls_woodcode = d_i[i].woodcode
- ls_pcode = d_i[i].pcode
-
- ls_qty = d_i[i].qty
-
-
- SELECT cost ,
- waredscrp,
- inworkdate
- INTO :ld_cost_mtrlware,
- :ld_waredscrp,
- :ld_inworkdate
- FROM u_mtrlware
- WHERE scid = :ll_scid
- And mtrlwareid = :ls_mtrlwareid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',查询库存成本价失败'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- SELECT planprice INTO :ls_planprice
- FROM u_mtrldef
- Where mtrlid = :ls_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',查询计划价失败'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF li_mtrlprp = 0 Or li_mtrlprp = 1 Or li_mtrlprp = 2 THEN
- IF ld_cost_mtrlware = 0 THEN
- ld_cost = ls_planprice
- ELSE
- ld_cost = ld_cost_mtrlware
- END IF
- ELSE
- ld_cost = 0
- END IF
-
-
- IF d_i[i].pypkqty > 0 Or d_i[i].pypkaddqty > 0 THEN
- // IF uo_ware_py.acceptmx(i,&
- // d_i[i].mtrlid,&
- // d_i[i].mtrlcode,&
- // ls_plancode,&
- // ls_status,&
- // d_i[i].pypkqty,&
- // d_i[i].pypkaddqty,&
- // ld_cost,&
- // 1,&
- // '',&
- // arg_msg,0,0,0,0,ls_woodcode,ls_pcode,'',ls_sptid,ls_unit,1,'',ld_waredscrp,ld_inworkdate) = 0 THEN
- IF uo_ware_py.acceptmx(i,&
- d_i[i].mtrlid,&
- d_i[i].mtrlcode,&
- ls_plancode,&
- ls_status,&
- d_i[i].pypkqty,&
- d_i[i].pypkaddqty,&
- ld_cost,&
- 1,&
- '',&
- arg_msg,0,0,0,0,ls_woodcode,ls_pcode,'',ls_sptid,ls_unit,1,'',d_i[i].waredscrp,ld_inworkdate,0) = 0 THEN
- arg_msg = "行["+String(i)+"],盘盈单,接受明细,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
- ELSEIF d_i[i].scllflag = 0 And ( d_i[i].pypkqty < 0 Or d_i[i].pypkaddqty < 0 ) THEN
- IF uo_ware_pk.acceptmx(ls_mtrlwareid,&
- Abs(d_i[i].pypkqty),&
- Abs(d_i[i].pypkaddqty),&
- ld_cost_mtrlware,&
- 1,&
- '',&
- i,&
- arg_msg,0,0,0,0,0,0,0,&
- d_i[i].unit,1,'','') = 0 THEN
- arg_msg = "行["+String(i)+"],盘亏单,接受明细,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
- ELSEIF d_i[i].scllflag = 1 And ( d_i[i].pypkqty < 0 Or d_i[i].pypkaddqty < 0 ) THEN
- IF uo_ware_scll.acceptmx(ls_mtrlwareid,&
- Abs(d_i[i].pypkqty),&
- Abs(d_i[i].pypkaddqty),&
- ld_cost_mtrlware,&
- 1,&
- '',&
- i,&
- arg_msg,0,0,0,0,0,0,0,&
- d_i[i].unit,1,'','') = 0 THEN
- arg_msg = "行["+String(i)+"],生产领料单,接受明细,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- //自动生成盘盈单
- IF uo_ware_py.it_mxbt > 0 THEN
-
- IF uo_ware_py.Save(False,arg_msg) = 0 THEN
-
- arg_msg = 'error!/盘盈单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_py.getinfo(ll_scid,uo_ware_py.inwareid,arg_msg) = 0 THEN
- arg_msg = 'error!/盘盈单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_py.auditing(False,arg_msg) = 0 THEN
- arg_msg = 'error!/盘盈单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- //自动生成盘亏单
- IF uo_ware_pk.it_mxbt > 0 THEN
- IF uo_ware_pk.Save(False,arg_msg) = 0 THEN
- arg_msg = 'error!/盘亏单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_pk.getinfo(ll_scid,uo_ware_pk.outwareid,arg_msg) = 0 THEN
- arg_msg = 'error!/盘亏单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_pk.auditing(False,arg_msg) = 0 THEN
- arg_msg = 'error!/盘亏单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- //自动生成领料单
- IF uo_ware_scll.it_mxbt > 0 THEN
- IF uo_ware_scll.Save(False,arg_msg) = 0 THEN
- arg_msg = '保存生产领料单,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_scll.getinfo(ll_scid,uo_ware_scll.outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_scll.auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //更新库存摘要 20180831
- string ls_waredscrp
- for i = 1 to it_mxbt
- ls_waredscrp = d_i[i].waredscrp
- ls_mtrlwareid = d_i[i].mtrlwareid
-
- UPDATE u_mtrlware
- SET u_mtrlware.waredscrp = :ls_waredscrp
- WHERE ( scid = :ll_scid ) AND
- ( mtrlwareid = :ls_mtrlwareid ) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新库存摘要操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- next
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- END IF
- Destroy uo_ware_py
- Destroy uo_ware_pk
- Destroy uo_ware_scll
-
- RETURN rslt
- end function
- public function integer uof_destroy_pypk (ref string arg_msg);
- Int rslt = 1
- uo_inware uo_ware_py
- uo_ware_py = CREATE uo_inware
- uo_ware_py.commit_transaction = sqlca
- uo_ware_py.if_getid_ture = FALSE
- uo_ware_py.sysautobuild = true
- uo_outware uo_ware_pk
- uo_ware_pk = CREATE uo_outware
- uo_ware_pk.commit_transaction = sqlca
- uo_ware_pk.if_getid_ture = FALSE
- uo_ware_pk.sysautobuild = true
- uo_outware_scll uo_ware_scll
- uo_ware_scll = CREATE uo_outware_scll
- uo_ware_scll.commit_transaction = sqlca
- uo_ware_scll.if_getid_ture = FALSE
- uo_ware_scll.sysautobuild = true
- Long cnt
- Long ll_scid, ll_inwareid, ll_outwareid
- String ls_inwarecode, ls_outwarecode
- String ls_part, ls_dscrp
- String ins_pdbdate
- ins_pdbdate = String(Date(billdate),'yyyymmdd')
- ls_part = billcode
- ls_dscrp = '盘点单审核自动生成盘盈单'
- //1.撤审,删除盘盈单,
- SELECT count(*)
- INTO :cnt
- FROM u_inware
- WHERE storageid = :storageid
- AND (dscrp = :ls_dscrp and part = :ls_part )
- AND billtype = 9;
- IF sqlca.SQLCode <> 0 THEN
- cnt = 0
- END IF
- IF cnt > 1 THEN
- rslt = 0
- arg_msg = "当前盘点表已生成多张盘盈单,请先手动删除"
- GOTO ext
- ELSEIF cnt = 1 THEN
- SELECT scid, inwareid , inwarecode
- INTO :ll_scid, :ll_inwareid, :ls_inwarecode
- FROM u_inware
- WHERE storageid = :storageid
- AND (dscrp = :ls_dscrp and part = :ls_part )
- AND billtype = 9;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询当前盘点表相关盘盈单失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
-
-
- IF uo_ware_py.getinfo(ll_scid,ll_inwareid,arg_msg) = 0 THEN
- arg_msg = 'error!/盘盈单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_py.c_auditing(FALSE,arg_msg) = 0 THEN
- arg_msg = 'error!/盘盈单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_py.del(ll_scid,ll_inwareid,arg_msg,FALSE) = 0 THEN
- arg_msg = 'error!/盘盈单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- //2.撤审,删除盘亏单
- ls_part = billcode
- ls_dscrp = '盘点单审核自动生成盘亏单'
- SELECT count(*)
- INTO :cnt
- FROM u_outware
- WHERE storageid = :storageid
- AND (dscrp = :ls_dscrp and part = :ls_part )
- AND billtype = 9;
- IF sqlca.SQLCode <> 0 THEN
- cnt = 0
- END IF
- IF cnt > 1 THEN
- rslt = 0
- arg_msg = "当前盘点表已生成多张盘亏单,请先手动删除"
- GOTO ext
- ELSEIF cnt = 1 THEN
- SELECT scid, outwareid , outwarecode
- INTO :ll_scid, :ll_outwareid, :ls_outwarecode
- FROM u_outware
- WHERE storageid = :storageid
- AND (dscrp = :ls_dscrp and part = :ls_part )
- AND billtype = 9;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询当前盘点表相关盘亏单失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF uo_ware_pk.getinfo(ll_scid,ll_outwareid,arg_msg) = 0 THEN
- arg_msg = 'error!/盘亏单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_pk.c_auditing(FALSE,arg_msg) = 0 THEN
- arg_msg = 'error!/盘亏单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_pk.del(ll_scid,ll_outwareid,arg_msg,FALSE) = 0 THEN
- arg_msg = 'error!/盘亏单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- //撤审删除生产领料单
- ls_part = billcode
- ls_dscrp = '盘点单审核盘亏自动生成生产领料单'
- SELECT count(*)
- INTO :cnt
- FROM u_outware
- WHERE storageid = :storageid
- AND (dscrp = :ls_dscrp and part = :ls_part )
- AND billtype = 3;
- IF sqlca.SQLCode <> 0 THEN
- cnt = 0
- END IF
- IF cnt > 1 THEN
- rslt = 0
- arg_msg = "当前盘点表已生成多张生产领料单,请先手动删除"
- GOTO ext
- ELSEIF cnt = 1 THEN
- SELECT scid, outwareid , outwarecode
- INTO :ll_scid, :ll_outwareid, :ls_outwarecode
- FROM u_outware
- WHERE storageid = :storageid
- AND (dscrp = :ls_dscrp and part = :ls_part )
- AND billtype = 3;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询当前盘点表相关盘亏单失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF uo_ware_pk.getinfo(ll_scid,ll_outwareid,arg_msg) = 0 THEN
- arg_msg = 'error!/生产领料单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_pk.c_auditing(FALSE,arg_msg) = 0 THEN
- arg_msg = 'error!/生产领料单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_pk.del(ll_scid,ll_outwareid,arg_msg,FALSE) = 0 THEN
- arg_msg = 'error!/生产领料单'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- END IF
- DESTROY uo_ware_py
- DESTROY uo_ware_pk
- DESTROY uo_ware_scll
- return rslt
- end function
- public function integer acceptmx (decimal arg_factqty, decimal arg_factaddqty, string arg_mxdscrp, long arg_mtrlwareid, string arg_status, string arg_plancode, string arg_woodcode, string arg_pcode, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, long arg_sptid, long arg_dxflag, long arg_printid, decimal arg_wareamt, decimal arg_cost, string arg_mtrlcode, integer arg_packqty, ref string arg_msg);
- Long rslt = 1,cnt = 0,ls_i
-
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- IF IsNull(arg_factqty) THEN arg_factqty = 0
- IF IsNull(arg_factaddqty) THEN arg_factaddqty = 0
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF IsNull(arg_mtrlwareid) THEN arg_mtrlwareid = 0
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_plancode) THEN arg_plancode = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_addqty) THEN arg_addqty = 0
- IF IsNull(arg_Sptid) THEN arg_Sptid = 0
- IF IsNull(arg_Dxflag) THEN arg_Dxflag = 0
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_wareamt) THEN arg_wareamt = 0
- IF IsNull(arg_cost) THEN arg_cost = 0
- IF IsNull(arg_packqty) THEN arg_packqty = 0
- IF arg_mtrlwareid > 0 THEN
- SELECT plancode,
- woodcode,
- status,
- pcode,
- dxflag,
- sptid
- INTO :arg_plancode,
- :arg_woodcode,
- :arg_status,
- :arg_pcode,
- :arg_dxflag,
- :arg_sptid
- FROM u_mtrlware Where u_mtrlware.mtrlwareid = :arg_mtrlwareid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料 '+arg_mtrlcode+' 库存失败!>>'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //检查成本价调整单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_updatecost,u_updatecostmx
- WHERE u_updatecost.wareid = u_updatecostmx.wareid AND
- u_updatecost.flag = 0 AND
- u_updatecostmx.mtrlwareid = :arg_mtrlwareid AND
- u_updatecost.scid = :scid USING sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "第" + String(arg_printid) + "行,查询成本价调整单操作失败"
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "第" + String(arg_printid) + "行,已开成本价调整单,请先审核"
- GOTO ext
- END IF
-
- END IF
- FOR ls_i = 1 TO it_mxbt //合并重复项
- IF d_i[ls_i].mtrlwareid = arg_mtrlwareid AND &
- d_i[ls_i].status = arg_status AND &
- d_i[ls_i].pcode = arg_pcode AND &
- d_i[ls_i].woodcode = arg_woodcode AND &
- d_i[ls_i].mtrlid = arg_mtrlid THEN
- d_i[ls_i].factqty = d_i[ls_i].factqty + arg_factqty
- d_i[ls_i].factaddqty = d_i[ls_i].factaddqty + arg_factaddqty
- d_i[ls_i].qty = d_i[ls_i].qty + arg_qty
- d_i[ls_i].addqty = d_i[ls_i].addqty + arg_addqty
- d_i[ls_i].wareamt = d_i[ls_i].wareamt + arg_wareamt
- d_i[ls_i].packqty = d_i[ls_i].packqty + arg_packqty
- rslt = 1
- GOTO ext
- END IF
- NEXT
- //写入内容
- it_mxbt++
- d_i[it_mxbt].factqty = arg_factqty
- d_i[it_mxbt].factaddqty = arg_factaddqty
- d_i[it_mxbt].mxdscrp = arg_mxdscrp
- d_i[it_mxbt].mtrlwareid = arg_mtrlwareid
- d_i[it_mxbt].status = arg_status
- d_i[it_mxbt].plancode = arg_plancode
- d_i[it_mxbt].woodcode = arg_woodcode
- d_i[it_mxbt].pcode = arg_pcode
- d_i[it_mxbt].mtrlid = arg_mtrlid
- d_i[it_mxbt].qty = arg_qty
- d_i[it_mxbt].addqty = arg_addqty
- d_i[it_mxbt].sptid = arg_Sptid
- d_i[it_mxbt].dxflag = arg_Dxflag
- d_i[it_mxbt].printid = arg_printid
- d_i[it_mxbt].wareamt = arg_wareamt
- d_i[it_mxbt].cost = arg_cost
- d_i[it_mxbt].packqty = arg_packqty
- ext:
- IF rslt = 0 THEN
- p_clearmx()
- arg_msg = "第" + String(arg_printid) + "行," + arg_msg
- END IF
- Return(rslt)
- end function
- public function integer acceptmx2 (decimal arg_factqty, decimal arg_factaddqty, string arg_mxdscrp, long arg_mtrlwareid, string arg_status, string arg_plancode, string arg_woodcode, string arg_pcode, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, long arg_sptid, long arg_dxflag, long arg_printid, decimal arg_wareamt, decimal arg_cost, string arg_mtrlcode, integer arg_packqty, ref string arg_msg, string arg_waredscrp);
- Long rslt = 1,cnt = 0,ls_i
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- IF IsNull(arg_factqty) THEN arg_factqty = 0
- IF IsNull(arg_factaddqty) THEN arg_factaddqty = 0
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF IsNull(arg_mtrlwareid) THEN arg_mtrlwareid = 0
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_plancode) THEN arg_plancode = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_addqty) THEN arg_addqty = 0
- IF IsNull(arg_Sptid) THEN arg_Sptid = 0
- IF IsNull(arg_Dxflag) THEN arg_Dxflag = 0
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_wareamt) THEN arg_wareamt = 0
- IF IsNull(arg_cost) THEN arg_cost = 0
- IF IsNull(arg_packqty) THEN arg_packqty = 0
- IF arg_mtrlwareid > 0 THEN
- SELECT plancode,
- woodcode,
- status,
- pcode,
- dxflag,
- sptid
- INTO :arg_plancode,
- :arg_woodcode,
- :arg_status,
- :arg_pcode,
- :arg_dxflag,
- :arg_sptid
- FROM u_mtrlware Where u_mtrlware.mtrlwareid = :arg_mtrlwareid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料 '+arg_mtrlcode+' 库存失败!>>'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //检查成本价调整单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_updatecost,u_updatecostmx
- WHERE u_updatecost.wareid = u_updatecostmx.wareid AND
- u_updatecost.flag = 0 AND
- u_updatecostmx.mtrlwareid = :arg_mtrlwareid AND
- u_updatecost.scid = :scid USING sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "第" + String(arg_printid) + "行,查询成本价调整单操作失败"
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "第" + String(arg_printid) + "行,已开成本价调整单,请先审核"
- GOTO ext
- END IF
-
- END IF
- FOR ls_i = 1 TO it_mxbt //合并重复项
- IF d_i[ls_i].mtrlwareid = arg_mtrlwareid AND &
- d_i[ls_i].status = arg_status AND &
- d_i[ls_i].pcode = arg_pcode AND &
- d_i[ls_i].woodcode = arg_woodcode AND &
- d_i[ls_i].mtrlid = arg_mtrlid THEN
- d_i[ls_i].factqty = d_i[ls_i].factqty + arg_factqty
- d_i[ls_i].factaddqty = d_i[ls_i].factaddqty + arg_factaddqty
- d_i[ls_i].qty = d_i[ls_i].qty + arg_qty
- d_i[ls_i].addqty = d_i[ls_i].addqty + arg_addqty
- d_i[ls_i].wareamt = d_i[ls_i].wareamt + arg_wareamt
- d_i[ls_i].packqty = d_i[ls_i].packqty + arg_packqty
- rslt = 1
- GOTO ext
- END IF
- NEXT
- //写入内容
- it_mxbt++
- d_i[it_mxbt].factqty = arg_factqty
- d_i[it_mxbt].factaddqty = arg_factaddqty
- d_i[it_mxbt].mxdscrp = arg_mxdscrp
- d_i[it_mxbt].mtrlwareid = arg_mtrlwareid
- d_i[it_mxbt].status = arg_status
- d_i[it_mxbt].plancode = arg_plancode
- d_i[it_mxbt].woodcode = arg_woodcode
- d_i[it_mxbt].pcode = arg_pcode
- d_i[it_mxbt].mtrlid = arg_mtrlid
- d_i[it_mxbt].qty = arg_qty
- d_i[it_mxbt].addqty = arg_addqty
- d_i[it_mxbt].sptid = arg_Sptid
- d_i[it_mxbt].dxflag = arg_Dxflag
- d_i[it_mxbt].printid = arg_printid
- d_i[it_mxbt].wareamt = arg_wareamt
- d_i[it_mxbt].cost = arg_cost
- d_i[it_mxbt].packqty = arg_packqty
- d_i[it_mxbt].waredscrp = arg_waredscrp
- ext:
- IF rslt = 0 THEN
- p_clearmx()
- arg_msg = "第" + String(arg_printid) + "行," + arg_msg
- END IF
- Return(rslt)
- end function
- on uo_warepdb_bill.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_warepdb_bill.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|