|
@@ -38,7 +38,9 @@ class PurchaseOrderSpecialService extends Service
|
|
DB::beginTransaction();
|
|
DB::beginTransaction();
|
|
$material_model = PurchaseOrderSpecial::where('order_number',$data['order_number'])->first();
|
|
$material_model = PurchaseOrderSpecial::where('order_number',$data['order_number'])->first();
|
|
$material_model->order_number = $data['order_number'];
|
|
$material_model->order_number = $data['order_number'];
|
|
|
|
+ $material_model->purchase_total = $data['purchase_total'] ?? 0;
|
|
$material_model->other_fee = $data['other_fee'] ?? 0;
|
|
$material_model->other_fee = $data['other_fee'] ?? 0;
|
|
|
|
+ $material_model->discount_fee = $data['discount_fee'] ?? 0;
|
|
$material_model->mark = $data['mark'] ?? '';
|
|
$material_model->mark = $data['mark'] ?? '';
|
|
$material_model->save();
|
|
$material_model->save();
|
|
|
|
|
|
@@ -131,7 +133,7 @@ class PurchaseOrderSpecialService extends Service
|
|
|
|
|
|
$order = PurchaseOrderSpecial::where('order_number',$data['order_number'])
|
|
$order = PurchaseOrderSpecial::where('order_number',$data['order_number'])
|
|
->where('del_time',0)
|
|
->where('del_time',0)
|
|
- ->select('id','order_number','depart_id','mark','state','crt_id','sales_order_id','supplier','purchase_id','purchase_total','crt_time','storehouse_id','top_depart_id','total','other_fee','type')
|
|
|
|
|
|
+ ->select('id','order_number','depart_id','mark','state','crt_id','sales_order_id','supplier','purchase_id','purchase_total','crt_time','storehouse_id','top_depart_id','total','other_fee','type','discount_fee')
|
|
->first();
|
|
->first();
|
|
if(empty($order)) return [false, '虚拟采购单不存在或已被删除'];
|
|
if(empty($order)) return [false, '虚拟采购单不存在或已被删除'];
|
|
$order = $order->toArray();
|
|
$order = $order->toArray();
|
|
@@ -139,7 +141,7 @@ class PurchaseOrderSpecialService extends Service
|
|
$order['storehouse_title'] = Storehouse::where('id',$order['storehouse_id'])->value('title');
|
|
$order['storehouse_title'] = Storehouse::where('id',$order['storehouse_id'])->value('title');
|
|
$supplier = Depart::where('id',$order['supplier'])->first();
|
|
$supplier = Depart::where('id',$order['supplier'])->first();
|
|
$order['supplier_title'] = $supplier->title ?? '';
|
|
$order['supplier_title'] = $supplier->title ?? '';
|
|
- $order['state_title'] = PurchaseOrderSpecial::$name[$order['state']] ?? '';
|
|
|
|
|
|
+// $order['state_title'] = PurchaseOrderSpecial::$name[$order['state']] ?? '';
|
|
$order['type_title'] = PurchaseOrderSpecial::$type[$order['type']] ?? '';
|
|
$order['type_title'] = PurchaseOrderSpecial::$type[$order['type']] ?? '';
|
|
$sales_order_number = SalesOrder::where('id',$order['sales_order_id'])->value('order_number');
|
|
$sales_order_number = SalesOrder::where('id',$order['sales_order_id'])->value('order_number');
|
|
$order['sales_order_number'] = $sales_order_number;
|
|
$order['sales_order_number'] = $sales_order_number;
|
|
@@ -167,6 +169,9 @@ class PurchaseOrderSpecialService extends Service
|
|
$order['crt_name'] = $emp_map[$order['crt_id']] ?? '';
|
|
$order['crt_name'] = $emp_map[$order['crt_id']] ?? '';
|
|
$order['crt_time'] = $order['crt_time'] ? date("Y-m-d H:i:s",$order['crt_time']): '';
|
|
$order['crt_time'] = $order['crt_time'] ? date("Y-m-d H:i:s",$order['crt_time']): '';
|
|
|
|
|
|
|
|
+ $state_array = $this->getStateMake([$order]);
|
|
|
|
+ $order['state_title'] = $this->makeState($order,$state_array);
|
|
|
|
+
|
|
//退换货信息
|
|
//退换货信息
|
|
$order['return_exchange'] = (new ReturnExchangeOrderService())->getDifferentAmount($order['sales_order_id']);
|
|
$order['return_exchange'] = (new ReturnExchangeOrderService())->getDifferentAmount($order['sales_order_id']);
|
|
$order['return_exchange_amount'] = 0;
|
|
$order['return_exchange_amount'] = 0;
|
|
@@ -227,7 +232,7 @@ class PurchaseOrderSpecialService extends Service
|
|
*/
|
|
*/
|
|
public function getList($data,$user){
|
|
public function getList($data,$user){
|
|
$model = PurchaseOrderSpecial::Clear($user,$data);
|
|
$model = PurchaseOrderSpecial::Clear($user,$data);
|
|
- $model = $model->where('del_time',0)->select('order_number','id','depart_id','top_depart_id','mark','crt_time','state','crt_id','sales_order_id','supplier','purchase_id','purchase_total','storehouse_id','total','other_fee','type')
|
|
|
|
|
|
+ $model = $model->where('del_time',0)->select('order_number','id','depart_id','top_depart_id','mark','crt_time','state','crt_id','sales_order_id','supplier','purchase_id','purchase_total','storehouse_id','total','other_fee','type','discount_fee')
|
|
->orderby('id', 'desc');
|
|
->orderby('id', 'desc');
|
|
if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%');
|
|
if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%');
|
|
if(isset($data['state'])) $model->where('state',$data['state']);
|
|
if(isset($data['state'])) $model->where('state',$data['state']);
|
|
@@ -283,11 +288,15 @@ class PurchaseOrderSpecialService extends Service
|
|
list($for_amount_list, $for_amount_list1) = (new PaymentReceiptService())->getPaymentReceiptDataCountList(array_column($data['data'],'order_number'));
|
|
list($for_amount_list, $for_amount_list1) = (new PaymentReceiptService())->getPaymentReceiptDataCountList(array_column($data['data'],'order_number'));
|
|
list($getDifferentAmountALL,$getDifferentAmountALL1) = (new ReturnExchangeOrderService())->getDifferentAmountALLNew(array_column($data['data'],'sales_order_id'));
|
|
list($getDifferentAmountALL,$getDifferentAmountALL1) = (new ReturnExchangeOrderService())->getDifferentAmountALLNew(array_column($data['data'],'sales_order_id'));
|
|
|
|
|
|
|
|
+ //订单状态数据组织
|
|
|
|
+ $state_array = $this->getStateMake($data['data']);
|
|
|
|
+
|
|
foreach ($data['data'] as $key => $value){
|
|
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]['crt_time'] = $value['crt_time'] ? date("Y-m-d H:i:s",$value['crt_time']) : '';
|
|
$data['data'][$key]['crt_name'] = $emp_map[$value['crt_id']] ?? '';
|
|
$data['data'][$key]['crt_name'] = $emp_map[$value['crt_id']] ?? '';
|
|
$data['data'][$key]['purchase_name'] = $emp_map[$value['purchase_id']] ?? '';
|
|
$data['data'][$key]['purchase_name'] = $emp_map[$value['purchase_id']] ?? '';
|
|
- $data['data'][$key]['state_title'] = PurchaseOrderSpecial::$name[$value['state']] ?? '';
|
|
|
|
|
|
+ $data['data'][$key]['state_title'] = $this->makeState($data['data'][$key], $state_array);
|
|
|
|
+// $data['data'][$key]['state_title'] = PurchaseOrderSpecial::$name[$value['state']] ?? '';
|
|
$data['data'][$key]['sales_order_number'] = $sales[$value['sales_order_id']] ?? '';
|
|
$data['data'][$key]['sales_order_number'] = $sales[$value['sales_order_id']] ?? '';
|
|
$data['data'][$key]['supplier_title'] = $supplier[$value['supplier']] ?? '';
|
|
$data['data'][$key]['supplier_title'] = $supplier[$value['supplier']] ?? '';
|
|
$data['data'][$key]['type_title'] = PurchaseOrderSpecial::$type[$value['type']] ?? "";
|
|
$data['data'][$key]['type_title'] = PurchaseOrderSpecial::$type[$value['type']] ?? "";
|
|
@@ -336,7 +345,21 @@ class PurchaseOrderSpecialService extends Service
|
|
*/
|
|
*/
|
|
public function orderRule(&$data, $user, $is_check = true){
|
|
public function orderRule(&$data, $user, $is_check = true){
|
|
if(! isset($data['mark']) && ! isset($data['other_fee'])) return [false, '请填写更新的内容'];
|
|
if(! isset($data['mark']) && ! isset($data['other_fee'])) return [false, '请填写更新的内容'];
|
|
- if(isset($data['other_fee']) && ! is_numeric($data['other_fee'])) return [false, '其他费用请填写正确的数值'];
|
|
|
|
|
|
+ if(isset($data['other_fee'])) {
|
|
|
|
+ $res = $this->checkNumber($data['other_fee']);
|
|
|
|
+ if(! $res) return [false, '其他费用请输入不超过两位小数并且大于0的数值'];
|
|
|
|
+ }
|
|
|
|
+ $other_fee = $discount_fee = 0;
|
|
|
|
+ if(isset($data['other_fee'])) {
|
|
|
|
+ $res = $this->checkNumber($data['other_fee']);
|
|
|
|
+ if(! $res) return [false, '其他费用请输入不超过两位小数并且大于0的数值'];
|
|
|
|
+ $other_fee = $data['other_fee'];
|
|
|
|
+ }
|
|
|
|
+ if(isset($data['discount_fee'])) {
|
|
|
|
+ $res = $this->checkNumber($data['discount_fee']);
|
|
|
|
+ if(! $res) return [false, '优惠金额请输入不超过两位小数并且大于0的数值'];
|
|
|
|
+ $discount_fee = $data['discount_fee'];
|
|
|
|
+ }
|
|
|
|
|
|
//所属部门 以及 顶级部门
|
|
//所属部门 以及 顶级部门
|
|
if(empty($data['depart_id'])) $data['depart_id'] = $this->getDepart($user);
|
|
if(empty($data['depart_id'])) $data['depart_id'] = $this->getDepart($user);
|
|
@@ -350,9 +373,76 @@ class PurchaseOrderSpecialService extends Service
|
|
if($this->isEmpty($data,'order_number')) return [false,'虚拟采购单号不能为空!'];
|
|
if($this->isEmpty($data,'order_number')) return [false,'虚拟采购单号不能为空!'];
|
|
$purchase = PurchaseOrderSpecial::where('del_time',0)->where('order_number',$data['order_number'])->first();
|
|
$purchase = PurchaseOrderSpecial::where('del_time',0)->where('order_number',$data['order_number'])->first();
|
|
if(empty($purchase)) return [false, '虚拟采购单不存在或已被删除'];
|
|
if(empty($purchase)) return [false, '虚拟采购单不存在或已被删除'];
|
|
- if($purchase->state > PurchaseOrderSpecial::STATE_ZERO) return [false,'请确认虚拟采购单单据状态,修改失败'];
|
|
|
|
|
|
+ $purchase = $purchase->toArray();
|
|
|
|
+ if($purchase['state'] > PurchaseOrderSpecial::STATE_ZERO) return [false,'请确认虚拟采购单单据状态,修改失败'];
|
|
|
|
+
|
|
|
|
+// list($status, $msg) = (new PaymentReceiptService())->checkForEdit($data['order_number']);
|
|
|
|
+// if(! $status) return [false, $msg];
|
|
|
|
+
|
|
|
|
+ //原来的采购总价
|
|
|
|
+ $purchase_total = bcadd(bcsub($purchase['purchase_total'], $purchase['other_fee'],2), $purchase['discount_fee'], 2);
|
|
|
|
+ //现在的采购总价
|
|
|
|
+ $now_purchase_total = bcsub(bcadd($purchase_total, $other_fee,2), $discount_fee, 2);
|
|
|
|
+ $data['purchase_total'] = $now_purchase_total;
|
|
}
|
|
}
|
|
|
|
|
|
return [true, ''];
|
|
return [true, ''];
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public function submitOrderRule(&$data, $user){
|
|
|
|
+ if($this->isEmpty($data,'order_number')) return [false,'虚拟采购订单号不能为空!'];
|
|
|
|
+ $purchase = PurchaseOrderSpecial::where('del_time',0)->where('order_number',$data['order_number'])->first();
|
|
|
|
+ if(empty($purchase)) return [false, '虚拟采购订单不存在或已被删除'];
|
|
|
|
+ $purchase = $purchase->toArray();
|
|
|
|
+ if($purchase['state'] > PurchaseOrderSpecial::STATE_ZERO) return [false,'请确认虚拟采购订单单据状态,修改失败'];
|
|
|
|
+
|
|
|
|
+ return [true, $purchase];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function purchaseOrderSubmit($data,$user){
|
|
|
|
+ list($status,$msg) = $this->submitOrderRule($data, $user);
|
|
|
|
+ if(!$status) return [$status,$msg];
|
|
|
|
+ $order = $msg;
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ list($status,$msg) = (new CheckService())->checkAll([
|
|
|
|
+ "id" => $order['id'],
|
|
|
|
+ "order_number" => $order['order_number'],
|
|
|
|
+ "opt_case" => CheckService::thi,
|
|
|
|
+ "menu_id" => $data['menu_id']
|
|
|
|
+ ],$user);
|
|
|
|
+ if(! $status) return [false, $msg];
|
|
|
|
+ }catch (\Throwable $exception){
|
|
|
|
+ return [false, $exception->getMessage()];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return [true,''];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function getStateMake($data){
|
|
|
|
+ if(empty($data)) return [];
|
|
|
|
+
|
|
|
|
+ $order_no = [];
|
|
|
|
+ foreach ($data as $value){
|
|
|
|
+ if(! in_array($value['state'], [PurchaseOrderSpecial::State_minus_one,PurchaseOrderSpecial::STATE_ONE])) continue;
|
|
|
|
+ $order_no[] = $value['order_number'];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return (new OaService())->getOaTeamDetailList($order_no);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function makeState($value, $state_array){
|
|
|
|
+ if(! empty($state_array[$value['order_number']])){
|
|
|
|
+ $return = $state_array[$value['order_number']];
|
|
|
|
+ if($value['state'] == PurchaseOrderSpecial::State_minus_one){
|
|
|
|
+ $state = "驳回:" . $return;
|
|
|
|
+ }else{
|
|
|
|
+ $state = "待" . $return . "审核";
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ $state = PurchaseOrderSpecial::$name[$value['state']] ?? '';
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return $state;
|
|
|
|
+ }
|
|
}
|
|
}
|