Tecsitel_FactuGES2/Database/Migracion/SCRIPT para migración tecsitel.TXT

299 lines
11 KiB
Plaintext

delete from contactos_categorias;
delete from contactos_direcciones;
delete from contactos_datos_banco;
delete from clientes_dtos_proveedores;
delete from agentes_comisiones;
delete from clientes_datos;
delete from proveedores_datos;
delete from personal_datos;
delete from pedidos_cliente_detalles;
delete from albaranes_cliente_detalles;
delete from facturas_cliente_detalles;
delete from pagos_cliente;
delete from facturas_cliente;
delete from albaranes_cliente;
delete from pedidos_cliente;
delete from pedidos_proveedor_detalles;
delete from albaranes_proveedor_detalles;
delete from facturas_proveedor_detalles;
delete from pagos_proveedor;
delete from facturas_proveedor;
delete from albaranes_proveedor;
delete from pedidos_proveedor;
delete from comisiones_liquidadas;
delete from contactos;
Extract MetaData con cmapos blob, lanzar script en nueva base de datos
CREATE TABLE PROVEEDORES (
CODIGO VARCHAR(10) NOT NULL,
NIFCIF VARCHAR(10) CHARACTER SET ISO8859_1,
NOMBRE VARCHAR(100) CHARACTER SET ISO8859_1,
CALLE VARCHAR(150) CHARACTER SET ISO8859_1,
NUMERO VARCHAR(20) CHARACTER SET ISO8859_1,
PISO VARCHAR(20) CHARACTER SET ISO8859_1,
CODIGOPOSTAL VARCHAR(5) CHARACTER SET ISO8859_1,
POBLACION VARCHAR(40) CHARACTER SET ISO8859_1,
PROVINCIA VARCHAR(30) CHARACTER SET ISO8859_1,
TELEFONO1 VARCHAR(30) CHARACTER SET ISO8859_1,
TELEFONO2 VARCHAR(30) CHARACTER SET ISO8859_1,
FAX VARCHAR(30) CHARACTER SET ISO8859_1,
CORREO VARCHAR(60) CHARACTER SET ISO8859_1,
PERSONACONTACTO VARCHAR(100) CHARACTER SET ISO8859_1,
OBSERVACIONES BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET ISO8859_1,
CODIGOCLIENTE VARCHAR(10),
ETIQUETADO SMALLINT,
ULTIMOCAMBIO TIMESTAMP
);
ALTER TABLE PROVEEDORES ADD CONSTRAINT PK_PROVEEDORES PRIMARY KEY (CODIGO);
CREATE TABLE SUCURSALESPROVEEDOR (
CODIGOPROVEEDOR VARCHAR(10) NOT NULL,
CODIGO SMALLINT NOT NULL,
CALLE VARCHAR(150),
NUMERO VARCHAR(20),
PISO VARCHAR(20),
CODIGOPOSTAL VARCHAR(5),
POBLACION VARCHAR(40),
PROVINCIA VARCHAR(30),
TELEFONO1 VARCHAR(30),
TELEFONO2 VARCHAR(30),
FAX VARCHAR(30),
CORREO VARCHAR(60),
PERSONACONTACTO VARCHAR(100)
);
ALTER TABLE SUCURSALESPROVEEDOR ADD CONSTRAINT PK_SUCURSALESPROVEEDOR PRIMARY KEY (CODIGOPROVEEDOR, CODIGO);
ALTER TABLE SUCURSALESPROVEEDOR ADD FOREIGN KEY (CODIGOPROVEEDOR) REFERENCES PROVEEDORES (CODIGO) ON DELETE CASCADE ON UPDATE NO ACTION;
COMMIT WORK;
/*DATOS*/
Poner generador de ID_CONTACTOS a 1
DECLARE EXTERNAL FUNCTION substr
CSTRING(255), SMALLINT, SMALLINT
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';
insert into CONTACTOS
(ID, REFERENCIA, NIF_CIF, NOMBRE, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2,
FAX, EMAIL_1, PERSONA_CONTACTO, NOTAS)
select
GEN_ID(GEN_CONTACTOS_ID, 1),
proveedores.CODIGO AS REFERENCIA,
proveedores.NIFCIF AS NIF_CIF,
proveedores.NOMBRE AS NOMBRE,
(COALESCE(proveedores.CALLE,'') || ', ' || COALESCE(proveedores.NUMERO,'') || ' ' || COALESCE(proveedores.PISO,'')) AS CALLE,
proveedores.POBLACION AS POBLACION,
proveedores.PROVINCIA AS PROVINCIA,
proveedores.CODIGOPOSTAL AS CODIGO_POSTAL,
substr(proveedores.TELEFONO1,1,25) AS TELEFONO_1,
substr(proveedores.TELEFONO2,1,25) AS TELEFONO_2,
substr(proveedores.FAX,1,25) AS FAX,
proveedores.CORREO AS EMAIL_1,
proveedores.PERSONACONTACTO AS PERSONA_CONTACTO,
proveedores.OBSERVACIONES AS NOTAS
from proveedores;
insert into contactos_categorias
(ID_CONTACTO, ID_CATEGORIA)
select ID, 2
from contactos;
insert into proveedores_datos
(ID_PROVEEDOR, ID_TIPO_IVA)
select CONTACTOS.ID, 1
from CONTACTOS
left join contactos_categorias on contactos_categorias.id_contacto = contactos.id
where contactos_categorias.id_categoria = 2;
delete from proveedores_datos
where proveedores_datos.id_proveedor in (
select CONTACTOS.ID
from CONTACTOS
left join proveedores on proveedores.codigo = contactos.referencia
WHERE proveedores.CODIGOCLIENTE is not null);
insert into proveedores_datos
(ID_PROVEEDOR, ID_TIPO_IVA, CODIGO_ASIGNADO)
select CONTACTOS.ID, 2, proveedores.CODIGOCLIENTE
from CONTACTOS
left join proveedores on proveedores.codigo = contactos.referencia
WHERE proveedores.CODIGOCLIENTE is not null;
INSERT INTO CONTACTOS_DIRECCIONES
(ID, ID_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, PERSONA_CONTACTO,
TELEFONO, MOVIL, FAX, EMAIL)
/* Insertamos la sucursales de los proveedores */
select
GEN_ID(GEN_CONTACTOS_DIR_ID, 1),
contactos.id AS ID_CONTACTO,
(COALESCE(sucursalesproveedor.CALLE,'') || ', ' || COALESCE(sucursalesproveedor.NUMERO,'') || ' ' || COALESCE(sucursalesproveedor.PISO,'')) AS CALLE,
sucursalesproveedor.POBLACION AS POBLACION,
sucursalesproveedor.PROVINCIA AS PROVINCIA,
sucursalesproveedor.CODIGOPOSTAL AS CODIGO_POSTAL,
sucursalesproveedor.PERSONACONTACTO AS PERSONA_CONTACTO,
substr(sucursalesproveedor.TELEFONO1,1,25) AS TELEFONO,
substr(sucursalesproveedor.TELEFONO2,1,25) AS MOVIL,
substr(sucursalesproveedor.FAX,1,25) AS FAX,
sucursalesproveedor.CORREO AS EMAIL
from sucursalesproveedor
left join contactos on contactos.referencia = sucursalesproveedor.codigoproveedor
left join contactos_categorias on contactos_categorias.id_contacto = contactos.id
where contactos_categorias.id_categoria = 2
and (COALESCE(sucursalesproveedor.CALLE,'') || ', ' || COALESCE(sucursalesproveedor.NUMERO,'') || ' ' || COALESCE(sucursalesproveedor.PISO,'')) <> ',';
Extract MetaData con cmapos blob, lanzar script en nueva base de datos
CREATE TABLE CLIENTES (
CODIGO VARCHAR(10) NOT NULL,
NIFCIF VARCHAR(10) CHARACTER SET ISO8859_1,
NOMBRE VARCHAR(100) CHARACTER SET ISO8859_1,
CALLE VARCHAR(150) CHARACTER SET ISO8859_1,
NUMERO VARCHAR(20) CHARACTER SET ISO8859_1,
PISO VARCHAR(20) CHARACTER SET ISO8859_1,
CODIGOPOSTAL VARCHAR(5) CHARACTER SET ISO8859_1,
POBLACION VARCHAR(40) CHARACTER SET ISO8859_1,
PROVINCIA VARCHAR(30) CHARACTER SET ISO8859_1,
TELEFONO1 VARCHAR(30) CHARACTER SET ISO8859_1,
TELEFONO2 VARCHAR(30) CHARACTER SET ISO8859_1,
FAX VARCHAR(30) CHARACTER SET ISO8859_1,
CORREO VARCHAR(60) CHARACTER SET ISO8859_1,
PERSONACONTACTO VARCHAR(100) CHARACTER SET ISO8859_1,
OBSERVACIONES BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET ISO8859_1,
BANCO VARCHAR(100) CHARACTER SET ISO8859_1,
IVA FLOAT DEFAULT 0,
DESCUENTO FLOAT DEFAULT 0,
TIPOCLIENTE VARCHAR(50) CHARACTER SET ISO8859_1,
ETIQUETADO SMALLINT,
ULTIMOCAMBIO TIMESTAMP
);
ALTER TABLE CLIENTES ADD CONSTRAINT PK_CLIENTES PRIMARY KEY (CODIGO);
CREATE TABLE SUCURSALESCLIENTE (
CODIGOCLIENTE VARCHAR(10) NOT NULL,
CODIGO SMALLINT NOT NULL,
CALLE VARCHAR(150),
NUMERO VARCHAR(20),
PISO VARCHAR(20),
CODIGOPOSTAL VARCHAR(5),
POBLACION VARCHAR(40),
PROVINCIA VARCHAR(30),
TELEFONO1 VARCHAR(30),
TELEFONO2 VARCHAR(30),
FAX VARCHAR(30),
CORREO VARCHAR(60),
PERSONACONTACTO VARCHAR(100)
);
ALTER TABLE SUCURSALESCLIENTE ADD CONSTRAINT PK_SUCURSALESCLIENTE PRIMARY KEY (CODIGOCLIENTE, CODIGO);
ALTER TABLE SUCURSALESCLIENTE ADD FOREIGN KEY (CODIGOCLIENTE) REFERENCES CLIENTES (CODIGO) ON DELETE CASCADE ON UPDATE NO ACTION;
insert into CONTACTOS
(ID, REFERENCIA, NIF_CIF, NOMBRE, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2,
FAX, EMAIL_1, PERSONA_CONTACTO, NOTAS)
select
GEN_ID(GEN_CONTACTOS_ID, 1),
clientes.CODIGO AS REFERENCIA,
clientes.NIFCIF AS NIF_CIF,
clientes.NOMBRE AS NOMBRE,
(COALESCE(clientes.CALLE,'') || ', ' || COALESCE(clientes.NUMERO,'') || ' ' || COALESCE(clientes.PISO,'')) AS CALLE,
clientes.POBLACION AS POBLACION,
clientes.PROVINCIA AS PROVINCIA,
clientes.CODIGOPOSTAL AS CODIGO_POSTAL,
substr(clientes.TELEFONO1,1,25) AS TELEFONO_1,
substr(clientes.TELEFONO2,1,25) AS TELEFONO_2,
substr(clientes.FAX,1,25) AS FAX,
clientes.CORREO AS EMAIL_1,
clientes.PERSONACONTACTO AS PERSONA_CONTACTO,
clientes.OBSERVACIONES AS NOTAS
from clientes;
insert into contactos_categorias
(ID_CONTACTO, ID_CATEGORIA)
select ID, 1
from contactos
where ID not in (select ID_CONTACTO from contactos_categorias);
MIRAR SI TODOS LOS CLIENTES TIENEN DESCUENTO NULL
select *
from clientes
where descuento is not null;
MIRAR SI TODOS LOS CLIENTES TIENEN IVA 16%
select DISTINCT IVA
from clientes;
//Establecemos el tipo de iva al 16 para todos los clientes
insert into clientes_datos
(ID_CLIENTE, ID_TIPO_IVA, REGIMEN_IVA)
select CONTACTOS.ID, 1, 'General'
from CONTACTOS
left join contactos_categorias on contactos_categorias.id_contacto = contactos.id
where contactos_categorias.id_categoria = 1;
SET GENERATOR GEN_CONTACTOS_DATOS_BANCO_ID TO 1;
insert into contactos_datos_banco
(ID, ID_contacto, titular)
select GEN_ID(GEN_CONTACTOS_DATOS_BANCO_ID, 1), CONTACTOS.ID, clientes.banco
from CONTACTOS
left join clientes on clientes.codigo = contactos.referencia
WHERE clientes.banco is not null;
//Insertamos la distintas sucursales de cliente
INSERT INTO CONTACTOS_DIRECCIONES
(ID, ID_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, PERSONA_CONTACTO,
TELEFONO, MOVIL, FAX, EMAIL)
select
GEN_ID(GEN_CONTACTOS_DIR_ID, 1),
contactos.id AS ID_CONTACTO,
(COALESCE(sucursalescliente.CALLE,'') || ', ' || COALESCE(sucursalescliente.NUMERO,'') || ' ' || COALESCE(sucursalescliente.PISO,'')) AS CALLE,
sucursalescliente.POBLACION AS POBLACION,
sucursalescliente.PROVINCIA AS PROVINCIA,
sucursalescliente.CODIGOPOSTAL AS CODIGO_POSTAL,
sucursalescliente.PERSONACONTACTO AS PERSONA_CONTACTO,
substr(sucursalescliente.TELEFONO1,1,25) AS TELEFONO,
substr(sucursalescliente.TELEFONO2,1,25) AS MOVIL,
substr(sucursalescliente.FAX,1,25) AS FAX,
sucursalescliente.CORREO AS EMAIL
from sucursalescliente
left join contactos on contactos.referencia = sucursalescliente.codigocliente
left join contactos_categorias on contactos_categorias.id_contacto = contactos.id
where contactos_categorias.id_categoria = 1
and (COALESCE(sucursalescliente.CALLE,'') || ', ' || COALESCE(sucursalescliente.NUMERO,'') || ' ' || COALESCE(sucursalescliente.PISO,'')) <> ',';
drop table sucursalesproveedor;
DROP TABLE PROVEEDORES;
drop table sucursalescliente;
DROP TABLE CLIENTES;
insert into empresas_contactos
(ID, ID_empresa, ID_contacto)
select GEN_ID(GEN_EMPRESAS_CONTACTOS_ID, 1), 1, id
from contactos;