IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_gen_bco_ACH_bogota_ni') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_gen_bco_ACH_bogota_ni
GO
CREATE PROCEDURE sp_fco_gen_bco_ACH_bogota_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por ACH para NI                         ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Marzo 17/2005                                         ***/
/********************************************************************/
--OCT-01-05: DCR, Pasada a SQL de Oracle
DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vdt_fecha_hoy smalldatetime,
@vch_agr_id    char(10),
@vch_agr_cta   char(10)
     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

	SELECT @vdt_fecha_hoy = getdate()
  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = 'TIPO_DOC'
  SET @vch_agr_cta = 'TIPO_CTA'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, '0', '0'
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN '02' WHEN '02' THEN '04' WHEN '04' THEN '01' WHEN '05' THEN '03' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = LTRIM(RTRIM(a.dato))
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

    --armamos la estructura del archivo plano. La cabeza
--Aqui queda el valor de cuenta, tipo cuenta de la ultima cia recorrida
    INSERT INTO
      fdt_bancos_mm (id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT
      @psi_id_rep, @pvc_usuario, @pti_banco, 1, 1,
      '1' +
      CONVERT(char(8), @vdt_fecha_hoy, 112) +
      REPLICATE('0', 24) +
      ISNULL(@vti_tipo_cta,0) +
      REPLICATE('0', 8) +
			REPLICATE('0', 9 - LEN(LTRIM(RTRIM(@vvc_cuenta_bco)))) + LTRIM(RTRIM(@vvc_cuenta_bco)) +
			LTRIM(RTRIM(nombre_cia)) + SPACE(40 - LEN(LTRIM(RTRIM(nombre_cia)))) +
			REPLICATE('0', 11 - LEN(LTRIM(RTRIM(REPLACE(ISNULL(registro_fiscal,'0'),'-',''))))) + LTRIM(RTRIM(REPLACE(ISNULL(registro_fiscal,'0'),'-',''))) +
      '001' +
      '0001' +
      CONVERT(char(8), @pdt_fecha, 112) +
			REPLICATE('0', 3 - LEN(SUBSTRING(LTRIM(RTRIM(ISNULL(@vvc_cuenta_bco,'0'))), 1, 3))) + SUBSTRING(LTRIM(RTRIM(ISNULL(@vvc_cuenta_bco,'0'))), 1, 3) +
      'N' +
      REPLICATE(' ', 49) +
      REPLICATE(' ', 80)
    FROM
      companias
    WHERE
      compania IN (SELECT DISTINCT compania FROM ri_procesar WHERE id_rep = @psi_id_rep AND usuariow = @pvc_usuario)
  
  --Ahora el detalle
    INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 2, 
    '2' +
		SUBSTRING(LTRIM(ISNULL(tns.tipo_doc,'C')), 1, 1) +
		REPLICATE('0', 11 - LEN(SUBSTRING(LTRIM(t.clave_unica), 1, 11))) + SUBSTRING(LTRIM(t.clave_unica), 1, 11) +
		REPLACE(LTRIM(RTRIM(t.nombre)), '/' , ' ') + SPACE(40 - LEN(REPLACE(LTRIM(RTRIM(t.nombre)), '/' , ' '))) +
    '0' +
    RTRIM(LTRIM(tns.tipo_cuenta)) +
		SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 17) + SPACE(17 - LEN(SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 17))) +
		REPLICATE('0', 18 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(ISNULL(tns.importe,0))))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(ISNULL(tns.importe,0))))) + 
    'A' +
    '000' +
	  RTRIM(LTRIM(ISNULL(tns.ins_dep,'0'))) +
    '0001' +
    REPLICATE(' ', 10) +
		'PAGO DE NOMINA' + SPACE(70 - LEN('PAGO DE NOMINA')) +
    '0' +
    REPLICATE('0', 10) +
    'N' +
    REPLICATE(' ', 48) +
    'N' +
    REPLICATE(' ', 8)
    FROM trabajadores t , fdt_bancos_tmp tns
    WHERE t.trabajador = tns.trabajador
    AND tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

END
GO
GRANT EXECUTE ON dbo.sp_fco_gen_bco_ACH_bogota_ni TO PUBLIC
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_gen_bco_ACH_gnbs_ni') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_gen_bco_ACH_gnbs_ni
GO
CREATE PROCEDURE sp_fco_gen_bco_ACH_gnbs_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por ACH del GNBSudameris                ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Sept 16/2005                                         ***/
/********************************************************************/
DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vch_agr_id    char(10),
@vch_agr_cta   char(10)
     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = 'TIPO_DOC'
  SET @vch_agr_cta = 'TIPO_CTA'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, '0', '0'
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN '02' WHEN '02' THEN '04' WHEN '04' THEN '01' WHEN '05' THEN '03' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = LTRIM(RTRIM(a.dato))
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  SET @vvc_mensaje = 'PAGO NOMINA INTERACTIVA'

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

  --hallando la maxima compañia que esta en ri_liq_procesar
  SELECT @cch_compania = MAX(compania)
  FROM ri_liq_procesar
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  -- Trayendo al informacion del banco      
	SELECT 
	@vch_simb_mon = b.simbolo_moneda, 
	@vti_tipo_cta = b.tipo_cta, 
	@vvc_cuenta_bco = b.cuenta, 
	@vvc_oficina_cta = b.oficina_cta, 
	@vvc_registro_fiscal = b.registro_fiscal
	FROM fdt_bancos a, fdt_bancos_cias_datos b
	WHERE a.banco = b.banco AND
	b.compania = @cch_compania AND
	a.banco = @pti_banco

	SET @vti_tipo_cta = ISNULL(@vti_tipo_cta, 1)
	SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco, 0)

		--Armamos la estructura que necesita el banco.
		--Esta estructura la personalizo asi el banco, puede que otro banco la personalice diferente
		--El orden de los campos es el mismo, solo cambia el tamaño.

		INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
		SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 1,
		REPLICATE(' ', 16 - LEN (LTRIM(RTRIM(@vvc_cuenta_bco)))) + LTRIM(RTRIM(@vvc_cuenta_bco)) + --nro de cuenta a debitar
		REPLICATE(' ', 2 - LEN (LTRIM(RTRIM(@vti_tipo_cta)))) + LTRIM(RTRIM(@vti_tipo_cta)) + --tipo de cuenta
		SUBSTRING(LTRIM(RTRIM(tns.ins_dep)),1, 6) + SPACE(6 - LEN(LTRIM(RTRIM(tns.ins_dep)))) + --codigo del banco a acreditar
--		SUBSTRING(LTRIM(RTRIM(tns.cuenta_dep)), 1, LEN(LTRIM(RTRIM(tns.cuenta_dep))) - 1) + SPACE(16 - LEN(SUBSTRING(LTRIM(RTRIM(tns.cuenta_dep)), 1, LEN(LTRIM(RTRIM(tns.cuenta_dep))) - 1))) + --Nro de cuenta a acreditar
--		CASE RIGHT(LTRIM(RTRIM(tns.cuenta_dep)),1) WHEN 'D' THEN ' 1' WHEN 'S' THEN ' 2' ELSE ' 2' END + --tipo de cuenta a acreditar
		LTRIM(RTRIM(tns.cuenta_dep)) + SPACE (16 - LEN(LTRIM(RTRIM(tns.cuenta_dep)))) + --Nro de cuenta a acreditar
		REPLICATE(' ', 2 - LEN(LTRIM(RTRIM(tns.tipo_cuenta)))) + LTRIM(RTRIM(tns.tipo_cuenta)) + --tipo de cuenta a acreditar		REPLICATE(' ', 12 - LEN (SUBSTRING(LTRIM(RTRIM(ISNULL(t.clave_unica,''))), 1, 12))) + SUBSTRING(LTRIM(RTRIM(ISNULL(t.clave_unica,''))), 1, 12) + --nro de identificacion del destinatario
		SUBSTRING(LTRIM(RTRIM(REPLACE(t.nombre, '/', ' '))),1, 34) + SPACE(35 - LEN(SUBSTRING(LTRIM(RTRIM(REPLACE(t.nombre, '/', ' '))),1, 34))) + --nombre del destinatario de pago
		REPLICATE(' ', 15 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))) +  --Importe, parte entera
		SUBSTRING(LTRIM(RTRIM(@vvc_mensaje)), 1, 80) + SPACE(80 - LEN(SUBSTRING(LTRIM(RTRIM(@vvc_mensaje)), 1, 80))) + --descripcion del pago
		SUBSTRING(LTRIM(RTRIM(ISNULL(t.e_mail,''))), 1, 80) + SPACE(80 - LEN(SUBSTRING(LTRIM(RTRIM(ISNULL(t.e_mail,''))), 1, 80))) --direccion de correo valida
		FROM fdt_bancos_tmp tns, trabajadores t
		WHERE tns.trabajador = t.trabajador 
		AND tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tns.tipo = 2
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

END
GO
GRANT EXECUTE ON dbo.sp_fco_gen_bco_ACH_gnbs_ni TO PUBLIC
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_gen_bco_ACH_occi_ni') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_gen_bco_ACH_occi_ni
GO
CREATE PROCEDURE sp_fco_gen_bco_ACH_occi_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por ACH para NI                         ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Marzo 17/2005                                         ***/
/********************************************************************/
--OCT-01-05: DCR, Pasada a SQL de Oracle
DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vch_agr_id    char(10),
@vch_agr_cta   char(10),

@vvc_comprobante varchar(10),
@vvc_nombre_cia varchar(60)
     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = 'TIPO_DOC'
  SET @vch_agr_cta = 'TIPO_CTA'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, '0', '0'
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN '02' WHEN '02' THEN '04' WHEN '04' THEN '01' WHEN '05' THEN '03' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = LTRIM(RTRIM(a.dato))
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

		--trayendo el nombre del cia:
		SET @vvc_nombre_cia = ''
		
		SELECT @vvc_nombre_cia = nombre_cia
		FROM companias
		WHERE compania = @cch_compania
      
		SET @vvc_comprobante =  '00' + LTRIM(RTRIM(DATEPART(YEAR, @pdt_fecha))) +
													  CASE LEN(LTRIM(RTRIM(DATEPART(MONTH, @pdt_fecha)))) WHEN 1 THEN '0'+LTRIM(RTRIM(DATEPART(MONTH, @pdt_fecha))) 
																																 WHEN 2 THEN LTRIM(RTRIM(DATEPART(MONTH, @pdt_fecha))) END

		--como se maneja un consecutivo, debemos hacer uso de una tabla temporal
		SELECT tns.trabajador, IDENTITY(smallint, 1, 1) as secuencia
		INTO #tmp_sec_bco
		FROM fdt_bancos_tmp tns
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2      

  --Ahora el detalle
    INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, Abs(sec.secuencia)+1, 
    '2' + --constante
		REPLICATE('0', 4 - LEN(ABS(sec.secuencia))) + Abs(sec.secuencia) + --consecutivo
		REPLICATE('0', 16 - LEN(ISNULL(@vvc_cuenta_bco,'0'))) + ISNULL(@vvc_cuenta_bco,'0') + --cuenta del banco
		REPLACE(LTRIM(RTRIM(t.nombre)), '/' , ' ') + SPACE(30 - LEN(REPLACE(LTRIM(RTRIM(t.nombre)), '/' , ' '))) + --nombre del trabajador
		REPLICATE('0', 11 - LEN(SUBSTRING(LTRIM(t.clave_unica), 1, 11))) + SUBSTRING(LTRIM(t.clave_unica), 1, 11) + --cedula
		REPLICATE('0', 4 - LEN(RTRIM(tns.ins_dep))) + RTRIM(tns.ins_dep) + --codigo del banco
    CONVERT(CHAR(8), @pdt_fecha, 112) + --fecha digitada en el front
		CASE LTRIM(RTRIM(tns.ins_dep)) WHEN '023' THEN '2' ELSE '3' END + --forma de pago
		REPLICATE('0', 15 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))) +  --Importe, parte entera
		SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 2, 16) + SPACE(16 - LEN(SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 2, 16))) + --cuenta deposito
		LTRIM(RTRIM(@vvc_comprobante)) + REPLICATE('0', 4 - LEN(ABS(sec.secuencia))) + Abs(sec.secuencia) + --comprobante
    SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 1) + --tipo de cuenta
    ('Nomina ' + LTRIM(RTRIM(@vvc_nombre_cia))) + SPACE(80- LEN(('Nomina ' + LTRIM(RTRIM(@vvc_nombre_cia)))))
    FROM trabajadores t , fdt_bancos_tmp tns, #tmp_sec_bco sec
    WHERE t.trabajador = tns.trabajador
		AND tns.trabajador = sec.trabajador
    AND tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2      
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

  --insertamos la cabeza
  INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
  SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 1, 
  '10000' + --constante
  CONVERT(CHAR(8), @pdt_fecha, 112) + --fecha digitada en el front
  REPLICATE('0', 4 - LEN(LTRIM(RTRIM(@vsi_nro_trab)))) + LTRIM(RTRIM(@vsi_nro_trab)) + --total registros del detalle
	REPLICATE('0', 18 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))) + --valor total del detalle
	REPLICATE('0', 16 - LEN(ISNULL(@vvc_cuenta_bco,'0'))) + ISNULL(@vvc_cuenta_bco,'0') + --cuenta del banco
  REPLICATE('0', 148)
  
  --insertamos el pie
  INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
  SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, Abs(@vsi_nro_trab)+2, 
  '39999' + --constante
  REPLICATE('0', 4 - LEN(LTRIM(RTRIM(@vsi_nro_trab)))) + LTRIM(RTRIM(@vsi_nro_trab)) + --total registros del detalle
	REPLICATE('0', 18 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))) + --valor total del detalle  
  REPLICATE('0', 172)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

	DROP TABLE #tmp_sec_bco

END
GO
GRANT EXECUTE ON dbo.sp_fco_gen_bco_ACH_occi_ni TO PUBLIC
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_gen_bco_avvillas_ni') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_gen_bco_avvillas_ni
GO
CREATE PROCEDURE dbo.sp_fco_gen_bco_avvillas_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por avvillas para NI                    ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Marzo 18/2005                                         ***/
/********************************************************************/
--OCT-01-05: DCR, Pasada a SQL de Oracle
DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vch_agr_id    char(10),
@vch_agr_cta   char(10),
@vdt_fecha_hoy	smalldatetime
     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

--  Fecha Actual
	SET @vdt_fecha_hoy = getdate()

  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = 'TIPO_DOC'
  SET @vch_agr_cta = 'TIPO_CTA'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, '0', '0'
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN '02' WHEN '02' THEN '04' WHEN '04' THEN '01' WHEN '05' THEN '03' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = LTRIM(RTRIM(a.dato))
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

  --hallando la maxima compañia que esta en ri_liq_procesar
  SELECT @cch_compania = MAX(compania)
  FROM ri_liq_procesar
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  -- Trayendo al informacion del banco      
	SELECT 
	@vch_simb_mon = b.simbolo_moneda, 
	@vti_tipo_cta = b.tipo_cta, 
	@vvc_cuenta_bco = b.cuenta, 
	@vvc_oficina_cta = b.oficina_cta, 
	@vvc_registro_fiscal = b.registro_fiscal
	FROM fdt_bancos a, fdt_bancos_cias_datos b
	WHERE a.banco = b.banco AND
	b.compania = @cch_compania AND
	a.banco = @pti_banco

	SET @vti_tipo_cta = ISNULL(@vti_tipo_cta, 1)
	SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco, 0)

		--como se maneja un consecutivo, debemos hacer uso de una tabla temporal
		SELECT tns.trabajador, IDENTITY(smallint, 1, 1) as secuencia
		INTO #tmp_sec_bco
		FROM fdt_bancos_tmp tns
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2      

		--utilizamos fijo la secuencia 1 del archivo de mm
		--registro de cabeza
		INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
		SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 1,
		'01' +
		CONVERT(CHAR(8), @pdt_fecha, 112) +
		CONVERT(CHAR(8), @vdt_fecha_hoy, 108) +
		REPLICATE('0', 3 - LEN(SUBSTRING(ISNULL(@vvc_oficina_cta,'088'), 1, 3))) + SUBSTRING(ISNULL(@vvc_oficina_cta,'088'), 1, 3)+  --grabar 088
		'02' +
		'PAGO DE NOMINA' + SPACE(50 - LEN('PAGO DE NOMINA'))
        
  --Ahora el detalle
    INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, sec.secuencia+1,
    '02' + --tipo de registro
    '000023' + --pago de nomina
    '01' + --producto de origen
		REPLICATE('0', 16 - LEN(ISNULL(@vvc_cuenta_bco,'0'))) + ISNULL(@vvc_cuenta_bco,'0') + --cuenta de la empresa
    '052' + --codigo de compensacion del bco destino
    '01' + --producto destino
		REPLICATE('0', 16 - LEN(SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 16))) + SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 16) + --cuenta destino
		REPLICATE('0', 9 - LEN(LTRIM(RTRIM(sec.secuencia)))) + LTRIM(RTRIM(sec.secuencia)) + --secuencia
		REPLICATE('0', 16 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))) + --valor a transferir
    REPLICATE('0', 16) + --numero de factura
    REPLICATE('0', 16) + --numero de credito de libranza
    REPLICATE('0', 16) + --valor credito de libranza
    REPLICATE('0', 30) + --nombre del beneficiario
    REPLICATE('0', 11) + --nit del beneficiario
    REPLICATE('0', 6) + --numero de autorizacion
    REPLICATE('0', 2) + --codigo de respuesta
    REPLICATE('0', 20)  --filler
    FROM fdt_bancos_tmp tns, #tmp_sec_bco sec
    WHERE tns.trabajador = sec.trabajador
    AND tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2      
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2

		INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
		SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 999999,
		'03' + --tipo de registro
		REPLICATE('0', 9 - LEN(LTRIM(RTRIM(@vsi_nro_trab)))) + LTRIM(RTRIM(@vsi_nro_trab)) + 
		REPLICATE('0', 18 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))) --valor total del detalle  
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

	DROP TABLE #tmp_sec_bco

END
GO
GRANT EXECUTE ON dbo.sp_fco_gen_bco_avvillas_ni TO PUBLIC
GO
if object_id('dbo.sp_fco_gen_bco_colmena_ni') is not null
    drop procedure dbo.sp_fco_gen_bco_colmena_ni
go
CREATE PROCEDURE dbo.sp_fco_gen_bco_colmena_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por colmena para NI                     ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Marzo 21/2005                                         ***/
/********************************************************************/
--OCT-01-05: DCR, Pasada a SQL de Oracle
DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vch_agr_id    char(10),
@vch_agr_cta   char(10)
     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = '01.IDENTIF'
  SET @vch_agr_cta = 'TIPO_CUENT'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, '0', '0'
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN '02' WHEN '02' THEN '04' WHEN '04' THEN '01' WHEN '05' THEN '03' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

				--DCRP, Nov25/2005, parece que no siempre esta en una agrupacion, sino en un indice de informacion
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE SUBSTRING(a.dato_01,1,1) WHEN 'C' THEN '02' WHEN 'T' THEN '06' WHEN 'E' THEN '04' WHEN 'N' THEN '01' WHEN 'P' THEN '05' END
				FROM fdt_bancos_tmp c, inf_soc_trabajador a
				WHERE a.trabajador = c.trabajador
	      AND a.indice_inf_soc = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
				AND ISNULL(c.tipo_doc,'') = ''
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = CASE LTRIM(RTRIM(a.dato)) WHEN 'AHORROS' THEN '32' ELSE '22' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

  --hallando la maxima compañia que esta en ri_liq_procesar
  SELECT @cch_compania = MAX(compania)
  FROM ri_liq_procesar
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  -- Trayendo al informacion del banco      
	SELECT 
	@vch_simb_mon = b.simbolo_moneda, 
	@vti_tipo_cta = b.tipo_cta, 
	@vvc_cuenta_bco = b.cuenta, 
	@vvc_oficina_cta = b.oficina_cta, 
	@vvc_registro_fiscal = b.registro_fiscal
	FROM fdt_bancos a, fdt_bancos_cias_datos b
	WHERE a.banco = b.banco AND
	b.compania = @cch_compania AND
	a.banco = @pti_banco

	SET @vti_tipo_cta = ISNULL(@vti_tipo_cta, 1)
	SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco, 0)

  --Ahora el detalle
    INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 2,
    '6' +
 		RTRIM(LTRIM(ISNULL(tns.tipo_cuenta,'32'))) + --se deja fijo como ahorros para todos, ver si manejan corriente
		REPLICATE('0', 10 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))) +  '00' + --Importe, parte entera
		REPLICATE(' ', 17 - LEN(SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 17))) + SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 17) +
    '000010579' +
		SUBSTRING(LTRIM(ISNULL(t.clave_unica,'')), 1, 15) + SPACE(15 - LEN(SUBSTRING(LTRIM(ISNULL(t.clave_unica,'')), 1, 15))) +
		UPPER(LTRIM(RTRIM(SUBSTRING(dbo.fn_nombre_plano(LOWER(t.nombre)), 1, 22)))) + SPACE(22 - LEN(LTRIM(RTRIM(SUBSTRING(dbo.fn_nombre_plano(LOWER(t.nombre)), 1, 22 ))))) + --Nombre del beneficiario
    'V ' +
		'PAGO DE NOMINA' + SPACE(80 - LEN('PAGO DE NOMINA'))
    FROM fdt_bancos_tmp tns, trabajadores t
    WHERE t.trabajador = tns.trabajador
    AND tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

END
go
grant execute on dbo.sp_fco_gen_bco_colmena_ni to public
go
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_gen_bco_colombia_ni') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_gen_bco_colombia_ni
GO
CREATE PROCEDURE dbo.sp_fco_gen_bco_colombia_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por bancolombia para NI                 ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Marzo 21/2005                                         ***/
/********************************************************************/
--OCT-01-05: DCR, Pasada a SQL de Oracle
--NOV-24-05: DCR, Este sp puede servir para Bancolombia y Convai, solo que en la configuracion de bancos 
--a la institucion de deposito Bancolombia se debe colocar 005600078 y para Convai 005701100
--y si se desea utilizar como ACH los codigos serian los siguientes:
--  '005600065' -- SANTANDER              
--  '005895142' -- DAVIVIENDA              
--  '005701304' -- GRANAHORRAR              
--  '005600010' -- BOGOTA              
--  '005600023' -- POPULAR              
--  '005600104' -- TSB BANK - ANGLO              
--  '005600078' -- BANCOLOMBIA              
--  '005600094' -- CITIBANK              
--  '005600052' -- BANCAFE              
--  '005600230' -- OCCIDENTE              
--  '005600829' -- CAJA SOCIAL              
--  '005600133' -- GANADERO              
--  '005600191' -- COLPATRIA              
--  '006013677' -- AV VILLAS              
--  '005701100' -- CONAVI              
--  '005701809' -- COLMENA              
--  '000001036' -- MEGABANCO              
--  '005600340' -- SUPERIOR              
--  '999999999' -- COOMEVA              

DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vch_agr_id    char(10),
@vch_agr_cta   char(10)
     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = '01.IDENTIF'
  SET @vch_agr_cta = 'TIPO_CUENT'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, NULL, '0'
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN '02' WHEN '02' THEN '04' WHEN '04' THEN '01' WHEN '05' THEN '03' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

				--DCRP, Nov25/2005, parece que no siempre esta en una agrupacion, sino en un indice de informacion
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE SUBSTRING(a.dato_01,1,1) WHEN 'C' THEN '02' WHEN 'T' THEN '06' WHEN 'E' THEN '04' WHEN 'N' THEN '01' WHEN 'P' THEN '05' END
				FROM fdt_bancos_tmp c, inf_soc_trabajador a
				WHERE a.trabajador = c.trabajador
				AND a.indice_inf_soc = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
				AND ISNULL(c.tipo_doc,'') = ''
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = CASE LTRIM(RTRIM(a.dato)) WHEN 'AHORROS' THEN '37' ELSE '27' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

  --Ahora el detalle
    INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 2, 
    '6' + --Tipo de registro
		REPLICATE('0', 15-LEN(SUBSTRING(LTRIM(ISNULL(t.clave_unica,'0')), 1, 15))) + SUBSTRING(LTRIM(ISNULL(t.clave_unica,'0')), 1, 15) + --Nit Beneficiario
		UPPER(LTRIM(RTRIM(SUBSTRING(dbo.fn_nombre_plano(LOWER(t.nombre)), 1, 18)))) + SPACE(18 - LEN(LTRIM(RTRIM(SUBSTRING(dbo.fn_nombre_plano(LOWER(t.nombre)), 1, 18 ))))) + --Nombre del beneficiario
    LTRIM(RTRIM(ISNULL(tns.ins_dep,''))) + --Banco cuenta del beneficiario
		REPLICATE('0', 17-LEN(SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 17))) + SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 17) +--Numero de cuenta del beneficiario
    'S' + --Indicador Lugar de pago
		LTRIM(RTRIM(ISNULL(tns.tipo_cuenta,'37'))) + --se deja fijo como ahorros para todos, ver si manejan corriente
		REPLICATE('0', 10 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))) +  --Importe, parte entera
    'PAGONOMIN' + --Concepto
		SPACE(12) + --referencia
    ' ' --relleno
    FROM trabajadores t , fdt_bancos_tmp tns
    WHERE t.trabajador = tns.trabajador
    AND tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2

    --armamos la estructura del archivo plano. La cabeza
    --Aqui queda el valor de cuenta, tipo cuenta de la ultima cia recorrida
    INSERT INTO
      fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT
      @psi_id_rep, @pvc_usuario, @pti_banco, 1, 1,
      '1' +  --Tipo de registro
			REPLICATE('0', 10 - LEN(SUBSTRING(REPLACE(REPLACE(registro_fiscal,'-',''),'.',''),1,9))) + SUBSTRING(REPLACE(REPLACE(registro_fiscal,'-',''),'.',''),1,9) + --Nit entidad que envia
			SUBSTRING(ISNULL(nombre_cia,''),1,16) + SPACE(16 - LEN(SUBSTRING(ISNULL(nombre_cia,''),1,16))) +  --Nombre entidad que envia
      '225' +  --Clase de transacciones contenidas
      'P. NOMINA ' +  --Descripcion proposito transacciones
      CONVERT(CHAR(6), @pdt_fecha, 12) + --fecha transmision del lote
      'A' +  --Secuencia envio del lote
      CONVERT(CHAR(6), @pdt_fecha, 12) + --fecha aplicacion de transacciones
			REPLICATE('0', 6 - LEN(RTRIM(@vsi_nro_trab))) + RTRIM(@vsi_nro_trab) +  --Numero de registros
      '000000000000' +  --Sumatoria debitos        
			REPLICATE('0', 12 - LEN(RTRIM(Floor(@vdc_total)))) + RTRIM(Floor(@vdc_total)) +  --Numero de registros
			REPLICATE('0', 11 - LEN(SUBSTRING(@vvc_cuenta_bco, 1, 11))) + SUBSTRING(@vvc_cuenta_bco, 1, 11) +
      CASE @vti_tipo_cta WHEN 2 THEN 'S' ELSE 'D' END
    FROM
      companias
    WHERE
      compania IN (SELECT DISTINCT compania FROM ri_liq_procesar WHERE id_rep = @psi_id_rep AND usuariow = @pvc_usuario)      
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

