Exemple #1
0
 /**
  * @return \Magento\Framework\Controller\ResultInterface
  * @throws GenericException
  */
 public function execute()
 {
     $result = $this->resultFactory->create(ResultFactory::TYPE_JSON);
     $invoices = [];
     try {
         $json = file_get_contents('php://input');
         $json = json_decode($json);
         if (!property_exists($json, 'customers')) {
             throw new GenericException('Invalid JSON input');
         }
         foreach ($json->customers as $customer) {
             if (!property_exists($customer, 'email')) {
                 continue;
             }
             $mageOrders = $this->getOrderCollectionFactory()->create()->addFieldToSelect('*')->addFieldToFilter('customer_email', $customer->email)->setOrder('created_at', 'desc');
             $invoice = new \Expressly\Entity\Invoice();
             $invoice->setEmail($customer->email);
             foreach ($mageOrders as $mageOrder) {
                 $total = $mageOrder->getData('base_grand_total');
                 $tax = $mageOrder->getData('base_tax_amount');
                 $order = new \Expressly\Entity\Order();
                 $order->setId($mageOrder->getData('increment_id'))->setDate(new \DateTime($mageOrder->getData('created_at')))->setCurrency($mageOrder->getData('base_currency_code'))->setTotal((double) $total - (double) $tax, (double) $tax)->setItemCount((int) $mageOrder->getData('total_qty_ordered'))->setCoupon($mageOrder->getData('coupon_code'));
                 $invoice->addOrder($order);
             }
             $invoices[] = $invoice;
         }
         $presenter = new BatchInvoicePresenter($invoices);
         $result->setData($presenter->toArray());
     } catch (\Exception $e) {
         // log error
         $result->setData(['error' => $e->getMessage()]);
     }
     return $result;
 }
Exemple #2
0
 /**
  *
  */
 public function batchInvoice()
 {
     $json = file_get_contents('php://input');
     $json = json_decode($json);
     $invoices = array();
     try {
         if (!property_exists($json, 'customers')) {
             throw new \Expressly\Exception\GenericException('Invalid JSON request');
         }
         foreach ($json->customers as $customer) {
             if (!property_exists($customer, 'email')) {
                 continue;
             }
             $user = ExpresslyHelper::get_user_by_email($customer->email);
             if (null !== $user) {
                 $vmOrders = VmModel::getModel('orders')->getOrdersList($user->id);
                 $invoice = new \Expressly\Entity\Invoice();
                 $invoice->setEmail($customer->email);
                 foreach ($vmOrders as $vmOrder) {
                     $vmOrderDetails = VmModel::getModel('orders')->getOrder($vmOrder->virtuemart_order_id);
                     if ($vmOrderDetails['details']['BT']->created_on > $customer->from && $vmOrderDetails['details']['BT']->created_on < $customer->to) {
                         // TODO: Need to review this values
                         $total = $vmOrderDetails['details']['BT']->order_subtotal;
                         $tax = $vmOrderDetails['details']['BT']->order_tax;
                         // ====
                         $count = count($vmOrderDetails['items']);
                         $order = new \Expressly\Entity\Order();
                         $order->setId($vmOrderDetails['details']['BT']->virtuemart_order_id)->setDate(new \DateTime($vmOrderDetails['details']['BT']->created_on))->setItemCount($count)->setTotal($total, $tax);
                         if (!empty($vmOrderDetails['details']['BT']->coupon_code)) {
                             $order->setCoupon($vmOrderDetails['details']['BT']->coupon_code);
                         }
                         $invoice->addOrder($order);
                     }
                 }
                 $invoices[] = $invoice;
             }
         }
         $presenter = new \Expressly\Presenter\BatchInvoicePresenter($invoices);
         ExpresslyHelper::send_json($presenter->toArray());
     } catch (\Expressly\Exception\GenericException $e) {
         $this->app['logger']->error($e);
         ExpresslyHelper::send_json(array());
     }
 }