Пример #1
0
 /**
  * Adds shipment with specified tracking number
  *
  * @param Mage_Sales_Model_Order_Shipment $shipment
  * @param Mage_Sales_Model_Order_Shipment_Track $track
  */
 private function _addShipmentWithTrack(Mage_Sales_Model_Order_Shipment $shipment, Mage_Sales_Model_Order_Shipment_Track $track = null)
 {
     $mageCarrierCode = $this->_getCarrierCodeFromOrder($shipment->getOrder());
     $carrierCode = $this->_getConfig()->getCarrierCode($mageCarrierCode);
     $otherCarrierName = $carrierCode == Mage_GoogleTrustedStore_Model_Config::CARRIER_CODE_OTHER ? $this->_getConfig()->getOtherCarrierName($mageCarrierCode) : '';
     $this->_addRow(array($shipment->getOrder()->getIncrementId(), trim($track ? $track->getNumber() : ''), $carrierCode, $otherCarrierName, $shipment->getCreatedAtDate()->toString('yyyy-MM-dd')));
 }
Пример #2
0
 /**
  * Get html for the PGaddress
  *
  * @return string
  */
 public function getPgAddressHtml()
 {
     $res = array();
     $pgAddress = Mage::helper('tig_myparcel')->getPgAddress($this->_shipment->getOrder());
     if ($pgAddress) {
         $res = array($pgAddress->getCompany(), implode(' ', $pgAddress->getStreet()), $pgAddress->getPostcode() . ' ' . $pgAddress->getCity() . ' (' . $pgAddress->getCountry() . ')');
     }
     return empty($res) ? '' : '<p>' . implode('<br/>', $res) . '</p>';
 }
Пример #3
0
 /**
  * True is returned if we transport the shipment in a single package.
  *
  * @param Mage_Sales_Model_Order_Shipment $shipment
  *
  * @return boolean
  */
 public function mustShipInOneParcel(Mage_Sales_Model_Order_Shipment $shipment)
 {
     $carrier = $shipment->getOrder()->getShippingCarrier();
     if ($carrier instanceof Zitec_PackedShipment_Model_Carrier_Interface) {
         $shippingMethod = $shipment->getOrder()->getShippingMethod();
         return $carrier->shippingMethodRequiresShipmentsOfOnlyOneParcel($shippingMethod);
     }
     return true;
 }
 /**
  * @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;
 }
Пример #5
0
 public function generateShipmentArray(Mage_Sales_Model_Order_Shipment $shipment)
 {
     $address = $shipment->getShippingAddress();
     $trackingMethods = $shipment->getAllTracks();
     $primaryTrack = count($trackingMethods) ? $trackingMethods[0] : false;
     $array = array('@context' => 'http://schema.org', '@type' => 'ParcelDelivery', 'deliveryAddress' => array('@type' => 'PostalAddress', 'streetAddress' => $address->getStreetFull(), 'addressLocality' => $address->getCity(), 'addressRegion' => $address->getRegionCode(), 'addressCountry' => $address->getCountry(), 'postalCode' => $address->getPostcode()), 'partOfOrder' => $this->generateOrderArray($shipment->getOrder()), "expectedArrivalUntil" => date("c", time() + 60 * 60 * 24 * 365.25));
     if (count($trackingMethods)) {
         $array['carrier'] = $primaryTrack->getTitle();
         $array['trackingNumber'] = $primaryTrack->getNumber();
         $array['trackingUrl'] = $this->helper('shipping')->getTrackingPopUpUrlByTrackId($primaryTrack->getId());
     }
     return $array;
 }
Пример #6
0
 /**
  * Save shipment
  *
  * @param Mage_Sales_Model_Order_Shipment $shipment
  * @param array $data
  * @return bool
  */
 public function saveShipment($shipment, $data)
 {
     $result = false;
     $carrierCode = $shipment->getOrder()->getShippingCarrier()->getCarrierCode();
     switch (true) {
         case Mage::getModel('shippingcore/carrier_aramex')->isUsed($carrierCode):
             $result = Mage::getModel('shippingcore/carrier_aramex')->saveShipment($shipment, $data);
             break;
         case Mage::getModel('shippingcore/carrier_skynet')->isUsed($carrierCode):
             $result = Mage::getModel('shippingcore/carrier_skynet')->saveShipment($shipment, $data);
             break;
     }
     return $result;
 }
