/* NIVEL DE INSPECCION */
INSERT INTO CONFIGURACION (CONF_MODULO, CONF_CATEGORIA, CONF_PROPIEDAD, CONF_VALOR, CONF_POSIBLES, CONF_AYUDA) VALUES ('COMPRAS', 'REMISIONES', 'PREGUNTAR NIVEL DE INSPECCION Y TAMANO MUESTRA POR ITEM', 'NO', 'SI,NO', 'SI:"Se trae el nivel de inspeccion del articulo y el tamano de la muestra sugerido a inspeccionar, el cual se puede modificar antes de grabar');
COMMIT WORK;

ALTER TABLE ARTICULO
ADD ARTI_NIVINS CHAR(1);

CREATE TABLE NIVEL_INSPECCION (
    NIIN_ID T_ID NOT NULL,
    NIIN_DESDE T_CANTIDAD,
    NIIN_HASTA T_CANTIDAD,
    NIIN_NIVEL CHAR(1),
    NIIN_MUESTRA T_CANTIDAD);

ALTER TABLE NIVEL_INSPECCION
ADD CONSTRAINT PK_NIVEL_INSPECCION
PRIMARY KEY (NIIN_ID);

ALTER TABLE REMISION_PROVEEDOR_DET
ADD RPVD_NIVINS CHAR(1);

ALTER TABLE REMISION_PROVEEDOR_DET
ADD RPVD_MUESTRA T_CANTIDAD;

SET TERM ^ ;

CREATE OR ALTER procedure IMPR_REMIPROV (
    ID integer)
returns (
    PREF varchar(4),
    NUMERO varchar(8),
    FECHA date,
    NIT varchar(20),
    NOMTERCERO varchar(60),
    CODBODEGA varchar(2),
    NOMBODEGA varchar(30),
    NUMPROV varchar(15),
    COTIZACION varchar(30),
    NUMPROVCOT varchar(15),
    PEDIDO varchar(30),
    NUMPROVPED varchar(15),
    SUBTOTAL numeric(18,2),
    DTOPORC numeric(9,2),
    DTOMONTO numeric(18,2),
    ADICIONAL numeric(18,2),
    IVAMONTO numeric(18,2),
    EXTRA numeric(18,2),
    TOTIMPBA numeric(18,2),
    TOTIMPUP numeric(18,2),
    TOTCOSTONEG numeric(18,2),
    TOTALFAC numeric(18,2),
    OBS blob sub_type TEXT segment size 80,
    ITEM integer,
    ARTICULO varchar(15),
    CODBAR varchar(60),
    ARTIDES varchar(300),
    ARTIPROV varchar(15),
    CANT numeric(18,4),
    LOTE varchar(50),
    UNIDAD varchar(8),
    BODITEM varchar(2),
    STAND varchar(20),
    NIVINS CHAR(1),
    MUESTRA NUMERIC(18,4),
    SERIALES varchar(4096),
    PRUNIT numeric(18,2),
    DTOITPORC numeric(9,2),
    DTOITMONTO numeric(18,2),
    PRNETO numeric(18,2),
    COSTONEG numeric(18,2),
    IVAPORC numeric(9,2),
    IVAITMONTO numeric(18,2),
    CONSUMO numeric(18,2),
    ITIMPBA numeric(18,2),
    ITIMPUPP numeric(18,2),
    ITIMPUPM numeric(18,2),
    TOTITCOSTONEG numeric(18,2),
    TOTAL numeric(18,2),
    OBSITEM blob sub_type TEXT segment size 80,
    CODIGOPR varchar(20),
    ZONACOD varchar(2),
    ZONANOM varchar(30),
    DV char(1),
    DIRECCION varchar(60),
    CIUDAD varchar(40),
    TELEFONO varchar(40),
    CONTACTO varchar(60),
    FAX varchar(25),
    GRUPO varchar(2),
    SUBGRUPO varchar(3),
    MARCA varchar(3),
    PESO numeric(9,4),
    ANCHO numeric(18,4),
    ALTO numeric(18,4),
    LARGO numeric(18,4),
    SUMA1 numeric(18,2),
    SUMA2 numeric(18,2),
    SUMA3 numeric(18,2),
    IVA1 numeric(18,2),
    IVA2 numeric(18,2),
    IVA3 numeric(18,2),
    SUMAEX numeric(18,2),
    SUMAGR numeric(18,2),
    NUMITEMS integer,
    PAGTOTAL integer,
    UNDRESALTAR char(1))
as
declare variable IMPTOS CHAR(1);
declare variable TARIFA INTEGER;
declare variable orden char(2);
DECLARE VARIABLE ITEMFOR INTEGER;
declare variable CONSOLIDA INTEGER;
BEGIN
  SELECT PREF_PRE, REPR_NUMERO, REPR_FECHA, F.BODE_COD, BODE_NOM, REPR_NUMPROV, REPR_COTIZACI, REPR_ORDEN, REPR_IMPTOS, 
    REPR_DTOPORC, REPR_DTOMONTO, REPR_ADICIONAL, REPR_IVAMONTO, REPR_EXTRA, REPR_TOTAL,
    F.TERC_NIT, TERC_NOM, TERC_DIR, TERC_CIU, TERC_TEL, TERC_CONTACTO, TERC_FAX, TERC_DV, REPR_OBS, REPR_CONSOLIDA, repr_impba, repr_impup
    FROM REMISION_PROVEEDOR F, BODEGA B, TERCEROS T
    WHERE F.BODE_COD = B.BODE_COD AND F.TERC_NIT = T.TERC_NIT AND F.REPR_ID = :ID
    into :PREF, :NUMERO, :FECHA, :CODBODEGA, :NOMBODEGA, :NUMPROV, :COTIZACION, :PEDIDO, :IMPTOS, 
    :DTOPORC, :DTOMONTO, :ADICIONAL, :IVAMONTO, :EXTRA, :TOTALFAC,
    :NIT, :NOMTERCERO, :DIRECCION, :CIUDAD, :TELEFONO, :CONTACTO, :FAX, :DV, :OBS, :consolida, :totimpba, :totimpup;
    
  SELECT PROV_COD, P.GRPR_COD, GRPR_NOM
    FROM PROVEEDORES P, GRUPOS_PROVEEDORES G
    WHERE TERC_NIT = :NIT AND G.GRPR_COD = P.GRPR_COD
    INTO :CODIGOPR, :ZONACOD, :ZONANOM;
    
  SUBTOTAL = TOTALFAC - EXTRA - IVAMONTO - ADICIONAL + DTOMONTO - totimpba - totimpup;
  SUMAEX = 0;
  SUMA1 = 0;
  SUMA2 = 0;
  SUMA3 = 0;
  IVA1 = 0;
  IVA2 = 0;
  IVA3 = 0;

SELECT COUNT(RPVD_ITEM) from remision_proveedor_det WHERE REPR_ID = :ID INTO :numitems;
SELECT FORM_NROITEMS FROM FORMATOS WHERE TIDO_COD = 22 AND PREF_PRE = :pref INTO :ITEMFOR;
if (ITEMFOR > 0) then
    pagtotal = CEIL(CAST(NUMITEMS AS DOUBLE PRECISION)/CAST(ITEMFOR AS DOUBLE PRECISION));
ELSE
    PAGTOTAL = 0;

NUMPROVPED = '';
if (CONSOLIDA <> 0) then
    BEGIN
    SELECT O.ordc_numprov FROM consolidado_faltantes C, ordenes_compra O WHERE C.cofa_tipoori = 24 AND C.cofa_tipodes = 22 AND C.cofa_id = :consolida
        AND O.ordc_id = C.cofa_idori INTO :numprovped;
    SELECT P.copr_numprov FROM consolidado_faltantes C, cotizacion_proveedor P WHERE C.cofa_tipoori = 25 AND C.cofa_tipodes = 22 AND C.cofa_id = :consolida
        AND P.copr_id = C.cofa_idori INTO :numprovcot;
    END
execute procedure lee_configuracion('COMPRAS', 'DOCUMENTOS', 'ORDENAR ITEMS POR BODEGA AL IMPRIMIR DOCUMENTOS') returning_values (:Orden);
ITEM = 0;
totcostoneg = 0;
if (orden = 'NO') then
  BEGIN
  FOR SELECT D.ARTI_COD, RPVD_CODBAR, SUBSTRING(RPVD_DESC FROM 1 FOR 60), RPVD_CANT, RPVD_UNIDAD, BODE_COD, RPVD_LOTE, RPVD_PRUNIT,
    RPVD_DTOPORC, RPVD_DTOMONTO, RPVD_IVAPORC, RPVD_IVAMONTO, RPVD_CONSUMO, RPVD_TOTAL, RPVD_OBS, RPVD_NIVINS, RPVD_MUESTRA,
    GRUP_COD, SUBG_COD, MARC_COD, ARTI_PESO, ARTI_ANCHO, ARTI_ALTO, ARTI_LARGO, TAIV_COD, RPVD_CODPROV, RPVD_COSTONEG, RPVD_IMPBA, RPVD_IMPUP, RPVD_IMPUPP
    FROM REMISION_PROVEEDOR_DET D, ARTICULO A
    WHERE D.ARTI_COD = A.ARTI_COD AND D.REPR_ID = :ID
    ORDER BY RPVD_ITEM
    INTO :ARTICULO, :CODBAR, :ARTIDES, :CANT, :UNIDAD, :BODITEM, :LOTE, :PRUNIT,
    :DTOITPORC, :DTOITMONTO, :IVAPORC, :IVAITMONTO, :CONSUMO, :TOTAL, :OBSITEM, :NIVINS, :MUESTRA,
    :GRUPO, :SUBGRUPO, :MARCA, :PESO, :ANCHO, :ALTO, :LARGO, :TARIFA, :ARTIPROV, :costoneg, :itimpba, :itimpupm, :itimpupp
    DO
      BEGIN
      PRNETO = PRUNIT - DTOITMONTO;
      if (IVAPORC = 0) then
        SUMAEX = SUMAEX + TOTAL;
      if (TARIFA = 1) then
        BEGIN
        SUMA1 = SUMA1 + TOTAL - IVAITMONTO;
        IVA1 = IVA1 + IVAITMONTO;
        END
      if (TARIFA = 2) then
        BEGIN
        SUMA2 = SUMA2 + TOTAL - IVAITMONTO;
        IVA2 = IVA2 + IVAITMONTO;
        END
      if (TARIFA = 3) then
        BEGIN
        SUMA3 = SUMA3 + TOTAL - IVAITMONTO;
        IVA3 = IVA3 + IVAITMONTO;
        END
      ITEM = ITEM + 1;
      select unar_resaltar from unidad_articulo where unar_unidad = :unidad and arti_cod = :articulo and unar_activa = 'S' into :undresaltar;
      if (UNDRESALTAR = 'S') then
        UNDRESALTAR = '*';
      ELSE
        UNDRESALTAR = '';
      SUMAGR = SUMA1 + SUMA2 + SUMA3;
      if (IMPTOS = 'N') then
        TOTAL = TOTAL - IVAITMONTO;
      TOTITCOSTONEG = CANT * COSTONEG;
      totcostoneg = totcostoneg + totitcostoneg;
      SELECT STAND_COD FROM STANDS WHERE ARTI_COD = :ARTICULO AND STAND_BODEGA = :boditem INTO :stand;
      EXECUTE PROCEDURE seriales_item_documento(22, :ID, :ITEM) returning_values (:SERIALES);
      SUSPEND;
      END
  END
