=== Correcciones Realizadas V3.0 (2012) ===
* Sobre el estado inicial, de acuerdo a los usuarios, solo era necesario ejecutar el proceso de lista de precios de WM2009 sobre los mismos archivos con procediendo previamente a cambiar la compañía extrusora.
** El esquema no funciona de esta manera (OSixto)
* Se procede a solicitar la generación de todos los archivos de acuerdo a las actuales necesidades.
* Se procede a confeccionar una lista a mano alzada de todos los productos que estarán incluidos dentro de la muestra.
* Con fecha 20120509 se retira el último de los archivos de presupuesto modelo para proceder a corregir la versión 2.0
* Se confecciona un SQLScript para automatizar el reemplazo de datos iniciales de Modelos sobre la [[TABLA:ABT.Productos]] de acuerdo a la lista a mano alzada del 20120504 ([[URL:UpgradeDB.V3_0.sql]])
* Se modifican los atributos de [[TABLA:ABT.Productos]] para mantener un esquema puente con la V2.0.
* Se genera el "esquema puente" entre ambas versiones (Trabajo administrativo manual).
* Correcciones de forma en los archivos de PresupuestosWM
** PFIJ-PAÑO FIJO STANDARD 4 MM.pto -> PFIJ-PAÑO FIJO STANDARD 4MM.pto
** RAJA-STD0-B1-RAJA DELTA 4 MM.pto -> RAJA-STD0-B1-RAJA DELTA 4MM.pto
** PFIJ-PAÑO FIJO MONACO TOP S-VIDIRO.pto -> PFIJ-PAÑO FIJO MONACO TOP S-VIDRIO.pto
** VCRR-ATPR-VENTANA CORREDIZA M3 S-VIDRO.pto -> VCRR-ATPR-VENTANA CORREDIZA M3 S-VIDRIO.pto
** POST-POSTIGON FIJO.pto -> POST-POSTIGON FIJO 1 HOJA.pto
** POST-POSTIGON REGULABLE 1 HOJAS.pto -> POST-POSTIGON REGULABLE 1 HOJA.pto
** VCRR-NEW1-PUERTA CORREDIZA M5-(RPT) 5MM.csv -> VCRR-NEW1-PUERTA CORREDIZA M-5(RPT) 5MM.csv
** VCRR-NEW1-PUERTA CORREDIZA M5-(RPT) DVH 5+12+5.csv -> VCRR-NEW1-PUERTA CORREDIZA M-5(RPT) DVH 5+12+5.csv
** VCRR-NEW1-PUERTA CORREDIZA M5-(RPT) S-VIDRIO.csv -> VCRR-NEW1-PUERTA CORREDIZA M-5(RPT) S-VIDRIO.csv
** VCRR-NEW1-VENTANA CORREDIZA M5-(RPT) 4MM.csv -> VCRR-NEW1-VENTANA CORREDIZA M-5(RPT) 4MM.csv
** VCRR-NEW1-VENTANA CORREDIZA M5-(RPT) 5MM.csv -> VCRR-NEW1-VENTANA CORREDIZA M-5(RPT) 5MM.csv
** VCRR-NEW1-VENTANA CORREDIZA M5-(RPT) DVH 4+12+4.csv -> VCRR-NEW1-VENTANA CORREDIZA M-5(RPT) DVH 4+12+4.csv
** VCRR-NEW1-VENTANA CORREDIZA M5-(RPT) S-VDRIO.csv -> VCRR-NEW1-VENTANA CORREDIZA M-5(RPT) S-VIDRIO.csv
** Todos los que figuran como M3 -> M-3
* Se modifica el esquema de Vidrio Repartido. Se toma como base la versión 1 y cambia la modalidad de cálculo. No toma datos de proceso sino que es simplemente el calculo por M2.
* Recodificación y Agregado de Productos para el nuevo esquema de Paños Fijos

=== Tablas ===
=== Procesos ===

==== Proceso 004 ====
Proceso automático de toma de archivos provenientes de WinMaker en formato XLS y los traduce en formato CSV para que puedan ser tomados normalmente en un archivo único con todos los datos transformados.

