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