$PBExportHeader$f_trigger_fifo_procedure.srf global type f_trigger_fifo_procedure 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 long f_trigger_fifo_procedure (long arg_scid, long arg_mtrlwareid, datetime arg_date, integer arg_mod, long arg_outwareid, long arg_mtrlwaremxid, 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 long f_trigger_fifo_procedure (long arg_scid, long arg_mtrlwareid, datetime arg_date, integer arg_mod, long arg_outwareid, long arg_mtrlwaremxid, boolean arg_ifcommit, ref transaction commit_transaction, ref string arg_msg);// arg_mod=1 正数进仓审 Long rslt = 1 DateTime dt dt = DateTime(Date(arg_date),Time(0)) DECLARE pro1 PROCEDURE FOR p_outware_cost_fifo_procedure @arg_scid = :arg_scid, @arg_mtrlwareid = :arg_mtrlwareid, @arg_date = :dt, @arg_mod = :arg_mod, @arg_outwareid = :arg_outwareid, @arg_mtrlwaremxid = :arg_mtrlwaremxid, @arg_rslt = :rslt OUTPUT, @arg_msg = :arg_msg OUTPUT Using commit_transaction; EXECUTE pro1; IF commit_transaction.SQLCode <> 0 THEN arg_msg = commit_transaction.SQLErrText rslt = 0 //ELSE // FETCH pro1 INTO :rslt,:arg_msg; END IF CLOSE pro1; decimal aa,bb,cc,dd SELECT cost, wareamt,cost_notax,wareamt_notax INTO :aa,:bb,:cc,:dd FROM u_mtrlware WHERE mtrlwareid = :arg_mtrlwareid; IF commit_transaction.SQLCode <> 0 THEN arg_msg = commit_transaction.SQLErrText rslt = 0 END IF aa=aa bb=bb cc=cc dd=dd RETURN rslt end function