END
GO
GRANT EXECUTE ON dbo.sp_fco_gen_bco_colombia_ni TO PUBLIC
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_gen_bco_colpatria_ni') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_gen_bco_colpatria_ni
GO
CREATE PROCEDURE dbo.sp_fco_gen_bco_colpatria_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por la multibanca Colpatria para NI     ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Enero 16/2006                                         ***/
/********************************************************************/

DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vch_agr_id    char(10),
@vch_agr_cta   char(10),

@vvc_cta_bco_gen char(8), -- la cuenta del banco generador
@vvc_fecha_formato char(8),
@vsi_reg_enviados integer

     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = '01.IDENTIF'
  SET @vch_agr_cta = 'TIPO_CUENT'
	SET @vvc_cta_bco_gen = '19'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, NULL, NULL
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN 'C' WHEN '02' THEN 'E' WHEN '04' THEN 'N' WHEN '05' THEN 'P' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

				--DCRP, Nov25/2005, parece que no siempre esta en una agrupacion, sino en un indice de informacion
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE SUBSTRING(a.dato_01,1,1) WHEN 'C' THEN 'C' WHEN 'T' THEN 'I' WHEN 'E' THEN 'E' WHEN 'N' THEN 'N' WHEN 'P' THEN 'P' END
				FROM fdt_bancos_tmp c, inf_soc_trabajador a
				WHERE a.trabajador = c.trabajador
				AND a.indice_inf_soc = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
				--AND ISNULL(c.tipo_doc,'') = ''
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = CASE LTRIM(RTRIM(a.dato)) WHEN 'AHORROS' THEN '2' ELSE '1' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

	SET @vvc_fecha_formato = CONVERT(CHAR(8), @pdt_fecha, 112)
	
	--como se maneja un consecutivo, debemos hacer uso de una tabla temporal, comienza en 2
	SELECT tns.trabajador, IDENTITY(smallint, 2, 1) as secuencia
	INTO #tmp_sec_bco
	FROM fdt_bancos_tmp tns
	WHERE tns.id_rep = @psi_id_rep
	AND tns.usuariow = @pvc_usuario
	AND tns.tipo = 2      
	
	--Ahora el detalle
	INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
	SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, sec.secuencia,
	REPLICATE('0', 5 - LEN(LTRIM(RTRIM(sec.secuencia)))) + LTRIM(RTRIM(sec.secuencia)) + --numero secuencial de registro
	'02' + --tipo de registro
	CASE LTRIM(RTRIM(tns.ins_dep)) WHEN @vvc_cta_bco_gen THEN REPLICATE('0', 12 - LEN(SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 12))) + SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 12) ELSE REPLICATE('0', 12) END + --numero de cuenta
	REPLICATE('0', 11-LEN(SUBSTRING(LTRIM(ISNULL(t.clave_unica,'0')), 1, 11))) + SUBSTRING(LTRIM(ISNULL(t.clave_unica,'0')), 1, 11) + --Nit Beneficiario
	UPPER(LTRIM(RTRIM(SUBSTRING(dbo.fn_nombre_plano(LOWER(t.nombre)), 1, 40)))) + SPACE(40 - LEN(LTRIM(RTRIM(SUBSTRING(dbo.fn_nombre_plano(LOWER(t.nombre)), 1, 40 ))))) + --Nombre del beneficiario
	CASE LTRIM(RTRIM(tns.ins_dep)) WHEN @vvc_cta_bco_gen THEN '902' ELSE '911' END + -- Codigo de transaccion
	'01' + --tipo de cargo a aplicar
	REPLICATE('0', 13 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))) + '00' +  --valor neto pago
	SPACE(10) + --numero de factura
	REPLICATE('0', 6) + --numero de control de pago
	REPLICATE('0', 15) + --valor retencion en la fuente
	REPLICATE('0', 15) + --valor iva
	SUBSTRING(@vvc_fecha_formato, 7, 2) + SUBSTRING(@vvc_fecha_formato, 5, 2) + SUBSTRING(@vvc_fecha_formato, 1, 4) + --fecha del recibo de informacion DDMMAAAA
	REPLICATE('0', 10) + --numero nota debito
	REPLICATE('0', 15) + --valor nota debito
	REPLICATE('0', 8 - LEN(LTRIM(RTRIM(tns.ins_dep)))) + LTRIM(RTRIM(tns.ins_dep)) + --codigo de banco
	CASE LTRIM(RTRIM(tns.ins_dep)) WHEN @vvc_cta_bco_gen THEN REPLICATE('0', 17) ELSE REPLICATE('0', 17 - LEN(SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 17))) + SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 17) END + --numero de cuenta
	LTRIM(RTRIM(ISNULL(tns.tipo_cuenta,'2'))) + --clase de cuenta
	LTRIM(RTRIM(ISNULL(tns.tipo_doc,'C'))) + --tipo de documento
	SPACE(4) + --espacios en blanco
	'PAGO DE NOMINA' + SPACE(66) --adenda
	FROM trabajadores t, fdt_bancos_tmp tns, #tmp_sec_bco sec
	WHERE t.trabajador = tns.trabajador
	AND tns.trabajador = sec.trabajador
	AND tns.id_rep = @psi_id_rep
	AND tns.usuariow = @pvc_usuario
	AND tns.tipo = 2      
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2

		SET @vsi_reg_enviados = @vsi_nro_trab + 2 --el total del detalle, mas la cabeza y el pie

    --armamos la estructura del archivo plano. La cabeza
    --Aqui queda el valor de cuenta, tipo cuenta de la ultima cia recorrida
    INSERT INTO
      fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT
      @psi_id_rep, @pvc_usuario, @pti_banco, 1, 1,
			'00001' + -- numero secuencia del registro
			'01' + -- tipo de registro
			SUBSTRING(@vvc_fecha_formato, 7, 2) + SUBSTRING(@vvc_fecha_formato, 5, 2) + SUBSTRING(@vvc_fecha_formato, 1, 4) + --fecha del recibo de informacion DDMMAAAA
			REPLICATE('0', 11 - LEN(SUBSTRING(REPLACE(REPLACE(registro_fiscal,'-',''),'.',''),1,11))) + SUBSTRING(REPLACE(REPLACE(registro_fiscal,'-',''),'.',''),1,11) + --Nit del cliente
			REPLICATE(' ', 10 - LEN(SUBSTRING(LTRIM(RTRIM(@vvc_registro_fiscal)), 1, 10))) + SUBSTRING(LTRIM(RTRIM(@vvc_registro_fiscal)), 1, 10) + --clave (la guardamos en registro fiscal)
			REPLICATE('0', 6 - LEN(LTRIM(RTRIM(@vsi_reg_enviados)))) + LTRIM(RTRIM(@vsi_reg_enviados)) +  --Numero de registros enviados
			REPLICATE('0', 4 - LEN(SUBSTRING(LTRIM(RTRIM(@vvc_oficina_cta)), 1, 4))) + SUBSTRING(LTRIM(RTRIM(@vvc_oficina_cta)), 1, 4) + --Oficina de pago
			REPLICATE('0', 12 - LEN(SUBSTRING(LTRIM(RTRIM(@vvc_cuenta_bco)), 1, 12))) + SUBSTRING(LTRIM(RTRIM(@vvc_cuenta_bco)), 1, 12) + --numero de cuenta
			SPACE(142) --espacios en blanco
    FROM
      companias
    WHERE
      compania IN (SELECT DISTINCT compania FROM ri_procesar WHERE id_rep = @psi_id_rep AND usuariow = @pvc_usuario)      

    INSERT INTO
      fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT
      @psi_id_rep, @pvc_usuario, @pti_banco, 1, @vsi_reg_enviados,
			REPLICATE('0', 5 - LEN(LTRIM(RTRIM(@vsi_reg_enviados)))) + LTRIM(RTRIM(@vsi_reg_enviados)) + --numero secuencia de registro
			'03' + --tipo de registro
			REPLICATE('0', 6 - LEN(LTRIM(RTRIM(@vsi_reg_enviados)))) + LTRIM(RTRIM(@vsi_reg_enviados)) + --numero de registros enviados
			SPACE(187) --espacios en blanco
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

	DROP TABLE #tmp_sec_bco

