/** * Returns the method of payment id * * @throws PlentymarketsExportEntityException if there is no mapping */ protected function getMethodOfPaymentId() { // Sub-objects $Payment = $this->Order->getPayment(); // Payment if ($Payment) { try { return PlentymarketsMappingController::getMethodOfPaymentByShopwareID($Payment->getId()); } catch (PlentymarketsMappingExceptionNotExistant $E) { $shopgateIds = explode('|', PyConf()->get('OrderShopgateMOPIDs', '')); if (in_array($Payment->getId(), $shopgateIds)) { return MOP_SHOPGATE; } } } // Save the error $this->setError(self::CODE_ERROR_MOP); // Exit throw new PlentymarketsExportEntityException('The order with the number »' . $this->Order->getNumber() . '« could not be exported (no mapping for method of payment)', 4030); }
/** * @param \Shopware\Models\Order\Order $orderModel * @return array */ private function prepareOrderConfirmationMailData($orderModel) { $billingAddress = Shopware()->Db()->fetchRow('SELECT *, userID AS customerBillingId FROM s_order_billingaddress WHERE orderID = ?', [$orderModel->getId()]); $billingAddressAttributes = Shopware()->Db()->fetchRow('SELECT * FROM s_order_billingaddress_attributes WHERE billingID = ?', [$billingAddress['id']]); if (!empty($billingAddressAttributes)) { $billingAddress = array_merge($billingAddress, $billingAddressAttributes); } /** @var \Shopware_Components_CreateBackendOrder $createBackendOrder */ $createBackendOrder = Shopware()->CreateBackendOrder(); if ($createBackendOrder->getEqualBillingAddress()) { $shippingAddress = $billingAddress; } else { $shippingAddress = Shopware()->Db()->fetchRow('SELECT *, userID AS customerBillingId FROM s_order_shippingaddress WHERE orderID = ?', [$orderModel->getId()]); $shippingAddressAttributes = Shopware()->Db()->fetchRow('SELECT * FROM s_order_shippingaddress_attributes WHERE shippingID = ?', [$shippingAddress['id']]); if (!empty($shippingAddressAttributes)) { $shippingAddress = array_merge($shippingAddress, $shippingAddressAttributes); } } $context['billingaddress'] = $billingAddress; $context['shippingaddress'] = $shippingAddress; $context['sOrderNumber'] = $orderModel->getNumber(); $currency = $orderModel->getCurrency(); $context['sCurrency'] = $currency; $context['sAmount'] = $orderModel->getInvoiceAmount() . ' ' . $currency; $context['sAmountNet'] = $orderModel->getInvoiceAmountNet() . ' ' . $currency; $context['sShippingCosts'] = $orderModel->getInvoiceShipping() . ' ' . $currency; $orderTime = $orderModel->getOrderTime(); $context['sOrderDay'] = $orderTime->format('d.m.Y'); $context['sOrderTime'] = $orderTime->format('H:i'); $context['sComment'] = ''; $context['sLanguage'] = $orderModel->getLanguageSubShop()->getId(); $context['sSubShop'] = $orderModel->getShop()->getId(); $orderAttributes = Shopware()->Db()->fetchRow('SELECT * FROM s_order_attributes WHERE orderID = ?', [$orderModel->getId()]); $context['attributes'] = $orderAttributes; $dispatch = Shopware()->Db()->fetchRow('SELECT * FROM s_premium_dispatch WHERE id = ?', [$orderModel->getDispatch()->getId()]); $dispatch = $this->translateDispatch($dispatch, $orderModel->getLanguageSubShop()->getId()); $context['sDispatch'] = $dispatch; $user = Shopware()->Db()->fetchRow('SELECT * FROM s_user WHERE id = ?', [$orderModel->getCustomer()->getId()]); $context['additional']['user'] = $user; $country = Shopware()->Db()->fetchRow('SELECT * FROM s_core_countries WHERE id = ?', [$orderModel->getBilling()->getCountry()->getId()]); $context['additional']['country'] = $country; $context['additional']['state'] = []; if ($orderModel->getBilling()->getState()) { $state = Shopware()->Db()->fetchRow('SELECT * FROM s_core_countries_states WHERE id = ?', [$orderModel->getBilling()->getState()->getId()]); $context['additional']['state'] = $state; } $country = Shopware()->Db()->fetchRow('SELECT * FROM s_core_countries WHERE id = ?', [$orderModel->getShipping()->getCountry()->getId()]); $context['additional']['countryShipping'] = $country; $context['additional']['stateShipping'] = []; if ($orderModel->getShipping()->getState()) { $state = Shopware()->Db()->fetchRow('SELECT * FROM s_core_countries_states WHERE id = ?', [$orderModel->getShipping()->getState()->getId()]); $context['additional']['stateShipping'] = $state; } $payment = Shopware()->Db()->fetchRow('SELECT * FROM s_core_paymentmeans WHERE id = ?', [$orderModel->getPayment()->getId()]); $payment = $this->translatePayment($payment, $orderModel->getLanguageSubShop()->getId()); $context['additional']['payment'] = $payment; $context['sPaymentTable'] = []; if ($context['additional']['payment']['name'] === 'debit') { $paymentTable = Shopware()->Db()->fetchRow('SELECT * FROM s_core_payment_data WHERE user_id = ?', [$orderModel->getCustomer()->getId()]); $context['sPaymentTable'] = $paymentTable; } $context['additional']['show_net'] = $orderModel->getNet(); $context['additional']['charge_var'] = 1; return $context; }
/** * @param \Shopware\Models\Order\Order $orderModel * @return \Shopware\Models\Payment\PaymentInstance */ private function preparePaymentInstance(\Shopware\Models\Order\Order $orderModel) { $paymentId = $orderModel->getPayment()->getId(); $customerId = $orderModel->getCustomer()->getId(); $paymentInstanceModel = new Shopware\Models\Payment\PaymentInstance(); /** @var Shopware\Models\Customer\PaymentData[] $paymentDataModel */ $paymentDataModel = $this->getCustomerPaymentData($customerId, $paymentId); if ($paymentDataModel[0] instanceof Shopware\Models\Customer\PaymentData) { /** @var Shopware\Models\Customer\PaymentData $paymentDataModel */ $paymentDataModel = $paymentDataModel[0]; $paymentInstanceModel->setBankName($paymentDataModel->getBankName()); $paymentInstanceModel->setBankCode($paymentDataModel->getBankCode()); $paymentInstanceModel->setAccountHolder($paymentDataModel->getAccountHolder()); $paymentInstanceModel->setIban($paymentDataModel->getIban()); $paymentInstanceModel->setBic($paymentDataModel->getBic()); $paymentInstanceModel->setBankCode($paymentDataModel->getBankCode()); $paymentInstanceModel->setAccountNumber($paymentDataModel->getAccountHolder()); } $paymentInstanceModel->setPaymentMean($orderModel->getPayment()); $paymentInstanceModel->setOrder($orderModel); $paymentInstanceModel->setCreatedAt($orderModel->getOrderTime()); $paymentInstanceModel->setCustomer($orderModel->getCustomer()); $paymentInstanceModel->setFirstName($orderModel->getBilling()->getFirstName()); $paymentInstanceModel->setLastName($orderModel->getBilling()->getLastName()); $paymentInstanceModel->setAddress($orderModel->getBilling()->getStreet()); $paymentInstanceModel->setZipCode($orderModel->getBilling()->getZipCode()); $paymentInstanceModel->setCity($orderModel->getBilling()->getCity()); $paymentInstanceModel->setAmount($orderModel->getInvoiceAmount()); return $paymentInstanceModel; }