|
@@ -5,7 +5,7 @@ namespace app\admin\controller;
|
|
|
use app\admin\BaseController;
|
|
|
use app\admin\model\ReportCode;
|
|
|
use think\App;
|
|
|
-use think\facade\Db;
|
|
|
+use think\facade\Config;use think\facade\Db;
|
|
|
use think\facade\Cache;
|
|
|
|
|
|
class OrderInv extends BaseController{
|
|
@@ -478,6 +478,80 @@ class OrderInv extends BaseController{
|
|
|
public function Discard(){
|
|
|
$invNo = isset($this->post['invNo'])&&$this->post['invNo']!=''?trim($this->post['invNo']):"";
|
|
|
if($invNo=='') return error_show(1004,"参数invNo不能为空");
|
|
|
+ $invinfo =Db::name("invoice_pool")->where(["invNo"=>$invNo,"is_del"=>0])->find();
|
|
|
+ if($invinfo==false) return error_show(1004,"未找到对应发票申请数据");
|
|
|
+ if(!in_array($invinfo['status'],[1,2,3,5]))return error_show(1004,"发票状态无法废弃");
|
|
|
+ $company =Db::name("company_info")->where(["companyNo"=>$invinfo['inv_out']])->find();
|
|
|
+ if($company==false)return error_show(1004,"开票业务公司未找到");
|
|
|
+ $invoice =Db::name("invoice_ticket")->where(["invNo"=>$invNo])->find();
|
|
|
+ if($invoice==false)return error_show(1004,"发票详细信息未找到");
|
|
|
+ Db::startTrans();
|
|
|
+ try{
|
|
|
+ $invoice=Config::get("invoice");
|
|
|
+ $tax =new \TaxInvoice($invoice['appKey'],$invoice['appSecret'],$company['company_license']);
|
|
|
+ $result=$tax->DeprecateInvoices($company['company_license'],invoiceType($invinfo['inv_type']),$invoice['inv_code'],$invoice['inv_number'],1);
|
|
|
+ if(isset($result['ZTDM']) && $result['ZTDM']=='050000'){
|
|
|
+ $up =Db::name("invoice_pool")->where($invinfo)->update(["status"=>6,"updatetime"=>date("Y-m-d H:i:s")]);
|
|
|
+ if($up){
|
|
|
+ if($invinfo['status']!=5){
|
|
|
+ $qrdArr=Db::name("assoc")->where(["viceCode"=>$invNo,"is_del"=>0,"status"=>[1,2]])->column("id,orderCode,cancel_fee");
|
|
|
+ if(!empty($qrdArr)){
|
|
|
+ foreach ($qrdArr as $value){
|
|
|
+ $qrdinfo =Db::name("qrd_info")->where(["sequenceNo"=>$value['orderCode']])->find();
|
|
|
+ if($qrdinfo==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1003,"确认单信息未找到");
|
|
|
+ }
|
|
|
+ if ($invinfo['status']==3){
|
|
|
+ if($qrdinfo['ainv_fee']<$value['cancel_fee']){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1003,"确认单信息开票金额不足");
|
|
|
+ }
|
|
|
+ $update =[
|
|
|
+ "ainv_fee"=>$qrdinfo['ainv_fee']-$value['cancel_fee'],
|
|
|
+ "winv_fee"=>$qrdinfo['winv_fee']+$value['cancel_fee'],
|
|
|
+ "inv_status"=>$qrdinfo['ainv_fee']==0 &&$qrdinfo['inv_fee'] ==0 ? 1: 2,
|
|
|
+ "updatetime"=>date("Y-m-d H:i:s"),
|
|
|
+ ];
|
|
|
+ }else{
|
|
|
+ if($qrdinfo['inv_fee']<$value['cancel_fee']){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1003,"确认单信息开票金额不足");
|
|
|
+ }
|
|
|
+ $update =[
|
|
|
+ "winv_fee"=>$qrdinfo['winv_fee']+$value['cancel_fee'],
|
|
|
+ "inv_fee"=>$qrdinfo['inv_fee']-$value['cancel_fee'],
|
|
|
+ "inv_status"=>$qrdinfo['ainv_fee']==0 &&($qrdinfo['inv_fee']-$value['cancel_fee']) ==0 ?1 : 2,
|
|
|
+ "updatetime"=>date("Y-m-d H:i:s"),
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $qrdup = Db::name("qrd_info")->where($qrdinfo)->update($update);
|
|
|
+ if($qrdup==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1003,"确认单信息更新失败");
|
|
|
+ }
|
|
|
+ $assoc=["status"=>3,"assoc_time"=>date("Y-m-d H:i:s"),"updatetime"=>date("Y-m-d H:i:s")];
|
|
|
+ $assocup =Db::name("assoc")->where($value)->update($assoc);
|
|
|
+ if($assocup==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1003,"确认单关联信息更新失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Db::commit();
|
|
|
+ return app_show(0,"发票废弃成功");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004,"发票废弃失败");
|
|
|
+ }catch (\Exception $e){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004,$e->getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
/**@param invNo return_reason remark 退票申请
|
|
@@ -569,7 +643,7 @@ class OrderInv extends BaseController{
|
|
|
$up =Db::name("invoice_return")->where($return)->update($update);
|
|
|
if($up){
|
|
|
if($status==2){
|
|
|
- $qrdArr=Db::name("assoc")->where(["viceCode"=>$return['invNo'],"is_del"=>0])->column("id,orderCode,cancel_fee");
|
|
|
+ $qrdArr=Db::name("assoc")->where(["viceCode"=>$return['invNo'],"is_del"=>0,"status"=>[1,2]])->column("id,orderCode,cancel_fee");
|
|
|
if(!empty($qrdArr)){
|
|
|
foreach ($qrdArr as $value){
|
|
|
$qrdinfo =Db::name("qrd_info")->where(["sequenceNo"=>$value['orderCode']])->find();
|
|
@@ -626,14 +700,18 @@ class OrderInv extends BaseController{
|
|
|
if($returnCode==""){
|
|
|
return error_show(1005,"参数 returnCode 不能为空");
|
|
|
}
|
|
|
+ $return= Db::name("invoice_return")->where(["returnCode"=>$returnCode])->find();
|
|
|
+ if($return==false){
|
|
|
+ return error_show(1005,"退票申请信息未找到");
|
|
|
+ }
|
|
|
$redinv =isset($this->post['redinv'])&&$this->post['redinv']!="" ? trim($this->post['redinv']):"";
|
|
|
if($redinv==""){
|
|
|
return error_show(1005,"参数 redinv 不能为空");
|
|
|
}
|
|
|
- $return= Db::name("invoice_return")->where(["returnCode"=>$returnCode])->find();
|
|
|
- if($return==false){
|
|
|
- return error_show(1005,"退票申请信息未找到");
|
|
|
- }
|
|
|
+ $red =Db::name("invoice_red")->where(["invRed"=>$redinv,"is_del"=>0])->findOrEmpty();
|
|
|
+ if(empty($red)) return error_show(1005,"红冲发票信息未找到");
|
|
|
+ if($red['status']!=4) return error_show(1005,"红冲发票开票未完成");
|
|
|
+
|
|
|
$invinfo = Db::name("invoice_pool")->where(["invNo"=>$return['invNo'],"is_del"=>0])->find();
|
|
|
if($invinfo==false){
|
|
|
return error_show(1005,"发票申请信息未找到");
|
|
@@ -882,4 +960,382 @@ class OrderInv extends BaseController{
|
|
|
}
|
|
|
return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
|
|
|
}
|
|
|
+ //红冲申请
|
|
|
+ public function applyRed(){
|
|
|
+ $invNo = isset($this->post['invNo'])&&$this->post['invNo']!=''?trim($this->post['invNo']):"";
|
|
|
+ if($invNo=='')return error_show(1004,"参数 invNo 不能为空");
|
|
|
+ $invfo =Db::name("invoice_pool")->where(["invNo"=>$invNo,"is_del"=>0])->find();
|
|
|
+ if($invfo==false) return error_show(1004,"发票数据未找到");
|
|
|
+ if(!in_array($invfo['status'],[1,2,3,4,5]))return error_show(1004,"发票数据状态无法申请");
|
|
|
+ $ticket =Db::name("invoice_ticket")->where(["invNo"=>$invNo])->findOrEmpty();
|
|
|
+ if(empty($ticket)) return error_show(1004,"未找到开票信息");
|
|
|
+ $company =Db::name("company_info")->where(["companyNo"=>$invfo['inv_out']])->findOrEmpty();
|
|
|
+ if(empty($company)) return error_show(1004,"业务企业信息未找到");
|
|
|
+ $invoice=Config::get("invoice");
|
|
|
+ $Tax =new \TaxInvoice($invoice['appKey'],$invoice['appSecret'],$company['company_license']);
|
|
|
+
|
|
|
+ $redticketList=[];
|
|
|
+ $redticketArry=[
|
|
|
+ "SQBSCQQPCH"=>randomkeys(26).date("YmdHis"),
|
|
|
+ "NSRSBH"=>$company['company_license'],
|
|
|
+ "FPLXDM"=>invoiceType($invfo['inv_type']),
|
|
|
+ ];
|
|
|
+ $goodinfo =Db::name("invoice_good")
|
|
|
+ ->where(["invNo"=>$invNo,"is_del"=>0])
|
|
|
+ ->field("0 as FPHXZ,
|
|
|
+ catNo as SPBM,
|
|
|
+ goodNo as ZXBM,
|
|
|
+ is_discount as YHZCBS,
|
|
|
+ inv_tag as LSLBS,
|
|
|
+ addTax as ZZSTSGL,
|
|
|
+ goodName as XMMC,
|
|
|
+ unitName as DW,
|
|
|
+ goodNum as SPSL,
|
|
|
+ goodPrice as DJ,
|
|
|
+ totalPrice as JE,
|
|
|
+ 1 HSBZ,
|
|
|
+ tax as SL,
|
|
|
+ taxPrice as SE")
|
|
|
+ ->select()->toArray();
|
|
|
+ if(empty($goodinfo)){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004,"开票商品信息未找到");
|
|
|
+ }
|
|
|
+ $info=[
|
|
|
+ "SQBSCQQLSH"=>randomkeys(29).date("YmdHis"),
|
|
|
+ "YYSBZ"=> "0000000000", //营业税标志
|
|
|
+ "XXBLX"=> "0",//信息表类型 0 正常;1 逾期(仅销方开具)
|
|
|
+ "YFPDM"=>$ticket['inv_code'], //红字专票购方已抵扣可不填
|
|
|
+ "YFPHM"=> $ticket['inv_number'],//红字专票购方已抵扣可不填
|
|
|
+ "YFPKPRQ"=>$ticket['open_date'], //红字专票购方已抵扣可不填
|
|
|
+ "TKSJ"=>date("YmdHis"), //填开时间
|
|
|
+ "XHFSBH"=>$ticket['seller_id'],
|
|
|
+ "XHFMC"=>$ticket['seller_title'],
|
|
|
+ "GMFSBH"=>$ticket['buyer_id'],
|
|
|
+ "GMFMC"=> $ticket['buyer_title'],
|
|
|
+ "HJJE"=> "-".$ticket['inv_total'],//合计金额(不含 税)
|
|
|
+ "HJSE"=>"-".$ticket['tax_fee'],//合计税额
|
|
|
+ "SQSM"=>"", //申请说明
|
|
|
+ "XXBTSBS"=>"0",//0: 正常;1:成品油发票,涉及销售数量 变更(销货退回、开票有误等原因);2: 成品油发票,仅涉及销售金额变更(销 售折让);3:机动车发票,仅涉及销售数
|
|
|
+//量变更(销货退回、开票有误等原因);4: 机动车发票,仅涉及销售金额变更(销 售折让)
|
|
|
+ ];
|
|
|
+ $invRed=makeNo("IRE");
|
|
|
+ $data=[
|
|
|
+ 'invNo'=>$invNo,
|
|
|
+ "invRed"=>$invRed,
|
|
|
+ "apply_id"=>$this->uid,
|
|
|
+ "apply_name"=>$this->uname,
|
|
|
+ "status"=>0,
|
|
|
+ "remark"=>'',
|
|
|
+ "addtime"=>date("Y-m-d H:i:s"),
|
|
|
+ "updatetime"=>date("Y-m-d H:i:s"),
|
|
|
+ "SQBSCQQLSH"=>$info['SQBSCQQLSH'],
|
|
|
+ "YYSBZ"=> "0000000000", //营业税标志
|
|
|
+ "XXBLX"=> "0",//信息表类型 0 正常;1 逾期(仅销方开具)
|
|
|
+ "YFPDM"=>$ticket['inv_code'], //红字专票购方已抵扣可不填
|
|
|
+ "YFPHM"=> $ticket['inv_number'],//红字专票购方已抵扣可不填
|
|
|
+ "YFPKPRQ"=>$ticket['open_date'], //红字专票购方已抵扣可不填
|
|
|
+ "TKSJ"=>date("YmdHis"), //填开时间
|
|
|
+ "XHFSBH"=>$ticket['seller_id'],
|
|
|
+ "XHFMC"=>$ticket['seller_title'],
|
|
|
+ "GMFSBH"=>$ticket['buyer_id'],
|
|
|
+ "GMFMC"=> $ticket['buyer_title'],
|
|
|
+ "HJJE"=> "-".$ticket['inv_total'],//合计金额(不含 税)
|
|
|
+ "HJSE"=>"-".$ticket['tax_fee'],//合计税额
|
|
|
+ "SQSM"=>"", //申请说明
|
|
|
+ "XXBTSBS"=>"0",
|
|
|
+ "DDMXX"=>json_encode($goodinfo,JSON_UNESCAPED_UNICODE),
|
|
|
+ "SQBSCQQPCH"=>$redticketArry['SQBSCQQPCH'],
|
|
|
+ "FPLXDM"=>invoiceType($invfo['inv_type']),
|
|
|
+ ];
|
|
|
+ $redticketList[]=["HZSQDTXX"=>$info,"DDMXXX"=>$goodinfo];
|
|
|
+ $result=$Tax->AllocateRedInvoiceApplication($redticketArry,$redticketList);
|
|
|
+ $data['status']=5;
|
|
|
+ $data['remark']='红冲申请提交失败';
|
|
|
+ if(isset($result['ZTDM']) && $result['ZTDM']=='060000'){
|
|
|
+ $resultChild=$result['HZSQDSCJG'][0];
|
|
|
+ if($resultChild['ZTDM']=='060000'){
|
|
|
+ $data['status']=2;
|
|
|
+ $data['remark']='红冲申请审核通过';
|
|
|
+ }
|
|
|
+ if($resultChild['ZTDM']=='060001'){
|
|
|
+ $data['status']=1;
|
|
|
+ $data['remark']='红冲申请审核中';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $up =Db::name("invoice_red")->insert($data);
|
|
|
+ return $up ? app_show(0,"红冲发票申请新建成功",["invRed"=>$invRed]):error_show(1004,"红冲发票申请新建失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ //批量申请红冲发票
|
|
|
+ public function batchApplyRed(){
|
|
|
+ $invArr = isset($this->post['invArr'])&&!empty($this->post['invArr'])?$this->post['invArr']:[];
|
|
|
+ if(empty($invArr))return error_show(1004,"参数 invArr 不能为空");
|
|
|
+ $invfo =Db::name("invoice_pool")->where(["invNo"=>$invArr,"is_del"=>0])->select()->toArray();
|
|
|
+ if(empty($invfo)) return error_show(1004,"发票数据未找到");
|
|
|
+ $insertAll=[];
|
|
|
+ $companyCode = array_unique(array_column($invfo,"inv_out"));
|
|
|
+ $inv_type = array_unique(array_column($invfo,"inv_type"));
|
|
|
+ if(count($companyCode)>1){
|
|
|
+ return error_show(1004,"业务企业公司不统一");
|
|
|
+ }
|
|
|
+ if(count($inv_type)>1){
|
|
|
+ return error_show(1004,"发票类型不统一");
|
|
|
+ }
|
|
|
+ $company =Db::name("company_info")->where(["companyNo"=>$companyCode])->findOrEmpty();
|
|
|
+ if(empty($company)) {
|
|
|
+ return error_show(1004,"业务企业信息未找到");
|
|
|
+ }
|
|
|
+ $ticketArr=Db::name("invoice_ticket")->where(["invNo"=>$invArr,"is_del"=>0])->column("*","invNo");
|
|
|
+ if(empty($ticketArr)){
|
|
|
+ return error_show(1004,"未找到开票信息");
|
|
|
+ }
|
|
|
+ $invoice=Config::get("invoice");
|
|
|
+ $Tax =new \TaxInvoice($invoice['appKey'],$invoice['appSecret'],$company['company_license']);
|
|
|
+ Db::startTrans();
|
|
|
+ try{
|
|
|
+ $redticketArry=[
|
|
|
+ "SQBSCQQPCH"=>randomkeys(26).date("YmdHis"),
|
|
|
+ "NSRSBH"=>$company['company_license'],
|
|
|
+ "FPLXDM"=>invoiceType($inv_type[0]),
|
|
|
+ ];
|
|
|
+ $redticketList=[];
|
|
|
+ foreach ($invfo as $value){
|
|
|
+ if(!in_array($invfo['status'],[1,2,3,4,5])){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004,"发票数据状态无法申请");
|
|
|
+ }
|
|
|
+ $ticket =$ticketArr[$value['invNo']] ??[];
|
|
|
+ if(empty($ticket)){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004,"未找到开票信息");
|
|
|
+ }
|
|
|
+ $goodinfo =Db::name("invoice_good")
|
|
|
+ ->where(["invNo"=>$value['invNo'],"is_del"=>0])
|
|
|
+ ->field("0 as FPHXZ,
|
|
|
+ catNo as SPBM,
|
|
|
+ goodNo as ZXBM,
|
|
|
+ is_discount as YHZCBS,
|
|
|
+ inv_tag as LSLBS,
|
|
|
+ addTax as ZZSTSGL,
|
|
|
+ goodName as XMMC,
|
|
|
+ unitName as DW,
|
|
|
+ goodNum as SPSL,
|
|
|
+ goodPrice as DJ,
|
|
|
+ totalPrice as JE,
|
|
|
+ 1 HSBZ,
|
|
|
+ tax as SL,
|
|
|
+ taxPrice as SE")
|
|
|
+ ->select()->toArray();
|
|
|
+ if(empty($goodinfo)){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004,"开票商品信息未找到");
|
|
|
+ }
|
|
|
+
|
|
|
+ $info=[
|
|
|
+ "SQBSCQQLSH"=>randomkeys(29).date("YmdHis"),
|
|
|
+ "YYSBZ"=> "0000000000", //营业税标志
|
|
|
+ "XXBLX"=> "0",//信息表类型 0 正常;1 逾期(仅销方开具)
|
|
|
+ "YFPDM"=>$ticket['inv_code'], //红字专票购方已抵扣可不填
|
|
|
+ "YFPHM"=> $ticket['inv_number'],//红字专票购方已抵扣可不填
|
|
|
+ "YFPKPRQ"=>$ticket['open_date'], //红字专票购方已抵扣可不填
|
|
|
+ "TKSJ"=>date("YmdHis"), //填开时间
|
|
|
+ "XHFSBH"=>$ticket['seller_id'],
|
|
|
+ "XHFMC"=>$ticket['seller_title'],
|
|
|
+ "GMFSBH"=>$ticket['buyer_id'],
|
|
|
+ "GMFMC"=> $ticket['buyer_title'],
|
|
|
+ "HJJE"=> "-".$ticket['inv_total'],//合计金额(不含 税)
|
|
|
+ "HJSE"=>"-".$ticket['tax_fee'],//合计税额
|
|
|
+ "SQSM"=>"", //申请说明
|
|
|
+ "XXBTSBS"=>"0",//0: 正常;1:成品油发票,涉及销售数量 变更(销货退回、开票有误等原因);2: 成品油发票,仅涉及销售金额变更(销 售折让);3:机动车发票,仅涉及销售数
|
|
|
+//量变更(销货退回、开票有误等原因);4: 机动车发票,仅涉及销售金额变更(销 售折让)
|
|
|
+ ];
|
|
|
+ $data=[
|
|
|
+ 'invNo'=>$value['invNo'],
|
|
|
+ "invRed"=>makeNo("IRE"),
|
|
|
+ "apply_id"=>$this->uid,
|
|
|
+ "apply_name"=>$this->uname,
|
|
|
+ "status"=>5,
|
|
|
+ "remark"=>'红冲申请提交失败',
|
|
|
+ "addtime"=>date("Y-m-d H:i:s"),
|
|
|
+ "updatetime"=>date("Y-m-d H:i:s"),
|
|
|
+ "SQBSCQQLSH"=>$info['SQBSCQQLSH'],
|
|
|
+ "YYSBZ"=> "0000000000", //营业税标志
|
|
|
+ "XXBLX"=> "0",//信息表类型 0 正常;1 逾期(仅销方开具)
|
|
|
+ "YFPDM"=>$ticket['inv_code'], //红字专票购方已抵扣可不填
|
|
|
+ "YFPHM"=> $ticket['inv_number'],//红字专票购方已抵扣可不填
|
|
|
+ "YFPKPRQ"=>$ticket['open_date'], //红字专票购方已抵扣可不填
|
|
|
+ "TKSJ"=>date("YmdHis"), //填开时间
|
|
|
+ "XHFSBH"=>$ticket['seller_id'],
|
|
|
+ "XHFMC"=>$ticket['seller_title'],
|
|
|
+ "GMFSBH"=>$ticket['buyer_id'],
|
|
|
+ "GMFMC"=> $ticket['buyer_title'],
|
|
|
+ "HJJE"=> "-".$ticket['inv_total'],//合计金额(不含 税)
|
|
|
+ "HJSE"=>"-".$ticket['tax_fee'],//合计税额
|
|
|
+ "SQSM"=>"", //申请说明
|
|
|
+ "XXBTSBS"=>"0",
|
|
|
+ "DDMXX"=>json_encode($goodinfo,JSON_UNESCAPED_UNICODE),
|
|
|
+ "SQBSCQQPCH"=>$redticketArry['SQBSCQQPCH'],
|
|
|
+ "FPLXDM"=>invoiceType($value['inv_type']),
|
|
|
+ ];
|
|
|
+ $redticketList[]=["HZSQDTXX"=>$info,"DDMXXX"=>$goodinfo];
|
|
|
+ $insertAll[$info['SQBSCQQLSH']]=$data;
|
|
|
+ }
|
|
|
+ $result=$Tax->AllocateRedInvoiceApplication($redticketArry,$redticketList);
|
|
|
+ if(isset($result['ZTDM']) && $result['ZTDM']=='060000'){
|
|
|
+ if(isset($result['HZSQDSCJG']) && count($result['HZSQDSCJG'])>0){
|
|
|
+ foreach ($result['HZSQDSCJG'] as $value){
|
|
|
+ if($value['ZTDM']=='060000'){
|
|
|
+ $insertAll[$value['SQBSCQQLSH']]['status']=2;
|
|
|
+ $insertAll[$value['SQBSCQQLSH']]['remark']="红冲申请审核通过";
|
|
|
+// $data['status']=2;
|
|
|
+// $data['remark']='红冲申请审核通过';
|
|
|
+ }
|
|
|
+ if($value['ZTDM']=='060001'){
|
|
|
+ $insertAll[$value['SQBSCQQLSH']]['status']=1;
|
|
|
+ $insertAll[$value['SQBSCQQLSH']]['remark']="红冲申请审核中";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $uns= Db::name("invoice_red")->insertAll($insertAll);
|
|
|
+ if($uns==count($insertAll)){
|
|
|
+ Db::commit();
|
|
|
+ return app_show(0,"红冲发票申请新建成功");
|
|
|
+ }
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004,"红冲发票申请新建失败");
|
|
|
+ }catch (\Exception $e){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004,$e->getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ //红票申请开票
|
|
|
+ public function redOpen(){
|
|
|
+ $invRed= isset($this->post['invRed'])&&$this->post['invRed']!=''? $this->post['invRed']:"";
|
|
|
+ if($invRed==''){
|
|
|
+ return error_show(1004,"参数 invRed 不能为空");
|
|
|
+ }
|
|
|
+ $redinfo =Db::name("invoice_red")->where(["invRed"=>$invRed,"is_del"=>0])->findOrEmpty();
|
|
|
+ if(empty($redinfo)){
|
|
|
+ return error_show(1004,"红冲发票申请不存在");
|
|
|
+ }
|
|
|
+ $redreason = isset($this->post['redreason'])&&$this->post['redreason']!=''? $this->post['redreason']:"";
|
|
|
+ if($redreason==''){
|
|
|
+ return error_show(1004,"参数 redreason 不能为空");
|
|
|
+ }
|
|
|
+ if($redinfo['status']!=2){
|
|
|
+ return error_show(1004,"红冲发票申请审核未通过");
|
|
|
+ }
|
|
|
+ $invinfo = Db::name("invoice_pool")->where(["invNo"=>$redinfo['invNo'],"is_del"=>0])->findOrEmpty();
|
|
|
+ if(empty($invinfo)) return error_show(1004,"红冲发票原票信息未找到");
|
|
|
+ $invpoolinfo = Db::name("invoice_pool_info")->where(["invNo"=>$redinfo['invNo']])->findOrEmpty();
|
|
|
+ if(empty($invpoolinfo)) return error_show(1004,"红冲发票开票信息未找到");
|
|
|
+ Db::startTrans();
|
|
|
+ try{
|
|
|
+ $data=[
|
|
|
+ "invNo"=>$invRed,
|
|
|
+ "KPLX"=>"1",
|
|
|
+ "XHFSBH"=>$invpoolinfo['seller_code'],
|
|
|
+ "XHFMC"=>$invpoolinfo['seller_title'],
|
|
|
+ "XHFDZ"=>$invpoolinfo['seller_addr'],
|
|
|
+ "XHFDH"=>$invpoolinfo['seller_mobile'],
|
|
|
+ "XHFYH"=>$invpoolinfo['seller_bank'],
|
|
|
+ "XHFZH"=>$invpoolinfo['seller_bankNo'],
|
|
|
+ "GMFBM"=>"",
|
|
|
+ "GMFSBH"=>$invpoolinfo['buyer_code'],
|
|
|
+ "GMFMC"=>$invpoolinfo['buyer_title'],
|
|
|
+ "GMFDZ"=>$invpoolinfo['buyer_addr'],
|
|
|
+ "GMFDH"=>$invpoolinfo['buyer_mobile'],
|
|
|
+ "GMFYH"=>$invpoolinfo['buyer_bank'],
|
|
|
+ "GMFZH"=>$invpoolinfo['buyer_bankNo'],
|
|
|
+ "GMFLX"=>$invinfo['company_type'],
|
|
|
+ "GMFSJH"=>"",
|
|
|
+ "GMFDZYX"=>$invinfo['email'],
|
|
|
+ "KPR"=>$invpoolinfo['drawer'],
|
|
|
+ "SKR"=>$invpoolinfo['payee'],
|
|
|
+ "FHR"=>$invpoolinfo['reviewer'],
|
|
|
+ "QDBZ"=>"",
|
|
|
+ "YFPDM"=>$invRed['YFPDM'],
|
|
|
+ "YFPHM"=>$invRed['YFPDM'],
|
|
|
+ "YFPLX"=>$invRed['YFPDM'],
|
|
|
+ "YFPKPRQ"=>$invRed['YFPDM'],
|
|
|
+ "CHYY"=>$redreason,
|
|
|
+ "TSCHBZ"=>"",
|
|
|
+ "JSHJ"=>"-".$invinfo['inv_value'],
|
|
|
+ "HJJE"=>$redinfo['HJJE'],
|
|
|
+ "HJSE"=>$redinfo['HJSE'],
|
|
|
+ "BZ"=>"",
|
|
|
+ "DDMXXX"=>$redinfo['DDMXXX'],
|
|
|
+ "FPLXDM"=>$redinfo['FPLXDM'],
|
|
|
+ "DDQQPCH"=>"",
|
|
|
+ "DDQQLSH"=>randomkeys(26).date("YmdHis"),
|
|
|
+ "status"=>"0",
|
|
|
+ "result"=>"",
|
|
|
+ "addtime"=>date("Y-m-d H:i:s"),
|
|
|
+ "updatetime"=>date("Y-m-d H:i:s")
|
|
|
+ ];
|
|
|
+ $invoice=Db::name("invoice_interface")->insert($data);
|
|
|
+ if($invoice==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1003,"红冲开票信息生成失败");
|
|
|
+ }
|
|
|
+ $upred=Db::name("invoice_red")->where(["invRed"=>$invRed])->update(["status"=>3,"red_reason"=>$redreason,"updatetime"=>date("Y-m-d H:i:s")]);
|
|
|
+ if($upred==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1003,"红冲发票信息更新失败");
|
|
|
+ }
|
|
|
+ Db::commit();
|
|
|
+ return app_show(0,"红冲发票信息开票提交成功");
|
|
|
+ }catch (\Exception $e){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1003,$e->getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //红冲票申请列表
|
|
|
+ public function redList(){
|
|
|
+ $page=isset($this->post['page'])&&$this->post['page']!="" ? intval($this->post['page']) :1;
|
|
|
+ $size=isset($this->post['size'])&&$this->post['size']!="" ? intval($this->post['size']) :15;
|
|
|
+ $condition=[["is_del","=",0]];
|
|
|
+ $invRed=isset($this->post["invRed"])&&$this->post["invRed"]!=''?trim($this->post["invRed"]):"";
|
|
|
+ if($invRed!=''){
|
|
|
+ $condition[]=["invRed","like","%$invRed%"];
|
|
|
+ }
|
|
|
+ $apply_id=isset($this->post["apply_id"])&&$this->post["apply_id"]!=''?intval($this->post["apply_id"]):"";
|
|
|
+ if($apply_id!=''){
|
|
|
+ $condition[]=["apply_id","=",$apply_id];
|
|
|
+ }
|
|
|
+ $invNo=isset($this->post["invNo"])&&$this->post["invNo"]!=''?trim($this->post["invNo"]):"";
|
|
|
+ if($invNo!=''){
|
|
|
+ $condition[]=["invNo","like","%$invNo%"];
|
|
|
+ }
|
|
|
+ $apply_name=isset($this->post["apply_name"])&&$this->post["apply_name"]!=''?trim($this->post["apply_name"]):"";
|
|
|
+ if($apply_name!=''){
|
|
|
+ $condition[]=["apply_name","like","%$apply_name%"];
|
|
|
+ }
|
|
|
+ $start = isset($this->post["start"])&&$this->post["start"]!=''?trim($this->post["start"]):"";
|
|
|
+ $end = isset($this->post["end"])&&$this->post["end"]!=''?trim($this->post["end"]):"";
|
|
|
+ if($start!=''){
|
|
|
+ $condition[]=["addtime",">=",$start];
|
|
|
+ }
|
|
|
+ if($end!=''){
|
|
|
+ $condition[]=["addtime","<=",$end];
|
|
|
+ }
|
|
|
+ $total_low=isset($this->post["total_low"])&&$this->post["total_low"]!=''?floor($this->post["total_low"]):"";
|
|
|
+ $total_up=isset($this->post["total_up"])&&$this->post["total_up"]!=''?floor($this->post["total_up"]):"";
|
|
|
+ if($total_low!=''){
|
|
|
+ $condition[]=["ABS(HJJE)",">=",$total_low];
|
|
|
+ }
|
|
|
+ if($total_up!=''){
|
|
|
+ $condition[]=["ABS(HJJE)","<=",$total_up];
|
|
|
+ }
|
|
|
+
|
|
|
+ $count= Db::name("invoice_red")->where($condition)->count();
|
|
|
+ $total =ceil($count/$size);
|
|
|
+ $page=$total>=$page?$page :intval($total);
|
|
|
+ $list =Db::name("invoice_red")->where($condition)->page($page,$size)->order("addtime desc")->select()->toArray();
|
|
|
+ return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
|
|
|
+ }
|
|
|
+
|
|
|
}
|