Пример #7
0
 /**
  * Send vendor comment to store owner
  *
  * @param Mage_Sales_Model_Order_Shipment $shipment
  * @param string $comment
  */
 public function sendVendorComment($shipment, $comment)
 {
     $order = $shipment->getOrder();
     $store = $order->getStore();
     $to = $store->getConfig('udropship/admin/vendor_comments_receiver');
     $subject = $store->getConfig('udropship/admin/vendor_comments_subject');
     $template = $store->getConfig('udropship/admin/vendor_comments_template');
     $vendor = $this->getVendor($shipment->getUdropshipVendor());
     $ahlp = Mage::getModel('adminhtml/url');
     if ($subject && $template && $vendor->getId()) {
         $toEmail = $store->getConfig('trans_email/ident_' . $to . '/email');
         $toName = $store->getConfig('trans_email/ident_' . $to . '/name');
         $data = array('vendor_name' => $vendor->getVendorName(), 'order_id' => $order->getIncrementId(), 'shipment_id' => $shipment->getIncrementId(), 'vendor_url' => $ahlp->getUrl('udropship/adminhtml_vendor/edit', array('id' => $vendor->getId())), 'order_url' => $ahlp->getUrl('adminhtml/sales_order/view', array('order_id' => $order->getId())), 'shipment_url' => $ahlp->getUrl('adminhtml/sales_order_shipment/view', array('shipment_id' => $shipment->getId(), 'order_id' => $order->getId())), 'comment' => $comment);
         if ($this->isUdpoActive() && ($po = Mage::helper('udpo')->getShipmentPo($shipment))) {
             $data['po_id'] = $po->getIncrementId();
             $data['po_url'] = $ahlp->getUrl('udpoadmin/order_po/view', array('udpo_id' => $po->getId(), 'order_id' => $order->getId()));
             $template = preg_replace('/{{isPoAvailable}}(.*?){{\\/isPoAvailable}}/s', '\\1', $template);
         } else {
             $template = preg_replace('/{{isPoAvailable}}.*?{{\\/isPoAvailable}}/s', '', $template);
         }
         foreach ($data as $k => $v) {
             $subject = str_replace('{{' . $k . '}}', $v, $subject);
             $template = str_replace('{{' . $k . '}}', $v, $template);
         }
         $mail = Mage::getModel('core/email')->setFromEmail($vendor->getEmail())->setFromName($vendor->getVendorName())->setToEmail($toEmail)->setToName($toName)->setSubject($subject)->setBody($template)->send();
         //mail('"'.$toName.'" <'.$toEmail.'>', $subject, $template, 'From: "'.$vendor->getVendorName().'" <'.$vendor->getEmail().'>');
     }
     Mage::helper('udropship')->addShipmentComment($shipment, $this->__($vendor->getVendorName() . ': ' . $comment));
     $shipment->getCommentsCollection()->save();
     return $this;
 }
Пример #8
0
 protected function _createShipmentInfo(Mage_Sales_Model_Order_Shipment $shipment)
 {
     $result = array('shipmentId' => $shipment->getIncrementId(), 'shippingFees' => array('amount' => '0', 'code' => Mage::app()->getStore()->getBaseCurrencyCode()), 'discountAmount' => null, 'discounts' => null, 'additionalCost' => null, 'packagingHandlingCost' => null, 'surcharge' => null, 'trackingDetails' => $this->_createTrackingInfo($shipment->getAllTracks()), 'shippingMethod' => $shipment->getOrder()->getShippingDescription(), 'deliveryWindow' => null, 'shippingWindow' => null, 'shippingMessage' => null);
     return $result;
 }
Пример #9
0
 /**
  * Saves the Shipment changes in the Order
  *
  * @param $shipment Mage_Sales_Model_Order_Shipment
  * @param $order Mage_Sales_Model_Order
  * @param $customerEmailComments string
  */
 protected function _saveShipment(Mage_Sales_Model_Order_Shipment $shipment, Mage_Sales_Model_Order $order, $customerEmailComments = '')
 {
     $shipment->getOrder()->setIsInProcess(true);
     $transactionSave = Mage::getModel('core/resource_transaction')->addObject($shipment)->addObject($order)->save();
     $emailSentStatus = $shipment->getData('email_sent');
     if (!is_null($customerEmail) && !$emailSentStatus) {
         $shipment->sendEmail(true, $customerEmailComments);
         $shipment->setEmailSent(true);
     }
     return $this;
 }
 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;
 }
