
/* error codigo 1006 en mm_datos */
SET TERM ^ ;

CREATE OR ALTER procedure MM_10067 (
    INICIO char(8),
    FINAL char(8))
AS
declare variable TIPODOC INTEGER;
declare variable NIT VARCHAR(15) CHARACTER SET NONE;
declare variable DV CHAR(1) CHARACTER SET NONE;
declare variable APELLIDO1 VARCHAR(60) CHARACTER SET NONE;
declare variable APELLIDO2 VARCHAR(60) CHARACTER SET NONE;
declare variable NOMBRE1 VARCHAR(60) CHARACTER SET NONE;
declare variable NOMBRE2 VARCHAR(60) CHARACTER SET NONE;
declare variable RAZONSOCIAL VARCHAR(450) CHARACTER SET NONE;
declare variable IVA NUMERIC(18,0);
declare variable IVADE NUMERIC(18,0);
declare variable ITEM INTEGER;
declare variable DIRMENOR VARCHAR(200) CHARACTER SET NONE;
declare variable DEPMENOR CHAR(2) CHARACTER SET NONE;
declare variable MUNMENOR CHAR(3) CHARACTER SET NONE;
declare variable MENORCUANTIA NUMERIC(18,2);
declare variable MINIMO NUMERIC(18,2);
begin
ITEM = 0;
MENORCUANTIA = 0;
SELECT COME_MINIMO FROM configura_mediosmag WHERE COME_ITEM = 10067 INTO :MINIMO;
/* IVA GENERADO */
FOR SELECT MAX(D.TERC_NIT), SUM(CODE_CREDITO), SUM(CODE_DEBITO)
    FROM COMPROBANTE_DETALLE D, COMPROBANTE_ENCABEZADO E, mediosmag_cuentas M
    WHERE M.mmcu_item = 10067 AND SUBSTR(CUEN_COD,1,STRLEN(M.mmcu_cuenta)) = M.mmcu_cuenta AND
    E.ENCO_CONSEC = D.ENCO_CONSEC AND ENCO_FECHA >= :INICIO AND ENCO_FECHA <= :FINAL
    GROUP BY D.TERC_NIT
    INTO :NIT, :IVA, :IVADE
    DO
    BEGIN
    if (IVA IS NULL) then
        IVA = 0;
    if (IVADE IS NULL) then
        IVADE = 0;
    if ((IVA > MINIMO) or (IVADE > 0)) then
        BEGIN
        SELECT TERC_NOM, TERC_NOMBRE1, TERC_NOMBRE2, TERC_APELLIDO1, TERC_APELLIDO2, TERC_DV, TIID_CODIGO
            FROM TERCEROS T left outer join TIPO_ID IT on (T.TERC_TIPOID = IT.TIID_COD) WHERE TERC_NIT = :NIT
            INTO :RAZONSOCIAL, :NOMBRE1, :NOMBRE2, :APELLIDO1, :APELLIDO2, :DV, :TIPODOC;
        ITEM = ITEM + 1;
        insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
            memg_nombre1, memg_nombre2, memg_razonsocial, memg_pago, memg_retencion)
            values (10067, substr(:inicio,1,4), :item, :tipodoc, :nit, :dv, :apellido1, :apellido2,
            :nombre1, :nombre2, :razonsocial, :iva, :ivade);
        END
     ELSE
        MENORCUANTIA = MENORCUANTIA + iva;
    END
if (MENORCUANTIA > 0) then
    BEGIN
    EXECUTE PROCEDURE lee_configuracion('CONTABILIDAD', 'GENERAL', 'NIT COMPAÑIA') returning_values (:NIT);
    SELECT TERC_DIR, SUBSTR(CIUD_COD,1,2), SUBSTR(CIUD_COD,3,5) FROM TERCEROS WHERE TERC_NIT = :NIT
    INTO :dirmenor, :depmenor, :munmenor;
    ITEM = ITEM + 1;
    insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
        memg_nombre1, memg_nombre2, memg_razonsocial, memg_direccion, memg_departamento, memg_municipio, memg_pago, memg_retencion)
        values (10067, substr(:inicio,1,4), :item,  43, '222222222', '', '', '',
        '', '', 'CUANTIAS MENORES', :dirmenor, :depmenor, :munmenor, :menorcuantia, 0);
    END
