Пример #1
0
 private function processOrder(Ess_M2ePro_Model_Order $order, Mage_Sales_Model_Order_Shipment $shipment, array $trackingDetails = array())
 {
     if ($order->isSingle() || !$order->isComponentModeEbay() || count($shipment->getAllItems()) != 1) {
         return $order->getChildObject()->updateShippingStatus($trackingDetails);
     }
     // combined eBay orders only
     $shipmentItems = $shipment->getAllItems();
     $shipmentItem = reset($shipmentItems);
     /** @var $shipmentItem Mage_Sales_Model_Order_Shipment_Item */
     $additionalData = $shipmentItem->getOrderItem()->getAdditionalData();
     $additionalData = is_string($additionalData) ? @unserialize($additionalData) : array();
     if (empty($additionalData['ebay_item_id']) || empty($additionalData['ebay_transaction_id'])) {
         return $order->getChildObject()->updateShippingStatus($trackingDetails);
     }
     $itemToShip = null;
     foreach ($order->getItemsCollection()->getItems() as $item) {
         /** @var $item Ess_M2ePro_Model_Order_Item */
         if ($item->getChildObject()->getItemId() == $additionalData['ebay_item_id'] || $item->getChildObject()->getTransactionId() == $additionalData['ebay_transaction_id']) {
             $itemToShip = $item;
             break;
         }
     }
     if (is_null($itemToShip)) {
         return $order->getChildObject()->updateShippingStatus($trackingDetails);
     }
     $params = array();
     if (count($trackingDetails) > 0) {
         $params['tracking_number'] = $trackingDetails['tracking_number'];
         $params['carrier_code'] = Mage::helper('M2ePro/Component_Ebay')->getCarrierTitle($trackingDetails['carrier_code'], $trackingDetails['carrier_title']);
     }
     /** @var $dispatcher Ess_M2ePro_Model_Connector_Server_Ebay_OrderItem_Dispatcher */
     $dispatcher = Mage::getModel('M2ePro/Connector_Server_Ebay_OrderItem_Dispatcher');
     $action = Ess_M2ePro_Model_Connector_Server_Ebay_OrderItem_Dispatcher::ACTION_UPDATE_STATUS;
     return $dispatcher->process($action, $itemToShip, $params);
 }
Пример #2
0
 public function getShipmentWeight(Mage_Sales_Model_Order_Shipment $shipment)
 {
     $shipmentWeight = 0;
     foreach ($shipment->getAllItems() as $item) {
         $shipmentWeight += $item->getWeight() * $item->getQty();
     }
     return $shipmentWeight;
 }
Пример #3
0
 private function getItemsToShip(Ess_M2ePro_Model_Order $order, Mage_Sales_Model_Order_Shipment $shipment)
 {
     $productTypesNotAllowedByDefault = array(Mage_Catalog_Model_Product_Type::TYPE_BUNDLE, Mage_Catalog_Model_Product_Type::TYPE_GROUPED);
     $items = array();
     $allowedItems = array();
     foreach ($shipment->getAllItems() as $shipmentItem) {
         /** @var $shipmentItem Mage_Sales_Model_Order_Shipment_Item */
         $orderItem = $shipmentItem->getOrderItem();
         $parentOrderItemId = $orderItem->getParentItemId();
         if (!is_null($parentOrderItemId)) {
             !in_array($parentOrderItemId, $allowedItems) && ($allowedItems[] = $parentOrderItemId);
             continue;
         }
         if (!in_array($orderItem->getProductType(), $productTypesNotAllowedByDefault)) {
             $allowedItems[] = $orderItem->getId();
         }
         $additionalData = $orderItem->getAdditionalData();
         $additionalData = is_string($additionalData) ? @unserialize($additionalData) : array();
         $itemId = $transactionId = null;
         $orderItemDataIdentifier = Ess_M2ePro_Helper_Data::CUSTOM_IDENTIFIER;
         if (isset($additionalData['ebay_item_id']) && isset($additionalData['ebay_transaction_id'])) {
             // backward compatibility with versions 5.0.4 or less
             $itemId = $additionalData['ebay_item_id'];
             $transactionId = $additionalData['ebay_transaction_id'];
         } elseif (isset($additionalData[$orderItemDataIdentifier]['items'])) {
             if (!is_array($additionalData[$orderItemDataIdentifier]['items']) || count($additionalData[$orderItemDataIdentifier]['items']) != 1) {
                 return null;
             }
             if (isset($additionalData[$orderItemDataIdentifier]['items'][0]['item_id'])) {
                 $itemId = $additionalData[$orderItemDataIdentifier]['items'][0]['item_id'];
             }
             if (isset($additionalData[$orderItemDataIdentifier]['items'][0]['transaction_id'])) {
                 $transactionId = $additionalData[$orderItemDataIdentifier]['items'][0]['transaction_id'];
             }
         }
         if (is_null($itemId) || is_null($transactionId)) {
             continue;
         }
         $item = Mage::helper('M2ePro/Component_Ebay')->getCollection('Order_Item')->addFieldToFilter('order_id', $order->getId())->addFieldToFilter('item_id', $itemId)->addFieldToFilter('transaction_id', $transactionId)->getFirstItem();
         if (!$item->getId()) {
             continue;
         }
         $items[$orderItem->getId()] = $item;
     }
     $resultItems = array();
     foreach ($items as $orderItemId => $item) {
         if (!in_array($orderItemId, $allowedItems)) {
             continue;
         }
         $resultItems[] = $item;
     }
     return $resultItems;
 }
