Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function sendOrderPositions($supplierOrder)
- {
- if (!ArrayHelper::getValue(\Yii::$app->params, 'supplierOrder.isUseMegaWs')) {
- return false;
- }
- try {
- if (!$this->clearBasket()) {
- return false;
- }
- $positions = SupplierOrderPosition::getPositionsForWsOrder($supplierOrder->id);
- $positions = $this->pricingBeforeOrder($positions);
- $basketPositions = [];
- foreach ($positions as $pos) {
- $priceLogo = supplier\Mega::getPriceTypeCode($pos['priceTypeDeliveryCode']);
- $deliveryLogo = supplier\Mega::getDeliveryCode($pos['priceTypeDeliveryCode'], $pos['brandId'], $pos['clientId']);
- $maxAgree = ClientProfitLevel::getProfitForMegaOrder($pos['clientId'], $pos['profitLevelId']);
- $customerSubId = MathHelper::addControlDigit($pos['id']);
- $reference = supplier\Mega::getReference($pos['id'], $pos['clientId'], $pos['stickerText']);
- $basketPositions[] = $this->getItemFormatInsertPartToBasket(
- $pos['brandName'],
- $pos['code'],
- $pos['askedCount'],
- $pos['price'],
- $maxAgree,
- $priceLogo,
- $deliveryLogo,
- $customerSubId,
- $reference
- );
- }
- if (!$this->insertPartToBasket($basketPositions)) {
- $this->clearBasket();
- return false;
- }
- $parts = $this->getBasketDetails();
- if (!$parts || count($parts) != count($positions)) {
- $this->clearBasket();
- return false;
- }
- $res = $this->query(['functionName' => 'CreateOrder']);
- if ($res) {
- if (isset($res->CreateOrderResult) && $res->CreateOrderResult > 0) {
- $supplierOrder->number = $res->CreateOrderResult;
- $supplierOrder->save(false);
- $this->refuseNotOrderedPositions($supplierOrder);
- return true;
- }
- }
- $this->clearBasket();
- } catch (\SoapFault $exception) {
- $message = 'Emex Order (ID:' . $supplierOrder->id . ') sending error: ' . $exception->getMessage();
- \Yii::$app->getLog()->getLogger()->log($message, Logger::LEVEL_ERROR);
- try {
- $this->clearBasket();
- } catch (\SoapFault $exception) {
- }
- return false;
- } catch (\Exception $exception) {
- $message = 'Emex Order (ID:' . $supplierOrder->id . ') sending error: ' . $exception->getMessage();
- \Yii::$app->getLog()->getLogger()->log($message, Logger::LEVEL_ERROR);
- try {
- $this->clearBasket();
- } catch (\SoapFault $exception) {
- }
- return false;
- }
- return false;
- }
- public function getItemFormatInsertPartToBasket($brandCode, $code, $count, $price, $maxAgree, $priceLogo,
- $deliveryLogo, $customerSubId, $reference
- )
- {
- return [
- 'BasketId' => '',
- 'CustomerSubId' => $customerSubId,
- 'UploadedPrice' => $price,
- 'CoeffMaxAgree' => $maxAgree,
- 'Confirm' => 1,
- 'Delete' => 0,
- 'DetailNum' => $code,
- 'MakeLogo' => $brandCode,
- 'Quantity' => $count,
- 'PriceLogo' => $priceLogo,
- 'DestinationLogo' => $deliveryLogo,
- 'OnlyThisBrand' => true,
- 'bitOnly' => true,
- 'bitQuantity' => false,
- 'bitWait' => false,
- 'bitAgree' => false,
- 'Reference' => $reference,
- 'TransportPack' => '',
- 'DetailWeight' => '0.00',
- 'EmExWeight' => '0.00'
- ];
- }
- public function insertPartToBasket($parts)
- {
- $request = $this->query(['functionName' => 'InsertPartToBasket', 'functionParams' => ['Array' => $parts]]);
- if ($request) {
- if ($request->InsertPartToBasketResult == count($parts)) {
- return true;
- } else {
- return false;
- }
- }
- return false;
- }
- public function createSoapClient()
- {
- ini_set('soap.wsdl_cache_enabled', 'Off');
- $client = new \SoapClient(self::$wsdl, ['trace' => 1]);
- return $client;
- }
- public function query($params, $client = null)
- {
- if (!$client) {
- $client = $this->createSoapClient();
- }
- $function = $params['functionName'];
- $params = ArrayHelper::getValue($params, 'functionParams', []);
- $params['Customer'] = $this->getConnectionData();
- $data = $client->$function($params);
- return $data;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement