(108,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{|\n| Trigger\n| Event\n| Table\n| Statement\n| style=\"background-color:#c0c0c0;border:0.05pt double #808080;padding:0.0194in;\"| Timing\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <nowiki>BEGIN DECLARE vListaVieja,vListaNueva INT(5); DECLARE vFechaModificacion DATE; DECLARE vHoraModificacion TIME; SET vListaNueva = (SELECT Lista FROM listavigente); SET vListaVieja = (SELECT MAX(listasprecios.Lista) FROM listasprecios WHERE listasprecios.Lista <> NEW.Lista); SET vFechaModificacion = CURDATE(); SET vHoraModificacion = CURTIME(); INSERT INTO precios ( `precios`.`Lista`, `precios`.`ProductoID`, `precios`.`PrecioProd01`, `precios`.`PrecioProd02`, `precios`.`PrecioProd03`, `precios`.`FechaModificacion`, `precios`.`HoraModificacion`)( SELECT vListaNueva, `precios`.`ProductoID`, `precios`.`PrecioProd01`, `precios`.`PrecioProd02`, `precios`.`PrecioProd03`, vFechaModificacion, vHoraModificacion FROM precios WHERE `precios`.`Lista` = vListaVieja); END</nowiki>\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| BEGIN DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5); SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`); SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`); SET `NEW`.`FechaModificacion` = CURDATE(); SET `NEW`.`HoraModificacion` = CURTIME(); SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`); IF ISNULL(NEW.CategoriaID) THEN IF ISNULL(NEW.ProveedorID) THEN UPDATE `precios`,`productos` SET `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`, `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`, `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`, `precios`.`FechaModificacion` = CURDATE(), `precios`.`HoraModificacion` = CURTIME() WHERE `precios`.`ProductoID` = `productos`.`ProductoID` AND `precios`.`Lista` = `NEW`.`Lista`; SET vPaso=\'A\'; ELSE UPDATE `precios`,`productos` SET `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`, `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`, `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`, `precios`.`FechaModificacion` = CURDATE(), `precios`.`HoraModificacion` = CURTIME() WHERE `precios`.`ProductoID` = `productos`.`ProductoID` AND `precios`.`Lista` = `NEW`.`Lista` AND `productos`.`ProveedorID` = NEW.ProveedorID; SET vPaso=\'B\'; END IF; ELSE IF ISNULL(NEW.ProveedorID) THEN UPDATE `precios`,`productos` SET `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`, `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`, `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`, `precios`.`FechaModificacion` = CURDATE(), `precios`.`HoraModificacion` = CURTIME() WHERE `precios`.`ProductoID` = `productos`.`ProductoID` AND `precios`.`Lista` = `NEW`.`Lista` AND `productos`.`CategoriaID` = NEW.CategoriaID; SET vPaso=\'C\'; ELSE UPDATE `precios`,`productos` SET `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`, `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`, `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`, `precios`.`FechaModificacion` = CURDATE(), `precios`.`HoraModificacion` = CURTIME() WHERE `precios`.`ProductoID` = `productos`.`ProductoID` AND `precios`.`Lista` = `NEW`.`Lista` AND `productos`.`CategoriaID` = vCategoriaID AND `productos`.`ProveedorID` = vProveedorID; SET vPaso=\'D\'; END IF; END IF; SET `NEW`.`RowsMod` = ROW_COUNT(); END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| BEGIN SET NEW.FechaModificacion = CURDATE(), NEW.HoraModificacion = CURTIME(); END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| BEGIN SET NEW.FechaModificacion = CURDATE(), NEW.HoraModificacion = CURTIME(); END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| BEFORE\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| BEGIN SET NEW.TransaccFecha = CURDATE(), NEW.TransaccHora = CURTIME(); END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| BEGIN DELETE FROM vidquoten2 WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID; DELETE FROM vidquoten3 WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID; END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|-\n| Alta_Item_Presupuesto\n| INSERT\n| vidquoten2\n| BEGIN INSERT INTO vidquoten3 ( VidQuoteID, VidQuoteLPre, VidQuoteItem, VidQuoteProdID, VidQuoteProdCantidad, VidQuoteAncho, VidQuoteAlto, VidQuoteElementoID, VidQuotePrecio, VidQuotePrecioP) SELECT NEW.`VidQuoteID`, NEW.`VidQuoteLPre`, NEW.`VidQuoteItem`, NEW.`VidQuoteProdID`, NEW.`VidQuoteProdCantidad`, NEW.`VidQuoteAncho`, NEW.`VidQuoteAlto`, visintdetpre.`ElementoID`, visintdetpre.`PrecioBase`, visintdetpre.`PrecioBase` * NEW.`VidQuoteProdCantidad` FROM visintdetpre WHERE visintdetpre.`ElementoPM`=1 AND visintdetpre.`VidQuoteProdID`=NEW.`VidQuoteProdID`; END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|-\n| Actualiza_Item_Presupuesto\n| UPDATE\n| vidquoten2\n| <nowiki>BEGIN IF OLD.VidQuoteProdID <> NEW.VidQuoteProdID THEN DELETE FROM vidquoten3 WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND vidquoten3.VidQuoteItem=OLD.VidQuoteItem; INSERT INTO vidquoten3 ( VidQuoteID, VidQuoteLPre, VidQuoteItem, VidQuoteProdID, VidQuoteProdCantidad, VidQuoteAncho, VidQuoteAlto, VidQuoteElementoID, VidQuotePrecio, VidQuotePrecioP) SELECT NEW.`VidQuoteID`, NEW.`VidQuoteLPre`, NEW.`VidQuoteItem`, NEW.`VidQuoteProdID`, NEW.`VidQuoteProdCantidad`, NEW.`VidQuoteAncho`, NEW.`VidQuoteAlto`, visintdetpre.`ElementoID`, visintdetpre.`PrecioBase`, visintdetpre.`PrecioBase` * NEW.`VidQuoteProdCantidad` FROM visintdetpre WHERE visintdetpre.`ElementoPM`=1 AND visintdetpre.`VidQuoteProdID`=NEW.`VidQuoteProdID`; ELSE UPDATE `fzggestion`.`vidquoten3` AS `T3`,`fzggestion`.`visintdetpre` AS `TV` SET T3.VidQuoteProdCantidad = NEW.`VidQuoteProdCantidad`, T3.VidQuoteAncho = NEW.`VidQuoteAncho`, T3.VidQuoteAlto = NEW.`VidQuoteAlto`, T3.VidQuotePrecio = TV.`PrecioBase`, T3.VidQuotePrecioP = TV.`PrecioBase` * NEW.`VidQuoteProdCantidad` WHERE T3.`VidQuoteID` = TV.`VidQuoteID` AND T3.`VidQuoteItem` = TV.`VidQuoteItem` AND T3.`VidQuoteItem` = NEW.`VidQuoteItem` AND T3.`VidQuoteProdID` = TV.`VidQuoteProdID` AND T3.`VidQuoteElementoID` = TV.`ElementoID`; END IF; END</nowiki>\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| BEGIN DELETE FROM vidquoten3 WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND vidquoten3.VidQuoteItem=OLD.VidQuoteItem; END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey2 AS Limite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03))\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(109,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <nowiki>BEGIN DECLARE vListaVieja,vListaNueva INT(5); DECLARE vFechaModificacion DATE; DECLARE vHoraModificacion TIME; SET vListaNueva = (SELECT Lista FROM listavigente); SET vListaVieja = (SELECT MAX(listasprecios.Lista) FROM listasprecios WHERE listasprecios.Lista <> NEW.Lista); SET vFechaModificacion = CURDATE(); SET vHoraModificacion = CURTIME(); INSERT INTO precios ( `precios`.`Lista`, `precios`.`ProductoID`, `precios`.`PrecioProd01`, `precios`.`PrecioProd02`, `precios`.`PrecioProd03`, `precios`.`FechaModificacion`, `precios`.`HoraModificacion`)( SELECT vListaNueva, `precios`.`ProductoID`, `precios`.`PrecioProd01`, `precios`.`PrecioProd02`, `precios`.`PrecioProd03`, vFechaModificacion, vHoraModificacion FROM precios WHERE `precios`.`Lista` = vListaVieja); END</nowiki>\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| BEGIN DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5); SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`); SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`); SET `NEW`.`FechaModificacion` = CURDATE(); SET `NEW`.`HoraModificacion` = CURTIME(); SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`); IF ISNULL(NEW.CategoriaID) THEN IF ISNULL(NEW.ProveedorID) THEN UPDATE `precios`,`productos` SET `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`, `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`, `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`, `precios`.`FechaModificacion` = CURDATE(), `precios`.`HoraModificacion` = CURTIME() WHERE `precios`.`ProductoID` = `productos`.`ProductoID` AND `precios`.`Lista` = `NEW`.`Lista`; SET vPaso=\'A\'; ELSE UPDATE `precios`,`productos` SET `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`, `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`, `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`, `precios`.`FechaModificacion` = CURDATE(), `precios`.`HoraModificacion` = CURTIME() WHERE `precios`.`ProductoID` = `productos`.`ProductoID` AND `precios`.`Lista` = `NEW`.`Lista` AND `productos`.`ProveedorID` = NEW.ProveedorID; SET vPaso=\'B\'; END IF; ELSE IF ISNULL(NEW.ProveedorID) THEN UPDATE `precios`,`productos` SET `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`, `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`, `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`, `precios`.`FechaModificacion` = CURDATE(), `precios`.`HoraModificacion` = CURTIME() WHERE `precios`.`ProductoID` = `productos`.`ProductoID` AND `precios`.`Lista` = `NEW`.`Lista` AND `productos`.`CategoriaID` = NEW.CategoriaID; SET vPaso=\'C\'; ELSE UPDATE `precios`,`productos` SET `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`, `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`, `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`, `precios`.`FechaModificacion` = CURDATE(), `precios`.`HoraModificacion` = CURTIME() WHERE `precios`.`ProductoID` = `productos`.`ProductoID` AND `precios`.`Lista` = `NEW`.`Lista` AND `productos`.`CategoriaID` = vCategoriaID AND `productos`.`ProveedorID` = vProveedorID; SET vPaso=\'D\'; END IF; END IF; SET `NEW`.`RowsMod` = ROW_COUNT(); END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| BEGIN SET NEW.FechaModificacion = CURDATE(), NEW.HoraModificacion = CURTIME(); END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| BEGIN SET NEW.FechaModificacion = CURDATE(), NEW.HoraModificacion = CURTIME(); END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| BEFORE\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| BEGIN SET NEW.TransaccFecha = CURDATE(), NEW.TransaccHora = CURTIME(); END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| BEGIN DELETE FROM vidquoten2 WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID; DELETE FROM vidquoten3 WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID; END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|-\n| Alta_Item_Presupuesto\n| INSERT\n| vidquoten2\n| BEGIN INSERT INTO vidquoten3 ( VidQuoteID, VidQuoteLPre, VidQuoteItem, VidQuoteProdID, VidQuoteProdCantidad, VidQuoteAncho, VidQuoteAlto, VidQuoteElementoID, VidQuotePrecio, VidQuotePrecioP) SELECT NEW.`VidQuoteID`, NEW.`VidQuoteLPre`, NEW.`VidQuoteItem`, NEW.`VidQuoteProdID`, NEW.`VidQuoteProdCantidad`, NEW.`VidQuoteAncho`, NEW.`VidQuoteAlto`, visintdetpre.`ElementoID`, visintdetpre.`PrecioBase`, visintdetpre.`PrecioBase` * NEW.`VidQuoteProdCantidad` FROM visintdetpre WHERE visintdetpre.`ElementoPM`=1 AND visintdetpre.`VidQuoteProdID`=NEW.`VidQuoteProdID`; END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|-\n| Actualiza_Item_Presupuesto\n| UPDATE\n| vidquoten2\n| <nowiki>BEGIN IF OLD.VidQuoteProdID <> NEW.VidQuoteProdID THEN DELETE FROM vidquoten3 WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND vidquoten3.VidQuoteItem=OLD.VidQuoteItem; INSERT INTO vidquoten3 ( VidQuoteID, VidQuoteLPre, VidQuoteItem, VidQuoteProdID, VidQuoteProdCantidad, VidQuoteAncho, VidQuoteAlto, VidQuoteElementoID, VidQuotePrecio, VidQuotePrecioP) SELECT NEW.`VidQuoteID`, NEW.`VidQuoteLPre`, NEW.`VidQuoteItem`, NEW.`VidQuoteProdID`, NEW.`VidQuoteProdCantidad`, NEW.`VidQuoteAncho`, NEW.`VidQuoteAlto`, visintdetpre.`ElementoID`, visintdetpre.`PrecioBase`, visintdetpre.`PrecioBase` * NEW.`VidQuoteProdCantidad` FROM visintdetpre WHERE visintdetpre.`ElementoPM`=1 AND visintdetpre.`VidQuoteProdID`=NEW.`VidQuoteProdID`; ELSE UPDATE `fzggestion`.`vidquoten3` AS `T3`,`fzggestion`.`visintdetpre` AS `TV` SET T3.VidQuoteProdCantidad = NEW.`VidQuoteProdCantidad`, T3.VidQuoteAncho = NEW.`VidQuoteAncho`, T3.VidQuoteAlto = NEW.`VidQuoteAlto`, T3.VidQuotePrecio = TV.`PrecioBase`, T3.VidQuotePrecioP = TV.`PrecioBase` * NEW.`VidQuoteProdCantidad` WHERE T3.`VidQuoteID` = TV.`VidQuoteID` AND T3.`VidQuoteItem` = TV.`VidQuoteItem` AND T3.`VidQuoteItem` = NEW.`VidQuoteItem` AND T3.`VidQuoteProdID` = TV.`VidQuoteProdID` AND T3.`VidQuoteElementoID` = TV.`ElementoID`; END IF; END</nowiki>\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| BEGIN DELETE FROM vidquoten3 WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND vidquoten3.VidQuoteItem=OLD.VidQuoteItem; END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey2 AS Limite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03))\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(110,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n	DECLARE vListaVieja,vListaNueva INT(5);\n	DECLARE vFechaModificacion DATE;\n	DECLARE vHoraModificacion TIME;\n	SET vListaNueva = (SELECT Lista FROM listavigente);\n	SET vListaVieja = (SELECT MAX(listasprecios.Lista) FROM listasprecios WHERE listasprecios.Lista <> NEW.Lista);\n	SET vFechaModificacion = CURDATE();\n	SET vHoraModificacion = CURTIME();\n	INSERT INTO precios (\n		`precios`.`Lista`,\n		`precios`.`ProductoID`,\n		`precios`.`PrecioProd01`,\n		`precios`.`PrecioProd02`,\n		`precios`.`PrecioProd03`,\n		`precios`.`FechaModificacion`,\n		`precios`.`HoraModificacion`)(\n	SELECT 	vListaNueva,\n		`precios`.`ProductoID`,\n		`precios`.`PrecioProd01`,\n		`precios`.`PrecioProd02`,\n		`precios`.`PrecioProd03`,\n		vFechaModificacion,\n		vHoraModificacion\n	FROM precios \n	WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| BEGIN DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5); SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`); SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`); SET `NEW`.`FechaModificacion` = CURDATE(); SET `NEW`.`HoraModificacion` = CURTIME(); SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`); IF ISNULL(NEW.CategoriaID) THEN IF ISNULL(NEW.ProveedorID) THEN UPDATE `precios`,`productos` SET `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`, `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`, `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`, `precios`.`FechaModificacion` = CURDATE(), `precios`.`HoraModificacion` = CURTIME() WHERE `precios`.`ProductoID` = `productos`.`ProductoID` AND `precios`.`Lista` = `NEW`.`Lista`; SET vPaso=\'A\'; ELSE UPDATE `precios`,`productos` SET `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`, `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`, `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`, `precios`.`FechaModificacion` = CURDATE(), `precios`.`HoraModificacion` = CURTIME() WHERE `precios`.`ProductoID` = `productos`.`ProductoID` AND `precios`.`Lista` = `NEW`.`Lista` AND `productos`.`ProveedorID` = NEW.ProveedorID; SET vPaso=\'B\'; END IF; ELSE IF ISNULL(NEW.ProveedorID) THEN UPDATE `precios`,`productos` SET `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`, `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`, `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`, `precios`.`FechaModificacion` = CURDATE(), `precios`.`HoraModificacion` = CURTIME() WHERE `precios`.`ProductoID` = `productos`.`ProductoID` AND `precios`.`Lista` = `NEW`.`Lista` AND `productos`.`CategoriaID` = NEW.CategoriaID; SET vPaso=\'C\'; ELSE UPDATE `precios`,`productos` SET `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`, `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`, `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`, `precios`.`FechaModificacion` = CURDATE(), `precios`.`HoraModificacion` = CURTIME() WHERE `precios`.`ProductoID` = `productos`.`ProductoID` AND `precios`.`Lista` = `NEW`.`Lista` AND `productos`.`CategoriaID` = vCategoriaID AND `productos`.`ProveedorID` = vProveedorID; SET vPaso=\'D\'; END IF; END IF; SET `NEW`.`RowsMod` = ROW_COUNT(); END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| BEGIN SET NEW.FechaModificacion = CURDATE(), NEW.HoraModificacion = CURTIME(); END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| BEGIN SET NEW.FechaModificacion = CURDATE(), NEW.HoraModificacion = CURTIME(); END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| BEFORE\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| BEGIN SET NEW.TransaccFecha = CURDATE(), NEW.TransaccHora = CURTIME(); END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| BEGIN DELETE FROM vidquoten2 WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID; DELETE FROM vidquoten3 WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID; END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|-\n| Alta_Item_Presupuesto\n| INSERT\n| vidquoten2\n| BEGIN INSERT INTO vidquoten3 ( VidQuoteID, VidQuoteLPre, VidQuoteItem, VidQuoteProdID, VidQuoteProdCantidad, VidQuoteAncho, VidQuoteAlto, VidQuoteElementoID, VidQuotePrecio, VidQuotePrecioP) SELECT NEW.`VidQuoteID`, NEW.`VidQuoteLPre`, NEW.`VidQuoteItem`, NEW.`VidQuoteProdID`, NEW.`VidQuoteProdCantidad`, NEW.`VidQuoteAncho`, NEW.`VidQuoteAlto`, visintdetpre.`ElementoID`, visintdetpre.`PrecioBase`, visintdetpre.`PrecioBase` * NEW.`VidQuoteProdCantidad` FROM visintdetpre WHERE visintdetpre.`ElementoPM`=1 AND visintdetpre.`VidQuoteProdID`=NEW.`VidQuoteProdID`; END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|-\n| Actualiza_Item_Presupuesto\n| UPDATE\n| vidquoten2\n| <nowiki>BEGIN IF OLD.VidQuoteProdID <> NEW.VidQuoteProdID THEN DELETE FROM vidquoten3 WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND vidquoten3.VidQuoteItem=OLD.VidQuoteItem; INSERT INTO vidquoten3 ( VidQuoteID, VidQuoteLPre, VidQuoteItem, VidQuoteProdID, VidQuoteProdCantidad, VidQuoteAncho, VidQuoteAlto, VidQuoteElementoID, VidQuotePrecio, VidQuotePrecioP) SELECT NEW.`VidQuoteID`, NEW.`VidQuoteLPre`, NEW.`VidQuoteItem`, NEW.`VidQuoteProdID`, NEW.`VidQuoteProdCantidad`, NEW.`VidQuoteAncho`, NEW.`VidQuoteAlto`, visintdetpre.`ElementoID`, visintdetpre.`PrecioBase`, visintdetpre.`PrecioBase` * NEW.`VidQuoteProdCantidad` FROM visintdetpre WHERE visintdetpre.`ElementoPM`=1 AND visintdetpre.`VidQuoteProdID`=NEW.`VidQuoteProdID`; ELSE UPDATE `fzggestion`.`vidquoten3` AS `T3`,`fzggestion`.`visintdetpre` AS `TV` SET T3.VidQuoteProdCantidad = NEW.`VidQuoteProdCantidad`, T3.VidQuoteAncho = NEW.`VidQuoteAncho`, T3.VidQuoteAlto = NEW.`VidQuoteAlto`, T3.VidQuotePrecio = TV.`PrecioBase`, T3.VidQuotePrecioP = TV.`PrecioBase` * NEW.`VidQuoteProdCantidad` WHERE T3.`VidQuoteID` = TV.`VidQuoteID` AND T3.`VidQuoteItem` = TV.`VidQuoteItem` AND T3.`VidQuoteItem` = NEW.`VidQuoteItem` AND T3.`VidQuoteProdID` = TV.`VidQuoteProdID` AND T3.`VidQuoteElementoID` = TV.`ElementoID`; END IF; END</nowiki>\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| BEGIN DELETE FROM vidquoten3 WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND vidquoten3.VidQuoteItem=OLD.VidQuoteItem; END\n| style=\"border-top:none;border-bottom:0.05pt double #808080;border-left:0.05pt double #808080;border-right:0.05pt double #808080;padding:0.0194in;\"| AFTER\n\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey2 AS Limite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03))\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(111,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n	DECLARE vListaVieja,vListaNueva INT(5);\n	DECLARE vFechaModificacion DATE;\n	DECLARE vHoraModificacion TIME;\n	SET vListaNueva = (SELECT Lista FROM listavigente);\n	SET vListaVieja = (SELECT MAX(listasprecios.Lista) FROM listasprecios WHERE listasprecios.Lista <> NEW.Lista);\n	SET vFechaModificacion = CURDATE();\n	SET vHoraModificacion = CURTIME();\n	INSERT INTO precios (\n		`precios`.`Lista`,\n		`precios`.`ProductoID`,\n		`precios`.`PrecioProd01`,\n		`precios`.`PrecioProd02`,\n		`precios`.`PrecioProd03`,\n		`precios`.`FechaModificacion`,\n		`precios`.`HoraModificacion`)(\n	SELECT 	vListaNueva,\n		`precios`.`ProductoID`,\n		`precios`.`PrecioProd01`,\n		`precios`.`PrecioProd02`,\n		`precios`.`PrecioProd03`,\n		vFechaModificacion,\n		vHoraModificacion\n	FROM precios \n	WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n	DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n	SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n	SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n	SET `NEW`.`FechaModificacion` = CURDATE();\n	SET `NEW`.`HoraModificacion` = CURTIME();\n	SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n	IF ISNULL(NEW.CategoriaID) THEN\n		IF ISNULL(NEW.ProveedorID) THEN\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE 	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista`;\n			SET vPaso=\'A\';\n		ELSE\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`ProveedorID` = NEW.ProveedorID;\n			SET vPaso=\'B\';\n		END</pre> IF;\n	ELSE\n		IF ISNULL(NEW.ProveedorID) THEN\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`CategoriaID` = NEW.CategoriaID;\n			SET vPaso=\'C\';\n		ELSE\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`CategoriaID` = vCategoriaID AND\n					`productos`.`ProveedorID` = vProveedorID;\n			SET vPaso=\'D\';\n		END</pre> IF;\n	END</pre> IF;\n	SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>BEGIN	SET 	NEW.FechaModificacion = CURDATE(),		NEW.HoraModificacion = CURTIME();  END</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>BEGIN	SET 	NEW.FechaModificacion = CURDATE(),		NEW.HoraModificacion = CURTIME();  END</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n						`precios`.`ProductoID`, \n						`precios`.`PrecioProd00`,\n						`precios`.`PrecioProd01`, \n						`precios`.`PrecioProd02`, \n						`precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n							`composicion`.`ElementoID`,\n							`composicion`.`ValorElemento`,\n							`composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n	SET	NEW.TransaccFecha = CURDATE(),\n		NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>BEGIN    DELETE FROM vidquoten3    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND	  vidquoten3.VidQuoteItem=OLD.VidQuoteItem;  END</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n	DELETE FROM vidquoten4\n    WHERE 	vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n			vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n			vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey2 AS Limite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03))\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(112,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n	DECLARE vListaVieja,vListaNueva INT(5);\n	DECLARE vFechaModificacion DATE;\n	DECLARE vHoraModificacion TIME;\n	SET vListaNueva = (SELECT Lista FROM listavigente);\n	SET vListaVieja = (SELECT MAX(listasprecios.Lista) FROM listasprecios WHERE listasprecios.Lista <> NEW.Lista);\n	SET vFechaModificacion = CURDATE();\n	SET vHoraModificacion = CURTIME();\n	INSERT INTO precios (\n		`precios`.`Lista`,\n		`precios`.`ProductoID`,\n		`precios`.`PrecioProd01`,\n		`precios`.`PrecioProd02`,\n		`precios`.`PrecioProd03`,\n		`precios`.`FechaModificacion`,\n		`precios`.`HoraModificacion`)(\n	SELECT 	vListaNueva,\n		`precios`.`ProductoID`,\n		`precios`.`PrecioProd01`,\n		`precios`.`PrecioProd02`,\n		`precios`.`PrecioProd03`,\n		vFechaModificacion,\n		vHoraModificacion\n	FROM precios \n	WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n	DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n	SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n	SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n	SET `NEW`.`FechaModificacion` = CURDATE();\n	SET `NEW`.`HoraModificacion` = CURTIME();\n	SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n	IF ISNULL(NEW.CategoriaID) THEN\n		IF ISNULL(NEW.ProveedorID) THEN\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE 	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista`;\n			SET vPaso=\'A\';\n		ELSE\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`ProveedorID` = NEW.ProveedorID;\n			SET vPaso=\'B\';\n		END IF;\n	ELSE\n		IF ISNULL(NEW.ProveedorID) THEN\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`CategoriaID` = NEW.CategoriaID;\n			SET vPaso=\'C\';\n		ELSE\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`CategoriaID` = vCategoriaID AND\n					`productos`.`ProveedorID` = vProveedorID;\n			SET vPaso=\'D\';\n		END IF;\n	END IF;\n	SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>BEGIN	SET 	NEW.FechaModificacion = CURDATE(),		NEW.HoraModificacion = CURTIME();  END</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>BEGIN	SET 	NEW.FechaModificacion = CURDATE(),		NEW.HoraModificacion = CURTIME();  END</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n						`precios`.`ProductoID`, \n						`precios`.`PrecioProd00`,\n						`precios`.`PrecioProd01`, \n						`precios`.`PrecioProd02`, \n						`precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n							`composicion`.`ElementoID`,\n							`composicion`.`ValorElemento`,\n							`composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n	SET	NEW.TransaccFecha = CURDATE(),\n		NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>BEGIN    DELETE FROM vidquoten3    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND	  vidquoten3.VidQuoteItem=OLD.VidQuoteItem;  END</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n	DELETE FROM vidquoten4\n    WHERE 	vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n			vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n			vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey2 AS Limite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03))\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(113,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n	DECLARE vListaVieja,vListaNueva INT(5);\n	DECLARE vFechaModificacion DATE;\n	DECLARE vHoraModificacion TIME;\n	SET vListaNueva = (SELECT Lista FROM listavigente);\n	SET vListaVieja = (SELECT MAX(listasprecios.Lista) FROM listasprecios WHERE listasprecios.Lista <> NEW.Lista);\n	SET vFechaModificacion = CURDATE();\n	SET vHoraModificacion = CURTIME();\n	INSERT INTO precios (\n		`precios`.`Lista`,\n		`precios`.`ProductoID`,\n		`precios`.`PrecioProd01`,\n		`precios`.`PrecioProd02`,\n		`precios`.`PrecioProd03`,\n		`precios`.`FechaModificacion`,\n		`precios`.`HoraModificacion`)(\n	SELECT 	vListaNueva,\n		`precios`.`ProductoID`,\n		`precios`.`PrecioProd01`,\n		`precios`.`PrecioProd02`,\n		`precios`.`PrecioProd03`,\n		vFechaModificacion,\n		vHoraModificacion\n	FROM precios \n	WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n	DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n	SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n	SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n	SET `NEW`.`FechaModificacion` = CURDATE();\n	SET `NEW`.`HoraModificacion` = CURTIME();\n	SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n	IF ISNULL(NEW.CategoriaID) THEN\n		IF ISNULL(NEW.ProveedorID) THEN\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE 	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista`;\n			SET vPaso=\'A\';\n		ELSE\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`ProveedorID` = NEW.ProveedorID;\n			SET vPaso=\'B\';\n		END IF;\n	ELSE\n		IF ISNULL(NEW.ProveedorID) THEN\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`CategoriaID` = NEW.CategoriaID;\n			SET vPaso=\'C\';\n		ELSE\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`CategoriaID` = vCategoriaID AND\n					`productos`.`ProveedorID` = vProveedorID;\n			SET vPaso=\'D\';\n		END IF;\n	END IF;\n	SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n	SET 	NEW.FechaModificacion = CURDATE(),\n		NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n	SET 	NEW.FechaModificacion = CURDATE(),\n		NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n						`precios`.`ProductoID`, \n						`precios`.`PrecioProd00`,\n						`precios`.`PrecioProd01`, \n						`precios`.`PrecioProd02`, \n						`precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n							`composicion`.`ElementoID`,\n							`composicion`.`ValorElemento`,\n							`composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n	SET	NEW.TransaccFecha = CURDATE(),\n		NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>BEGIN    DELETE FROM vidquoten3    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND	  vidquoten3.VidQuoteItem=OLD.VidQuoteItem;  END</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n	DELETE FROM vidquoten4\n    WHERE 	vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n			vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n			vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey2 AS Limite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03))\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(114,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n	DECLARE vListaVieja,vListaNueva INT(5);\n	DECLARE vFechaModificacion DATE;\n	DECLARE vHoraModificacion TIME;\n	SET vListaNueva = (SELECT Lista FROM listavigente);\n	SET vListaVieja = (SELECT MAX(listasprecios.Lista) FROM listasprecios WHERE listasprecios.Lista <> NEW.Lista);\n	SET vFechaModificacion = CURDATE();\n	SET vHoraModificacion = CURTIME();\n	INSERT INTO precios (\n		`precios`.`Lista`,\n		`precios`.`ProductoID`,\n		`precios`.`PrecioProd01`,\n		`precios`.`PrecioProd02`,\n		`precios`.`PrecioProd03`,\n		`precios`.`FechaModificacion`,\n		`precios`.`HoraModificacion`)(\n	SELECT 	vListaNueva,\n		`precios`.`ProductoID`,\n		`precios`.`PrecioProd01`,\n		`precios`.`PrecioProd02`,\n		`precios`.`PrecioProd03`,\n		vFechaModificacion,\n		vHoraModificacion\n	FROM precios \n	WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n	DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n	SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n	SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n	SET `NEW`.`FechaModificacion` = CURDATE();\n	SET `NEW`.`HoraModificacion` = CURTIME();\n	SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n	IF ISNULL(NEW.CategoriaID) THEN\n		IF ISNULL(NEW.ProveedorID) THEN\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE 	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista`;\n			SET vPaso=\'A\';\n		ELSE\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`ProveedorID` = NEW.ProveedorID;\n			SET vPaso=\'B\';\n		END IF;\n	ELSE\n		IF ISNULL(NEW.ProveedorID) THEN\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`CategoriaID` = NEW.CategoriaID;\n			SET vPaso=\'C\';\n		ELSE\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`CategoriaID` = vCategoriaID AND\n					`productos`.`ProveedorID` = vProveedorID;\n			SET vPaso=\'D\';\n		END IF;\n	END IF;\n	SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n	SET 	NEW.FechaModificacion = CURDATE(),\n		NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n	SET 	NEW.FechaModificacion = CURDATE(),\n		NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n						`precios`.`ProductoID`, \n						`precios`.`PrecioProd00`,\n						`precios`.`PrecioProd01`, \n						`precios`.`PrecioProd02`, \n						`precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n							`composicion`.`ElementoID`,\n							`composicion`.`ValorElemento`,\n							`composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n	SET	NEW.TransaccFecha = CURDATE(),\n		NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n	  vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n	DELETE FROM vidquoten4\n    WHERE 	vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n			vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n			vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey2 AS Limite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03))\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(115,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n	DECLARE vListaVieja,vListaNueva INT(5);\n	DECLARE vFechaModificacion DATE;\n	DECLARE vHoraModificacion TIME;\n	SET vListaNueva = (SELECT Lista FROM listavigente);\n	SET vListaVieja = ( SELECT MAX(listasprecios.Lista) \n				FROM listasprecios \n				WHERE listasprecios.Lista <> NEW.Lista);\n	SET vFechaModificacion = CURDATE();\n	SET vHoraModificacion = CURTIME();\n	INSERT INTO precios (\n		`precios`.`Lista`,\n		`precios`.`ProductoID`,\n		`precios`.`PrecioProd01`,\n		`precios`.`PrecioProd02`,\n		`precios`.`PrecioProd03`,\n		`precios`.`FechaModificacion`,\n		`precios`.`HoraModificacion`)(\n	SELECT 	vListaNueva,\n		`precios`.`ProductoID`,\n		`precios`.`PrecioProd01`,\n		`precios`.`PrecioProd02`,\n		`precios`.`PrecioProd03`,\n		vFechaModificacion,\n		vHoraModificacion\n	FROM precios \n	WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n	DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n	SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n	SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n	SET `NEW`.`FechaModificacion` = CURDATE();\n	SET `NEW`.`HoraModificacion` = CURTIME();\n	SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n	IF ISNULL(NEW.CategoriaID) THEN\n		IF ISNULL(NEW.ProveedorID) THEN\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE 	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista`;\n			SET vPaso=\'A\';\n		ELSE\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`ProveedorID` = NEW.ProveedorID;\n			SET vPaso=\'B\';\n		END IF;\n	ELSE\n		IF ISNULL(NEW.ProveedorID) THEN\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`CategoriaID` = NEW.CategoriaID;\n			SET vPaso=\'C\';\n		ELSE\n			UPDATE `precios`,`productos`\n			SET 	`precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n				`precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n				`precios`.`FechaModificacion` = CURDATE(),\n				`precios`.`HoraModificacion` = CURTIME()\n			WHERE	`precios`.`ProductoID` = `productos`.`ProductoID` AND\n					`precios`.`Lista` = `NEW`.`Lista` AND\n					`productos`.`CategoriaID` = vCategoriaID AND\n					`productos`.`ProveedorID` = vProveedorID;\n			SET vPaso=\'D\';\n		END IF;\n	END IF;\n	SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n	SET 	NEW.FechaModificacion = CURDATE(),\n		NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n	SET 	NEW.FechaModificacion = CURDATE(),\n		NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n						`precios`.`ProductoID`, \n						`precios`.`PrecioProd00`,\n						`precios`.`PrecioProd01`, \n						`precios`.`PrecioProd02`, \n						`precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n							`composicion`.`ElementoID`,\n							`composicion`.`ValorElemento`,\n							`composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n	SET	NEW.TransaccFecha = CURDATE(),\n		NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n	  vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n	DELETE FROM vidquoten4\n    WHERE 	vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n			vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n			vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey2 AS Limite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03))\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(116,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey2 AS Limite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03))\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(117,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey2 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(118,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey2 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(119,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(120,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n\n<pre><small>\nSELECT\n    vidquoten2.VidQuoteID AS VidQuoteID,\n    vidquoten1.VidQuoteObra AS VidQuoteObra,\n    vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n    vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n    vidquoten1.VidQuoteEstado AS VidQuoteEstado,\n    vidquoten2.VidQuoteItem AS VidQuoteItem,\n    vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n    vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n    vidquoten2.VidQuoteAncho,\n    vidquoten2.VidQuoteAlto,\n    IF(vidquoten2.VidQuoteAncho > 0\n        ,IF(vidquoten2.VidQuoteAlto > 0\n        ,CONCAT(productos.Descripcion,\" -Dimensión(mm): \",LPAD(CAST(vidquoten2.VidQuoteAncho AS CHAR),4,\"0000\"),\"x\",LPAD(CAST(vidquoten2.VidQuoteAlto AS CHAR),4,\"0000\"),\"-\")\n        ,CONCAT(productos.Descripcion,\" -Largo(mm): \",LPAD(CAST(vidquoten2.VidQuoteAncho AS CHAR),4,\"0000\"),\"mm-\")\n        )\n    ,productos.Descripcion\n    ) AS Descripcion,\n    vissubxitem.VidQuotePrecioS AS VidQuotePrecioS\nFROM\n    (((vidquoten1\n    JOIN vidquoten2)\n    JOIN productos)\n    JOIN vissubxitem)\nWHERE\n    ((vidquoten1.VidQuoteID = vidquoten2.VidQuoteID) and\n    (productos.ProductoID = vidquoten2.VidQuoteProdID) and\n    (vissubxitem.VidQuoteID = vidquoten2.VidQuoteID) and\n    (vissubxitem.VidQuoteItem = vidquoten2.VidQuoteItem))\n</small></pre>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8');
INSERT INTO `peg_text` VALUES (121,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n\n<small><pre>\nSELECT\n    vidquoten2.VidQuoteID AS VidQuoteID,\n    vidquoten1.VidQuoteObra AS VidQuoteObra,\n    vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n    vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n    vidquoten1.VidQuoteEstado AS VidQuoteEstado,\n    vidquoten2.VidQuoteItem AS VidQuoteItem,\n    vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n    vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n    vidquoten2.VidQuoteAncho,\n    vidquoten2.VidQuoteAlto,\n    IF(vidquoten2.VidQuoteAncho > 0\n        ,IF(vidquoten2.VidQuoteAlto > 0\n        ,CONCAT(productos.Descripcion,\" -Dimensión(mm): \",LPAD(CAST(vidquoten2.VidQuoteAncho AS CHAR),4,\"0000\"),\"x\",LPAD(CAST(vidquoten2.VidQuoteAlto AS CHAR),4,\"0000\"),\"-\")\n        ,CONCAT(productos.Descripcion,\" -Largo(mm): \",LPAD(CAST(vidquoten2.VidQuoteAncho AS CHAR),4,\"0000\"),\"mm-\")\n        )\n    ,productos.Descripcion\n    ) AS Descripcion,\n    vissubxitem.VidQuotePrecioS AS VidQuotePrecioS\nFROM\n    (((vidquoten1\n    JOIN vidquoten2)\n    JOIN productos)\n    JOIN vissubxitem)\nWHERE\n    ((vidquoten1.VidQuoteID = vidquoten2.VidQuoteID) and\n    (productos.ProductoID = vidquoten2.VidQuoteProdID) and\n    (vissubxitem.VidQuoteID = vidquoten2.VidQuoteID) and\n    (vissubxitem.VidQuoteItem = vidquoten2.VidQuoteItem))\n</pre></small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(122,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| FZG.Vista.vislineabs.sql\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n==== FZG.Vista.vislineabs.sql ====\n<small><pre>\nSELECT\n    vidquoten2.VidQuoteID AS VidQuoteID,\n    vidquoten1.VidQuoteObra AS VidQuoteObra,\n    vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n    vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n    vidquoten1.VidQuoteEstado AS VidQuoteEstado,\n    vidquoten2.VidQuoteItem AS VidQuoteItem,\n    vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n    vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n    vidquoten2.VidQuoteAncho,\n    vidquoten2.VidQuoteAlto,\n    IF(vidquoten2.VidQuoteAncho > 0\n        ,IF(vidquoten2.VidQuoteAlto > 0\n        ,CONCAT(productos.Descripcion,\" -Dimensión(mm): \",LPAD(CAST(vidquoten2.VidQuoteAncho AS CHAR),4,\"0000\"),\"x\",LPAD(CAST(vidquoten2.VidQuoteAlto AS CHAR),4,\"0000\"),\"-\")\n        ,CONCAT(productos.Descripcion,\" -Largo(mm): \",LPAD(CAST(vidquoten2.VidQuoteAncho AS CHAR),4,\"0000\"),\"mm-\")\n        )\n    ,productos.Descripcion\n    ) AS Descripcion,\n    vissubxitem.VidQuotePrecioS AS VidQuotePrecioS\nFROM\n    (((vidquoten1\n    JOIN vidquoten2)\n    JOIN productos)\n    JOIN vissubxitem)\nWHERE\n    ((vidquoten1.VidQuoteID = vidquoten2.VidQuoteID) and\n    (productos.ProductoID = vidquoten2.VidQuoteProdID) and\n    (vissubxitem.VidQuoteID = vidquoten2.VidQuoteID) and\n    (vissubxitem.VidQuoteItem = vidquoten2.VidQuoteItem))\n</pre></small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(123,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n==== FZG.Vista.vislineabs.sql ====\n<small><pre>\nSELECT\n    vidquoten2.VidQuoteID AS VidQuoteID,\n    vidquoten1.VidQuoteObra AS VidQuoteObra,\n    vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n    vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n    vidquoten1.VidQuoteEstado AS VidQuoteEstado,\n    vidquoten2.VidQuoteItem AS VidQuoteItem,\n    vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n    vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n    vidquoten2.VidQuoteAncho,\n    vidquoten2.VidQuoteAlto,\n    IF(vidquoten2.VidQuoteAncho > 0\n        ,IF(vidquoten2.VidQuoteAlto > 0\n        ,CONCAT(productos.Descripcion,\" -Dimensión(mm): \",LPAD(CAST(vidquoten2.VidQuoteAncho AS CHAR),4,\"0000\"),\"x\",LPAD(CAST(vidquoten2.VidQuoteAlto AS CHAR),4,\"0000\"),\"-\")\n        ,CONCAT(productos.Descripcion,\" -Largo(mm): \",LPAD(CAST(vidquoten2.VidQuoteAncho AS CHAR),4,\"0000\"),\"mm-\")\n        )\n    ,productos.Descripcion\n    ) AS Descripcion,\n    vissubxitem.VidQuotePrecioS AS VidQuotePrecioS\nFROM\n    (((vidquoten1\n    JOIN vidquoten2)\n    JOIN productos)\n    JOIN vissubxitem)\nWHERE\n    ((vidquoten1.VidQuoteID = vidquoten2.VidQuoteID) and\n    (productos.ProductoID = vidquoten2.VidQuoteProdID) and\n    (vissubxitem.VidQuoteID = vidquoten2.VidQuoteID) and\n    (vissubxitem.VidQuoteItem = vidquoten2.VidQuoteItem))\n</pre></small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(124,'==== FZG.Vista.vislineabs.sql ====\n<small><pre>\nSELECT\n    vidquoten2.VidQuoteID AS VidQuoteID,\n    vidquoten1.VidQuoteObra AS VidQuoteObra,\n    vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n    vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n    vidquoten1.VidQuoteEstado AS VidQuoteEstado,\n    vidquoten2.VidQuoteItem AS VidQuoteItem,\n    vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n    vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n    vidquoten2.VidQuoteAncho,\n    vidquoten2.VidQuoteAlto,\n    IF(vidquoten2.VidQuoteAncho > 0\n        ,IF(vidquoten2.VidQuoteAlto > 0\n        ,CONCAT(productos.Descripcion,\" -Dimensión(mm): \",LPAD(CAST(vidquoten2.VidQuoteAncho AS CHAR),4,\"0000\"),\"x\",LPAD(CAST(vidquoten2.VidQuoteAlto AS CHAR),4,\"0000\"),\"-\")\n        ,CONCAT(productos.Descripcion,\" -Largo(mm): \",LPAD(CAST(vidquoten2.VidQuoteAncho AS CHAR),4,\"0000\"),\"mm-\")\n        )\n    ,productos.Descripcion\n    ) AS Descripcion,\n    vissubxitem.VidQuotePrecioS AS VidQuotePrecioS\nFROM\n    (((vidquoten1\n    JOIN vidquoten2)\n    JOIN productos)\n    JOIN vissubxitem)\nWHERE\n    ((vidquoten1.VidQuoteID = vidquoten2.VidQuoteID) and\n    (productos.ProductoID = vidquoten2.VidQuoteProdID) and\n    (vissubxitem.VidQuoteID = vidquoten2.VidQuoteID) and\n    (vissubxitem.VidQuoteItem = vidquoten2.VidQuoteItem))\n</pre></small>','utf-8'),(125,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(126,'==== FZG.Vista.vislineabs.sql ====\n<small><pre>\nSELECT\n    vidquoten2.VidQuoteID AS VidQuoteID,\n    vidquoten1.VidQuoteObra AS VidQuoteObra,\n    vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n    vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n    vidquoten1.VidQuoteEstado AS VidQuoteEstado,\n    vidquoten2.VidQuoteItem AS VidQuoteItem,\n    vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n    vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n    IF(vidquoten2.VidQuoteAncho > 0\n        ,IF(vidquoten2.VidQuoteAlto > 0\n        ,CONCAT(productos.Descripcion,\" -Dimensión(mm): \",LPAD(CAST(vidquoten2.VidQuoteAncho AS CHAR),4,\"0000\"),\"x\",LPAD(CAST(vidquoten2.VidQuoteAlto AS CHAR),4,\"0000\"),\"-\")\n        ,CONCAT(productos.Descripcion,\" -Largo(mm): \",LPAD(CAST(vidquoten2.VidQuoteAncho AS CHAR),4,\"0000\"),\"mm-\")\n        )\n    ,productos.Descripcion\n    ) AS Descripcion,\n    vissubxitem.VidQuotePrecioS AS VidQuotePrecioS\nFROM\n    (((vidquoten1\n    JOIN vidquoten2)\n    JOIN productos)\n    JOIN vissubxitem)\nWHERE\n    ((vidquoten1.VidQuoteID = vidquoten2.VidQuoteID) and\n    (productos.ProductoID = vidquoten2.VidQuoteProdID) and\n    (vissubxitem.VidQuoteID = vidquoten2.VidQuoteID) and\n    (vissubxitem.VidQuoteItem = vidquoten2.VidQuoteItem))\n</pre></small>','utf-8'),(127,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(128,'====== al 20120319 ======\n<small><pre>\nCREATE PROCEDURE `ActualizaPreciosTabular`(IN pFiltro VARCHAR(300), IN pAccion VARCHAR(2))\nBEGIN\n	SET @wcn = \" `precios`.`ProductoID`=`productos`.`ProductoID` AND `precios`.`Lista` = (SELECT Lista FROM listavigente)\";\n	SET @sql = \"UPDATE precios,productos SET \";\n    CASE pAccion\n		WHEN \"1\" THEN \n			BEGIN\n				SET @fls = \" \"\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd01` = `precios`.`PrecioProd00` * `productos`.`CoefP00P01`,\");\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd02` = `precios`.`PrecioProd00` * `productos`.`CoefP00P02`,\");\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd03` = `precios`.`PrecioProd00` * `productos`.`CoefP00P03`\");\n			END;\n		WHEN \"2\" THEN SET @fld = \" `precios`.`PrecioProd00` = `precios`.`PrecioProd01` / `productos`.`CoefP00P01`\";\n		WHEN \"3\" THEN SET @fld = \" `precios`.`PrecioProd00` = `precios`.`PrecioProd02` / `productos`.`CoefP00P02`\";\n		WHEN \"4\" THEN SET @fld = \" `precios`.`PrecioProd00` = `precios`.`PrecioProd03` / `productos`.`CoefP00P03`\";\n	END CASE;\n	IF pFiltro <> \"\" THEN SET @wcn = CONCAT(@wcn,\" AND \",pFiltro);\n	END IF;\n	SET @sql = CONCAT(@sql,@fld,\" WHERE \",@wcn);\n	PREPARE stmt FROM @sql;\n	EXECUTE stmt;\n	DEALLOCATE PREPARE stmt;\nEND\n</pre></small>\n====== al 20120301 ======\n<small><pre>\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosTabular`(IN pFiltro VARCHAR(300), IN pAccion VARCHAR(2))\nBEGIN\n	SET @wcn = \" `precios`.`ProductoID`=`productos`.`ProductoID` AND `precios`.`Lista` = (SELECT Lista FROM listavigente)\";\n	SET @sql = \"UPDATE precios,productos SET \";\n    CASE pAccion\n		WHEN \"1\" THEN \n			BEGIN\n				SET @fld = \" `precios`.`PrecioProd01` = `precios`.`PrecioProd00` * `productos`.`CoefP00P01`,\";\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd02` = `precios`.`PrecioProd00` * `productos`.`CoefP00P03`,\");\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd03` = `precios`.`PrecioProd00` * `productos`.`CoefP00P03`\");\n			END;\n		WHEN \"2\" THEN SET @fld = \" `precios`.`PrecioProd00` = `precios`.`PrecioProd01` / `productos`.`CoefP00P01`\";\n	END CASE;\n	IF pFiltro <> \"\" THEN SET @wcn = CONCAT(@wcn,\" AND \",pFiltro);\n	END IF;\n	SET @sql = CONCAT(@sql,@fld,\" WHERE \",@wcn);\n	PREPARE stmt FROM @sql;\n	EXECUTE stmt;\n	DEALLOCATE PREPARE stmt;\nEND\n</small></pre>','utf-8'),(129,'====== al 20120319 ======\n<small><pre>\nCREATE PROCEDURE `ActualizaPreciosTabular`(IN pFiltro VARCHAR(300), IN pAccion VARCHAR(2))\nBEGIN\n	SET @wcn = \" `precios`.`ProductoID`=`productos`.`ProductoID` AND `precios`.`Lista` = (SELECT Lista FROM listavigente)\";\n	SET @sql = \"UPDATE precios,productos SET \";\n    CASE pAccion\n		WHEN \"1\" THEN \n			BEGIN\n				SET @fls = \" \"\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd01` = `precios`.`PrecioProd00` * `productos`.`CoefP00P01`,\");\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd02` = `precios`.`PrecioProd00` * `productos`.`CoefP00P02`,\");\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd03` = `precios`.`PrecioProd00` * `productos`.`CoefP00P03`\");\n			END;\n		WHEN \"2\" THEN SET @fld = \" `precios`.`PrecioProd00` = `precios`.`PrecioProd01` / `productos`.`CoefP00P01`\";\n		WHEN \"3\" THEN SET @fld = \" `precios`.`PrecioProd00` = `precios`.`PrecioProd02` / `productos`.`CoefP00P02`\";\n		WHEN \"4\" THEN SET @fld = \" `precios`.`PrecioProd00` = `precios`.`PrecioProd03` / `productos`.`CoefP00P03`\";\n	END CASE;\n	IF pFiltro <> \"\" THEN SET @wcn = CONCAT(@wcn,\" AND \",pFiltro);\n	END IF;\n	SET @sql = CONCAT(@sql,@fld,\" WHERE \",@wcn);\n	PREPARE stmt FROM @sql;\n	EXECUTE stmt;\n	DEALLOCATE PREPARE stmt;\nEND\n</pre></small>\n\n====== al 20120301 ======\n<small><pre>\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosTabular`(IN pFiltro VARCHAR(300), IN pAccion VARCHAR(2))\nBEGIN\n	SET @wcn = \" `precios`.`ProductoID`=`productos`.`ProductoID` AND `precios`.`Lista` = (SELECT Lista FROM listavigente)\";\n	SET @sql = \"UPDATE precios,productos SET \";\n    CASE pAccion\n		WHEN \"1\" THEN \n			BEGIN\n				SET @fld = \" `precios`.`PrecioProd01` = `precios`.`PrecioProd00` * `productos`.`CoefP00P01`,\";\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd02` = `precios`.`PrecioProd00` * `productos`.`CoefP00P03`,\");\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd03` = `precios`.`PrecioProd00` * `productos`.`CoefP00P03`\");\n			END;\n		WHEN \"2\" THEN SET @fld = \" `precios`.`PrecioProd00` = `precios`.`PrecioProd01` / `productos`.`CoefP00P01`\";\n	END CASE;\n	IF pFiltro <> \"\" THEN SET @wcn = CONCAT(@wcn,\" AND \",pFiltro);\n	END IF;\n	SET @sql = CONCAT(@sql,@fld,\" WHERE \",@wcn);\n	PREPARE stmt FROM @sql;\n	EXECUTE stmt;\n	DEALLOCATE PREPARE stmt;\nEND\n</small></pre>','utf-8'),(130,'====== al 20120319 ======\n<small><pre>\nDELIMITER $$\n\nCREATE PROCEDURE `ActualizaPreciosTabular`(IN pFiltro VARCHAR(300), IN pAccion VARCHAR(2))\nBEGIN\n	SET @wcn = \" `precios`.`ProductoID`=`productos`.`ProductoID` AND `precios`.`Lista` = (SELECT Lista FROM listavigente)\";\n	SET @sql = \"UPDATE precios,productos SET \";\n    CASE pAccion\n		WHEN \"1\" THEN \n			BEGIN\n				SET @fld = \" \"\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd01` = `precios`.`PrecioProd00` * `productos`.`CoefP00P01`,\");\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd02` = `precios`.`PrecioProd00` * `productos`.`CoefP00P02`,\");\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd03` = `precios`.`PrecioProd00` * `productos`.`CoefP00P03`\");\n			END;\n		WHEN \"2\" THEN SET @fld = \" `precios`.`PrecioProd00` = `precios`.`PrecioProd01` / `productos`.`CoefP00P01`\";\n		WHEN \"3\" THEN SET @fld = \" `precios`.`PrecioProd00` = `precios`.`PrecioProd02` / `productos`.`CoefP00P02`\";\n		WHEN \"4\" THEN SET @fld = \" `precios`.`PrecioProd00` = `precios`.`PrecioProd03` / `productos`.`CoefP00P03`\";\n	END CASE;\n	IF pFiltro <> \"\" THEN SET @wcn = CONCAT(@wcn,\" AND \",pFiltro);\n	END IF;\n	SET @sql = CONCAT(@sql,@fld,\" WHERE \",@wcn);\n	PREPARE stmt FROM @sql;\n	EXECUTE stmt;\n	DEALLOCATE PREPARE stmt;\nEND\n</pre></small>\n\n====== al 20120301 ======\n<small><pre>\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosTabular`(IN pFiltro VARCHAR(300), IN pAccion VARCHAR(2))\nBEGIN\n	SET @wcn = \" `precios`.`ProductoID`=`productos`.`ProductoID` AND `precios`.`Lista` = (SELECT Lista FROM listavigente)\";\n	SET @sql = \"UPDATE precios,productos SET \";\n    CASE pAccion\n		WHEN \"1\" THEN \n			BEGIN\n				SET @fld = \" `precios`.`PrecioProd01` = `precios`.`PrecioProd00` * `productos`.`CoefP00P01`,\";\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd02` = `precios`.`PrecioProd00` * `productos`.`CoefP00P03`,\");\n				SET @fld = CONCAT(@fld,\"`precios`.`PrecioProd03` = `precios`.`PrecioProd00` * `productos`.`CoefP00P03`\");\n			END;\n		WHEN \"2\" THEN SET @fld = \" `precios`.`PrecioProd00` = `precios`.`PrecioProd01` / `productos`.`CoefP00P01`\";\n	END CASE;\n	IF pFiltro <> \"\" THEN SET @wcn = CONCAT(@wcn,\" AND \",pFiltro);\n	END IF;\n	SET @sql = CONCAT(@sql,@fld,\" WHERE \",@wcn);\n	PREPARE stmt FROM @sql;\n	EXECUTE stmt;\n	DEALLOCATE PREPARE stmt;\nEND\n</small></pre>','utf-8'),(131,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| VISTA: visrepprec\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(132,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(133,'<small><pre>\nCREATE VIEW `visrepprec` AS\nSELECT \n    preciosvigentes.ProductoID AS ProductoID,\n    productos.Descripcion AS ProductoDSC,\n    productos.Magnitud AS Magnitud,\n    preciosvigentes.PrecioProd00 AS PrecioProd00,\n    preciosvigentes.PrecioProd01 AS PrecioProd01,\n    preciosvigentes.PrecioProd02 AS PrecioProd02,\n    preciosvigentes.PrecioProd03 AS PrecioProd03,\n    preciosvigentes.FechaModificacion AS FechaModificación\nFROM\n    fzggestion.productos AS productos,\n    fzggestion.preciosvigentes AS preciosvigentes\nWHERE\n    productos.ProductoID = preciosvigentes.ProductoID\n</pre></small>','utf-8'),(134,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| FZG.Vista.precioscmpl.sql\n| Vista de lista de precios completa con datos de productos. FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(135,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| FZG.Vista.precioscmpl.sql\n| Vista de lista de precios completa con datos de productos. FORM: Actualización por tipo de lista\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(136,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [file:///home/sas/Archivos/Documentos/Documentos/FazzGlass/Gestion/FZG.Vista.precioscmpl.sql]\n| Vista de lista de precios completa con datos de productos. FORM: Actualización por tipo de lista\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(137,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [media:/home/sas/Archivos/Documentos/Documentos/FazzGlass/Gestion/FZG.Vista.precioscmpl.sql]\n| Vista de lista de precios completa con datos de productos. FORM: Actualización por tipo de lista\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(138,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [[media:/home/sas/Archivos/Documentos/Documentos/FazzGlass/Gestion/FZG.Vista.precioscmpl.sql|FZG.Vista.precioscmpl.sql]]\n| Vista de lista de precios completa con datos de productos. FORM: Actualización por tipo de lista\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(139,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [[FZG.Vista.precioscmpl.sql]]\n| Vista de lista de precios completa con datos de productos. [[FORM: Precios Tabular x Proceso]]\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(140,'<small><pre>\nCREATE VIEW `precioscmpl` AS\nSELECT \n	`precios`.`ProductoID` AS ProductoID, \n	`productos`.`Descripcion` AS ProductoDSC, \n	`productos`.`CategoriaID` AS CategoriaID, \n	`productos`.`ProveedorID` AS ProveedorID, \n	`precios`.`PrecioProd00` AS PrecioProd00, \n	`productos`.`CoefP00P01` AS CoefP00P01, \n	`precios`.`PrecioProd01` AS PrecioProd01, \n	`productos`.`CoefP00P02` AS CoefP00P02, \n	`precios`.`PrecioProd02` AS PrecioProd02, \n	`productos`.`CoefP00P03` AS CoefP00P03, \n	`precios`.`PrecioProd03` AS PrecioProd03\nFROM	`fzggestion`.`productos` AS `productos`, \n		`fzggestion`.`precios` AS `precios` \nWHERE `productos`.`ProductoID` = `precios`.`ProductoID`\nORDER BY `precios`.`ProductoID`\n</pre></small>','utf-8'),(141,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [[FZG.Vista.precioscmpl.sql]]\n| Vista de lista de precios completa con datos de productos. [[FORM: Precios Tabular x Proceso]]\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|-\n| Viscompcnt\n| FZG.Vista.viscompcnt.sql\n| Vista de Presupuestos Totalizados por Cliente\n| composicion, \n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(142,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [[FZG.Vista.precioscmpl.sql]]\n| Vista de lista de precios completa con datos de productos. [[FORM: Precios Tabular x Proceso]]\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|-\n| Viscompcnt\n| [[FZG.Vista.viscompcnt.sql]]\n| Vista de Presupuestos Totalizados por Cliente\n| composicion, \n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(143,'<small><pre>\nSELECT\n    composicion.ProductoID AS ProductoID,\n    productos.Descripcion AS ProductoDSC,\n    productos.CategoriaID AS CategoriaID,\n    productos.ProveedorID AS ProveedorID,\n    COUNT(composicion.ProductoID) AS Cantidad,\n    if((COUNT(composicion.ProductoID) > 1),1,0) AS Compuesto\nFROM\n    (productos\n    JOIN composicion)\nWHERE\n    (productos.ProductoID = composicion.ProductoID)\nGROUP BY composicion.ProductoID\n</pre></small>','utf-8'),(144,'<small><pre>\nCREATE VIEW `viscompcnt` AS \nSELECT\n    composicion.ProductoID AS ProductoID,\n    productos.Descripcion AS ProductoDSC,\n    productos.CategoriaID AS CategoriaID,\n    productos.ProveedorID AS ProveedorID,\n    COUNT(composicion.ProductoID) AS Cantidad,\n    if((COUNT(composicion.ProductoID) > 1),1,0) AS Compuesto\nFROM\n    (productos\n    JOIN composicion)\nWHERE\n    (productos.ProductoID = composicion.ProductoID)\nGROUP BY composicion.ProductoID\n</pre></small>','utf-8'),(145,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [[FZG.Vista.precioscmpl.sql]]\n| Vista de lista de precios completa con datos de productos. [[FORM: Precios Tabular x Proceso]]\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|-\n| Viscompcnt\n| [[FZG.Vista.viscompcnt.sql]]\n| Vista de Componentes completa con indicadores de estado de composición\n| composicion, \n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(146,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [[FZG.Vista.precioscmpl.sql]]\n| Vista de lista de precios completa con datos de productos. [[FORM: Precios Tabular x Proceso]]\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|-\n| Viscompcnt\n| [[FZG.Vista.viscompcnt.sql]]\n| Vista resumen de Componentes completa con indicadores de estado de composición\n| composicion, producto\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(147,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n====== MacroProgramming ======\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [[FZG.Vista.precioscmpl.sql]]\n| Vista de lista de precios completa con datos de productos. [[FORM: Precios Tabular x Proceso]]\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|-\n| Viscompcnt\n| [[FZG.Vista.viscompcnt.sql]]\n| Vista resumen de Componentes completa con indicadores de estado de composición\n| composicion, producto\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(148,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== MacroProgramming ===\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [[FZG.Vista.precioscmpl.sql]]\n| Vista de lista de precios completa con datos de productos. [[FORM: Precios Tabular x Proceso]]\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|-\n| Viscompcnt\n| [[FZG.Vista.viscompcnt.sql]]\n| Vista resumen de Componentes completa con indicadores de estado de composición\n| composicion, producto\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),(149,'== Gestión Retail Aberturas ==\n*[[Gestión Retail Aberturas: Bitácora]]\n*[[Gestión Retail Aberturas: Pendientes]]\n*[[Gestión Retail Aberturas: Relaciones]]\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento)\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== MacroProgramming ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Tipo\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Main\n| Sub\n| Lanzador de Chequeos Iniciales\n| Independiente\n|\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Vistas ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [[FZG.Vista.precioscmpl.sql]]\n| Vista de lista de precios completa con datos de productos. [[FORM: Precios Tabular x Proceso]]\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|-\n| Viscompcnt\n| [[FZG.Vista.viscompcnt.sql]]\n| Vista resumen de Componentes completa con indicadores de estado de composición\n| composicion, producto\n|}</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\")\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)),\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)),\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08))\nFROM\n	wscontrol\n</pre></small>\n{{tecla|Ctrl|A}}','utf-8'),