public function parseResults(LoopResult $loopResult) { $this->container->get('thelia.condition.factory'); if (null !== ($order = OrderQuery::create()->findPk($this->getOrder()))) { $oneDayInSeconds = 86400; /** @var \Thelia\Model\OrderCoupon $orderCoupon */ foreach ($loopResult->getResultDataCollection() as $orderCoupon) { $loopResultRow = new LoopResultRow($orderCoupon); $now = time(); $datediff = $orderCoupon->getExpirationDate()->getTimestamp() - $now; $daysLeftBeforeExpiration = floor($datediff / $oneDayInSeconds); $freeShippingForCountriesIds = []; /** @var OrderCouponCountry $couponCountry */ foreach ($orderCoupon->getFreeShippingForCountries() as $couponCountry) { $freeShippingForCountriesIds[] = $couponCountry->getCountryId(); } $freeShippingForModulesIds = []; /** @var OrderCouponModule $couponModule */ foreach ($orderCoupon->getFreeShippingForModules() as $couponModule) { $freeShippingForModulesIds[] = $couponModule->getModuleId(); } $loopResultRow->set("ID", $orderCoupon->getId())->set("CODE", $orderCoupon->getCode())->set("DISCOUNT_AMOUNT", $orderCoupon->getAmount())->set("TITLE", $orderCoupon->getTitle())->set("SHORT_DESCRIPTION", $orderCoupon->getShortDescription())->set("DESCRIPTION", $orderCoupon->getDescription())->set("EXPIRATION_DATE", $orderCoupon->getExpirationDate($order->getLangId()))->set("IS_CUMULATIVE", $orderCoupon->getIsCumulative())->set("IS_REMOVING_POSTAGE", $orderCoupon->getIsRemovingPostage())->set("IS_AVAILABLE_ON_SPECIAL_OFFERS", $orderCoupon->getIsAvailableOnSpecialOffers())->set("DAY_LEFT_BEFORE_EXPIRATION", $daysLeftBeforeExpiration)->set("FREE_SHIPPING_FOR_COUNTRIES_LIST", implode(',', $freeShippingForCountriesIds))->set("FREE_SHIPPING_FOR_MODULES_LIST", implode(',', $freeShippingForModulesIds))->set("PER_CUSTOMER_USAGE_COUNT", $orderCoupon->getPerCustomerUsageCount())->set("IS_USAGE_CANCELED", $orderCoupon->getUsageCanceled()); $this->addOutputFields($loopResultRow, $orderCoupon); $loopResult->addRow($loopResultRow); } } return $loopResult; }
public function current() { do { $order = parent::current(); $getNext = false; if ($this->rangeDate !== null && ($order[OrderTableMap::CREATED_AT] < $this->rangeDate['start'] || $order[OrderTableMap::CREATED_AT] > $this->rangeDate['end'])) { $this->next(); $getNext = true; } } while ($getNext && $this->valid()); $locale = $this->language->getLocale(); $query = OrderQuery::create()->useCurrencyQuery()->addAsColumn('currency_CODE', CurrencyTableMap::CODE)->endUse()->useCustomerQuery()->addAsColumn('customer_REF', CustomerTableMap::REF)->endUse()->useOrderProductQuery()->useOrderProductTaxQuery(null, Criteria::LEFT_JOIN)->addAsColumn('product_TAX', 'IF(' . OrderProductTableMap::WAS_IN_PROMO . ',' . 'SUM(' . OrderProductTaxTableMap::PROMO_AMOUNT . '),' . 'SUM(' . OrderProductTaxTableMap::AMOUNT . ')' . ')')->addAsColumn('tax_TITLE', OrderProductTableMap::TAX_RULE_TITLE)->endUse()->addAsColumn('product_TITLE', OrderProductTableMap::TITLE)->addAsColumn('product_PRICE', 'IF(' . OrderProductTableMap::WAS_IN_PROMO . ',' . OrderProductTableMap::PROMO_PRICE . ',' . OrderProductTableMap::PRICE . ')')->addAsColumn('product_QUANTITY', OrderProductTableMap::QUANTITY)->addAsColumn('product_WAS_IN_PROMO', OrderProductTableMap::WAS_IN_PROMO)->groupById()->endUse()->orderById()->groupById()->useOrderCouponQuery(null, Criteria::LEFT_JOIN)->addAsColumn('coupon_COUPONS', 'GROUP_CONCAT(' . OrderCouponTableMap::TITLE . ')')->groupBy(OrderCouponTableMap::ORDER_ID)->endUse()->useModuleRelatedByPaymentModuleIdQuery('payment_module')->addAsColumn('payment_module_TITLE', '`payment_module`.CODE')->endUse()->useModuleRelatedByDeliveryModuleIdQuery('delivery_module')->addAsColumn('delivery_module_TITLE', '`delivery_module`.CODE')->endUse()->useOrderAddressRelatedByDeliveryOrderAddressIdQuery('delivery_address_join')->useCustomerTitleQuery('delivery_address_customer_title_join')->useCustomerTitleI18nQuery('delivery_address_customer_title_i18n_join')->addAsColumn('delivery_address_TITLE', '`delivery_address_customer_title_i18n_join`.SHORT')->endUse()->endUse()->useCountryQuery('delivery_address_country_join')->useCountryI18nQuery('delivery_address_country_i18n_join')->addAsColumn('delivery_address_country_TITLE', '`delivery_address_country_i18n_join`.TITLE')->endUse()->addAsColumn('delivery_address_COMPANY', '`delivery_address_join`.COMPANY')->addAsColumn('delivery_address_FIRSTNAME', '`delivery_address_join`.FIRSTNAME')->addAsColumn('delivery_address_LASTNAME', '`delivery_address_join`.LASTNAME')->addAsColumn('delivery_address_ADDRESS1', '`delivery_address_join`.ADDRESS1')->addAsColumn('delivery_address_ADDRESS2', '`delivery_address_join`.ADDRESS2')->addAsColumn('delivery_address_ADDRESS3', '`delivery_address_join`.ADDRESS3')->addAsColumn('delivery_address_ZIPCODE', '`delivery_address_join`.ZIPCODE')->addAsColumn('delivery_address_CITY', '`delivery_address_join`.CITY')->addAsColumn('delivery_address_PHONE', '`delivery_address_join`.PHONE')->endUse()->endUse()->useOrderAddressRelatedByInvoiceOrderAddressIdQuery('invoice_address_join')->useCustomerTitleQuery('invoice_address_customer_title_join')->useCustomerTitleI18nQuery('invoice_address_customer_title_i18n_join')->addAsColumn('invoice_address_TITLE', '`invoice_address_customer_title_i18n_join`.SHORT')->endUse()->endUse()->useCountryQuery('invoice_address_country_join')->useCountryI18nQuery('invoice_address_country_i18n_join')->addAsColumn('invoice_address_country_TITLE', '`invoice_address_country_i18n_join`.TITLE')->endUse()->endUse()->addAsColumn('invoice_address_COMPANY', '`invoice_address_join`.COMPANY')->addAsColumn('invoice_address_FIRSTNAME', '`invoice_address_join`.FIRSTNAME')->addAsColumn('invoice_address_LASTNAME', '`invoice_address_join`.LASTNAME')->addAsColumn('invoice_address_ADDRESS1', '`invoice_address_join`.ADDRESS1')->addAsColumn('invoice_address_ADDRESS2', '`invoice_address_join`.ADDRESS2')->addAsColumn('invoice_address_ADDRESS3', '`invoice_address_join`.ADDRESS3')->addAsColumn('invoice_address_ZIPCODE', '`invoice_address_join`.ZIPCODE')->addAsColumn('invoice_address_CITY', '`invoice_address_join`.CITY')->addAsColumn('invoice_address_PHONE', '`invoice_address_join`.PHONE')->endUse()->useOrderStatusQuery()->useOrderStatusI18nQuery()->addAsColumn('order_status_TITLE', OrderStatusI18nTableMap::TITLE)->endUse()->endUse()->select([OrderTableMap::REF, 'customer_REF', 'product_TITLE', 'product_PRICE', 'product_TAX', 'tax_TITLE', 'product_QUANTITY', 'product_WAS_IN_PROMO', OrderTableMap::DISCOUNT, 'coupon_COUPONS', OrderTableMap::POSTAGE, 'payment_module_TITLE', OrderTableMap::INVOICE_REF, OrderTableMap::DELIVERY_REF, 'delivery_module_TITLE', 'delivery_address_TITLE', 'delivery_address_COMPANY', 'delivery_address_FIRSTNAME', 'delivery_address_LASTNAME', 'delivery_address_ADDRESS1', 'delivery_address_ADDRESS2', 'delivery_address_ADDRESS3', 'delivery_address_ZIPCODE', 'delivery_address_CITY', 'delivery_address_country_TITLE', 'delivery_address_PHONE', 'invoice_address_TITLE', 'invoice_address_COMPANY', 'invoice_address_FIRSTNAME', 'invoice_address_LASTNAME', 'invoice_address_ADDRESS1', 'invoice_address_ADDRESS2', 'invoice_address_ADDRESS3', 'invoice_address_ZIPCODE', 'invoice_address_CITY', 'invoice_address_country_TITLE', 'invoice_address_PHONE', 'order_status_TITLE', 'currency_CODE', OrderTableMap::CREATED_AT])->orderByCreatedAt(Criteria::DESC); I18n::addI18nCondition($query, CustomerTitleI18nTableMap::TABLE_NAME, '`delivery_address_customer_title_join`.ID', CustomerTitleI18nTableMap::ID, '`delivery_address_customer_title_i18n_join`.LOCALE', $locale); I18n::addI18nCondition($query, CustomerTitleI18nTableMap::TABLE_NAME, '`invoice_address_customer_title_join`.ID', CustomerTitleI18nTableMap::ID, '`invoice_address_customer_title_i18n_join`.LOCALE', $locale); I18n::addI18nCondition($query, CountryI18nTableMap::TABLE_NAME, '`delivery_address_country_join`.ID', CountryI18nTableMap::ID, '`delivery_address_country_i18n_join`.LOCALE', $locale); I18n::addI18nCondition($query, CountryI18nTableMap::TABLE_NAME, '`invoice_address_country_join`.ID', CountryI18nTableMap::ID, '`invoice_address_country_i18n_join`.LOCALE', $locale); I18n::addI18nCondition($query, OrderStatusI18nTableMap::TABLE_NAME, OrderStatusI18nTableMap::ID, OrderStatusTableMap::ID, OrderStatusI18nTableMap::LOCALE, $locale); $data = $query->filterById($order[OrderTableMap::ID])->findOne(); $order = (new Order())->setId($order[OrderTableMap::ID]); $order->setNew(false); $tax = 0; $data['order_TOTAL_TTC'] = $order->getTotalAmount($tax, false, false); $data['order_TOTAL_WITH_DISCOUNT'] = $order->getTotalAmount($tax, false, true); $data['order_TOTAL_WITH_DISCOUNT_AND_POSTAGE'] = $order->getTotalAmount($tax, true, true); return $data; }
public function buildArray() { $order = OrderQuery::create()->findOneByRef($this->getRef()); if (null !== $order && $order->getDeliveryModuleId() === DpdClassic::getModuleId()) { return [$order->getRef() => $order->getDeliveryRef()]; } return []; }
protected function buildForm() { $entries = OrderQuery::create()->filterByDeliveryModuleId(DpdClassic::getModuleId())->find(); $this->formBuilder->add('new_status_id', 'choice', array('label' => Translator::getInstance()->trans('Change order status to', [], DpdClassic::DOMAIN_NAME), 'choices' => array("nochange" => Translator::getInstance()->trans("Do not change", [], DpdClassic::DOMAIN_NAME), "processing" => Translator::getInstance()->trans("Set orders status as processing", [], DpdClassic::DOMAIN_NAME), "sent" => Translator::getInstance()->trans("Set orders status as sent", [], DpdClassic::DOMAIN_NAME)), 'required' => true, 'expanded' => true, 'multiple' => false, 'data' => 'nochange')); foreach ($entries as $order) { $orderRef = str_replace(".", "-", $order->getRef()); $this->formBuilder->add($orderRef, 'checkbox', array('label' => $orderRef, 'label_attr' => array('for' => $orderRef)))->add($orderRef . "-assur", 'checkbox')->add($orderRef . "-pkgNumber", 'number')->add($orderRef . "-pkgWeight", 'number'); } }
protected function buildForm() { $status = OrderStatusQuery::create()->filterByCode(array(OrderStatus::CODE_PAID, OrderStatus::CODE_PROCESSING, OrderStatus::CODE_SENT), Criteria::IN)->find()->toArray("code"); $query = OrderQuery::create()->filterByDeliveryModuleId(FreeShipping::getModuleId())->filterByStatusId(array($status['paid']['Id'], $status['processing']['Id']), Criteria::IN)->find(); $this->formBuilder->add('new_status_id', 'choice', array('label' => Translator::getInstance()->trans('server'), 'choices' => array("nochange" => Translator::getInstance()->trans("Do not change"), "processing" => Translator::getInstance()->trans("Set orders status as processing"), "sent" => Translator::getInstance()->trans("Set orders status as sent")), 'required' => 'true', 'expanded' => true, 'multiple' => false, 'data' => 'nochange')); /** @var \Thelia\Model\Order $order */ foreach ($query as $order) { $this->formBuilder->add("order_" . $order->getId(), "checkbox", array('label' => $order->getRef(), 'label_attr' => array('for' => 'export_' . $order->getId()))); } }
public function buildArray() { $path = ExportExaprint::getJSONpath(); if (is_readable($path) && ($order = OrderQuery::create()->findOneByRef($this->getRef())) !== null && $order->getDeliveryModuleId() === DpdPickup::getModuleId()) { $json = json_decode(file_get_contents($path), true); return array($this->getRef() => $json['expcode']); } else { return array(); } }
public function preImport() { // Delete table before proceeding OrderQuery::create()->deleteAll(); // Delete custom order status OrderStatusQuery::create()->filterById(5, Criteria::GREATER_THAN)->delete(); // Create T1 <-> T2 IDs correspondance tables $this->order_corresp->reset(); $this->importCustomOrderStatus(); }
/** * @throws \Exception */ public function receiveResponse() { $request = $this->getRequest(); $order_id = $request->get('reference'); if (is_numeric($order_id)) { $order_id = (int) $order_id; } /* * Configure log output */ $log = Tlog::getInstance(); $log->setDestinations("\\Thelia\\Log\\Destination\\TlogDestinationFile"); $log->setConfig("\\Thelia\\Log\\Destination\\TlogDestinationFile", 0, THELIA_ROOT . "log" . DS . "log-cmcic.txt"); $log->info("accessed"); $order = OrderQuery::create()->findPk($order_id); /* * Retrieve HMac for CGI2 */ $config = Config::read(CmCIC::JSON_CONFIG_PATH); $hashable = sprintf(CmCIC::CMCIC_CGI2_FIELDS, $config['CMCIC_TPE'], $request->get('date'), $request->get('montant'), $request->get('reference'), $request->get('texte-libre'), $config['CMCIC_VERSION'], $request->get('code-retour'), $request->get('cvx'), $request->get('vld'), $request->get('brand'), $request->get('status3ds'), $request->get('numauto'), $request->get('motifrefus'), $request->get('originecb'), $request->get('bincb'), $request->get('hpancb'), $request->get('ipclient'), $request->get('originetr'), $request->get('veres'), $request->get('pares')); $mac = CmCIC::computeHmac($hashable, CmCIC::getUsableKey($config["CMCIC_KEY"])); $response = CmCIC::CMCIC_CGI2_MACNOTOK . $hashable; if ($mac === strtolower($request->get('MAC'))) { $code = $request->get("code-retour"); $msg = null; $status = OrderStatusQuery::create()->findOneByCode(OrderStatus::CODE_PAID); $event = new OrderEvent($order); $event->setStatus($status->getId()); switch ($code) { case "payetest": $msg = "The test payment of the order " . $order->getRef() . " has been successfully released. "; $this->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event); break; case "paiement": $msg = "The payment of the order " . $order->getRef() . " has been successfully released. "; $this->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event); break; case "Annulation": $msg = "Error during the paiement: " . $this->getRequest()->get("motifrefus"); break; default: $log->error("Error while receiving response from CMCIC: code-retour not valid"); throw new \Exception(Translator::getInstance()->trans("An error occured, no valid code-retour")); } if (!empty($msg)) { $log->info($msg); } $response = CmCIC::CMCIC_CGI2_MACOK; } /* * Get log back to previous state */ $log->setDestinations("\\Thelia\\Log\\Destination\\TlogDestinationRotatingFile"); return Response::create(sprintf(CmCIC::CMCIC_CGI2_RECEIPT, $response), 200, array("Content-type" => "text/plain", "Pragma" => "nocache")); }
public function onInvoiceAfterDeliveryModule(HookRenderEvent $event) { // No So Colissimo information if the delivery module is not SoColissimo if (SoColissimo::getModuleId() == $event->getArgument('module_id')) { return; } $order = OrderQuery::create()->findOneById($event->getArgument('order')); if (!is_null($order)) { $event->add($this->render('delivery_mode_infos.html', ['delivery_address_id' => $order->getDeliveryOrderAddressId()])); } }
public function preImport() { // Empty address, customer and customer title table OrderQuery::create()->deleteAll(); AddressQuery::create()->deleteAll(); OrderAddressQuery::create()->deleteAll(); CustomerQuery::create()->deleteAll(); // Also empty url rewriting table $con = Propel::getConnection(RewritingUrlTableMap::DATABASE_NAME); $con->exec('SET FOREIGN_KEY_CHECKS=0'); RewritingUrlQuery::create()->deleteAll(); $con->exec('SET FOREIGN_KEY_CHECKS=1'); $this->cust_corresp->reset(); if ($this->thelia_version > 150) { $this->importCustomerTitle(); } }
public function orderNumberPackage($params, $template = null) { $numberOfPackage = 1; $maxWeightPackage = TNTFrance::getConfigValue(TNTFranceConfigValue::MAX_WEIGHT_PACKAGE, 25); if (null != ($orderId = $this->getParam($params, "order_id", null))) { if (null != ($order = OrderQuery::create()->findPk($orderId))) { $orderTotalWeight = 0; foreach ($order->getOrderProducts() as $orderProduct) { //Be sure that this orderProduct has no package already if (null == ($tntResponse = TntOrderParcelResponseQuery::create()->findOneByOrderProductId($orderProduct->getId()))) { $orderTotalWeight += $orderProduct->getQuantity() * $orderProduct->getWeight(); } } $numberOfPackage = ceil($orderTotalWeight / $maxWeightPackage); } } return $numberOfPackage; }
/** * Update order's delivery ref * * @param string $deliveryRef * @param string $orderRef * @param int $i */ public function importDeliveryRef($deliveryRef, $orderRef, &$i) { // Check if the order exists if (null !== ($order = OrderQuery::create()->findOneByRef($orderRef))) { $event = new OrderEvent($order); // Check if delivery refs are different if ($order->getDeliveryRef() != $deliveryRef) { $event->setDeliveryRef($deliveryRef); $this->getDispatcher()->dispatch(TheliaEvents::ORDER_UPDATE_DELIVERY_REF, $event); $sentStatusId = OrderStatusQuery::create()->filterByCode('sent')->select('ID')->findOne(); // Set 'sent' order status if not already sent if ($sentStatusId != null && $order->getStatusId() != $sentStatusId) { $event->setStatus($sentStatusId); $this->getDispatcher()->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event); } $i++; } } }
/** * Update order's delivery ref * * @param string $deliveryRef * @param string $orderRef * @param int $i */ public function importDeliveryRef($deliveryRef, $orderRef, &$i) { // Get order $order = OrderQuery::create()->findOneByRef($orderRef); // Check if the order exists if ($order !== null) { $event = new OrderEvent($order); // Check if delivery refs are different if ($order->getDeliveryRef() != $deliveryRef) { $event->setDeliveryRef($deliveryRef); $this->getDispatcher()->dispatch(TheliaEvents::ORDER_UPDATE_DELIVERY_REF, $event); // Set 'sent' order status if not already sent if ($order->getStatusId() != DpdPickup::STATUS_SENT) { $event->setStatus(DpdPickup::STATUS_SENT); $this->getDispatcher()->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event); } $i++; } } }
public function processAtosRequest() { $this->getLog()->addInfo($this->getTranslator()->trans("Atos-SIPS platform request received.", [], Atos::MODULE_DOMAIN)); $binResponse = Atos::getBinDirectory() . 'response'; if (!empty($_POST['DATA'])) { $data = escapeshellcmd($_POST['DATA']); $pathfile = Atos::getPathfilePath(); $resultRaw = exec(sprintf("%s message=%s pathfile=%s", $binResponse, $data, $pathfile)); if (!empty($resultRaw)) { $result = explode('!', $resultRaw); $result = $this->parseResult($result); $this->getLog()->addInfo($this->getTranslator()->trans('Response parameters : %resp', ['%resp' => print_r($result, true)], Atos::MODULE_DOMAIN)); if ($result['code'] == '' && $result['error'] == '') { $this->getLog()->addError($this->getTranslator()->trans('Response request not found in %response', ['%response' => $binResponse], Atos::MODULE_DOMAIN)); } elseif (intval($result['code']) != 0) { $this->getLog()->addError($this->getTranslator()->trans('Error %code while processing response, with message %message', ['%code' => intval($result['code']), '%message' => $result['error']], Atos::MODULE_DOMAIN)); } elseif ($result['response_code'] == '00') { $atos = new Atos(); $order = OrderQuery::create()->filterByTransactionRef($result['transaction_id'])->filterByPaymentModuleId($atos->getModuleModel()->getId())->findOne(); if ($order) { $this->confirmPayment($order->getId()); $this->getLog()->addInfo($this->getTranslator()->trans("Order ID %id is confirmed.", ['%id' => $order->getId()], Atos::MODULE_DOMAIN)); } else { $this->getLog()->addError($this->getTranslator()->trans('Cannot find an order for transaction ID "%trans"', ['%trans' => $result['transaction_id']], Atos::MODULE_DOMAIN)); } } else { $this->getLog()->addError($this->getTranslator()->trans('Cannot validate order. Response code is %resp', ['%resp' => $result['response_code']], Atos::MODULE_DOMAIN)); } } else { $this->getLog()->addError($this->getTranslator()->trans('Got empty response from executable %binary, check path and permissions', ['%binary' => $binResponse], Atos::MODULE_DOMAIN)); } } else { $this->getLog()->addError($this->getTranslator()->trans('Request does not contains any data', [], Atos::MODULE_DOMAIN)); } $this->getLog()->info($this->getTranslator()->trans("Atos platform request processing terminated.", [], Atos::MODULE_DOMAIN)); return Response::create(); }
/** * @param int $order_id * @param string $fileName * @param bool $checkOrderStatus * @param bool $checkAdminUser * @return \Symfony\Component\HttpFoundation\Response */ protected function generateOrderPdf($order_id, $fileName, $checkOrderStatus = true, $checkAdminUser = true, $browser = false) { $order = OrderQuery::create()->findPk($order_id); // check if the order has the paid status if ($checkAdminUser && !$this->getSecurityContext()->hasAdminUser()) { if ($checkOrderStatus && !$order->isPaid(false)) { throw new NotFoundHttpException(); } } $html = $this->renderRaw($fileName, array('order_id' => $order_id), $this->getTemplateHelper()->getActivePdfTemplate()); try { $pdfEvent = new PdfEvent($html); $this->dispatch(TheliaEvents::GENERATE_PDF, $pdfEvent); if ($pdfEvent->hasPdf()) { return $this->pdfResponse($pdfEvent->getPdf(), $order->getRef(), 200, $browser); } } catch (\Exception $e) { Tlog::getInstance()->error(sprintf('error during generating invoice pdf for order id : %d with message "%s"', $order_id, $e->getMessage())); } throw new TheliaProcessException($this->getTranslator()->trans("We're sorry, this PDF invoice is not available at the moment.")); }
/** * Get the associated ChildOrder object * * @param ConnectionInterface $con Optional Connection object. * @return ChildOrder The associated ChildOrder object. * @throws PropelException */ public function getOrder(ConnectionInterface $con = null) { if ($this->aOrder === null && $this->order_id !== null) { $this->aOrder = ChildOrderQuery::create()->findPk($this->order_id, $con); /* The following can be used additionally to guarantee the related object contains a reference to this object. This level of coupling may, however, be undesirable since it could result in an only partially populated collection in the referenced object. $this->aOrder->addOrderProducts($this); */ } return $this->aOrder; }
/** * @depends testCreate * * @param OrderModel $order */ public function testUpdateDeliveryRef(OrderModel $order) { $deliveryRef = uniqid('DELREF'); $this->orderEvent->setDeliveryRef($deliveryRef); $this->orderEvent->setOrder($order); $this->orderAction->updateDeliveryRef($this->orderEvent); $this->assertEquals($deliveryRef, $this->orderEvent->getOrder()->getDeliveryRef()); $this->assertEquals($deliveryRef, OrderQuery::create()->findPk($order->getId())->getDeliveryRef()); }
/** * Removes this object from datastore and sets delete attribute. * * @param ConnectionInterface $con * @return void * @throws PropelException * @see Order::setDeleted() * @see Order::isDeleted() */ public function delete(ConnectionInterface $con = null) { if ($this->isDeleted()) { throw new PropelException("This object has already been deleted."); } if ($con === null) { $con = Propel::getServiceContainer()->getWriteConnection(OrderTableMap::DATABASE_NAME); } $con->beginTransaction(); try { $deleteQuery = ChildOrderQuery::create()->filterByPrimaryKey($this->getPrimaryKey()); $ret = $this->preDelete($con); if ($ret) { $deleteQuery->delete($con); $this->postDelete($con); $con->commit(); $this->setDeleted(true); } else { $con->commit(); } } catch (Exception $e) { $con->rollBack(); throw $e; } }
private function checkOrderCustomer($order_id) { $this->checkAuth(); $order = OrderQuery::create()->findPk($order_id); $valid = true; if ($order) { $customerOrder = $order->getCustomer(); $customer = $this->getSecurityContext()->getCustomerUser(); if ($customerOrder->getId() != $customer->getId()) { $valid = false; } } else { $valid = false; } if (false === $valid) { throw new AccessDeniedHttpException(); } }
/** * If this collection has already been initialized with * an identical criteria, it returns the collection. * Otherwise if this Customer is new, it will return * an empty collection; or if this Customer has previously * been saved, it will retrieve related Orders from storage. * * This method is protected by default in order to keep the public * api reasonable. You can provide public methods for those you * actually need in Customer. * * @param Criteria $criteria optional Criteria object to narrow the query * @param ConnectionInterface $con optional connection object * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN) * @return Collection|ChildOrder[] List of ChildOrder objects */ public function getOrdersJoinLang($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN) { $query = ChildOrderQuery::create(null, $criteria); $query->joinWith('Lang', $joinBehavior); return $this->getOrders($query, $con); }
public function updateAddress($order_id) { if (null !== ($response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE))) { return $response; } $message = null; $orderUpdateAddress = new OrderUpdateAddress($this->getRequest()); try { $order = OrderQuery::create()->findPk($order_id); if (null === $order) { throw new \InvalidArgumentException("The order you want to update does not exist"); } $form = $this->validateForm($orderUpdateAddress, "post"); $orderAddress = OrderAddressQuery::create()->findPk($form->get("id")->getData()); if ($orderAddress->getId() !== $order->getInvoiceOrderAddressId() && $orderAddress->getId() !== $order->getDeliveryOrderAddressId()) { throw new \InvalidArgumentException("The order address you want to update does not belong to the current order not exist"); } $event = new OrderAddressEvent($form->get("title")->getData(), $form->get("firstname")->getData(), $form->get("lastname")->getData(), $form->get("address1")->getData(), $form->get("address2")->getData(), $form->get("address3")->getData(), $form->get("zipcode")->getData(), $form->get("city")->getData(), $form->get("country")->getData(), $form->get("phone")->getData(), $form->get("company")->getData()); $event->setOrderAddress($orderAddress); $event->setOrder($order); $this->dispatch(TheliaEvents::ORDER_UPDATE_ADDRESS, $event); } catch (\Exception $e) { $message = $e->getMessage(); } $params = array(); if ($message) { $params["update_status_error_message"] = $message; } $params["tab"] = $this->getRequest()->get("tab", 'bill'); return $this->generateRedirectFromRoute("admin.order.update.view", $params, ['order_id' => $order_id]); }
/** * Performs an INSERT on the database, given a Order or Criteria object. * * @param mixed $criteria Criteria or Order object containing data that is used to create the INSERT statement. * @param ConnectionInterface $con the ConnectionInterface connection to use * @return mixed The new primary key. * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function doInsert($criteria, ConnectionInterface $con = null) { if (null === $con) { $con = Propel::getServiceContainer()->getWriteConnection(OrderTableMap::DATABASE_NAME); } if ($criteria instanceof Criteria) { $criteria = clone $criteria; // rename for clarity } else { $criteria = $criteria->buildCriteria(); // build Criteria from Order object } if ($criteria->containsKey(OrderTableMap::ID) && $criteria->keyContainsValue(OrderTableMap::ID)) { throw new PropelException('Cannot insert a value for auto-increment primary key (' . OrderTableMap::ID . ')'); } // Set the correct dbName $query = OrderQuery::create()->mergeWith($criteria); try { // use transaction because $criteria could contain info // for more than one table (I guess, conceivably) $con->beginTransaction(); $pk = $query->doInsert($con); $con->commit(); } catch (PropelException $e) { $con->rollBack(); throw $e; } return $pk; }
/** * If this collection has already been initialized with * an identical criteria, it returns the collection. * Otherwise if this Lang is new, it will return * an empty collection; or if this Lang has previously * been saved, it will retrieve related Orders from storage. * * This method is protected by default in order to keep the public * api reasonable. You can provide public methods for those you * actually need in Lang. * * @param Criteria $criteria optional Criteria object to narrow the query * @param ConnectionInterface $con optional connection object * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN) * @return Collection|ChildOrder[] List of ChildOrder objects */ public function getOrdersJoinModuleRelatedByDeliveryModuleId($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN) { $query = ChildOrderQuery::create(null, $criteria); $query->joinWith('ModuleRelatedByDeliveryModuleId', $joinBehavior); return $this->getOrders($query, $con); }
public function buildModelCriteria() { $status = OrderStatusQuery::create()->filterByCode(array(OrderStatus::CODE_PAID, OrderStatus::CODE_PROCESSING), Criteria::IN)->find()->toArray("code"); $query = OrderQuery::create()->filterByDeliveryModuleId(FreeShipping::getModuleId())->filterByStatusId(array($status[OrderStatus::CODE_PAID]['Id'], $status[OrderStatus::CODE_PROCESSING]['Id']), Criteria::IN); return $query; }
public function hasOrder() { $order = OrderQuery::create()->filterByCustomerId($this->getId())->count(); return $order > 0; }
/** * @param Lang $lang * @return ModelCriteria|array|BaseLoop */ public function buildDataSet(Lang $lang) { $query = $this->getQuery($lang); $dataSet = $query->find()->toArray(); $orders = OrderQuery::create()->orderById()->find(); $current = 0; $previous = null; foreach ($dataSet as &$line) { /** * Add computed columns */ $line["order_TOTAL_TTC"] = ""; $line["order_TOTAL_WITH_DISCOUNT"] = ""; $line["order_TOTAL_WITH_DISCOUNT_AND_POSTAGE"] = ""; if (null === $previous || $previous !== $line[OrderTableMap::REF]) { $previous = $line[OrderTableMap::REF]; /** @var \Thelia\Model\Order $order */ $order = $orders->get($current); $line["order_TOTAL_TTC"] = $order->getTotalAmount($tax, false, false); $line["order_TOTAL_WITH_DISCOUNT"] = $order->getTotalAmount($tax, false, true); $line["order_TOTAL_WITH_DISCOUNT_AND_POSTAGE"] = $order->getTotalAmount($tax, true, true); /** * Format the date */ $date = new \DateTime($line[OrderTableMap::CREATED_AT]); $line[OrderTableMap::CREATED_AT] = $date->format($lang->getDatetimeFormat()); $current++; } else { /** * Remove all the information of the order * for each line that only contains a product. */ $line["customer_REF"] = ""; $line[OrderTableMap::DISCOUNT] = ""; $line["coupon_COUPONS"] = ""; $line[OrderTableMap::POSTAGE] = ""; $line["payment_module_TITLE"] = ""; $line[OrderTableMap::INVOICE_REF] = ""; $line["delivery_module_TITLE"] = ""; $line["delivery_address_TITLE"] = ""; $line["delivery_address_COMPANY"] = ""; $line["delivery_address_FIRSTNAME"] = ""; $line["delivery_address_LASTNAME"] = ""; $line["delivery_address_ADDRESS1"] = ""; $line["delivery_address_ADDRESS2"] = ""; $line["delivery_address_ADDRESS3"] = ""; $line["delivery_address_ZIPCODE"] = ""; $line["delivery_address_CITY"] = ""; $line["delivery_address_country_TITLE"] = ""; $line["delivery_address_PHONE"] = ""; $line["invoice_address_TITLE"] = ""; $line["invoice_address_COMPANY"] = ""; $line["invoice_address_FIRSTNAME"] = ""; $line["invoice_address_LASTNAME"] = ""; $line["invoice_address_ADDRESS1"] = ""; $line["invoice_address_ADDRESS2"] = ""; $line["invoice_address_ADDRESS3"] = ""; $line["invoice_address_ZIPCODE"] = ""; $line["invoice_address_CITY"] = ""; $line["invoice_address_country_TITLE"] = ""; $line["invoice_address_PHONE"] = ""; $line["order_status_TITLE"] = ""; $line[OrderTableMap::CREATED_AT] = ""; } $line["product_TAXED_PRICE"] = $line["product_PRICE"] + $line["product_TAX"]; } return $dataSet; }
public function buildModelCriteria() { $search = OrderQuery::create(); $id = $this->getId(); if (null !== $id) { $search->filterById($id, Criteria::IN); } $customer = $this->getCustomer(); if ($customer === 'current') { $currentCustomer = $this->securityContext->getCustomerUser(); if ($currentCustomer === null) { return null; } else { $search->filterByCustomerId($currentCustomer->getId(), Criteria::EQUAL); } } elseif ($customer !== '*') { $search->filterByCustomerId($customer, Criteria::EQUAL); } $status = $this->getStatus(); if (null !== $status && $status != '*') { $search->filterByStatusId($status, Criteria::IN); } if (null !== ($excludeStatus = $this->getExcludeStatus())) { $search->filterByStatusId($excludeStatus, Criteria::NOT_IN); } $statusCode = $this->getStatusCode(); if (null !== $statusCode && $statusCode != '*') { $search->useOrderStatusQuery()->filterByCode($statusCode, Criteria::IN)->endUse(); } if (null !== ($excludeStatusCode = $this->getExcludeStatusCode())) { $search->useOrderStatusQuery()->filterByCode($excludeStatusCode, Criteria::NOT_IN)->endUse(); } $orderers = $this->getOrder(); foreach ($orderers as $orderer) { switch ($orderer) { case 'id': $search->orderById(Criteria::ASC); break; case 'id-reverse': $search->orderById(Criteria::DESC); break; case 'reference': $search->orderByRef(Criteria::ASC); break; case 'reference-reverse': $search->orderByRef(Criteria::DESC); break; case 'create-date': $search->orderByCreatedAt(Criteria::ASC); break; case 'create-date-reverse': $search->orderByCreatedAt(Criteria::DESC); break; case 'status': $search->orderByStatusId(Criteria::ASC); break; case 'status-reverse': $search->orderByStatusId(Criteria::DESC); break; case 'company': $search->joinOrderAddressRelatedByDeliveryOrderAddressId()->withColumn(OrderAddressTableMap::COMPANY, 'company')->orderBy('company', Criteria::ASC); break; case 'company-reverse': $search->joinOrderAddressRelatedByDeliveryOrderAddressId()->withColumn(OrderAddressTableMap::COMPANY, 'company')->orderBy('company', Criteria::DESC); break; case 'customer-name': $search->joinCustomer()->withColumn(CustomerTableMap::FIRSTNAME, 'firstname')->withColumn(CustomerTableMap::LASTNAME, 'lastname')->orderBy('lastname', Criteria::ASC)->orderBy('firstname', Criteria::ASC); break; case 'customer-name-reverse': $search->joinCustomer()->withColumn(CustomerTableMap::FIRSTNAME, 'firstname')->withColumn(CustomerTableMap::LASTNAME, 'lastname')->orderBy('lastname', Criteria::DESC)->orderBy('firstname', Criteria::DESC); break; } } return $search; }
/** * Get an order and issue a log message if not found. * @param $order_id * @return null|\Thelia\Model\Order */ protected function getOrder($order_id) { if (null == ($order = OrderQuery::create()->findPk($order_id))) { $this->getLog()->addError($this->getTranslator()->trans("Unknown order ID: %id", array('%id' => $order_id))); } return $order; }
protected function generateOrderPdf($order_id, $fileName) { $order = OrderQuery::create()->findPk($order_id); // check if the order has the paid status if (!$this->getSecurityContext()->hasAdminUser()) { if (!$order->isPaid()) { throw new NotFoundHttpException(); } } $html = $this->renderRaw($fileName, array('order_id' => $order_id), TemplateHelper::getInstance()->getActivePdfTemplate()); try { $pdfEvent = new PdfEvent($html); $this->dispatch(TheliaEvents::GENERATE_PDF, $pdfEvent); if ($pdfEvent->hasPdf()) { return $this->pdfResponse($pdfEvent->getPdf(), $order->getRef()); } } catch (\Exception $e) { \Thelia\Log\Tlog::getInstance()->error(sprintf('error during generating invoice pdf for order id : %d with message "%s"', $order_id, $e->getMessage())); } }
Model\ProductSaleElementsQuery::create()->deleteAll(); Model\ProductPriceQuery::create()->deleteAll(); Model\BrandQuery::create()->deleteAll(); Model\BrandI18nQuery::create()->deleteAll(); Model\ProductImageQuery::create()->deleteAll(); Model\CategoryImageQuery::create()->deleteAll(); Model\FolderImageQuery::create()->deleteAll(); Model\ContentImageQuery::create()->deleteAll(); Model\BrandImageQuery::create()->deleteAll(); Model\ProductDocumentQuery::create()->deleteAll(); Model\CategoryDocumentQuery::create()->deleteAll(); Model\FolderDocumentQuery::create()->deleteAll(); Model\ContentDocumentQuery::create()->deleteAll(); Model\BrandDocumentQuery::create()->deleteAll(); Model\CouponQuery::create()->deleteAll(); Model\OrderQuery::create()->deleteAll(); Model\SaleQuery::create()->deleteAll(); Model\SaleProductQuery::create()->deleteAll(); Model\MetaDataQuery::create()->deleteAll(); $stmt = $con->prepare("SET foreign_key_checks = 1"); $stmt->execute(); echo "Creating customers\n"; //API $api = new Thelia\Model\Api(); $api->setProfileId(null)->setApiKey('79E95BD784CADA0C9A578282E')->setLabel("test")->save(); //customer $customer = new Thelia\Model\Customer(); $customer->createOrUpdate(1, "thelia", "thelia", "5 rue rochon", "", "", "0102030405", "0601020304", "63000", "clermont-ferrand", 64, "*****@*****.**", "azerty"); for ($j = 0; $j <= 3; $j++) { $address = new Thelia\Model\Address(); $address->setLabel(getRealText(20))->setTitleId(rand(1, 3))->setFirstname($faker->firstname)->setLastname($faker->lastname)->setAddress1($faker->streetAddress)->setAddress2($faker->streetAddress)->setAddress3($faker->streetAddress)->setCellphone($faker->phoneNumber)->setPhone($faker->phoneNumber)->setZipcode($faker->postcode)->setCity($faker->city)->setCountryId(64)->setCustomer($customer)->save();