end^

SET TERM ; ^

/* falto actualizar la versión de los conceptos 1003 */

update configura_mediosmag set come_formato = 10037 where come_formato = 10036;
commit work;

/* 10127 por 1012 al generar información */

SET TERM ^ ;

CREATE OR ALTER procedure MM_1012 (
    INICIO char(8),
    FINAL char(8))
AS
declare variable CONCEPTO INTEGER;
declare variable TIPODOC INTEGER;
declare variable NIT VARCHAR(15) CHARACTER SET NONE;
declare variable DV CHAR(1) CHARACTER SET NONE;
declare variable APELLIDO1 VARCHAR(60) CHARACTER SET NONE;
declare variable APELLIDO2 VARCHAR(60) CHARACTER SET NONE;
declare variable NOMBRE1 VARCHAR(60) CHARACTER SET NONE;
declare variable NOMBRE2 VARCHAR(60) CHARACTER SET NONE;
declare variable RAZONSOCIAL VARCHAR(450) CHARACTER SET NONE;
declare variable PAIS VARCHAR(3) CHARACTER SET NONE;
declare variable SALDO NUMERIC(18,0);
declare variable SALDOAUX NUMERIC(18,0);
declare variable CUENTA VARCHAR(20);
declare variable ITEM INTEGER;
declare variable ANO CHAR(4);
begin
ITEM = 0;
ANO = SUBSTR(INICIO,1,4);
/* SALDOS EN BANCOS NACIONALES */
select COME_RESPUESTA FROM configura_mediosmag WHERE COME_ITEM = 82 INTO :CONCEPTO;
FOR SELECT distinct TERC_NIT FROM SALDOS_TERCEROS WHERE SUBSTR(CUEN_COD,1,6) = '111005' OR
    SUBSTR(CUEN_COD,1,4) = '1120' ORDER BY TERC_NIT INTO :NIT
    do
    BEGIN
    SELECT TERC_NOM, TERC_NOMBRE1, TERC_NOMBRE2, TERC_APELLIDO1, TERC_APELLIDO2, TERC_DV, TIID_CODIGO, PAIS_ID
        FROM TERCEROS T left outer join TIPO_ID IT on (T.TERC_TIPOID = IT.TIID_COD) WHERE TERC_NIT = :NIT
        INTO :RAZONSOCIAL, :NOMBRE1, :NOMBRE2, :APELLIDO1, :APELLIDO2, :DV, :TIPODOC, :PAIS;
    SALDO = 0;
    FOR SELECT DISTINCT CUEN_COD FROM SALDOS_TERCEROS WHERE TERC_NIT = :NIT AND
        SUBSTR(CUEN_COD,1,6) = '111005' OR SUBSTR(CUEN_COD,1,4) = '1120' INTO :CUENTA
        DO
        BEGIN
        EXECUTE PROCEDURE SALDO_TERCERO_MES(CUENTA, NIT, ANO, 12, 'N') RETURNING_VALUES (SALDOAUX);
        SALDO = SALDO + SALDOAUX;
        END
    if (SALDO > 0) then
        BEGIN
        ITEM = ITEM + 1;
        insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_concepto, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
            memg_nombre1, memg_nombre2, memg_razonsocial, memg_pago, memg_pais)
            values (10127, :ANO, :item,  :concepto, :tipodoc, :nit, :dv, :apellido1, :apellido2,
            :nombre1, :nombre2, :razonsocial, :SALDO, :pais);
        END
    END
