123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- <?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;
- }
-
-
- }
|