|
@@ -6,6 +6,8 @@ use App\Model\BasicType;
|
|
|
use App\Model\Employee;
|
|
|
use App\Model\PaymentReceipt;
|
|
|
use App\Model\PaymentReceiptInfo;
|
|
|
+use App\Model\PurchaseOrder;
|
|
|
+use App\Model\SalesOrder;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
class PaymentReceiptService extends Service
|
|
@@ -25,12 +27,12 @@ class PaymentReceiptService extends Service
|
|
|
DB::beginTransaction();
|
|
|
|
|
|
$model = PaymentReceipt::where('id',$data['id'])->first();
|
|
|
- $model->data_order_no = $data['data_order_no'];
|
|
|
- $model->data_type = $data['data_type'];
|
|
|
+// $model->data_order_no = $data['data_order_no'];
|
|
|
+// $model->data_type = $data['data_type'];
|
|
|
$model->type = $data['type'];
|
|
|
$model->account = $data['account'] ?? 0;
|
|
|
$model->pay_way = $data['pay_way'] ?? 0;
|
|
|
- $model->amount = $data['amount'] ?? 0;
|
|
|
+// $model->amount = $data['amount'] ?? 0;
|
|
|
$model->mark = $data['mark'] ?? '';
|
|
|
$model->payment_receipt_date = $data['payment_receipt_date'] ?? 0;
|
|
|
$model->save();
|
|
@@ -71,6 +73,20 @@ class PaymentReceiptService extends Service
|
|
|
}
|
|
|
PaymentReceiptInfo::insert($insert);
|
|
|
}
|
|
|
+ if(! empty($data['amount_list'])){
|
|
|
+ $insert = [];
|
|
|
+ foreach ($data['amount_list'] as $value){
|
|
|
+ $insert[] = [
|
|
|
+ 'payment_receipt_id' => $model->id,
|
|
|
+ 'data_order_no' => $value['data_order_no'],
|
|
|
+ 'data_order_type' => $data['data_type'],
|
|
|
+ 'amount' => $value['amount'],
|
|
|
+ 'type' => PaymentReceiptInfo::type_three,
|
|
|
+ 'crt_time' => $time,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ PaymentReceiptInfo::insert($insert);
|
|
|
+ }
|
|
|
|
|
|
DB::commit();
|
|
|
}catch (\Exception $exception){
|
|
@@ -92,12 +108,12 @@ class PaymentReceiptService extends Service
|
|
|
|
|
|
$model = new PaymentReceipt();
|
|
|
$model->order_number = $data['order_number'];
|
|
|
- $model->data_order_no = $data['data_order_no'];
|
|
|
+// $model->data_order_no = $data['data_order_no'];
|
|
|
$model->data_type = $data['data_type'];
|
|
|
$model->type = $data['type'];
|
|
|
$model->account = $data['account'] ?? 0;
|
|
|
$model->pay_way = $data['pay_way'] ?? 0;
|
|
|
- $model->amount = $data['amount'] ?? 0;
|
|
|
+// $model->amount = $data['amount'] ?? 0;
|
|
|
$model->mark = $data['mark'] ?? '';
|
|
|
$model->crt_id = $user['id'];
|
|
|
$model->depart_id = $data['depart_id'];
|
|
@@ -131,6 +147,20 @@ class PaymentReceiptService extends Service
|
|
|
}
|
|
|
PaymentReceiptInfo::insert($insert);
|
|
|
}
|
|
|
+ if(! empty($data['amount_list'])){
|
|
|
+ $insert = [];
|
|
|
+ foreach ($data['amount_list'] as $value){
|
|
|
+ $insert[] = [
|
|
|
+ 'payment_receipt_id' => $model->id,
|
|
|
+ 'data_order_no' => $value['data_order_no'],
|
|
|
+ 'data_order_type' => $data['data_type'],
|
|
|
+ 'amount' => $value['amount'],
|
|
|
+ 'type' => PaymentReceiptInfo::type_three,
|
|
|
+ 'crt_time' => $time,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ PaymentReceiptInfo::insert($insert);
|
|
|
+ }
|
|
|
DB::commit();
|
|
|
}catch (\Exception $exception){
|
|
|
DB::rollBack();
|
|
@@ -204,17 +234,42 @@ class PaymentReceiptService extends Service
|
|
|
->where('payment_receipt_id',$data['id'])
|
|
|
->get()->toArray();
|
|
|
$emp_id = [];
|
|
|
+ $order_no = [];
|
|
|
foreach ($file as $value){
|
|
|
if(in_array($value['type'],PaymentReceiptInfo::$man)){
|
|
|
$emp_id[] = $value['data_id'];
|
|
|
}
|
|
|
+ if(! empty($value['data_order_no'])) $order_no[] = $value['data_order_no'];
|
|
|
+ }
|
|
|
+ if($customer['data_type'] == PaymentReceipt::data_type_one){
|
|
|
+ $order = SalesOrder::where('del_time',0)
|
|
|
+ ->whereIn('order_number',$order_no)
|
|
|
+ ->pluck('contract_fee','order_number')
|
|
|
+ ->toArray();
|
|
|
+ }else{
|
|
|
+ $order = PurchaseOrder::where('del_time',0)
|
|
|
+ ->whereIn('order_number',$order_no)
|
|
|
+ ->pluck('purchase_total','order_number')
|
|
|
+ ->toArray();
|
|
|
+ }
|
|
|
+ $infos = PaymentReceiptInfo::where('del_time',0)
|
|
|
+ ->where('type',PaymentReceiptInfo::type_three)
|
|
|
+ ->where('payment_receipt_id','<>',$customer['id'])
|
|
|
+ ->get()->toArray();
|
|
|
+ $infos_map = [];
|
|
|
+ foreach ($infos as $value){
|
|
|
+ if(isset($infos_map[$value['data_order_no']])){
|
|
|
+ $infos_map[$value['data_order_no']] += $value['amount'];
|
|
|
+ }else{
|
|
|
+ $infos_map[$value['data_order_no']] = $value['amount'];
|
|
|
+ }
|
|
|
}
|
|
|
$emp_map = Employee::whereIn('id',array_unique($emp_id))
|
|
|
->where('del_time',0)
|
|
|
->pluck('emp_name','id')
|
|
|
->toArray();
|
|
|
|
|
|
- $customer['file'] = $customer['employee_one'] = [];
|
|
|
+ $customer['file'] = $customer['employee_one'] = $customer['amount_list'] = [];
|
|
|
foreach ($file as $value){
|
|
|
if($value['type'] == PaymentReceiptInfo::type_one){
|
|
|
$tmp = [
|
|
@@ -233,6 +288,14 @@ class PaymentReceiptService extends Service
|
|
|
$customer['employee_one'][] = $tmp;
|
|
|
}
|
|
|
}
|
|
|
+ }elseif ($value['type'] == PaymentReceiptInfo::type_three){
|
|
|
+ $tmp = [
|
|
|
+ 'data_order_no' => $value['data_order_no'],
|
|
|
+ 'amount' => $value['amount'],
|
|
|
+ 'total_amount' => $order[$value['data_order_no']] ?? 0,
|
|
|
+ 'has_amount' => $infos_map[$value['data_order_no']] ?? 0,
|
|
|
+ ];
|
|
|
+ $customer['amount_list'][] = $tmp;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -246,7 +309,15 @@ class PaymentReceiptService extends Service
|
|
|
->orderby('id', 'desc');
|
|
|
|
|
|
if(isset($data['state'])) $model->where('state', $data['state']);
|
|
|
- if(! empty($data['data_order_no'])) $model->where('data_order_no', 'LIKE', '%'.$data['data_order_no'].'%');
|
|
|
+ if(! empty($data['data_order_no'])) {
|
|
|
+ $info = PaymentReceiptInfo::where('del_time',0)
|
|
|
+ ->where('type',PaymentReceiptInfo::type_three)
|
|
|
+ ->where('data_order_no', 'LIKE', '%'.$data['data_order_no'].'%')
|
|
|
+ ->select('payment_receipt_id')
|
|
|
+ ->get()->toArray();
|
|
|
+
|
|
|
+ $model->whereIn('id', array_unique(array_column($info,'payment_receipt_id')));
|
|
|
+ }
|
|
|
if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%');
|
|
|
if(! empty($data['data_type'])) $model->where('data_type', $data['data_type']);
|
|
|
if(! empty($data['type'])) $model->where('type', $data['type']);
|
|
@@ -258,7 +329,7 @@ class PaymentReceiptService extends Service
|
|
|
$model->where('crt_time','>=',$return[0]);
|
|
|
$model->where('crt_time','<=',$return[1]);
|
|
|
}
|
|
|
- if(! empty($data['payment_receipt_date'][0]) && ! empty($data['payment_receipt_date'][1])) {
|
|
|
+ if(! empty($data['payment_receipt_date'][0]) && ! empty($data['payment_receipt_date'][1])){
|
|
|
$return = $this->changeDateToTimeStampAboutRange($data['payment_receipt_date']);
|
|
|
$model->where('payment_receipt_date','>=',$return[0]);
|
|
|
$model->where('payment_receipt_date','<=',$return[1]);
|
|
@@ -276,12 +347,15 @@ class PaymentReceiptService extends Service
|
|
|
|
|
|
public function customerRule(&$data, $user, $is_add = true){
|
|
|
if(empty($data['order_number'])) return [false,'收付款单编号不能为空'];
|
|
|
- if(empty($data['data_order_no'])) return [false,'关联单号不能为空'];
|
|
|
if(empty($data['data_type'])) return [false,'单号类型不能为空'];
|
|
|
- if(empty($data['type'])) return [false,'金额类型不能为空'];
|
|
|
- if(empty($data['amount'])) return [false,'金额不能为空'];
|
|
|
- $res = $this->checkNumber($data['amount']);
|
|
|
- if(! $res) return [false, '金额请输入不超过两位小数并且大于0的数值'];
|
|
|
+ if(empty($data['type'])) return [false,'收付款类型不能为空'];
|
|
|
+ if(empty($data['amount_list']) || ! is_array($data['amount_list'])) return [false,'关联单号与回款金额不能为空'];
|
|
|
+ foreach ($data['amount_list'] as $value){
|
|
|
+ if(empty($value['data_order_no'])) return [false,'关联单号不能为空'];
|
|
|
+ if(empty($value['amount'])) return [false,'金额不能为空'];
|
|
|
+ $res = $this->checkNumber($value['amount']);
|
|
|
+ if(! $res) return [false, '金额请输入不超过两位小数并且大于0的数值'];
|
|
|
+ }
|
|
|
|
|
|
if(! empty($data['payment_receipt_date'])) $data['payment_receipt_date'] = $this->changeDateToDate($data['payment_receipt_date']);
|
|
|
|
|
@@ -318,6 +392,16 @@ class PaymentReceiptService extends Service
|
|
|
->pluck('title','id')
|
|
|
->toArray();
|
|
|
|
|
|
+ $map = [];
|
|
|
+ $info = PaymentReceiptInfo::where('del_time',0)
|
|
|
+ ->where('type',PaymentReceiptInfo::type_three)
|
|
|
+ ->whereIn('payment_receipt_id', array_unique(array_column($data['data'],'id')))
|
|
|
+ ->select('payment_receipt_id','data_order_no')
|
|
|
+ ->get()->toArray();
|
|
|
+ foreach ($info as $value){
|
|
|
+ $map[$value['payment_receipt_id']][] = $value['data_order_no'];
|
|
|
+ }
|
|
|
+
|
|
|
foreach ($data['data'] as $key => $value){
|
|
|
$data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
|
|
|
$data['data'][$key]['payment_receipt_date'] = $value['payment_receipt_date'] ? date('Y-m-d',$value['payment_receipt_date']) : '';
|
|
@@ -327,6 +411,7 @@ class PaymentReceiptService extends Service
|
|
|
$data['data'][$key]['data_type_title'] = PaymentReceipt::$data_type[$value['data_type']] ?? '';
|
|
|
$data['data'][$key]['account_title'] = $basic_map[$value['account']] ?? '';
|
|
|
$data['data'][$key]['pay_way_title'] = $basic_map[$value['pay_way']] ?? '';
|
|
|
+ $data['data'][$key]['data_order_no'] = $map[$value['id']] ?? [];
|
|
|
}
|
|
|
|
|
|
return $data;
|
|
@@ -335,8 +420,21 @@ class PaymentReceiptService extends Service
|
|
|
public function getPaymentReceiptDataList($data){
|
|
|
$data['data_order_no'] = $data['order_number'];
|
|
|
|
|
|
- $order = PaymentReceipt::where('del_time',0)
|
|
|
+ $info1 = PaymentReceiptInfo::where('del_time',0)
|
|
|
->where('data_order_no',$data['data_order_no'])
|
|
|
+ ->where('type',PaymentReceiptInfo::type_three)
|
|
|
+ ->get()->toArray();
|
|
|
+ $map = [];
|
|
|
+ foreach ($info1 as $value){
|
|
|
+ if(isset($map[$value['payment_receipt_id']])){
|
|
|
+ $map[$value['payment_receipt_id']] += $value['amount'];
|
|
|
+ }else{
|
|
|
+ $map[$value['payment_receipt_id']] = $value['amount'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $order = PaymentReceipt::where('del_time',0)
|
|
|
+ ->where('id',array_column($info1,'payment_receipt_id'))
|
|
|
->get()->toArray();
|
|
|
|
|
|
$emp_id = PaymentReceiptInfo::where('del_time',0)
|
|
@@ -364,10 +462,11 @@ class PaymentReceiptService extends Service
|
|
|
$order[$key]['belong'] = $tmp;
|
|
|
$order[$key]['state_title'] = PaymentReceipt::$name[$value['state']] ?? '';
|
|
|
$order[$key]['payment_receipt_date'] = $value['payment_receipt_date'] ? date('Y-m-d',$value['payment_receipt_date']) : '';
|
|
|
+ $amount = $map[$value['id']] ?? 0;
|
|
|
if($value['state'] == PaymentReceipt::STATE_TWO){
|
|
|
- $finished += $value['amount'];
|
|
|
+ $finished += $amount;
|
|
|
}else{
|
|
|
- $not_finished += $value['amount'];
|
|
|
+ $not_finished += $amount;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -441,4 +540,47 @@ class PaymentReceiptService extends Service
|
|
|
|
|
|
return $customer;
|
|
|
}
|
|
|
+
|
|
|
+ public function getPaymentReceiptDataCountList($data){
|
|
|
+ $data_order_no = [];
|
|
|
+ foreach ($data as $value){
|
|
|
+ $data_order_no[] = $value['order_number'];
|
|
|
+ }
|
|
|
+ if(empty($data_order_no)) return [];
|
|
|
+
|
|
|
+ $order = PaymentReceiptInfo::where('del_time',0)
|
|
|
+ ->where('type',PaymentReceiptInfo::type_three)
|
|
|
+ ->whereIn('data_order_no',$data_order_no)
|
|
|
+ ->get()->toArray();
|
|
|
+
|
|
|
+ $return = [];
|
|
|
+ foreach ($order as $value){
|
|
|
+ if(isset($return[$value['data_order_no']])){
|
|
|
+ $return[$value['data_order_no']] += $value['amount'];
|
|
|
+ }else{
|
|
|
+ $return[$value['data_order_no']] = $value['amount'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $return;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function maked(){
|
|
|
+ $payment = PaymentReceipt::where('del_time',0)
|
|
|
+ ->where('data_order_no','<>','')
|
|
|
+ ->where('amount','>',0)
|
|
|
+ ->get()->toArray();
|
|
|
+ $insert = [];
|
|
|
+ foreach ($payment as $value){
|
|
|
+ $insert[] = [
|
|
|
+ 'payment_receipt_id' => $value['id'],
|
|
|
+ 'crt_time' => $value['crt_time'],
|
|
|
+ 'type' => PaymentReceiptInfo::type_three,
|
|
|
+ 'data_order_no' => $value['data_order_no'],
|
|
|
+ 'amount' => $value['amount'],
|
|
|
+ 'data_order_type' => $value['type'],
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ if(! empty($insert)) PaymentReceiptInfo::insert($insert);
|
|
|
+ }
|
|
|
}
|