|
@@ -1688,48 +1688,90 @@ class Payment extends BaseController
|
|
|
* @return \think\response\Json|void
|
|
|
*/
|
|
|
|
|
|
- public function hpBatchImport(){
|
|
|
- $post=$this->request->only(["hpNo"=>[],"relaComNo"=>"","companyNo"=>""],"post");
|
|
|
- $valid =Validate::rule([
|
|
|
- "hpNo|回票申请编号集合"=>"require|array",
|
|
|
- "relaComNo|关联公司"=>"max:255",
|
|
|
- "companyNo|公司编号"=>"max:255",
|
|
|
- ]);
|
|
|
- if($valid->check($post)==false)return error_show(1004,$valid->getError());
|
|
|
- if(empty($post['hpNo'])) return error_show(1004,'回票申请编号集合不能为空');
|
|
|
- $companyNo = $post["relaComNo"]??$post['companyNo'];
|
|
|
- if($companyNo =="") return error_show(1004,'业务公司编号不能为空');
|
|
|
- $payArr=Db::name("pay_invoice")->alias("a")
|
|
|
- ->leftJoin("pay b","a.payNo=b.payNo and b.is_del=0 and b.status=2")->where(["b.hpNo"=>$post['hpNo'],
|
|
|
- "b.is_del"=>0])->column("a.id,a.payNo,a.hpNo,a.invoiceType,a.inv_fee as invoice_fee,a.status,b.inv_status,b.inv_fee,b.companyNo,b.ainv_fee,b.winv_fee");
|
|
|
- if(empty($payArr))return error_show(1004,'回票申请数据未找到');
|
|
|
- Db::startTrans();
|
|
|
- try{
|
|
|
- $invIdArr=[];
|
|
|
- foreach ($payArr as $value){
|
|
|
- if($value['companyNo']=='') throw new Exception("{$value['hpNo']}对账信息有误");
|
|
|
- if($value['companyNo']!=$companyNo) throw new Exception("{$value['hpNo']}不属于当前业务公司发票");
|
|
|
- if($value['status']!='3') throw new Exception("{$value['hpNo']}状态有误");
|
|
|
- if($value['invoice_fee']>$value['inv_fee']) throw new Exception("{$value['hpNo']}对账单开票中金额不足");
|
|
|
- $payupdate =[
|
|
|
- "ainv_fee"=>$value['ainv_fee']+$value['invoice_fee'],
|
|
|
- "inv_fee"=>$value['inv_fee']-$value['invoice_fee'],
|
|
|
- "inv_status" => ($value['inv_fee']-$value['invoice_fee'])==0 && $value['winv_fee']==0?3:2,
|
|
|
- "updatetime" => date("Y-m-d H:i:s")
|
|
|
- ];
|
|
|
- $where= ['payNo'=>$value['payNo'],"inv_status"=>$value['inv_status'],"companyNo"=>$companyNo,"status"=>2,"is_del"=>0];
|
|
|
- $pay =Db::name("pay")->where($where)->update($payupdate);
|
|
|
- if($pay==false) throw new Exception("{$value['hpNo']}回票申请对账单状态更新失败");
|
|
|
- $invIdArr[]=$value['id'];
|
|
|
- }
|
|
|
- $update = Db::name("pay_invoice")->where(["id"=>$invIdArr,"status"=>3,"is_del"=>0])->update(["status"=>4,"updatetime"=>date("Y-m-d H:i:s")]);
|
|
|
- if($update==false) throw new Exception("回票申请状态更新更新失败");
|
|
|
- Db::commit();
|
|
|
- return app_show(0,"回票申请认证成功");
|
|
|
- }catch (\Exception $e){
|
|
|
- Db::rollback();
|
|
|
- return error_show(1004,$e->getMessage());
|
|
|
- }
|
|
|
+ //回票申请批量认证
|
|
|
+ public function hpBatchImport()
|
|
|
+ {
|
|
|
+ $post = $this->request->only(["list" => [], "relaComNo" => "", "companyNo" => ""], "post");
|
|
|
+ $valid = Validate::rule([
|
|
|
+ "list|回票申请编号集合" => "require|array|max:100",
|
|
|
+ "relaComNo|关联公司" => "requireWithout:companyNo|max:255",
|
|
|
+ "companyNo|公司编号" => "requireWithout:relaComNo|max:255",
|
|
|
+ ]);
|
|
|
+ if ($valid->check($post) == false) return error_show(1004, $valid->getError());
|
|
|
+// if(empty($post['hpNo'])) return error_show(1004,'回票申请编号集合不能为空');
|
|
|
+ $companyNo = $post["relaComNo"] ?? $post['companyNo'];
|
|
|
+// if($companyNo =="") return error_show(1004,'业务公司编号不能为空');
|
|
|
+ $payArr = Db::name("pay_invoice")
|
|
|
+ ->alias("a")
|
|
|
+ ->leftJoin("pay b", "a.payNo=b.payNo and b.is_del=0 and b.status=2")
|
|
|
+ ->where(['b.is_del' => 0])
|
|
|
+ ->whereIn('b.hpNo', array_column($post['list'], 'hpNo'))
|
|
|
+ ->column("a.id,a.payNo,a.hpNo,a.invoiceType,a.inv_fee as invoice_fee,a.status,b.inv_status,b.inv_fee,b.companyNo,b.ainv_fee,b.winv_fee,b.hpNo");
|
|
|
+
|
|
|
+ $val_hpNo = Validate::rule([
|
|
|
+ 'hpNo|回票申请编号' => 'require',
|
|
|
+ 'status|审核状态' => 'require|number|in:4,7',
|
|
|
+ 'remark|审核备注' => 'requireIf:status:7|max:255'
|
|
|
+ ]);
|
|
|
+
|
|
|
+ foreach ($post['list'] as $item) {
|
|
|
+ if (!$val_hpNo->check($item)) throw new \Exception($val_hpNo->getError());
|
|
|
+ }
|
|
|
+// if (empty($payArr)) return error_show(1004, '回票申请数据未找到');
|
|
|
+ Db::startTrans();
|
|
|
+ try {
|
|
|
+ $pay_invoice_allow = [];
|
|
|
+
|
|
|
+ $hpNo_item = array_column($post['list'], null, 'hpNo');
|
|
|
+
|
|
|
+ $date = date('Y-m-d H:i:s');
|
|
|
+
|
|
|
+ foreach ($payArr as $value) {
|
|
|
+ if ($value['companyNo'] == '') throw new Exception("{$value['hpNo']}对账信息有误");
|
|
|
+ if ($value['companyNo'] != $companyNo) throw new Exception("{$value['hpNo']}不属于当前业务公司发票");
|
|
|
+ if ($value['status'] != '3') throw new Exception("{$value['hpNo']}状态有误");
|
|
|
+ if ($value['invoice_fee'] > $value['inv_fee']) throw new Exception("{$value['hpNo']}对账单开票中金额不足");
|
|
|
+
|
|
|
+ if ($hpNo_item[$value['hpNo']]['status'] == 4) {
|
|
|
+ //审核通过
|
|
|
+ $payupdate = [
|
|
|
+ "ainv_fee" => $value['ainv_fee'] + $value['invoice_fee'],
|
|
|
+ "inv_fee" => $value['inv_fee'] - $value['invoice_fee'],
|
|
|
+ "inv_status" => ($value['inv_fee'] - $value['invoice_fee']) == 0 && $value['winv_fee'] == 0 ? 3 : 2,
|
|
|
+ "updatetime" => date("Y-m-d H:i:s")
|
|
|
+ ];
|
|
|
+
|
|
|
+ $pay_invoice_allow[] = $value['id'];
|
|
|
+
|
|
|
+ } else {
|
|
|
+ //审核不通过
|
|
|
+ $payupdate = [
|
|
|
+ "winv_fee" => $value['winv_fee'] + $value['invoice_fee'],
|
|
|
+ "inv_fee" => $value['inv_fee'] - $value['invoice_fee'],
|
|
|
+ "inv_status" => ($value['inv_fee'] - $value['invoice_fee']) == 0 && $value['ainv_fee'] == 0 ? 1 : 2,
|
|
|
+ "updatetime" => $date
|
|
|
+ ];
|
|
|
+// $pay_invoice_not_allow[]=$value['id'];
|
|
|
+ Db::name("pay_invoice")
|
|
|
+ ->where(["id" => $value['id'], "status" => 3, "is_del" => 0])
|
|
|
+ ->update(["status" => $hpNo_item[$value['hpNo']]['status'], "updatetime" => $date, 'remark' => $hpNo_item[$value['hpNo']]['remark']]);
|
|
|
+ }
|
|
|
+ $where = ['payNo' => $value['payNo'], "inv_status" => $value['inv_status'], "companyNo" => $companyNo, "status" => 2, "is_del" => 0];
|
|
|
+ $pay = Db::name("pay")->where($where)->update($payupdate);
|
|
|
+ if ($pay == false) throw new Exception("{$value['hpNo']}回票申请对账单状态更新失败");
|
|
|
+// $invIdArr[] = $value['id'];
|
|
|
+ }
|
|
|
+// }
|
|
|
|
|
|
- }
|
|
|
+ if ($pay_invoice_allow) Db::name("pay_invoice")->where(["id" => $pay_invoice_allow, "status" => 3, "is_del" => 0])->update(["status" => 4, "updatetime" => $date]);
|
|
|
+
|
|
|
+// if ($update == false) throw new Exception("回票申请状态更新失败");
|
|
|
+ Db::commit();
|
|
|
+ return app_show(0, "回票申请认证成功");
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, $e->getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|