ELSE
  BEGIN
  FOR SELECT D.ARTI_COD, RPVD_CODBAR, RPVD_DESC, RPVD_CANT, RPVD_UNIDAD, BODE_COD, RPVD_LOTE, RPVD_PRUNIT,
    RPVD_DTOPORC, RPVD_DTOMONTO, RPVD_IVAPORC, RPVD_IVAMONTO, RPVD_CONSUMO, RPVD_TOTAL, RPVD_OBS, RPVD_NIVINS, RPVD_MUESTRA,
    GRUP_COD, SUBG_COD, MARC_COD, ARTI_PESO, ARTI_ANCHO, ARTI_ALTO, ARTI_LARGO, TAIV_COD, RPVD_CODPROV, RPVD_COSTONEG, RPVD_IMPBA, RPVD_IMPUP, RPVD_IMPUPP
    FROM REMISION_PROVEEDOR_DET D, ARTICULO A
    WHERE D.ARTI_COD = A.ARTI_COD AND D.REPR_ID = :ID
    ORDER BY D.bode_cod, RPVD_ITEM
    INTO :ARTICULO, :CODBAR, :ARTIDES, :CANT, :UNIDAD, :BODITEM, :LOTE, :PRUNIT,
    :DTOITPORC, :DTOITMONTO, :IVAPORC, :IVAITMONTO, :CONSUMO, :TOTAL, :OBSITEM, :NIVINS, :MUESTRA,
    :GRUPO, :SUBGRUPO, :MARCA, :PESO, :ANCHO, :ALTO, :LARGO, :TARIFA, :ARTIPROV, :costoneg, :itimpba, :itimpupm, :itimpupp
    DO
      BEGIN
      PRNETO = PRUNIT - DTOITMONTO;
      if (IVAPORC = 0) then
        SUMAEX = SUMAEX + TOTAL;
      if (TARIFA = 1) then
        BEGIN
        SUMA1 = SUMA1 + TOTAL - IVAITMONTO;
        IVA1 = IVA1 + IVAITMONTO;
        END
      if (TARIFA = 2) then
        BEGIN
        SUMA2 = SUMA2 + TOTAL - IVAITMONTO;
        IVA2 = IVA2 + IVAITMONTO;
        END
      if (TARIFA = 3) then
        BEGIN
        SUMA3 = SUMA3 + TOTAL - IVAITMONTO;
        IVA3 = IVA3 + IVAITMONTO;
        END
      ITEM = ITEM + 1;
      select unar_resaltar from unidad_articulo where unar_unidad = :unidad and arti_cod = :articulo and unar_activa = 'S' into :undresaltar;
      if (UNDRESALTAR = 'S') then
        UNDRESALTAR = '*';
      ELSE
        UNDRESALTAR = '';
      SUMAGR = SUMA1 + SUMA2 + SUMA3;
      if (IMPTOS = 'N') then
        TOTAL = TOTAL - IVAITMONTO;
      TOTITCOSTONEG = CANT * COSTONEG;
      totcostoneg = totcostoneg + totitcostoneg;
      SELECT STAND_COD FROM STANDS WHERE ARTI_COD = :ARTICULO AND STAND_BODEGA = :boditem INTO :stand;
      EXECUTE PROCEDURE seriales_item_documento(22, :ID, :ITEM) returning_values (:SERIALES);
      SUSPEND;
      END
  END
END^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure REP_COMPROBANTES_CMP (
    TIPO integer,
    DETALLE char(1),
    FECINI date,
    FECFIN date,
    PREFIJO varchar(4),
    ANULADOS char(1),
    SUBEMPRESA integer,
    MONEDA integer)
returns (
    NOMTIPO varchar(30),
    ID integer,
    PREF varchar(4),
    NUMERO varchar(8),
    FECHA date,
    VENCE date,
    CODBOD varchar(2),
    NOMBOD varchar(30),
    NIT varchar(20),
    NOMTERCERO varchar(60),
    DIRTERCERO varchar(100),
    TELTERCERO varchar(40),
    CIUTERCERO varchar(60),
    NUMPROV varchar(15),
    SIMPLIFICA char(1),
    ORDEN varchar(30),
    COTIZACI varchar(30),
    REMISION varchar(30),
    APROBADO char(1),
    ITEM integer,
    ARTICULO varchar(15),
    CODBAR varchar(50),
    ARTIDES varchar(300),
    CANT numeric(18,4),
    UNIDAD varchar(8),
    BODITEM varchar(2),
    LOTE varchar(50),
    VLOTE date,
    NIVELINSP char(1),
    CANTINSP NUMERIC(18,4),
    REFERENCIA varchar(60),
    INVIMA varchar(30),
    PRECIO numeric(18,2),
    DTOPORCIT numeric(9,2),
    DTOMONTOIT numeric(18,2),
    IVAPORCIT numeric(9,2),
    IVAMONTOIT numeric(18,2),
    IMPBAIT numeric(18,2),
    IMPUPIT numeric(18,2),
    CONSUMOIT numeric(18,2),
    SUBTOTALIT numeric(18,2),
    BASEIT numeric(18,2),
    DTOPOR numeric(9,2),
    DTOMONTO numeric(18,2),
    ADICIONAL numeric(18,2),
    IVAMONTO numeric(18,2),
    IMPBA numeric(18,2),
    IMPUP numeric(18,2),
    RTFTEPOR numeric(9,2),
    RTFTEMONTO numeric(18,2),
    RTIVAPOR numeric(9,2),
    RTIVAMONTO numeric(18,2),
    RTICAPOR numeric(9,2),
    RTICAMONTO numeric(18,2),
    EXTRA numeric(18,2),
    DTOFPOR numeric(9,2),
    DTOFMONTO numeric(18,2),
    DTOFFECHA date,
    TOTAL numeric(18,2),
    CUDS varchar(100),
    ANULADO char(1),
    USRREG varchar(10),
    FECREG date,
    HORAREG time,
    TRM numeric(18,2))
