where('orderNo', $orderNo)->get(); $orderPackageCommodities = OrderPackageCommodities::query()->where('order_package_id',$orderPackage['id'])->get(); $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qtyordered'); } public function basedOnActAllocationDetailsStoreByOrderNo($orderNo,$orderPackage){ $details = OracleActAllocationDetails::query()->where('orderno', $orderNo)->get(); $orderPackageCommodities = OrderPackageCommodities::query()->where('order_package_id',$orderPackage['id'])->get(); $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qty'); } public function 根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,$key){ $newItems = []; foreach ($details as $detail) { $owner = Owner::query()->where(['code' => $detail['customerid']])->first(); // 货主 $sku = $detail->sku; // sku $owner_id = $owner->id; // 货主id $commodity = Commodity::query()->where(['sku' => $sku, 'owner_id' => $owner_id])->first(); // 商品 if ($commodity == null) { $basSku = OracleBasSKU::query()->where(['sku' => $sku, 'customerid' => $detail->customerid])->first(); // 没有找到对应的商品信息 $commodity = Commodity::query()->create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]); } $data = ['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail[$key]]; array_push($newItems,$data); } $diffarr = []; foreach ($newItems as $newItem) { $packageCommodity = $orderPackageCommodities->where('order_package_id',$newItem['order_package_id'])->where('commodity_id',$newItem['commodity_id'])->first(); if($packageCommodity!=null){ if($packageCommodity['amount'] != $newItem['amount']){ $packageCommodity->update(['amount'=>intval($newItem['amount'])]); } $orderPackageCommodities = $orderPackageCommodities->filter(function ($item) use ($packageCommodity){ if($item['id'] == $packageCommodity['id']){ return false; } return true; }); array_push($diffarr,$newItem); } } if($orderPackageCommodities->count() > 0){ foreach ($orderPackageCommodities as $orderPackageCommodity) { $id = $orderPackageCommodity['id']; OrderPackageCommodities::destroy($id); } } $newItems = array_filter($newItems,function($newItem) use ($diffarr){ foreach ($diffarr as $item) { if($item['order_package_id'] == $newItem['order_package_id'] && $item['commodity_id'] == $newItem['commodity_id'] && $item['amount'] == $newItem['amount']){ return false; } } return true; }); try { if(count($newItems) > 0 ){ OrderPackageCommodities::query()->insert($newItems); LogService::log(__METHOD__,__FUNCTION__,'添加包裹商品信息'.json_encode($newItems)); } } catch (\Exception $e) { LogService::log(__METHOD__,__FUNCTION__,'添加包裹商品信息异常'.json_encode($newItems).$e->getMessage(),$e->getTraceAsString()); } } // public function 根据订单详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details){ // $newItems = []; //// ['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty']] // foreach ($details as $detail) { // $owner = Owner::query()->where(['code' => $detail['customerid']])->first(); // 货主 // $sku = $detail->sku; // sku // $owner_id = $owner->id; // 货主id // $commodity = Commodity::query()->where(['sku' => $sku, 'owner_id' => $owner_id])->first(); // 商品 // if ($commodity == null) { // $basSku = OracleBasSKU::query()->where(['sku' => $sku, 'customerid' => $detail->customerid])->first(); // 没有找到对应的商品信息 // $commodity = Commodity::query()->create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]); // } // $data = ['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty']]; // array_push($newItems,$data); // } // $diffarr = []; // foreach ($newItems as $newItem) { // $packageCommodity = $orderPackageCommodities->where('sku',$newItem['sku'])->where('customerid',$newItem['customerid'])->first(); // if($packageCommodity!=null){ // if($packageCommodity['amount'] != $newItem['amount']){ // $packageCommodity->update($packageCommodity,$newItem['amount']); // } // array_push($diffarr,$newItem); // } // } // // $newItems = array_diff($newItems,$diffarr); // // try { // if(count($newItems) > 0 ){ // OrderPackageCommodities::query()->create($newItems); // LogService::log(__METHOD__,__FUNCTION__,'添加包裹商品信息'.json_encode($newItems)); // } // } catch (\Exception $e) { // LogService::log(__METHOD__,__FUNCTION__,'添加包裹商品信息异常'.json_encode($newItems).$e->getMessage(),$e->getTraceAsString()); // } // // } // // public function 根据分配详情更新更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details){ //// ['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qtyordered']] // $newItems = []; // foreach ($details as $detail) { // $owner = Owner::query()->where(['code' => $detail['customerid']])->first(); // 货主 // $sku = $detail->sku; // sku // $owner_id = $owner->id; // 货主id // $commodity = Commodity::query()->where(['sku' => $sku, 'owner_id' => $owner_id])->first(); // 商品 // if ($commodity == null) { // $basSku = OracleBasSKU::query()->where(['sku' => $sku, 'customerid' => $detail->customerid])->first(); // 没有找到对应的商品信息 // $commodity = Commodity::query()->create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]); // } // $data = ['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qtyordered']]; // array_push($newItems,$data); // } // $diffarr = []; // foreach ($newItems as $newItem) { // $packageCommodity = $orderPackageCommodities->where('sku',$newItem['sku'])->where('customerid',$newItem['customerid'])->first(); // if($packageCommodity!=null){ // if($packageCommodity['amount'] != $newItem['amount']){ // $packageCommodity->update($packageCommodity,$newItem['amount']); // } // array_push($diffarr,$newItem); // } // } // $newItems = array_diff($newItems,$diffarr); // try { // if(count($newItems) > 0 ){ // OrderPackageCommodities::query()->create($newItems); // LogService::log(__METHOD__,__FUNCTION__,'添加包裹商品信息'.json_encode($newItems)); // } // } catch (\Exception $e) { // LogService::log(__METHOD__,__FUNCTION__,'添加包裹商品信息异常'.json_encode($newItems).$e->getMessage(),$e->getTraceAsString()); // } // // } public function basedOnActAllocationDetailsStore($orderPackage) { $details = OracleActAllocationDetails::query()->where('picktotraceid', $orderPackage->logistic_number)->get(); $orderPackageCommodities = OrderPackageCommodities::query()->where('order_package_id',$orderPackage['id'])->get(); $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qty'); } public function basedOnActAllocationDetail(Order $order,OracleDOCOrderHeader $header,array $details){ foreach ($details as $detail){ $logistic_number = $details['picktotraceid']; if($logistic_number == '*' || $logistic_number== null || $logistic_number== ''){ $logistic_number = $header['soreference5']; if($logistic_number == '*' || $logistic_number== null || $logistic_number== ''){ continue; } } $orderPackage = OrderPackage::query()->firstOrCreate(['order_id'=>$order['id'],'logistic_number',$details]); $this->createByActAllocationDetail($detail, $orderPackage); } } private function createByActAllocationDetail($detail,$orderPackage) { $owner = Owner::query()->where(['code' => $detail->customerid])->first(); // 货主 $sku = $detail->sku; $owner_id = $owner['id']; $commodity = Commodity::query()->where(['sku' => $sku, 'owner_id' => $owner_id])->first(); if ($commodity == null) { $basSku = OracleBasSKU::query()->where(['sku' => $sku, 'customerid' => $detail->customerid])->first(); $commodity = Commodity::query()->create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]); } try { $count = OrderPackageCommodities::query()->where(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty']])->count(); if($count == 0){ $orderPackageCommodities = OrderPackageCommodities::query()->firstOrCreate(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty']]); LogService::log(__METHOD__,__FUNCTION__,'创建订单包裹详情'.json_encode($orderPackageCommodities)); } } catch (\Exception $e) { LogService::log(__METHOD__,__FUNCTION__,'创建订单包裹失败'.$e->getMessage().$e->getTraceAsString()); } finally { return $orderPackageCommodities ?? null; } } public function getOrderPackageCommoditiesByOrderId($orderId) { $order = Order::query()->where('id', $orderId)->first(); if (!$order) { return null; } $orderPackageIds = OrderPackage::query()->select('id')->where('order_id', $order['id'])->get(); if (!$orderPackageIds) { return null; } return OrderPackageCommodities::query()->with('commodity')->whereIn('order_package_id', $orderPackageIds)->get(); } public function createByOrderDetail(OracleDOCOrderDetail $detail, OrderPackage $orderPackage) { $owner = Owner::query()->where(['code' => $detail['customerid']])->first(); // 货主 $sku = $detail->sku; // sku $owner_id = $owner->id; // 货主id $commodity = Commodity::query()->where(['sku' => $sku, 'owner_id' => $owner_id])->first(); // 商品 if ($commodity == null) { $basSku = OracleBasSKU::query()->where(['sku' => $sku, 'customerid' => $detail->customerid])->first(); // 没有找到对应的商品信息 $commodity = Commodity::query()->create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]); } try { $count = OrderPackageCommodities::query()->where('order_package_id',$orderPackage['id'])->where('commodity_id',$commodity['id'])->where('amount' , $detail['qtyordered'])->count(); if($count == 0){ $orderPackageCommodities = OrderPackageCommodities::query()->first(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qtyordered']]); LogService::log(__METHOD__,__FUNCTION__,'创建顶订单包裹详情'.json_encode($orderPackageCommodities)); } } catch (\Exception $e) { LogService::log(__METHOD__,__FUNCTION__,'创建顶订单包裹详情'.$e->getMessage().$e->getTraceAsString()); } finally { return $orderPackageCommodities ?? null; } } }