feat(backend): 库存接口带出售价 sale_price(库存屏成本价/单价两列地基)
照原型库存表「成本价(进价)+单价(售价)」两列: - 库存查询 SELECT 加 p.sale_price AS sale_price;成本价 unit_price 补 p.purchase_price 兜底 - inventoryRow 加 SalePrice;前端 Inventory model 加 salePrice - 多租户隔离不变(baseWhere 仍 inv.shop_id);库存测试通过 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
This commit is contained in:
@@ -36,7 +36,8 @@ type inventoryRow struct {
|
|||||||
Spec string `json:"spec"`
|
Spec string `json:"spec"`
|
||||||
Unit string `json:"unit"`
|
Unit string `json:"unit"`
|
||||||
WarehouseName string `json:"warehouse_name"`
|
WarehouseName string `json:"warehouse_name"`
|
||||||
UnitPrice *float64 `json:"unit_price"`
|
UnitPrice *float64 `json:"unit_price"` // 成本价(入库进价)
|
||||||
|
SalePrice *float64 `json:"sale_price"` // 单价(product 售价)
|
||||||
ProductionDate *string `json:"production_date"`
|
ProductionDate *string `json:"production_date"`
|
||||||
BatchNo string `json:"batch_no"`
|
BatchNo string `json:"batch_no"`
|
||||||
SupplierName string `json:"supplier_name"`
|
SupplierName string `json:"supplier_name"`
|
||||||
@@ -131,7 +132,8 @@ func (h *InventoryHandler) List(c *gin.Context) {
|
|||||||
COALESCE(NULLIF(p.spec,''), NULLIF(sii.spec,''), inv.spec, '') AS spec,
|
COALESCE(NULLIF(p.spec,''), NULLIF(sii.spec,''), inv.spec, '') AS spec,
|
||||||
COALESCE(NULLIF(p.unit,''), inv.unit, '') AS unit,
|
COALESCE(NULLIF(p.unit,''), inv.unit, '') AS unit,
|
||||||
COALESCE(NULLIF(w.name,''), inv.warehouse_name, '') AS warehouse_name,
|
COALESCE(NULLIF(w.name,''), inv.warehouse_name, '') AS warehouse_name,
|
||||||
COALESCE(sii.unit_price, inv.unit_price) AS unit_price,
|
COALESCE(sii.unit_price, inv.unit_price, p.purchase_price) AS unit_price,
|
||||||
|
p.sale_price AS sale_price,
|
||||||
COALESCE(DATE(sii.production_date), DATE(inv.production_date)) AS production_date,
|
COALESCE(DATE(sii.production_date), DATE(inv.production_date)) AS production_date,
|
||||||
COALESCE(NULLIF(sii.batch_no,''), inv.batch_no, '') AS batch_no,
|
COALESCE(NULLIF(sii.batch_no,''), inv.batch_no, '') AS batch_no,
|
||||||
inv.supplier_name,
|
inv.supplier_name,
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ class Inventory {
|
|||||||
final String spec;
|
final String spec;
|
||||||
final String unit;
|
final String unit;
|
||||||
final String warehouseName;
|
final String warehouseName;
|
||||||
final double? unitPrice;
|
final double? unitPrice; // 成本价(入库进价)
|
||||||
|
final double? salePrice; // 单价(product 售价)
|
||||||
final String? productionDate;
|
final String? productionDate;
|
||||||
final String batchNo;
|
final String batchNo;
|
||||||
final String supplierName;
|
final String supplierName;
|
||||||
@@ -37,6 +38,7 @@ class Inventory {
|
|||||||
this.unit = '',
|
this.unit = '',
|
||||||
this.warehouseName = '',
|
this.warehouseName = '',
|
||||||
this.unitPrice,
|
this.unitPrice,
|
||||||
|
this.salePrice,
|
||||||
this.productionDate,
|
this.productionDate,
|
||||||
this.batchNo = '',
|
this.batchNo = '',
|
||||||
this.supplierName = '',
|
this.supplierName = '',
|
||||||
@@ -59,6 +61,7 @@ class Inventory {
|
|||||||
unit: json['unit'] as String? ?? '',
|
unit: json['unit'] as String? ?? '',
|
||||||
warehouseName: json['warehouse_name'] as String? ?? '',
|
warehouseName: json['warehouse_name'] as String? ?? '',
|
||||||
unitPrice: (json['unit_price'] as num?)?.toDouble(),
|
unitPrice: (json['unit_price'] as num?)?.toDouble(),
|
||||||
|
salePrice: (json['sale_price'] as num?)?.toDouble(),
|
||||||
productionDate: _parseDate(json['production_date'] as String?),
|
productionDate: _parseDate(json['production_date'] as String?),
|
||||||
batchNo: json['batch_no'] as String? ?? '',
|
batchNo: json['batch_no'] as String? ?? '',
|
||||||
supplierName: json['supplier_name'] as String? ?? '',
|
supplierName: json['supplier_name'] as String? ?? '',
|
||||||
|
|||||||
Reference in New Issue
Block a user