库存先进先出简单例子:

 
 
 
 库存先进先出简单例子:

create table t(
id
int identity(1,1),
name
varchar(50),--商品名称
j int,        --入库数量
c int,        --出库数量
jdate datetime --入库时间
)
insert into t(name,j,c,jdate) select  'A',100,0,'2007-12-01'
insert into t(name,j,c,jdate) select  'A',200,0,'2008-01-07'
insert into t(name,j,c,jdate) select  'B',320,0,'2007-12-21'
insert into t(name,j,c,jdate) select  'A',100,0,'2008-01-15'
insert into t(name,j,c,jdate) select  'B',90,0,'2008-02-03'
insert into t(name,j,c,jdate) select  'A',460,0,'2008-02-01'
insert into t(name,j,c,jdate) select  'A',510,0,'2008-03-01'
go



create proc wsp
@name varchar(50),--商品名称
@cost int         --销售量
as
--先得出该货物的库存是否够
declare @spare float --剩余库存
select @spare=sum(j)-sum(c) from t where name=@name
if(@spare>=@cost)
begin
   
--根据入库日期采用先进先出原则对货物的库存进行处理
    update t set c=
   
case when (select @cost-isnull(sum(j),0)+isnull(sum(c),0) from t where name=@name and jdate<=a.jdate and j!=c)>=0
   
then a.j
   
else
       
case when (select @cost-isnull(sum(j),0)+isnull(sum(c),0) from t where name=@name and jdate<a.jdate and j!=c)<0 then 0
       
else (select @cost-isnull(sum(j),0)+isnull(sum(c),0)+a.c from t where name=@name and jdate<a.jdate and j!=c)
       
end
   
end
   
from t a where name=@name and j!=c
end
else
   
raiserror('库存不足',16,1)   
   
return
go


--测试:

exec wsp @name='A',@cost=180
select * from t


--drop table t
--
drop proc wsp
参考提供的引用内容未提及Excel制作先进先出库存报表的方法。一般而言,制作Excel先进先出库存报表可按以下步骤进行: ### 数据准备 创建包含以下字段的工作表:日期、入库单号、入库数量、出库单号、出库数量、结存数量、批次号等。 ### 录入初始数据 将初始库存信息按批次录入表格,包括入库日期、入库数量、批次号等。 ### 记录出入库信息 每次有入库或出库操作时,及时记录相关信息,如日期、单号、数量、批次号等。 ### 计算结存数量 使用公式计算每笔出入库后的结存数量。例如,在结存数量列使用公式“=上一行结存数量 + 本行入库数量 - 本行出库数量”。 ### 实现先进先出逻辑 在出库时,优先从最早批次的库存中扣除数量。可以使用函数(如VLOOKUP、IF等)结合条件判断来实现。以下是一个简单的示例代码: ```python # 假设数据在A列(日期)、B列(入库数量)、C列(出库数量)、D列(结存数量) # 计算结存数量 for i in range(1, len(df)): df.at[i, '结存数量'] = df.at[i - 1, '结存数量'] + df.at[i, '入库数量'] - df.at[i, '出库数量'] # 实现先进先出逻辑 out_stock_index = 0 for i in range(len(df)): if df.at[i, '出库数量'] > 0: remaining_out = df.at[i, '出库数量'] while remaining_out > 0: if df.at[out_stock_index, '结存数量'] > 0: if df.at[out_stock_index, '结存数量'] >= remaining_out: df.at[out_stock_index, '结存数量'] -= remaining_out remaining_out = 0 else: remaining_out -= df.at[out_stock_index, '结存数量'] df.at[out_stock_index, '结存数量'] = 0 out_stock_index += 1 else: out_stock_index += 1 ``` ### 生成报表 根据需要对数据进行筛选、排序、汇总等操作,生成最终的先进先出库存报表。可以使用数据透视表、图表等工具进行数据可视化展示。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值