付款与收款

This commit is contained in:
2025-09-23 15:14:08 +08:00
parent 36d1d333b1
commit 4717bb01ca
8 changed files with 102 additions and 8 deletions
+8
View File
@@ -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');
}
}
+2 -2
View File
@@ -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');
+11 -3
View File
@@ -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');
}
}
+49
View File
@@ -0,0 +1,49 @@
<?php
namespace app\common\model;
use support\Model;
class FinReceiptHis extends Model
{
/**
* The connection name for the model.
*
* @var string|null
*/
protected $connection = 'mysql';
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'fin_receipt_his';
/**
* The primary key associated with the table.
*
* @var string
*/
protected $primaryKey = 'id';
/**
* Indicates if the model should be timestamped.
*
* @var bool
*/
public $timestamps = true;
protected $dateFormat = 'U';
/**
* 允许自动填充模型字段
*/
protected $fillable = ['id', 'receipt_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'];
/**
* 不允许自动填充模型字段
*/
protected $guarded = [];
}
+8
View File
@@ -103,4 +103,12 @@ class StockOrders extends Model
{
return $this->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');
}
}
@@ -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']);
+3 -1
View File
@@ -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;
+2 -2
View File
@@ -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();