From 4717bb01ca52dfb3c8ebebf4c617b34155dc71ef Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Tue, 23 Sep 2025 15:14:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=98=E6=AC=BE=E4=B8=8E=E6=94=B6=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/model/FinPaymentApply.php | 8 +++ app/common/model/FinPaymentStock.php | 4 +- app/common/model/FinReceipt.php | 14 ++++-- app/common/model/FinReceiptHis.php | 49 +++++++++++++++++++ app/common/model/StockOrders.php | 8 +++ app/common/service/FinPaymentApplyService.php | 19 +++++++ app/common/service/FinReceiptService.php | 4 +- app/controller/IndexController.php | 4 +- 8 files changed, 102 insertions(+), 8 deletions(-) create mode 100644 app/common/model/FinReceiptHis.php diff --git a/app/common/model/FinPaymentApply.php b/app/common/model/FinPaymentApply.php index 2fb04a7..0556210 100644 --- a/app/common/model/FinPaymentApply.php +++ b/app/common/model/FinPaymentApply.php @@ -62,4 +62,12 @@ class FinPaymentApply extends Model { return $this->belongsToMany(StockOrders::class, 'fin_payment_stock', 'payment_apply_id', 'stock_id'); } + + /** + * 关联的备货单(通过中间表) + */ + public function stocks() + { + return $this->belongsToMany(StockOrders::class, 'fin_payment_stock', 'payment_apply_id', 'stock_id'); + } } \ No newline at end of file diff --git a/app/common/model/FinPaymentStock.php b/app/common/model/FinPaymentStock.php index 6f4a3ba..d5b3d10 100644 --- a/app/common/model/FinPaymentStock.php +++ b/app/common/model/FinPaymentStock.php @@ -40,7 +40,7 @@ class FinPaymentStock extends Model /** * 允许自动填充模型字段 */ - protected $fillable = ['id', 'payment_apply_id', 'receipt_id', 'stock_id', 'allocated_amount', 'allocated_amount_cny']; + protected $fillable = ['id', 'pi_no', 'payment_apply_id', 'receipt_id', 'stock_id', 'allocated_amount', 'allocated_amount_cny', 'updated_at', 'created_at']; /** * 不允许自动填充模型字段 @@ -59,7 +59,7 @@ class FinPaymentStock extends Model return $this->belongsTo(FinReceipt::class, 'receipt_id', 'id'); } - // 付款申请 + // 备货单 public function stock() { return $this->belongsTo(StockOrders::class, 'stock_id', 'id'); diff --git a/app/common/model/FinReceipt.php b/app/common/model/FinReceipt.php index a98914f..c87ab12 100644 --- a/app/common/model/FinReceipt.php +++ b/app/common/model/FinReceipt.php @@ -40,7 +40,7 @@ class FinReceipt extends Model /** * 允许自动填充模型字段 */ - protected $fillable = ['id', 'receipt_no', 'payment_apply_id', 'country_id', 'remitter', 'account_id', 'currency_id', 'amount', 'discount_amount', 'total_amount_cny', 'exchange_rate', 'arrived_at', 'received_at', 'voucher_no', 'fx_receipt_file', 'is_domestic_return', 'created_at', 'updated_at']; + protected $fillable = ['id', 'receipt_no', 'payment_apply_id', 'country_id', 'remitter', 'account_id', 'currency_id', 'amount', 'discount_amount', 'total_amount_cny', 'exchange_rate', 'arrived_at', 'received_at', 'voucher_no', 'fx_receipt_file', 'is_domestic_return', 'created_by', 'updated_by', 'created_at', 'updated_at']; /** * 不允许自动填充模型字段 @@ -48,11 +48,11 @@ class FinReceipt extends Model protected $guarded = []; /** - * 获取付款申请 + * 对应的付款申请(1-1,可为空) */ public function payment() { - return $this->hasOne(FinPaymentApply::class, 'id', 'payment_apply_id'); + return $this->belongsTo(FinPaymentApply::class, 'payment_apply_id', 'id'); } /** @@ -62,4 +62,12 @@ class FinReceipt extends Model { return $this->belongsToMany(StockOrders::class, 'fin_payment_stock', 'receipt_id', 'stock_id'); } + + /** + * 关联的备货单(通过中间表) + */ + public function stocks() + { + return $this->belongsToMany(StockOrders::class, 'fin_payment_stock', 'receipt_id', 'stock_id'); + } } \ No newline at end of file diff --git a/app/common/model/FinReceiptHis.php b/app/common/model/FinReceiptHis.php new file mode 100644 index 0000000..814b87f --- /dev/null +++ b/app/common/model/FinReceiptHis.php @@ -0,0 +1,49 @@ +belongsToMany(FinPaymentApply::class, 'fin_payment_stock', 'stock_id', 'payment_apply_id'); } + + /** + * 关联收款记录(多对多,经由中间表) + */ + public function receipts() + { + return $this->belongsToMany(FinReceipt::class, 'fin_payment_stock', 'stock_id', 'receipt_id'); + } } \ No newline at end of file diff --git a/app/common/service/FinPaymentApplyService.php b/app/common/service/FinPaymentApplyService.php index 00ad976..d7912e1 100644 --- a/app/common/service/FinPaymentApplyService.php +++ b/app/common/service/FinPaymentApplyService.php @@ -2,9 +2,11 @@ namespace app\common\service; +use app\common\model\FinPaymentStock; use app\common\validate\FinPaymentApplyValidate; use app\common\traits\crud\CrudServiceTrait; use app\common\model\FinPaymentApply; +use support\Redis; use support\Request; class FinPaymentApplyService @@ -61,10 +63,27 @@ class FinPaymentApplyService public function beforeServiceStore($data, Request $request) { $data['apply_no'] = $this->generateUniqueApplyNo(); + $data['doc_user_id'] = $request->user->uid; $data['submit_files'] = json_encode($data['submit_files']); + redis::set('stock'.$data['doc_user_id'],json_encode($request->post('stock'))); return $data; } + + public function afterServiceStore($res) + { + $data = [ + 'payment_apply_id' => $res['id'], + ]; + $stock = json_decode(redis::get('stock'.$res['doc_user_id']), true); + redis::del('stock'); + foreach ($stock as $k => $v) { + $data['stock_id'] = $v['stock_id']; + $data['pi_no'] = $v['pi_on']; + FinPaymentStock::create($data); + } + } + public function beforeServiceUpdate($data, Request $request) { $data['submit_files'] = json_encode($data['submit_files']); diff --git a/app/common/service/FinReceiptService.php b/app/common/service/FinReceiptService.php index 2cc781c..3a7832d 100644 --- a/app/common/service/FinReceiptService.php +++ b/app/common/service/FinReceiptService.php @@ -80,12 +80,14 @@ class FinReceiptService unset($data['payment_apply_id']); } $data['receipt_no'] = $this->generateUniqueReceipt(); - $data['arrived_at'] = strtotime( $data['arrived_at']); + $data['arrived_at'] = $request->user->uid; + $data['updated_by'] = $request->user->uid; return $data; } public function beforeServiceUpdate($data, Request $request) { + $data['updated_by'] = $request->user->uid; $data['arrived_at'] = strtotime( $data['arrived_at']); $data['received_at'] = strtotime( $data['received_at']); return $data; diff --git a/app/controller/IndexController.php b/app/controller/IndexController.php index cf30328..e92751b 100644 --- a/app/controller/IndexController.php +++ b/app/controller/IndexController.php @@ -76,7 +76,7 @@ class IndexController // ], 'model' => [ 'module' => 'common', - 'name' => 'fin_payment_stock' + 'name' => 'fin_receipt_his' ], // 'service' => [ // 'module' => 'common', @@ -90,7 +90,7 @@ class IndexController // 'module' => 'common', // 'name' => 'fin_payment_apply' // ], - 'table' => 'fin_payment_stock' + 'table' => 'fin_receipt_his' ]; $result = (new Generate($options))->doGenerate();