===== Port Unix =====
[[URL:Proceso.Precios.004.scp]]

<small><pre>
#! /bin/sh
#
# Generación de archivo de CSV con precios provenientes desde WinMaker
#
# --------------------------------------------------------------------
rm precios.csv/Lista.Precios.csv

# Expansiones Varias
# Desafectado 20110803 dado los errores provenientes de Abertec-WinMaker aún no se han solucionado desde 20110505

#cp 'precios.wm.xls/Vidrio Repartido RAJA.xls' 'precios.wm.xls/Rajas NOVISSIMA vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido RAJA.xls' 'precios.wm.xls/Rajas AT-PREMIUM vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido RAJA.xls' 'precios.wm.xls/Rajas EUROPA vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido RAJA.xls' 'precios.wm.xls/Rajas STD vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido PROY.xls' 'precios.wm.xls/Proyectante MAX-AIR vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido PROY.xls' 'precios.wm.xls/Proyectante NOVISSIMA vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Ventanas Corredizas EUROPA vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Ventanas Corredizas NOVISSIMA vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Ventanas Corredizas MODENA vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Ventanas Corredizas PRIMA 45 vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Ventanas Corredizas STD vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Ventanas Corredizas LIVIANA vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Ventanas Corredizas Aluminio Natural LIVIANA vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Ventanas Corredizas AT-PREMIUM vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Puertas Corredizas EUROPA vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Puertas Corredizas MODENA vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Puertas Corredizas STD vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Puertas Corredizas AT-PREMIUM vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Guillotina NOVISSIMA vidrio repartido.xls'
#cp 'precios.wm.xls/Vidrio Repartido VCRR-GLLT.xls' 'precios.wm.xls/Guillotina STD vidrio repartido.xls'

# Fin Expansiones Varias

