*/ class Export extends BaseAdminController { const DEFAULT_PHONE = "0100000000"; const DEFAULT_CELLPHONE = "0600000000"; public function exportAction() { if (null !== $response = $this->checkAuth(array(AdminResources::MODULE), array('Colissimo'), AccessManager::UPDATE)) { return $response; } $form = new FormExport($this->getRequest()); try { $exportForm = $this->validateForm($form); $status_id = $exportForm->get('status_id')->getData(); $status = OrderStatusQuery::create() ->filterByCode($status_id) ->findOne(); $orders = ColissimoQuery::getOrders() ->find(); $export = ""; $store_name = ConfigQuery::read("store_name"); /** @var $order \Thelia\Model\Order */ foreach ($orders as $order) { $value = $exportForm->get('order_'.$order->getId())->getData(); if ($value) { $customer = $order->getCustomer(); $locale = $order->getLang()->getLocale(); $address = $order->getOrderAddressRelatedByDeliveryOrderAddressId(); $country = CountryQuery::create()->findPk($address->getCountryId()); $country->setLocale($locale); $customerTitle = CustomerTitleQuery::create()->findPk($address->getCustomerTitleId()); $customerTitle->setLocale($locale); /** * Get user's phone & cellphone * First get invoice address phone, * If empty, try to get default address' phone. * If still empty, set default value */ $phone = $address->getPhone(); if (empty($phone)) { $phone = $customer->getDefaultAddress()->getPhone(); if (empty($phone)) { $phone = self::DEFAULT_PHONE; } } /** * Cellp */ $cellphone = $customer->getDefaultAddress()->getCellphone(); if (empty($cellphone)) { $cellphone = $customer->getDefaultAddress()->getCellphone(); if (empty($cellphone)) { $cellphone = self::DEFAULT_CELLPHONE; } } /** * Compute package weight */ $weight = 0; /** @var \Thelia\Model\OrderProduct $product */ foreach ($order->getOrderProducts() as $product) { $weight+=(double) $product->getWeight(); } $export .= "\"".$order->getRef()."\";\"".$address->getLastname()."\";\"".$address->getFirstname()."\";\"".$address->getAddress1()."\";\"".$address->getAddress2()."\";\"".$address->getAddress3()."\";\"".$address->getZipcode()."\";\"".$address->getCity()."\";\"".$country->getTitle()."\";\"".$phone."\";\"".$cellphone."\";\"".$weight."\";\"\";\"\";\"".$store_name."\";\"DOM\";\r\n"; if ($status) { $event = new OrderEvent($order); $event->setStatus($status->getId()); $this->getDispatcher()->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event); } } } return Response::create( $export, 200, array( "Content-Type"=>"application/csv-tab-delimited-table", "Content-disposition"=>"filename=export.csv" ) ); } catch (FormValidationException $e) { $this->setupFormErrorContext( Translator::getInstance()->trans("colissimo expeditor export"), $e->getMessage(), $form, $e ); return $this->render( "module-configure", array( "module_code" => "Colissimo", ) ); } } }