$PBExportHeader$f_add_mtrlware_inmx.srf global type f_add_mtrlware_inmx from function_object end type forward prototypes global function integer f_add_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, decimal arg_inprice_notax, long arg_if_outware, boolean arg_ifcommit, ref transaction commit_transaction, ref string arg_msg) end prototypes global function integer f_add_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, decimal arg_inprice_notax, long arg_if_outware, boolean arg_ifcommit, ref transaction commit_transaction, ref string arg_msg);Long rslt = 1 Long ls_newid DateTime dt Decimal dec_temp = 0 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 dec_temp = arg_inqty arg_inqty = Abs(arg_inqty) dt = DateTime(Date(arg_inwaredate),Time(0)) INSERT INTO u_mtrlware_inmx (mtrlwaremxid, scid, mtrlwareid, inwareid, printid, inwarecode, inwaredate, inqty, inprice, inprice_notax, if_outware) VALUES ( :ls_newid, :arg_scid, :arg_mtrlwareid, :arg_inwareid, :arg_printid, :arg_inwarecode, :dt, :arg_inqty, :arg_inprice, :arg_inprice_notax, :arg_if_outware) Using commit_transaction ; IF commit_transaction.SQLCode <> 0 or commit_transaction.SQLNRows=0 THEN rslt = 0 arg_msg = "插入入库批明细失败"+"~n" GOTO ext END IF IF dec_temp > 0 THEN UPDATE u_inwaremx SET u_inwaremx.cost = :arg_inprice ,u_inwaremx.costamt = :arg_inprice * :arg_inqty, u_inwaremx.cost_notax = :arg_inprice_notax Where scid = :arg_scid And inwareid = :arg_inwareid And printid = :arg_printid Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新进仓明细成本失败1"+"~n" GOTO ext END IF ELSE UPDATE u_outwaremx SET u_outwaremx.cost = :arg_inprice ,u_outwaremx.costamt = :arg_inprice * :arg_inqty * (-1), u_outwaremx.cost_notax = :arg_inprice_notax Where scid = :arg_scid And outwareid = :arg_inwareid And printid = :arg_printid Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新负数出仓明细成本失败2"+"~n" GOTO ext END IF 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