Пример #4
0
 /**
  * @param Ess_M2ePro_Model_Order          $order
  * @param Mage_Sales_Model_Order_Shipment $shipment
  *
  * @return Ess_M2ePro_Model_Order_Item[]
  */
 private function getItemsToShip(Ess_M2ePro_Model_Order $order, Mage_Sales_Model_Order_Shipment $shipment)
 {
     $shipmentItems = $shipment->getAllItems();
     $orderItemDataIdentifier = Ess_M2ePro_Helper_Data::CUSTOM_IDENTIFIER;
     $items = array();
     foreach ($shipmentItems as $shipmentItem) {
         $additionalData = $shipmentItem->getOrderItem()->getAdditionalData();
         $additionalData = is_string($additionalData) ? @unserialize($additionalData) : array();
         if (!isset($additionalData[$orderItemDataIdentifier]['items'][0]['order_item_id'])) {
             continue;
         }
         $id = $additionalData[$orderItemDataIdentifier]['items'][0]['order_item_id'];
         $item = $order->getItemsCollection()->getItemByColumnValue('play_order_item_id', $id);
         if (is_null($item)) {
             continue;
         }
         $items[] = $item;
     }
     return $items;
 }
Пример #5
0
 /**
  * @param Ess_M2ePro_Model_Order          $order
  * @param Mage_Sales_Model_Order_Shipment $shipment
  *
  * @return null|Ess_M2ePro_Model_Order_Item
  */
 private function getItemToShip(Ess_M2ePro_Model_Order $order, Mage_Sales_Model_Order_Shipment $shipment)
 {
     if ($order->isSingle()) {
         return null;
     }
     $shipmentItems = $shipment->getAllItems();
     if (count($shipmentItems) != 1) {
         return null;
     }
     /** @var $shipmentItem Mage_Sales_Model_Order_Shipment_Item */
     $shipmentItem = reset($shipmentItems);
     $additionalData = $shipmentItem->getOrderItem()->getAdditionalData();
     $additionalData = is_string($additionalData) ? @unserialize($additionalData) : array();
     $itemId = $transactionId = null;
     $orderItemDataIdentifier = Ess_M2ePro_Helper_Data::CUSTOM_IDENTIFIER;
     if (isset($additionalData['ebay_item_id']) && isset($additionalData['ebay_transaction_id'])) {
         // backward compatibility with versions 5.0.4 or less
         $itemId = $additionalData['ebay_item_id'];
         $transactionId = $additionalData['ebay_transaction_id'];
     } elseif (isset($additionalData[$orderItemDataIdentifier]['items'])) {
         if (!is_array($additionalData[$orderItemDataIdentifier]['items']) || count($additionalData[$orderItemDataIdentifier]['items']) != 1) {
             return null;
         }
         if (isset($additionalData[$orderItemDataIdentifier]['items'][0]['item_id'])) {
             $itemId = $additionalData[$orderItemDataIdentifier]['items'][0]['item_id'];
         }
         if (isset($additionalData[$orderItemDataIdentifier]['items'][0]['transaction_id'])) {
             $transactionId = $additionalData[$orderItemDataIdentifier]['items'][0]['transaction_id'];
         }
     }
     if (is_null($itemId) || is_null($transactionId)) {
         return null;
     }
     $item = Mage::helper('M2ePro/Component_Ebay')->getCollection('Order_Item')->addFieldToFilter('order_id', $order->getId())->addFieldToFilter('item_id', $itemId)->addFieldToFilter('transaction_id', $transactionId)->getFirstItem();
     return $item->getId() ? $item : null;
 }