/* SALDOS EN BANCOS EXTERIOR CONSOLIDADO */
EXECUTE PROCEDURE saldo_cuentaf ('111010', FINAL) returning_values (SALDO);
ITEM = ITEM + 1;
TIPODOC = 31;
NIT = '444444000';
RAZONSOCIAL = 'OPERACIONES DEL EXTERIOR';
APELLIDO1 = '';
APELLIDO2 = '';
NOMBRE1 = '';
NOMBRE2 = '';
if (SALDO > 0) then
    BEGIN
    ITEM = ITEM + 1;
    insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_concepto, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
        memg_nombre1, memg_nombre2, memg_razonsocial, memg_pago, memg_pais)
        values (10127, :ANO, :item,  :concepto, :tipodoc, :nit, :dv, :apellido1, :apellido2,
        :nombre1, :nombre2, :razonsocial, :SALDO, :pais);
    END
/* SALDOS INVERSIONES EN BONOS */
select COME_RESPUESTA FROM configura_mediosmag WHERE COME_ITEM = 83 INTO :CONCEPTO;
FOR SELECT distinct TERC_NIT FROM SALDOS_TERCEROS WHERE SUBSTR(CUEN_COD,1,4) = '1215' ORDER BY TERC_NIT INTO :NIT
    do
    BEGIN
    SELECT TERC_NOM, TERC_NOMBRE1, TERC_NOMBRE2, TERC_APELLIDO1, TERC_APELLIDO2, TERC_DV, TIID_CODIGO, PAIS_ID
        FROM TERCEROS T left outer join TIPO_ID IT on (T.TERC_TIPOID = IT.TIID_COD) WHERE TERC_NIT = :NIT
        INTO :RAZONSOCIAL, :NOMBRE1, :NOMBRE2, :APELLIDO1, :APELLIDO2, :DV, :TIPODOC, :PAIS;
    SALDO = 0;
    FOR SELECT DISTINCT CUEN_COD FROM SALDOS_TERCEROS WHERE TERC_NIT = :NIT AND
        SUBSTR(CUEN_COD,1,4) = '1215' INTO :CUENTA
        DO
        BEGIN
        EXECUTE PROCEDURE SALDO_TERCERO_MES(CUENTA, NIT, ANO, 12, 'N') RETURNING_VALUES (SALDOAUX);
        SALDO = SALDO + SALDOAUX;
        END
    if (SALDO > 0) then
        BEGIN
        ITEM = ITEM + 1;
        insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_concepto, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
            memg_nombre1, memg_nombre2, memg_razonsocial, memg_pago, memg_pais)
            values (10127, :ANO, :item,  :concepto, :tipodoc, :nit, :dv, :apellido1, :apellido2,
            :nombre1, :nombre2, :razonsocial, :SALDO, :pais);
        END
    END
/* SALDOS INVERSIONES EN CDTS */
select COME_RESPUESTA FROM configura_mediosmag WHERE COME_ITEM = 84 INTO :CONCEPTO;
FOR SELECT distinct TERC_NIT FROM SALDOS_TERCEROS WHERE SUBSTR(CUEN_COD,1,4) = '1225' ORDER BY TERC_NIT INTO :NIT
    do
    BEGIN
    SELECT TERC_NOM, TERC_NOMBRE1, TERC_NOMBRE2, TERC_APELLIDO1, TERC_APELLIDO2, TERC_DV, TIID_CODIGO, PAIS_ID
        FROM TERCEROS T left outer join TIPO_ID IT on (T.TERC_TIPOID = IT.TIID_COD) WHERE TERC_NIT = :NIT
        INTO :RAZONSOCIAL, :NOMBRE1, :NOMBRE2, :APELLIDO1, :APELLIDO2, :DV, :TIPODOC, :PAIS;
    SALDO = 0;
    FOR SELECT DISTINCT CUEN_COD FROM SALDOS_TERCEROS WHERE TERC_NIT = :NIT AND
        SUBSTR(CUEN_COD,1,4) = '1225' INTO :CUENTA
        DO
        BEGIN
        EXECUTE PROCEDURE SALDO_TERCERO_MES(CUENTA, NIT, ANO, 12, 'N') RETURNING_VALUES (SALDOAUX);
        SALDO = SALDO + SALDOAUX;
        END
    if (SALDO > 0) then
        BEGIN
        ITEM = ITEM + 1;
        insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_concepto, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
            memg_nombre1, memg_nombre2, memg_razonsocial, memg_pago, memg_pais)
            values (10127, :ANO, :item,  :concepto, :tipodoc, :nit, :dv, :apellido1, :apellido2,
            :nombre1, :nombre2, :razonsocial, :SALDO, :pais);
        END
    END
