其余文件
This commit is contained in:
161
app/api/validate/OrderInvoiceValidate.php
Normal file
161
app/api/validate/OrderInvoiceValidate.php
Normal file
@ -0,0 +1,161 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\validate;
|
||||
|
||||
use app\common\basics\Validate;
|
||||
use app\common\enum\OrderEnum;
|
||||
use app\common\enum\OrderInvoiceEnum;
|
||||
use app\common\model\order\Order;
|
||||
use app\common\model\order\OrderInvoice;
|
||||
|
||||
/**
|
||||
* 订单发票验证
|
||||
* Class OrderInvoiceValidate
|
||||
* @package app\api\validate
|
||||
*/
|
||||
class OrderInvoiceValidate extends Validate
|
||||
{
|
||||
|
||||
protected $rule = [
|
||||
'id' => 'require|checkInvoice', // 发票id
|
||||
'shop_id' => 'require', // 门店id
|
||||
'order_id' => 'require|checkOrder', // 订单id
|
||||
'type' => 'require', // 发票类型
|
||||
'header_type' => 'require|checkHeaderType',// 抬头类型
|
||||
'name' => 'require',// 抬头名称
|
||||
'email' => 'require',// 邮箱
|
||||
|
||||
'duty_number' => 'requireIf:header_type,' . OrderInvoiceEnum::HEADER_TYPE_COMPANY,// 税号 (企业类型必填)
|
||||
'address' => 'requireIf:type,' . OrderInvoiceEnum::TYPE_SPEC,// 企业地址(专票类型必填)
|
||||
'mobile' => 'requireIf:type,' . OrderInvoiceEnum::TYPE_SPEC,// 企业电话(专票类型必填)
|
||||
'bank' => 'requireIf:type,' . OrderInvoiceEnum::TYPE_SPEC,// 快狐银行(专票类型必填)
|
||||
'bank_account' => 'requireIf:type,' . OrderInvoiceEnum::TYPE_SPEC,// 银行账号(专票类型必填)
|
||||
];
|
||||
|
||||
|
||||
protected $message = [
|
||||
'id.require' => '参数缺失',
|
||||
'shop_id.require' => '参数缺失',
|
||||
'order_id.require' => '订单参数缺失',
|
||||
'type.require' => '请选择发票类型',
|
||||
'header_type.require' => '请选择抬头类型',
|
||||
'name.require' => '请填写抬头名称',
|
||||
'email.require' => '请填写邮箱',
|
||||
|
||||
'duty_number.requireIf' => '请填写税号',
|
||||
'address.requireIf' => '请填写企业地址',
|
||||
'mobile.requireIf' => '请填写企业电话',
|
||||
'bank.requireIf' => '请填写开户银行',
|
||||
'bank_account.requireIf' => '请填写银行账号',
|
||||
];
|
||||
|
||||
public function sceneAdd()
|
||||
{
|
||||
return $this->remove('id', true)
|
||||
->remove('shop_id', true);
|
||||
}
|
||||
|
||||
public function sceneEdit()
|
||||
{
|
||||
return $this->remove('order_id', true)
|
||||
->remove('shop_id', true)
|
||||
->append('id', 'checkAbleEdit');
|
||||
}
|
||||
|
||||
public function sceneDetail()
|
||||
{
|
||||
return $this->only(['id']);
|
||||
}
|
||||
|
||||
public function sceneSetting()
|
||||
{
|
||||
return $this->only(['shop_id']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 校验发票
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param $data
|
||||
* @return bool|string
|
||||
* @author 段誉
|
||||
* @date 2022/4/12 12:09
|
||||
*/
|
||||
protected function checkInvoice($value, $rule, $data)
|
||||
{
|
||||
$invoice = OrderInvoice::findOrEmpty($value);
|
||||
if ($invoice->isEmpty()) {
|
||||
return '发票信息不存在';
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 校验订单是否可添加发票
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param $data
|
||||
* @return bool|string
|
||||
* @author 段誉
|
||||
* @date 2022/4/12 10:01
|
||||
*/
|
||||
protected function checkOrder($value, $rule, $data)
|
||||
{
|
||||
$order = Order::with(['invoice'])->findOrEmpty($value);
|
||||
|
||||
if ($order->isEmpty()) {
|
||||
return '订单不存在';
|
||||
}
|
||||
|
||||
if ($order['del'] == 1 || $order['order_status'] == OrderEnum::ORDER_STATUS_DOWN) {
|
||||
return '此订单已不可申请发票';
|
||||
}
|
||||
|
||||
if (!empty($order['invoice'])) {
|
||||
return '此订单已有发票信息';
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 校验抬头类型
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param $data
|
||||
* @return bool|string
|
||||
* @author 段誉
|
||||
* @date 2022/4/11 17:17
|
||||
*/
|
||||
protected function checkHeaderType($value, $rule, $data)
|
||||
{
|
||||
if ($value == OrderInvoiceEnum::HEADER_TYPE_PERSONAL && $data['type'] == OrderInvoiceEnum::TYPE_SPEC) {
|
||||
return '专用发票抬头类型仅支持企业';
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 校验能否编辑
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param $data
|
||||
* @return bool|string
|
||||
* @author 段誉
|
||||
* @date 2022/4/12 14:56
|
||||
*/
|
||||
protected function checkAbleEdit($value, $rule, $data)
|
||||
{
|
||||
$invoice = OrderInvoice::findOrEmpty($value);
|
||||
if ($invoice['status'] == OrderInvoiceEnum::STATUS_YES) {
|
||||
return '此发票已开票,无法编辑';
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user