En este post, explicaremos lo que dejamos en incertidumbre en el post Parte I.
Empezaremos por las partes previas a modificar los programas como es:
* Crear un atributo FECHA DE ENTREGA donde podemos definirlo como un texto abierto para poder poner una explicación a nuestros clientes tan extensa como queramos o definir los valores posibles de fecha de entrega.
* Editar la ficha de Producto y tener siempre documentada la fecha de entrega editada anteriormente en los casos de productos en reserva.
* En la ficha de producto también hay que tener en cuenta que el inventario en los productos sin stock tienen que ser cambiados y poner los siguientes parámetros cambiados:
- Disponibilidad en existencias – En Existencia (Stock Availability – In Stock)
- Pedidos de artículos sin existencias – Permitir por debajo de cero avisando o no según como se quiera (Backorders – Allow).
* Editar el fichero list.phtml de app\design\frontend\default\plantilla\template\catalog\product\ y el addtocart.phtml de httpdocs\app\design\frontend\default\plantilla\template\catalog\product\view\ para añadir el nuevo código con lo que podremos controlar si el producto está en stock y por tanto hacer visible o no la fecha de entrega.
En ambos ficheros habrá que definir 3 variables que nos dirá la situación del producto:
define("CUSTOM_BACKORDERS_YES", 1); define("CUSTOM_BACKORDERS_YES_NOTIFY", 2); define("CUSTOM_STOCK_INSTOCK", 1);
Por otro lado habrá que definir el botón con texto del estilo «Comprar» o «Reservar» según la situación. Se podría controlar con este código:
$rquantity = (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty(); $rbackorder = Mage::getModel('catalog/product')->load($_product->getId())->getStockItem()->getBackorders(); $rstockavailability = $_product->getStockItem()->getIsInStock(); ?> <?php if (($rquantity <= 0) && (($rbackorder == CUSTOM_BACKORDERS_YES) || ($rbackorder == CUSTOM_BACKORDERS_YES_NOTIFY)) && ($rstockavailability == CUSTOM_STOCK_INSTOCK) ) { ?> <?php $buttonTitle = $this->__('Preorder'); ?> <?php } else { ?> <?php $buttonTitle = $this->__('Add to Cart'); ?> <?php }
* Editar el fichero de traducciones para traducir la palabra backorder en el checkout.