/* SALDOS INVERSIONES EN TITULOS */
select COME_RESPUESTA FROM configura_mediosmag WHERE COME_ITEM = 85 INTO :CONCEPTO;
FOR SELECT distinct TERC_NIT FROM SALDOS_TERCEROS WHERE SUBSTR(CUEN_COD,1,4) = '1235' ORDER BY TERC_NIT INTO :NIT
    do
    BEGIN
    SELECT TERC_NOM, TERC_NOMBRE1, TERC_NOMBRE2, TERC_APELLIDO1, TERC_APELLIDO2, TERC_DV, TIID_CODIGO, PAIS_ID
        FROM TERCEROS T left outer join TIPO_ID IT on (T.TERC_TIPOID = IT.TIID_COD) WHERE TERC_NIT = :NIT
        INTO :RAZONSOCIAL, :NOMBRE1, :NOMBRE2, :APELLIDO1, :APELLIDO2, :DV, :TIPODOC, :PAIS;
    SALDO = 0;
    FOR SELECT DISTINCT CUEN_COD FROM SALDOS_TERCEROS WHERE TERC_NIT = :NIT AND
        SUBSTR(CUEN_COD,1,4) = '1235' INTO :CUENTA
        DO
        BEGIN
        EXECUTE PROCEDURE SALDO_TERCERO_MES(CUENTA, NIT, ANO, 12, 'N') RETURNING_VALUES (SALDOAUX);
        SALDO = SALDO + SALDOAUX;
        END
    if (SALDO > 0) then
        BEGIN
        ITEM = ITEM + 1;
        insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_concepto, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
            memg_nombre1, memg_nombre2, memg_razonsocial, memg_pago, memg_pais)
            values (10127, :ANO, :item,  :concepto, :tipodoc, :nit, :dv, :apellido1, :apellido2,
            :nombre1, :nombre2, :razonsocial, :SALDO, :pais);
        END
    END
/* SALDOS INVERSIONES EN DERECHOS FID. */
select COME_RESPUESTA FROM configura_mediosmag WHERE COME_ITEM = 86 INTO :CONCEPTO;
FOR SELECT distinct TERC_NIT FROM SALDOS_TERCEROS WHERE SUBSTR(CUEN_COD,1,4) = '1245' ORDER BY TERC_NIT INTO :NIT
    do
    BEGIN
    SELECT TERC_NOM, TERC_NOMBRE1, TERC_NOMBRE2, TERC_APELLIDO1, TERC_APELLIDO2, TERC_DV, TIID_CODIGO, PAIS_ID
        FROM TERCEROS T left outer join TIPO_ID IT on (T.TERC_TIPOID = IT.TIID_COD) WHERE TERC_NIT = :NIT
        INTO :RAZONSOCIAL, :NOMBRE1, :NOMBRE2, :APELLIDO1, :APELLIDO2, :DV, :TIPODOC, :PAIS;
    SALDO = 0;
    FOR SELECT DISTINCT CUEN_COD FROM SALDOS_TERCEROS WHERE TERC_NIT = :NIT AND
        SUBSTR(CUEN_COD,1,4) = '1245' INTO :CUENTA
        DO
        BEGIN
        EXECUTE PROCEDURE SALDO_TERCERO_MES(CUENTA, NIT, ANO, 12, 'N') RETURNING_VALUES (SALDOAUX);
        SALDO = SALDO + SALDOAUX;
        END
    if (SALDO > 0) then
        BEGIN
        ITEM = ITEM + 1;
        insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_concepto, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
            memg_nombre1, memg_nombre2, memg_razonsocial, memg_pago, memg_pais)
            values (10127, :ANO, :item,  :concepto, :tipodoc, :nit, :dv, :apellido1, :apellido2,
            :nombre1, :nombre2, :razonsocial, :SALDO, :pais);
        END
    END