END
GO
GRANT EXECUTE ON dbo.sp_fco_gen_bco_colpatria_ni TO PUBLIC
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_gen_bco_conavi_ni') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_gen_bco_conavi_ni
GO
CREATE PROCEDURE dbo.sp_fco_gen_bco_conavi_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por conavi para NI                      ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 21/2005                                          ***/
/********************************************************************/
--OCT-01-05: DCR, Pasada a SQL de Oracle
DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vch_agr_id    char(10),
@vch_agr_cta   char(10)
     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = '01.IDENTIF'
  SET @vch_agr_cta = 'TIPO_CUENT'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, '0', '0'
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN '02' WHEN '02' THEN '04' WHEN '04' THEN '01' WHEN '05' THEN '03' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

				--DCRP, Nov25/2005, parece que no siempre esta en una agrupacion, sino en un indice de informacion
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE SUBSTRING(a.dato_01,1,1) WHEN 'C' THEN '02' WHEN 'T' THEN '06' WHEN 'E' THEN '04' WHEN 'N' THEN '01' WHEN 'P' THEN '05' END
				FROM fdt_bancos_tmp c, inf_soc_trabajador a
				WHERE a.trabajador = c.trabajador
	      AND a.indice_inf_soc = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
				AND ISNULL(c.tipo_doc,'') = ''
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = CASE LTRIM(RTRIM(a.dato)) WHEN 'AHORROS' THEN '2' ELSE '1' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

  --hallando la maxima compañia que esta en ri_liq_procesar
  SELECT @cch_compania = MAX(compania)
  FROM ri_liq_procesar
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  -- Trayendo al informacion del banco      
	SELECT 
	@vch_simb_mon = b.simbolo_moneda, 
	@vti_tipo_cta = b.tipo_cta, 
	@vvc_cuenta_bco = b.cuenta, 
	@vvc_oficina_cta = b.oficina_cta, 
	@vvc_registro_fiscal = b.registro_fiscal
	FROM fdt_bancos a, fdt_bancos_cias_datos b
	WHERE a.banco = b.banco AND
	b.compania = @cch_compania AND
	a.banco = @pti_banco

	SET @vti_tipo_cta = ISNULL(@vti_tipo_cta, 1)
	SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco, 0)
	SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta, '')
	SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

  --Ahora el detalle
    INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 2,
    '1' +
		LTRIM(RTRIM(ISNULL(tns.ins_dep,''))) + -- Ej: 570110
		CONVERT(CHAR(4), SUBSTRING(RTRIM(ISNULL(tns.cuenta_dep,'0')), 1, 4)) +
		REPLICATE('0', 11 - LEN(SUBSTRING(RTRIM(ISNULL(tns.cuenta_dep,'0')), 5, 9))) + SUBSTRING(RTRIM(ISNULL(tns.cuenta_dep,'0')), 5, 9) +
		'      ' +
		LTRIM(RTRIM(ISNULL(tns.tipo_cuenta,'2'))) +
		REPLICATE('0', 17 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe))))   --Importe, parte entera
    FROM fdt_bancos_tmp tns, trabajadores t
    WHERE t.trabajador = tns.trabajador
    AND tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2

  --la cabeza
  INSERT INTO
    fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
  SELECT
    @psi_id_rep, @pvc_usuario, @pti_banco, 1, 1,
    '0' + '01' + 'NOE' +
		SPACE(4 - LEN(SUBSTRING(LTRIM(RTRIM(@vvc_registro_fiscal)), 1, 4))) + SUBSTRING(LTRIM(RTRIM(@vvc_registro_fiscal)), 1, 4) + -- Ej: '5086'
		SPACE(13 - LEN(LTRIM(RTRIM(@vvc_registro_fiscal)))) + LTRIM(RTRIM(@vvc_registro_fiscal)) + --Ej: '5086000000166'
	  '0000000000001' +
		SPACE(6 - LEN(LTRIM(RTRIM(@vvc_oficina_cta)))) + LTRIM(RTRIM(@vvc_oficina_cta)) + --Ej: '570110'
		SPACE(15 - LEN(LTRIM(RTRIM(@vvc_cuenta_bco)))) + LTRIM(RTRIM(@vvc_cuenta_bco)) + -- Ej: Iria todo esto: '5045' + '00007680036'
		'      ' + 
		CASE @vti_tipo_cta WHEN 1 THEN '1' ELSE '2' END + -- 1 SI ES CORRIENTE O 2 SI ES AHORROS
		REPLICATE('0', 6 - LEN(RTRIM(@vsi_nro_trab))) + RTRIM(@vsi_nro_trab) +
		REPLICATE('0', 17 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))) + 
		'Pago de Nomina' + SPACE(100 - LEN('Pago de Nomina'))
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

END
GO
GRANT EXECUTE ON dbo.sp_fco_gen_bco_conavi_ni TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_gen_bco_davivienda_ni') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_gen_bco_davivienda_ni
GO
CREATE PROCEDURE dbo.sp_fco_gen_bco_davivienda_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por davivienda para NI                  ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 21/2005                                          ***/
/********************************************************************/
--OCT-01-05: DCR, Pasada a SQL de Oracle
DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vch_agr_id    char(10),
@vch_agr_cta   char(10)
     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = '01.IDENTIF'
  SET @vch_agr_cta = 'TIPO_CUENT'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, '0', '0'
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN '02' WHEN '02' THEN '04' WHEN '04' THEN '01' WHEN '05' THEN '03' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

				--DCRP, Nov25/2005, parece que no siempre esta en una agrupacion, sino en un indice de informacion
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE SUBSTRING(a.dato_01,1,1) WHEN 'C' THEN '02' WHEN 'T' THEN '06' WHEN 'E' THEN '04' WHEN 'N' THEN '01' WHEN 'P' THEN '05' END
				FROM fdt_bancos_tmp c, inf_soc_trabajador a
				WHERE a.trabajador = c.trabajador
	      AND a.indice_inf_soc = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
				AND ISNULL(c.tipo_doc,'') = ''
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = CASE LTRIM(RTRIM(a.dato)) WHEN 'AHORROS' THEN 'CA' ELSE 'CC' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

  --hallando la maxima compañia que esta en ri_liq_procesar
  SELECT @cch_compania = MAX(compania)
  FROM ri_liq_procesar
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  -- Trayendo al informacion del banco      
	SELECT 
	@vch_simb_mon = b.simbolo_moneda, 
	@vti_tipo_cta = b.tipo_cta, 
	@vvc_cuenta_bco = b.cuenta, 
	@vvc_oficina_cta = b.oficina_cta, 
	@vvc_registro_fiscal = b.registro_fiscal
	FROM fdt_bancos a, fdt_bancos_cias_datos b
	WHERE a.banco = b.banco AND
	b.compania = @cch_compania AND
	a.banco = @pti_banco

	SET @vti_tipo_cta = ISNULL(@vti_tipo_cta, 1)
	SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco, 0)
	SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'')

  --Ahora el detalle
	--*****  CONSTRUCCION DE LOS REGISTROS TIPO TR
    INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 2,
    'TR' +
		REPLICATE('0', 16 - LEN(SUBSTRING(LTRIM(t.clave_unica), 1, 16))) + SUBSTRING(LTRIM(t.clave_unica), 1, 16) +
		REPLICATE('0', 16) +
		REPLICATE('0', 16 - LEN(SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 16))) + SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 16) +
		SUBSTRING(LTRIM(ISNULL(tns.tipo_cuenta,'CA')), 1, 2) +
    '000051' +
		REPLICATE('0', 16 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))) +  --Importe, parte entera
    REPLICATE('0', 8) +
		SUBSTRING(LTRIM(ISNULL(tns.tipo_doc,'02')), 1, 2) +
    '0' +
    '9999' +
    REPLICATE('0', 40) +
    REPLICATE('0', 18) +
    REPLICATE('0', 8) +
    REPLICATE('0', 4) +
    REPLICATE('0', 4) +
    REPLICATE('0', 7)    
    FROM fdt_bancos_tmp tns, trabajadores t
    WHERE t.trabajador = tns.trabajador
    AND tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2

  --la cabeza
	--***** CONSTRUCCION DEL REGISTRO TIPO RC
  INSERT INTO
    fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
  SELECT
    @psi_id_rep, @pvc_usuario, @pti_banco, 1, 1,
    'RC' +
		REPLICATE('0', 16 - LEN(REPLACE(ISNULL(registro_fiscal,'0'),'-',''))) + REPLACE(ISNULL(registro_fiscal,'0'),'-','') +
    'NOMI' +
    REPLICATE('0', 4 - LEN(SUBSTRING(LTRIM(RTRIM(@vvc_oficina_cta)), 1, 4))) +  SUBSTRING(LTRIM(RTRIM(@vvc_oficina_cta)), 1, 4) +  
		REPLICATE('0', 16 - LEN(ISNULL(@vvc_cuenta_bco,'0'))) + ISNULL(@vvc_cuenta_bco,'0') +
		CASE ISNULL(@vti_tipo_cta, 2) WHEN 2 THEN 'CA' ELSE 'CC' END +
    '000051' +
		REPLICATE('0', 16 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))))) +
	 LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))) +  --Importe, parte entera
		REPLICATE('0', 8 - LEN(RTRIM(@vsi_nro_trab))) + RTRIM(@vsi_nro_trab) +
    CONVERT(CHAR(8),GETDATE(), 112) +  
    SUBSTRING(CONVERT(CHAR(8),GETDATE(), 108), 1, 2) +  
    SUBSTRING(CONVERT(CHAR(8),GETDATE(), 108), 4, 2) +  
    SUBSTRING(CONVERT(CHAR(8),GETDATE(), 108), 7, 2) +  
    '0000' +
    '9999' +
    REPLICATE('0', 8) +
    REPLICATE('0', 6) +
    '00' +
    '01' +
    REPLICATE('0', 12) +
    REPLICATE('0', 4 - LEN(SUBSTRING(LTRIM(RTRIM(@vvc_oficina_cta)), 1, 4))) +  SUBSTRING(LTRIM(RTRIM(@vvc_oficina_cta)), 1, 4) + 
    REPLICATE('0', 40)    
  FROM
    companias
  WHERE
    compania IN (SELECT DISTINCT compania FROM ri_liq_procesar WHERE id_rep = @psi_id_rep AND usuariow = @pvc_usuario)
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

