成本价、动态成本与利润计算专题
本文整理动态成本、出库成本、采购入库成本、成本调整和利润报表。成本口径影响销售毛利、库存金额、利润报表和经营报表。
业务目标
- 采购入库形成或更新成本。
- 销售出库按成本计算毛利。
- 成本调整单可修正异常成本。
- 利润报表按销售额、折扣、成本、毛利和毛利率计算。
入口文件
- 成本控制器:
application/controllers/scm/Cost.php - 成本任务:
application/controllers/tasks/CostPrice.php、UpdateGoodsPdCostPrice.php - 利润报表:
application/controllers/reports/ProfitReport.php - 报表服务:
application/Services/Report/ProfitReportSer.php - 采购入库:
application/controllers/scm/InvPu.php - 销售出库:
application/controllers/scm/InvSa.php
核心表
| 表 | 用途 | | --- | --- | | t_bs_cost_price | 动态成本 | | t_bs_cost_price_day_ | 动态成本分表,数量由 BS_COST_PRICE_DAY_NUM 定义 | | t_scm_update_cost | 成本调整单 | | t_scm_update_cost_info | 成本调整明细 | | t_scm_pu_invoice_info | 采购入库成本 | | t_scm_sa_invoice_info | 销售出库成本 | | t_scm_inventory_info | 库存流水成本 |
主流程
flowchart TD
A["采购入库"] --> B["形成入库成本"]
B --> C["更新动态成本"]
C --> D["销售出库取成本"]
D --> E["计算销售成本和毛利"]
E --> F["利润报表展示"]
C --> G["成本调整单修正"]
关键口径
- 单位成本和总成本要区分。
- 销售毛利 = 销售金额 - 销售成本,是否扣折扣以报表实现为准。
- 成本分表按
sid或时间/规则分散,查询时要确认分表。 - 退货、撤销、盘点会影响成本和库存金额。
异常流程
- 毛利异常:查出库成本是否为 0 或异常值。
- 成本没更新:查采购入库成本、成本任务和动态成本表。
- 成本调整无效:查调整单状态和明细是否作用到商品。
- 报表与明细不同:查利润报表是否二次格式化或过滤状态。
常用 rg 命令
rg -n "BS_COST_PRICE|SCM_UPDATE_COST|cost_price|CostPrice|UpdateGoodsPdCostPrice" application
rg -n "ProfitReport|gross_profit|cost_amount|cost_unit|rate_margin" application/controllers/reports application/Services/Report
rg -n "cost|成本|pu_invoice_info|sa_invoice_info" application/service/scm application/Services
改动风险和回归清单
- 采购入库成本、销售出库成本。
- 销售退货、采购退货、盘点。
- 成本调整单新增、审核、生效。
- 利润报表列表和导出。
- 历史成本和当日动态成本兼容。