|
@@ -213,19 +213,21 @@ class InvoiceItem extends Base{
|
|
'remark|备注' =>'max:255',
|
|
'remark|备注' =>'max:255',
|
|
]);
|
|
]);
|
|
$itemArr= $this->model->whereIn('id',array_column($param['list'],"itemId"))->column("id,invoiceCode,order_type,balance_amount,cat_code,tax","id");
|
|
$itemArr= $this->model->whereIn('id',array_column($param['list'],"itemId"))->column("id,invoiceCode,order_type,balance_amount,cat_code,tax","id");
|
|
- $orderInfo=[];
|
|
|
|
|
|
+ $cgdInfo = PayInfo::alias('a')
|
|
|
|
+ ->join('cgd_info b','a.cgdNo=b.sequenceNo','left')
|
|
|
|
+ ->join('order_category c','b.sequenceNo=c.code and b.goodNo=c.spuCode and c.order_type=2','left')
|
|
|
|
+ ->where([['a.status','=',1],['a.is_del','=',0],['a.cgdNo','in',array_column($param['list'],'code')]])
|
|
|
|
+ ->column('b.sequenceNo,b.goodNo,b.goodName,(b.goodNum-thNum) as goodNum,b.goodPrice,b.totalPrice,b.ainv_fee,b.winv_fee,b.apay_fee,b.wpay_fee,
|
|
|
|
+ c.merge_code,c.cat_code,c.cat_name,c.short_name,c.tax,c.inv_good_name',"b.sequenceNo");
|
|
|
|
+ $orderInfo=[];
|
|
$orderItem=[];
|
|
$orderItem=[];
|
|
foreach($param["list"] as $v){
|
|
foreach($param["list"] as $v){
|
|
if(!$listValid->check($v)) return error($listValid->getError());
|
|
if(!$listValid->check($v)) return error($listValid->getError());
|
|
if(!isset($itemArr[$v['itemId']])) return error("发票明细不存在");
|
|
if(!isset($itemArr[$v['itemId']])) return error("发票明细不存在");
|
|
- if(!isset($orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v["code"]])){
|
|
|
|
- $orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]= \app\admin\model\InvoiceOrder::getOrderInfo( $itemArr[$v['itemId']]['invoiceCode'],$v['code'],$param['order_type']);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if($orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]->isEmpty()) return error("发票{$itemArr[$v['itemId']]['invoiceCode']}关联订单{$v['code']}信息不存在");
|
|
|
|
- if($orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['balance_amount']<$v['total_amount']) return error("{$v["code"]}订单金额不足");
|
|
|
|
|
|
+ if(!isset($cgdInfo[$v['code']]))return error("订单{$v['code']}信息不存在或未对账");
|
|
|
|
+ if($cgdInfo[$v['code']]['winv_fee']<$v['total_amount']) return error("{$v["code"]}订单金额不足");
|
|
if($itemArr[$v['itemId']]['balance_amount']<=0) return error("发票明细ID {$v["itemId"]} 可关联金额不足");
|
|
if($itemArr[$v['itemId']]['balance_amount']<=0) return error("发票明细ID {$v["itemId"]} 可关联金额不足");
|
|
- if($orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['merge_code']=="") return error("{$v["code"]}订单税目信息不存在");
|
|
|
|
|
|
+ if($cgdInfo[$v['code']]['merge_code']=="") return error("{$v["code"]}订单税目信息不存在");
|
|
if($itemArr[$v['itemId']]['balance_amount']<$v['total_amount']){
|
|
if($itemArr[$v['itemId']]['balance_amount']<$v['total_amount']){
|
|
$balance = bcsub($v['total_amount'],$itemArr[$v['itemId']]['balance_amount'],2);
|
|
$balance = bcsub($v['total_amount'],$itemArr[$v['itemId']]['balance_amount'],2);
|
|
$itemArr[$v['itemId']]['balance_amount']='0';
|
|
$itemArr[$v['itemId']]['balance_amount']='0';
|
|
@@ -233,10 +235,9 @@ class InvoiceItem extends Base{
|
|
$balance = '0';
|
|
$balance = '0';
|
|
$itemArr[$v['itemId']]['balance_amount'] = bcsub($itemArr[$v['itemId']]['balance_amount'],$v['total_amount'],2);
|
|
$itemArr[$v['itemId']]['balance_amount'] = bcsub($itemArr[$v['itemId']]['balance_amount'],$v['total_amount'],2);
|
|
}
|
|
}
|
|
- $orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['balance_amount'] =
|
|
|
|
- bcsub($orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['balance_amount'],bcsub($v['total_amount'],$balance,2),2);
|
|
|
|
- $tax = $orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['tax'];
|
|
|
|
- $merge_code = $orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['merge_code'];
|
|
|
|
|
|
+ $cgdInfo[$v['code']]['winv_fee'] =bcsub( $cgdInfo[$v['code']]['winv_fee'],bcsub($v['total_amount'],$balance,2),2);
|
|
|
|
+ $tax = $cgdInfo[$v['code']]['tax'];
|
|
|
|
+ $merge_code = $cgdInfo[$v['code']]['merge_code'];
|
|
$diff=[];
|
|
$diff=[];
|
|
$tax_diff=1;
|
|
$tax_diff=1;
|
|
$cat_diff=1;
|
|
$cat_diff=1;
|
|
@@ -258,8 +259,8 @@ class InvoiceItem extends Base{
|
|
$orderItem[]=[
|
|
$orderItem[]=[
|
|
'itemId'=>$v['itemId'],
|
|
'itemId'=>$v['itemId'],
|
|
'code'=>$v['code'],
|
|
'code'=>$v['code'],
|
|
- 'spuCode'=>$orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['goodNo'],
|
|
|
|
- 'good_name'=>$orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['goodName'],
|
|
|
|
|
|
+ 'spuCode'=>$cgdInfo[$v['code']]['goodNo'],
|
|
|
|
+ 'good_name'=>$cgdInfo[$v['code']]['goodName'],
|
|
'num'=>$v['num']??0,
|
|
'num'=>$v['num']??0,
|
|
'good_price'=>$v['good_price']??0,
|
|
'good_price'=>$v['good_price']??0,
|
|
'total_amount'=>$v['total_amount'],
|
|
'total_amount'=>$v['total_amount'],
|