进销存报表生成技能
技能描述
本技能专门用于根据企业的进销项发票数据,自动生成进销存库存明细账和报表(Excel格式),支持按商品品类、时间维度进行统计分析。
适用场景:
- 月度/季度进销存报表生成
- 库存盘点和差异分析
- 商品销售和采购结构分析
- 出具库存管理报告
功能特性
1. 数据读取与过滤
- 读取进项发票(采购数据)
- 读取销项发票(销售数据)
- 过滤非库存商品(服务、费用类发票)
- 识别红字发票(退货/折让)
2. 进销存计算逻辑
| 计算项 | 公式 | 说明 | |--------|------|------| | 期初库存 | 上期末库存数量/金额 | 数量、金额分别核算 | | 本期进货 | 进项发票数量/金额合计 | 不含增值税 | | 本期销售 | 销项发票数量/金额合计 | 不含增值税 | | 期末库存 | 期初 + 本期进货 - 本期销售 | 数量、金额分别核算 | | 毛利率 | (销售收入 - 销售成本) ÷ 销售收入 × 100% | 按商品类别计算 |
3. 多维度分析
| 分析维度 | 内容 | |---------|---------| | 商品品类维度 | 按商品分类(食用菌、坚果、杂粮等)统计进销存 | | 时间维度 | 按月/季统计进销存变动 | | 供应商维度 | 按供应商统计采购数量和金额 | | 客户维度 | 按客户统计销售数量和金额 | | 库存预警 | 库存量过低/过高的商品预警 |
4. 双报表输出
进销存库存明细账(Excel):
- 按商品编码汇总
- 包含数量、规格型号、不含税金额
- 计算期末库存数量和金额
进销存分析报表(Excel):
- 进销存汇总表
- 商品结构分析
- 库存周转率分析
- 毛利分析
输入输出格式
输入文件
进项发票文件 (--jin 参数):
- 格式:Excel (.xlsx)
- Sheet名称:
信息汇总表 - 必需列:
开票日期(datetime)销方名称(str)货物或应税劳务名称(str)规格型号(str, 可选)单位(str, 可选)数量(float, 可选)金额(float, 不含税)税率(str)发票状态(str)是否正数发票(str)
销项发票文件 (--xiao 参数):
- 格式:Excel (.xlsx)
- Sheet名称:
信息汇总表 - 必需列:同进项发票
期初库存文件 (--begin 参数, 可选):
- 格式:Excel (.xlsx) 或 CSV
- 必需列:
商品编码(str)商品名称(str)规格型号(str)单位(str)期初数量(float)期初金额(float, 不含税)
输出文件
进销存库存明细账 (--out-detail 参数):
- 格式:Excel (.xlsx)
- 文件名建议:
[公司名]_进销存库存明细账_[期间].xlsx
进销存分析报表 (--out-report 参数):
- 格式:Excel (.xlsx)
- 文件名建议:
[公司名]_进销存分析报表_[期间].xlsx
使用方法
方法一:命令行直接运行(需先开发脚本)
/Users/leewu/.workbuddy/binaries/python/envs/default/bin/python3 \
".workbuddy/skills/inventory-report/generate_inventory_report.py" \
--jin [进项发票文件路径] \
--xiao [销项发票文件路径] \
--begin [期初库存文件路径,可选] \
--company [公司名称] \
--period [期间,如 "2025年1-12月"] \
--out-detail [库存明细账输出路径] \
--out-report [分析报表输出路径]
参数说明:
--jin: 进项/采购发票 Excel 文件路径(必需)--xiao: 销项/销售发票 Excel 文件路径(必需)--begin: 期初库存文件路径(可选,默认从0开始)--company: 公司名称,用于报告标题(可选)--period: 报表期间(可选,默认"本期")--out-detail: 库存明细账输出路径(必需)--out-report: 分析报表输出路径(必需)
示例:
/Users/leewu/.workbuddy/binaries/python/envs/default/bin/python3 \
".workbuddy/skills/inventory-report/generate_inventory_report.py" \
--jin "财务资料/审计文件-春香/25年取得全量发票.xlsx" \
--xiao "财务资料/审计文件-春香/25年开具发票.xlsx" \
--company "春香优选(宁夏)科技有限公司" \
--period "2025年1-12月" \
--out-detail "输出/春香优选_进销存库存明细账_2025.xlsx" \
--out-report "输出/春香优选_进销存分析报表_2025.xlsx"
方法二:对话触发(推荐)
触发语示例:
- "用进销存报表生成技能,根据 [路径] 的进销项发票,生成 [公司名] 的 [期间] 进销存报表"
- "生成 [公司名] 的进销存库存明细账,采购发票在 [路径],销售发票在 [路径]"
- "根据发票数据出进销存报表,并按商品品类区分"
AI执行流程:
- 读取用户提供的进项、销项发票文件路径
- 验证文件格式和内容
- 过滤非库存商品(服务、费用类)
- 调用
generate_inventory_report.py脚本 - 生成库存明细账和分析报表
- 交付报告文件
核心脚本说明
generate_inventory_report.py(待开发)
功能模块:
load_invoice_data(file_path, invoice_type): 读取发票数据,过滤非库存商品calculate_inventory(jin_df, xiao_df, begin_inventory): 计算进销存analyze_inventory(inventory_data): 执行多维度分析generate_detail_report(data, output_path, company_name, period): 生成库存明细账generate_analysis_report(data, analysis, output_path, company_name, period): 生成分析报表
依赖库:
pandas: 数据处理openpyxl: Excel 文件生成和样式设置argparse: 命令行参数解析
输出报表结构详解
报表1: 进销存库存明细账
Sheet 1: 库存明细账 | 商品编码 | 商品名称 | 规格型号 | 单位 | 期初数量 | 期初金额 | 本期进货数量 | 本期进货金额 | 本期销售数量 | 本期销售金额 | 期末库存数量 | 期末库存金额 |
Sheet 2: 库存变动明细 | 日期 | 商品编码 | 商品名称 | 变动类型(进货/销售/退货) | 数量 | 金额 | 对方单位 |
Sheet 3: 库存汇总表 | 商品品类 | 期末库存数量 | 期末库存金额 | 库存周转率 | 毛利率 |
报表2: 进销存分析报表
Sheet 1: 进销存汇总表 | 期间 | 期初库存金额 | 本期进货金额 | 本期销售金额 | 期末库存金额 | 毛利率 | 库存周转率 |
Sheet 2: 商品结构分析 | 商品品类 | 采购金额占比 | 销售金额占比 | 库存金额占比 | 毛利率 |
Sheet 3: 库存周转率分析 | 商品编码 | 商品名称 | 年平均库存 | 年销售成本 | 库存周转率 | 周转天数 | 评价 |
Sheet 4: 毛利分析 | 商品品类 | 销售收入 | 销售成本 | 毛利额 | 毛利率 | 同比变动 |
Sheet 5: 库存预警台账 | 商品编码 | 商品名称 | 当前库存 | 库存下限 | 库存上限 | 预警类型 | 建议措施 |
过滤规则说明
非库存商品过滤
以下商品/服务不计入进销存:
- 服务类:住宿、餐饮、广告、劳务、建筑、运输、信息技术、保险等
- 费用类:电费、天然气、水费、电话费、网络费等
- 固定资产:设备、车辆、房产等(可选计入)
过滤关键词列表:
non_inventory_keywords = [
'住宿', '餐饮', '广告', '劳务', '建筑', '运输',
'信息技术', '保险', '电费', '天然气', '水费',
'电话费', '网络费', '租赁', '物业', '咨询'
]
红字发票处理
是否正数发票= "否" 的发票,视为红字发票(退货/折让)- 红字发票的数量和金额为负数,直接参与计算
自定义修改指南
修改商品分类规则
在 load_invoice_data() 函数中修改:
def categorize_goods(goods_name):
"""
根据商品名称分类
"""
if '食用菌' in goods_name or '菌' in goods_name:
return '食用菌'
elif '坚果' in goods_name or '干果' in goods_name:
return '坚果干果'
elif '杂粮' in goods_name or '米' in goods_name or '粥' in goods_name:
return '杂粮谷物'
elif '枸杞' in goods_name or '原浆' in goods_name:
return '枸杞及制品'
else:
return '其他商品'
修改库存计算逻辑
在 calculate_inventory() 函数中修改:
# 使用加权平均法计算销售成本
def calculate_weighted_average_cost(inventory_records):
"""
加权平均法计算期末成本
"""
total_quantity = 0
total_amount = 0
for record in inventory_records:
if record['type'] == '进货':
total_quantity += record['quantity']
total_amount += record['amount']
elif record['type'] == '销售':
# 计算加权平均单价
weighted_avg_price = total_amount / total_quantity if total_quantity > 0 else 0
# 计算销售成本
cost = record['quantity'] * weighted_avg_price
total_quantity -= record['quantity']
total_amount -= cost
return total_quantity, total_amount
添加新分析维度
在 analyze_inventory() 函数中添加:
def analyze_by_supplier(inventory_data):
"""
按供应商分析采购结构
"""
supplier_analysis = inventory_data.groupby('supplier_name').agg({
'purchase_quantity': 'sum',
'purchase_amount': 'sum'
}).sort_values('purchase_amount', ascending=False)
return supplier_analysis
版本信息
- 当前版本:0.1.0(规划中,脚本待开发)
- 创建日期:2026-06-05
- 适用项目:春香优选(宁夏)科技有限公司(可复用至其他项目)
- 维护者:中税云检(宁夏)企业管理咨询有限公司
更新日志
v0.1.0 (2026-06-05)
- 技能定义文件创建
- 功能框架设计完成
- 等待脚本开发
后续开发计划
- 第一阶段:开发基础进销存计算功能(数量、金额核算)
- 第二阶段:添加商品分类和过滤规则
- 第三阶段:开发库存明细账和分析报表生成
- 第四阶段:添加库存周转率、毛利率等分析指标
- 第五阶段:开发库存预警功能
- 第六阶段:支持多种成本计算方法(加权平均、先进先出等)
微信扫一扫