wugg 5 months ago
parent
commit
e64a193567

+ 64 - 1
app/cxinv/controller/InvoiceItem.php

@@ -7,7 +7,7 @@ use app\cxinv\model\InvoiceGood;
 use app\cxinv\model\InvoiceOrder;
 use app\cxinv\model\OrderCategory;
 use app\cxinv\model\PayInfo;
-use think\App;
+use app\cxinv\model\PayInvoice;use think\App;
 use think\facade\Validate;
 class InvoiceItem extends Base{
     public function __construct(App $app) {
@@ -185,6 +185,69 @@ class InvoiceItem extends Base{
          return  success('备注添加成功');
 
     }
+    /**
+    *  发票明细正负数合并保留整数
+    *  @param $main_id 正数id
+    *         $voice_id  负数id
+    */
+    public function mergeItem(){
+        $param=$this->request->param(["main_id"=>"","voice_id"=>""],"post","trim");
+        $valid=Validate::rule([
+            'main_id|正数id' => 'require|number|gt:0',
+            'voice_id|负数id' => 'require|number|gt:0',
+        ]);
+        if(!$valid->check($param)) return  error($valid->getError());
+        $main = $this->model->where(['id'=>$param['main_id']])->findOrEmpty();
+        if($main->isEmpty()) return  error("正数发票明细不存在");
+        if($main->amount<=0) return  error("正数发票明细金额必须大于0");
+        $voice = $this->model->where(['id'=>$param['voice_id']])->findOrEmpty();
+        if($voice->isEmpty()) return  error("负数发票明细不存在");
+        if($voice->amount>=0) return  error("负数发票明细金额必须小于0");
+        if($main['invoiceCode']!=$voice['invoiceCode']) return  error("正负数发票明细回票申请编号不一致");
+        $pinv= PayInvoice::where('hpNo',$main['invoiceCode'])->findOrEmpty();
+        if($pinv->isEmpty()) return  error('未找到关联的回票申请');
+        if($pinv['status']!=14) return  error('回票申请状态必须为待确认');
+        //负数金额的绝对值 小于正数金额
+        if(abs($voice['amount'])<$main['amount']){
+            $main->amount = bcsub($main['amount'],abs($voice['amount']),2);
+            $main->total_amount = bcsub($main['total_amount'],abs($voice['total_amount']),2);
+            $main->balance_amount = bcsub($main['balance_amount'],abs($voice['balance_amount']),2);
+            $main->tax_amount = bcsub($main['tax_amount'],abs($voice['tax_amount']),2);
+        }else return  error('负数发票金额不能大于正数金额');
+        $this->model->startTrans();
+        try{
+            $main->save();
+            $voice->delete();
+            $this->model->commit();
+        }catch (\Exception $e){
+            $this->model->rollback();
+            return  error($e->getMessage());
+        }
+        return  success('合并成功');
+    }
+    /**
+    *  删除无效发票明细
+    */
+    public function removeItem(){
+        $param=$this->request->param(["id"=>""],"post","trim");
+        $valid=Validate::rule([
+            'id|发票明细id' => 'require|number|gt:0',
+        ]);
+        if(!$valid->check($param)) return  error($valid->getError());
+        $info = $this->model->where(['id'=>$param['id']])->findOrEmpty();
+        if($info->isEmpty()) return  error("发票明细不存在");
+        $pinv= PayInvoice::where("hpNo",$info['invoiceCode'])->findOrEmpty();
+        if($pinv->isEmpty()) return  error("未找到关联的回票申请");
+        if($pinv['status']!=14) return  error("回票申请状态必须为待确认");
+        $this->model->startTrans();
+        try{
+            $info->delete();
+            $this->model->commit();
+        }catch (\Exception $e){
+            $this->model->rollback();
+            return  error($e->getMessage());
+        }
+    }
 
     public function getListByCode(){
         $param=$this->request->param(["code"=>"","status"=>"","size"=>100]);

+ 7 - 3
app/cxinv/controller/Payinv.php

@@ -44,7 +44,7 @@ class Payinv extends Base{
                 'invStatus'=>1,
                 'invoiceNumber'=>$invoice->invoice_number,
                 'invoiceCode'=>$invoice->invoice_code,
-                'status'=>11,//待关联订单
+                'status'=>14,//待关联订单
                 'checkNumber'=>$invoice->check_code,
                 'open_time'=>$invoice->open_date,
                 'addtime'=>date('Y-m-d H:i:s'),
@@ -118,13 +118,13 @@ class Payinv extends Base{
         return success("获取成功",$info);
     }
      /** 1待系统验证 2 买方公司审核 3带买方公司认证 4 认证成功 5验证失败 6买方审核驳回 7 认证失败 8 回票流程终止 9 验证超次数 10 回票已退
-      * 11 待关联订单 12 订单关联完毕待财务审核 13 订单关联完毕财务驳回
+      * 11 待关联订单 12 订单关联完毕待财务审核 13 订单关联完毕财务驳回 14 待确认发票明细
       **/
     public function status(){
         $params = $this->request->param(["hpNo"=>"","status"=>"","remark"=>"",'ItemRemark'=>[]]);
         $valid= Validate::rule([
             'hpNo' => 'require|max:255',
-            "status"=>"require|number|in:1,2,3,4,6,7,8,13",
+            "status"=>"require|number|in:1,2,3,4,6,7,8,11,13",
             "remark"=>"max:255",
             'ItemRemark'=>'array'
         ]);
@@ -136,6 +136,10 @@ class Payinv extends Base{
         if ($invoice->isEmpty())return error("该发票池数据不存在");
         if($invoice->status!=3) return error("该发票池数据状态不正确");
         if($params['status']==3) $info->check_time= date('Y-m-d H:i:s');
+        if($params['status']==11 && $info->status==14){
+            $itemLow = InvoiceItem::where(['invoiceCode'=>$params['hpNo']])->where([["amount","<",0]])->findOrEmpty();
+            if (!$itemLow->isEmpty()) return error("存在负数明细,请先确认明细");
+        }
         $info->status=$params['status'];
         $info->remark=$params['remark'];
         $this->model->startTrans();

+ 2 - 2
app/cxinv/model/PayInvoice.php

@@ -20,8 +20,8 @@ class PayInvoice extends Base
         'inv_subtotal_amount'  =>'decimal',//票面税前金额
         'inv_amount'  =>'decimal',//票面合计金额
         'invStatus'  =>'tinyint',//[0=>"待验证","1"=>'正常',"2"=>'已作废',"3"=>'已红冲']
-        'status'  =>'tinyint',// 1待系统验证 2 买方公司审核 3带买方公司认证 4 认证成功 5验证失败 6买方审核驳回 7 认证失败 8 回票流程终止 9 验证超次数 10 回票已退11 待关联订单 12 订单关联完毕待财务审核 13 订单关联完毕财务驳回
-         'remark'  =>'varchar',//
+        'status'  =>'tinyint',// 1待系统验证 2 买方公司审核 3带买方公司认证 4 认证成功 5验证失败 6买方审核驳回 7 认证失败 8 回票流程终止 9 验证超次数 10 回票已退11 待关联订单 12 订单关联完毕待财务审核 13 订单关联完毕财务驳回  14 待确认订单
+        'remark'  =>'varchar',//
         'exam_remark'  =>'varchar',//审核备注
         'check_remark'  =>'varchar',//发票验证备注
         'tag_id'  =>'int',//标签id