/* SALDOS OTRAS INVERSIONES */
select COME_RESPUESTA FROM configura_mediosmag WHERE COME_ITEM = 87 INTO :CONCEPTO;
FOR SELECT distinct TERC_NIT FROM SALDOS_TERCEROS WHERE SUBSTR(CUEN_COD,1,4) = '1220' OR
    SUBSTR(CUEN_COD,1,4) = '1230' or SUBSTR(CUEN_COD,1,4) = '1240' OR SUBSTR(CUEN_COD,1,4) = '1250' OR
    SUBSTR(CUEN_COD,1,4) = '1255' OR SUBSTR(CUEN_COD,1,4) = '1260' or SUBSTR(CUEN_COD,1,4) = '1295'
    ORDER BY TERC_NIT INTO :NIT
    do
    BEGIN
    SELECT TERC_NOM, TERC_NOMBRE1, TERC_NOMBRE2, TERC_APELLIDO1, TERC_APELLIDO2, TERC_DV, TIID_CODIGO, PAIS_ID
        FROM TERCEROS T left outer join TIPO_ID IT on (T.TERC_TIPOID = IT.TIID_COD) WHERE TERC_NIT = :NIT
        INTO :RAZONSOCIAL, :NOMBRE1, :NOMBRE2, :APELLIDO1, :APELLIDO2, :DV, :TIPODOC, :PAIS;
    SALDO = 0;
    FOR SELECT DISTINCT CUEN_COD FROM SALDOS_TERCEROS WHERE TERC_NIT = :NIT AND
        SUBSTR(CUEN_COD,1,4) = '1220' or SUBSTR(CUEN_COD,1,4) = '1230' or SUBSTR(CUEN_COD,1,4) = '1240' OR
        SUBSTR(CUEN_COD,1,4) = '1250' or SUBSTR(CUEN_COD,1,4) = '1255' OR SUBSTR(CUEN_COD,1,4) = '1260' or
        SUBSTR(CUEN_COD,1,4) = '1295' INTO :CUENTA
        DO
        BEGIN
        EXECUTE PROCEDURE SALDO_TERCERO_MES(CUENTA, NIT, ANO, 12, 'N') RETURNING_VALUES (SALDOAUX);
        SALDO = SALDO + SALDOAUX;
        END
    if (SALDO > 0) then
        BEGIN
        ITEM = ITEM + 1;
        insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_concepto, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
            memg_nombre1, memg_nombre2, memg_razonsocial, memg_pago, memg_pais)
            values (10127, :ANO, :item,  :concepto, :tipodoc, :nit, :dv, :apellido1, :apellido2,
            :nombre1, :nombre2, :razonsocial, :SALDO, :pais);
        END
    END
/* SALDOS ACCIONES O CUOTAS */
select COME_RESPUESTA FROM configura_mediosmag WHERE COME_ITEM = 88 INTO :CONCEPTO;
FOR SELECT distinct TERC_NIT FROM SALDOS_TERCEROS WHERE SUBSTR(CUEN_COD,1,4) = '1205' OR
    SUBSTR(CUEN_COD,1,4) = '1210' ORDER BY TERC_NIT INTO :NIT
    do
    BEGIN
    SELECT TERC_NOM, TERC_NOMBRE1, TERC_NOMBRE2, TERC_APELLIDO1, TERC_APELLIDO2, TERC_DV, TIID_CODIGO, PAIS_ID
        FROM TERCEROS T left outer join TIPO_ID IT on (T.TERC_TIPOID = IT.TIID_COD) WHERE TERC_NIT = :NIT
        INTO :RAZONSOCIAL, :NOMBRE1, :NOMBRE2, :APELLIDO1, :APELLIDO2, :DV, :TIPODOC, :PAIS;
    SALDO = 0;
    FOR SELECT DISTINCT CUEN_COD FROM SALDOS_TERCEROS WHERE TERC_NIT = :NIT AND
        SUBSTR(CUEN_COD,1,4) = '1205' OR SUBSTR(CUEN_COD,1,4) = '1210' INTO :CUENTA
        DO
        BEGIN
        EXECUTE PROCEDURE SALDO_TERCERO_MES(CUENTA, NIT, ANO, 12, 'N') RETURNING_VALUES (SALDOAUX);
        SALDO = SALDO + SALDOAUX;
        END
    if (SALDO > 0) then
        BEGIN
        ITEM = ITEM + 1;
        insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_concepto, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
            memg_nombre1, memg_nombre2, memg_razonsocial, memg_pago, memg_pais)
            values (10127, :ANO, :item,  :concepto, :tipodoc, :nit, :dv, :apellido1, :apellido2,
            :nombre1, :nombre2, :razonsocial, :SALDO, :pais);
        END
    END
end^

SET TERM ; ^


/* MAL IVA RECUPERADO, SE DEBE ESPECIFICAR EN CUENTA APARTE */
SET TERM ^ ;

CREATE OR ALTER procedure MM_10067 (
    INICIO char(8),
    FINAL char(8))
AS
declare variable TIPODOC INTEGER;
declare variable NIT VARCHAR(15) CHARACTER SET NONE;
declare variable DV CHAR(1) CHARACTER SET NONE;
declare variable APELLIDO1 VARCHAR(60) CHARACTER SET NONE;
declare variable APELLIDO2 VARCHAR(60) CHARACTER SET NONE;
declare variable NOMBRE1 VARCHAR(60) CHARACTER SET NONE;
declare variable NOMBRE2 VARCHAR(60) CHARACTER SET NONE;
declare variable RAZONSOCIAL VARCHAR(450) CHARACTER SET NONE;
declare variable IVA NUMERIC(18,0);
declare variable ITEM INTEGER;
declare variable DIRMENOR VARCHAR(200) CHARACTER SET NONE;
declare variable DEPMENOR CHAR(2) CHARACTER SET NONE;
declare variable MUNMENOR CHAR(3) CHARACTER SET NONE;
declare variable MENORCUANTIA NUMERIC(18,2);
declare variable MINIMO NUMERIC(18,2);
declare variable MENORCUANTIADV NUMERIC(18,2);
begin
ITEM = 0;
MENORCUANTIA = 0;
SELECT COME_MINIMO FROM configura_mediosmag WHERE COME_ITEM = 100671 INTO :MINIMO;

/* IVA GENERADO */
FOR SELECT MAX(D.TERC_NIT), SUM(CODE_CREDITO-CODE_DEBITO)
    FROM COMPROBANTE_DETALLE D, COMPROBANTE_ENCABEZADO E, mediosmag_cuentas M
    WHERE M.mmcu_item = 100671 AND SUBSTR(CUEN_COD,1,STRLEN(M.mmcu_cuenta)) = M.mmcu_cuenta AND
    E.ENCO_CONSEC = D.ENCO_CONSEC AND ENCO_FECHA >= :INICIO AND ENCO_FECHA <= :FINAL
    GROUP BY D.TERC_NIT
    INTO :NIT, :IVA
    DO
    BEGIN
    if (IVA IS NULL) then
        IVA = 0;
    if (IVA > MINIMO) then
        BEGIN
        SELECT TERC_NOM, TERC_NOMBRE1, TERC_NOMBRE2, TERC_APELLIDO1, TERC_APELLIDO2, TERC_DV, TIID_CODIGO
            FROM TERCEROS T left outer join TIPO_ID IT on (T.TERC_TIPOID = IT.TIID_COD) WHERE TERC_NIT = :NIT
            INTO :RAZONSOCIAL, :NOMBRE1, :NOMBRE2, :APELLIDO1, :APELLIDO2, :DV, :TIPODOC;
        ITEM = ITEM + 1;
        insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
            memg_nombre1, memg_nombre2, memg_razonsocial, memg_pago, memg_retencion)
            values (10067, substr(:inicio,1,4), :item, :tipodoc, :nit, :dv, :apellido1, :apellido2,
            :nombre1, :nombre2, :razonsocial, :iva, 0);
        END
     ELSE
        MENORCUANTIA = MENORCUANTIA + iva;
    END
/* IVA DEV.COMPR */
MENORCUANTIADV = 0;
FOR SELECT MAX(D.TERC_NIT), SUM(CODE_CREDITO-CODE_DEBITO)
    FROM COMPROBANTE_DETALLE D, COMPROBANTE_ENCABEZADO E, mediosmag_cuentas M
    WHERE M.mmcu_item = 100671 AND SUBSTR(CUEN_COD,1,STRLEN(M.mmcu_ctartf)) = M.mmcu_ctartf AND
    E.ENCO_CONSEC = D.ENCO_CONSEC AND ENCO_FECHA >= :INICIO AND ENCO_FECHA <= :FINAL
    GROUP BY D.TERC_NIT
    INTO :NIT, :IVA
    DO
    BEGIN
    if (IVA IS NULL) then
        IVA = 0;
    if (IVA > MINIMO) then
        BEGIN
        SELECT TERC_NOM, TERC_NOMBRE1, TERC_NOMBRE2, TERC_APELLIDO1, TERC_APELLIDO2, TERC_DV, TIID_CODIGO
            FROM TERCEROS T left outer join TIPO_ID IT on (T.TERC_TIPOID = IT.TIID_COD) WHERE TERC_NIT = :NIT
            INTO :RAZONSOCIAL, :NOMBRE1, :NOMBRE2, :APELLIDO1, :APELLIDO2, :DV, :TIPODOC;
        ITEM = ITEM + 1;
        insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
            memg_nombre1, memg_nombre2, memg_razonsocial, memg_pago, memg_retencion)
            values (10067, substr(:inicio,1,4), :item, :tipodoc, :nit, :dv, :apellido1, :apellido2,
            :nombre1, :nombre2, :razonsocial, 0, :iva);
        END
     ELSE
        MENORCUANTIADV = MENORCUANTIADV + iva;
    END
if ((MENORCUANTIA > 0) or (MENORCUANTIADV > 0)) then
    BEGIN
    EXECUTE PROCEDURE lee_configuracion('CONTABILIDAD', 'GENERAL', 'NIT COMPAÑIA') returning_values (:NIT);
    SELECT TERC_DIR, SUBSTR(CIUD_COD,1,2), SUBSTR(CIUD_COD,3,5) FROM TERCEROS WHERE TERC_NIT = :NIT
    INTO :dirmenor, :depmenor, :munmenor;
    ITEM = ITEM + 1;
    insert into medios_magneticos_datos (memg_formato, memg_ano, memg_item, memg_tipodoc, memg_nit, memg_dv,memg_apellido1, memg_apellido2,
        memg_nombre1, memg_nombre2, memg_razonsocial, memg_direccion, memg_departamento, memg_municipio, memg_pago, memg_retencion)
        values (10067, substr(:inicio,1,4), :item,  43, '222222222', '', '', '',
        '', '', 'CUANTIAS MENORES', :dirmenor, :depmenor, :munmenor, :menorcuantia, :menorcuantiadv);
    END
end^

SET TERM ; ^







