[[Category:PROC]]
== Descripción ==
Calcula el precio de un producto de acuerdo a parámetros mínimos y accediendo a la base de datos indicada
== Composición ==
*[[VISTA:visprodadic]]
== Estructura ==
<pre>
</pre>
== SQL ==
<small><pre>
DELIMITER $$

CREATE FUNCTION `CalculaPrecioBase`(pProducto VARCHAR(8), pElemento VARCHAR(8), pAncho INT(5), pAlto INT(5), pLista INT(1)) RETURNS DECIMAL(10,2)
BEGIN
  DECLARE pPrecioBase DECIMAL(10,2);
  SET pPrecioBase = (SELECT
	CASE `visprodadic`.`Magnitud`
	WHEN 'M2'
	 THEN
	  ((((pAlto+`visprodadic`.`OffsetVanoAlto`)*`visprodadic`.`CoefVanoAlto`) *
	  ((pAncho+`visprodadic`.`OffsetVanoAncho`)*`visprodadic`.`CoefVanoAncho`))/1000000) *
	   `visprodadic`.`ValorElemento` * 
	   (CASE (pLista)
	    WHEN 1 THEN `visprodadic`.`PrecioProd01`
	    WHEN 2 THEN `visprodadic`.`PrecioProd02`
	    WHEN 3 THEN `visprodadic`.`PrecioProd03`
	    END)
	WHEN 'PR'
	 THEN
	  ((((pAlto+`visprodadic`.`OffsetVanoAlto`) * 2 * `visprodadic`.`CoefVanoAlto`) + 
	  ((pAncho+`visprodadic`.`OffsetVanoAncho`) * 2 * `visprodadic`.`CoefVanoAncho`))
       / 1000 ) * 
	  `visprodadic`.`ValorElemento` *
	   (CASE (pLista)
	    WHEN 1 THEN `visprodadic`.`PrecioProd01`
	    WHEN 2 THEN `visprodadic`.`PrecioProd02`
	    WHEN 3 THEN `visprodadic`.`PrecioProd03`
	    END)
	WHEN 'ML'
	 THEN
	   (((pAncho+`visprodadic`.`OffsetVanoAncho`) * `visprodadic`.`CoefVanoAncho`) / 1000 ) * 
	   `visprodadic`.`ValorElemento` * 
	   (CASE (pLista)
	    WHEN 1 THEN `visprodadic`.`PrecioProd01`
	    WHEN 2 THEN `visprodadic`.`PrecioProd02`
	    WHEN 3 THEN `visprodadic`.`PrecioProd03`
	    END)
	WHEN 'MG'
	 THEN
	  ((((pAlto+`visprodadic`.`OffsetVanoAlto`)*`visprodadic`.`CoefVanoAlto`) +
	  ((pAncho+`visprodadic`.`OffsetVanoAncho`)*`visprodadic`.`CoefVanoAncho`))/1000) *
	  `visprodadic`.`ValorElemento` *
	   (CASE (pLista)
	    WHEN 1 THEN `visprodadic`.`PrecioProd01`
	    WHEN 2 THEN `visprodadic`.`PrecioProd02`
	    WHEN 3 THEN `visprodadic`.`PrecioProd03`
	    END)
	WHEN '2H'
	 THEN
	  (((pAlto+`visprodadic`.`OffsetVanoAlto`)*`visprodadic`.`CoefVanoAlto`) / 1000) * 2 *
	  `visprodadic`.`ValorElemento` *
	   (CASE (pLista)
	    WHEN 1 THEN `visprodadic`.`PrecioProd01`
	    WHEN 2 THEN `visprodadic`.`PrecioProd02`
	    WHEN 3 THEN `visprodadic`.`PrecioProd03`
	    END)
	WHEN '2W'
	 THEN
	  (((pAncho+`visprodadic`.`OffsetVanoAncho`)*`visprodadic`.`CoefVanoAncho`) / 1000) * 2 *
	  `visprodadic`.`ValorElemento` *
	   (CASE (pLista)
	    WHEN 1 THEN `visprodadic`.`PrecioProd01`
	    WHEN 2 THEN `visprodadic`.`PrecioProd02`
	    WHEN 3 THEN `visprodadic`.`PrecioProd03`
	    END)
	ELSE
	   `visprodadic`.`ValorElemento` * 
	   (CASE (pLista)
	    WHEN 1 THEN `visprodadic`.`PrecioProd01`
	    WHEN 2 THEN `visprodadic`.`PrecioProd02`
	    WHEN 3 THEN `visprodadic`.`PrecioProd03`
	    END)
	END AS `PrecioBase`
	FROM `visprodadic` 
	WHERE `visprodadic`.`ProductoID` = pProducto AND
		  `visprodadic`.`ElementoID` = pElemento);
	RETURN pPrecioBase;
END$$
</pre></small>

== Bitácora ==
*20120520
**Incorpora el cálculo de las magnitudes "2H" (cálculo en base a la altura indicada multiplicada por 2) y "2W" (cálculo en base al ancho indicado multiplicado por 2).

== Uso ==
== URL ==