/* ============================================================ 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