|
|
@@ -16,6 +16,7 @@ use App\RejectedBill;
|
|
|
use App\RejectedBillItem;
|
|
|
use App\Sign;
|
|
|
use Illuminate\Http\Request;
|
|
|
+use Illuminate\Support\Arr;
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
use Illuminate\Support\Facades\Validator;
|
|
|
|
|
|
@@ -36,10 +37,20 @@ class OrderIssueService
|
|
|
}
|
|
|
$user = Auth::user();
|
|
|
$owner_ids = $user ? $user->getPermittingOwnerIdsAttribute() : [];
|
|
|
- $orders = Order::select('id')->whereIn('owner_id', $owner_ids)->get();
|
|
|
$order_ids = [];
|
|
|
+ if (isset($condition['owner_id'])) {
|
|
|
+ $owner_ids = explode(',', $condition['owner_id']);
|
|
|
+ }
|
|
|
+
|
|
|
+ $orderIssues = OrderIssue::whereHas('order', function ($query) use ($owner_ids) {
|
|
|
+ $query->whereHas('owner', function ($query) use ($owner_ids) {
|
|
|
+ return $query->whereIn('id', $owner_ids);
|
|
|
+ });
|
|
|
+ })->get();
|
|
|
+
|
|
|
+ $orders = Order::select('id')->whereIn('owner_id', $owner_ids)->get();
|
|
|
foreach ($orders as $order) {
|
|
|
- array_push($order_ids,$order['id']);
|
|
|
+ array_push($order_ids, $order['id']);
|
|
|
}
|
|
|
$query = OrderIssue::with(['top', 'userWorkGroup', 'issueType', 'logs' => function ($query) {
|
|
|
return $query->with(['user'])->orderByDesc('created_at');
|
|
|
@@ -57,15 +68,17 @@ class OrderIssueService
|
|
|
return $query->with('commodity');
|
|
|
}]);
|
|
|
}]);
|
|
|
- }])->whereIn('order_id', $order_ids);
|
|
|
-
|
|
|
-
|
|
|
+ }])->whereHas('order', function ($query) use ($owner_ids) {
|
|
|
+ $query->whereHas('owner', function ($query) use ($owner_ids) {
|
|
|
+ return $query->whereIn('id', $owner_ids);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ // ->whereIn('order_id', $order_ids)
|
|
|
$query->selectRaw('order_issues.* ,order_issue_on_tops.id top_id ,order_issue_on_tops.remark,order_issue_on_tops.updated_at top_update')
|
|
|
->leftJoin('order_issue_on_tops', 'order_issue_on_tops.order_issue_id', '=', 'order_issues.id')
|
|
|
->whereNull('order_issue_on_tops.deleted_at')
|
|
|
->orderBy('order_issue_on_tops.updated_at', 'desc')
|
|
|
->orderBy('order_issues.id', 'desc');
|
|
|
-
|
|
|
return $query;
|
|
|
}
|
|
|
|
|
|
@@ -103,6 +116,7 @@ class OrderIssueService
|
|
|
}
|
|
|
$query->whereIn('order_issues.id', $orderIssuesId);
|
|
|
}
|
|
|
+// dd($query->toSql());
|
|
|
return $query;
|
|
|
}
|
|
|
|
|
|
@@ -130,31 +144,40 @@ class OrderIssueService
|
|
|
public function createOrFind($orderNo)
|
|
|
{
|
|
|
$orderService = app('orderService');
|
|
|
+ $rejectedService = app('rejectedService');
|
|
|
$order = $orderService->createOrderByWMSOrderNo($orderNo);
|
|
|
$arr = [
|
|
|
'order_id' => $order->id,
|
|
|
];
|
|
|
$orderIssue = OrderIssue::create($arr);
|
|
|
+ if ($order->code) {
|
|
|
+ $rejectedBill = $rejectedService->getRejectedByWMSOrderNo($order->code);
|
|
|
+ if ($rejectedBill) {
|
|
|
+ $orderIssue->rejected_bill_id = $rejectedBill['id'];
|
|
|
+ $orderIssue->save();
|
|
|
+ }
|
|
|
+ }
|
|
|
$this->judgeRejectingStatus($orderIssue);
|
|
|
$orderIssue->order = $order;
|
|
|
return $orderIssue;
|
|
|
}
|
|
|
|
|
|
-/* public function createOrderIssue(Request $request)
|
|
|
- {
|
|
|
- $orderService = app('orderService');
|
|
|
- $this->validatorCreate($request)->validate();
|
|
|
- $oracleOrderNo = $request->input('order_id');
|
|
|
- $logistic_number = $request->input('logistic_number');
|
|
|
- $order = $orderService->creted($oracleOrderNo);
|
|
|
- $this->create($request);
|
|
|
- }*/
|
|
|
+ /* public function createOrderIssue(Request $request)
|
|
|
+ {
|
|
|
+ $orderService = app('orderService');
|
|
|
+ $this->validatorCreate($request)->validate();
|
|
|
+ $oracleOrderNo = $request->input('order_id');
|
|
|
+ $logistic_number = $request->input('logistic_number');
|
|
|
+ $order = $orderService->creted($oracleOrderNo);
|
|
|
+ $this->create($request);
|
|
|
+ }*/
|
|
|
|
|
|
public function validatorCreate(Request $request)
|
|
|
{
|
|
|
return Validator::make($request->input(), [
|
|
|
'rejected_bill_id' => ['nullable'],
|
|
|
'order_id' => ['nullable'],
|
|
|
+ 'owner_id'=>['required'],
|
|
|
'second_order_id' => ['nullable'],
|
|
|
'logistic_id' => ['nullable'],
|
|
|
'order_issue_type_id' => ['required'],
|
|
|
@@ -167,7 +190,7 @@ class OrderIssueService
|
|
|
'unique' => ':attribute 已存在',
|
|
|
'numeric' => ':attribute 为数组',
|
|
|
], [
|
|
|
-
|
|
|
+ 'owner_id'=>'货主',
|
|
|
'rejected_bill_id' => '退回单号',
|
|
|
'order_id' => '订单ID',
|
|
|
'second_order_id' => '退回订单id',
|
|
|
@@ -183,27 +206,31 @@ class OrderIssueService
|
|
|
public function create(Request $request)
|
|
|
{
|
|
|
$orderIssue = OrderIssue::create($request->all());
|
|
|
- if ($request->filled('rejected_bill_id')) {
|
|
|
-
|
|
|
- } else {
|
|
|
+ if (!$request->has('order_id')) {
|
|
|
+ $order = Order::create($request->all());
|
|
|
+ $orderIssue->order_id = $order['id'];
|
|
|
+ $orderIssue->save();
|
|
|
+ }
|
|
|
+ if (!$request->filled('rejected_bill_id')) {
|
|
|
$orderIssue->update(['rejecting_status' => '无']);
|
|
|
+ } else {
|
|
|
+ $this->judgeRejectingStatus($orderIssue);
|
|
|
}
|
|
|
- $this->judgeRejectingStatus($orderIssue);
|
|
|
return $orderIssue;
|
|
|
}
|
|
|
|
|
|
public function judgeRejectingStatus(OrderIssue $orderIssue)
|
|
|
{
|
|
|
+ $orderPackageCommoditiesService = new OrderPackageCommoditiesService();
|
|
|
$rejectedItems = [];
|
|
|
$orderItems = [];
|
|
|
- $orderPackageCommoditiesService = app('orderPackageCommoditiesService');
|
|
|
if ($orderIssue->rejected_bill_id) {
|
|
|
$rejectedBill = RejectedBill::find($orderIssue->rejected_bill_id)->first();
|
|
|
$rejectedBillItems = RejectedBillItem::where('id_rejected_bill', $rejectedBill->id)->get();
|
|
|
if ($rejectedBillItems) {
|
|
|
foreach ($rejectedBillItems as $item) {
|
|
|
- if(!isset($rejectedItems[$item->barcode_goods])){
|
|
|
- $rejectedItems[$item->barcode_goods] =0;
|
|
|
+ if (!isset($rejectedItems[$item->barcode_goods])) {
|
|
|
+ $rejectedItems[$item->barcode_goods] = 0;
|
|
|
}
|
|
|
$rejectedItems[$item->barcode_goods] = $item->amount + $rejectedItems[$item->barcode_goods] ?? 0;
|
|
|
}
|
|
|
@@ -217,13 +244,13 @@ class OrderIssueService
|
|
|
$orderPackageCommodities = $orderPackageCommoditiesService->getOrderPackageCommoditiesByOrderId($orderIssue->order_id);
|
|
|
if ($orderPackageCommodities) {
|
|
|
foreach ($orderPackageCommodities as $key => $item) {
|
|
|
- if (!isset($orderItems[$item->sku])) {
|
|
|
- $orderItems[$item->sku] = 0;
|
|
|
+ if (!isset($orderItems[$item->commodity->sku])) {
|
|
|
+ Arr::add($orderItems, $item->commodity->sku, 0);
|
|
|
}
|
|
|
- $orderItems[$item->sku] = $orderItems[$item->sku] ?? 0 + $item->amount;
|
|
|
+ $orderItems[$item->commodity->sku] = $orderItems[$item->commodity->sku] ?? 0 + $item->amount;
|
|
|
}
|
|
|
} else {
|
|
|
- $orderIssue->update(['rejecting' => '未退回']);
|
|
|
+ $orderIssue->update(['rejecting_status' => '未退回']);
|
|
|
$orderIssue->save();
|
|
|
return;
|
|
|
}
|
|
|
@@ -241,7 +268,7 @@ class OrderIssueService
|
|
|
}
|
|
|
}
|
|
|
if ($rejectedExcess > 0) {
|
|
|
- $orderIssue->update(['rejecting' => '差异退回']);
|
|
|
+ $orderIssue->update(['rejecting_status' => '差异退回']);
|
|
|
$orderIssue->save();
|
|
|
return;
|
|
|
}
|
|
|
@@ -263,15 +290,15 @@ class OrderIssueService
|
|
|
}
|
|
|
}
|
|
|
if ($isAccord == $rejectedReview) {
|
|
|
- $orderIssue->update(['rejecting' => '全部退回']);
|
|
|
+ $orderIssue->update(['rejecting_status' => '全部退回']);
|
|
|
$orderIssue->save();
|
|
|
return;
|
|
|
} else if ($isDiff > 0 and $isLack >= 0) {
|
|
|
- $orderIssue->update(['rejecting' => '部分退回']);
|
|
|
+ $orderIssue->update(['rejecting_status' => '部分退回']);
|
|
|
$orderIssue->save();
|
|
|
return;
|
|
|
} else if ($isExcess > 0 and $isDiff == 0) {
|
|
|
- $orderIssue->update(['rejecting' => '超量退回']);
|
|
|
+ $orderIssue->update(['rejecting_status' => '超量退回']);
|
|
|
$orderIssue->save();
|
|
|
return;
|
|
|
}
|
|
|
@@ -280,11 +307,12 @@ class OrderIssueService
|
|
|
public function createByLogisticNumber(Request $request)
|
|
|
{
|
|
|
$orderService = app('orderService');
|
|
|
- if (!$request->has('logistic_number')) {
|
|
|
- return null;
|
|
|
- }
|
|
|
- $order = $orderService->create($request->fill());
|
|
|
- return OrderPackage::create(['order_id' => $order->id, 'logistic_number' => $request->input('logistic_number')]);
|
|
|
+ $order = Order::create($request->all());
|
|
|
+ $orderIssue = OrderIssue::create($request->all());
|
|
|
+ $orderIssue->order_id = $order['id'];
|
|
|
+ OrderPackage::create(['order_id' => $order->id, 'logistic_number' => $request->input('logistic_number_return')]);
|
|
|
+ $orderIssue->update();
|
|
|
+ return $orderIssue;
|
|
|
}
|
|
|
|
|
|
public function verifyOrderIssue(Request $request)
|
|
|
@@ -344,21 +372,21 @@ class OrderIssueService
|
|
|
return $meg['success'] = true;
|
|
|
}*/
|
|
|
|
|
|
- public function getOrderHead(Request $request)
|
|
|
- {
|
|
|
- $data = ['orderHeader' => null, 'orderDetails' => null, 'rejectedBill' => null];
|
|
|
- $logisticNumberReturn = $request->input('logisticNumberReturn');
|
|
|
- $ASNOrderHeaders = OracleDOCASNHeader::where('ASNReference3', $logisticNumberReturn)->get();
|
|
|
- if (count($ASNOrderHeaders) == 0) {
|
|
|
- return $data;
|
|
|
- }
|
|
|
- $orderHeader = OracleDOCOrderHeader::where('SOReference1', $ASNOrderHeaders->asnreference3)->get();
|
|
|
- $data['orderHeader'] = $orderHeader;
|
|
|
- $orderDetails = OracleDOCASNDetail::with(['sku'])->where('OrderNo', $orderHeader)->get();
|
|
|
- $data['orderDetails'] = $orderDetails;
|
|
|
-
|
|
|
- return $data;
|
|
|
- }
|
|
|
+// public function getOrderHead(Request $request)
|
|
|
+// {
|
|
|
+// $data = ['orderHeader' => null, 'orderDetails' => null, 'rejectedBill' => null];
|
|
|
+// $logisticNumberReturn = $request->input('logisticNumberReturn');
|
|
|
+// $ASNOrderHeaders = OracleDOCASNHeader::where('ASNReference3', $logisticNumberReturn)->get();
|
|
|
+// if (count($ASNOrderHeaders) == 0) {
|
|
|
+// return $data;
|
|
|
+// }
|
|
|
+// $orderHeader = OracleDOCOrderHeader::where('SOReference1', $ASNOrderHeaders->asnreference3)->get();
|
|
|
+// $data['orderHeader'] = $orderHeader;
|
|
|
+// $orderDetails = OracleDOCASNDetail::with(['sku'])->where('OrderNo', $orderHeader)->get();
|
|
|
+// $data['orderDetails'] = $orderDetails;
|
|
|
+//
|
|
|
+// return $data;
|
|
|
+// }
|
|
|
|
|
|
public function getReturnLogisticInfo(Request $request)
|
|
|
{
|
|
|
@@ -390,16 +418,17 @@ class OrderIssueService
|
|
|
} else if ($request->getMethod() == 'POST') {
|
|
|
// 选中
|
|
|
$orderIssueIds = $request->input('data');
|
|
|
- $ids= explode(',',$orderIssueIds);
|
|
|
+ $ids = explode(',', $orderIssueIds);
|
|
|
$result = $this->getConditionQuery($request, ['order_issue_ids' => $ids])->get();
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
- public function paddingData(array $row,array $rowData){
|
|
|
- foreach ($rowData as $key=>$value){
|
|
|
- foreach ($row as $rowKey){
|
|
|
- if(!isset($value[$rowKey])){
|
|
|
+ public function paddingData(array $row, array $rowData)
|
|
|
+ {
|
|
|
+ foreach ($rowData as $key => $value) {
|
|
|
+ foreach ($row as $rowKey) {
|
|
|
+ if (!isset($value[$rowKey])) {
|
|
|
$value[$rowKey] = '';
|
|
|
}
|
|
|
}
|