| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- namespace App\Services;
- use App\Commodity;
- use App\OracleActAllocationDetails;
- use App\OracleBasSKU;
- use App\OracleDOCOrderDetail;
- use App\OracleDOCOrderHeader;
- use App\Order;
- use App\OrderPackage;
- use App\OrderPackageCommodities;
- use App\Owner;
- use Illuminate\Support\Arr;
- class OrderPackageCommoditiesService
- {
- public function basedOnOracleDetailsStore($orderNo, $orderPackage)
- {
- $details = OracleDOCOrderDetail::where('orderNo', $orderNo)->get();
- foreach ($details as $key => $detail) {
- $this->createByOrderDetail($detail, $orderPackage);
- }
- }
- public function basedOnActAllocationDetailsStoreByOrderNo($orderNo,$orderPackage){
- $details = OracleActAllocationDetails::where('orderno', $orderNo)->get();
- foreach ($details as $key => $detail) {
- $this->createByActAllocationDetail($detail, $orderPackage);
- }
- }
- public function basedOnActAllocationDetailsStore($orderPackage)
- {
- $details = OracleActAllocationDetails::where('picktotraceid', $orderPackage->logistic_number)->get();
- foreach ($details as $key => $detail) {
- $this->createByActAllocationDetail($detail, $orderPackage);
- }
- }
- 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::firstOrCreate(['order_id'=>$order['id'],'logistic_number',$details]);
- $this->createByActAllocationDetail($detail, $orderPackage);
- }
- }
- private function createByActAllocationDetail($detail, OrderPackage $orderPackage)
- {
- $owner = Owner::where(['code' => $detail->customerid])->first(); // 货主
- $sku = $detail->sku;
- $owner_id = $owner['id'];
- $commodity = Commodity::where(['sku' => $sku, 'owner_id' => $owner_id])->first();
- if ($commodity == null) {
- $basSku = OracleBasSKU::where(['sku' => $sku, 'customerid' => $detail->customerid])->first();
- $commodity = Commodity::create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]);
- }
- return OrderPackageCommodities::create(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty']]);
- }
- public function getOrderPackageCommoditiesByOrderId($orderId)
- {
- $order = Order::where('id', $orderId)->first();
- if (!$order) {
- return null;
- }
- $orderPackageIds = OrderPackage::select('id')->where('order_id', $order['id'])->get();
- if (!$orderPackageIds) {
- return null;
- }
- return OrderPackageCommodities::with('commodity')->whereIn('order_package_id', $orderPackageIds)->get();
- }
- public function createByOrderDetail(OracleDOCOrderDetail $detail, OrderPackage $orderPackage)
- {
- $owner = Owner::where(['code' => $detail['customerid']])->first(); // 货主
- $sku = $detail->sku; // sku
- $owner_id = $owner->id; // 货主id
- $commodity = Commodity::where(['sku' => $sku, 'owner_id' => $owner_id])->first(); // 商品
- if ($commodity == null) {
- $basSku = OracleBasSKU::where(['sku' => $sku, 'customerid' => $detail->customerid])->first(); // 没有找到对应的商品信息
- $commodity = Commodity::create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]);
- }
- return OrderPackageCommodities::create(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qtyordered']]);
- }
- }
|