Пример #6
0
 /**
  * @param Ess_M2ePro_Model_Order          $order
  * @param Mage_Sales_Model_Order_Shipment $shipment
  *
  * @throws LogicException
  *
  * @return array
  */
 private function getItemsToShip(Ess_M2ePro_Model_Order $order, Mage_Sales_Model_Order_Shipment $shipment)
 {
     $shipmentItems = $shipment->getAllItems();
     $orderItemDataIdentifier = Ess_M2ePro_Helper_Data::CUSTOM_IDENTIFIER;
     $items = array();
     foreach ($shipmentItems as $shipmentItem) {
         $additionalData = $shipmentItem->getOrderItem()->getAdditionalData();
         $additionalData = is_string($additionalData) ? @unserialize($additionalData) : array();
         if (!isset($additionalData[$orderItemDataIdentifier]['items'])) {
             continue;
         }
         if (!is_array($additionalData[$orderItemDataIdentifier]['items'])) {
             continue;
         }
         $qtyAvailable = (int) $shipmentItem->getQty();
         foreach ($additionalData[$orderItemDataIdentifier]['items'] as $data) {
             if ($qtyAvailable <= 0) {
                 continue;
             }
             if (!isset($data['order_item_id'])) {
                 continue;
             }
             $item = $order->getItemsCollection()->getItemByColumnValue('amazon_order_item_id', $data['order_item_id']);
             if (is_null($item)) {
                 continue;
             }
             $qty = $item->getChildObject()->getQtyPurchased();
             if ($qty > $qtyAvailable) {
                 $qty = $qtyAvailable;
             }
             $items[] = array('qty' => $qty, 'amazon_order_item_id' => $data['order_item_id']);
             $qtyAvailable -= $qty;
         }
     }
     return $items;
 }
 public static function generateDocuments(Mage_Sales_Model_Order_Shipment $shipment)
 {
     $result = array();
     if ($shipment->getDcOrderId() && Mage::getStoreConfig('dc_charge_extension/dccharge/create-documents')) {
         $helper = Mage::helper('dccharge');
         $params = array();
         $params['calculation_id'] = $shipment->getDcOrderId();
         $params['output_currency'] = $shipment->getOrder()->getOrderCurrencyCode();
         $params['seller_first_name'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-first-name');
         $params['seller_last_name'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-last-name');
         $params['seller_country'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-country');
         $params['seller_address_line_1'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-address-line');
         $params['seller_city'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-city');
         $params['seller_zip'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-postcode');
         $params['seller_phone'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-phone');
         $params['shipment_invoice_no'] = $shipment->getIncrementId();
         $params['shipment_date'] = $shipment->getCreatedAt();
         $params['shipment_number_parcels'] = 1;
         $params['shipment_total_actual_weight'] = 0;
         foreach ($shipment->getAllItems() as $item) {
             $orderItem = $item->getOrderItem();
             $product = Mage::getModel('catalog/product')->load($orderItem->getProductId());
             if ($orderItem->getParentItemId() || !$orderItem->getQuoteItemId() || $product->isVirtual()) {
                 continue;
             }
             $itemWeightInKG = 0;
             if ($item->getWeight()) {
                 $weigthUnit = Mage::getStoreConfig('dc_charge_extension/dccharge/weight-unit');
                 $weight = Mage::getStoreConfig('dc_charge_extension/dccharge/allow-override-products-weight') ? Mage::getStoreConfig('dc_charge_extension/dccharge/overridden-products-weight') : $item->getWeight();
                 if ($weigthUnit == 'lb') {
                     $itemWeightInKG = round($weight * 0.45359237, 2);
                 } else {
                     $itemWeightInKG = $weight;
                 }
             }
             $params['shipment_total_actual_weight'] += $itemWeightInKG * $item->getQty();
         }
         $params['shipment_currency_sale'] = $shipment->getOrder()->getOrderCurrencyCode();
         if ($shipment->getDeliveryDutyType() == Dutycalculator_Charge_Helper_Data::DC_DELIVERY_TYPE_DDP) {
             $params['shipment_incoterms'] = 'DDP';
         } elseif ($shipment->getDeliveryDutyType() == Dutycalculator_Charge_Helper_Data::DC_DELIVERY_TYPE_DDU) {
             $params['shipment_incoterms'] = 'DAP';
         } else {
             $params['shipment_incoterms'] = '';
         }
         $shippingAddress = $shipment->getShippingAddress();
         $billingAddress = $shipment->getBillingAddress();
         $params['shipto_first_name'] = $shippingAddress->getFirstname();
         $params['shipto_last_name'] = $shippingAddress->getLastname();
         $params['shipto_address_line_1'] = $shippingAddress->getStreet(-1);
         $params['shipto_city'] = $shippingAddress->getCity();
         $params['shipto_zip'] = $shippingAddress->getPostcode();
         $params['shipto_country'] = $shippingAddress->getCountryId();
         $params['shipto_phone'] = $shippingAddress->getTelephone();
         $params['soldto_first_name'] = $billingAddress->getFirstname();
         $params['soldto_last_name'] = $billingAddress->getLastname();
         $params['soldto_address_line_1'] = $billingAddress->getStreet(-1);
         $params['soldto_city'] = $billingAddress->getCity();
         $params['soldto_zip'] = $billingAddress->getPostcode();
         $params['soldto_country'] = $billingAddress->getCountryId();
         $params['soldto_phone'] = $billingAddress->getTelephone();
         $params['print_first_name'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-first-name');
         $params['print_last_name'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-last-name');
         $params['print_date'] = date('Y-m-d');
         $rawXml = $helper->sendRequest('documents', $params);
         try {
             if (stripos($rawXml, '<?xml') === false) {
                 throw new Exception($rawXml);
             }
             $answer = new SimpleXMLElement($rawXml);
             $commercialInvoice = current($answer->xpath('commercial-invoice'));
             $packingList = current($answer->xpath('packing-list'));
             $result['commercial_invoice_url'] = (string) $commercialInvoice->url;
             $result['packing_list_url'] = (string) $packingList->url;
         } catch (Exception $ex) {
             Mage::logException($ex);
         }
     }
     return $result;
 }
Пример #8
0
 /**
  * Confirm crating of shipment
  *
  * @param Mage_Sales_Model_Order_Shipment $shipment
  * @return Mage_AmazonPayments_Model_Api_Cba
  */
 public function confirmShipment($shipment)
 {
     $items = array();
     foreach ($shipment->getAllItems() as $item) {
         /* @var $item Mage_Sales_Model_Order_Shipment_Item */
         if ($item->getOrderItem()->getParentItemId()) {
             continue;
         }
         $items[] = array('id' => $item->getOrderItem()->getExtOrderItemId(), 'qty' => $item->getQty());
     }
     $carrierName = '';
     $shippingMethod = '';
     $trackNumber = '';
     /**
      * Magento track numbers is not connected with items.
      * Get only first track number
      */
     foreach ($shipment->getAllTracks() as $track) {
         $carrierName = $track->getTitle();
         $trackNumber = $track->getNumber();
         break;
     }
     if (preg_match("/\\((.+)\\)/", $shipment->getOrder()->getShippingDescription(), $_result)) {
         $shippingMethod = $_result[1];
     }
     $this->getDocumentApi()->confirmShipment($shipment->getOrder()->getExtOrderId(), $carrierName, $shippingMethod, $items, $trackNumber);
     $shipment->addComment(Mage::helper('amazonpayments')->__('Shipment was created with Checkout by Amazon.'));
     return $this;
 }
 /**
  * @param Mage_Sales_Model_Order_Shipment $shipment
  * @return array
  */
 public function buildMap(Mage_Sales_Model_Order_Shipment $shipment)
 {
     $map = array('packingslip_id_label' => $this->getSalesHelper()->__('Packingslip # '), 'order_id_label' => $this->getSalesHelper()->__('Order # '), 'order_date_label' => $this->getSalesHelper()->__('Order Date: '), 'billing_address_label' => $this->getSalesHelper()->__('Sold to:'), 'shipping_address_label' => $this->getSalesHelper()->__('Ship to:'), 'payment_method_label' => $this->getSalesHelper()->__('Payment Method:'), 'shipping_method_label' => $this->getSalesHelper()->__('Shipping Method:'), 'products_qty_label' => $this->getSalesHelper()->__('Qty'), 'products_label' => $this->getSalesHelper()->__('Products'), 'products_sku_label' => $this->getSalesHelper()->__('SKU'));
     $order = $shipment->getOrder();
     $billingAddress = $order->getBillingAddress();
     $map['packingslip_id'] = $shipment->getIncrementId();
     $map['order_id'] = Mage::getStoreConfigFlag(Mage_Sales_Model_Order_Pdf_Shipment::XML_PATH_SALES_PDF_SHIPMENT_PUT_ORDER_ID, $order->getStoreId()) ? $order->getRealOrderId() : 'N/A';
     $map['order_date'] = $this->getCoreHelper()->formatDate($order->getCreatedAtStoreDate(), 'medium', false);
     $map['billing_name'] = $billingAddress->getFirstname() . ' ' . $billingAddress->getLastname();
     $map['billing_street'] = $billingAddress->getStreetFull();
     $map['billing_city'] = $billingAddress->getCity();
     $map['billing_zip'] = $billingAddress->getPostcode();
     $map['billing_country'] = $billingAddress->getCountryModel()->getIso2Code();
     $map['billing_phone'] = $billingAddress->getTelephone();
     $shippingAddress = $order->getShippingAddress();
     $map['shipping_name'] = $shippingAddress->getFirstname() . ' ' . $shippingAddress->getLastname();
     $map['shipping_street'] = $shippingAddress->getStreetFull();
     $map['shipping_city'] = $shippingAddress->getCity();
     $map['shipping_zip'] = $shippingAddress->getPostcode();
     $map['shipping_country'] = $shippingAddress->getCountry();
     $map['shipping_phone'] = $shippingAddress->getTelephone();
     $map['payment_method'] = $paymentInfo = $this->getPaymentHelper()->getInfoBlock($order->getPayment())->setIsSecureMode(true)->toHtml();
     $map['shipping_method'] = $order->getShippingDescription();
     $map['shipping_charges'] = '(' . $this->getSalesHelper()->__('Total Shipping Charges') . ' ' . $order->formatPriceTxt($order->getShippingAmount()) . ')';
     $map['products_data'] = '';
     foreach ($shipment->getAllItems() as $item) {
         if ($item->getOrderItem()->getParentItem()) {
             continue;
         }
         $map['products_data'] .= $this->drawItem($item, $order);
     }
     return $map;
 }
Пример #10
0
 /**
  * prepare item information 
  * 
  * @param Mage_Sales_Model_Order_Shipment $mOrderShipment 
  */
 private function _prepareItems($mOrderShipment)
 {
     $key = 0;
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vProd'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vNF'] = '0';
     /**
      * assign shipping values to items 
      */
     $nItems = count($mOrderShipment->getOrder()->getAllItems());
     if ($mOrderShipment->getOrder()->getShippingAmount()) {
         $vFrete = (string) number_format($mOrderShipment->getOrder()->getShippingAmount(), 2, '.', '');
         $vFreteParcial = number_format($vFrete / $nItems, 2, '.', '');
         for ($i = 0; $i < $nItems; $i++) {
             $arrFreteParcial[$i] = $vFreteParcial;
         }
         if ($vFreteParcial * $nItems < $vFrete) {
             $arrFreteParcial[0] += $vFrete - $vFreteParcial * $nItems;
         }
         if ($vFreteParcial * $nItems > $vFrete) {
             $arrFreteParcial[0] += $vFreteParcial * $nItems - $vFrete;
         }
         /**
          * format elements
          */
         for ($i = 0; $i < $nItems; $i++) {
             $arrFreteParcial[$i] = number_format($arrFreteParcial[$i], 2, '.', '');
         }
     }
     foreach ($mOrderShipment->getAllItems() as $_shipmentItem) {
         /**
          * load order item
          */
         $mOrderItem = Mage::getModel('sales/order_item')->load($_shipmentItem->getOrderItemId());
         $mProduct = Mage::getModel('catalog/product')->load($mOrderItem->getProductId());
         $cKey = $key;
         $aOrderItem[$cKey]['@nItem'] = ++$key;
         $aOrderItem[$cKey]['nfe.prod']['nfe.cProd'] = $_shipmentItem->getSku();
         $aOrderItem[$cKey]['nfe.prod']['nfe.cEAN'] = '';
         $aOrderItem[$cKey]['nfe.prod']['nfe.cEANTrib'] = '';
         $aOrderItem[$cKey]['nfe.prod']['nfe.xProd'] = trim($_shipmentItem->getName());
         $productPrice = $_shipmentItem->getPrice();
         $dDescTotal = 0;
         if ($mOrderItem->getDiscountAmount() > 0) {
             $dDescTotal = number_format($mOrderItem->getDiscountAmount() * ($_shipmentItem->getQty() / $mOrderItem->getQtyOrdered()), 2, '.', '');
         }
         $aOrderItem[$cKey]['nfe.prod']['nfe.vDesc'] = $dDescTotal;
         $diff = $mOrderShipment->getOrder()->getTotalPaid() - $mOrderShipment->getOrder()->getGrandTotal();
         $percent = $diff / $mOrderShipment->getOrder()->getGrandTotal();
         $productPrice = $productPrice * (1 + $percent);
         $aOrderItem[$cKey]['nfe.prod']['nfe.vProd'] = (string) number_format($productPrice * $_shipmentItem->getQty(), 2, '.', '');
         $aOrderItem[$cKey]['nfe.prod']['nfe.indTot'] = '1';
         /**
          * check CFOP code
          */
         $aOrderItem[$cKey]['nfe.prod']['nfe.CFOP'] = $this->getCustomerUf($mOrderShipment) == Mage::getStoreConfig('easynfe_nfe/emit/cuf') ? '5102' : '6108';
         $aOrderItem[$cKey]['nfe.prod']['nfe.NCM'] = (string) ($_shipmentItem->getNfeNcm() ? $_shipmentItem->getNfeNcm() : $mProduct->getNfeNcm());
         $aOrderItem[$cKey]['nfe.prod']['nfe.uCom'] = (string) ($_shipmentItem->getNfeUcom() ? $_shipmentItem->getNfeUcom() : $mProduct->getNfeUcom());
         $aOrderItem[$cKey]['nfe.prod']['nfe.qCom'] = (int) $_shipmentItem->getQty();
         $aOrderItem[$cKey]['nfe.prod']['nfe.vUnCom'] = (string) number_format($productPrice, 2, '.', '');
         $aOrderItem[$cKey]['nfe.prod']['nfe.uTrib'] = (string) ($_shipmentItem->getNfeUcom() ? $_shipmentItem->getNfeUcom() : $mProduct->getNfeUcom());
         $aOrderItem[$cKey]['nfe.prod']['nfe.qTrib'] = (int) $_shipmentItem->getQty();
         $aOrderItem[$cKey]['nfe.prod']['nfe.vUnTrib'] = (string) number_format($productPrice, 2, '.', '');
         $vFrete = 0;
         if ($arrFreteParcial[$cKey] > 0) {
             $vFrete = $arrFreteParcial[$cKey] * ($_shipmentItem->getQty() / $mOrderItem->getQtyOrdered()) * (1 + $percent);
             $aOrderItem[$cKey]['nfe.prod']['nfe.vFrete'] = (string) number_format($vFrete, 2, '.', '');
         }
         $vTotal = number_format($productPrice * $_shipmentItem->getQty(), 2, '.', '');
         /**
          * ICMS
          */
         $aOrderItem[$cKey]['nfe.imposto']['nfe.ICMS']['nfe.ICMSSN102']['nfe.orig'] = (string) ($_shipmentItem->getNfeOrig() ? $_shipmentItem->getNfeOrig() : '0');
         $aOrderItem[$cKey]['nfe.imposto']['nfe.ICMS']['nfe.ICMSSN102']['nfe.CSOSN'] = '102';
         /**
          * COFINS CST 99
          */
         $aOrderItem[$cKey]['nfe.imposto']['nfe.COFINS']['nfe.COFINSOutr']['nfe.CST'] = '99';
         $aOrderItem[$cKey]['nfe.imposto']['nfe.COFINS']['nfe.COFINSOutr']['nfe.vBC'] = '0';
         $aOrderItem[$cKey]['nfe.imposto']['nfe.COFINS']['nfe.COFINSOutr']['nfe.pCOFINS'] = '0';
         $aOrderItem[$cKey]['nfe.imposto']['nfe.COFINS']['nfe.COFINSOutr']['nfe.vCOFINS'] = '0';
         /**
          * PIS CST 99
          */
         $aOrderItem[$cKey]['nfe.imposto']['nfe.PIS']['nfe.PISOutr']['nfe.CST'] = '99';
         $aOrderItem[$cKey]['nfe.imposto']['nfe.PIS']['nfe.PISOutr']['nfe.vBC'] = '0';
         $aOrderItem[$cKey]['nfe.imposto']['nfe.PIS']['nfe.PISOutr']['nfe.pPIS'] = '0';
         $aOrderItem[$cKey]['nfe.imposto']['nfe.PIS']['nfe.PISOutr']['nfe.vPIS'] = '0';
         /**
          * sum items
          */
         $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vProd'] += $vTotal;
         $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vNF'] += $vTotal + $vFrete - $dDescTotal;
         $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vDesc'] += $dDescTotal;
         if ($vFrete > 0) {
             $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vFrete'] += $vFrete;
         }
     }
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vProd'] = (string) number_format($aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vProd'], 2, '.', '');
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vNF'] = (string) number_format($aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vNF'], 2, '.', '');
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vFrete'] = (string) number_format($aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vFrete'], 2, '.', '');
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vDesc'] = (string) number_format($aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vDesc'], 2, '.', '');
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vICMS'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vICMSDeson'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vBC'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vPIS'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vCOFINS'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vST'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vBCST'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vSeg'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vII'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vIPI'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vOutro'] = '0';
     return $aOrderItem;
 }
