Files

84 lines
4.1 KiB
Transact-SQL

/* ============================================================
DECOMARMOL - Compra electronica e-CF 41 en cpprmt001
Idempotente: se puede correr varias veces; solo agrega lo que falta.
============================================================ */
SET NOCOUNT ON;
GO
/* ---------------- 1) cptb00041: e-CF 41 emitidos desde cpprmt001 ---------------- */
IF OBJECT_ID('dbo.cptb00041', 'U') IS NULL
BEGIN
CREATE TABLE dbo.cptb00041 (
cod_sp SMALLINT NOT NULL,
cod_sp_sec SMALLINT NOT NULL,
num_doc CHAR(13) NOT NULL, -- = e-NCF (E41xxxxxxxxxx), igual que cptb00001.num_doc
ncf VARCHAR(13) NULL,
fecha DATE NULL,
rnc VARCHAR(11) NULL, -- cedula/RNC del proveedor (va como Comprador en el XML)
neto DECIMAL(18,2) NULL, -- lo que recibe el proveedor (= valor_fac en CxP)
porc_isr DECIMAL(5,2) NULL, -- 0, 3 o 15
codigo_isr SMALLINT NULL, -- tipo de retencion ISR del 606 (cgtb00077)
lleva_itbis CHAR(1) NULL, -- S/N
bien_servicio CHAR(1) NULL, -- 1 bien / 2 servicio
subtotal DECIMAL(18,2) NULL,
itbis DECIMAL(18,2) NULL,
isr_retenido DECIMAL(18,2) NULL,
itbis_retenido DECIMAL(18,2) NULL, -- 100% del ITBIS
total DECIMAL(18,2) NULL, -- subtotal + ITBIS (MontoTotal del XML)
-- rastreo DGII
hash VARCHAR(10) NULL,
ultima_respuesta VARCHAR(MAX) NULL,
fechafirmadigital DATETIME NULL,
trackid VARCHAR(100) NULL,
estado_dgii VARCHAR(50) NULL,
mensaje VARCHAR(2000) NULL,
status_t CHAR(1) NULL,
us_crea VARCHAR(50) NULL,
fech_crea DATETIME NULL CONSTRAINT df_cptb00041_fc DEFAULT GETDATE(),
us_mod VARCHAR(50) NULL,
fech_mod DATETIME NULL,
CONSTRAINT pk_cptb00041 PRIMARY KEY (cod_sp, cod_sp_sec, num_doc)
);
PRINT 'cptb00041 creada';
END
ELSE PRINT 'cptb00041 ya existe';
GO
/* ---------------- 2) Tipo NCF 41 en la lista de cpprmt001 ---------------- */
IF NOT EXISTS (SELECT 1 FROM cgtb00074 WHERE codigo_fiscal = 41)
INSERT INTO cgtb00074 (codigo_fiscal, descripcion) VALUES (41, 'COMPRAS ELECTRONICO');
GO
/* ---------------- 3) Tipos de retencion ISR del 606 (cgtb00077) ---------------- */
INSERT INTO cgtb00077 (codigo_isr, descripcion)
SELECT v.codigo_isr, v.descripcion
FROM (VALUES
(1, 'ALQUILERES'),
(2, 'HONORARIOS POR SERVICIOS'),
(3, 'OTRAS RENTAS'),
(4, 'OTRAS RENTAS (RENTAS PRESUNTAS)'),
(5, 'INTERESES PAGADOS A PERSONAS JURIDICAS RESIDENTES'),
(6, 'INTERESES PAGADOS A PERSONAS FISICAS RESIDENTES'),
(7, 'RETENCION POR PROVEEDORES DEL ESTADO'),
(8, 'JUEGOS TELEFONICOS'),
(9, 'RETENCIONES SUBSECTOR GANADERIA DE CARNE BOVINA')
) AS v(codigo_isr, descripcion)
WHERE NOT EXISTS (SELECT 1 FROM cgtb00077 x WHERE x.codigo_isr = v.codigo_isr);
GO
/* ---------------- 4) REVISION (no cambia nada) ---------------- */
-- a) rango del 41: debe existir con tipo_doc='FT', codigo_dgii='41', disponible='S'
-- (se crea en el mantenimiento de NCF, veprmt020, con los datos de la DGII)
SELECT tipo_doc, codigo_dgii, ncf_inicial, ncf_final, disponible, fecha_vencimiento, sucid
FROM vetb00071 WHERE codigo_dgii = '41';
SELECT * FROM vetb00073 WHERE codigo_dgii = '41';
-- b) cuenta(s) de ISR retenido: deben estar en el catalogo con retencion='SI' y su codigo_isr
-- (se marcan en el mantenimiento del catalogo, cgprmt001). La de ITBIS retenido se deja en NO.
SELECT cuenta_no, descripcion, retencion, codigo_isr
FROM cgtb00001 WHERE retencion = 'SI' OR descripcion LIKE '%RETEN%';
-- c) ambiente DGII de la empresa (test / certificacion / produccion)
SELECT nombre, rnc, ambienteDgii, id_dgii, id_municipio_dgii FROM companias;
GO