END

GO
GRANT EXECUTE ON dbo.sp_fco_gen_bco_davivienda_ni TO PUBLIC
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_gen_bco_ganadero_ni') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_gen_bco_ganadero_ni
GO
CREATE PROCEDURE sp_fco_gen_bco_ganadero_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por ganadero para NI                    ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 21/2005                                          ***/
/********************************************************************/
--OCT-01-05: DCR, Pasada a SQL de Oracle
DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vch_agr_id    char(10),
@vch_agr_cta   char(10)
     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = 'TIPO_DOC'
  SET @vch_agr_cta = 'TIPO_CTA'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, '0', '0'
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN '02' WHEN '02' THEN '04' WHEN '04' THEN '01' WHEN '05' THEN '03' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = LTRIM(RTRIM(a.dato))
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

  --hallando la maxima compañia que esta en ri_liq_procesar
  SELECT @cch_compania = MAX(compania)
  FROM ri_liq_procesar
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  -- Trayendo al informacion del banco      
	SELECT 
	@vch_simb_mon = b.simbolo_moneda, 
	@vti_tipo_cta = b.tipo_cta, 
	@vvc_cuenta_bco = b.cuenta, 
	@vvc_oficina_cta = b.oficina_cta, 
	@vvc_registro_fiscal = b.registro_fiscal
	FROM fdt_bancos a, fdt_bancos_cias_datos b
	WHERE a.banco = b.banco AND
	b.compania = @cch_compania AND
	a.banco = @pti_banco

	SET @vti_tipo_cta = ISNULL(@vti_tipo_cta, 1)
	SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco, 0)

    INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 2,
		SUBSTRING(LTRIM(ISNULL(tns.tipo_doc,'01')), 1, 2) + -- TIPO ID BENEFICIARIO  
		REPLICATE('0', 15 - LEN(SUBSTRING(LTRIM(t.clave_unica), 1, 15))) + SUBSTRING(LTRIM(t.clave_unica), 1, 15) +  -- Nº ID BENEFICIARIO  
    '0' + -- DIGITO CONTROL Nº ID BENEFICIARIO  
    '1' + -- FORMA PAGO  
    '0013' + -- BANCO RECEPTOR
    '0' + 
		REPLICATE('0', 3 - LEN(SUBSTRING(tns.cuenta_dep, 1, 3))) + SUBSTRING(tns.cuenta_dep, 1, 3) + -- OFICINA/PLAZA 
		REPLICATE('0', 4 - LEN(SUBSTRING(LTRIM(tns.tipo_cuenta), 1, 4))) + SUBSTRING(LTRIM(tns.tipo_cuenta), 1, 4) + -- TIPO CUENTA  
		REPLICATE('0', 6 - LEN(SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 4, 6)))  + SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 4, 6) + -- CUENTA BBVA  
    '00' + -- TIPO CUENTA NACHA  
    REPLICATE('0', 17) + -- CUENTA NACHA
		REPLACE(LTRIM(RTRIM(t.nombre)), '/' , ' ') + SPACE(36 - LEN(REPLACE(LTRIM(RTRIM(t.nombre)), '/' , ' '))) + -- NOMBRE BENEFICIARIO  
		REPLICATE('0', 15 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))) +  --Importe, parte entera
    REPLICATE(' ', 36) + -- DIRECCION  
    REPLICATE(' ', 18) + -- TELEFONO  
    REPLICATE('0', 8) + --FECHA LIMITE DE PAGO  
		'PAGO DE NOMINA' + SPACE(40 - LEN('PAGO DE NOMINA')) -- CONCEPTO PAGO      
    FROM fdt_bancos_tmp tns, trabajadores t
    WHERE t.trabajador = tns.trabajador
    AND tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

END
GO
GRANT EXECUTE ON dbo.sp_fco_gen_bco_ganadero_ni TO PUBLIC
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_gen_bco_granahorrar_ni') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_gen_bco_granahorrar_ni
GO
CREATE PROCEDURE dbo.sp_fco_gen_bco_granahorrar_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por granahorrar para NI                  ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 21/2005                                          ***/
/********************************************************************/
--OCT-01-05: DCR, Pasada a SQL de Oracle
DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vch_agr_id    char(10),
@vch_agr_cta   char(10)
     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = 'TIPO_DOC'
  SET @vch_agr_cta = 'TIPO_CTA'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, '0', '0'
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN '02' WHEN '02' THEN '04' WHEN '04' THEN '01' WHEN '05' THEN '03' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = LTRIM(RTRIM(a.dato))
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

  --hallando la maxima compañia que esta en ri_liq_procesar
  SELECT @cch_compania = MAX(compania)
  FROM ri_liq_procesar
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  -- Trayendo al informacion del banco      
	SELECT 
	@vch_simb_mon = b.simbolo_moneda, 
	@vti_tipo_cta = b.tipo_cta, 
	@vvc_cuenta_bco = b.cuenta, 
	@vvc_oficina_cta = b.oficina_cta, 
	@vvc_registro_fiscal = b.registro_fiscal
	FROM fdt_bancos a, fdt_bancos_cias_datos b
	WHERE a.banco = b.banco AND
	b.compania = @cch_compania AND
	a.banco = @pti_banco

	SET @vti_tipo_cta = ISNULL(@vti_tipo_cta, 1)
	SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco, 0)

		--como se maneja un consecutivo, debemos hacer uso de una tabla temporal
		SELECT tns.trabajador, IDENTITY(smallint, 1, 1) as secuencia
		INTO #tmp_sec_bco
		FROM fdt_bancos_tmp tns
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2      

  -- CONSTRUCCION DEL REGISTRO TIPO I 
  INSERT INTO
    fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
  SELECT
    @psi_id_rep, @pvc_usuario, @pti_banco, 1, 1,
    'N0000000000' +
    CONVERT(CHAR(8), @pdt_fecha, 112) +
    '01' +
    ISNULL(@vvc_cuenta_bco,'0') +
		LTRIM(RTRIM(nombre_cia)) + SPACE(30 - LEN(LTRIM(RTRIM(nombre_cia)))) +
    '00' +
		REPLICATE('0', 9 - LEN(REPLACE(ISNULL(registro_fiscal,'0'),'-',''))) + REPLACE(ISNULL(registro_fiscal,'0'),'-','') +
    REPLICATE(' ', 11) +
    '000001'    
  FROM
    companias
  WHERE
    compania IN (SELECT DISTINCT compania FROM ri_liq_procesar WHERE id_rep = @psi_id_rep AND usuariow = @pvc_usuario)
      
  -- CONSTRUCCION DE LOS REGISTROS TIPO II
    INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 2,
    'N32' +
		SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 17) + SPACE(17 - LEN(SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 17))) +
		REPLACE(LTRIM(RTRIM(t.nombre)), '/' , ' ') + SPACE(30 - LEN(REPLACE(LTRIM(RTRIM(t.nombre)), '/' , ' '))) +
		REPLICATE('0', 11 - LEN(SUBSTRING(LTRIM(t.clave_unica), 1, 11))) + SUBSTRING(LTRIM(t.clave_unica), 1, 11) +
		REPLICATE('0', 12 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))) +  --Importe, parte entera
    ' ' +
		REPLICATE('0', 6 - LEN(RTRIM(sec.secuencia))) + RTRIM(sec.secuencia)
    FROM fdt_bancos_tmp tns, trabajadores t, #tmp_sec_bco sec
    WHERE t.trabajador = tns.trabajador
		AND tns.trabajador = sec.trabajador
    AND tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2

  -- CONSTRUCCION DEL REGISTRO TIPO III   
  INSERT INTO
    fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
  SELECT
    @psi_id_rep, @pvc_usuario, @pti_banco, 1, 3,
    'N9999999999' +
		REPLICATE('0', 6 - LEN(RTRIM(@vsi_nro_trab))) + RTRIM(@vsi_nro_trab) +
		REPLICATE('0', 12 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))) +  --Importe, parte entera
    REPLICATE(' ', 54) +
		REPLICATE('0', 6 - LEN(RTRIM(@vsi_nro_trab+2))) + RTRIM(@vsi_nro_trab+2)
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