for FILE in precios.wm.xls/*.xls; do
  echo $FILE
  base=`basename "$FILE" .xls`
  salida1="$base.csv"
  xls2csv "$FILE" > "$salida1"
# cat Comando.Insert.PreciosTMP.scp >> Lista.Precios1.csv

# Original, a partir de Excel
# awk 'BEGIN { FS = "," };(NR>8)&&(NF>2) { print "\42"FILENAME"\42" "," $1 "," substr($3,2,length($3)-2)}' "$salida1" >> "precios.csv/Lista.Precios.csv"

# A partir de OpenOffice
  awk 'BEGIN { FS = "," };(NR>6)&&(NF>2) { print "\42"FILENAME"\42" "," $1 "," substr($3,2,length($3)-2)}' "$salida1" >> "precios.csv/Lista.Precios.csv"

# awk 'BEGIN { FS = "," };(NR>8)&&(NF>2) { print "(" "\42"FILENAME"\42" "," $1 "," substr($3,2,length($3)-2) ")," }' "$salida1" >> "Lista.Precios1.csv"
  rm "$salida1"
done
</pre></small>

===== Port Wintel =====
[[URL:Proceso.Precios.004.cmd]]

<small><pre>
echo off
cls
echo Procesando archivos provenientes de WinMaker....
PATH=%PATH%;c:\Abertec\Precios
erase c:\Abertec\Precios\precios.csv\*.csv
erase c:\Abertec\Precios\precios.csv\*.txtREM erase *.csv
cd c:\Abertec\Precios\precios.wm.xls
dir *.xls /B /N > L_Planillas.txt
"C:\Program Files\GnuWin32\bin\awk" -v sq="\42" "{print \"xls2csv \" sq $0 sq}" L_Planillas.txt | cmd
"C:\Program Files\GnuWin32\bin\awk" -f ..\P_Planillas.awk *.csv > Lista.Precios.txt
REM erase *.csv
erase c:\Abertec\Precios\precios.wm.xls\*.csv
REM erase L_Planillas.txt
REM rename Lista.Precios.txt Lista.Precios.csv
copy Lista.Precios.txt c:\Abertec\Precios\precios.csv\Lista.Precios.csv
erase c:\Abertec\Precios\precios.wm.xls\*.txt
cls
echo Fin del Proceso 4
pause
</pre></small>

==== Proceso 005 ====
Actualiza las tablas de precios
Se lanza desde el proceso [[URL:Proceso.Precios.005.scp]]
===== Port Unix =====
<small><pre>
Ficha=`date +%Y%m%d.%H%M`
Salida="Log.Proceso.Precios.005-"$Ficha
echo $Salida
mysql -v -B -u sas_admin -p -h $1 abertec  < Proceso.Precios.005.sql > $Salida
</pre></small>
===== Port Wintel =====
<small><pre>
echo off
cls
echo Procesando Precios...
PATH=%PATH%;C:\Program Files\MySQL\MySQL Server 5.1\bin\
cd \Abertec\Precios\precios.csv
set Salida=Log.Proceso.Precios.005-
set Salida=%Salida%%date:~6,4%%date:~3,2%%date:~0,2%

REM mysql -v -B -u abt_usr -p -h ABT001 abertec  < ..\Proceso.Precios.005.sql > %Salida%
mysql -v -B -u abt_usr -p -h ABT001 abertec  < ..\Proceso.Precios.005.sql > NUL
</pre></small>
===== Proceso 005 (SQL) =====
[[File:warning-icon-hi.png|20px]] Atención: Verificar el directorio de acceso de los archivos de donde tomará definitivamente los datos el proceso. [[File:warning-icon-hi.png|20px]] 

<small><pre>
-- COM Agregado 20100525.0933
USE abertec
TRUNCATE precios;
-- FIN Agregado 20100525.0933
TRUNCATE preciostmp;
-- Incorpora Archivo Plano de Precios luego de ejecución 004
LOAD DATA LOCAL INFILE '/home/sas/Archivos/Documentos/Documentos/CloudOffice/Abertec/Listas.Precios/Listas.Precios.Unificada/precios.csv/Lista.Precios.csv'
INTO TABLE preciostmp
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(ArchivoID, Dimension, Precio);
-- Define fecha de Cambio de Precio y Estado a 'Activo'
UPDATE preciostmp set FechaPrecio = CURRENT_DATE(), EstadoPrecio = "A";
-- Cambia Estado de Precios anteriores a 'Inactivo'
UPDATE precios SET EstadoPrecio = "I";
-- Modificación 07.2010 cambia AdaptarWM por Productos
-- INSERT INTO Precios (ProductoID, Dimension, Precio, FechaPrecio, EstadoPrecio, ArchivoID, Ancho, Alto)
-- SELECT T2.ProductoID, T1.Dimension, T1.Precio, T1.FechaPrecio, T1.EstadoPrecio, T1.ArchivoID, Convert(trim(substr( T1.Dimension, 1, 4 )),UNSIGNED) , -- Convert(trim(substr( T1.Dimension, LOCATE( "x", Dimension ) +2, 4 )),UNSIGNED) FROM PreciosTMP AS T1, AdaptarWM AS T2 WHERE T1.ArchivoID = T2.ArchivoID;
-- Arma tabla Precios con la combinación de tablas de PreciosTMP y Productos / AdaptarWM
INSERT INTO precios (ProductoID, Dimension, Precio, FechaPrecio, EstadoPrecio, ArchivoID, Ancho, Alto) 
SELECT T2.ProductoID, T1.Dimension, T1.Precio, T1.FechaPrecio, T1.EstadoPrecio, T1.ArchivoID, Convert(trim(substr( T1.Dimension, 1, 4 )),UNSIGNED) , Convert(trim(substr( T1.Dimension, LOCATE( "x", Dimension ) +2, 4 )),UNSIGNED) FROM preciostmp AS T1, productos AS T2 WHERE T1.ArchivoID = T2.ArchivoID;
-- Corrige campo Dimensión para hacerlo Fix.
UPDATE precios set Dimension = CONCAT_WS(' x ',RIGHT(CONCAT("0",TRIM(Convert(Ancho,CHAR(10)))),4), RIGHT(CONCAT("0",TRIM(Convert(Alto,CHAR(10)))),4));
-- Fin Proceso.Precios.005
</pre></small>

==== Otros Procesos ====
* [[URL:Proceso.Precios.000.scp]]
** Ejecuta en forma automatizada los procesos 004/005
<small><pre>
#! /bin/sh
# ---------------------------------------------------
# Proceso de Ejecución de general de adaptación de 
# Lista de Precios p/Abertec. Debe Ingresarse el
# parámetro Host (IP) para indicar
# sobre que motor se está haciendo el trabajo
# ---------------------------------------------------
./Proceso.Precios.004.scp  
./Proceso.Precios.004b.scp  
./Proceso.Precios.005.scp 192.168.0.188  
./Proceso.Precios.005b.scp 192.168.0.188  
</pre></small>

* [[URL:Proceso.Precios.004b.scp]]
** Desafectado. Hacía el mismo proceso que [[URL:Proceso.Precios.004.scp]] y le incluía un reproceso de Vidrios Repartidos
* [[URL:Proceso.Precios.005b.scp]]
** Desafectado. Hacía el mismo proceso que [[URL:Proceso.Precios.005.scp]] y tomaba el SQL script siguiente
* [[URL:Proceso.Precios.005b.sql]]
** Actualizaba los valores de Vidrio Repartido con un coeficiente determinado.
<small><pre>
USE abertec;
UPDATE `abertec`.`precios` SET Precio=Precio*1.07 WHERE  ArchivoID LIKE '%epartido%';
</pre></small>

=== Vistas ===
Beautify
http://www.sqlinform.com/free_online_sw.html
==== vistaprecios001 ====
<pre>
SELECT 
`precios`.`ProductoID`,
IFNULL(`productos`.`CategoriaID`,'') AS CategoriaID,
IFNULL(`productos`.`ModeloID`,'') AS ModeloID,
IFNULL(`productos`.`ColorID`,'') AS ColorID,
IFNULL(`productos`.`InteriorID`,'') AS InteriorID,
IFNULL(`productos`.`ColumnaID`,'') AS ColumnaID,
`precios`.`Dimension`,
`precios`.`Precio`,
`precios`.`EstadoPrecio`
FROM `abertec`.`productos` AS `productos`, `abertec`.`precios` AS `precios` 
WHERE `productos`.`ProductoID` = `precios`.`ProductoID` AND
      `precios`.`EstadoPrecio` = 'A'
</pre>
==== vistaprecios007 ====
<pre>
CREATE VIEW `vistaprecios007` AS
SELECT DISTINCT 
	`t1`.`ProductoID` AS `ProductoID` ,
	IF((`t1`.`CategoriaID` = 'PCRR'),'VCRR',`t1`.`CategoriaID`) AS `CategoriaID`,
	`t1`.`ModeloID`AS `ModeloID`,
	`t1`.`ColorID` AS `ColorID` ,
	`t1`.`InteriorID` AS `InteriorID` ,
	`t1`.`ColumnaID` AS `ColumnaID` ,
	`t1`.`Dimension` AS `Dimension` ,
	`t1`.`Precio` AS `Precio` ,
	`t1`.`EstadoPrecio` AS `EstadoPrecio`
FROM
	(`vistaprecios001` `t1` JOIN `dimensionval` `t2`)
WHERE 
	((`t1`.`CategoriaID` = `t2`.`CategoriaID`)
	AND(`t1`.`ModeloID` = `t2`.`ModeloID`)
	AND (`t1`.`ColorID` = `t2`.`ColorID`)
	AND (`t1`.`Dimension` = `t2`.`Dimension`))
</pre>

==== vistaprecios099 ====
<pre>
CREATE VIEW `vistaprecios099` AS
SELECT DISTINCT 
`t1`.`ProductoID`   AS `ProductoID` ,
`t1`.`CategoriaID`  AS `CategoriaID`,
`t1`.`ModeloID`     AS `ModeloID`   ,
`t1`.`ColorID`      AS `ColorID`    ,
`t1`.`InteriorID`   AS `InteriorID` ,
`t1`.`ColumnaID`    AS `ColumnaID`  ,
`t1`.`Dimension`    AS `Dimension`  ,
`t1`.`Precio`       AS `Precio`     ,
`t1`.`EstadoPrecio` AS `EstadoPrecio`
FROM (`vistaprecios001` `t1`
     JOIN `dimensionval` `t2`)
WHERE ((`t1`.`CategoriaID` = `t2`.`CategoriaID`) AND
      (`t1`.`ModeloID` = `t2`.`ModeloID`) AND
      (`t1`.`ColorID` = `t2`.`ColorID`) AND
      (`t1`.`Dimension` = `t2`.`Dimension`))
</pre>

==== Estructura básica reporte ====
*Premarcos y Contramarcos
**Premarco
**Contramarcos
***Chico
***Grande
**Modena
***Premarco
***Contramarco
*Ventana Corrediza Tradicional Blanca
**Simple
***VCRR
****0800x0400
***PCRR
****1200x2000
**Vidrio (4mm)
**Repartido c/Vidrio
**Mosquitero
**G.Común
**G.Barrio
*Ventana Corrediza Gamma 90° Blanca
**Simple
***VCRR
****0800x0400
***PCRR
****1200x2000
**Vidrio (4mm)
***VCRR
****0800x0400
***PCRR
****1200x2000
**Repartido c/Vidrio
**Mosquitero
**G.Común
**G.Barrio
*Ventana Corrediza Gamma 45° Blanca
**Simple
***VCRR
****0800x0400
***PCRR
****1200x2000
**Vidrio (4mm)
***VCRR
****0800x0400
***PCRR
****1200x2000
**Repartido c/Vidrio
**Mosquitero
**G.Común
**G.Barrio
*Ventana Corrediza Delta
**Simple
***VCRR
****0800x0400
***PCRR
****1200x2000
**Vidrio (4mm)
***VCRR
****0800x0400 4mm
****1000x1500 5mm
***PCRR
****1200x2000 4mm
****1800x2000 5mm
****2000x2000 6mm
**Repartido c/Vidrio
**DVH
***VCRR
****0800x0400 4+6+4
****1000x1500 5+6+5
***PCRR
****1200x2000 4+6+4
****1800x2000 5+6+5
****2000x2000 6+6+6
**Mosquitero
**G.Común
**G.Barrio
Ventana Corrediza Mónaco Top
**Simple
***VCRR
****0800x0400
***PCRR
****1200x2000
**Vidrio (4mm)
***VCRR
****0800x0400 4mm
****1000x1500 5mm
***PCRR
****1200x2000 4mm
****1800x2000 5mm
****2000x2000 6mm
**Repartido c/Vidrio
**DVH
***VCRR
****0800x0400 4+9+4
****1000x1500 5+9+5
***PCRR
****1200x2000 4+9+4
****1800x2000 5+9+5
****2000x2000 6+9+6
**Mosquitero
**G.Común
**G.Barrio
Ventana Corrediza M-3
**Simple
***VCRR
****0800x0400
***PCRR
****1200x2000
**Vidrio (4mm)
***VCRR
****0800x0400 4mm
****1000x1500 5mm
***PCRR
****1200x2000 4mm
****1800x2000 5mm
****2000x2000 6mm
**Repartido c/Vidrio
**DVH
***VCRR
****0800x0400 4+12+4
****1000x1500 5+12+5
***PCRR
****1200x2000 4+12+4
****1800x2000 5+12+5
****2000x2000 6+12+6
**Mosquitero
**G.Común
**G.Barrio
Ventana Corrediza M-5
Ventana Corrediza M-3 Vidrio Repartido
Ventana Corrediza M-5 Vidrio Repartido
Ventana de Abrir Mónaco Top
Ventana de Abrir Delta
Ventana de Abrir Gamma
Ventana de Abrir Mediterranea M-3
Ventana de Abrir M-5 Vidrio Repartido
Guillotina Novíssima
Ojos de Buey
Medio Sol
Rajas 1/2 Punto Externo
Postigones Fijos
Postigones Regulables
Cortinas
Paños Fijos (Tradicional, Gamma 45°, Gamma 90°, Mónaco Top, M-3, Delta)
DVH (Gamma 45°, Gamma 90°, Mónaco Top, M-3, Delta)
Anodizados
Frentes Integrales de Placard
Aireador - Rejas
Accesorios
Vidrios
Puertas (Tradicional, Gamma 45°, Gamma 90°, Mónaco Top, M-3, M-5, Delta)