Пример #11
0
 /**
  * @param Mage_Sales_Model_Order_Shipment $shipment
  *
  * @return String                          containing HTML for shipment items and tracking numbers
  */
 protected function _filterShipmentItems(Mage_Sales_Model_Order_Shipment $shipment)
 {
     $order = $shipment->getOrder();
     $layout = Mage::getSingleton('core/layout');
     /* @var $items Mage_Sales_Block_Items_Abstract */
     $items = $layout->createBlock('sales/order_email_shipment_items', 'items');
     $items->setTemplate('email/order/shipment/items.phtml');
     $items->setOrder($order);
     $items->setShipment($shipment);
     // Setup templates to use for products
     $items->addItemRender('default', 'sales/order_email_items_order_default', 'email/order/items/shipment/default.phtml');
     $items->addItemRender('grouped', 'sales/order_email_items_order_grouped', 'email/order/items/shipment/default.phtml');
     $items->addItemRender('bundle', 'bundle/sales_order_items_renderer', 'bundle/email/order/items/shipment/default.phtml');
     // When emailing from the admin, we need to ensure that we're using templates from the frontend
     Mage::getDesign()->setArea('frontend');
     return $items->toHtml();
 }
 /**
  * Save shipment and order in one transaction
  * @param Mage_Sales_Model_Order_Shipment $shipment
  */
 protected function _saveShipment($shipment)
 {
     $shipment->getOrder()->setIsInProcess(true);
     $transactionSave = Mage::getModel('core/resource_transaction')->addObject($shipment)->addObject($shipment->getOrder())->save();
     return $this;
 }
Пример #13
0
 /**
  * Get default weight.
  *
  * @param  Mage_Sales_Model_Order_Shipment  $shipment
  * @return float                            $weight
  */
 public function getDefaultWeight(Mage_Sales_Model_Order_Shipment $shipment)
 {
     $weight = 0;
     if (true === $this->getConfig()->useProductWeightAsDefault()) {
         /* @var $item Mage_Sales_Model_Order_Item */
         foreach ($shipment->getOrder()->getItemsCollection() as $item) {
             if (false === Mage::helper('intraship')->isAllowedProductTypeForWeightCalculation($item->getProductType())) {
                 continue;
             }
             $weight += Mage::helper('intraship')->convertWeight((double) $item->getWeight() * (double) $item->getQtyOrdered());
         }
     } else {
         $weight = $this->getConfig()->getWeightDefault($shipment->getShippingAddress()->getCountryId());
     }
     return (double) $weight;
 }
Пример #14
0
 /**
  *
  * @param Mage_Sales_Model_Order_Shipment $shipment
  *
  * @return boolean
  */
 public function isCancelledWithDpd(Mage_Sales_Model_Order_Shipment $shipment)
 {
     return $this->isShippingMethodDpd($shipment->getOrder()->getShippingMethod()) && !$shipment->getShippingLabel();
 }
Пример #15
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;
 }
Пример #16
0
 /**
  * @param Mage_Sales_Model_Order_Shipment $shipment
  *
  * @return String                          containing HTML for shipment items and tracking numbers
  */
 protected function _filterShipmentItems(Mage_Sales_Model_Order_Shipment $shipment)
 {
     $order = $shipment->getOrder();
     $layout = Mage::getSingleton('core/layout');
     /* @var $items Mage_Sales_Block_Items_Abstract */
     $items = $layout->createBlock('sales/order_email_shipment_items', 'items');
     $items->setTemplate('email/order/shipment/items.phtml');
     $items->setOrder($order);
     $items->setShipment($shipment);
     // Setup templates to use for products
     $items->addItemRender('default', 'sales/order_email_items_order_default', 'email/order/items/shipment/default.phtml');
     $items->addItemRender('grouped', 'sales/order_email_items_order_grouped', 'email/order/items/shipment/default.phtml');
     $items->addItemRender('bundle', 'bundle/sales_order_items_renderer', 'bundle/email/order/items/shipment/default.phtml');
     $this->_respectDesignTheme();
     return $items->toHtml();
 }