END
GO
GRANT EXECUTE ON dbo.sp_fco_gen_bco_granahorrar_ni TO PUBLIC
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_gen_bco_lloyds_ni') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_gen_bco_lloyds_ni
GO
CREATE PROCEDURE dbo.sp_fco_gen_bco_lloyds_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por lloyds para NI                      ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 21/2005                                          ***/
/********************************************************************/
--OCT-01-05:DCR, Pasada a SQL de Oracle
DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vch_agr_id    char(10),
@vch_agr_cta   char(10)
     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = 'TIPO_DOC'
  SET @vch_agr_cta = 'TIPO_CTA'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, '0', '0'
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN '02' WHEN '02' THEN '04' WHEN '04' THEN '01' WHEN '05' THEN '03' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = LTRIM(RTRIM(a.dato))
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

  --hallando la maxima compañia que esta en ri_liq_procesar
  SELECT @cch_compania = MAX(compania)
  FROM ri_liq_procesar
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  -- Trayendo al informacion del banco      
	SELECT 
	@vch_simb_mon = b.simbolo_moneda, 
	@vti_tipo_cta = b.tipo_cta, 
	@vvc_cuenta_bco = b.cuenta, 
	@vvc_oficina_cta = b.oficina_cta, 
	@vvc_registro_fiscal = b.registro_fiscal
	FROM fdt_bancos a, fdt_bancos_cias_datos b
	WHERE a.banco = b.banco AND
	b.compania = @cch_compania AND
	a.banco = @pti_banco

	SET @vti_tipo_cta = ISNULL(@vti_tipo_cta, 1)
	SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco, 0)

		--como se maneja un consecutivo, debemos hacer uso de una tabla temporal
		SELECT tns.trabajador, IDENTITY(smallint, 1, 1) as secuencia
		INTO #tmp_sec_bco
		FROM fdt_bancos_tmp tns
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2      

  --Ahora el detalle
    INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 4,
    '6' +
		SUBSTRING(LTRIM(ISNULL(tns.tipo_cuenta,'2')), 1, 1) +
    '2' +
    '2' +
    '010' +
		SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 25) + SPACE(25 - LEN(SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 25))) +
		REPLICATE('0', 18 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))) +  --Importe, parte entera
    '000000' +
		SUBSTRING(LTRIM(t.clave_unica), 1, 15) + SPACE(15 - LEN(SUBSTRING(LTRIM(t.clave_unica), 1, 15))) +
		REPLACE(LTRIM(RTRIM(t.nombre)), '/' , ' ') + SPACE(22 - LEN(REPLACE(LTRIM(RTRIM(t.nombre)), '/' , ' '))) +
    ' ' +
    REPLICATE('0', 11) +
		REPLICATE('0', 7 - LEN(RTRIM(sec.secuencia))) + RTRIM(sec.secuencia) +
    '02' +
		'PAGO DE NOMINA' + SPACE(72 - LEN('PAGO DE NOMINA'))
    FROM fdt_bancos_tmp tns, trabajadores t, #tmp_sec_bco sec
    WHERE t.trabajador = tns.trabajador
		AND tns.trabajador = sec.trabajador
    AND tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2

  --la cabeza
  INSERT INTO
    fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
  SELECT
    @psi_id_rep, @pvc_usuario, @pti_banco, 1, 3,
    '6' +
    @vti_tipo_cta +
    '1' +
    '2' +
    '010' + 
		ISNULL(@vvc_cuenta_bco,'0') + SPACE(16 - LEN(ISNULL(@vvc_cuenta_bco,'0'))) +
		REPLICATE('0', 18 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))) +  --Importe, parte entera
    '000000' +
		REPLACE(ISNULL(registro_fiscal,'0'),'-','') + SPACE(15 - LEN(REPLACE(ISNULL(registro_fiscal,'0'),'-',''))) +
		LTRIM(RTRIM(nombre_cia)) + SPACE(22 - LEN(LTRIM(RTRIM(nombre_cia)))) +
    ' ' +
    REPLICATE('0', 11) +
    '0000001' +
    '02' +
		'PAGO DE NOMINA' + SPACE(72 - LEN('PAGO DE NOMINA'))
  FROM
    companias
  WHERE
    compania IN (SELECT DISTINCT compania FROM ri_liq_procesar WHERE id_rep = @psi_id_rep AND usuariow = @pvc_usuario)

  -- Construcción de registro control de lote de transferencias
  INSERT INTO
    fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
  SELECT
    @psi_id_rep, @pvc_usuario, @pti_banco, 1, 2,
    '5' +
		LTRIM(RTRIM(nombre_cia)) + SPACE(16 - LEN(LTRIM(RTRIM(nombre_cia)))) +
		REPLICATE('0', 10 - LEN(ISNULL(@vvc_cuenta_bco,'0'))) + ISNULL(@vvc_cuenta_bco,'0') +
    'NOMINA    ' +
		REPLACE(ISNULL(registro_fiscal,'0'),'-','') + SPACE(10 - LEN(REPLACE(ISNULL(registro_fiscal,'0'),'-',''))) +
    'PANOMINA  ' +
    CONVERT(CHAR(8), @pdt_fecha, 112) +
    '0000001' +
		REPLICATE('0', 18 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))) +  
		REPLICATE('0', 18 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))) +  
    '00' +
    '01' +
    REPLICATE(' ', 88)    
  FROM
    companias
  WHERE
    compania IN (SELECT DISTINCT compania FROM ri_liq_procesar WHERE id_rep = @psi_id_rep AND usuariow = @pvc_usuario)

  --Construcción de registro control de archivo
  INSERT INTO
    fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
  SELECT
    @psi_id_rep, @pvc_usuario, @pti_banco, 1, 1,
    ' 005600104' +
		REPLACE(ISNULL(registro_fiscal,'0'),'-','') + SPACE(10 - LEN(REPLACE(ISNULL(registro_fiscal,'0'),'-',''))) +
    CONVERT(CHAR(8), @pdt_fecha, 112) +
    '00' + --hora
    '00' + --minutos
    'A' +
		LTRIM(RTRIM(nombre_cia)) + SPACE(23 - LEN(LTRIM(RTRIM(nombre_cia)))) +
		REPLICATE('0', 18 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))) +  
		REPLICATE('0', 18 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(@vdc_total)))) +  
    REPLICATE('0', 18) +
    REPLICATE(' ', 89)    
  FROM
    companias
  WHERE
    compania IN (SELECT DISTINCT compania FROM ri_liq_procesar WHERE id_rep = @psi_id_rep AND usuariow = @pvc_usuario)
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

	DROP TABLE #tmp_sec_bco
END
GO
GRANT EXECUTE ON dbo.sp_fco_gen_bco_lloyds_ni TO PUBLIC
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_gen_bco_santander_ni') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_gen_bco_santander_ni
GO
CREATE PROCEDURE dbo.sp_fco_gen_bco_santander_ni
(
  @psi_id_rep smallint,
  @pvc_usuario varchar(30),
  @pti_banco tinyint,
  @pdt_fecha smalldatetime = NULL,
  @pvc_responsable varchar(20) = '',
  @pti_filtra_cta tinyint = 0  --0: no filtra, 1: si filtra 
)
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Medios Magneticos para Bancos    ***/
/*** Formato: Transmision por santander para NI                   ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 21/2005                                          ***/
/********************************************************************/
--OCT-01-05: DCR, Pasado a SQL de Oracle
DECLARE
@cch_compania  char(4),

@vnu_concepto1 smallint,
@vnu_concepto2 smallint,
@vnu_concepto3 smallint,
@vnu_concepto4 smallint,
@vnu_concepto5 smallint,
@vch_simb_mon  char(5),
@vti_tipo_cta  tinyint,
@vvc_cuenta_bco  varchar(30),
@vvc_oficina_cta varchar(15),
@vvc_registro_fiscal varchar(20),
@vvc_mensaje varchar(80),
@vdc_total     decimal(19,6),
@vsi_nro_trab  integer,

@vch_agr_id    char(10),
@vch_agr_cta   char(10)
     
BEGIN
--borrando la informacion 
	DELETE fdt_bancos_mm
	WHERE id_rep = @psi_id_rep AND
	usuariow = @pvc_usuario AND
	banco = @pti_banco

  DELETE fdt_bancos_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  --cambiar de acuerdo a la agrupacion que maneja cada cliente
  SET @vch_agr_id = 'TIPO_DOC'
  SET @vch_agr_cta = 'TIPO_CTA'
    
-- Recorriendo el cursor de los registros a procesar.
	DECLARE c_reg_procesa CURSOR FOR
	SELECT DISTINCT compania
	FROM ri_liq_procesar
	WHERE id_rep = @psi_id_rep
	AND usuariow = @pvc_usuario
	
	OPEN c_reg_procesa
	FETCH c_reg_procesa INTO @cch_compania
	
	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--B1

      -- Trayendo al informacion del banco      
			 SELECT @vnu_concepto1 = b.concepto1, 
			 @vnu_concepto2 = b.concepto2, 
			 @vnu_concepto3 = b.concepto3, 
			 @vnu_concepto4 = b.concepto4, 
			 @vnu_concepto5 = b.concepto5,
			 @vch_simb_mon = b.simbolo_moneda, 
			 @vti_tipo_cta = b.tipo_cta, 
			 @vvc_cuenta_bco = b.cuenta, 
			 @vvc_oficina_cta = b.oficina_cta, 
			 @vvc_registro_fiscal = b.registro_fiscal
			 FROM fdt_bancos a, fdt_bancos_cias_datos b
			 WHERE a.banco = b.banco AND
			 b.compania = @cch_compania AND
			 a.banco = @pti_banco

      --Insertando en la tabla temporal los trabajadores
      SET @vnu_concepto1 = ISNULL(@vnu_concepto1, 0)
      SET @vnu_concepto2 = ISNULL(@vnu_concepto2, 0)
      SET @vnu_concepto3 = ISNULL(@vnu_concepto3, 0)
      SET @vnu_concepto4 = ISNULL(@vnu_concepto4, 0)
      SET @vnu_concepto5 = ISNULL(@vnu_concepto5, 0)
			SET @vch_simb_mon = ISNULL(@vch_simb_mon,'')
			SET @vti_tipo_cta = ISNULL(@vti_tipo_cta,1)
			SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco,'') 
			SET @vvc_oficina_cta = ISNULL(@vvc_oficina_cta,'') 
			SET @vvc_registro_fiscal = ISNULL(@vvc_registro_fiscal, '')

      INSERT INTO fdt_bancos_tmp (id_rep, usuariow, compania, numero_liquidacion, trabajador, importe,cuenta_dep, 
      simbolo_mon, tipo, tipo_cuenta, tipo_doc)      
      SELECT @psi_id_rep, @pvc_usuario, ld.compania, ld.numero_liquidacion,
      ld.trabajador, ld.importe, '0', @vch_simb_mon, 1, '0', '0'
      FROM liquidaciones_det ld, ri_liq_procesar lp
      WHERE ld.compania = lp.compania
      AND ld.tipo_nomina = lp.tipo_nomina
      AND ld.numero_liquidacion = lp.numero_liquidacion
      AND ld.trabajador = lp.trabajador
      AND ld.compania = @cch_compania
      AND ld.concepto IN (@vnu_concepto1, @vnu_concepto2, @vnu_concepto3, @vnu_concepto4, @vnu_concepto5)
      AND ld.importe > 0
      AND ld.sit_transaccion = 2
      AND lp.id_rep = @psi_id_rep
      AND lp.usuariow = @pvc_usuario

      --actualizamos los que tienen cuenta de deposito
