|
@@ -10,7 +10,14 @@ use think\facade\Db;
|
|
|
use think\facade\Cache;
|
|
|
|
|
|
class OrderInv extends BaseController{
|
|
|
- private $typename=["004"=>"增值税专用发票",'007'=>"增值税普通发票",'026'=>'增值税电子普通发票','028'=>'增值税电子专用发票','000'=>"增值税电子发票"];
|
|
|
+ private $typename=[
|
|
|
+ "004"=>"增值税专用发票",
|
|
|
+ '007'=>"增值税普通发票",
|
|
|
+ '026'=>'增值税电子普通发票',
|
|
|
+ '028'=>'增值税电子专用发票',
|
|
|
+ '021'=>"全电专用发票",
|
|
|
+ '022'=>"全电普通发票"
|
|
|
+ ];
|
|
|
public function __construct(App $app) {
|
|
|
parent::__construct($app);
|
|
|
}
|
|
@@ -740,6 +747,7 @@ class OrderInv extends BaseController{
|
|
|
if(empty($ticket)){
|
|
|
return error_show(1004,"未找到开票的票面信息");
|
|
|
}
|
|
|
+ $ticket['inv_out'] = $invinfo['inv_out']??"";
|
|
|
$return_type = isset($this->post['return_type'])&&$this->post['return_type']!="" ? intval($this->post['return_type']):0;
|
|
|
if($status==1){
|
|
|
if ($return_type==""){
|
|
@@ -756,13 +764,13 @@ class OrderInv extends BaseController{
|
|
|
$open_date =isset($this->post['open_date'])&&$this->post['open_date']!=''?trim($this->post['open_date']):"";
|
|
|
$checkCode =isset($this->post['checkCode'])&&$this->post['checkCode']!=''?trim($this->post['checkCode']):"";
|
|
|
$subtotal_fee =isset($this->post['subtotal_fee'])&&$this->post['subtotal_fee']!=''?floatval($this->post['subtotal_fee']):"";
|
|
|
- if($invCode==='') return error_show(1004,"参数 invCode 不能为空");
|
|
|
- if($invNum==='') return error_show(1004,"参数 invNum 不能为空");
|
|
|
- if($open_date==='') return error_show(1004,"参数 open_date 不能为空");
|
|
|
- if($invinfo['inv_type']==2 || $invinfo['inv_type']==3){
|
|
|
+ if($invCode==='') return error_show(1004,"参数 invCode 不能为空");
|
|
|
+ if($invNum==='') return error_show(1004,"参数 invNum 不能为空");
|
|
|
+ if($open_date==='') return error_show(1004,"参数 open_date 不能为空");
|
|
|
+ if($invinfo['inv_type']==2 || $invinfo['inv_type']==3){
|
|
|
if($checkCode==='') return error_show(1004,"参数 checkCode 不能为空");
|
|
|
}
|
|
|
- if($subtotal_fee==='') return error_show(1004,"参数 subtotal_fee 不能为空");
|
|
|
+ if($subtotal_fee==='') return error_show(1004,"参数 subtotal_fee 不能为空");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -778,11 +786,12 @@ class OrderInv extends BaseController{
|
|
|
$this->addRedOpen($ticket,$return_reason,$invinfo['company_type'], $returnCode);
|
|
|
}
|
|
|
if($red==1){
|
|
|
- if(date("Y-m",strtotime($ticket["open_date"]))==date("Y-m")){
|
|
|
- $this->addDiscard($ticket,$returnCode);
|
|
|
- }else{
|
|
|
- $this->addApplyRed($ticket,$returnCode);
|
|
|
- }
|
|
|
+// if(date("Y-m",strtotime($ticket["open_date"]))==date("Y-m")){
|
|
|
+// $this->addDiscard($ticket,$returnCode);
|
|
|
+// }else{
|
|
|
+// $this->addApplyRed($ticket,$returnCode);
|
|
|
+// }
|
|
|
+ $this->addApplyRed($ticket,$returnCode);
|
|
|
}
|
|
|
}else{
|
|
|
$invpool=[
|
|
@@ -824,8 +833,8 @@ class OrderInv extends BaseController{
|
|
|
$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']==0 ? 1 : 2,
|
|
|
- "status"=>$qrdinfo['ainv_fee']==0 &&$qrdinfo['inv_fee']==0 && $qrdinfo['pay_status'] ?0 : 1,
|
|
|
+ "inv_status"=>$qrdinfo['ainv_fee']==0 &&$qrdinfo['inv_fee']-$value['cancel_fee']==0 ? 1 : 2,
|
|
|
+ "status"=>$qrdinfo['ainv_fee']==0 &&$qrdinfo['inv_fee']-$value['cancel_fee']==0 && $qrdinfo['pay_status'] ?0 : 1,
|
|
|
"updatetime"=>date("Y-m-d H:i:s"),
|
|
|
];
|
|
|
$qrdup = Db::name("qrd_info")->where($qrdinfo)->update($update);
|
|
@@ -912,8 +921,8 @@ class OrderInv extends BaseController{
|
|
|
$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']==0 ? 1 : 2,
|
|
|
- "status"=>$qrdinfo['ainv_fee']==0 &&$qrdinfo['inv_fee']==0 && $qrdinfo['pay_status'] ?0 : 1,
|
|
|
+ "inv_status"=>$qrdinfo['ainv_fee']==0 &&$qrdinfo['inv_fee']-$value['cancel_fee']==0 ? 1 : 2,
|
|
|
+ "status"=>$qrdinfo['ainv_fee']==0 &&$qrdinfo['inv_fee']-$value['cancel_fee']==0 && $qrdinfo['pay_status'] ?0 : 1,
|
|
|
"updatetime"=>date("Y-m-d H:i:s"),
|
|
|
];
|
|
|
$qrdup = Db::name("qrd_info")->where($qrdinfo)->update($update);
|
|
@@ -1556,7 +1565,7 @@ class OrderInv extends BaseController{
|
|
|
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]];
|
|
|
+ $condition=[["is_del","=",0],["FPLXDM","in",["004",'028']]];
|
|
|
$invRed=isset($this->post["invRed"])&&$this->post["invRed"]!=''?trim($this->post["invRed"]):"";
|
|
|
if($invRed!=''){
|
|
|
$condition[]=["invRed","like","%$invRed%"];
|
|
@@ -1706,6 +1715,7 @@ class OrderInv extends BaseController{
|
|
|
$data=[
|
|
|
'invNo'=>$ticket['invNo'],
|
|
|
"invRed"=>$invRed,
|
|
|
+ "inv_out"=>$ticket['inv_out'],
|
|
|
"returnCode"=>$returnCode,
|
|
|
"apply_id"=>$this->uid,
|
|
|
"apply_name"=>$this->uname,
|
|
@@ -1800,13 +1810,12 @@ class OrderInv extends BaseController{
|
|
|
"SE"=>sprintf("%01.2f",array_sum(array_column($goodinfo,'SE'))),
|
|
|
];
|
|
|
}else
|
|
|
- {
|
|
|
- $qdmx=$goodinfo;
|
|
|
- }
|
|
|
+ {$qdmx=$goodinfo;}
|
|
|
$invRed=makeNo("IRE");
|
|
|
$reddata=[
|
|
|
'invNo'=>$ticket['invNo'],
|
|
|
"invRed"=>$invRed,
|
|
|
+ "inv_out"=>$ticket['inv_out'],
|
|
|
"returnCode"=>$returnCode,
|
|
|
"apply_id"=>$this->uid,
|
|
|
"apply_name"=>$this->uname,
|
|
@@ -1834,7 +1843,7 @@ class OrderInv extends BaseController{
|
|
|
"FPLXDM"=>$ticket['inv_type'],
|
|
|
];
|
|
|
|
|
|
- $data=[ "invNo"=>$invRed,
|
|
|
+ $data=[ "invNo"=>$invRed,
|
|
|
"KPLX"=>"1",
|
|
|
"XHFSBH"=>$ticket['seller_id'],
|
|
|
"XHFMC"=>$ticket['seller_title'],
|
|
@@ -1948,7 +1957,6 @@ class OrderInv extends BaseController{
|
|
|
$condition[]=["a.returnCode","like","%$returnCode%"];
|
|
|
}
|
|
|
$count=Db::name("invoice_return")->alias("a")
|
|
|
-
|
|
|
->leftJoin("invoice_ticket b","a.invNo=b.invNo and b.type=1")
|
|
|
->leftJoin("invoice_pool c","a.invNo=c.invNo")
|
|
|
->where($condition)->count();
|
|
@@ -2136,7 +2144,7 @@ class OrderInv extends BaseController{
|
|
|
if($value["inv_number"]==""){
|
|
|
return error_show(1005,"第".($key+1)."行缺少发票号码数据");
|
|
|
}
|
|
|
- if($value["inv_total"]==""&& $value['inv_type']==="000"){
|
|
|
+ if($value["inv_total"]==""&& in_array($invtype,["021","022"])){
|
|
|
return error_show(1005,"第".($key+1)."行缺少发票金额数据");
|
|
|
}
|
|
|
if($value["inv_subtotal"]==""){
|
|
@@ -2169,7 +2177,7 @@ class OrderInv extends BaseController{
|
|
|
$temp=[];
|
|
|
$temp['invNo'] = $value["invNo"];
|
|
|
$temp['type'] = 0;
|
|
|
- $temp['inv_type'] =array_search($value['inv_type'],$this->typename) ;
|
|
|
+ $temp['inv_type'] =$invtype ;
|
|
|
$temp['inv_code'] = $value['inv_code'];
|
|
|
$temp['inv_number'] = $value['inv_number'];
|
|
|
$temp['inv_subtotal'] = $value['inv_subtotal'];
|
|
@@ -2201,15 +2209,17 @@ class OrderInv extends BaseController{
|
|
|
Db::startTrans();
|
|
|
try{
|
|
|
$keyarr =array_keys($total);
|
|
|
- $inpool = Db::name("invoice_pool")->where([["invNo","in",$keyarr],["open_type","in",[0,2,3]],["is_del","=",0],["status","=",0]])->column("winv_fee,invNo,inv_value","invNo");
|
|
|
+ $invTArr =array_keys($this->typename);
|
|
|
+ $inpool = Db::name("invoice_pool")->where([["invNo","in",$keyarr],["open_type","in",[0,2,3]],["is_del","=",0],["status","=",0]])->column("winv_fee,invNo,inv_value,inv_type","invNo");
|
|
|
|
|
|
foreach ($total as $key=>$val){
|
|
|
if(!isset($inpool[$key])) continue;
|
|
|
- if($val['inv_type']==='000' && $inpool[$key]['winv_fee']!=$val['total']){
|
|
|
+ if(in_array($val['inv_type'],["021","022"]) && $inpool[$key]['winv_fee']!=$val['total']){
|
|
|
throw new Exception("{$key}全电发票面金额小于未开票金额");
|
|
|
}
|
|
|
+ if($invTArr[$inpool[$key]['inv_type']]!= $val['inv_type'] ) throw new Exception("{$key}发票类型有误");
|
|
|
$update=[
|
|
|
- "status"=>$val['inv_type']==='000'?3:2,
|
|
|
+ "status"=>in_array($val['inv_type'],["021","022"])?3:2,
|
|
|
"open_type"=>$inpool[$key]['open_type']??3,
|
|
|
"updatetime"=>date("Y-m-d H:i:s")
|
|
|
];
|
|
@@ -2254,14 +2264,14 @@ class OrderInv extends BaseController{
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- $inticket =Db::name("invoice_ticket")->insertAll($list);
|
|
|
- if(!$inticket){
|
|
|
- Db::rollback();
|
|
|
- return error_show(1005,"发票数据录入失败");
|
|
|
- }else{
|
|
|
+ $inticket =Db::name("invoice_ticket")->insertAll($list);
|
|
|
+ if(!$inticket){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005,"发票数据录入失败");
|
|
|
+ }
|
|
|
Db::commit();
|
|
|
return app_show(0,"发票数据录入成功");
|
|
|
- }
|
|
|
+
|
|
|
}catch (\Exception $e){
|
|
|
Db::rollback();
|
|
|
return error_show(1008,$e->getMessage());
|