123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- $PBExportHeader$uf_warebalc_spt.srf
- global type uf_warebalc_spt from function_object
- end type
- forward prototypes
- global function integer uf_warebalc_spt (integer arg_balctype, long arg_balcdateint, long arg_scid, long arg_sptid, datetime arg_balcdate, ref string arg_msg)
- end prototypes
- global function integer uf_warebalc_spt (integer arg_balctype, long arg_balcdateint, long arg_scid, long arg_sptid, datetime arg_balcdate, ref string arg_msg);Long rslt = 1,cnt
- DateTime balc_date,null_dt
- Long ls_balcdateint
- IF arg_balctype = 1 THEN
- 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 ow_wfjgbalc
- WHERE balcdate = :balc_date
- AND sptid = :arg_sptid
- AND scid = :arg_scid;
- IF cnt <> 0 THEN
- rslt = 0
- arg_msg = "外协商指定日期已进行过结存操作"
- GOTO ext
- END IF
-
- IF uf_spt_warebalc_check_inoutflag(arg_scid,arg_sptid,arg_balcdate,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- UPDATE ow_wfjgbalc
- SET balcdateint = :ls_balcdateint,
- balcdate = :arg_balcdate
- WHERE balcdateint = 0
- AND sptid = :arg_sptid
- AND scid = :arg_scid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新外协商结存标记失败. ~n 原因:"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO ow_wfjgbalc
- (balcdateint,
- sptid,
- mtrlid,
- bgqty,
- bgamt,
- inqty,
- inamt,
- thqty,
- thamt,
- outqty,
- outamt,
- reoutqty,
- reoutamt,
- balcqty,
- balcamt,
- status,
- woodcode,
- pcode,
- scid )
- SELECT 0,
- ow_wfjgbalc.sptid,
- ow_wfjgbalc.mtrlid,
- ow_wfjgbalc.balcqty,
- ow_wfjgbalc.balcamt,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- ow_wfjgbalc.balcqty,
- ow_wfjgbalc.balcamt,
- ow_wfjgbalc.status,
- ow_wfjgbalc.woodcode,
- ow_wfjgbalc.pcode,
- :arg_scid
- FROM ow_wfjgbalc
- WHERE ( (abs(ow_wfjgbalc.bgqty)+abs(ow_wfjgbalc.outqty)+abs(ow_wfjgbalc.inqty)+abs(ow_wfjgbalc.thqty)+abs(ow_wfjgbalc.reoutqty)+abs(ow_wfjgbalc.balcqty) <> 0) OR
- (abs(ow_wfjgbalc.bgamt)+ abs(ow_wfjgbalc.inamt)+abs(ow_wfjgbalc.thamt)+abs(ow_wfjgbalc.outamt)+abs(ow_wfjgbalc.reoutamt)+abs(ow_wfjgbalc.balcamt) <> 0) )
- AND ( ow_wfjgbalc.sptid = :arg_sptid )
- AND ( ow_wfjgbalc.balcdateint = :ls_balcdateint )
- And ( ow_wfjgbalc.scid = :arg_scid);
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- // 写入日表 upartbalc
- UPDATE ow_wfjg_out
- SET balcflag = 1 ,
- ow_wfjg_out.balcdateint = :ls_balcdateint
- WHERE ( ow_wfjg_out.flag = 1 ) AND
- ( ow_wfjg_out.balcflag = 0 ) AND
- ( ow_wfjg_out.sptid = :arg_sptid) AND
- ( ow_wfjg_out.balcdateint = 0 ) AND
- ( ow_wfjg_out.scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE ow_wfjg_in
- SET balcflag = 1 ,
- ow_wfjg_in.balcdateint = :ls_balcdateint
- WHERE ( ow_wfjg_in.flag = 1 ) AND
- ( ow_wfjg_in.balcflag = 0 ) AND
- ( ow_wfjg_in.sptid = :arg_sptid ) AND
- ( ow_wfjg_in.balcdateint = 0 ) AND
- ( ow_wfjg_in.scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ELSE
-
- SELECT count(*) INTO :cnt FROM ow_wfjg_in
- WHERE flag = 1
- AND ( balcdateint > :arg_balcdateint OR balcdateint = 0 )
- AND ( sptid = :arg_sptid )
- And ( scid = :arg_scid );
-
- 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
- WHERE flag = 1
- AND ( balcdateint > :arg_balcdateint OR balcdateint = 0 )
- AND ( sptid = :arg_sptid )
- And ( scid = :arg_scid );
- 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 ow_wfjg_in
- SET balcflag = 0 ,
- ow_wfjg_in.balcdateint = 0
- WHERE ( ow_wfjg_in.flag = 1 ) AND
- ( ow_wfjg_in.balcflag = 1 ) AND
- ( ow_wfjg_in.sptid = :arg_sptid ) AND
- ( ow_wfjg_in.balcdateint = :arg_balcdateint ) AND
- ( ow_wfjg_in.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "反结存操作失败 ~n原因:"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE ow_wfjg_out
- SET balcflag = 0 ,
- ow_wfjg_out.balcdateint = 0
- WHERE ( ow_wfjg_out.flag = 1 ) AND
- ( ow_wfjg_out.balcflag = 1 ) AND
- ( ow_wfjg_out.sptid = :arg_sptid ) AND
- ( ow_wfjg_out.balcdateint = :arg_balcdateint ) AND
- ( ow_wfjg_out.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "反结存操作失败 ~n原因:"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //-----------------------------------------
- DELETE FROM ow_wfjgbalc
- WHERE balcdateint = 0
- AND sptid = :arg_sptid
- AND scid = :arg_scid;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '反结存操作 ~n原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- SetNull(null_dt)
- UPDATE ow_wfjgbalc
- SET balcdateint = 0,
- balcdate = :null_dt
- WHERE balcdateint = :arg_balcdateint
- AND sptid = :arg_sptid
- AND scid = :arg_scid ;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新外协商结存标记失败. ~n 原因:"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSE
- COMMIT;
- END IF
- RETURN rslt
- end function
|