Пример #17
0
 public function sendUpdateShipmentEmail(SM_Vendors_Model_Order $vendorOrder, Mage_Sales_Model_Order_Shipment $shipment, $notifyCustomer = true, $comment = '')
 {
     $data = array();
     $data['order'] = $shipment->getOrder();
     $data['can_send_method'] = 'canSendShipmentCommentEmail';
     $data['template_id'] = self::SHIPMENT_EMAIL_UPDATE_TEMPLATE_ID;
     $data['email_identity'] = self::SHIPMENT_XML_PATH_UPDATE_EMAIL_IDENTITY;
     $data['notify_customer'] = $notifyCustomer;
     $data['target_object'] = $shipment;
     $data['template_params'] = array('comment' => $comment, 'shipment' => $shipment);
     $result = $this->_sendMail($vendorOrder, $data, self::TYPE_UPDATE);
     if (!$result) {
         Mage::log("[smvendors][sendUpdateShipmentEmail] Error when sending email. Data=\n");
         Mage::log(print_r($data, true));
     }
     return $result;
 }
 /**
  * Send order shipment to Rakuten Checkout
  *
  * @param  Mage_Sales_Model_Order_Shipment $shipment
  * @return bool
  * @throws Exception|Mage_Core_Exception
  */
 public function sendShipment($shipment)
 {
     // Create Rakuten Checkout Send Order Shipment XML request
     $xml = new SimpleXMLElement("<?xml version='1.0' encoding='UTF-8' ?><tradoria_order_shipment />");
     $merchantAuth = $xml->addChild('merchant_authentication');
     $merchantAuth->addChild('project_id', $this->_projectId);
     $merchantAuth->addChild('api_key', $this->_apiKey);
     /** @var $order Mage_Sales_Model_Order */
     $order = $shipment->getOrder();
     $xml->addChild('order_no', $order->getExtOrderId());
     $carrierTrackingId = $xml->addChild('carrier_tracking_id');
     $carrierTrackingUrl = $xml->addChild('carrier_tracking_url');
     $carrierTrackingCode = $xml->addChild('carrier_tracking_code');
     if ($tracks = $shipment->getAllTracks()) {
         /** @var $track Mage_Sales_Model_Order_Shipment_Track */
         $track = array_shift($tracks);
         // Multiple tracking codes for one shipment are supported by Magento
         $this->_addCDATA($carrierTrackingId, $track->getCarrierCode());
         $this->_addCDATA($carrierTrackingCode, $track->getNumber());
     }
     $request = $xml->asXML();
     $response = $this->sendRequest($request, 'shipment');
     try {
         $response = new SimpleXMLElement($response);
         if ($response->success != 'true') {
             throw new Mage_Core_Exception((string) $response->message, (int) $response->code);
         } else {
             if ((string) $response->invoice_number != '') {
                 $comment = Mage::helper('rakuten')->__('Rakuten Invoice No: %s', '<strong>' . (string) $response->invoice_number . '</strong><br />');
                 $shipment->addComment($comment);
                 $order->addStatusHistoryComment($comment);
             }
         }
     } catch (Mage_Core_Exception $e) {
         throw $e;
     } catch (Exception $e) {
         Mage::logException($e);
         throw $e;
     }
     return true;
 }
 /**
  * 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;
 }
Пример #20
0
 /**
  * Save shipment and order in one transaction
  *
  * @param Mage_Sales_Model_Order_Shipment $shipment
  * @return Mage_Adminhtml_Sales_Order_ShipmentController
  */
 protected function _saveShipment($shipment)
 {
     $shipment->getOrder()->setIsInProcess(true);
     $transactionSave = Mage::getModel('core/resource_transaction')->addObject($shipment)->addObject($shipment->getOrder());
     // HiepHM Process vendor order
     if ($vendorOrder = Mage::registry('vendor_order')) {
         /* @var $vendorOrder SM_Vendors_Model_Order */
         $vendorOrder->registerShipment($shipment);
         $transactionSave->addObject($vendorOrder);
     }
     $transactionSave->save();
     return $this;
 }
