/** * Check if can make payment for order * * @param Mage_Sales_Model_Order $order * @return bool */ public function canMakePayment($order) { if ($order->getPayment() && $order->getPayment()->getMethod() == 'purchaseorder' && $order->canShip()) { return false; } if ($order->getStatus() != 'purchaseorder_pending_payment') { return false; } if (!$order->canInvoice()) { return false; } return true; }
/** * Create new shipment for order * Inspired by Mage_Sales_Model_Order_Shipment_Api methods * * @param Mage_Sales_Model_Order $order (it should exist, no control is done into the method) * @param string $trackingNumber * @param string $trackingTitle * @param booleam $email * @param string $comment * @param boolean $includeComment * @return int : shipment real id if creation was ok, else 0 */ public function _createTracking($order, $trackingNumber, $trackingTitle, $email, $comment, $includeComment) { /** * Check shipment creation availability */ if (!$order->canShip()) { $this->_getSession()->addError($this->__('La commande %s ne peut pas être expédiée, ou a déjà été expédiée.', $order->getRealOrderId())); return 0; } /** * Initialize the Mage_Sales_Model_Order_Shipment object */ $convertor = Mage::getModel('sales/convert_order'); $shipment = $convertor->toShipment($order); /** * Add the items to send */ foreach ($order->getAllItems() as $orderItem) { if (!$orderItem->getQtyToShip()) { continue; } if ($orderItem->getIsVirtual()) { continue; } $item = $convertor->itemToShipmentItem($orderItem); $qty = $orderItem->getQtyToShip(); $item->setQty($qty); $shipment->addItem($item); } //foreach $shipment->register(); /** * Tracking number instanciation */ $carrierCode = stristr($order->getShippingMethod(), '_', true); if (!$carrierCode) { $carrierCode = 'custom'; } /* depot code and shipper code determination */ switch ($carrierCode) { case 'dpdfrrelais': $depot_code = Mage::getStoreConfig('carriers/dpdfrrelais/depot'); $shipper_code = Mage::getStoreConfig('carriers/dpdfrrelais/cargo'); break; case 'dpdfrpredict': $depot_code = Mage::getStoreConfig('carriers/dpdfrpredict/depot'); $shipper_code = Mage::getStoreConfig('carriers/dpdfrpredict/cargo'); break; case 'dpdfrclassic': $depot_code = Mage::getStoreConfig('carriers/dpdfrclassic/depot'); $shipper_code = Mage::getStoreConfig('carriers/dpdfrclassic/cargo'); break; } // Le trackingNumber est composé du n° de commande + le code agence + code cargo, intégré en un bloc dans l'URL $trackingNumber = $order->getIncrementID() . '_' . $depot_code . $shipper_code; $trackingUrl = 'http://www.dpd.fr/tracer_' . $trackingNumber; $track = Mage::getModel('sales/order_shipment_track')->setNumber($trackingNumber)->setCarrierCode($carrierCode)->setTitle($trackingTitle)->setUrl($trackingUrl)->setStatus('<a target="_blank" href="' . $trackingUrl . '">' . __('Suivre ce colis DPD France') . '</a>'); $shipment->addTrack($track); /** * Comment handling */ $shipment->addComment($comment, $email && $includeComment); /** * Change order status to Processing */ $shipment->getOrder()->setIsInProcess(true); /** * If e-mail, set as sent (must be done before shipment object saving) */ if ($email) { $shipment->setEmailSent(true); } try { // /** // * Save the created shipment and the updated order // */ $shipment->save(); $shipment->getOrder()->save(); // /** // * Email sending // */ $shipment->sendEmail($email, $includeComment ? $comment : ''); } catch (Mage_Core_Exception $e) { $this->_getSession()->addError($this->__('Erreur pendant la création de l\'expédition %s : %s', $orderId, $e->getMessage())); return 0; } /** * Everything was ok : return Shipment real id */ return $shipment->getIncrementId(); }
/** * Check order * * @throws Dhl_Intraship_Model_Autocreate_Exception * @param Mage_Sales_Model_Order $order * @return Dhl_Intraship_Model_Autocreate $this */ public function checkOrder(Mage_Sales_Model_Order $order) { // Check order existing. if (!$order->getId()) { throw new Dhl_Intraship_Model_Autocreate_Exception('The order no longer exists.'); } // Check shipment is available to create separate from invoice. if ($order->getForcedDoShipmentWithInvoice()) { throw new Dhl_Intraship_Model_Autocreate_Exception('Cannot do shipment for the order separately from invoice.'); } // Check shipment create availability. if (!$order->canShip()) { throw new Dhl_Intraship_Model_Autocreate_Exception('Cannot do shipment for the order.'); } return $this; }
/** * Create new shipment for order * Inspired by Mage_Sales_Model_Order_Shipment_Api methods * * @param Mage_Sales_Model_Order $order (it should exist, no control is done into the method) * @param string $trackingNumber * @param string $trackingTitle * @param booleam $email * @param string $comment * @param boolean $includeComment * @return int : shipment real id if creation was ok, else 0 */ public function _createShipment($order, $invoice, $trackingNumber, $trackingTitle, $email, $comment, $includeComment) { /** * Check shipment creation availability */ if (!$order->canShip()) { $this->_getSession()->addError($this->__('Order %s - Invoice %s can not be shipped or has already been shipped, tracking number %s', $order->getIncrementId(), $invoice->getIncrementId(), $trackingNumber)); return 0; } /** * Initialize the Mage_Sales_Model_Order_Shipment object */ $convertor = Mage::getModel('sales/convert_order'); $shipment = $convertor->toShipment($order); /** * Add the items to send */ foreach ($order->getAllItems() as $orderItem) { if (!$orderItem->getQtyToShip()) { continue; } if ($orderItem->getIsVirtual()) { continue; } $item = $convertor->itemToShipmentItem($orderItem); $qty = $orderItem->getQtyToShip(); $item->setQty($qty); $shipment->addItem($item); } //foreach $shipment->register(); /** * Tracking number instanciation */ $track = Mage::getModel('sales/order_shipment_track')->setNumber($trackingNumber)->setCarrierCode('custom')->setTitle($trackingTitle); $shipment->addTrack($track); /** * Comment handling */ $shipment->addComment($comment, $email && $includeComment); /** * Change order status to Processing */ //$shipment->getOrder()->setIsInProcess(true); /** * Change order status to Processing shipped */ $shipment->getOrder()->setState('processing', 'processing_shipped', $this->__('Tracking Number') . ': ' . $trackingNumber, True); /** * If e-mail, set as sent (must be done before shipment object saving) */ if ($email) { $shipment->setEmailSent(true); } try { /** * Save the created shipment and the updated order */ $shipment->save(); $shipment->getOrder()->save(); /** * Email sending */ $shipment->sendEmail($email, $includeComment ? $comment : ''); } catch (Mage_Core_Exception $e) { $this->_getSession()->addError($this->__('Shipment creation error for Order %s : %s', $orderId, $e->getMessage())); return 0; } $this->_getSession()->addSuccess($this->__('Tracking number %s was successfully added to order %s', $trackingNumber, $order->getIncrementId())); /** * Everything was ok : return Shipment real id */ return $shipment->getIncrementId(); }
function CreateMagentoShopRequestOrder(Mage_Sales_Model_Order $order, $paymentmethod) { $request = new Byjuno_Cdp_Helper_Api_Classes_ByjunoRequest(); $request->setClientId(Mage::getStoreConfig('payment/cdp/clientid', Mage::app()->getStore())); $request->setUserID(Mage::getStoreConfig('payment/cdp/userid', Mage::app()->getStore())); $request->setPassword(Mage::getStoreConfig('payment/cdp/password', Mage::app()->getStore())); $request->setVersion("1.00"); try { $request->setRequestEmail(Mage::getStoreConfig('payment/cdp/mail', Mage::app()->getStore())); } catch (Exception $e) { } $b = $order->getCustomerDob(); if (!empty($b)) { $request->setDateOfBirth(Mage::getModel('core/date')->date('Y-m-d', strtotime($b))); } $g = $order->getCustomerGender(); if (!empty($g)) { if ($g == '1') { $request->setGender('1'); } else { if ($g == '2') { $request->setGender('2'); } } } $requestId = uniqid((string) $order->getBillingAddress()->getId() . "_"); $request->setRequestId($requestId); $reference = $order->getCustomerId(); if (empty($reference)) { $request->setCustomerReference("guest_" . $order->getBillingAddress()->getId()); } else { $request->setCustomerReference($order->getCustomerId()); } $request->setFirstName((string) $order->getBillingAddress()->getFirstname()); $request->setLastName((string) $order->getBillingAddress()->getLastname()); $request->setFirstLine(trim((string) $order->getBillingAddress()->getStreetFull())); $request->setCountryCode(strtoupper((string) $order->getBillingAddress()->getCountry())); $request->setPostCode((string) $order->getBillingAddress()->getPostcode()); $request->setTown((string) $order->getBillingAddress()->getCity()); $request->setFax((string) trim($order->getBillingAddress()->getFax(), '-')); $request->setLanguage((string) substr(Mage::app()->getLocale()->getLocaleCode(), 0, 2)); if ($order->getBillingAddress()->getCompany()) { $request->setCompanyName1($order->getBillingAddress()->getCompany()); } $request->setTelephonePrivate((string) trim($order->getBillingAddress()->getTelephone(), '-')); $request->setEmail((string) $order->getBillingAddress()->getEmail()); $extraInfo["Name"] = 'ORDERCLOSED'; $extraInfo["Value"] = 'NO'; $request->setExtraInfo($extraInfo); $extraInfo["Name"] = 'ORDERAMOUNT'; $extraInfo["Value"] = number_format($order->getGrandTotal(), 2, '.', ''); $request->setExtraInfo($extraInfo); $extraInfo["Name"] = 'ORDERCURRENCY'; $extraInfo["Value"] = $order->getBaseCurrencyCode(); $request->setExtraInfo($extraInfo); /* shipping information */ if ($order->canShip()) { $extraInfo["Name"] = 'DELIVERY_FIRSTNAME'; $extraInfo["Value"] = $order->getShippingAddress()->getFirstname(); $request->setExtraInfo($extraInfo); $extraInfo["Name"] = 'DELIVERY_LASTNAME'; $extraInfo["Value"] = $order->getShippingAddress()->getLastname(); $request->setExtraInfo($extraInfo); $extraInfo["Name"] = 'DELIVERY_FIRSTLINE'; $extraInfo["Value"] = trim($order->getShippingAddress()->getStreetFull()); $request->setExtraInfo($extraInfo); $extraInfo["Name"] = 'DELIVERY_HOUSENUMBER'; $extraInfo["Value"] = ''; $request->setExtraInfo($extraInfo); $extraInfo["Name"] = 'DELIVERY_COUNTRYCODE'; $extraInfo["Value"] = strtoupper($order->getShippingAddress()->getCountry()); $request->setExtraInfo($extraInfo); $extraInfo["Name"] = 'DELIVERY_POSTCODE'; $extraInfo["Value"] = $order->getShippingAddress()->getPostcode(); $request->setExtraInfo($extraInfo); $extraInfo["Name"] = 'DELIVERY_TOWN'; $extraInfo["Value"] = $order->getShippingAddress()->getCity(); $request->setExtraInfo($extraInfo); if ($order->getShippingAddress()->getCompany() != '' && Mage::getStoreConfig('payment/api/businesstobusiness', Mage::app()->getStore()) == 'enable') { $extraInfo["Name"] = 'DELIVERY_COMPANYNAME'; $extraInfo["Value"] = $order->getShippingAddress()->getCompany(); $request->setExtraInfo($extraInfo); } } $extraInfo["Name"] = 'PP_TRANSACTION_NUMBER'; $extraInfo["Value"] = $requestId; $request->setExtraInfo($extraInfo); $extraInfo["Name"] = 'ORDERID'; $extraInfo["Value"] = $order->getIncrementId(); $request->setExtraInfo($extraInfo); $extraInfo["Name"] = 'PAYMENTMETHOD'; $extraInfo["Value"] = 'BYJUNO-INVOICE'; $request->setExtraInfo($extraInfo); $extraInfo["Name"] = 'CONNECTIVTY_MODULE'; $extraInfo["Value"] = 'Byjuno Magento module 1.0.0'; $request->setExtraInfo($extraInfo); return $request; }