Пример #11
0
 /**
  * @param Mage_Sales_Model_Order_Shipment $shipment
  *
  * @return Bronto_Common_Model_Email_Template_Filter
  */
 protected function _filterShipment(Mage_Sales_Model_Order_Shipment $shipment)
 {
     $this->setStoreId($shipment->getOrder()->getStoreId());
     if (!in_array('shipment', $this->_filteredObjects)) {
         $index = 1;
         foreach ($shipment->getAllItems() as $item) {
             $_item = $item->getOrderItem();
             if (!$_item->getParentItem()) {
                 $this->_filterOrderItem($_item, $index);
                 $index++;
             }
         }
         $createdAt = $shipment->getCreatedAtStoreDate();
         if (empty($createdAt)) {
             // unset the blank string to force current timestamp
             $createdAt = null;
         }
         // Add Related Content
         $this->_items = $shipment->getAllItems();
         $this->setField('shipmentIncrementId', $shipment->getIncrementId());
         $this->setField('shipmentCreatedAt', Mage::helper('core')->formatDate($createdAt, 'long', true));
         // TODO: needed?
         $this->setField('shipmentItems', $this->_filterShipmentItems($shipment));
         $this->setField('shipmentTracking', $this->_getShipmentTrackingNumber($shipment, $shipment->getOrder()));
         $this->_filteredObjects[] = 'shipment';
     }
     return $this;
 }
 /**
  * prepare item information 
  * 
  * @param Mage_Sales_Model_Order_Shipment $mOrderShipment 
  */
 private function _prepareItems($mOrderShipment)
 {
     $key = 0;
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vBC'] = 0;
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vProd'] = 0;
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vICMS'] = 0;
     $mShipping = $mOrderShipment->getOrder()->getShippingAddress();
     /**
      * assign shipping values to items 
      */
     $nItems = count($mOrderShipment->getOrder()->getAllItems());
     if ($mOrderShipment->getOrder()->getShippingAmount()) {
         $vFrete = (string) number_format($mOrderShipment->getOrder()->getShippingAmount(), 2, '.', '');
         $vFreteParcial = number_format($vFrete / $nItems, 2, '.', '');
         for ($i = 0; $i < $nItems; $i++) {
             $arrFreteParcial[$i] = $vFreteParcial;
         }
         if ($vFreteParcial * $nItems < $vFrete) {
             $arrFreteParcial[0] += $vFrete - $vFreteParcial * $nItems;
         }
         if ($vFreteParcial * $nItems > $vFrete) {
             $arrFreteParcial[0] += $vFreteParcial * $nItems - $vFrete;
         }
         /**
          * format elements
          */
         for ($i = 0; $i < $nItems; $i++) {
             $arrFreteParcial[$i] = number_format($arrFreteParcial[$i], 2, '.', '');
         }
     }
     foreach ($mOrderShipment->getAllItems() as $_shipmentItem) {
         /**
          * load order item
          */
         $mOrderItem = Mage::getModel('sales/order_item')->load($_shipmentItem->getOrderItemId());
         $mProduct = Mage::getModel('catalog/product')->load($mOrderItem->getProductId());
         $cKey = $key;
         $aOrderItem[$cKey]['@nItem'] = ++$key;
         $aOrderItem[$cKey]['nfe.prod']['nfe.cProd'] = $_shipmentItem->getSku();
         $aOrderItem[$cKey]['nfe.prod']['nfe.cEAN'] = '';
         $aOrderItem[$cKey]['nfe.prod']['nfe.cEANTrib'] = '';
         $aOrderItem[$cKey]['nfe.prod']['nfe.xProd'] = trim($_shipmentItem->getName());
         $productPrice = $_shipmentItem->getPrice();
         $dDescTotal = 0;
         if ($mOrderItem->getDiscountAmount() > 0) {
             $dDescTotal = number_format($mOrderItem->getDiscountAmount() * ($_shipmentItem->getQty() / $mOrderItem->getQtyOrdered()), 2, '.', '');
             $productPrice -= $dDescTotal / $_shipmentItem->getQty();
         }
         $diff = $mOrderShipment->getOrder()->getTotalPaid() - $mOrderShipment->getOrder()->getGrandTotal();
         $percent = $diff / $mOrderShipment->getOrder()->getGrandTotal();
         $productPrice = $productPrice * (1 + $percent);
         unset($aOrderItem[$cKey]['nfe.prod']['nfe.vDesc']);
         $aOrderItem[$cKey]['nfe.prod']['nfe.vProd'] = (string) number_format($productPrice * $_shipmentItem->getQty(), 2, '.', '');
         $aOrderItem[$cKey]['nfe.prod']['nfe.indTot'] = '1';
         $sCustomerUf = Mage::getModel('easynfe_nfe/directory_country_region')->load($mShipping->getRegionId(), 'region_id')->getId();
         /**
          * check CFOP code
          */
         $aOrderItem[$cKey]['nfe.prod']['nfe.CFOP'] = $sCustomerUf == Mage::getStoreConfig('easynfe_nfe/emit/cuf') ? '5102' : '6108';
         $aOrderItem[$cKey]['nfe.prod']['nfe.NCM'] = (string) ($_shipmentItem->getNfeNcm() ? $_shipmentItem->getNfeNcm() : $mProduct->getNfeNcm());
         $aOrderItem[$cKey]['nfe.prod']['nfe.uCom'] = (string) ($_shipmentItem->getNfeUcom() ? $_shipmentItem->getNfeUcom() : $mProduct->getNfeUcom());
         $aOrderItem[$cKey]['nfe.prod']['nfe.qCom'] = (int) $_shipmentItem->getQty();
         $aOrderItem[$cKey]['nfe.prod']['nfe.vUnCom'] = (string) number_format($productPrice, 2, '.', '');
         $aOrderItem[$cKey]['nfe.prod']['nfe.uTrib'] = (string) ($_shipmentItem->getNfeUcom() ? $_shipmentItem->getNfeUcom() : $mProduct->getNfeUcom());
         $aOrderItem[$cKey]['nfe.prod']['nfe.qTrib'] = (int) $_shipmentItem->getQty();
         $aOrderItem[$cKey]['nfe.prod']['nfe.vUnTrib'] = (string) number_format($productPrice, 2, '.', '');
         $vFrete = 0;
         if ($arrFreteParcial[$cKey] > 0) {
             $vFrete = $arrFreteParcial[$cKey] * ($_shipmentItem->getQty() / $mOrderItem->getQtyOrdered()) * (1 + $percent);
             $aOrderItem[$cKey]['nfe.prod']['nfe.vFrete'] = (string) number_format($vFrete, 2, '.', '');
         }
         $vTotal = number_format($productPrice * $_shipmentItem->getQty(), 2, '.', '');
         /**
          * ICMS 00
          */
         $aOrderItem[$cKey]['nfe.imposto']['nfe.ICMS']['nfe.ICMS00']['nfe.orig'] = (string) ($_shipmentItem->getNfeOrig() ? $_shipmentItem->getNfeOrig() : '0');
         $aOrderItem[$cKey]['nfe.imposto']['nfe.ICMS']['nfe.ICMS00']['nfe.CST'] = '00';
         $aOrderItem[$cKey]['nfe.imposto']['nfe.ICMS']['nfe.ICMS00']['nfe.modBC'] = '0';
         //a definir
         $aOrderItem[$cKey]['nfe.imposto']['nfe.ICMS']['nfe.ICMS00']['nfe.vBC'] = (string) number_format($vTotal + $vFrete, 2, '.', '');
         /**
          * ICMS fixed 18% 
          */
         $aOrderItem[$cKey]['nfe.imposto']['nfe.ICMS']['nfe.ICMS00']['nfe.pICMS'] = '18';
         $aOrderItem[$cKey]['nfe.imposto']['nfe.ICMS']['nfe.ICMS00']['nfe.vICMS'] = (string) number_format(($vTotal + $vFrete) * 0.18, 2, '.', '');
         /**
          * COFINS CST 01 - 7.60%
          */
         $pAliquotaCofins = '7.60';
         $aOrderItem[$cKey]['nfe.imposto']['nfe.COFINS']['nfe.COFINSAliq']['nfe.CST'] = '01';
         $aOrderItem[$cKey]['nfe.imposto']['nfe.COFINS']['nfe.COFINSAliq']['nfe.vBC'] = (string) number_format($vTotal + $vFrete, 2, '.', '');
         $aOrderItem[$cKey]['nfe.imposto']['nfe.COFINS']['nfe.COFINSAliq']['nfe.pCOFINS'] = $pAliquotaCofins;
         $aOrderItem[$cKey]['nfe.imposto']['nfe.COFINS']['nfe.COFINSAliq']['nfe.vCOFINS'] = (string) number_format(($vTotal + $vFrete) * ($pAliquotaCofins / 100), 2, '.', '');
         /**
          * PIS CST 01 - 1.65%
          */
         $pAliquotaPis = '1.65';
         $aOrderItem[$cKey]['nfe.imposto']['nfe.PIS']['nfe.PISAliq']['nfe.CST'] = '01';
         $aOrderItem[$cKey]['nfe.imposto']['nfe.PIS']['nfe.PISAliq']['nfe.vBC'] = (string) number_format($vTotal + $vFrete, 2, '.', '');
         $aOrderItem[$cKey]['nfe.imposto']['nfe.PIS']['nfe.PISAliq']['nfe.pPIS'] = $pAliquotaPis;
         $aOrderItem[$cKey]['nfe.imposto']['nfe.PIS']['nfe.PISAliq']['nfe.vPIS'] = (string) number_format(($vTotal + $vFrete) * ($pAliquotaPis / 100), 2, '.', '');
         /**
          * sum items
          */
         $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vProd'] += $vTotal;
         $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vICMS'] += ($vTotal + $vFrete) * 0.18;
         $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vBC'] += $vTotal + $vFrete;
         $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vNF'] += $vTotal + $vFrete;
         $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vPIS'] += ($vTotal + $vFrete) * ($pAliquotaPis / 100);
         $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vCOFINS'] += ($vTotal + $vFrete) * ($pAliquotaCofins / 100);
         if ($vFrete > 0) {
             $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vFrete'] += $vFrete;
         }
         /*if( $dTotal ){
               $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vDesc'] += $dTotal;
           }*/
     }
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vProd'] = (string) number_format($aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vProd'], 2, '.', '');
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vICMS'] = (string) number_format($aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vICMS'], 2, '.', '');
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vBC'] = (string) number_format($aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vBC'], 2, '.', '');
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vNF'] = (string) number_format($aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vNF'], 2, '.', '');
     // if( $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vFrete'] )
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vFrete'] = (string) number_format($aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vFrete'], 2, '.', '');
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vPIS'] = (string) number_format($aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vPIS'], 2, '.', '');
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vCOFINS'] = (string) number_format($aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vCOFINS'], 2, '.', '');
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vST'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vBCST'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vSeg'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vDesc'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vII'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vIPI'] = '0';
     $aOrderItem['nfe.total']['nfe.ICMSTot']['nfe.vOutro'] = '0';
     return $aOrderItem;
 }
 /**
  * Get all items in the shipment. Hidden items will be excluded by default
  * but can be included using the `$includeHidden` argument.
  *
  * @param bool
  * @return Mage_Sales_Model_Order_Item[]
  */
 public function getAllItems($includeHidden = false)
 {
     // parent::getAllItems will include hidden and non-hidden items by default.
     // When hidden items are to be included, the whole array can simply be
     // returned. When hidden items should not be included, they need to
     // be filtered out of the list.
     $items = parent::getAllItems();
     return $includeHidden ? $items : $this->itemHelper->filterHiddenGiftItems($items);
 }