as
BEGIN
  /* DETERMINE LA TABLA A EXAMINAR */
  if (BIN_AND(TIPO, 1) <> 0) then
    BEGIN
    SELECT TIDO_NOMLARGO FROM TIPO_DOCUMENTO WHERE TIDO_COD = 21 INTO :NOMTIPO;
    /* FACTURA */
    FOR SELECT FACO_ID, F.PREF_PRE, FACO_NUMERO, FACO_FECHA, FACO_VENCE, F.BODE_COD, B.BODE_NOM, F.TERC_NIT, TERC_NOM, FACO_NUMPROV, FACO_ORDEN, FACO_COTIZACI, FACO_REMISION,
        FACO_DTOPORC, FACO_DTOMONTO, FACO_ADICIONAL, FACO_IVAMONTO, FACO_IMPBA, FACO_IMPUP, FACO_RTFTEPORC, FACO_RTFTEMONTO, FACO_RTIVAPOR, FACO_RTIVAMONTO, FACO_RTICAPOR, FACO_RTICAMONTO,
        FACO_EXTRA, FACO_DTOFPOR, FACO_DTOFMONTO, FACO_DTOFFECHA, FACO_TOTAL, FACO_ANULADO, FACO_SIMPLIFICADO, FACO_TRM, faco_nronde, FACO_CONFIRMA
        FROM FACTURAS_COMPRA F, BODEGA B, TERCEROS T, PREFIJOS P
        WHERE F.BODE_COD = B.BODE_COD AND T.TERC_NIT = F.TERC_NIT AND FACO_FECHA >= :FECINI AND FACO_FECHA <= :FECFIN
         AND P.PREF_PRE = F.PREF_PRE AND P.TIDO_COD = 21 AND ((P.SUCU_ID = :SUBEMPRESA) or (P.SUCU_ID = 0) or (:SUBEMPRESA = 0))
        ORDER BY F.FACO_FECHA, FACO_ID
        INTO :ID, :PREF, :NUMERO, :FECHA, :VENCE, :CODBOD, :NOMBOD, :NIT, :NOMTERCERO, :NUMPROV, :ORDEN, :COTIZACI, :REMISION, :DTOPOR, :DTOMONTO, :ADICIONAL, :IVAMONTO, :IMPBA, :IMPUP,
        :RTFTEPOR, :RTFTEMONTO, :RTIVAPOR, :RTIVAMONTO, :RTICAPOR, :RTICAMONTO, :EXTRA, :DTOFPOR, :DTOFMONTO, :DTOFFECHA, :TOTAL, :ANULADO, :simplifica, :TRM, :CUDS, :aprobado
        DO
        BEGIN
        CANTINSP = 0;
        if ((PREFIJO = '') or (PREFIJO IS NULL) or (PREF = PREFIJO)) then
          if ((ANULADOS = 'S') or (ANULADO = 'N')) then
            BEGIN
            if (anulado = 'S') then
                BEGIN
                DTOPOR = 0;
                DTOMONTO = 0;
                ADICIONAL = 0;
                IVAMONTO = 0;
                IMPBA = 0;
                IMPUP = 0;
                RTFTEPOR = 0;
                RTFTEMONTO = 0;
                RTIVAPOR = 0;
                RTIVAMONTO = 0;
                RTICAPOR = 0;
                RTICAMONTO = 0;
                EXTRA = 0;
                DTOFPOR = 0;
                DTOFMONTO = 0;
                TOTAL = 0;
                dirtercero = '';
                ciutercero = '';
                teltercero = '';
                END
            SELECT TERC_DIR, TERC_CIU, TERC_TEL FROM TERCEROS WHERE TERC_NIT = :NIT INTO :dirtercero, :ciutercero, :teltercero;
            SELECT AUDI_USUARIO, AUDI_FECHA, AUDI_HORA FROM AUDITORIA
                WHERE AUDI_IDDOC = :ID AND TIDO_COD = 21 AND AUDI_OPER = 'I' INTO :USRREG, :FECREG, :HORAREG;

            if (DETALLE = 'S') then
                BEGIN
                if (anulado = 'S') then
                    BEGIN
                    ITEM = 0;
                    ARTICULO = '';
                    CODBAR = '';
                    ARTIDES = '';
                    CANT = 0;
                    UNIDAD = '';
                    BODITEM = '';
                    LOTE = '';
                    REFERENCIA = '';
                    PRECIO = 0;
                    DTOPORCIT = 0;
                    DTOMONTOIT = 0;
                    IVAPORCIT = 0;
                    IVAMONTOIT = 0;
                    IMPBAIT = 0;
                    IMPUPIT = 0;
                    CONSUMOIT = 0;
                    SUBTOTALIT = 0;
                    BASEIT = 0;
                    VLOTE = NULL;
                    INVIMA = NULL;
                    SUSPEND;
                    END
                ELSE
                    BEGIN
                     FOR SELECT FCDE_ITEM, ARTI_COD, FCDE_CODBAR, FCDE_DESC, FCDE_CANT, FCDE_UNIDAD, BODE_COD, FCDE_LOTE, FCDE_REFERENCIA, FCDE_PRUNIT, FCDE_DTOPORC, FCDE_DTOMONTO,
                        FCDE_IVAPORC, FCDE_IVAMONTO, FCDE_CONSUMO, FCDE_TOTAL, FCDE_TOTAL - FCDE_IVAMONTO, FCDE_IMPBA, FCDE_IMPUP
                       FROM FACTURAS_COMPRAS_DETALLE
                        WHERE FACO_ID = :ID
                        ORDER BY FCDE_ITEM
                        INTO :ITEM, :ARTICULO, :CODBAR, :ARTIDES, :CANT, :UNIDAD, :BODITEM, :LOTE, :REFERENCIA, :PRECIO, :DTOPORCIT, :DTOMONTOIT,
                        :IVAPORCIT, :IVAMONTOIT, :CONSUMOIT, :SUBTOTALIT, :BASEIT, :impbait, :impupit
                        DO
                        BEGIN
                        SELECT ARTI_INVIMA, ARTI_NIVINS FROM ARTICULO WHERE ARTI_COD = :ARTICULO INTO :INVIMA, :nivelinsp;
                        if ((LOTE <> '') AND (LOTE IS NOT NULL)) then
                            SELECT L.lote_vence FROM LOTES L WHERE L.arti_cod = :articulo AND L.lote_nro = :LOTE and L.bode_cod = :boditem INTO :VLOTE;
                        if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                            BEGIN
                            PRECIO = PRECIO / TRM;
                            DTOMONTOIT = DTOMONTOIT / TRM;
                            IVAMONTOIT = IVAMONTOIT / TRM;
                            CONSUMOIT = CONSUMOIT / TRM;
                            SUBTOTALIT = SUBTOTALIT / TRM;
                            BASEIT = BASEIT / TRM;
                            END
                        SUSPEND;
                        END
                    END
                END
            ELSE
                BEGIN
                if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                    BEGIN
                    DTOMONTO = DTOMONTO / TRM;
                    ADICIONAL = ADICIONAL / TRM;
                    IVAMONTO = IVAMONTO / TRM;
                    EXTRA = EXTRA / TRM;
                    DTOFMONTO = DTOFMONTO / TRM;
                    TOTAL = TOTAL / TRM;
                    END
                SUSPEND;
                END
            END
        END
    END
  if (BIN_AND(TIPO, 2) <> 0) then
    BEGIN
    CUDS = '';
    SELECT TIDO_NOMLARGO FROM TIPO_DOCUMENTO WHERE TIDO_COD = 22 INTO :NOMTIPO;
    /* REMISION */
    FOR SELECT REPR_ID, R.PREF_PRE, REPR_NUMERO, R.REPR_FECHA, REPR_FECHA V,R.BODE_COD, B.BODE_NOM, R.TERC_NIT, TERC_NOM, REPR_NUMPROV, REPR_ORDEN, REPR_COTIZACI, '', REPR_DTOPORC, REPR_DTOMONTO,
        REPR_ADICIONAL, REPR_IVAMONTO, 0, 0, 0, 0, 0, 0, REPR_EXTRA, 0, 0, REPR_FECHA, REPR_TOTAL, REPR_ANULADO, REPR_SIMPLIFICADO, REPR_IMPBA, REPR_IMPUP, 'S'
        FROM REMISION_PROVEEDOR R, BODEGA B, TERCEROS T, PREFIJOS P
        WHERE R.BODE_COD = B.BODE_COD AND T.TERC_NIT = R.TERC_NIT AND R.REPR_FECHA >= :FECINI AND R.REPR_FECHA <= :FECFIN
         AND P.PREF_PRE = R.PREF_PRE AND P.TIDO_COD = 22 AND ((P.SUCU_ID = :SUBEMPRESA) or (P.SUCU_ID = 0) or (:SUBEMPRESA = 0))
         ORDER BY R.REPR_FECHA, REPR_ID
        INTO :ID, :PREF, :NUMERO, :FECHA, :VENCE, :CODBOD, :NOMBOD, :NIT, :NOMTERCERO, :NUMPROV, :ORDEN, :COTIZACI, :REMISION, :DTOPOR, :DTOMONTO, :ADICIONAL, :IVAMONTO,
        :RTFTEPOR, :RTFTEMONTO, :RTIVAPOR, :RTIVAMONTO, :RTICAPOR, :RTICAMONTO, :EXTRA, :DTOFPOR, :DTOFMONTO, :DTOFFECHA, :TOTAL, :ANULADO, :SIMPLIFICA, :IMPBA, :IMPUP, :aprobado
        DO
        BEGIN
        if ((PREFIJO = '') or (PREFIJO IS NULL) or (PREF = PREFIJO)) then
          if ((ANULADOS = 'S') or (ANULADO = 'N')) then
            BEGIN
            if (anulado = 'S') then
                BEGIN
                DTOPOR = 0;
                DTOMONTO = 0;
                ADICIONAL = 0;
                IVAMONTO = 0;
                IMPBA = 0;
                IMPUP = 0;
                RTFTEPOR = 0;
                RTFTEMONTO = 0;
                RTIVAPOR = 0;
                RTIVAMONTO = 0;
                RTICAPOR = 0;
                RTICAMONTO = 0;
                EXTRA = 0;
                DTOFPOR = 0;
                DTOFMONTO = 0;
                TOTAL = 0;
                dirtercero = '';
                ciutercero = '';
                teltercero = '';
                END
            SELECT TERC_DIR, TERC_CIU, TERC_TEL FROM TERCEROS WHERE TERC_NIT = :NIT INTO :dirtercero, :ciutercero, :teltercero;
            SELECT AUDI_USUARIO, AUDI_FECHA, AUDI_HORA FROM AUDITORIA
                WHERE AUDI_IDDOC = :ID AND TIDO_COD = 22 AND AUDI_OPER = 'I' INTO :USRREG, :FECREG, :HORAREG;
            if (DETALLE = 'S') then
                BEGIN
                if (anulado = 'S') then
                    BEGIN
                    ITEM = 0;
                    ARTICULO = '';
                    CODBAR = '';
                    ARTIDES = '';
                    CANT = 0;
                    UNIDAD = '';
                    BODITEM = '';
                    LOTE = '';
                    REFERENCIA = '';
                    PRECIO = 0;
                    DTOPORCIT = 0;
                    DTOMONTOIT = 0;
                    IVAPORCIT = 0;
                    IVAMONTOIT = 0;
                    IMPBAIT = 0;
                    IMPUPIT = 0;
                    CONSUMOIT = 0;
                    SUBTOTALIT = 0;
                    BASEIT = 0;
                    VLOTE = NULL;
                    INVIMA = NULL;
                    SUSPEND;
                    END
                ELSE
                    BEGIN
                     FOR SELECT RPVD_ITEM, ARTI_COD, RPVD_CODBAR, RPVD_DESC, RPVD_CANT, RPVD_UNIDAD, BODE_COD, RPVD_LOTE, '', RPVD_PRUNIT, RPVD_DTOPORC, RPVD_DTOMONTO,
                        RPVD_IVAPORC, RPVD_IVAMONTO, RPVD_CONSUMO, RPVD_TOTAL, RPVD_TOTAL - RPVD_IVAMONTO, RPVD_IMPBA, RPVD_IMPUP, RPVD_NIVINS, RPVD_MUESTRA
                        FROM REMISION_PROVEEDOR_DET
                        WHERE REPR_ID = :ID
                        ORDER BY RPVD_ITEM
                        INTO :ITEM, :ARTICULO, :CODBAR, :ARTIDES, :CANT, :UNIDAD, :BODITEM, :LOTE, :REFERENCIA, :PRECIO, :DTOPORCIT, :DTOMONTOIT,
                        :IVAPORCIT, :IVAMONTOIT, :CONSUMOIT, :SUBTOTALIT, :BASEIT, :impbait, :impupit, :nivelinsp, :cantinsp
                        DO
                        BEGIN
                        SELECT ARTI_INVIMA FROM ARTICULO WHERE ARTI_COD = :ARTICULO INTO :INVIMA;
                        if ((LOTE <> '') AND (LOTE IS NOT NULL)) then
                            SELECT L.lote_vence FROM LOTES L WHERE L.arti_cod = :articulo AND L.lote_nro = :LOTE and L.bode_cod = :boditem INTO :VLOTE;
                        if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                            BEGIN
                            PRECIO = PRECIO / TRM;
                            DTOMONTOIT = DTOMONTOIT / TRM;
                            IVAMONTOIT = IVAMONTOIT / TRM;
                            CONSUMOIT = CONSUMOIT / TRM;
                            SUBTOTALIT = SUBTOTALIT / TRM;
                            BASEIT = BASEIT / TRM;
                            END
                        SUSPEND;
                        END
                    END
                END
            ELSE
                BEGIN
                if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                    BEGIN
                    DTOMONTO = DTOMONTO / TRM;
                    ADICIONAL = ADICIONAL / TRM;
                    IVAMONTO = IVAMONTO / TRM;
                    EXTRA = EXTRA / TRM;
                    DTOFMONTO = DTOFMONTO / TRM;
                    TOTAL = TOTAL / TRM;
                    END
                SUSPEND;
                END
            END
        END
    END
  if (BIN_AND(TIPO, 4) <> 0) then
    BEGIN
    SELECT TIDO_NOMLARGO FROM TIPO_DOCUMENTO WHERE TIDO_COD = 24 INTO :NOMTIPO;
    /* DEVOLUCIONES */
    FOR SELECT DVCO_ID, D.PREF_PRE, DVCO_NUMERO, DVCO_FECHA, DVCO_FECHA, D.BODE_COD, B.BODE_NOM, D.TERC_NIT, TERC_NOM, '', '', '', DVCO_FACTURA, DVCO_DTOPORC, DVCO_DTOMONTO,
        DVCO_ADICIONAL, DVCO_IVAMONTO, DVCO_RTFTEPORC, DVCO_RTFTEMONTO, DVCO_RTIVAPORC, DVCO_RTIVAMONTO, DVCO_RTICAPORC, DVCO_RTICAMONTO, DVCO_EXTRA, 0, 0,
        DVCO_FECHA, DVCO_TOTAL, DVCO_ANULADO, DVCO_SIMPLIFICADO, DVCO_IMPBA, DVCO_IMPUP, D.dvco_cuds, 'S'
        FROM DEVOLUCIONES_COMPRAS D, BODEGA B, TERCEROS T, PREFIJOS P
        WHERE D.BODE_COD = B.BODE_COD AND D.TERC_NIT = T.TERC_NIT AND DVCO_FECHA >= :FECINI AND DVCO_FECHA <= :FECFIN
         AND P.PREF_PRE = D.PREF_PRE AND P.TIDO_COD = 24 AND ((P.SUCU_ID = :SUBEMPRESA) or (P.SUCU_ID = 0) or (:SUBEMPRESA = 0))
        ORDER BY D.DVCO_FECHA, DVCO_ID
        INTO :ID, :PREF, :NUMERO, :FECHA, :VENCE, :CODBOD, :NOMBOD, :NIT, :NOMTERCERO, :NUMPROV, :ORDEN, :COTIZACI, :REMISION, :DTOPOR, :DTOMONTO,
        :ADICIONAL, :IVAMONTO, :RTFTEPOR, :RTFTEMONTO, :RTIVAPOR, :RTIVAMONTO, :RTICAPOR, :RTICAMONTO, :EXTRA, :DTOFPOR, :DTOFMONTO,
        :DTOFFECHA, :TOTAL, :ANULADO, :simplifica, :IMPBA, :IMPUP, :CUDS, :aprobado
        DO
        BEGIN
        CANTINSP = 0;
        if ((PREFIJO = '') or (PREFIJO IS NULL) or (PREF = PREFIJO)) then
          if ((ANULADOS = 'S') or (ANULADO = 'N')) then
            BEGIN
            if (anulado = 'S') then
                BEGIN
                DTOPOR = 0;
                DTOMONTO = 0;
                ADICIONAL = 0;
                IVAMONTO = 0;
                IMPBA = 0;
                IMPUP = 0;
                RTFTEPOR = 0;
                RTFTEMONTO = 0;
                RTIVAPOR = 0;
                RTIVAMONTO = 0;
                RTICAPOR = 0;
                RTICAMONTO = 0;
                EXTRA = 0;
                DTOFPOR = 0;
                DTOFMONTO = 0;
                TOTAL = 0;
                dirtercero = '';
                ciutercero = '';
                teltercero = '';
                END
            SELECT TERC_DIR, TERC_CIU, TERC_TEL FROM TERCEROS WHERE TERC_NIT = :NIT INTO :dirtercero, :ciutercero, :teltercero;
            SELECT AUDI_USUARIO, AUDI_FECHA, AUDI_HORA FROM AUDITORIA
                WHERE AUDI_IDDOC = :ID AND TIDO_COD = 24 AND AUDI_OPER = 'I' INTO :USRREG, :FECREG, :HORAREG;
            if (DETALLE = 'S') then
                BEGIN
                if (anulado = 'S') then
                    BEGIN
                    ITEM = 0;
                    ARTICULO = '';
                    CODBAR = '';
                    ARTIDES = '';
                    CANT = 0;
                    UNIDAD = '';
                    BODITEM = '';
                    LOTE = '';
                    REFERENCIA = '';
                    PRECIO = 0;
                    DTOPORCIT = 0;
                    DTOMONTOIT = 0;
                    IVAPORCIT = 0;
                    IVAMONTOIT = 0;
                    IMPBAIT = 0;
                    IMPUPIT = 0;
                    CONSUMOIT = 0;
                    SUBTOTALIT = 0;
                    BASEIT = 0;
                    VLOTE = NULL;
                    INVIMA = NULL;
                    SUSPEND;
                    END
                ELSE
                    BEGIN
                     FOR SELECT DVCD_ITEM, ARTI_COD, DVCD_CODBAR, DVCD_DESC, DVCD_CANT, DVCD_UNIDAD, BODE_COD, DVCD_LOTE, '', DVCD_PRUNIT, DVCD_DTOPORC, DVCD_DTOMONTO,
                        DVCD_IVAPORC, DVCD_IVAMONTO, DVCD_CONSUMO, DVCD_TOTAL, DVCD_TOTAL - DVCD_IVAMONTO, DVCD_IMPBA, DVCD_IMPUP
                         FROM DEVOLUCIONES_COMPRAS_DET
                         WHERE DVCO_ID = :ID
                         ORDER BY DVCD_ITEM
                         INTO :ITEM, :ARTICULO, :CODBAR, :ARTIDES, :CANT, :UNIDAD, :BODITEM, :LOTE, :REFERENCIA, :PRECIO, :DTOPORCIT, :DTOMONTOIT,
                         :IVAPORCIT, :IVAMONTOIT, :CONSUMOIT, :SUBTOTALIT, :BASEIT, :impbait, :impupit
                         DO
                            BEGIN
                            SELECT ARTI_INVIMA, ARTI_NIVINS FROM ARTICULO WHERE ARTI_COD = :ARTICULO INTO :INVIMA, :nivelinsp;
                            if ((LOTE <> '') AND (LOTE IS NOT NULL)) then
                                SELECT L.lote_vence FROM LOTES L WHERE L.arti_cod = :articulo AND L.lote_nro = :LOTE and L.bode_cod = :boditem INTO :VLOTE;
                            if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                                BEGIN
                                PRECIO = PRECIO / TRM;
                                DTOMONTOIT = DTOMONTOIT / TRM;
                                IVAMONTOIT = IVAMONTOIT / TRM;
                                CONSUMOIT = CONSUMOIT / TRM;
                                SUBTOTALIT = SUBTOTALIT / TRM;
                                BASEIT = BASEIT / TRM;
                                END
                            SUSPEND;
                            END
                    END
                END
            ELSE
                BEGIN
                if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                    BEGIN
                    DTOMONTO = DTOMONTO / TRM;
                    ADICIONAL = ADICIONAL / TRM;
                    IVAMONTO = IVAMONTO / TRM;
                    EXTRA = EXTRA / TRM;
                    DTOFMONTO = DTOFMONTO / TRM;
                    TOTAL = TOTAL / TRM;
                    END
                SUSPEND;
                END
            END
        END
    END
  if (BIN_AND(TIPO, 8) <> 0) then
    BEGIN
    CUDS = '';
    SELECT TIDO_NOMLARGO FROM TIPO_DOCUMENTO WHERE TIDO_COD = 23 INTO :NOMTIPO;
    /* ORDEN */
    FOR SELECT ORDC_ID, O.PREF_PRE, ORDC_NUMERO, ORDC_FECHA, ORDC_FECHA + ORDC_VALIDEZ, O.BODE_COD, B.BODE_NOM, O.TERC_NIT, TERC_NOM, '', '', ORDC_COTIZACION, '', ORDC_DTOPORC, ORDC_DTOMONTO,
        ORDC_ADICIONAL, ORDC_IVAMONTO, 0, 0, 0, 0, 0, 0, ORDC_EXTRA, 0, 0, ORDC_FECHA, ORDC_TOTAL, ORDC_ANULADO, ORDC_SIMPLIFICADO, ORDC_IMPBA, ORDC_IMPUP, ordc_aprobado
        FROM ORDENES_COMPRA O, BODEGA B, TERCEROS T, PREFIJOS P
        WHERE O.BODE_COD = B.BODE_COD AND O.TERC_NIT = T.TERC_NIT AND ORDC_FECHA >= :FECINI AND ORDC_FECHA <= :FECFIN
         AND P.PREF_PRE = O.PREF_PRE AND P.TIDO_COD = 23 AND ((P.SUCU_ID = :SUBEMPRESA) or (P.SUCU_ID = 0) or (:SUBEMPRESA = 0))
        ORDER BY O.ORDC_FECHA, ORDC_ID
        INTO :ID, :PREF, :NUMERO, :FECHA, :VENCE, :CODBOD, :NOMBOD, :NIT, :NOMTERCERO, :NUMPROV, :ORDEN, :COTIZACI, :REMISION, :DTOPOR, :DTOMONTO, :ADICIONAL, :IVAMONTO,
        :RTFTEPOR, :RTFTEMONTO, :RTIVAPOR, :RTIVAMONTO, :RTICAPOR, :RTICAMONTO, :EXTRA, :DTOFPOR, :DTOFMONTO, :DTOFFECHA, :TOTAL, :ANULADO, :simplifica, :IMPBA, :IMPUP, :aprobado
        DO
        BEGIN
        CANTINSP = 0;
        if ((PREFIJO = '') or (PREFIJO IS NULL) or (PREF = PREFIJO)) then
          if ((ANULADOS = 'S') or (ANULADO = 'N')) then
            BEGIN
            if (anulado = 'S') then
                BEGIN
                DTOPOR = 0;
                DTOMONTO = 0;
                ADICIONAL = 0;
                IVAMONTO = 0;
                IMPBA = 0;
                IMPUP = 0;
                RTFTEPOR = 0;
                RTFTEMONTO = 0;
                RTIVAPOR = 0;
                RTIVAMONTO = 0;
                RTICAPOR = 0;
                RTICAMONTO = 0;
                EXTRA = 0;
                DTOFPOR = 0;
                DTOFMONTO = 0;
                TOTAL = 0;
                dirtercero = '';
                ciutercero = '';
                teltercero = '';
                END
            SELECT TERC_DIR, TERC_CIU, TERC_TEL FROM TERCEROS WHERE TERC_NIT = :NIT INTO :dirtercero, :ciutercero, :teltercero;
            SELECT AUDI_USUARIO, AUDI_FECHA, AUDI_HORA FROM AUDITORIA
                WHERE AUDI_IDDOC = :ID AND TIDO_COD = 23 AND AUDI_OPER = 'I' INTO :USRREG, :FECREG, :HORAREG;
            if (DETALLE = 'S') then
                BEGIN
                if (anulado = 'S') then
                    BEGIN
                    ITEM = 0;
                    ARTICULO = '';
                    CODBAR = '';
                    ARTIDES = '';
                    CANT = 0;
                    UNIDAD = '';
                    BODITEM = '';
                    LOTE = '';
                    REFERENCIA = '';
                    PRECIO = 0;
                    DTOPORCIT = 0;
                    DTOMONTOIT = 0;
                    IVAPORCIT = 0;
                    IVAMONTOIT = 0;
                    IMPBAIT = 0;
                    IMPUPIT = 0;
                    CONSUMOIT = 0;
                    SUBTOTALIT = 0;
                    BASEIT = 0;
                    VLOTE = NULL;
                    INVIMA = NULL;
                    SUSPEND;
                    END
                ELSE
                    BEGIN
                     FOR SELECT OCDE_ITEM, ARTI_COD, OCDE_CODBAR, OCDE_DESC, OCDE_CANT, OCDE_UNIDAD, '', '', '', OCDE_PRUNIT, OCDE_DTOPORC, OCDE_DTOMONTO, OCDE_IVAPORC, OCDE_IVAMONTO,
                        OCDE_CONSUMO, OCDE_TOTAL, OCDE_TOTAL - OCDE_IVAMONTO, OCDE_IMPBA, OCDE_IMPUP
                         FROM ORDENES_COMPRA_DETALLE
                         WHERE ORDC_ID = :ID
                         ORDER BY OCDE_ITEM
                         INTO :ITEM, :ARTICULO, :CODBAR, :ARTIDES, :CANT, :UNIDAD, :BODITEM, :LOTE, :REFERENCIA, :PRECIO, :DTOPORCIT, :DTOMONTOIT, :IVAPORCIT, :IVAMONTOIT,
                         :CONSUMOIT, :SUBTOTALIT, :BASEIT, :impbait,  :IMPUPIT
                         DO
                            BEGIN
                            SELECT ARTI_INVIMA, ARTI_NIVINS FROM ARTICULO WHERE ARTI_COD = :ARTICULO INTO :INVIMA, :nivelinsp;
                            if ((LOTE <> '') AND (LOTE IS NOT NULL)) then
                                SELECT L.lote_vence FROM LOTES L WHERE L.arti_cod = :articulo AND L.lote_nro = :LOTE and L.bode_cod = :boditem INTO :VLOTE;
                            if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                                BEGIN
                                PRECIO = PRECIO / TRM;
                                DTOMONTOIT = DTOMONTOIT / TRM;
                                IVAMONTOIT = IVAMONTOIT / TRM;
                                CONSUMOIT = CONSUMOIT / TRM;
                                SUBTOTALIT = SUBTOTALIT / TRM;
                                BASEIT = BASEIT / TRM;
                                END
                            SUSPEND;
                            END
                    END
                END
            ELSE
                BEGIN
                if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                    BEGIN
                    DTOMONTO = DTOMONTO / TRM;
                    ADICIONAL = ADICIONAL / TRM;
                    IVAMONTO = IVAMONTO / TRM;
                    EXTRA = EXTRA / TRM;
                    DTOFMONTO = DTOFMONTO / TRM;
                    TOTAL = TOTAL / TRM;
                    END
                SUSPEND;
                END
            END
        END
    END
  if (BIN_AND(TIPO, 16) <> 0) then
    BEGIN
    CUDS = '';
    SELECT TIDO_NOMLARGO FROM TIPO_DOCUMENTO WHERE TIDO_COD = 25 INTO :NOMTIPO;
    /* COTIZACION */
    FOR SELECT COPR_ID, C.PREF_PRE, COPR_NUMERO, COPR_FECHA, COPR_FECHA, C.BODE_COD, BODE_NOM, C.TERC_NIT, TERC_NOM, '', '', '', '', COPR_DTOPORC, COPR_DTOMONTO, COPR_ADICIONAL,
        COPR_IVAMONTO, 0, 0, 0, 0, 0, 0, COPR_EXTRA, 0, 0, COPR_FECHA, COPR_TOTAL, COPR_ANULADO, COPR_IMPBA, COPR_IMPUP, 'S'
        FROM COTIZACION_PROVEEDOR C, BODEGA B, TERCEROS T, PREFIJOS P
        WHERE C.BODE_COD = B.BODE_COD AND C.TERC_NIT = T.TERC_NIT AND COPR_FECHA >= :FECINI AND COPR_FECHA <= :FECFIN
         AND P.PREF_PRE = C.PREF_PRE AND P.TIDO_COD = 25 AND ((P.SUCU_ID = :SUBEMPRESA) or (P.SUCU_ID = 0) or (:SUBEMPRESA = 0))
        ORDER BY C.COPR_FECHA, COPR_ID
        INTO :ID, :PREF, :NUMERO, :FECHA, :VENCE, :CODBOD, :NOMBOD, :NIT, :NOMTERCERO, :NUMPROV, :ORDEN, :COTIZACI, :REMISION, :DTOPOR, :DTOMONTO, :ADICIONAL,
        :IVAMONTO, :RTFTEPOR, :RTFTEMONTO, :RTIVAPOR, :RTIVAMONTO, :RTICAPOR, :RTICAMONTO, :EXTRA, :DTOFPOR, :DTOFMONTO, :DTOFFECHA, :TOTAL, :ANULADO, :IMPBA, :IMPUP, :aprobado
        DO
        BEGIN
        CANTINSP = 0;
        if ((PREFIJO = '') or (PREFIJO IS NULL) or (PREF = PREFIJO)) then
          if ((ANULADOS = 'S') or (ANULADO = 'N')) then
            BEGIN
            if (anulado = 'S') then
                BEGIN
                DTOPOR = 0;
                DTOMONTO = 0;
                ADICIONAL = 0;
                IVAMONTO = 0;
                IMPBA = 0;
                IMPUP = 0;
                RTFTEPOR = 0;
                RTFTEMONTO = 0;
                RTIVAPOR = 0;
                RTIVAMONTO = 0;
                RTICAPOR = 0;
                RTICAMONTO = 0;
                EXTRA = 0;
                DTOFPOR = 0;
                DTOFMONTO = 0;
                TOTAL = 0;
                dirtercero = '';
                ciutercero = '';
                teltercero = '';
                END
            SELECT TERC_DIR, TERC_CIU, TERC_TEL FROM TERCEROS WHERE TERC_NIT = :NIT INTO :dirtercero, :ciutercero, :teltercero;
            SELECT AUDI_USUARIO, AUDI_FECHA, AUDI_HORA FROM AUDITORIA
                WHERE AUDI_IDDOC = :ID AND TIDO_COD = 25 AND AUDI_OPER = 'I' INTO :USRREG, :FECREG, :HORAREG;
            if (DETALLE = 'S') then
                BEGIN
                if (anulado = 'S') then
                    BEGIN
                    ITEM = 0;
                    ARTICULO = '';
                    CODBAR = '';
                    ARTIDES = '';
                    CANT = 0;
                    UNIDAD = '';
                    BODITEM = '';
                    LOTE = '';
                    REFERENCIA = '';
                    PRECIO = 0;
                    DTOPORCIT = 0;
                    DTOMONTOIT = 0;
                    IVAPORCIT = 0;
                    IVAMONTOIT = 0;
                    IMPBAIT = 0;
                    IMPUPIT = 0;
                    CONSUMOIT = 0;
                    SUBTOTALIT = 0;
                    BASEIT = 0;
                    VLOTE = NULL;
                    INVIMA = NULL;
                    SUSPEND;
                    END
                ELSE
                    BEGIN
                      FOR SELECT CPRD_ITEM, ARTI_COD, CPRD_CODBAR, CPRD_DESC, CPRD_CANT, CPRD_UNIDAD, BODE_COD, '', '', CPRD_PRUNIT, CPRD_DTOPORC, CPRD_DTOMONTO, CPRD_IVAPORC, CPRD_IVAMONTO,
                        CPRD_CONSUMO, CPRD_TOTAL, CPRD_TOTAL - CPRD_IVAMONTO, CPRD_IMPBA, CPRD_IMPUP
                         FROM COTIZACIONES_PROVEEDOR_DET
                         WHERE COPR_ID = :ID
                         ORDER BY CPRD_ITEM
                         INTO :ITEM, :ARTICULO, :CODBAR, :ARTIDES, :CANT, :UNIDAD, :BODITEM, :LOTE, :REFERENCIA, :PRECIO, :DTOPORCIT, :DTOMONTOIT, :IVAPORCIT, :IVAMONTOIT,
                         :CONSUMOIT, :SUBTOTALIT, :BASEIT, :impbait,  :IMPUPIT
                         DO
                            BEGIN
                            SELECT ARTI_INVIMA, ARTI_NIVINS FROM ARTICULO WHERE ARTI_COD = :ARTICULO INTO :INVIMA, :nivelinsp;
                            if ((LOTE <> '') AND (LOTE IS NOT NULL)) then
                                SELECT L.lote_vence FROM LOTES L WHERE L.arti_cod = :articulo AND L.lote_nro = :LOTE and L.bode_cod = :boditem INTO :VLOTE;
                            if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                                BEGIN
                                PRECIO = PRECIO / TRM;
                                DTOMONTOIT = DTOMONTOIT / TRM;
                                IVAMONTOIT = IVAMONTOIT / TRM;
                                CONSUMOIT = CONSUMOIT / TRM;
                                SUBTOTALIT = SUBTOTALIT / TRM;
                                BASEIT = BASEIT / TRM;
                                END
                            SUSPEND;
                            END
                    END
                END
            ELSE
                BEGIN
                if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                    BEGIN
                    DTOMONTO = DTOMONTO / TRM;
                    ADICIONAL = ADICIONAL / TRM;
                    IVAMONTO = IVAMONTO / TRM;
                    EXTRA = EXTRA / TRM;
                    DTOFMONTO = DTOFMONTO / TRM;
                    TOTAL = TOTAL / TRM;
                    END
                SUSPEND;
                END
            END
        END
    END