Пример #21
0
 /**
  * Prepare and do request to shipment
  *
  * @param Mage_Sales_Model_Order_Shipment $orderShipment
  * @return Varien_Object
  */
 public function requestToShipment(Mage_Sales_Model_Order_Shipment $orderShipment)
 {
     $admin = Mage::getSingleton('admin/session')->getUser();
     $order = $orderShipment->getOrder();
     $address = $order->getShippingAddress();
     $selectedShipMethod = $this->_mapShipMethod($order->getShippingMethod(true), $order->getShippingCarrier(), $address);
     $shipmentStoreId = $orderShipment->getStoreId();
     $shipmentCarrier = Mage::getModel('wsaendicia/carrier_endicia');
     $shippingMethod = $this->_getShipmentCarrier($selectedShipMethod, $shipmentCarrier->getCarrierCode());
     $baseCurrencyCode = Mage::app()->getStore($shipmentStoreId)->getBaseCurrencyCode();
     if (!$shipmentCarrier) {
         Mage::throwException('Invalid carrier: ' . $shippingMethod->getCarrierCode());
     }
     $shipperRegionCode = Mage::getStoreConfig(self::XML_PATH_STORE_REGION_ID, $shipmentStoreId);
     if (is_numeric($shipperRegionCode)) {
         $shipperRegionCode = Mage::getModel('directory/region')->load($shipperRegionCode)->getCode();
     }
     $recipientRegionCode = Mage::getModel('directory/region')->load($address->getRegionId())->getCode();
     $originStreet1 = Mage::getStoreConfig(self::XML_PATH_STORE_ADDRESS1, $shipmentStoreId);
     $originStreet2 = Mage::getStoreConfig(self::XML_PATH_STORE_ADDRESS2, $shipmentStoreId);
     $storeInfo = new Varien_Object(Mage::getStoreConfig('general/store_information', $shipmentStoreId));
     if (!$admin->getFirstname() || !$admin->getLastname() || !$storeInfo->getName() || !$storeInfo->getPhone() || !$originStreet1 || !Mage::getStoreConfig(self::XML_PATH_STORE_CITY, $shipmentStoreId) || !$shipperRegionCode || !Mage::getStoreConfig(self::XML_PATH_STORE_ZIP, $shipmentStoreId) || !Mage::getStoreConfig(self::XML_PATH_STORE_COUNTRY_ID, $shipmentStoreId)) {
         Mage::throwException(Mage::helper('sales')->__('Insufficient information to create shipping label(s). Please verify your Store Information and Shipping Settings.'));
     }
     /** @var $request Mage_Shipping_Model_Shipment_Request */
     $request = Mage::getModel('shipping/shipment_request');
     $request->setOrderShipment($orderShipment);
     $request->setShipperContactPersonName($admin->getName());
     $request->setShipperContactPersonFirstName($admin->getFirstname());
     $request->setShipperContactPersonLastName($admin->getLastname());
     $request->setShipperContactCompanyName($storeInfo->getName());
     $request->setShipperContactPhoneNumber($storeInfo->getPhone());
     $request->setShipperEmail($admin->getEmail());
     $request->setShipperAddressStreet(trim($originStreet1 . ' ' . $originStreet2));
     $request->setShipperAddressStreet1($originStreet1);
     $request->setShipperAddressStreet2($originStreet2);
     $request->setShipperAddressCity(Mage::getStoreConfig(self::XML_PATH_STORE_CITY, $shipmentStoreId));
     $request->setShipperAddressStateOrProvinceCode($shipperRegionCode);
     $request->setShipperAddressPostalCode(Mage::getStoreConfig(self::XML_PATH_STORE_ZIP, $shipmentStoreId));
     $request->setShipperAddressCountryCode(Mage::getStoreConfig(self::XML_PATH_STORE_COUNTRY_ID, $shipmentStoreId));
     $request->setRecipientContactPersonName(trim($address->getFirstname() . ' ' . $address->getLastname()));
     $request->setRecipientContactPersonFirstName($address->getFirstname());
     $request->setRecipientContactPersonLastName($address->getLastname());
     $request->setRecipientContactCompanyName($address->getCompany());
     $request->setRecipientContactPhoneNumber($address->getTelephone());
     $request->setRecipientEmail($address->getEmail());
     $request->setRecipientAddressStreet(trim($address->getStreet1() . ' ' . $address->getStreet2()));
     $request->setRecipientAddressStreet1($address->getStreet1());
     $request->setRecipientAddressStreet2($address->getStreet2());
     $request->setRecipientAddressCity($address->getCity());
     $request->setRecipientAddressStateOrProvinceCode($address->getRegionCode());
     $request->setRecipientAddressRegionCode($recipientRegionCode);
     $request->setRecipientAddressPostalCode($address->getPostcode());
     $request->setRecipientAddressCountryCode($address->getCountryId());
     $request->setShippingMethod($shippingMethod->getMethod());
     $request->setPackageWeight($order->getWeight());
     $request->setPackages($orderShipment->getPackages());
     $request->setBaseCurrencyCode($baseCurrencyCode);
     $request->setStoreId($shipmentStoreId);
     return $shipmentCarrier->requestToShipment($request);
 }
 /**
  * Create shipping label for specific shipment with validation.
  *
  * @param Mage_Sales_Model_Order_Shipment $shipment
  * @return bool
  */
 protected function _createShippingLabel(Mage_Sales_Model_Order_Shipment $shipment)
 {
     if (!$shipment) {
         return false;
     }
     $carrier = $shipment->getOrder()->getShippingCarrier();
     if (!$carrier->isShippingLabelsAvailable()) {
         return false;
     }
     $shipment->setPackages($this->getRequest()->getParam('packages'));
     $response = Mage::getModel('shipping/shipping')->requestToShipment($shipment);
     if ($response->hasErrors()) {
         Mage::throwException($response->getErrors());
     }
     if (!$response->hasInfo()) {
         return false;
     }
     $labelsContent = array();
     $trackingNumbers = array();
     $info = $response->getInfo();
     foreach ($info as $inf) {
         if (!empty($inf['tracking_number']) && !empty($inf['label_content'])) {
             $labelsContent[] = $inf['label_content'];
             $trackingNumbers[] = $inf['tracking_number'];
         }
     }
     $outputPdf = $this->_combineLabelsPdf($labelsContent);
     $shipment->setShippingLabel($outputPdf->render());
     $carrierCode = $carrier->getCarrierCode();
     $carrierTitle = Mage::getStoreConfig('carriers/' . $carrierCode . '/title', $shipment->getStoreId());
     if ($trackingNumbers) {
         foreach ($trackingNumbers as $trackingNumber) {
             $track = Mage::getModel('sales/order_shipment_track')->setNumber($trackingNumber)->setCarrierCode($carrierCode)->setTitle($carrierTitle);
             $shipment->addTrack($track);
         }
     }
     return true;
 }