--sin importar de que banco sea, se debe traer la cuenta del trabajador
        UPDATE fdt_bancos_tmp
        SET cuenta_dep =
             (SELECT MAX(a.cuenta_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario;         
      
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(b.cod_banco)
              FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b 
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1
              AND a.institucion_deposito = b.ins_dep
              AND b.banco = @pti_banco
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania          
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario        

--si por casualidad ins_dep queda en cero, buscar la info de rel_trab_ins_dep
        UPDATE fdt_bancos_tmp
        SET ins_dep = 
             (SELECT MAX(a.institucion_deposito)
              FROM rel_trab_ins_dep a
              WHERE a.compania = c.compania
              AND a.trabajador = c.trabajador
              AND a.ins_dep_principal = 1 
              AND c.compania = @cch_compania)
				FROM fdt_bancos_tmp c
				WHERE compania = @cch_compania
				AND id_rep = @psi_id_rep
				AND usuariow = @pvc_usuario
				AND c.ins_dep = '0'       
            
      --si viene la opcion de filtrar unicamente los trabajadores que tengan cuenta en las ins dep parametrizadas
      IF @pti_filtra_cta = 1
        BEGIN   
            DELETE fdt_bancos_tmp
            WHERE compania = @cch_compania
            AND id_rep = @psi_id_rep
            AND usuariow = @pvc_usuario
            AND NOT EXISTS (SELECT 1 FROM rel_trab_ins_dep a, fdt_bancos_ins_dep b
                            WHERE a.institucion_deposito = b.ins_dep
                             AND a.compania = fdt_bancos_tmp.compania
                             AND a.trabajador = fdt_bancos_tmp.trabajador
                             AND b.banco = @pti_banco
                             AND fdt_bancos_tmp.compania = @cch_compania)
        END

	      --Actualizar el tipo de documento *** cambiar de acuerdo al cliente ***
				UPDATE fdt_bancos_tmp
				SET tipo_doc = CASE LTRIM(RTRIM(a.dato)) WHEN '01' THEN '02' WHEN '02' THEN '04' WHEN '04' THEN '01' WHEN '05' THEN '03' END
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_id
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario
	
	      UPDATE fdt_bancos_tmp
	      SET tipo_cuenta = LTRIM(RTRIM(a.dato))
				FROM fdt_bancos_tmp c, rel_trab_agr a
				WHERE a.compania = c.compania
	      AND a.trabajador = c.trabajador
	      AND a.agrupacion = @vch_agr_cta
				AND c.compania = @cch_compania 
				AND c.id_rep = @psi_id_rep
				AND c.usuariow = @pvc_usuario

   FETCH c_reg_procesa INTO @cch_compania
            
  END--B1  

  CLOSE c_reg_procesa
	DEALLOCATE c_reg_procesa

  --Finalizado el cursor, se debe agrupar por una sola cuenta por trabajador, los registros de los varios
  --tipos de nomina seleccionados
  INSERT INTO fdt_bancos_tmp(id_rep, usuariow, trabajador, importe, ins_dep, cuenta_dep, simbolo_mon, tipo,
  tipo_cuenta, tipo_doc)
  SELECT tn.id_rep, tn.usuariow, tn.trabajador, SUM(tn.importe), tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, 2,
  tn.tipo_cuenta, tn.tipo_doc
  FROM fdt_bancos_tmp tn
  WHERE tn.id_rep = @psi_id_rep
  AND tn.usuariow = @pvc_usuario
  AND tn.tipo = 1
  GROUP BY tn.id_rep, tn.usuariow, tn.trabajador, tn.ins_dep, tn.cuenta_dep, tn.simbolo_mon, tn.tipo_cuenta, tn.tipo_doc

  --hallando la maxima compañia que esta en ri_liq_procesar
  SELECT @cch_compania = MAX(compania)
  FROM ri_liq_procesar
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario

  -- Trayendo al informacion del banco      
	SELECT 
	@vch_simb_mon = b.simbolo_moneda, 
	@vti_tipo_cta = b.tipo_cta, 
	@vvc_cuenta_bco = b.cuenta, 
	@vvc_oficina_cta = b.oficina_cta, 
	@vvc_registro_fiscal = b.registro_fiscal
	FROM fdt_bancos a, fdt_bancos_cias_datos b
	WHERE a.banco = b.banco AND
	b.compania = @cch_compania AND
	a.banco = @pti_banco

	SET @vti_tipo_cta = ISNULL(@vti_tipo_cta, 1)
	SET @vvc_cuenta_bco = ISNULL(@vvc_cuenta_bco, 0)

  --Ahora el detalle
    INSERT INTO fdt_bancos_mm(id_rep, usuariow, banco, sec_archivo, secuencia, registros)
    SELECT @psi_id_rep, @pvc_usuario, @pti_banco, 1, 2,
		SUBSTRING(LTRIM(t.clave_unica), 1, 15) + --Identificacion
		REPLACE(LTRIM(RTRIM(t.nombre)), '/' , ' ') + SPACE(22 - LEN(REPLACE(LTRIM(RTRIM(t.nombre)), '/' , ' '))) + -- NOMBRE BENEFICIARIO  
		SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 17) + SPACE(17 - LEN(SUBSTRING(ISNULL(tns.cuenta_dep,'0'), 1, 17))) + -- cuenta
		REPLICATE('0', 15 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(tns.importe)))) +  --valor
		'PAGO DE NOMINA' + SPACE(80 - LEN('PAGO DE NOMINA')) +
		SUBSTRING(LTRIM(ISNULL(tns.tipo_doc,'01')), 1, 2) + --Codigo de identificacion del destinatario
		SUBSTRING(LTRIM(ISNULL(tns.tipo_cuenta,'1')), 1, 1) + -- Tipo de Cuenta  1. Ahorros, 2 Corriente   
		REPLICATE('0', 4 -LEN(SUBSTRING(LTRIM(tns.ins_dep),1, 4))) + SUBSTRING(LTRIM(tns.ins_dep),1, 4) + --codigo del banco
    '0001' +
    '1'    
    FROM fdt_bancos_tmp tns, trabajadores t
    WHERE t.trabajador = tns.trabajador
    AND tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tns.tipo = 2
      
------------------------------------
--  Generar Estadisticas del Proceso
------------------------------------
    SELECT @vdc_total = ISNULL(SUM(importe), 0), 
		@vsi_nro_trab = COUNT(trabajador)
    FROM fdt_bancos_tmp tns 
    WHERE tns.id_rep = @psi_id_rep
    AND tns.usuariow = @pvc_usuario
    AND tipo = 2
  
  DELETE
      fdt_bancos_resultados
  WHERE
      id_rep = @psi_id_rep AND
      usuariow = @pvc_usuario AND
      banco = @pti_banco

  INSERT INTO fdt_bancos_resultados
    (id_rep, usuariow, banco, trabajadores, valor_total)
  VALUES (@psi_id_rep, @pvc_usuario, @pti_banco, @vsi_nro_trab, @vdc_total)

	--si se debe generar reporte 
	IF EXISTS(SELECT 1 vnu_reporte
				    FROM fdt_rutas
				    WHERE operacion = 'FCO1070'
				    AND codigo = @pti_banco
				    AND tipo = 1)
	BEGIN --rep
		DELETE fdt_bancos_rep
		WHERE id_rep = @psi_id_rep AND
		usuariow = @pvc_usuario AND
		banco = @pti_banco

		INSERT INTO fdt_bancos_rep
		SELECT tns.id_rep, tns.usuariow,
		@pti_banco, @pdt_fecha, @pvc_responsable, 
		tns.trabajador, tns.importe, tns.cuenta_dep, tns.simbolo_mon
		FROM fdt_bancos_tmp tns
		WHERE tns.id_rep = @psi_id_rep
		AND tns.usuariow = @pvc_usuario
		AND tipo = 2
 	END--rep

END
GO
GRANT EXECUTE ON dbo.sp_fco_gen_bco_santander_ni TO PUBLIC
GO
