Magento – Buy or Preorder – Comprar o Reservar bajo pedido – Parte II

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:

  1. Disponibilidad en existencias – En Existencia (Stock Availability – In Stock)
  2. 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.