[[Category:PROC]]
== Descripción ==
Duplica la composición de un producto sobre otro producto. Ya que existe el [[TRIG:productos.alta]] sobre la [[TABLA:productos]] que genera en forma automática los registros de [[TABLA:precios]] y [[TABLA:composicion]] ante el alta de un producto, se eliminan los correspondientes a la [[TABLA:composicion]]
== Composición ==
* [[TABLA:productos]]
* [[TABLA:composicion]]

== Estructura ==
<pre>
</pre>
== SQL ==
<small><pre>
DELIMITER $$

CREATE DEFINER=`sas_admin`@`%` PROCEDURE `DuplicaProductoCompo`(IN pProductoIDOrg VARCHAR(8), IN pProductoIDDst VARCHAR(8), IN pProductoDSC VARCHAR(80))
BEGIN
    DELETE FROM productos WHERE `productos`.`ProductoID` = pProductoIDDst;
    INSERT INTO productos
        (`productos`.`ProductoID`,
        `productos`.`CategoriaID`,
        `productos`.`Descripcion`,
        `productos`.`ProveedorID`,
        `productos`.`Reposicion`,
        `productos`.`Magnitud`,
        `productos`.`CoefP00P01`,
        `productos`.`CoefP00P02`,
        `productos`.`CoefP00P03`,
        `productos`.`ProductoPID`,
        `productos`.`InsumoIMG`)(
	SELECT
        pProductoIDDst,
        `productos`.`CategoriaID`,
        pProductoDSC,
        `productos`.`ProveedorID`,
        `productos`.`Reposicion`,
        `productos`.`Magnitud`,
        `productos`.`CoefP00P01`,
        `productos`.`CoefP00P02`,
        `productos`.`CoefP00P03`,
        `productos`.`ProductoPID`,
        `productos`.`InsumoIMG`
	FROM productos
	WHERE `productos`.`ProductoID` = pProductoIDOrg);
	DELETE FROM composicion WHERE ProductoID = pProductoIDDst;
	INSERT INTO composicion (
		`composicion`.`ProductoID`,
		`composicion`.`ElementoID`,
		`composicion`.`ValorElemento`,
		`composicion`.`ElementoPM`,
		`composicion`.`OffsetVanoAncho`,
		`composicion`.`OffsetVanoAlto`,
		`composicion`.`CoefVanoAncho`,
		`composicion`.`CoefVanoAlto`)(
	SELECT
		pProductoIDDst,
		`composicion`.`ElementoID`,
		`composicion`.`ValorElemento`,
		`composicion`.`ElementoPM`,
		`composicion`.`OffsetVanoAncho`,
		`composicion`.`OffsetVanoAlto`,
		`composicion`.`CoefVanoAncho`,
		`composicion`.`CoefVanoAlto`
	FROM composicion
	WHERE `composicion`.`ProductoID` = pProductoIDOrg);
END
</pre></small>

== Bitácora ==
*20100608
**Al tiempo de reformular el [[FORM:CopiaComposicion]], se modifica el procedimiento que depende del [[BTN:Copiar]] del [[FORM:CopiaComposicion]]. Código Previo:
<small><pre>
DELIMITER $$
CREATE DEFINER=`sas_admin`@`%` PROCEDURE `DuplicaProductoCompo`(IN pProductoIDOrg VARCHAR(8), IN pProductoIDDst VARCHAR(8))
BEGIN
	INSERT INTO composicion (
		`composicion`.`ProductoID`,
		`composicion`.`ElementoID`,
		`composicion`.`ValorElemento`,
		`composicion`.`ElementoPM`,
		`composicion`.`OffsetVanoAncho`,
		`composicion`.`OffsetVanoAlto`)(
	SELECT
		pProductoIDDst,
		`composicion`.`ElementoID`,
		`composicion`.`ValorElemento`,
		`composicion`.`ElementoPM`,
		`composicion`.`OffsetVanoAncho`,
		`composicion`.`OffsetVanoAlto`
	FROM `fzggestion`.`composicion`
	WHERE `composicion`.`ProductoID` = pProductoIDOrg);
END
</pre></small>
*20120904
**Se agrega al actual la cláusula de eliminación de los datos anteriores del producto destino si existiese.  Código Previo:
<small><pre>
DELIMITER $$

CREATE PROCEDURE `DuplicaProductoCompo`(IN pProductoIDOrg VARCHAR(8), IN pProductoIDDst VARCHAR(8), IN pProductoDSC VARCHAR(80))
BEGIN
    INSERT INTO productos
        (`productos`.`ProductoID`,
        `productos`.`CategoriaID`,
        `productos`.`Descripcion`,
        `productos`.`ProveedorID`,
        `productos`.`Reposicion`,
        `productos`.`Magnitud`,
        `productos`.`CoefP00P01`,
        `productos`.`CoefP00P02`,
        `productos`.`CoefP00P03`,
        `productos`.`ProductoPID`,
        `productos`.`InsumoIMG`)(
	SELECT
        pProductoIDDst,
        `productos`.`CategoriaID`,
        pProductoDSC,
        `productos`.`ProveedorID`,
        `productos`.`Reposicion`,
        `productos`.`Magnitud`,
        `productos`.`CoefP00P01`,
        `productos`.`CoefP00P02`,
        `productos`.`CoefP00P03`,
        `productos`.`ProductoPID`,
        `productos`.`InsumoIMG`
	FROM productos
	WHERE `productos`.`ProductoID` = pProductoIDOrg);
	DELETE FROM composicion WHERE ProductoID = pProductoIDDst;
	INSERT INTO composicion (
		`composicion`.`ProductoID`,
		`composicion`.`ElementoID`,
		`composicion`.`ValorElemento`,
		`composicion`.`ElementoPM`,
		`composicion`.`OffsetVanoAncho`,
		`composicion`.`OffsetVanoAlto`,
		`composicion`.`CoefVanoAncho`,
		`composicion`.`CoefVanoAlto`)(
	SELECT
		pProductoIDDst,
		`composicion`.`ElementoID`,
		`composicion`.`ValorElemento`,
		`composicion`.`ElementoPM`,
		`composicion`.`OffsetVanoAncho`,
		`composicion`.`OffsetVanoAlto`,
		`composicion`.`CoefVanoAncho`,
		`composicion`.`CoefVanoAlto`
	FROM composicion
	WHERE `composicion`.`ProductoID` = pProductoIDOrg);
END
</pre></small>

== Uso ==
== URL ==