Пример #23
0
 /**
  * @param Mage_Sales_Model_Order_Shipment $shipment
  *
  * @return bool
  */
 protected function _canSaveDpdShipment(Mage_Sales_Model_Order_Shipment $shipment)
 {
     if (!$this->_isOrderShipmentNew || $this->_isProcessed) {
         return false;
     }
     if (!$this->_getHelper()->moduleIsActive($shipment->getOrder()->getStore())) {
         return false;
     }
     if (!$this->_getHelper()->isShippingMethodDpd($shipment->getOrder()->getShippingMethod())) {
         return false;
     }
     return true;
 }
Пример #24
0
 /**
  * Add Shipment Information
  *
  * @param Mage_Sales_Model_Order_Shipment $data
  * @return Mage_Usa_Model_Shipping_Carrier_Dhl_Label_Pdf_Page
  * @throws Exception
  */
 public function addShipmentInformation($data)
 {
     $this->_page->saveGS();
     $this->_page->setFont($this->_fontNormal, 6);
     $refCode = $data->getOrder()->getIncrementId();
     if (!$refCode) {
         throw new InvalidArgumentException(Mage::helper('usa')->__('Reference code is missing'));
     }
     $this->_page->drawText('Ref Code: ' . Mage::helper('usa')->__('Order #%s', $refCode), $this->_x(8), $this->_y(224));
     $this->_page->restoreGS();
     return $this;
 }
Пример #25
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;
 }
 /**
  * Saving shipment and order in one transaction.
  * @param  Mage_Sales_Model_Order_Shipment $shipment
  * @param  string $incrementId
  * @return self
  */
 protected function _saveShipment(Mage_Sales_Model_Order_Shipment $shipment, $incrementId)
 {
     $order = $shipment->getOrder();
     $order->setIsInProcess(true);
     $transactionSave = Mage::getModel('core/resource_transaction')->addObject($shipment)->addObject($order);
     try {
         $transactionSave->save();
     } catch (Exception $e) {
         $logData = ['increment_id' => $incrementId];
         $logMessage = 'An error occurred saving shipment confirmation to order id ({increment_id}). See exception log for details.';
         $this->_logger->error($logMessage, $this->_context->getMetaData(__CLASS__, $logData));
         $this->_logger->logException($e, $this->_context->getMetaData(__CLASS__, [], $e));
     }
     return $this;
 }
Пример #27
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;
         $lineItems = Mage::helper('bronto_common/item')->getFlatItems($shipment);
         foreach ($lineItems as $item) {
             $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;
 }