调整备货单pdf
This commit is contained in:
@@ -27,14 +27,21 @@ class PurchaseOrdersController extends BaseController
|
||||
{
|
||||
if (isset($data['records']) && count($data['records']) > 0) {
|
||||
foreach ($data['records'] as &$record) {
|
||||
$contractFile = $record['contract_file'] ? explode(',', $record['contract_file']) : [];
|
||||
$contractFileUrl = [];
|
||||
if (count($contractFile) > 0) {
|
||||
foreach ($contractFile as $file) {
|
||||
$contractFileUrl[] = (new \app\common\service\OssService)->generatePrivateUrl($file);
|
||||
}
|
||||
}
|
||||
$result = [
|
||||
'id' => $record['id'],
|
||||
'po_no' => $record['po_no'],
|
||||
'pi_no' => $record['pi_no'],
|
||||
'buyer_id' => $record['buyer_id'],
|
||||
'buyer_name' => $record['buyer_name'],
|
||||
'contract_file' => $record['contract_file'],
|
||||
'contract_file_url' => $record['contract_file'] ? (new \app\common\service\OssService)->generatePrivateUrl($data['contract_file']) : '',
|
||||
'contract_file' => $contractFile,
|
||||
'contract_file_url' => $contractFileUrl,
|
||||
'status' => $record['status'],
|
||||
'remark' => $record['remark'],
|
||||
'created_at' => date('Y-m-d H:i:s', strtotime($record['created_at'])),
|
||||
@@ -55,14 +62,21 @@ class PurchaseOrdersController extends BaseController
|
||||
*/
|
||||
protected function showFormat($data)
|
||||
{
|
||||
$contractFile = $data['contract_file'] ? explode(',', $data['contract_file']) : [];
|
||||
$contractFileUrl = [];
|
||||
if (count($contractFile) > 0) {
|
||||
foreach ($contractFile as $file) {
|
||||
$contractFileUrl[] = (new \app\common\service\OssService)->generatePrivateUrl($file);
|
||||
}
|
||||
}
|
||||
$result = [
|
||||
'id' => $data['id'],
|
||||
'po_no' => $data['po_no'],
|
||||
'pi_no' => $data['pi_no'],
|
||||
'buyer_id' => $data['buyer_id'],
|
||||
'buyer_name' => $data['buyer_name'],
|
||||
'contract_file' => $data['contract_file'],
|
||||
'contract_file_url' => $data['contract_file'] ? (new \app\common\service\OssService)->generatePrivateUrl($data['contract_file']) : '',
|
||||
'contract_file' => $contractFile,
|
||||
'contract_file_url' => $contractFileUrl,
|
||||
'status' => $data['status'],
|
||||
'remark' => $data['remark']
|
||||
];
|
||||
|
||||
@@ -163,7 +163,6 @@ class PurchaseOrdersService
|
||||
|
||||
switch ($scene) {
|
||||
case 'index':
|
||||
// $config['where']['status'] = 1;
|
||||
$config['order']['id'] = 'desc';
|
||||
break;
|
||||
case 'update':
|
||||
@@ -193,29 +192,18 @@ class PurchaseOrdersService
|
||||
// 构建查询条件
|
||||
$config = $this->buildQueryConfig($request, 'update');
|
||||
|
||||
// 删除采购单明细
|
||||
// 软删除采购单明细
|
||||
$order = $this->logicShow($config);
|
||||
if ($order && $order->items) {
|
||||
PurchaseOrderItems::where('purchase_order_id', $order->id)->delete();
|
||||
foreach ($order->items as $item) {
|
||||
$item->delete();
|
||||
}
|
||||
}
|
||||
|
||||
// 删除采购单主表
|
||||
$deleted = $this->logicDeleteBy($config);
|
||||
// 软删除采购单主表
|
||||
$order->delete();
|
||||
|
||||
return $this->postProcess('Destroy', $deleted);
|
||||
return $this->postProcess('Destroy', $order);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// protected function afterServiceShow($item)
|
||||
// {
|
||||
|
||||
// $item['items'] = $item->items->map(function ($item) {
|
||||
// $item['stock_order'] = $item->stockOrderItems;
|
||||
// return $item;
|
||||
// });
|
||||
// var_dump($item->toArray());
|
||||
// return $item;
|
||||
|
||||
// }
|
||||
}
|
||||
@@ -710,7 +710,7 @@ class StockOrdersService
|
||||
$purchaseTax = (float)($veh['purchase_tax']['amount'] ?? 0);
|
||||
$taxRefund = (float)($veh['tax_refund']['amount'] ?? 0);
|
||||
|
||||
// 退税额 tax_refund 是增加利润的,所以用加法
|
||||
// 退税额 是增加利润
|
||||
return $unitPrice - $ttPrice - $ddPrice - $handlingFee - $fobTransportFee - $portMiscFee - $retrofitFee - $oceanFreight - $commission - $purchaseTax + $taxRefund;
|
||||
}
|
||||
|
||||
@@ -819,6 +819,14 @@ class StockOrdersService
|
||||
// 如果已存在相同车辆,增加数量
|
||||
if (isset($vehList[$v->unique_id])) {
|
||||
$this->incrementVehicleCount($vehList[$v->unique_id], $currencyInfo);
|
||||
// 拼接 remark 值
|
||||
if (!empty($v->remark)) {
|
||||
if (!empty($vehList[$v->unique_id]['remark'])) {
|
||||
$vehList[$v->unique_id]['remark'] .= "; " . $v->remark;
|
||||
} else {
|
||||
$vehList[$v->unique_id]['remark'] = $v->remark;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -840,7 +848,8 @@ class StockOrdersService
|
||||
'color_exterior_snapshot' => $v->color_exterior_snapshot,
|
||||
'num' => 1,
|
||||
'modify' => $modificationText,
|
||||
'mileage' => $v->mileage
|
||||
'mileage' => $v->mileage,
|
||||
'remark' => $v->remark,
|
||||
] + $moneyValues;
|
||||
|
||||
// 添加利润信息
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
<tr>
|
||||
<td><span class="info-label">阿里订单号/PI号:</span> <span class="info-value"><?php echo htmlspecialchars($data['pi_no'] ?? ' - '); ?></span></td>
|
||||
<td><span class="info-label">日期:</span> <span class="info-value nowrap"><?php echo htmlspecialchars($data['biz_date'] ?? ' - '); ?></span></td>
|
||||
<td><span class="info-label">关目的国:</span> <span class="info-value"><?php echo htmlspecialchars($data['clearance_country_snapshot'] ?? ' - '); ?></span></td>
|
||||
<td><span class="info-label">清关目的国:</span> <span class="info-value"><?php echo htmlspecialchars($data['clearance_country_snapshot'] ?? ' - '); ?></span></td>
|
||||
<td><span class="info-label">客户来源:</span> <span class="info-value"><?php echo htmlspecialchars($data['customer_source_snapshot'] ?? ' - '); ?></span></td>
|
||||
<td><span class="info-label">客户名称:</span> <span class="info-value"><?php echo htmlspecialchars($data['customer_snapshot'] ?? ' - '); ?></span></td>
|
||||
<td><span class="info-label">客户所在国:</span> <span class="info-value"><?php echo htmlspecialchars($data['customer_country_snapshot'] ?? ' - '); ?></span></td>
|
||||
@@ -174,6 +174,11 @@
|
||||
<td class="nowrap"><?php echo htmlspecialchars($vehicle['total_price']['currency_info'] ?? ' - '); ?></td>
|
||||
<td class="nowrap"><?php echo htmlspecialchars($vehicle['profit']['currency_info'] ?? ' - '); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="11" style="text-align:left;">
|
||||
<span class="info-label">备注:</span> <span class="info-value"><?php echo $vehicle['remark']; ?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
|
||||
<tr class="summary-row">
|
||||
|
||||
@@ -6,24 +6,204 @@ use think\Validate;
|
||||
|
||||
class StockOrdersValidate extends Validate
|
||||
{
|
||||
// 规则
|
||||
/**
|
||||
* 验证规则
|
||||
*/
|
||||
protected $rule = [
|
||||
|
||||
'id' => 'number|egt:0',
|
||||
'order_no' => 'require|max:40|unique:stock_orders',
|
||||
'pi_no' => 'require|max:64',
|
||||
'biz_date' => 'require',
|
||||
'salesperson_id' => 'number|egt:0',
|
||||
'salesperson_snapshot' => 'max:64',
|
||||
'clearance_country_id' => 'require|number|egt:0',
|
||||
'clearance_country_snapshot' => 'require|max:64',
|
||||
'customer_source_id' => 'require|number|egt:0',
|
||||
'customer_source_snapshot' => 'require|max:64',
|
||||
'customer_id' => 'require|number|egt:0',
|
||||
'customer_snapshot' => 'require|max:128',
|
||||
'customer_country_id' => 'require|number|egt:0',
|
||||
'customer_country_snapshot' => 'require|max:64',
|
||||
'declarant_name' => 'require|max:64',
|
||||
'eta_ship_date' => 'number|egt:0',
|
||||
'shipping_method_id' => 'require|number',
|
||||
'shipping_method_snapshot' => 'require|max:32',
|
||||
'cif_total_amount' => 'require|float|egt:0',
|
||||
'domestic_port_id' => 'require|number|egt:0',
|
||||
'domestic_port_snapshot' => 'require|max:64',
|
||||
'trade_term_id' => 'require|number|egt:0',
|
||||
'trade_term_snapshot' => 'require|max:64',
|
||||
'clearance_port_id' => 'require|number|egt:0',
|
||||
'clearance_port_snapshot' => 'require|max:64',
|
||||
'latest_arrival_date' => 'number|egt:0',
|
||||
'contract_exchange_rate' => 'require|float|egt:0',
|
||||
'settlement_currency' => 'require|length:3|alpha',
|
||||
'remark' => 'max:255',
|
||||
'contract' => 'max:255',
|
||||
'is_use' => 'in:0,1',
|
||||
'object_id' => 'number|egt:0',
|
||||
'is_final' => 'in:0,1',
|
||||
'approval_status' => 'in:0,1,2,3',
|
||||
'status' => 'in:0,1',
|
||||
'file_url' => 'max:255',
|
||||
'pick_up_date' => 'number|egt:0',
|
||||
'collect_all_date' => 'number|egt:0',
|
||||
'created_at' => 'number|egt:0',
|
||||
'updated_at' => 'number|egt:0',
|
||||
'deleted_at' => 'number|egt:0',
|
||||
];
|
||||
|
||||
// 提示
|
||||
/**
|
||||
* 错误提示信息
|
||||
*/
|
||||
protected $message = [
|
||||
|
||||
'order_no.require' => '备货单编号不能为空',
|
||||
'order_no.max' => '备货单编号长度不能超过40个字符',
|
||||
'order_no.unique' => '备货单编号已存在',
|
||||
'pi_no.require' => 'PI号不能为空',
|
||||
'pi_no.max' => 'PI号长度不能超过64个字符',
|
||||
'biz_date.require' => '单据日期不能为空',
|
||||
'clearance_country_id.require' => '清关目的国ID不能为空',
|
||||
'clearance_country_snapshot.require' => '清关目的国名称不能为空',
|
||||
'customer_source_id.require' => '客户来源ID不能为空',
|
||||
'customer_source_snapshot.require' => '客户来源名称不能为空',
|
||||
'customer_id.require' => '客户ID不能为空',
|
||||
'customer_snapshot.require' => '客户名称不能为空',
|
||||
'customer_country_id.require' => '客户所在国ID不能为空',
|
||||
'customer_country_snapshot.require' => '客户所在国名称不能为空',
|
||||
'declarant_name.require' => '清关人不能为空',
|
||||
'shipping_method_id.require' => '出运方式ID不能为空',
|
||||
'shipping_method_snapshot.require' => '出运方式不能为空',
|
||||
'cif_total_amount.require' => '合计到岸价不能为空',
|
||||
'cif_total_amount.float' => '合计到岸价必须为数字',
|
||||
'cif_total_amount.egt' => '合计到岸价不能为负数',
|
||||
'domestic_port_id.require' => '国内收货港ID不能为空',
|
||||
'domestic_port_snapshot.require' => '国内收货港名称不能为空',
|
||||
'trade_term_id.require' => '贸易条款ID不能为空',
|
||||
'trade_term_snapshot.require' => '贸易条款名称不能为空',
|
||||
'clearance_port_id.require' => '清关目的港ID不能为空',
|
||||
'clearance_port_snapshot.require' => '清关目的港名称不能为空',
|
||||
'contract_exchange_rate.require' => '合同汇率不能为空',
|
||||
'contract_exchange_rate.float' => '合同汇率必须为数字',
|
||||
'contract_exchange_rate.egt' => '合同汇率不能为负数',
|
||||
'settlement_currency.require' => '结算币种不能为空',
|
||||
'settlement_currency.length' => '结算币种必须为3个字符',
|
||||
'settlement_currency.alpha' => '结算币种必须为字母',
|
||||
'approval_status.in' => '审批状态值不正确',
|
||||
'status.in' => '状态值不正确',
|
||||
'is_final.in' => '是否终版值不正确',
|
||||
'is_use.in' => '是否开过终版值不正确',
|
||||
];
|
||||
|
||||
// 场景
|
||||
/**
|
||||
* 验证场景
|
||||
*/
|
||||
protected $scene = [
|
||||
// 创建场景
|
||||
'store' => [
|
||||
|
||||
'pi_no', 'biz_date',
|
||||
'clearance_country_id', 'clearance_country_snapshot', 'customer_source_id',
|
||||
'customer_source_snapshot', 'customer_id', 'customer_snapshot',
|
||||
'customer_country_id', 'customer_country_snapshot', 'declarant_name',
|
||||
'shipping_method_id', 'shipping_method_snapshot',
|
||||
'domestic_port_id', 'domestic_port_snapshot',
|
||||
'trade_term_id', 'trade_term_snapshot', 'clearance_port_id',
|
||||
'clearance_port_snapshot', 'contract_exchange_rate',
|
||||
'settlement_currency'
|
||||
],
|
||||
|
||||
// 更新场景
|
||||
'update' => [
|
||||
'pi_no', 'biz_date',
|
||||
'clearance_country_id', 'clearance_country_snapshot', 'customer_source_id',
|
||||
'customer_source_snapshot', 'customer_id', 'customer_snapshot',
|
||||
'customer_country_id', 'customer_country_snapshot', 'declarant_name',
|
||||
'shipping_method_id', 'shipping_method_snapshot',
|
||||
'domestic_port_id', 'domestic_port_snapshot',
|
||||
'trade_term_id', 'trade_term_snapshot', 'clearance_port_id',
|
||||
'clearance_port_snapshot', 'contract_exchange_rate',
|
||||
'settlement_currency'
|
||||
],
|
||||
|
||||
// 提交审批场景
|
||||
'submit' => [
|
||||
'id' => 'require|number|egt:1',
|
||||
'status' => 'require|in:1'
|
||||
],
|
||||
|
||||
// 审批场景
|
||||
'approve' => [
|
||||
'id' => 'require|number|egt:1',
|
||||
'approval_status' => 'require|in:1,2,3'
|
||||
],
|
||||
|
||||
// 状态更新场景
|
||||
'status' => [
|
||||
'id' => 'require|number|egt:1',
|
||||
'status' => 'require|in:0,1'
|
||||
],
|
||||
|
||||
// 简略验证场景(用于快速验证)
|
||||
'simple' => [
|
||||
'order_no', 'biz_date', 'cif_total_amount', 'settlement_currency'
|
||||
]
|
||||
];
|
||||
|
||||
/**
|
||||
* 自定义验证规则 - 验证时间戳是否合理
|
||||
*/
|
||||
protected function checkTimestamp($value, $rule, $data = [])
|
||||
{
|
||||
if ($value === 0 || $value === '0') {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 时间戳应该在1970年到现在+1年的范围内
|
||||
$minTimestamp = 0;
|
||||
$maxTimestamp = time() + (365 * 24 * 60 * 60);
|
||||
|
||||
return $value >= $minTimestamp && $value <= $maxTimestamp;
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义验证规则 - 验证金额格式
|
||||
*/
|
||||
protected function checkMoney($value, $rule, $data = [])
|
||||
{
|
||||
if (!is_numeric($value)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 验证小数点位数不超过2位
|
||||
if (strpos($value, '.') !== false) {
|
||||
$decimalPart = explode('.', $value)[1];
|
||||
if (strlen($decimalPart) > 2) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 场景验证前回调 - 添加自定义规则
|
||||
*/
|
||||
// protected function sceneBefore($scene)
|
||||
// {
|
||||
// // 为时间戳字段添加自定义验证
|
||||
// $timestampFields = ['biz_date', 'eta_ship_date', 'latest_arrival_date', 'pick_up_date', 'collect_all_date', 'created_at', 'updated_at', 'deleted_at'];
|
||||
// foreach ($timestampFields as $field) {
|
||||
// if (isset($this->scene[$scene][$field])) {
|
||||
// $this->rule[$field] .= '|checkTimestamp';
|
||||
// }
|
||||
// }
|
||||
|
||||
// // 为金额字段添加自定义验证
|
||||
// $moneyFields = ['cif_total_amount', 'contract_exchange_rate'];
|
||||
// foreach ($moneyFields as $field) {
|
||||
// if (isset($this->scene[$scene][$field])) {
|
||||
// $this->rule[$field] .= '|checkMoney';
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
@@ -9,6 +9,7 @@ use app\common\utils\scaffold\Generate;
|
||||
use support\Request;
|
||||
use support\Db;
|
||||
use support\Cache;
|
||||
use support\Redis;
|
||||
|
||||
class IndexController
|
||||
{
|
||||
@@ -100,14 +101,9 @@ class IndexController
|
||||
|
||||
public function test(Request $request)
|
||||
{
|
||||
$service = new \app\crm\service\StockOrdersService();
|
||||
$result = $service->createdPdfFile(35);
|
||||
|
||||
// $list = (new \app\common\logic\PurchaseOrdersLogic())->getPiList()->toArray();
|
||||
|
||||
|
||||
// $list = (new \app\common\logic\PurchaseOrdersLogic())->getOrderNoListByPiNo('ces1222')->toArray();
|
||||
|
||||
|
||||
// $list = (new \app\common\logic\PurchaseOrdersLogic())->getOrderItemsListByOrderNo(32)->toArray();
|
||||
// var_dump($list);
|
||||
return json($result);
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,7 @@ return [
|
||||
],
|
||||
'worker' => [
|
||||
'handler' => BusinessWorker::class,
|
||||
'count' => cpu_count()*2,
|
||||
'count' => 6,
|
||||
'constructor' => ['config' => [
|
||||
'eventHandler' => plugin\webman\gateway\Events::class,
|
||||
'name' => 'ChatBusinessWorker',
|
||||
|
||||
Reference in New Issue
Block a user