Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.14 KB | None | 0 0
  1. public function sendOrderPositions($supplierOrder)
  2.     {
  3.         if (!ArrayHelper::getValue(\Yii::$app->params, 'supplierOrder.isUseMegaWs')) {
  4.             return false;
  5.         }
  6.  
  7.         try {
  8.             if (!$this->clearBasket()) {
  9.                 return false;
  10.             }
  11.  
  12.             $positions = SupplierOrderPosition::getPositionsForWsOrder($supplierOrder->id);
  13.  
  14.             $positions = $this->pricingBeforeOrder($positions);
  15.  
  16.             $basketPositions = [];
  17.             foreach ($positions as $pos) {
  18.                 $priceLogo = supplier\Mega::getPriceTypeCode($pos['priceTypeDeliveryCode']);
  19.                 $deliveryLogo = supplier\Mega::getDeliveryCode($pos['priceTypeDeliveryCode'], $pos['brandId'], $pos['clientId']);
  20.                 $maxAgree = ClientProfitLevel::getProfitForMegaOrder($pos['clientId'], $pos['profitLevelId']);
  21.                 $customerSubId = MathHelper::addControlDigit($pos['id']);
  22.                 $reference = supplier\Mega::getReference($pos['id'], $pos['clientId'], $pos['stickerText']);
  23.  
  24.                 $basketPositions[] = $this->getItemFormatInsertPartToBasket(
  25.                     $pos['brandName'],
  26.                     $pos['code'],
  27.                     $pos['askedCount'],
  28.                     $pos['price'],
  29.                     $maxAgree,
  30.                     $priceLogo,
  31.                     $deliveryLogo,
  32.                     $customerSubId,
  33.                     $reference
  34.                 );
  35.             }
  36.  
  37.             if (!$this->insertPartToBasket($basketPositions)) {
  38.                 $this->clearBasket();
  39.  
  40.                 return false;
  41.             }
  42.  
  43.             $parts = $this->getBasketDetails();
  44.  
  45.             if (!$parts || count($parts) != count($positions)) {
  46.                 $this->clearBasket();
  47.  
  48.                 return false;
  49.             }
  50.  
  51.             $res = $this->query(['functionName' => 'CreateOrder']);
  52.             if ($res) {
  53.                 if (isset($res->CreateOrderResult) && $res->CreateOrderResult > 0) {
  54.                     $supplierOrder->number = $res->CreateOrderResult;
  55.                     $supplierOrder->save(false);
  56.  
  57.                     $this->refuseNotOrderedPositions($supplierOrder);
  58.  
  59.                     return true;
  60.                 }
  61.             }
  62.             $this->clearBasket();
  63.         } catch (\SoapFault $exception) {
  64.             $message = 'Emex Order (ID:' . $supplierOrder->id . ') sending error: ' . $exception->getMessage();
  65.             \Yii::$app->getLog()->getLogger()->log($message, Logger::LEVEL_ERROR);
  66.             try {
  67.                 $this->clearBasket();
  68.             } catch (\SoapFault $exception) {
  69.             }
  70.  
  71.             return false;
  72.         } catch (\Exception $exception) {
  73.             $message = 'Emex Order (ID:' . $supplierOrder->id . ') sending error: ' . $exception->getMessage();
  74.             \Yii::$app->getLog()->getLogger()->log($message, Logger::LEVEL_ERROR);
  75.             try {
  76.                 $this->clearBasket();
  77.             } catch (\SoapFault $exception) {
  78.             }
  79.  
  80.             return false;
  81.         }
  82.  
  83.         return false;
  84.     }
  85.  
  86. public function getItemFormatInsertPartToBasket($brandCode, $code, $count, $price, $maxAgree, $priceLogo,
  87.                                                     $deliveryLogo, $customerSubId, $reference
  88.     )
  89.     {
  90.         return [
  91.             'BasketId'        => '',
  92.             'CustomerSubId'   => $customerSubId,
  93.             'UploadedPrice'   => $price,
  94.             'CoeffMaxAgree'   => $maxAgree,
  95.             'Confirm'         => 1,
  96.             'Delete'          => 0,
  97.             'DetailNum'       => $code,
  98.             'MakeLogo'        => $brandCode,
  99.             'Quantity'        => $count,
  100.             'PriceLogo'       => $priceLogo,
  101.             'DestinationLogo' => $deliveryLogo,
  102.             'OnlyThisBrand'   => true,
  103.             'bitOnly'         => true,
  104.             'bitQuantity'     => false,
  105.             'bitWait'         => false,
  106.             'bitAgree'        => false,
  107.             'Reference'       => $reference,
  108.             'TransportPack'   => '',
  109.             'DetailWeight'    => '0.00',
  110.             'EmExWeight'      => '0.00'
  111.         ];
  112.     }
  113.  
  114. public function insertPartToBasket($parts)
  115.     {
  116.         $request = $this->query(['functionName' => 'InsertPartToBasket', 'functionParams' => ['Array' => $parts]]);
  117.  
  118.         if ($request) {
  119.             if ($request->InsertPartToBasketResult == count($parts)) {
  120.                 return true;
  121.             } else {
  122.                 return false;
  123.             }
  124.         }
  125.  
  126.         return false;
  127.     }
  128.  
  129. public function createSoapClient()
  130.     {
  131.         ini_set('soap.wsdl_cache_enabled', 'Off');
  132.         $client = new \SoapClient(self::$wsdl, ['trace' => 1]);
  133.  
  134.         return $client;
  135.     }
  136.  
  137. public function query($params, $client = null)
  138.     {
  139.         if (!$client) {
  140.             $client = $this->createSoapClient();
  141.         }
  142.  
  143.         $function = $params['functionName'];
  144.         $params = ArrayHelper::getValue($params, 'functionParams', []);
  145.         $params['Customer'] = $this->getConnectionData();
  146.  
  147.         $data = $client->$function($params);
  148.  
  149.         return $data;
  150.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement