예제 #1
0
 /**
  *
  * in this function you add all the fields you need for your Form.
  * Form this you have to call add method on $this->formBuilder attribute :
  *
  * $this->formBuilder->add("name", "text")
  *   ->add("email", "email", array(
  *           "attr" => array(
  *               "class" => "field"
  *           ),
  *           "label" => "email",
  *           "constraints" => array(
  *               new \Symfony\Component\Validator\Constraints\NotBlank()
  *           )
  *       )
  *   )
  *   ->add('age', 'integer');
  *
  * @return null
  */
 protected function buildForm()
 {
     $orders = ColissimoQuery::getOrders()->find();
     $this->formBuilder->add('status_id', 'text', ['constraints' => [new NotBlank(), new Callback(array("methods" => array(array($this, "verifyValue"))))], 'label' => Translator::getInstance()->trans('Modify status export after export', [], Colissimo::DOMAIN_NAME), 'label_attr' => ['for' => 'status_id']]);
     /** @var \Thelia\Model\Order $order */
     foreach ($orders as $order) {
         $this->formBuilder->add("order_" . $order->getId(), "checkbox", array('label' => $order->getRef(), 'label_attr' => array('for' => 'export_' . $order->getId())))->add("order_nb_pkg_" . $order->getId(), 'number')->add("order_weight_" . $order->getId(), 'number');
     }
 }
예제 #2
0
 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);
         // Get new status
         $status_id = $exportForm->get('status_id')->getData();
         $status = OrderStatusQuery::create()->filterByCode($status_id)->findOne();
         // Get Colissimo orders
         $orders = ColissimoQuery::getOrders()->find();
         $export = "";
         $store_name = ConfigQuery::getStoreName();
         /** @var $order \Thelia\Model\Order */
         foreach ($orders as $order) {
             $value = $exportForm->get('order_' . $order->getId())->getData();
             if ($value) {
                 // Get order information
                 $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);
                 $weight = $exportForm->get('order_weight_' . $order->getId())->getData();
                 if ($weight == 0) {
                     /** @var \Thelia\Model\OrderProduct $product */
                     foreach ($order->getOrderProducts() as $product) {
                         $weight += (double) $product->getWeight();
                     }
                 }
                 /**
                  * 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;
                     }
                 }
                 // Cellphone
                 $cellphone = $customer->getDefaultAddress()->getCellphone();
                 if (empty($cellphone)) {
                     $cellphone = $customer->getDefaultAddress()->getCellphone();
                     if (empty($cellphone)) {
                         $cellphone = self::DEFAULT_CELLPHONE;
                     }
                 }
                 $export .= "\"" . $order->getRef() . "\";\"" . $address->getLastname() . "\";\"" . $address->getFirstname() . "\";\"" . $address->getAddress1() . "\";\"" . $address->getAddress2() . "\";\"" . $address->getAddress3() . "\";\"" . $address->getZipcode() . "\";\"" . $address->getCity() . "\";\"" . $country->getIsoalpha2() . "\";\"" . $phone . "\";\"" . $cellphone . "\";\"" . $weight . "\";\"" . $customer->getEmail() . "\";\"\";\"" . $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(utf8_decode($export), 200, array("Content-Encoding" => "ISO-8889-1", "Content-Type" => "application/csv-tab-delimited-table", "Content-disposition" => "filename=export.csv"));
     } catch (FormValidationException $e) {
         $this->setupFormErrorContext(Translator::getInstance()->trans("colissimo expeditor export", [], Colissimo::DOMAIN_NAME), $e->getMessage(), $form, $e);
         return $this->render("module-configure", array("module_code" => "Colissimo"));
     }
 }
예제 #3
0
 /**
  * this method returns a Propel ModelCriteria
  *
  * @return \Propel\Runtime\ActiveQuery\ModelCriteria
  */
 public function buildModelCriteria()
 {
     return ColissimoQuery::getOrders();
 }