END^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure REP_CONSECUTIVOS_CMP (
    TIPO integer,
    DETALLE char(1),
    PREINI varchar(4),
    PREFIN varchar(4),
    NUMINI varchar(8),
    NUMFIN varchar(8),
    ANULADOS char(1),
    SUBEMPRESA integer,
    MONEDA integer)
returns (
    NOMTIPO varchar(30),
    ID integer,
    PREF varchar(4),
    NUMERO varchar(8),
    FECHA date,
    VENCE date,
    CODBOD varchar(2),
    NOMBOD varchar(30),
    NIT varchar(20),
    NOMTERCERO varchar(60),
    NUMPROV varchar(15),
    SIMPLIFICA char(1),
    ORDEN varchar(30),
    COTIZACI varchar(30),
    REMISION varchar(30),
    APROBADO char(1),
    ITEM integer,
    ARTICULO varchar(15),
    CODBAR varchar(50),
    ARTIDES varchar(300),
    CANT numeric(18,4),
    UNIDAD varchar(8),
    BODITEM varchar(2),
    LOTE varchar(50),
    INVIMA varchar(30),
    NIVELINSP char(1),
    CANTINSP NUMERIC(18,4),
    REFERENCIA varchar(60),
    PRECIO numeric(18,2),
    DTOPORCIT numeric(9,2),
    DTOMONTOIT numeric(18,2),
    IVAPORCIT numeric(9,2),
    IVAMONTOIT numeric(18,2),
    CONSUMOIT numeric(18,2),
    SUBTOTALIT numeric(18,2),
    BASEIT numeric(18,2),
    DTOPOR numeric(9,2),
    DTOMONTO numeric(18,2),
    ADICIONAL numeric(18,2),
    IVAMONTO numeric(18,2),
    RTFTEPOR numeric(9,2),
    RTFTEMONTO numeric(18,2),
    RTIVAPOR numeric(9,2),
    RTIVAMONTO numeric(18,2),
    RTICAPOR numeric(9,2),
    RTICAMONTO numeric(18,2),
    EXTRA numeric(18,2),
    DTOFPOR numeric(9,2),
    DTOFMONTO numeric(18,2),
    DTOFFECHA date,
    TOTAL numeric(18,2),
    ANULADO char(1),
    TRM numeric(18,2))
