Browse Source

进项发票等级导出接口优化

wufeng 2 years ago
parent
commit
024c9a9f26
1 changed files with 56 additions and 14 deletions
  1. 56 14
      app/admin/controller/Export.php

+ 56 - 14
app/admin/controller/Export.php

@@ -77,27 +77,69 @@ class Export extends BaseController
         if ($param['apply_id'] != '') $where[] = ['a.apply_id', '=', $param['apply_id']];
         if ($param['apply_name'] != '') $where[] = ['a.apply_name', 'like', '%' . $param['apply_name'] . '%'];
 
-        $status = [0 => '上传发票', 1 => '待识别验证', 2 => '待校验识别', 3 => '待财务审核', 4 => '待认证', 5 => '认证成功待确认完成', 6 => '回票完成7识别失败', 8 => '验证失败', 9 => '财务驳回', 10 => '认证失败', 11 => '校验超过次数第二天校验', 12 => '回票申请废弃已结束',];//认证状态
+        $status = [1 => '待系统验证', 2 => '买方公司审核', 3 => '待买方公司认证', 4 => '认证成功', 5 => '验证失败', 6 => '买方审核驳回', 7 => '认证失败', 8 => '回票流程终止', 9 => '验证超次数', 10 => '回票已退'];//认证状态
+
         $invoiceType = ['special' => '增值税专用发票', 'normal' => '增值税普通发票', 'electronic' => '增值税电子普通发票', 'special_electronic' => '增值税电子专用发票', 'toll' => '增值税电子普通发票(通行费)', 'roll' => '增值税普通发票(卷票)', 'fully_digitalized_special_electronic' => '全电专用发票', 'fully_digitalized_normal_electronic' => '全电专用发票'];//发票类型
 
         $list = Db::name('pay_invoice')
             ->alias('a')
             ->leftJoin('pay b', 'a.payNo=b.payNo')
-            ->leftJoin('invoice_info c', 'c.hpNo=a.hpNo AND c.status=1')
-            ->field('"" 序号,a.hpNo 回票申请编号,DATE_FORMAT(a.addtime,"%Y") 年,DATE_FORMAT(a.addtime,"%m") 月,a.invoiceNumber 发票号,a.open_time 开票日期,a.inv_fee 金额,c.subtotal_tax 税额,"" 税率,b.total_fee 总额,b.supplierName 供应商,"采购回票" 业务类型,a.invoiceType 发票类型,a.status 认证状态,a.updatetime 认证时间,a.remark 备注')
+            ->leftJoin('invoice_info c', 'c.hpNo=a.hpNo')
+            ->field('"" 序号,a.hpNo,a.addtime,a.invoiceNumber,a.open_time,b.total_fee,b.supplierName,a.invoiceType,a.status,a.updatetime,a.remark,c.item_list')
             ->where($where)
-            ->withAttr('发票类型', function ($val) use ($invoiceType) {
-                return $invoiceType[$val] ?? '';
-            })->withAttr('认证状态', function ($val) use ($status) {
-                return $status[$val] ?? '';
-            })
             ->order('a.addtime desc')
-            ->select()
-            ->toArray();
-
-        if (empty($list)) $list[] = ['导出数据为空' => ''];
-
-        excelExport('进项发票等级导出', array_keys($list[0]), $list);
+            ->cursor();
+
+        $data = [];
+        $i = 0;
+        foreach ($list as $item) {
+            if ($item['item_list']) {
+                $item_list = json_decode($item['item_list'], true);
+                foreach ($item_list as $val) {
+                    $data[] = [
+                        '序号' => $i++,
+                        '回票申请编号' => $item['hpNo'],
+                        '年' => date('Y', strtotime($item['addtime'])),
+                        '月' => date('m', strtotime($item['addtime'])),
+                        '发票号' => $item['invoiceNumber'],
+                        '开票日期' => $item['open_time'],
+                        '金额' => $val['amount'],
+                        '税额' => $val['tax'],
+                        '税率' => $val['tax_rate'],
+                        '总额' => $item['total_fee'],
+                        '供应商' => $item['supplierName'],
+                        '业务类型' => '采购回票',
+                        '发票类型' => $invoiceType[$item['invoiceType']] ?? '',
+                        '认证状态' => $status[$item['status']] ?? '',
+                        '认证时间' => $item['updatetime'],
+                        '备注' => $item['remark'],
+                    ];
+                }
+            } else {
+                $data[] = [
+                    '序号' => $i++,
+                    '回票申请编号' => $item['hpNo'],
+                    '年' => date('Y', strtotime($item['addtime'])),
+                    '月' => date('m', strtotime($item['addtime'])),
+                    '发票号' => $item['invoiceNumber'],
+                    '开票日期' => $item['open_time'],
+                    '金额' => '',
+                    '税额' => '',
+                    '税率' => '',
+                    '总额' => $item['total_fee'],
+                    '供应商' => $item['supplierName'],
+                    '业务类型' => '采购回票',
+                    '发票类型' => $invoiceType[$item['invoiceType']] ?? '',
+                    '认证状态' => $status[$item['status']] ?? '',
+                    '认证时间' => $item['updatetime'],
+                    '备注' => $item['remark'],
+                ];
+            }
+        }
+
+        if (empty($data)) $data[] = ['导出数据为空' => ''];
+
+        excelExport('进项发票等级导出', array_keys($data[0]), $data);
     }
 
     //资金认领导出