CREATE OR REPLACE PROCEDURE sp_fdt_gen_medios_bancos
(
  psi_id_rep  smallint,
  pvc_usuario varchar2,
  pti_banco   number,
  pdt_fecha   varchar2 DEFAULT NULL,
  pvc_responsable varchar2 DEFAULT '',
  pti_origen number DEFAULT 1, -- 1: de NS, 2: de NI
  pti_filtra_cta number DEFAULT 0  --0: no filtra, 1: si filtra 
)
AS
/**********************************************************************/
/*** Modulo:      Módulo Fiscal ADAM V.3 - Medios Magneticos Bancos ***/
/*** Descripcion: Llama al procedimiento de generacion del archivo  ***/
/***              plano respectivo al banco recibido                ***/
/*** Autor:	  Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	  Marzo 14 de 2005. Version Oracle                      ***/
/**********************************************************************/
/*** Se hace la moficacion, para poder llamar el ***/
/*** sp de medios para interactiva. La unica condicion es que el  ***/
/*** medio sea igual en nombre al ns, con terminacion ni al final ***/
	vvc_proc_genera	varchar2(30);
	vvc_ssql			varchar2(2000);
	vvc_banco			varchar2(10);
  
  vin_id_cursor integer;
  vin_rows      integer;
  sComilla      char(1);
  ejecutar_sp   EXCEPTION;
  vnu_len       number(7);
BEGIN
  sComilla := chr(39);
	--trayendo el nombre del procedimiento
  vvc_proc_genera := '';
  vnu_len := 0;
  BEGIN 
  	SELECT proc_generacion
    INTO vvc_proc_genera
  	FROM fdt_bancos
  	WHERE banco = pti_banco;
    EXCEPTION
      WHEN NO_DATA_FOUND THEN vvc_proc_genera := '0';
      WHEN OTHERS THEN vvc_proc_genera := '';            
  END;  
	vvc_proc_genera := LTRIM(RTRIM(NVL(vvc_proc_genera,'')));
  vnu_len := NVL(LENGTH(vvc_proc_genera),0);  
  
  DBMS_OUTPUT.PUT_LINE('0 - vnu_len'||vnu_len);  
	IF vnu_len = 0 THEN
		vvc_banco := LTRIM(RTRIM(pti_banco));
    RAISE_APPLICATION_ERROR(-20001, 'Error de datos: No existe la funcion de generacion para el banco: '||vvc_banco);
    RETURN; 
	END IF;
  DBMS_OUTPUT.PUT_LINE('1 - vvc_proc_genera: '||ltrim(rtrim(vvc_proc_genera)));  
	IF pti_origen = 2 THEN -- viene de interactiva
		vvc_proc_genera := LTRIM(RTRIM(vvc_proc_genera)) || '_ni';
  END IF;  
	--armando la fecha
               
DBMS_OUTPUT.PUT_LINE('1A - pdt_fecha: '||pdt_fecha);  
	--armando la cadena a ejecutar
--  COMMIT;
--  SET TRANSACTION USE ROLLBACK SEGMENT RBS0;
  vvc_ssql := vvc_proc_genera || ' ' || '(' || RTRIM(psi_id_rep) || ',' ||
              sComilla || pvc_usuario || sComilla || ',' || RTRIM(pti_banco) || ',' ||
              sComilla || pdt_fecha || sComilla || ',' ||
              sComilla || pvc_responsable || sComilla || ',' ||
              RTRIM(pti_filtra_cta) || ');';
  BEGIN
DBMS_OUTPUT.PUT_LINE('2 - vvc_ssql: '||vvc_ssql);
      EXECUTE IMMEDIATE 'BEGIN '||vvc_ssql||' END;';
  EXCEPTION
      WHEN OTHERS THEN
          --RAISE ejecutar_sp;
          RAISE_APPLICATION_ERROR(-20002, SQLCODE||SQLERRM(SQLCODE));
          RETURN;
  END;
  COMMIT;

  EXCEPTION
  WHEN ejecutar_sp THEN
       RAISE_APPLICATION_ERROR(-20001, 'Error al ejecutar el procedimiento de medios del banco: '||vvc_banco);
       RETURN;                    
  WHEN OTHERS THEN
           RAISE_APPLICATION_ERROR(-20002, SQLCODE||SQLERRM(SQLCODE));
           RETURN;  
END;
/
CREATE PUBLIC SYNONYM sp_fdt_gen_medios_bancos FOR ADAM.sp_fdt_gen_medios_bancos;
GRANT EXECUTE ON sp_fdt_gen_medios_bancos TO adama;