as
BEGIN
  /* DETERMINE LA TABLA A EXAMINAR */
  if (BIN_AND(TIPO, 1) <> 0) then
    BEGIN
    SELECT TIDO_NOMLARGO FROM TIPO_DOCUMENTO WHERE TIDO_COD = 21 INTO :NOMTIPO;
    /* FACTURA */
    FOR SELECT FACO_ID, F.PREF_PRE, FACO_NUMERO, FACO_FECHA, FACO_VENCE, F.BODE_COD, B.BODE_NOM, F.TERC_NIT, TERC_NOM, FACO_NUMPROV, FACO_ORDEN, FACO_COTIZACI, FACO_REMISION,
        FACO_DTOPORC, FACO_DTOMONTO, FACO_ADICIONAL, FACO_IVAMONTO, FACO_RTFTEPORC, FACO_RTFTEMONTO, FACO_RTIVAPOR, FACO_RTIVAMONTO, FACO_RTICAPOR, FACO_RTICAMONTO, FACO_EXTRA,
        FACO_DTOFPOR, FACO_DTOFMONTO, FACO_DTOFFECHA, FACO_TOTAL, FACO_ANULADO, FACO_SIMPLIFICADO, FACO_TRM, FACO_CONFIRMA
        FROM FACTURAS_COMPRA F, BODEGA B, TERCEROS T, PREFIJOS P
        WHERE F.BODE_COD = B.BODE_COD AND T.TERC_NIT = F.TERC_NIT AND F.PREF_PRE >= :PREINI AND F.PREF_PRE <= :PREFIN AND FACO_NUMERO >= :NUMINI AND FACO_NUMERO <= :NUMFIN
         AND P.PREF_PRE = F.PREF_PRE AND P.TIDO_COD = 21 AND ((P.SUCU_ID = :SUBEMPRESA) or (:SUBEMPRESA = 0))
        ORDER BY F.PREF_PRE, FACO_NUMERO
        INTO :ID, :PREF, :NUMERO, :FECHA, :VENCE, :CODBOD, :NOMBOD, :NIT, :NOMTERCERO, :NUMPROV, :ORDEN, :COTIZACI, :REMISION, :DTOPOR, :DTOMONTO, :ADICIONAL, :IVAMONTO, :RTFTEPOR, :RTFTEMONTO,
        :RTIVAPOR, :RTIVAMONTO, :RTICAPOR, :RTICAMONTO, :EXTRA, :DTOFPOR, :DTOFMONTO, :DTOFFECHA, :TOTAL, :ANULADO, :simplifica, :TRM, :aprobado
        DO
        BEGIN
        CANTINSP = 0;
        if ((ANULADOS = 'S') or (ANULADO = 'N')) then
            BEGIN
            if (anulado = 'S') then
                BEGIN
                DTOPOR = 0;
                DTOMONTO = 0;
                ADICIONAL = 0;
                IVAMONTO = 0;
                RTFTEPOR = 0;
                RTFTEMONTO = 0;
                RTIVAPOR = 0;
                RTIVAMONTO = 0;
                RTICAPOR = 0;
                RTICAMONTO = 0;
                EXTRA = 0;
                DTOFPOR = 0;
                DTOFMONTO = 0;
                TOTAL = 0;
                END
            if (DETALLE = 'S') then
                BEGIN
                if (anulado = 'S') then
                    BEGIN
                    ITEM = 0;
                    ARTICULO = '';
                    CODBAR = '';
                    ARTIDES = '';
                    CANT = 0;
                    UNIDAD = '';
                    BODITEM = '';
                    LOTE = '';
                    REFERENCIA = '';
                    PRECIO = 0;
                    DTOPORCIT = 0;
                    DTOMONTOIT = 0;
                    IVAPORCIT = 0;
                    IVAMONTOIT = 0;
                    CONSUMOIT = 0;
                    SUBTOTALIT = 0;
                    BASEIT = 0;
                    SUSPEND;
                    END
                ELSE
                    BEGIN
                      FOR SELECT FCDE_ITEM, ARTI_COD, FCDE_CODBAR, FCDE_DESC, FCDE_CANT, FCDE_UNIDAD, BODE_COD, FCDE_LOTE, FCDE_REFERENCIA, FCDE_PRUNIT, FCDE_DTOPORC, FCDE_DTOMONTO, FCDE_IVAPORC, FCDE_IVAMONTO, FCDE_CONSUMO, FCDE_TOTAL, FCDE_TOTAL - FCDE_IVAMONTO
                         FROM FACTURAS_COMPRAS_DETALLE
                         WHERE FACO_ID = :ID
                         ORDER BY FCDE_ITEM
                         INTO :ITEM, :ARTICULO, :CODBAR, :ARTIDES, :CANT, :UNIDAD, :BODITEM, :LOTE, :REFERENCIA, :PRECIO, :DTOPORCIT, :DTOMONTOIT, :IVAPORCIT, :IVAMONTOIT, :CONSUMOIT, :SUBTOTALIT, :BASEIT
                         DO
                        BEGIN
                        SELECT ARTI_INVIMA, ARTI_NIVINS FROM ARTICULO WHERE ARTI_COD = :ARTICULO INTO :INVIMA, :nivelinsp;
                        if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                            BEGIN
                            PRECIO = PRECIO / TRM;
                            DTOMONTOIT = DTOMONTOIT / TRM;
                            IVAMONTOIT = IVAMONTOIT / TRM;
                            CONSUMOIT = CONSUMOIT / TRM;
                            SUBTOTALIT = SUBTOTALIT / TRM;
                            BASEIT = BASEIT / TRM;
                            END
                        SUSPEND;
                        END
                    END
                END
            ELSE
                BEGIN
                if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                    BEGIN
                    DTOMONTO = DTOMONTO / TRM;
                    ADICIONAL = ADICIONAL / TRM;
                    IVAMONTO = IVAMONTO / TRM;
                    EXTRA = EXTRA / TRM;
                    DTOFMONTO = DTOFMONTO / TRM;
                    TOTAL = TOTAL / TRM;
                    END
                SUSPEND;
                END
            END
        END
    END
  if (BIN_AND(TIPO, 2) <> 0) then
    BEGIN
    SELECT TIDO_NOMLARGO FROM TIPO_DOCUMENTO WHERE TIDO_COD = 22 INTO :NOMTIPO;
    /* REMISION */
    FOR SELECT REPR_ID, R.PREF_PRE, REPR_NUMERO, REPR_FECHA, REPR_FECHA, R.BODE_COD, B.BODE_NOM, R.TERC_NIT, TERC_NOM, REPR_NUMPROV, REPR_ORDEN, REPR_COTIZACI, '', REPR_DTOPORC,
        REPR_DTOMONTO, REPR_ADICIONAL, REPR_IVAMONTO, 0, 0, 0, 0, 0, 0, REPR_EXTRA, 0, 0, REPR_FECHA, REPR_TOTAL, REPR_ANULADO, REPR_SIMPLIFICADO, 'S'
        FROM REMISION_PROVEEDOR R, BODEGA B, TERCEROS T, PREFIJOS P
        WHERE R.BODE_COD = B.BODE_COD AND T.TERC_NIT = R.TERC_NIT AND R.PREF_PRE >= :PREINI AND R.PREF_PRE <= :PREFIN AND REPR_NUMERO >= :NUMINI AND REPR_NUMERO <= :NUMFIN
         AND P.PREF_PRE = R.PREF_PRE AND P.TIDO_COD = 22 AND ((P.SUCU_ID = :SUBEMPRESA) or (:SUBEMPRESA = 0))
        ORDER BY R.PREF_PRE, REPR_NUMERO
        INTO :ID, :PREF, :NUMERO, :FECHA, :VENCE, :CODBOD, :NOMBOD, :NIT, :NOMTERCERO, :NUMPROV, :ORDEN, :COTIZACI, :REMISION, :DTOPOR, :DTOMONTO, :ADICIONAL, :IVAMONTO, :RTFTEPOR, :RTFTEMONTO, :RTIVAPOR, :RTIVAMONTO, :RTICAPOR, :RTICAMONTO, :EXTRA, :DTOFPOR, :DTOFMONTO, :DTOFFECHA, :TOTAL, :ANULADO, :simplifica, :aprobado
        DO
        BEGIN
        CANTINSP = 0;
        if ((ANULADOS = 'S') or (ANULADO = 'N')) then
            BEGIN
            if (anulado = 'S') then
                BEGIN
                DTOPOR = 0;
                DTOMONTO = 0;
                ADICIONAL = 0;
                IVAMONTO = 0;
                RTFTEPOR = 0;
                RTFTEMONTO = 0;
                RTIVAPOR = 0;
                RTIVAMONTO = 0;
                RTICAPOR = 0;
                RTICAMONTO = 0;
                EXTRA = 0;
                DTOFPOR = 0;
                DTOFMONTO = 0;
                TOTAL = 0;
                END
            if (DETALLE = 'S') then
                BEGIN
                if (anulado = 'S') then
                    BEGIN
                    ITEM = 0;
                    ARTICULO = '';
                    CODBAR = '';
                    ARTIDES = '';
                    CANT = 0;
                    UNIDAD = '';
                    BODITEM = '';
                    LOTE = '';
                    REFERENCIA = '';
                    PRECIO = 0;
                    DTOPORCIT = 0;
                    DTOMONTOIT = 0;
                    IVAPORCIT = 0;
                    IVAMONTOIT = 0;
                    CONSUMOIT = 0;
                    SUBTOTALIT = 0;
                    BASEIT = 0;
                    SUSPEND;
                    END
                ELSE
                    BEGIN
                     FOR SELECT RPVD_ITEM, ARTI_COD, RPVD_CODBAR, RPVD_DESC, RPVD_CANT, RPVD_UNIDAD, BODE_COD, RPVD_LOTE, '', RPVD_PRUNIT, RPVD_DTOPORC, RPVD_DTOMONTO, RPVD_IVAPORC,
                        RPVD_IVAMONTO, RPVD_CONSUMO, RPVD_TOTAL, RPVD_TOTAL - RPVD_IVAMONTO, RPVD_NIVINS, RPVD_MUESTRA
                        FROM REMISION_PROVEEDOR_DET
                         WHERE REPR_ID = :ID
                        ORDER BY RPVD_ITEM
                        INTO :ITEM, :ARTICULO, :CODBAR, :ARTIDES, :CANT, :UNIDAD, :BODITEM, :LOTE, :REFERENCIA, :PRECIO, :DTOPORCIT, :DTOMONTOIT, :IVAPORCIT,
                            :IVAMONTOIT, :CONSUMOIT, :SUBTOTALIT, :BASEIT, :nivelinsp, :cantinsp
                        DO
                        BEGIN
                        SUSPEND;
                        END
                    END
                END
            ELSE
                BEGIN
                SUSPEND;
                END
            END
        END
    END
  if (BIN_AND(TIPO, 4) <> 0) then
    BEGIN
    SELECT TIDO_NOMLARGO FROM TIPO_DOCUMENTO WHERE TIDO_COD = 24 INTO :NOMTIPO;
    /* DEVOLUCIONES */
    FOR SELECT DVCO_ID, D.PREF_PRE, DVCO_NUMERO, DVCO_FECHA, DVCO_FECHA, D.BODE_COD, B.BODE_NOM, D.TERC_NIT, TERC_NOM, '', '', '', DVCO_FACTURA, DVCO_DTOPORC, DVCO_DTOMONTO, DVCO_ADICIONAL,
        DVCO_IVAMONTO, DVCO_RTFTEPORC, DVCO_RTFTEMONTO, DVCO_RTIVAPORC, DVCO_RTIVAMONTO, DVCO_RTICAPORC, DVCO_RTICAMONTO, DVCO_EXTRA, 0, 0, DVCO_FECHA, DVCO_TOTAL,
        DVCO_ANULADO, DVCO_SIMPLIFICADO, DVCO_TRM, 'S'
        FROM DEVOLUCIONES_COMPRAS D, BODEGA B, TERCEROS T, PREFIJOS P
        WHERE D.BODE_COD = B.BODE_COD AND D.TERC_NIT = T.TERC_NIT AND D.PREF_PRE >= :PREINI AND D.PREF_PRE <= :PREFIN AND DVCO_NUMERO >= :NUMINI AND DVCO_NUMERO <= :NUMFIN
         AND P.PREF_PRE = D.PREF_PRE AND P.TIDO_COD = 24 AND ((P.SUCU_ID = :SUBEMPRESA) or (:SUBEMPRESA = 0))
        ORDER BY D.PREF_PRE, DVCO_NUMERO
        INTO :ID, :PREF, :NUMERO, :FECHA, :VENCE, :CODBOD, :NOMBOD, :NIT, :NOMTERCERO, :NUMPROV, :ORDEN, :COTIZACI, :REMISION, :DTOPOR, :DTOMONTO, :ADICIONAL,
            :IVAMONTO, :RTFTEPOR, :RTFTEMONTO, :RTIVAPOR, :RTIVAMONTO, :RTICAPOR, :RTICAMONTO, :EXTRA, :DTOFPOR, :DTOFMONTO, :DTOFFECHA, :TOTAL, :ANULADO, :simplifica, :TRM, :aprobado
        DO
        BEGIN
        CANTINSP = 0;
        if ((ANULADOS = 'S') or (ANULADO = 'N')) then
            BEGIN
            if (anulado = 'S') then
                BEGIN
                DTOPOR = 0;
                DTOMONTO = 0;
                ADICIONAL = 0;
                IVAMONTO = 0;
                RTFTEPOR = 0;
                RTFTEMONTO = 0;
                RTIVAPOR = 0;
                RTIVAMONTO = 0;
                RTICAPOR = 0;
                RTICAMONTO = 0;
                EXTRA = 0;
                DTOFPOR = 0;
                DTOFMONTO = 0;
                TOTAL = 0;
                END
            if (DETALLE = 'S') then
                BEGIN
                if (anulado = 'S') then
                    BEGIN
                    ITEM = 0;
                    ARTICULO = '';
                    CODBAR = '';
                    ARTIDES = '';
                    CANT = 0;
                    UNIDAD = '';
                    BODITEM = '';
                    LOTE = '';
                    REFERENCIA = '';
                    PRECIO = 0;
                    DTOPORCIT = 0;
                    DTOMONTOIT = 0;
                    IVAPORCIT = 0;
                    IVAMONTOIT = 0;
                    CONSUMOIT = 0;
                    SUBTOTALIT = 0;
                    BASEIT = 0;
                    SUSPEND;
                    END
                ELSE
                    BEGIN
                     FOR SELECT DVCD_ITEM, ARTI_COD, DVCD_CODBAR, DVCD_DESC, DVCD_CANT, DVCD_UNIDAD, BODE_COD, DVCD_LOTE, '', DVCD_PRUNIT, DVCD_DTOPORC, DVCD_DTOMONTO, DVCD_IVAPORC, DVCD_IVAMONTO, DVCD_CONSUMO, DVCD_TOTAL, DVCD_TOTAL - DVCD_IVAMONTO
                         FROM DEVOLUCIONES_COMPRAS_DET
                         WHERE DVCO_ID = :ID
                         ORDER BY DVCD_ITEM
                         INTO :ITEM, :ARTICULO, :CODBAR, :ARTIDES, :CANT, :UNIDAD, :BODITEM, :LOTE, :REFERENCIA, :PRECIO, :DTOPORCIT, :DTOMONTOIT, :IVAPORCIT, :IVAMONTOIT, :CONSUMOIT, :SUBTOTALIT, :BASEIT
                         DO
                        BEGIN
                        SELECT ARTI_INVIMA, ARTI_NIVINS FROM ARTICULO WHERE ARTI_COD = :ARTICULO INTO :INVIMA, :nivelinsp;
                        if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                            BEGIN
                            PRECIO = PRECIO / TRM;
                            DTOMONTOIT = DTOMONTOIT / TRM;
                            IVAMONTOIT = IVAMONTOIT / TRM;
                            CONSUMOIT = CONSUMOIT / TRM;
                            SUBTOTALIT = SUBTOTALIT / TRM;
                            BASEIT = BASEIT / TRM;
                            END
                        SUSPEND;
                        END
                    END
                END
            ELSE
                BEGIN
                if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                    BEGIN
                    DTOMONTO = DTOMONTO / TRM;
                    ADICIONAL = ADICIONAL / TRM;
                    IVAMONTO = IVAMONTO / TRM;
                    EXTRA = EXTRA / TRM;
                    DTOFMONTO = DTOFMONTO / TRM;
                    TOTAL = TOTAL / TRM;
                    END
                SUSPEND;
                END
            END
        END
    END
  if (BIN_AND(TIPO, 8) <> 0) then
    BEGIN
    SELECT TIDO_NOMLARGO FROM TIPO_DOCUMENTO WHERE TIDO_COD = 23 INTO :NOMTIPO;
    /* ORDEN */
    FOR SELECT ORDC_ID, O.PREF_PRE, ORDC_NUMERO, ORDC_FECHA, ORDC_FECHA + ORDC_VALIDEZ, O.BODE_COD, B.BODE_NOM, O.TERC_NIT, TERC_NOM, '', '', ORDC_COTIZACION, '', ORDC_DTOPORC, ORDC_DTOMONTO,
        ORDC_ADICIONAL, ORDC_IVAMONTO, 0, 0, 0, 0, 0, 0, ORDC_EXTRA, 0, 0, ORDC_FECHA, ORDC_TOTAL, ORDC_ANULADO, ORDC_SIMPLIFICADO, ORDC_APROBADO
        FROM ORDENES_COMPRA O, BODEGA B, TERCEROS T, PREFIJOS P
        WHERE O.BODE_COD = B.BODE_COD AND O.TERC_NIT = T.TERC_NIT AND O.PREF_PRE >= :PREINI AND O.PREF_PRE <= :PREFIN AND ORDC_NUMERO >= :NUMINI AND ORDC_NUMERO <= :NUMFIN
         AND P.PREF_PRE = O.PREF_PRE AND P.TIDO_COD = 23 AND ((P.SUCU_ID = :SUBEMPRESA) or (:SUBEMPRESA = 0))
        ORDER BY O.PREF_PRE, ORDC_NUMERO
        INTO :ID, :PREF, :NUMERO, :FECHA, :VENCE, :CODBOD, :NOMBOD, :NIT, :NOMTERCERO, :NUMPROV, :ORDEN, :COTIZACI, :REMISION, :DTOPOR, :DTOMONTO,
            :ADICIONAL, :IVAMONTO, :RTFTEPOR, :RTFTEMONTO, :RTIVAPOR, :RTIVAMONTO, :RTICAPOR, :RTICAMONTO, :EXTRA, :DTOFPOR, :DTOFMONTO, :DTOFFECHA, :TOTAL, :ANULADO, :simplifica, :aprobado
        DO
        BEGIN
        CANTINSP = 0;
        if ((ANULADOS = 'S') or (ANULADO = 'N')) then
            BEGIN
            if (anulado = 'S') then
                BEGIN
                DTOPOR = 0;
                DTOMONTO = 0;
                ADICIONAL = 0;
                IVAMONTO = 0;
                RTFTEPOR = 0;
                RTFTEMONTO = 0;
                RTIVAPOR = 0;
                RTIVAMONTO = 0;
                RTICAPOR = 0;
                RTICAMONTO = 0;
                EXTRA = 0;
                DTOFPOR = 0;
                DTOFMONTO = 0;
                TOTAL = 0;
                END
            if (DETALLE = 'S') then
                BEGIN
                if (anulado = 'S') then
                    BEGIN
                    ITEM = 0;
                    ARTICULO = '';
                    CODBAR = '';
                    ARTIDES = '';
                    CANT = 0;
                    UNIDAD = '';
                    BODITEM = '';
                    LOTE = '';
                    REFERENCIA = '';
                    PRECIO = 0;
                    DTOPORCIT = 0;
                    DTOMONTOIT = 0;
                    IVAPORCIT = 0;
                    IVAMONTOIT = 0;
                    CONSUMOIT = 0;
                    SUBTOTALIT = 0;
                    BASEIT = 0;
                    SUSPEND;
                    END
                ELSE
                    BEGIN
                     FOR SELECT OCDE_ITEM, ARTI_COD, OCDE_CODBAR, OCDE_DESC, OCDE_CANT, OCDE_UNIDAD, '', '', '', OCDE_PRUNIT, OCDE_DTOPORC, OCDE_DTOMONTO, OCDE_IVAPORC, OCDE_IVAMONTO, OCDE_CONSUMO, OCDE_TOTAL, OCDE_TOTAL - OCDE_IVAMONTO
                        FROM ORDENES_COMPRA_DETALLE
                        WHERE ORDC_ID = :ID
                        ORDER BY OCDE_ITEM
                        INTO :ITEM, :ARTICULO, :CODBAR, :ARTIDES, :CANT, :UNIDAD, :BODITEM, :LOTE, :REFERENCIA, :PRECIO, :DTOPORCIT, :DTOMONTOIT, :IVAPORCIT, :IVAMONTOIT, :CONSUMOIT, :SUBTOTALIT, :BASEIT
                        DO
                        BEGIN
                        SELECT ARTI_INVIMA, ARTI_NIVINS FROM ARTICULO WHERE ARTI_COD = :ARTICULO INTO :INVIMA, :nivelinsp;
                        SUSPEND;
                        END
                    END
                END
            ELSE
                BEGIN
                SUSPEND;
                END
            END
        END
    END
  if (BIN_AND(TIPO, 16) <> 0) then
    BEGIN
    SELECT TIDO_NOMLARGO FROM TIPO_DOCUMENTO WHERE TIDO_COD = 25 INTO :NOMTIPO;
    /* COTIZACION */
    FOR SELECT COPR_ID, C.PREF_PRE, COPR_NUMERO, COPR_FECHA, COPR_FECHA, C.BODE_COD, BODE_NOM, C.TERC_NIT, TERC_NOM, '', '', '', '', COPR_DTOPORC, COPR_DTOMONTO, COPR_ADICIONAL, COPR_IVAMONTO,
        0, 0, 0, 0, 0, 0, COPR_EXTRA, 0, 0, COPR_FECHA, COPR_TOTAL, COPR_ANULADO, 'S'
        FROM COTIZACION_PROVEEDOR C, BODEGA B, TERCEROS T, PREFIJOS P
        WHERE C.BODE_COD = B.BODE_COD AND C.TERC_NIT = T.TERC_NIT AND C.PREF_PRE >= :PREINI AND C.PREF_PRE <= :PREFIN AND COPR_NUMERO >= :NUMINI AND COPR_NUMERO <= :NUMFIN
         AND P.PREF_PRE = C.PREF_PRE AND P.TIDO_COD = 25 AND ((P.SUCU_ID = :SUBEMPRESA) or (:SUBEMPRESA = 0))
        ORDER BY C.PREF_PRE, COPR_NUMERO
        INTO :ID, :PREF, :NUMERO, :FECHA, :VENCE, :CODBOD, :NOMBOD, :NIT, :NOMTERCERO, :NUMPROV, :ORDEN, :COTIZACI, :REMISION, :DTOPOR, :DTOMONTO, :ADICIONAL, :IVAMONTO,
            :RTFTEPOR, :RTFTEMONTO, :RTIVAPOR, :RTIVAMONTO, :RTICAPOR, :RTICAMONTO, :EXTRA, :DTOFPOR, :DTOFMONTO, :DTOFFECHA, :TOTAL, :ANULADO, :aprobado
        DO
        BEGIN
        CANTINSP = 0;
        if ((ANULADOS = 'S') or (ANULADO = 'N')) then
            BEGIN
            if (anulado = 'S') then
                BEGIN
                DTOPOR = 0;
                DTOMONTO = 0;
                ADICIONAL = 0;
                IVAMONTO = 0;
                RTFTEPOR = 0;
                RTFTEMONTO = 0;
                RTIVAPOR = 0;
                RTIVAMONTO = 0;
                RTICAPOR = 0;
                RTICAMONTO = 0;
                EXTRA = 0;
                DTOFPOR = 0;
                DTOFMONTO = 0;
                TOTAL = 0;
                END
            if (DETALLE = 'S') then
                BEGIN
                if (anulado = 'S') then
                    BEGIN
                    ITEM = 0;
                    ARTICULO = '';
                    CODBAR = '';
                    ARTIDES = '';
                    CANT = 0;
                    UNIDAD = '';
                    BODITEM = '';
                    LOTE = '';
                    REFERENCIA = '';
                    PRECIO = 0;
                    DTOPORCIT = 0;
                    DTOMONTOIT = 0;
                    IVAPORCIT = 0;
                    IVAMONTOIT = 0;
                    CONSUMOIT = 0;
                    SUBTOTALIT = 0;
                    BASEIT = 0;
                    SUSPEND;
                    END
                ELSE
                    BEGIN
                      FOR SELECT CPRD_ITEM, ARTI_COD, CPRD_CODBAR, CPRD_DESC, CPRD_CANT, CPRD_UNIDAD, BODE_COD, '', '', CPRD_PRUNIT, CPRD_DTOPORC, CPRD_DTOMONTO, CPRD_IVAPORC, CPRD_IVAMONTO, CPRD_CONSUMO, CPRD_TOTAL, CPRD_TOTAL - CPRD_IVAMONTO
                         FROM COTIZACIONES_PROVEEDOR_DET
                         WHERE COPR_ID = :ID
                         ORDER BY CPRD_ITEM
                         INTO :ITEM, :ARTICULO, :CODBAR, :ARTIDES, :CANT, :UNIDAD, :BODITEM, :LOTE, :REFERENCIA, :PRECIO, :DTOPORCIT, :DTOMONTOIT, :IVAPORCIT, :IVAMONTOIT, :CONSUMOIT, :SUBTOTALIT, :BASEIT
                         DO
                        BEGIN
                        SELECT ARTI_INVIMA, ARTI_NIVINS FROM ARTICULO WHERE ARTI_COD = :ARTICULO INTO :INVIMA, :nivelinsp;
                        if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                            BEGIN
                            PRECIO = PRECIO / TRM;
                            DTOMONTOIT = DTOMONTOIT / TRM;
                            IVAMONTOIT = IVAMONTOIT / TRM;
                            CONSUMOIT = CONSUMOIT / TRM;
                            SUBTOTALIT = SUBTOTALIT / TRM;
                            BASEIT = BASEIT / TRM;
                            END
                        SUSPEND;
                        END
                    END
                END
            ELSE
                BEGIN
                if ((MONEDA <> 0) AND (TRM <> 1) AND (TRM <> 0)) then
                    BEGIN
                    DTOMONTO = DTOMONTO / TRM;
                    ADICIONAL = ADICIONAL / TRM;
                    IVAMONTO = IVAMONTO / TRM;
                    EXTRA = EXTRA / TRM;
                    DTOFMONTO = DTOFMONTO / TRM;
                    TOTAL = TOTAL / TRM;
                    END
                SUSPEND;
                END
            END
        END
    END
END^

SET TERM ; ^

ALTER TABLE NOTAS_DOCUMENTO
  ADD NODO_ITEM T_ID;

SET TERM ^ ;

CREATE OR ALTER procedure BUSQUEDA_NOTASDOC (
    TIPO integer,
    IDDOC integer)
returns (
    ID integer,
    USUARIO varchar(10),
    FECHA date,
    HORA time,
    item integer,
    TIPONOTA varchar(60),
    RESUMEN varchar(60),
    IMAGEN blob sub_type BINARY segment size 8192,
    TEXTO blob sub_type TEXT segment size 80)
as
begin
for select n.nodo_id, n.nodo_user, n.nodo_fecha, n.nodo_hora, t.tind_nombre, n.nodo_texto, n.nodo_resumen, n.nodo_archivo, n.nodo_item
    from notas_documento n, tipo_notadoc t
    where t.tind_id = n.nodo_tipo and n.tido_cod = :tipo and n.nodo_iddoc = :iddoc
    order by n.nodo_tipo, n.nodo_fecha
    into :id, :usuario, :fecha, :hora, :tiponota, :texto, :resumen, :imagen, :item
    do
    suspend;
end^

SET TERM ; ^



