public function render(Varien_Object $row) { $value = mage::getModel('Orderpreparation/ordertoprepare')->load($row->getId(), 'order_id')->getforce_invoice_date(); if ($value == '0000-00-00') { $value = ''; } $html = 'Date <input onchange="HideNonSaveButtons()" type="text" id="force_invoice_date_' . $row->getid() . '" name="force_invoice_date_' . $row->getid() . '" size="8" value="' . $value . '" />'; //rajoute le petit calendrier $html .= ' <img src="' . $this->getSkinUrl('images/grid-cal.gif') . '" class="v-middle" id="img_calendar_' . $row->getid() . '" />'; $html .= "\n\t\t <script type=\"text/javascript\">\n\t Calendar.setup({\n\t inputField : 'force_invoice_date_" . $row->getid() . "',\n\t ifFormat : '%Y-%m-%e',\n\t button : 'img_calendar_" . $row->getid() . "',\n\t align : 'Bl',\n\t singleClick : true\n\t });\n </script>\t\t\n\t\t"; //champs poids $html .= '<br>' . $this->__('Weight') . ' <input onchange="HideNonSaveButtons()" type="text" name="real_weight_' . $row->getid() . '" size="2" value="' . $row->getreal_weight() . '" />'; //Nombre de paquets $html .= '<br>' . $this->__('Packages') . ' <input onchange="HideNonSaveButtons()" type="text" size="2" maxlength="2" name="package_count_' . $row->getid() . '" size="2" value="' . $row->getpackage_count() . '" />'; //Type de produit d'expe $CurrentValue = $row->getship_mode(); $Carrier = $row->getshipping_method(); //cree le menu $retour = '<select onchange="HideNonSaveButtons()" id="ship_product_type_' . $row->getid() . '" name="ship_product_type_' . $row->getid() . '">'; $model = mage::Helper('Orderpreparation')->getCarrierModel($Carrier); if ($model) { $values = $model->GetProductTypes(); $retour .= '<option value=""></option>'; foreach ($values as $key => $value) { $retour .= '<option value="' . $key . '"'; if ($key == $CurrentValue) { $retour .= ' selected '; } $retour .= '>' . $value . '</option>'; } } else { $retour .= '<option>No carrier for ' . $Carrier . ' </option>'; } $retour .= '</select>'; $html .= '<br>' . $this->__('Ship Mode') . ' ' . $retour; return $html; }
/** * return service type as combo * * @param unknown_type $name */ public function getServiceTypeAsCombo($name) { $CurrentValue = $this->getOrderPreparationItem()->getship_mode(); $Carrier = $this->getCurrentOrder()->getshipping_method(); if ($this->getShipment()) { return $CurrentValue; } //cree le menu $retour = '<select id="' . $name . '" name="' . $name . '">'; $model = mage::Helper('Orderpreparation')->getCarrierModel($Carrier); if ($model) { $values = $model->GetProductTypes(); $retour .= '<option value=""></option>'; foreach ($values as $key => $value) { $retour .= '<option value="' . $key . '"'; if ($key == $CurrentValue) { $retour .= ' selected '; } $retour .= '>' . $value . '</option>'; } } else { $retour .= '<option>No carrier for ' . $Carrier . ' </option>'; } $retour .= '</select>'; return $retour; }
/** * Méthode permettant de savoir si une commande peut etre ajoutée pour une préparation * * @param unknown_type $orderId */ public function CanAddOrder($orderId) { $debug = ''; //parcourt les produits $NbAddedProducts = 0; $order = Mage::getModel('sales/order')->load($orderId); foreach ($order->getItemsCollection() as $item) { $productid = $item->getproduct_id(); $debug .= '<br>Product ' . $productid; //si il reste une qte de ce produit à livrer et qu'il gere les stocks $remaining_qty = $item->getqty_ordered() - $item->getRealShippedQty(); $debug .= ' - remaining_qty ' . $remaining_qty; $ManageStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productid)->getManageStock(); if ($ManageStock) { if ($remaining_qty > 0) { //recupere la qte de ce produit déja ajouté dans la préparation de commande $AlreadyAddedQty = $this->GetTotalAddedQtyForProduct($productid); //si produit réservé, on valide direct if ($item->getreserved_qty() > 0) { $NbAddedProducts += 1; } else { //si le stock est suffisant $product = mage::getModel('catalog/product')->load($productid); $stock = $product->GetAvailableQty(); if ($stock < $remaining_qty + $AlreadyAddedQty) { Mage::getSingleton('adminhtml/session')->addError(mage::Helper('Orderpreparation')->__('Order ') . $order->getincrement_id() . ': ' . $item->getname() . ' ' . mage::Helper('Orderpreparation')->__('not added')); //return false; } else { $NbAddedProducts += 1; } } } } else { $NbAddedProducts += 1; } } if ($NbAddedProducts == 0) { return false; } return true; }
/** * Retourne la date prévue d'arrivée d'un colis en fonction du transporter, de la date d'expedition et du pays * */ public function getEstimatedDeliveryDate($ShippingDate, $Carrier, $Country) { //Recupere la durée de livraison en fonction du transporteur $DeliveryDelay = 0; $model = mage::Helper('Orderpreparation')->getCarrierModel($Carrier); if ($model) { $DeliveryDelay = $model->getDeliveryDelay($Country); } //calcul la date de livraison return date("Y-m-d", $this->get_final_date(strtotime($ShippingDate), $DeliveryDelay)); }