12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- namespace app\cxinv\model;
- use think\Model;
- class PayInvoice extends Base
- {
- protected $schema = [
- 'id' =>'int',
- 'payNo' =>'varchar',
- 'hpNo' =>'varchar',
- 'apply_id' =>'int',
- 'apply_name' =>'varchar',
- 'invType' =>'tinyint',
- 'invoiceType' =>'varchar',
- 'invName' =>'varchar',
- 'inv_img' =>'varchar',
- 'inv_fee' =>'decimal',
- 'inv_subtotal_amount' =>'decimal',
- 'inv_amount' =>'decimal',
- 'invStatus' =>'tinyint',
- 'status' =>'tinyint',
- 'remark' =>'varchar',
- 'exam_remark' =>'varchar',
- 'check_remark' =>'varchar',
- 'tag_id' =>'int',
- 'check_time' =>'varchar',
- 'open_time' =>'varchar',
- 'invoiceNumber' =>'varchar',
- 'seller_check' =>'tinyint',
- 'buyer_check' =>'tinyint',
- 'invoiceCode' =>'varchar',
- 'checkNumber' =>'varchar',
- 'checkApi' =>'tinyint',
- 'is_del' =>'tinyint',
- 'addtime' =>'datetime',
- 'updatetime' =>'datetime',
- ];
- protected $createTime='addtime';
- protected $updateTime='updatetime';
- public static function onAfterInsert(Model $model) : void{
- if ($model->invType==4){
- $ticket= InvoiceInfo::where("payNo",$model->payNo)->findOrEmpty();
- if (!$ticket->isEmpty() && !empty($ticket->item_list)){
- (new InvoiceItem)->saveAll(array_map(function ($item)use($model) {
- return [
- 'invoiceCode'=>$model->hpNo,
- 'order_type'=>2,
- 'good_name'=>$item['name'],
- 'unit'=>$item['unit'],
- 'num'=>$item['quantity'],
- 'unit_price'=>$item['unit_price'],
- 'amount'=>$item['amount'],
- 'tax_amount'=>$item['tax'],
- 'tax'=>$item['tax_rate'],
- 'cat_code'=>$item['license_plate_number'],
- 'total_amount'=>bcadd($item['amount'],$item['tax'],2),
- 'balance_amount'=>bcadd($item['amount'],$item['tax'],2),
- ];
- },$ticket->item_list));
- $ticket->hpNo= $model->hpNo;
- $ticket->save();
- }
- }
- }
- public static function onAfterUpdate(Model $model) : void{
- if ($model->invType==4){
- $change = $model->getChangedData();
- if (isset($change['status'])){
- if($change['status']==4){
- $itemid= InvoiceItem::where(['invoiceCode'=>$model->hpNo,'status'=>[1,2]])->column('id');
- if(!empty($itemid)){
- $invo= InvoiceOrder::whereIn('itemId',$itemid)->where(['status'=>[1,2]])->column('code,balance_amount,total_amount');
- if(!empty($invo)){
- foreach ($invo as $key=>$val){
- InvoiceOrder::orderFinish($val['code'],bcsub($val['total_amount'],$val['balance_amount'],2));
- }
- }
- }
- }
- if($change['status']==9){
- InvoiceItem::refund($model->hpNo);
- }
- }
- }
- }
- }
|