123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062 |
- $PBExportHeader$uo_ware_pdb_balc.sru
- forward
- global type uo_ware_pdb_balc from nonvisualobject
- end type
- end forward
- global type uo_ware_pdb_balc from nonvisualobject
- end type
- global uo_ware_pdb_balc uo_ware_pdb_balc
- forward prototypes
- public function integer uof_pdb_audit (long arg_storageid, string arg_pdbdate, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_warebalc (long arg_storageid, datetime arg_balcdate, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_warebalc_cancel (long arg_balcdateint, long arg_storageid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_warebalc_check_inoutflag (long arg_storageid, datetime arg_balcdate, ref string arg_msg)
- public function integer uof_pdb_del (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_pdb_caudit (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_pdb_add (long arg_atid, long arg_storageid, datetime arg_pdbdt, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_pdb_update_scllflag (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer uof_pdb_audit (long arg_storageid, string arg_pdbdate, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- SELECT count(*) INTO :cnt
- FROM u_storage
- Where storageid = :arg_storageid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询仓库资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt <> 1 THEN
- arg_msg = '仓库资料不存在或重复,请检查'
- rslt = 0
- GOTO ext
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_warepdb
- WHERE storageid = :arg_storageid
- AND pdbdate = :arg_pdbdate;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询盘点表失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '盘点表没有盘点内容,不能审核'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_warepdb
- WHERE storageid = :arg_storageid
- AND pdbdate = :arg_pdbdate
- AND flag = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询盘点表是否已审核失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- arg_msg = '盘点表已审核,不能审核'
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_warepdb
- SET flag = 1,
- auditemp = :arg_opemp,
- auditdate = getdate()
- WHERE storageid = :arg_storageid
- AND pdbdate = :arg_pdbdate;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新盘点表审核标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_warebalc (long arg_storageid, datetime arg_balcdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- DateTime balc_date
- Long ls_balcdateint
- IF arg_storageid <= 0 THEN
- arg_msg = '请选择仓库'
- rslt = 0
- GOTO ext
- END IF
- ls_balcdateint = Year(Date(arg_balcdate)) * 10000 + Month(Date(arg_balcdate)) * 100 + Day(Date(arg_balcdate))
- balc_date = DateTime(Date(arg_balcdate),Time('23:59:59'))
- SELECT count(*) INTO :cnt
- FROM u_warebalc
- WHERE balcdate = :balc_date
- AND storageid = :arg_storageid;
- IF cnt <> 0 THEN
- rslt = 0
- arg_msg = "仓库指定日期已进行过结存操作"
- GOTO ext
- END IF
- //检查单据
- IF uof_warebalc_check_inoutflag(arg_storageid,balc_date,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_warebalc
- SET balcdateint = :ls_balcdateint,
- balcdate = :arg_balcdate
- WHERE balcdateint = 0
- AND storageid = :arg_storageid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新仓库结存标记失败. ~n 原因:"+sqlca.SQLErrText
- GOTO ext
- END IF
- INSERT INTO u_warebalc
- (balcdateint,
- storageid,
- mtrlid,
- bgqty,
- bgamt,
- incqty,
- incamt,
- desqty,
- desamt,
- balcqty,
- balcamt,
- pypk,
- scid,
- status,
- woodcode,
- pcode,
- bgaddqty,
- balcaddqty)
- SELECT 0,
- u_warebalc.storageid,
- u_warebalc.mtrlid,
- u_warebalc.balcqty,
- case when u_warebalc.balcqty = 0 then 0 else u_warebalc.balcamt end,
- 0,
- 0,
- 0,
- 0,
- u_warebalc.balcqty,
- case when u_warebalc.balcqty = 0 then 0 else u_warebalc.balcamt end,
- 0,
- u_warebalc.scid,
- u_warebalc.status,
- u_warebalc.woodcode,
- u_warebalc.pcode,
- case when u_warebalc.balcqty = 0 then 0 else u_warebalc.balcaddqty end,
- case when u_warebalc.balcqty = 0 then 0 else u_warebalc.balcaddqty end
- FROM u_warebalc
- WHERE ( (abs(u_warebalc.bgqty)+abs(u_warebalc.desqty)+abs(u_warebalc.incqty)+abs(u_warebalc.balcqty) <> 0)
- OR (abs(u_warebalc.bgamt)+ abs(u_warebalc.incamt)+abs(u_warebalc.desamt)+abs(u_warebalc.balcamt) <> 0) )
- AND ( u_warebalc.storageid = :arg_storageid )
- And ( u_warebalc.balcdateint = :ls_balcdateint );
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- // 写入日表 upartbalc
- UPDATE u_inware
- SET balcflag = 1 ,
- u_inware.balcdateint = :ls_balcdateint
- WHERE ( u_inware.flag = 1 ) AND
- ( u_inware.balcflag = 0 ) AND
- ( u_inware.storageid = :arg_storageid ) AND
- ( u_inware.balcdateint = 0 );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText
- GOTO ext
- END IF
- UPDATE u_outware
- SET balcflag = 1 ,
- u_outware.balcdateint = :ls_balcdateint
- WHERE ( u_outware.flag = 1 ) AND
- ( u_outware.balcflag = 0 ) AND
- ( u_outware.storageid = :arg_storageid ) AND
- ( u_outware.balcdateint = 0 );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_warebalc_cancel (long arg_balcdateint, long arg_storageid, ref string arg_msg, boolean arg_ifcommit);int rslt = 1
- long cnt
- DateTime null_dt,ld_balcdate
- string ls_balcdate
- SetNull(null_dt)
- ls_balcdate = left(string(arg_balcdateint),4) + '-' + left(right(string(arg_balcdateint),4),2) +'-'+ right(string(arg_balcdateint),2)
- ld_balcdate = datetime(date(ls_balcdate),time('23:59:59'))
- IF arg_storageid <= 0 THEN
- arg_msg = '请选择仓库'
- rslt = 0
- GOTO ext
- END IF
- //检查进仓单
- cnt = 0
- SELECT count(*) INTO :cnt FROM u_inware
- WHERE flag = 1
- AND ( balcdateint > :arg_balcdateint OR balcdateint = 0 )
- AND 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
- //检查出仓单
- cnt = 0
- SELECT count(*) INTO :cnt FROM u_outware
- WHERE flag = 1
- AND ( balcdateint > :arg_balcdateint OR balcdateint = 0 )
- AND 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
- //检查仓库外协进仓单及返工单
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM ow_wfjg_in INNER JOIN
- ow_wfjgmx_in_aft ON ow_wfjg_in.scid = ow_wfjgmx_in_aft.scid AND
- ow_wfjg_in.inwareid = ow_wfjgmx_in_aft.inwareid
- WHERE ( ow_wfjg_in.flag = 1 )
- AND ( ow_wfjg_in.indate > :ld_balcdate )
- AND ( ow_wfjgmx_in_aft.storageid = :arg_storageid )
- And ( ow_wfjg_in.billtype = 4);
- 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
- //检查仓库外协发出单及退回单
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM ow_wfjg_out INNER JOIN
- ow_wfjgmx_out ON ow_wfjg_out.scid = ow_wfjgmx_out.scid AND
- ow_wfjg_out.outwareid = ow_wfjgmx_out.outwareid
- WHERE ( ow_wfjg_out.flag = 1 )
- AND ( ow_wfjg_out.outdate > :ld_balcdate)
- AND ( ow_wfjgmx_out.storageid = :arg_storageid )
- And ( ow_wfjg_out.billtype = 4);
- 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
- // 写入日表 upartbalc
- UPDATE u_inware
- SET balcflag = 0 ,
- u_inware.balcdateint = 0
- WHERE ( u_inware.flag = 1 ) AND
- ( u_inware.balcflag = 1 ) AND
- ( u_inware.storageid = :arg_storageid ) AND
- ( u_inware.balcdateint = :arg_balcdateint );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "反结存操作失败 ~n原因:"+sqlca.SQLErrText
- GOTO ext
- END IF
- UPDATE u_outware
- SET balcflag = 0 ,
- u_outware.balcdateint = 0
- WHERE ( u_outware.flag = 1 ) AND
- ( u_outware.balcflag = 1 ) AND
- ( u_outware.storageid = :arg_storageid ) AND
- ( u_outware.balcdateint = :arg_balcdateint );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "反结存操作失败 ~n原因:"+sqlca.SQLErrText
- GOTO ext
- END IF
- //-----------------------------------------
- DELETE FROM u_warebalc
- WHERE balcdateint = 0
- AND storageid = :arg_storageid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '反结存操作 ~n原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_warebalc
- SET balcdateint = 0,
- balcdate = :null_dt
- WHERE balcdateint = :arg_balcdateint
- AND storageid = :arg_storageid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新仓库结存标记失败. ~n 原因:"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_warebalc_check_inoutflag (long arg_storageid, datetime arg_balcdate, ref string arg_msg);Long rslt = 1
- Long cnt = 0
- String ls_storagename
- SELECT storagename
- INTO :ls_storagename
- FROM u_storage
- Where storageid = :arg_storageid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,仓库名称'
- GOTO ext
- END IF
- //1.检查日期前
- //1.1检查进仓单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_inware
- WHERE flag = 0
- AND storageid = :arg_storageid
- AND indate <= :arg_balcdate ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期前是否有进仓单未审'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')进仓单未审'
- GOTO ext
- END IF
- //1.2不检查已开未审发货单,(占库存)
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware
- WHERE flag = 0
- AND storageid = :arg_storageid
- AND billtype <> 1
- AND outdate <= :arg_balcdate ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有出仓单未审'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')出仓单未审'
- GOTO ext
- END IF
- //1.3检查调仓单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware_move
- WHERE ( flag = 0 OR d_auditflag = 0 )
- AND ( sstorageid = :arg_storageid OR dstorageid = :arg_storageid )
- And ( outdate <= :arg_balcdate );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有调仓单未审'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')调仓单未审'
- GOTO ext
- END IF
- //1.4 检查仓库外协进仓单(含返工单)
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM ow_wfjg_in INNER JOIN
- ow_wfjgmx_in_aft ON ow_wfjg_in.scid = ow_wfjgmx_in_aft.scid AND
- ow_wfjg_in.inwareid = ow_wfjgmx_in_aft.inwareid
- WHERE (ow_wfjg_in.flag = 0 )
- AND (ow_wfjg_in.indate <= :arg_balcdate)
- AND (ow_wfjgmx_in_aft.storageid = :arg_storageid)
- And (ow_wfjg_in.billtype = 4);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有仓库外协进仓单或仓库外协返工单未审'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')仓库外协进仓单或仓库外协返工单未审'
- GOTO ext
- END IF
- //1.5 检查仓库外协发出单(含退回单)
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM ow_wfjg_out INNER JOIN
- ow_wfjgmx_out ON ow_wfjg_out.scid = ow_wfjgmx_out.scid AND
- ow_wfjg_out.outwareid = ow_wfjgmx_out.outwareid
- WHERE (ow_wfjg_out.flag = 0 )
- AND (ow_wfjg_out.outdate <= :arg_balcdate)
- AND (ow_wfjgmx_out.storageid = :arg_storageid)
- And (ow_wfjg_out.billtype = 4);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有仓库外协发出单或仓库外协退回单未审'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')仓库外协发出单或仓库外协退回单未审'
- GOTO ext
- END IF
- //2.检查日期后
- //2.1检查进仓单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_inware
- WHERE flag = 1
- AND storageid = :arg_storageid
- AND indate > :arg_balcdate ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后是否有进仓单已审'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后有('+String(cnt)+')进仓单已审'
- GOTO ext
- END IF
- //2.2检查出仓单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware
- WHERE flag = 1
- AND storageid = :arg_storageid
- AND outdate > :arg_balcdate ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后是否有出仓单已审'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后有('+String(cnt)+')出仓单已审'
- GOTO ext
- END IF
- //2.3检查调仓单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware_move
- WHERE ( flag = 1 )
- AND ( sstorageid = :arg_storageid )
- And ( outdate > :arg_balcdate );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后是否有调仓单调出已审'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后有('+String(cnt)+')调仓单调出已审'
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware_move
- WHERE ( d_auditflag = 1 )
- AND ( dstorageid = :arg_storageid )
- And ( outdate > :arg_balcdate );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后是否有调仓单调入已审'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后有('+String(cnt)+')调仓单调入已审'
- GOTO ext
- END IF
- //2.4 检查仓库外协进仓单(含返工单)
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM ow_wfjg_in INNER JOIN
- ow_wfjgmx_in_aft ON ow_wfjg_in.scid = ow_wfjgmx_in_aft.scid AND
- ow_wfjg_in.inwareid = ow_wfjgmx_in_aft.inwareid
- WHERE (ow_wfjg_in.flag = 1 )
- AND (ow_wfjg_in.indate > :arg_balcdate)
- AND (ow_wfjgmx_in_aft.storageid = :arg_storageid)
- And (ow_wfjg_in.billtype = 4);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后是否有仓库外协进仓单或仓库外协返工单已审'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后有('+String(cnt)+')仓库外协进仓单或仓库外协返工单已审'
- GOTO ext
- END IF
- //2.5 检查仓库外协发出单(含退回单)
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM ow_wfjg_out INNER JOIN
- ow_wfjgmx_out ON ow_wfjg_out.scid = ow_wfjgmx_out.scid AND
- ow_wfjg_out.outwareid = ow_wfjgmx_out.outwareid
- WHERE (ow_wfjg_out.flag = 1 )
- AND (ow_wfjg_out.outdate > :arg_balcdate)
- AND (ow_wfjgmx_out.storageid = :arg_storageid)
- And (ow_wfjg_out.billtype = 4);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后是否有仓库外协发出单或仓库外协退回单已审'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后有('+String(cnt)+')仓库外协发出单或仓库外协退回单已审'
- GOTO ext
- END IF
- //// //
- String ls_pdbdate
- ls_pdbdate = String(arg_balcdate,'yyyymmdd')
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_warepdb
- WHERE storageid = :arg_storageid
- AND pdbdate <= :ls_pdbdate
- AND flag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有盘点表未审'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有盘点表未审'
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_pdb_del (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- IF arg_storageid <= 0 THEN
- arg_msg = '请选择要仓库'
- rslt = 0
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM u_warepdb
- WHERE u_warepdb.storageid = :arg_storageid
- AND u_warepdb.pdbdate = :arg_pdbdate
- AND flag = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询操作失败,在盘点日:'+arg_pdbdate+'数据资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- arg_msg = '盘点日:'+arg_pdbdate+',盘点数据已经审核,不能删除'
- rslt = 0
- GOTO ext
- END IF
- DELETE FROM u_warepdb
- WHERE pdbdate = :arg_pdbdate
- AND storageid = :arg_storageid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '删除当前期的盘点表失败!'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_pdb_caudit (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- Long ll_pdbdate
- DateTime null_dt
- SetNull(null_dt)
- SELECT count(*) INTO :cnt
- FROM u_storage
- Where storageid = :arg_storageid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询仓库资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt <> 1 THEN
- arg_msg = '仓库资料不存在或重复,请检查'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_warepdb
- WHERE storageid = :arg_storageid
- AND pdbdate = :arg_pdbdate;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询盘点表失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '盘点表没有盘点内容,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_warepdb
- WHERE storageid = :arg_storageid
- AND pdbdate = :arg_pdbdate
- AND flag = 0;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询盘点表是否未审核失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- arg_msg = '盘点表未审核,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- //检查盘点日期后是否有结存
- ll_pdbdate = Long(arg_pdbdate)
- cnt = 0
- SELECT COUNT(*)
- INTO :cnt
- FROM u_warebalc
- WHERE (balcdateint >= :ll_pdbdate)
- And (storageid = :arg_storageid);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询盘点日期后仓库是否有结存失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- arg_msg = '盘点日期后仓库已结存,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_warepdb
- SET flag = 0,
- auditemp = '',
- auditdate = :null_dt
- WHERE storageid = :arg_storageid
- AND pdbdate = :arg_pdbdate;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新盘点表审核标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_pdb_add (long arg_atid, long arg_storageid, datetime arg_pdbdt, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- String ls_waredate
- Long ls_scid
- DateTime st_date,ed_date,ls_serverdate
- Date ls_enddate
-
- IF arg_storageid <= 0 THEN
- arg_msg = "请选择仓库"
- rslt = 0
- GOTO ext
- END IF
- IF arg_atid = 0 THEN
- IF uof_warebalc_check_inoutflag(arg_storageid,arg_pdbdt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ls_waredate = String(arg_pdbdt,'yyyymmdd')
- SELECT scid INTO :ls_scid
- FROM u_storage
- Where storageid = :arg_storageid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询仓库分部失败'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- SELECT Top 1 getdate() INTO :ls_serverdate FROM u_user ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询当前日期操作失败'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ls_enddate = Date(String(arg_pdbdt,'yyyy-mm-dd'))
- st_date = DateTime(RelativeDate(Date(ls_enddate),1),Time('0:0'))
- ed_date = DateTime(RelativeDate(Date(ls_serverdate),1),Time('0:0'))
- IF st_date > ed_date THEN
- arg_msg = '盘点日期不能大过于当前日期'
- rslt = 0
- GOTO ext
- END IF
- DELETE u_parm_balcdate ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "因网络或其它原因导致操作失败,请重试"
- rslt = 0
- GOTO ext
- END IF
- INSERT INTO u_parm_balcdate (first_date,end_date)
- Values (:st_date,:ed_date) ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "因网络或其它原因导致建立开始日期,结束日期操作失败,请重试,"+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- COMMIT ;
- INSERT INTO u_warepdb (
- atid,
- flag,
- pdbdate,
- scid,
- mtrlwareid,
- mtrlid,
- storageid,
- plancode,
- Status,
- planprice,
- Sptid,
- Dxflag,
- newprice,
- woodcode,
- pcode,
- cost,
- qty,
- factqty,
- wareamt,
- scllflag,
- pdbdt,
- pdbemp,
- waredscrp)
- SELECT
- :arg_atid,
- 0,
- :ls_waredate ,
- u_mtrlware.scid,
- u_mtrlware.mtrlwareid,
- u_mtrlware.mtrlid,
- u_mtrlware.storageid,
- u_mtrlware.plancode,
- u_mtrlware.Status,
- u_mtrldef.planprice,
- u_mtrlware.Sptid,
- u_mtrlware.Dxflag,
- u_mtrlware.newprice,
- u_mtrlware.woodcode,
- u_mtrlware.pcode,
- u_mtrlware.cost,
- u_mtrlware.noallocqty + ISNULL(uv_pdb_outware.desqty, 0) - ISNULL(uv_pdb_inware.incqty, 0),
- 0,
- u_mtrlware.wareamt + ISNULL(uv_pdb_outware.desamt, 0) - ISNULL(uv_pdb_inware.incamt,0),
- u_mtrldef.scllflag,
- getdate(),
- :publ_operator,
- u_mtrlware.dscrp
- FROM uv_pdb_inware RIGHT OUTER JOIN
- u_mtrlware ON uv_pdb_inware.storageid = u_mtrlware.storageid AND
- uv_pdb_inware.mtrlid = u_mtrlware.mtrlid AND
- uv_pdb_inware.plancode = u_mtrlware.plancode AND
- uv_pdb_inware.status = u_mtrlware.Status AND
- uv_pdb_inware.cusid = u_mtrlware.Sptid AND
- uv_pdb_inware.Dxflag = u_mtrlware.Dxflag AND
- uv_pdb_inware.pcode = u_mtrlware.pcode AND
- uv_pdb_inware.woodcode = u_mtrlware.woodcode LEFT OUTER JOIN
- uv_pdb_outware ON u_mtrlware.storageid = uv_pdb_outware.StorageID AND
- u_mtrlware.mtrlid = uv_pdb_outware.mtrlid AND
- u_mtrlware.plancode = uv_pdb_outware.plancode AND
- u_mtrlware.Status = uv_pdb_outware.status AND
- u_mtrlware.Sptid = uv_pdb_outware.Sptid AND
- u_mtrlware.Dxflag = uv_pdb_outware.Dxflag AND
- u_mtrlware.woodcode = uv_pdb_outware.woodcode AND
- u_mtrlware.pcode = uv_pdb_outware.pcode,
- u_mtrldef
- WHERE u_mtrldef.mtrlid = u_mtrlware.mtrlid AND
- u_mtrlware.storageid = :arg_storageid AND
- u_mtrlware.scid = :ls_scid;
-
- IF sqlca.SQLCode <> 0 THEN
- IF Pos(sqlca.SQLErrText,'Cannot insert duplicate key in') > 0 THEN
- arg_msg = '该仓库当前日期的盘点表已经存在,不能建立!'
- ELSE
- arg_msg = '生成当前期的盘点表失败!~n原因是:'+sqlca.SQLErrText
- END IF
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_pdb_update_scllflag (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- SELECT count(*) INTO :cnt
- FROM u_storage
- Where storageid = :arg_storageid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询仓库资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt <> 1 THEN
- arg_msg = '仓库资料不存在或重复,请检查'
- rslt = 0
- GOTO ext
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_warepdb
- WHERE storageid = :arg_storageid
- AND pdbdate = :arg_pdbdate;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询盘点表失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '盘点表没有盘点内容,不能操作'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_warepdb
- WHERE storageid = :arg_storageid
- AND pdbdate = :arg_pdbdate
- AND flag = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询盘点表是否已审核失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- arg_msg = '盘点表已审核,不能审核'
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_warepdb
- SET scllflag = u_mtrldef.scllflag
- from u_warepdb inner join u_mtrldef
- on u_warepdb.mtrlid = u_mtrldef.mtrlid
- WHERE u_warepdb.storageid = :arg_storageid
- AND u_warepdb.pdbdate = :arg_pdbdate;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新盘点表盘亏领料标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- on uo_ware_pdb_balc.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_ware_pdb_balc.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|