== Developing ==
*[[Developing]]
*[[Pendientes]]
*[[SpanexDraw]]
*[[:Categoría:TABLAS]]

== Gestión Retail Aberturas ==
*[[GRA: Pendientes]]
*[[GRA: Relaciones]]
*[[GRA: Releases]]
*[[GRA: PreciosABT]]

=== Gestión de Magnitudes ===

==== Definiciones ====
*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]]
*Offset: Por defecto, el valor es 0

==== Atributos de Productos/Elementos ====
* M2 = Metro Cuadrado
Precio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)

* ML = Metro Lineal
<Del>Precio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento).</Del>

* MG = Magnitud Galarza
Precio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)

* UN = Unidad
Precio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento

=== Triggers ===
<small>
{| class="wikitable"
| <center>'''Trigger'''</center>
| <center>'''Event'''</center>
| <center>'''Table'''</center>
| <center>'''Statement'''</center>
| <center>'''Timing'''</center>

|-
| Alta_ListasPrecios
| INSERT
| listasprecios
| <pre>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</pre>
| AFTER

|-
| Alta_LogPrecios
| INSERT
| logprecios
| <pre>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</pre>
| BEFORE

|-
| Alta_Precio
| INSERT
| precios
| <pre>'BEGIN
   SET    NEW.FechaModificacion = CURDATE(),
      NEW.HoraModificacion = CURTIME();
  END'</pre>
| BEFORE

|-
| Actualiza_Precio
| UPDATE
| precios
| <pre>'BEGIN
   SET    NEW.FechaModificacion = CURDATE(),
      NEW.HoraModificacion = CURTIME();
  END'</pre>
| BEFORE

|-
| Alta_Productos
| INSERT
| productos
| <pre>BEGIN
    DECLARE vLista INT(5);
    DECLARE vProductoID CHAR(8);
    SET vLista = (SELECT Lista FROM listavigente);
    SET vProductoID = NEW.ProductoID;
    INSERT INTO precios (`precios`.`Lista`, 
                  `precios`.`ProductoID`, 
                  `precios`.`PrecioProd00`,
                  `precios`.`PrecioProd01`, 
                  `precios`.`PrecioProd02`, 
                  `precios`.`PrecioProd03`)
           VALUES(vLista, vProductoID, 0, 0, 0, 0);
    INSERT INTO composicion (`composicion`.`ProductoID`,
                     `composicion`.`ElementoID`,
                     `composicion`.`ValorElemento`,
                     `composicion`.`ElementoPM`)
           VALUES(vProductoID,vProductoID,1, 1);
END</pre>
| BEFORE

|-
| Baja_Productos
| DELETE
| productos
| <pre>BEGIN
    DECLARE vLista INT(5);
    DECLARE vProductoID CHAR(8);
    SET vLista = (SELECT Lista FROM listavigente);
    SET vProductoID = OLD.ProductoID;
    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;
    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;
END</pre>
| AFTER

|-
| AltaTransaccion
| INSERT
| transacciones
| <pre>BEGIN
   SET   NEW.TransaccFecha = CURDATE(),
      NEW.TransaccHora = CURTIME();
END</pre>
| BEFORE

|-
| Baja_Presupuesto
| DELETE
| vidquoten1
| <pre>BEGIN
    DELETE FROM vidquoten2
    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;
    DELETE FROM vidquoten3
    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;
  END</pre>
| AFTER

|-
| Baja_Item_Presupuesto
| DELETE
| vidquoten2
| <pre>'BEGIN
    DELETE FROM vidquoten3
    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND
     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;
  END'</pre>
| AFTER

|-
| Baja_Elemento_Presupuesto
| DELETE
| vidquoten3
| <pre>BEGIN
   DELETE FROM vidquoten4
    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND
         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND
         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;
END</pre>
| AFTER
|}
</small>

=== Reportes ===
<small>
</small>

=== Procedimientos ===
<small>
</small>

=== ACL ===
# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)
# Grabar con semilla de nombre de datasource con el texto -> "sdbc:mysql:odbc:''<datasource>''"
'''Ingreso de Registro en Tabla'''
<small><pre>
INSERT INTO wscontrol (
	wskey1,
	wskey2,
	wsKey3
	) 
VALUES(
	ENCODE(<MAC Address en minúscula sin separadores>,"sdbc:mysql:odbc:<datasource>"),
	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,"sdbc:mysql:odbc:<datasource>"),
	ENCODE(<FechaLimite en ISO Format>,"sdbc:mysql:odbc:<datasource>")
	)
</pre></small>
'''Ejemplo'''
<small><pre>
INSERT INTO wscontrol (
	wskey1,
	wskey2,
	wskey3
	) 
VALUES(
	ENCODE(SUBSTRING_INDEX(UUID(), '-', -1),"sdbc:mysql:odbc:FazzGlassGestion"),
	ENCODE("001","sdbc:mysql:odbc:FazzGlassGestion"),
	ENCODE("20121231","sdbc:mysql:odbc:FazzGlassGestion")
	)
</pre></small>
'''Corroborar ACL'''
<small><pre>
SELECT
	wskey1 AS Cantidad,
	wskey2 AS Usuarios,
	wskey3 AS FechaLimite,
	CAST(DECODE(wskey1,'sdbc:mysql:odbc:FazzGlassGestion') AS Char(12)) AS DecMAC,
	CAST(DECODE(wskey2,'sdbc:mysql:odbc:FazzGlassGestion') AS Char(03)) AS DecUsuarios,
	CAST(DECODE(wskey3,'sdbc:mysql:odbc:FazzGlassGestion') AS Char(08)) AS DecFechaLimite
FROM
	wscontrol
</pre></small>
'''Alargar ACL 1 mes más'''
<small><pre>
UPDATE wscontrol 
    SET wskey3 = ENCODE(
                 DATE_FORMAT(STR_TO_DATE(CAST(DECODE(wskey3,'sdbc:mysql:odbc:FazzGlassGestion') AS Char(08)),
                  '%Y%m%d')+INTERVAL 1 MONTH,'%Y%m%d'),
                 "sdbc:mysql:odbc:FazzGlassGestion")
    WHERE CAST(DECODE(wskey1,'sdbc:mysql:odbc:FazzGlassGestion') AS Char(12)) = SUBSTRING_INDEX(UUID(),'-',-1)
</pre></small>
'''Cambiar Fecha ACL'''
<small><pre>
UPDATE wscontrol 
    SET wskey3 = ENCODE(
                 "20121231",
                 "sdbc:mysql:odbc:FazzGlassGestion")
    WHERE CAST(DECODE(wskey1,'sdbc:mysql:odbc:FazzGlassGestion') AS Char(12)) = SUBSTRING_INDEX(UUID(),'-',-1)
</pre></small>
{{tecla|Ctrl|A}}

=== Instalacion .odb ===
*Copiar el documento .odb
*Cambiar el usuario de la base de datos
*Cambiar la constante [[oCheckEstadoLicencia]] a True
*Grabar documento .odb
*Cambiar a nivel de Sistema Operativo a ReadOnly

=== Documentación de Usuario ===
[[WikiUserSpanex]]
=== Soporte-Bitacora ===
[[WikiSpanexSupport]]