CaiWuXiTong/app/Models/Business/ThirdPartyWarehouseStorageSettlement.php
limeng 0b00f01566 feat: 三方仓仓储费一键核算+导出核算明细+每期存档
在「第三方仓储报价」页新增仓储费核算:选月份一键按当期生效报价核算
(入库管理费/出库费用/每日仓储费),结果存档并可导出汇总/每日/逐商品三表。

- 新增计算服务 ThirdPartyWarehouseStorageFeeCalculator(口径与报价页公式一致,
  重量取普通商品资料 ops_jst_sku.weight)
- 新增存档表 business_third_party_warehouse_storage_settlements + 模型
- 新增 maatwebsite/excel 三表导出 ThirdPartyWarehouseStorageSettlementExport
- 报价仓库新增 effectiveFor(按仓库+结算月取当期生效报价)
- Livewire 组件与报价页新增核算/导出/历史 UI
- 新增计算服务测试(附 2026-08 真实验收基准 1538.20/6099.60/8376.48/16014.28)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DVQ6NsLsbtxm5Ng7Eew3s9
2026-09-15 09:21:05 +08:00

60 lines
1.6 KiB
PHP

<?php
namespace App\Models\Business;
use App\Abstracts\Model;
class ThirdPartyWarehouseStorageSettlement extends Model
{
protected $table = 'business_third_party_warehouse_storage_settlements';
protected $fillable = [
'company_id',
'warehouse_id',
'warehouse_name',
'period',
'quote_id',
'inbound_rate_per_ton',
'outbound_rate_per_order',
'pieces_per_pallet',
'pallet_area_sqm',
'storage_rate_per_sqm_month',
'days_in_month',
'inbound_tons',
'outbound_qty',
'inbound_fee',
'outbound_fee',
'storage_fee',
'memo_fee',
'loss_fee',
'compensation_fee',
'total_fee',
'detail_json',
'remark',
'calculated_by',
];
protected $casts = [
'company_id' => 'integer',
'warehouse_id' => 'integer',
'quote_id' => 'integer',
'inbound_rate_per_ton' => 'decimal:4',
'outbound_rate_per_order' => 'decimal:4',
'pieces_per_pallet' => 'decimal:4',
'pallet_area_sqm' => 'decimal:4',
'storage_rate_per_sqm_month' => 'decimal:4',
'days_in_month' => 'integer',
'inbound_tons' => 'decimal:4',
'outbound_qty' => 'decimal:2',
'inbound_fee' => 'decimal:2',
'outbound_fee' => 'decimal:2',
'storage_fee' => 'decimal:2',
'memo_fee' => 'decimal:2',
'loss_fee' => 'decimal:2',
'compensation_fee' => 'decimal:2',
'total_fee' => 'decimal:2',
'detail_json' => 'array',
'calculated_by' => 'integer',
];
}