*/ public function fields(string $dataset): array { $money = static fn (string $label): array => ['label' => $label, 'type' => 'number']; $text = static fn (string $label): array => ['label' => $label, 'type' => 'text']; $date = static fn (string $label): array => ['label' => $label, 'type' => 'date']; $month = static fn (string $label): array => ['label' => $label, 'type' => 'month']; return match ($dataset) { 'payment-reconciliation' => [ 'supplier' => $text('供应商'), 'skuCode' => $text('货号'), 'productCode' => $text('商品编码'), 'skuName' => $text('规格名称'), 'qty' => $money('数量'), 'unitPrice' => $money('单价'), 'amount' => $money('金额'), 'guessUnitPrice' => $money('预估单价'), 'guessAmount' => $money('预估金额'), 'supplierGoodsCode' => $text('供应商商品编码'), 'remark' => $text('备注'), 'warehouse' => $text('仓库名称'), 'expressName' => $text('快递名称'), 'expressNo' => $text('快递单号'), ], 'return-reconciliation', 'return-unpriced' => [ 'send_time' => $date('发货时间'), 'supplier' => $text('明细供应商'), 'barcode' => $text('条形码'), 'sku_name' => $text('商品名称'), 'qty' => $money('发货量'), 'unit_price' => $money('单价'), 'amount' => $money('金额'), 'guess_unit_price' => $money('预估单价'), 'guess_amount' => $money('预估金额'), 'supplier_barcode' => $text('供应商条码'), 'remark' => $text('备注'), 'title' => $text('标题'), 'wms_pick_no' => $text('wms配货单号'), 'warehouse' => $text('仓库名称'), 'express_no' => $text('快递单号'), 'labels' => $text('标记多标签'), 'creator' => $text('操作人'), 'reconciler' => $text('对账人'), ], 'invoice-deductions' => [ 'month_str' => $month('日期'), 'category' => $text('类别'), 'payee' => $text('打款抬头'), 'receiver' => $text('收款方'), 'board_factory' => $text('供板材厂家/代扣厂家'), 'subsidy_fee' => $money('补贴费用'), 'remark' => $text('备注'), 'price' => $money('对私打款金额'), 'detail' => $text('明细'), 'note' => $text('注明'), 'person_charge' => $text('负责人'), ], 'compensation-details' => [ 'month' => $month('日期'), 'supplier' => $text('供应商'), 'amount' => $money('赔付金额'), 'reason' => $text('赔付原因'), 'remark' => $text('备注'), ], 'advance-details' => [ 'supplier' => $text('供应商'), 'contract_name' => $text('协议签订名称'), 'advance_amount' => $money('借支金额'), 'actual_pay' => $money('实际打款金额'), 'month_deduct' => $money('本月扣款金额'), 'should_deduct' => $money('应扣金额'), 'deduct_start_month' => $month('分期起始扣款月份'), 'deduct_end_month' => $month('分期最后扣款月份'), 'remain_periods' => $money('分期剩余期数'), 'month_str' => $month('借支日期'), 'loan_term' => $text('借款期限'), 'remark' => $text('备注'), 'is_paid' => $text('是否打款'), 'pay_month' => $month('打款月份'), 'serial_no' => $text('流水号'), 'loan_agreement' => $text('借支协议'), 'person_charge' => $text('负责人'), ], 'sample-deductions' => [ 'finish_time' => $date('日期'), 'department' => $text('部门'), 'creator' => $text('申请人'), 'sku_id' => $text('商品代码'), 'skuName' => $text('商品名称'), 'num' => $money('数量'), 'supplier' => $text('厂家'), 'purchase' => $text('对应采购'), 'productCode' => $text('扣款厂家商品代码'), 'shipping_fee' => $money('运费'), 'cost_price' => $money('成本价'), 'total_amount' => $money('合计扣款金额'), 'estimated_price' => $money('预估价'), 'estimated_price_all' => $money('预估金额'), 'remark' => $text('备注'), ], 'delivery-unpriced' => [ 'transactionNo' => $text('来源单号'), 'distributionNo' => $text('单据编号(采购单号)'), 'date' => $date('创建时间'), 'supplier' => $text('供应商'), 'sku' => $text('货号'), 'barCode' => $text('条码'), 'skuName' => $text('规格名'), 'supplier_barcode' => $text('供应商条码'), 'remark' => $text('备注'), 'warehouse' => $text('仓库'), 'expressName' => $text('快递名称'), 'expressNo' => $text('快递单号'), 'purchase' => $text('负责人'), ], 'other-adjustments' => [ 'project' => $text('项目'), 'month_str' => $month('日期'), 'supplier' => $text('厂家'), 'supplement_amount' => $money('补款金额'), 'supplement_reason' => $text('补款原因'), 'remark' => $text('备注'), 'remark2' => $text('备注2'), 'person_charge' => $text('负责人'), ], 'dropshipping-express' => [ 'reconciliation_person' => $text('对账人'), 'month_str' => $month('日期'), 'supplier' => $text('供应商'), 'express_freight' => $money('快递运费'), 'express_account' => $money('快递记账'), 'replenish_freight' => $money('补运费'), 'replenish_account' => $money('补记账'), 'return_fee' => $money('退回费'), 'intercept_fee' => $money('拦截'), 'change_address_fee' => $money('改地址'), 'turnover_fee' => $money('翻箱费'), 'overlong_fee' => $money('超长费'), 'total_freight' => $money('合计运费'), 'remark' => $text('备注'), 'express_name' => $text('快递'), 'remark2' => $text('备注2'), ], 'board-deductions' => [ 'stock_in_date' => $date('入库日期'), 'stock_out_date' => $date('出库日期'), 'furniture_factory' => $text('家具厂'), 'lamination_factory' => $text('压贴厂'), 'deduction_type' => $text('类型'), 'specification' => $text('规格'), 'material_name' => $text('原料名称'), 'received_quantity' => $money('实收数量'), 'unit_price' => $money('单价'), 'amount' => $money('金额'), 'unit' => $text('单位'), 'batch_date' => $date('批次日期'), 'stock_out_number' => $text('出库单号'), 'stock_out_remark' => $text('出库备注'), 'claim_number' => $text('申领单号'), 'number_type' => $text('单号类型'), 'delivery_number' => $text('送货单号'), ], 'supplier-payables-report' => [ 'checker' => $text('对账人'), 'settlement_method' => $text('结算方式'), 'company' => $text('供应商公司主体名称'), 'supplier' => $text('供应商简称'), 'express_freight' => $money('快递运费'), 'beginning_payable' => $money('月初未付'), 'unpriced' => $money('之前未定价-本月定价'), 'advance_loan' => $money('预支借款'), 'loan' => $money('货款金额'), 'refund' => $money('退货金额'), 'procurement' => $money('采购小计'), 'invoice_deduction' => $money('发票扣款'), 'board_deduction' => $money('板材扣款'), 'sample_deduction' => $money('样品扣款'), 'total_compensation' => $money('总赔偿金额'), 'other_adjustment' => $money('其他费用'), 'supplier_supplement' => $money('补给厂家'), 'supplier_balance' => $money('供应商余额'), 'should_pay' => $money('应付余额'), 'estimated_price' => $money('预估金额'), 'to_corporate' => $money('对公打款金额'), 'to_private' => $money('对私打款金额'), 'cashier_paid' => $money('已销账金额'), 'remarks' => $text('备注'), 'private_reason' => $text('对私原因'), 'deposit' => $money('押款金额'), 'negative_reason' => $text('负数原因'), ], default => throw ValidationException::withMessages(['dataset' => '不支持该供应商应付页面。']), }; } public function normalize(string $dataset, array $input): array { return app(PayablesFieldNormalizer::class)->normalize($this->fields($dataset), $input); } public function publicDefinition(string $dataset): array { return [ 'dataset' => $dataset, 'fields' => collect($this->fields($dataset))->map( static fn (array $definition, string $name): array => ['name' => $name] + $definition )->values()->all(), ]; } }