== Descripción ==
El procedimiento está en función de la edición de los elementos de un producto compuesto durante la confección de un presupuesto.
Agrega a la TABLA:vidquoten3tmp las registraciones correspondientes al producto a editar. Las características del proceso son las siguientes:
*Selecciona registros de la [[TABLA:composicion]] que corresponde al producto seleccionado y agrega aquellos registros que no existan en la selececión original (Alta de producto)
**Selecciona los registros de la [[TABLA:composicion]] cuyo elemento es igual al producto (producto propiamente dicho). Este punto se explicita para que no entre en loop
**Selecciona los registros de la [[TABLA:composicion]] cuyos elementos son diferentes al producto (adicionales Básicos, Simple y Completo).
***Dado que permite un grado de profundidad adicional, toma tanto los registros componentes sino también todos aquellos que están referenciados como elemento componente.
***Establece una relación con las [[TABLA:productos]] y [[TABLA:precios]].
***Establece una relación anidada con la misma [[TABLA:composicion]] para tomar todos los elementos como si fuesen productos y así tener en cuenta la definición en aquellos que tengan más de un componente y poder calcular el precio de acuerdo a los parámetros definidos
**Agrega los datos resultantes a la [[TABLA:vidquoten3tmp]] previo borrado de los datos anteriores dentro de la tabla temporal para mantener la integridad de la operación para proceder a la edición. No se deben agregar aquellos registros ya existentes en la [[TABLA:vidquoten3]]

== Composición ==
* [[TABLA:composicion]]
* [[TABLA:productos]]
* [[TABLA:precios]]
* [[TABLA:vidquoten3]]
* [[TABLA:vidquoten3tmp]]

== Código ==
Borrador
<pre>
SELECT
	50 as Presupuesto,
	1 as Item,
	'VCMDG200' as Prodcuto,
	2 as Cantidad,
	R1.ProdCmpID,
    R1.ComposicID,
	SUM(CalculoPrecio(
		1200, 
		1400,
		`R1`.`PrecioProd`,
		`R1`.`Magnitud`,
		`R1`.`OffsetVanoAlto`,
		`R1`.`OffsetVanoAncho`,
		`R1`.`CoefVanoAlto`,
		`R1`.`CoefVanoAncho`,
		`R1`.`ValorElemento`)) AS pVidQuotePrecio,
	SUM(CalculoPrecio(
		1200, 
		1400,
		`R1`.`PrecioProd`,
		`R1`.`Magnitud`,
		`R1`.`OffsetVanoAlto`,
		`R1`.`OffsetVanoAncho`,
		`R1`.`CoefVanoAlto`,
		`R1`.`CoefVanoAncho`,
		`R1`.`ValorElemento`) * 2) AS pVidQuotePrecioP
FROM
(
(SELECT 
    U1.ProductoID,
    U1.ElementoID AS ProdCmpID,
    U1.ComposicID,
    U1.ElementoID,
    U1.ElementoPM,
    U2.Magnitud,
    U1.ValorElemento,
    U1.OffsetVanoAncho,
    U1.OffsetVanoAlto,
    U1.CoefVanoAncho,
    U1.CoefVanoAlto,
    (CASE (2)
        WHEN 0 THEN U3.PrecioProd00
        WHEN 1 THEN U3.PrecioProd01
        WHEN 2 THEN U3.PrecioProd02
        WHEN 3 THEN U3.PrecioProd03
    END) AS PrecioProd
FROM
    fzggestion.productos AS U2,
    fzggestion.composicion AS U1,
    fzggestion.precios AS U3
WHERE
    U2.ProductoID = U1.ElementoID AND 
    U3.ProductoID = U2.ProductoID AND 
    U1.ProductoID = 'VCMDG200' AND 
    U1.ElementoID = 'VCMDG200' AND 
    U1.ElementoPM <= 1)

UNION

(SELECT 
    T1.ProductoID,
    T1.ElementoID AS ProdCmpID,
    T1.ComposicID,
    T2.ElementoID,
    T2.ElementoPM,
    T3.Magnitud,
    T1.ValorElemento,        
    T1.OffsetVanoAncho,
    T1.OffsetVanoAlto,
    T1.CoefVanoAncho,
    T1.CoefVanoAlto,
    (CASE (2)
     WHEN 0 THEN `T4`.`PrecioProd00`
     WHEN 1 THEN `T4`.`PrecioProd01`
     WHEN 2 THEN `T4`.`PrecioProd02`
     WHEN 3 THEN `T4`.`PrecioProd03`
    END) AS PrecioProd
FROM
    fzggestion.composicion AS T2,
    fzggestion.composicion AS T1,
    fzggestion.productos AS T3,
    fzggestion.precios AS T4
WHERE
    T2.ProductoID = T1.ElementoID AND 
    T3.ProductoID = T2.ElementoID AND 
    T4.ProductoID = T3.ProductoID AND 
    T1.ProductoID <> T1.ElementoID AND 
    T2.ElementoPM <= 1 AND 
    T1.ProductoID = 'VCMDG200' AND 
    T1.ElementoPM <= 1
ORDER BY
    T1.ProductoID ASC ,
    T1.ElementoID ASC ,
    T1.ComposicID ASC ,
    T2.ElementoID ASC)
) AS R1
GROUP BY ProdCmpID,ComposicID
</pre>

== Bitácora ==
== Uso ==
* [[MACRO:BotonEditarComponentes]]
* [[FORM:Presupuesto]]