成本价、动态成本与利润计算专题

本文整理动态成本、出库成本、采购入库成本、成本调整和利润报表。成本口径影响销售毛利、库存金额、利润报表和经营报表。

业务目标

  • 采购入库形成或更新成本。
  • 销售出库按成本计算毛利。
  • 成本调整单可修正异常成本。
  • 利润报表按销售额、折扣、成本、毛利和毛利率计算。

入口文件

  • 成本控制器:application/controllers/scm/Cost.php
  • 成本任务:application/controllers/tasks/CostPrice.phpUpdateGoodsPdCostPrice.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

改动风险和回归清单

  • 采购入库成本、销售出库成本。
  • 销售退货、采购退货、盘点。
  • 成本调整单新增、审核、生效。
  • 利润报表列表和导出。
  • 历史成本和当日动态成本兼容。