84 lines
4.1 KiB
Transact-SQL
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
|