AlonsoYSal_FactuGES2/migracion.sql
2020-03-03 18:07:32 +00:00

310 lines
9.1 KiB
SQL
Raw Permalink Blame History

crear tablas para migrar
CREATE TABLE PRESUPUESTOSVIEJOS (
CODIGOEMPRESA SMALLINT ,
CODIGO INTEGER ,
FECHAALTA DATE ,
USUARIO VARCHAR(100) ,
CODIGOCONTACTO INTEGER ,
TIPO VARCHAR(10) NOT NULL,
FECHAPRESUPUESTO DATE ,
VIGENCIAPRESUPUESTO DATE ,
SITUACION VARCHAR(30) ,
FECHADECISION DATE ,
BASEIMPONIBLE NUMERIC(11,2) DEFAULT 0 ,
DESCUENTO FLOAT ,
IMPORTEDESCUENTO NUMERIC(11,2) DEFAULT 0 ,
IVA FLOAT ,
IMPORTEIVA NUMERIC(11,2) DEFAULT 0 ,
IMPORTETOTAL NUMERIC(11,2) DEFAULT 0 ,
OBSERVACIONES BLOB SUB_TYPE 1 SEGMENT SIZE 100 ,
PLAZOENTREGA BLOB SUB_TYPE 1 SEGMENT SIZE 100 ,
FORMAPAGO BLOB SUB_TYPE 1 SEGMENT SIZE 100 ,
OPCION VARCHAR(100) ,
BAJA CHAR(1) DEFAULT 'N',
SITUACION_MONTAJE VARCHAR(30) ,
CODIGO_CONTACTO INTEGER ,
NIFCIF VARCHAR(10) ,
NOMBRE VARCHAR(100) ,
NOTAS VARCHAR(2000) ,
CALLE VARCHAR(150) ,
PROVINCIA VARCHAR(30) ,
CODIGOPOSTAL VARCHAR(5) ,
POBLACION VARCHAR(40) ,
TELEFONO1 VARCHAR(30) ,
TELEFONO2 VARCHAR(30) ,
MOVIL VARCHAR(30) ,
FAX VARCHAR(30) ,
CORREO1 VARCHAR(60) ,
CORREO2 VARCHAR(60) ,
PAGINAWEB VARCHAR(100) ,
PERSONACONTACTO VARCHAR(100) ,
BAJA_LOGICA SMALLINT DEFAULT 0 NOT NULL
);
CREATE TABLE PRESUPUESTOSVIEJOS_DETALLES (
CODIGOPRESUPUESTO INTEGER ,
NUMCONCEPTO SMALLINT ,
POSICION SMALLINT NOT NULL,
TIPO CHAR(1),
DESCRIPCION VARCHAR(2000) ,
CANTIDAD NUMERIC(9,0) ,
PUNTOS INTEGER ,
IMPORTEPUNTOS NUMERIC(11,2) DEFAULT 0 ,
IMPORTEUNIDAD NUMERIC(11,2) DEFAULT 0 ,
IMPORTETOTAL NUMERIC(11,2) DEFAULT 0 ,
VISIBLE CHAR(1) DEFAULT 'S' NOT NULL ,
VALORADO CHAR(1) NOT NULL
);
//CARGAMOS LAS TABLAS
insert into presupuestosviejos
select
presupuestos.CODIGOEMPRESA,
presupuestos.CODIGO,
presupuestos.FECHAALTA,
presupuestos.USUARIO,
CODIGOCONTACTO,
TIPO,
FECHAPRESUPUESTO,
VIGENCIAPRESUPUESTO,
SITUACION,
FECHADECISION,
BASEIMPONIBLE,
DESCUENTO,
IMPORTEDESCUENTO,
IVA,
IMPORTEIVA,
IMPORTETOTAL,
OBSERVACIONES,
PLAZOENTREGA,
FORMAPAGO,
OPCION,
BAJA,
SITUACION_MONTAJE,
contactos.CODIGO as CODIGO_CONTACTO,
NIFCIF,
NOMBRE,
NOTAS,
CALLE,
PROVINCIA,
CODIGOPOSTAL,
POBLACION,
TELEFONO1,
TELEFONO2,
MOVIL,
FAX,
CORREO1,
CORREO2,
PAGINAWEB,
PERSONACONTACTO,
BAJA_LOGICA
from presupuestos
left join contactos on (contactos.codigo = presupuestos.codigocontacto)
where fechapresupuesto > '2020.01.01'
insert into PRESUPUESTOSVIEJOS_DETALLES
select *
from detallespresupuestos
where codigopresupuesto in (select codigo from presupuestosviejos);
migramos las dos tablas a la nueva base de datos
creamos las tablas
CREATE TABLE PRESUPUESTOSVIEJOS (
CODIGOEMPRESA SMALLINT,
CODIGO INTEGER,
FECHAALTA DATE,
USUARIO VARCHAR(100),
CODIGOCONTACTO INTEGER,
TIPO VARCHAR(10) NOT NULL,
FECHAPRESUPUESTO DATE ,
VIGENCIAPRESUPUESTO DATE ,
SITUACION VARCHAR(30) ,
FECHADECISION DATE ,
BASEIMPONIBLE NUMERIC(11,2) DEFAULT 0 ,
DESCUENTO FLOAT ,
IMPORTEDESCUENTO NUMERIC(11,2) DEFAULT 0 ,
IVA FLOAT ,
IMPORTEIVA NUMERIC(11,2) DEFAULT 0 ,
IMPORTETOTAL NUMERIC(11,2) DEFAULT 0 ,
OBSERVACIONES BLOB SUB_TYPE 1 SEGMENT SIZE 100 ,
PLAZOENTREGA BLOB SUB_TYPE 1 SEGMENT SIZE 100 ,
FORMAPAGO BLOB SUB_TYPE 1 SEGMENT SIZE 100 ,
OPCION VARCHAR(100) ,
BAJA CHAR(1) DEFAULT 'N',
SITUACION_MONTAJE VARCHAR(30) ,
CODIGO_CONTACTO INTEGER ,
NIFCIF VARCHAR(10) ,
NOMBRE VARCHAR(100) ,
NOTAS VARCHAR(2000) ,
CALLE VARCHAR(150) ,
PROVINCIA VARCHAR(30) ,
CODIGOPOSTAL VARCHAR(5) ,
POBLACION VARCHAR(40) ,
TELEFONO1 VARCHAR(30) ,
TELEFONO2 VARCHAR(30) ,
MOVIL VARCHAR(30) ,
FAX VARCHAR(30) ,
CORREO1 VARCHAR(60) ,
CORREO2 VARCHAR(60) ,
PAGINAWEB VARCHAR(100) ,
PERSONACONTACTO VARCHAR(100) ,
BAJA_LOGICA SMALLINT DEFAULT 0 NOT NULL
);
CREATE TABLE PRESUPUESTOSVIEJOS_DETALLES (
CODIGOPRESUPUESTO INTEGER,
NUMCONCEPTO SMALLINT ,
POSICION SMALLINT NOT NULL,
TIPO CHAR(1),
DESCRIPCION VARCHAR(2000),
CANTIDAD NUMERIC(9,0),
PUNTOS INTEGER,
IMPORTEPUNTOS NUMERIC(11,2) DEFAULT 0,
IMPORTEUNIDAD NUMERIC(11,2) DEFAULT 0,
IMPORTETOTAL NUMERIC(11,2) DEFAULT 0,
VISIBLE CHAR(1) DEFAULT 'S' NOT NULL,
VALORADO CHAR(1) NOT NULL
);
exportamos metadata e importamos en la nueva
//INSERTAMOS LOS PRESUPUESTO EN LOS CONTRATOS
insert into contratos_cliente
select GEN_ID(GEN_PRESUPUESTOS_CLI_ID, 1), 1, null, nifcif, nombre, calle, poblacion, provincia, codigopostal, 'PRE20/000' || GEN_ID(GEN_EMPRESAS_ID, 1), FECHAPRESUPUESTO, SITUACION,
FORMAPAGO, PLAZOENTREGA, OBSERVACIONES, null, 0, fechaalta, fechaalta, 'carga_inicial',
baseimponible, null, descuento, importedescuento, baseimponible - importedescuento, iva, importeiva, importetotal, 6, 1, null,
case
when iva is null then 4
when iva = 21 then 7
else 4
end,
codigo_contacto,
0,
0,
0,
null, null, null, tipo, null, null, opcion, fechadecision, null, codigo
from presupuestosviejos
update contratos_cliente
set importe_descuento = 0
where importe_descuento is null
update contratos_cliente
set importe_porte = 0
where importe_porte is null
create view V_clientesViejos(
nifcif, nombre, calle, poblacion, provincia, codigopostal,
telefono1, telefono2, movil, movil2, fax,
correo1, correo2, paginaweb, notas,
fechaalta, fechamodificacion, codigo_contacto
)
as
select distinct nifcif, nombre, calle, poblacion, provincia, codigopostal,
substr(telefono1,1,24), substr(telefono2,1,24), substr(movil,1,24), substr(fax,1,24), substr(fax,1,24),
correo1, correo2, paginaweb, notas,
current_date , current_date , codigo_contacto
from presupuestosviejos;
//CREAMOS LOS CONTACTOS NUEVOS
insert into contactos
select GEN_ID(GEN_CONTACTOS_ID, 1), nifcif, nombre, calle, poblacion, provincia, codigopostal,
telefono1, telefono2, movil, movil2, fax,
correo1, correo2, paginaweb, notas,
fechaalta, fechaalta, 'carga_inicial', 'CL20/000' || GEN_ID(GEN_PRESUPUESTOS_CLI_ID, 1), codigo_contacto, 1
from V_clientesViejos
//A<EFBFBD>adimos como clientes
insert into contactos_categorias
select id, 1
from contactos
where id < 10000
//A<EFBFBD>adimos el premiso para la empreas
insert into empresas_contactos
select GEN_ID(GEN_EMPRESAS_CONTACTOS_ID, 1), 1, id
from contactos
where id < 10000
//Insertamos tupla vacia de clientes_datos a todos los clientes
insert into clientes_datos (id_cliente)
select id
from contactos
where usuario = 'carga_inicial';
//Enlazamos los clientes
update contratos_cliente
set contratos_cliente.id_cliente = (select contactos.ID from contactos where ((contactos.PERSONA_CONTACTO is not null) and (contactos.PERSONA_CONTACTO = contratos_cliente.persona_contacto))),
situacion = upper(situacion)
where contratos_cliente.id_cliente is null;
insert into contratos_cliente_detalles
select GEN_ID(GEN_CONTRATOS_CLI_DETALLE_ID, 1),
(select contratos_cliente.ID from contratos_cliente where ((contratos_cliente.campo_libre is not null) and (contratos_cliente.campo_libre = presupuestosviejos_detalles.codigopresupuesto))),
presupuestosviejos_detalles.posicion,
case
when tipo = 'C' then 'Concepto'
when tipo = 'T' then 'Titulo'
when tipo = 'S' then 'Subtotal'
end,
null,
'C',
null,
descripcion,
case
when importeunidad is null then null
else cantidad
end,
importeunidad,
null,
null,
importetotal,
case
when visible = 'S' then 1
when visible = 'N' then 0
end,
current_date,
current_date,
case
when valorado = 'S' then 1
when valorado = 'N' then 0
end
from presupuestosviejos_detalles
update contratos_cliente_detalles
set posicion = posicion-1
where posicion is not null
and id_contrato < 4235