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ņadimos como clientes
insert into  contactos_categorias
select id,  1
from contactos
where id < 10000

//Aņ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