-- Tabla para almacenar datos de Manifestación de Valor por factura CREATE TABLE mve_facturas_datos ( id INT IDENTITY(1,1) PRIMARY KEY, id_pedimento INT NOT NULL, id_factura INT NOT NULL, numero_factura NVARCHAR(100), -- Campos Art. 65 - Incrementables art65_fecha_transporte DATE NULL, art65_importe_transporte DECIMAL(15,2) NULL, art65_fecha_descuentos DATE NULL, art65_importe_descuentos DECIMAL(15,2) NULL, art65_fecha_posteriores DATE NULL, art65_importe_posteriores DECIMAL(15,2) NULL, art65_fecha_contribuciones DATE NULL, art65_importe_contribuciones DECIMAL(15,2) NULL, art65_fecha_pagos_vendedor DATE NULL, art65_importe_pagos_vendedor DECIMAL(15,2) NULL, -- Campos Art. 66 - Decrementables art66_fecha_comisiones DATE NULL, art66_importe_comisiones DECIMAL(15,2) NULL, art66_cargo_comisiones NVARCHAR(10) CHECK (art66_cargo_comisiones IN ('Si', 'No')) NULL, art66_fecha_envases DATE NULL, art66_importe_envases DECIMAL(15,2) NULL, art66_cargo_envases NVARCHAR(10) CHECK (art66_cargo_envases IN ('Si', 'No')) NULL, art66_fecha_embalaje DATE NULL, art66_importe_embalaje DECIMAL(15,2) NULL, art66_cargo_embalaje NVARCHAR(10) CHECK (art66_cargo_embalaje IN ('Si', 'No')) NULL, art66_fecha_transporte_dec DATE NULL, art66_importe_transporte_dec DECIMAL(15,2) NULL, art66_cargo_transporte_dec NVARCHAR(10) CHECK (art66_cargo_transporte_dec IN ('Si', 'No')) NULL, art66_fecha_ingenieria DATE NULL, art66_importe_ingenieria DECIMAL(15,2) NULL, art66_cargo_ingenieria NVARCHAR(10) CHECK (art66_cargo_ingenieria IN ('Si', 'No')) NULL, art66_fecha_regalias DATE NULL, art66_importe_regalias DECIMAL(15,2) NULL, art66_cargo_regalias NVARCHAR(10) CHECK (art66_cargo_regalias IN ('Si', 'No')) NULL, art66_fecha_producto DATE NULL, art66_importe_producto DECIMAL(15,2) NULL, art66_cargo_producto NVARCHAR(10) CHECK (art66_cargo_producto IN ('Si', 'No')) NULL, -- Campos de control fecha_creacion DATETIME2 DEFAULT GETDATE(), fecha_actualizacion DATETIME2 DEFAULT GETDATE(), usuario_creacion NVARCHAR(100), -- Índices y restricciones CONSTRAINT UQ_mve_facturas_datos_pedimento_factura UNIQUE (id_pedimento, id_factura) ); -- Crear índices separadamente CREATE INDEX IX_mve_facturas_datos_pedimento ON mve_facturas_datos (id_pedimento); CREATE INDEX IX_mve_facturas_datos_factura ON mve_facturas_datos (id_factura); -- Tabla para el historial de solicitudes MVE CREATE TABLE mve_solicitudes ( id INT IDENTITY(1,1) PRIMARY KEY, id_pedimento INT NOT NULL, numero_pedimento NVARCHAR(50), estado NVARCHAR(20) CHECK (estado IN ('Pendiente', 'En_Proceso', 'Completada', 'Rechazada')) DEFAULT 'Pendiente', fecha_solicitud DATETIME2 DEFAULT GETDATE(), fecha_respuesta DATETIME2 NULL, observaciones NTEXT, usuario_solicitud NVARCHAR(100) ); -- Crear índices para mve_solicitudes CREATE INDEX IX_mve_solicitudes_pedimento ON mve_solicitudes (id_pedimento); CREATE INDEX IX_mve_solicitudes_estado ON mve_solicitudes (estado); CREATE INDEX IX_mve_solicitudes_fecha_solicitud ON mve_solicitudes (fecha_solicitud); -- Crear trigger para actualizar fecha_actualizacion automáticamente CREATE TRIGGER TR_mve_facturas_datos_update ON mve_facturas_datos AFTER UPDATE AS BEGIN SET NOCOUNT ON; UPDATE mve_facturas_datos SET fecha_actualizacion = GETDATE() FROM mve_facturas_datos m INNER JOIN inserted i ON m.id = i.id; END;