123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- $PBExportHeader$f_cmp_fifo_cb_mtrlware.srf
- global type f_cmp_fifo_cb_mtrlware from function_object
- end type
- forward prototypes
- global function integer f_del_mtrlware_inmx (long arg_scid, long arg_mtrlwareid, long arg_inwareid, long arg_printid, string arg_inwarecode, datetime arg_inwaredate, decimal arg_inqty, decimal arg_inprice, long arg_if_outware, boolean arg_ifcommit, ref transaction commit_transaction, ref string arg_msg)
- global function integer f_cmp_fifo_cb_mtrlware (long arg_scid, long arg_mtrlwareid, boolean arg_ifcommit, ref transaction commit_transaction, ref string arg_msg)
- end prototypes
- global function integer f_del_mtrlware_inmx (long arg_scid, long arg_mtrlwareid, long arg_inwareid, long arg_printid, string arg_inwarecode, datetime arg_inwaredate, decimal arg_inqty, decimal arg_inprice, long arg_if_outware, boolean arg_ifcommit, ref transaction commit_transaction, ref string arg_msg);Long rslt = 1
- long ls_newid
- ls_newid = f_sys_scidentity(0,"u_mtrlware_inmx","mtrlwaremxid",arg_msg,false,commit_transaction)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- INSERT INTO u_mtrlware_inmx
- (mtrlwaremxid,
- scid,
- mtrlwareid,
- inwareid,
- printid,
- inwarecode,
- inwaredate,
- inqty,
- inprice,
- if_outware)
- VALUES
- ( :ls_newid,
- :arg_scid,
- :arg_mtrlwareid,
- :arg_inwareid,
- :arg_printid,
- :arg_inwarecode,
- :arg_inwaredate,
- :arg_inqty,
- :arg_inprice,
- :arg_if_outware) ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "插入入库批明细失败"+"~n"
- GOTO ext
- END IF
- 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
- global function integer f_cmp_fifo_cb_mtrlware (long arg_scid, long arg_mtrlwareid, boolean arg_ifcommit, ref transaction commit_transaction, ref string arg_msg);Long rslt = 1
- Long contractcnt
- Long i
- datastore ds
- ds = Create datastore
- ds.DataObject = "dddw_cmp_fifo_cb_mtrlware"
- ds.SetTransObject(commit_transaction)
- contractcnt = ds.Retrieve(arg_scid,arg_mtrlwareid)
- Long ll_inwareid ,ll_printid , ll_if_outware
- Decimal dec_inqty , dec_inprice ,dec_inamt
- UPDATE u_mtrlware_inmx SET outqty = 0
- Where scid = :arg_scid And mtrlwareid = :arg_mtrlwareid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新进仓批明细已出仓数量失败1"+"~n"
- GOTO ext
-
- END IF
- FOR i = 1 To contractcnt
- ll_inwareid = 0
- ll_printid = 0
- ll_if_outware = 0
- dec_inqty = 0
- dec_inprice = 0
- dec_inamt = 0
-
- ll_inwareid = ds.Object.inwareid[i]
- ll_printid = ds.Object.printid[i]
- ll_if_outware = ds.Object.if_outware[i]
- dec_inqty = ds.Object.inqty[i]
- dec_inprice = ds.Object.inprice[i]
- dec_inamt = ds.Object.inamt[i]
-
- IF ll_if_outware = 0 THEN
- UPDATE u_inwaremx SET u_inwaremx.cost = :dec_inprice ,u_inwaremx.costamt = :dec_inamt
- Where scid = :arg_scid And inwareid = :ll_inwareid And printid = :ll_printid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新进仓明细成本失败1"+"~n"
- GOTO ext
-
- END IF
- ELSE // ll_if_outware = 1
-
- UPDATE u_outwaremx SET u_outwaremx.cost = :dec_inprice ,u_outwaremx.costamt = :dec_inamt * (-1)
- Where scid = :arg_scid And outwareid = :ll_inwareid And printid = :ll_printid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新负数出仓明细成本失败2"+"~n"
- GOTO ext
-
- END IF
-
-
-
- END IF
-
-
-
- NEXT
- DateTime dt
- dt = DateTime(Date('2000-01-01'),Time(0))
- rslt = f_trigger_fifo_procedure(arg_scid,arg_mtrlwareid,dt,2,-1,-1,False,commit_transaction,arg_msg)
- //重算结存表
- rslt =f_cmp_fifo_warebalc(arg_scid,arg_mtrlwareid,False,commit_transaction,arg_msg)
- 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
|