CREATE TABLE fco_autorizaciones 
(
  compania char(4) NOT NULL ,
  sucursal char(10) NULL,
  autorizacion number(10,0) NOT NULL ,
  numero varchar2(10) NOT NULL ,
  tipo_incapacidad char(1) NOT NULL ,
  tipo_entidad char(1) NOT NULL ,
  cod_entidad char(10) NOT NULL ,
  fecha date NULL ,
  periodo char(6) NOT NULL ,
  ausentismo number(10,0) NULL ,
  descontar_ala char(1) NOT NULL ,
  valor_total number(13,2) NULL 
)
TABLESPACE TS_ADAMDATOS;

CREATE PUBLIC SYNONYM fco_autorizaciones FOR ADAM.fco_autorizaciones;
GRANT ALL ON fco_autorizaciones TO ADAMA;

CREATE TABLE fco_autorizaciones_det 
(
	compania char(4) NOT NULL ,
	autorizacion number(10,0) NOT NULL ,
	trabajador char(10) NOT NULL ,
	valor number(12,2) NULL 
)
TABLESPACE TS_ADAMDATOS;

CREATE PUBLIC SYNONYM fco_autorizaciones_det FOR ADAM.fco_autorizaciones_det;
GRANT ALL ON fco_autorizaciones_det TO ADAMA;
CREATE OR REPLACE PROCEDURE sp_fco_alta_autorizaciones_det
(
  i_compania	char,
  i_autorizacion	number,
  i_trabajador	char,
  i_valor		number
)
AS
BEGIN
	BEGIN
		INSERT INTO fco_autorizaciones_Det VALUES 
    (i_compania,
    i_autorizacion,
    i_trabajador,
    i_valor);
	EXCEPTION
     		WHEN OTHERS THEN
         	raise_application_error(-20001, 'Error al tratar de insertar en la tabla [fco_autorizaciones_det]');
	 	return;
	END;
	COMMIT WORK;
END;
/
CREATE PUBLIC SYNONYM sp_fco_alta_autorizaciones_det FOR ADAM.sp_fco_alta_autorizaciones_det;
GRANT EXECUTE ON sp_fco_alta_autorizaciones_det TO adama;
CREATE OR REPLACE PROCEDURE sp_fco_alta_autorizaciones
(
  i_compania		char,
  i_sucursal      	char,
  i_numero	    	varchar2,
  i_tipo_incapacidad 	char,
  i_tipo_entidad	    	char,
  i_cod_entidad	    	char,
  i_fecha	    		date,
  i_periodo 	    	char,
  i_ausentismo	    	number,
  i_descontar_ala    	char,
  i_valor_total	    	number
)
AS
	w_autorizacion		number(9,0); ---consecutivo
BEGIN
	w_autorizacion := 0;

	SELECT NVL(Max(autorizacion),0) + 1
	INTO w_autorizacion
	FROM fco_autorizaciones
	WHERE compania = i_compania;

	BEGIN
		INSERT INTO fco_autorizaciones VALUES 
    (i_compania,
    i_sucursal,
    w_autorizacion,
    i_numero,
    i_tipo_incapacidad,
    i_tipo_entidad,
    i_cod_entidad,
    i_fecha,
    i_periodo,
    i_ausentismo,
    i_descontar_ala,
    i_valor_total);
	EXCEPTION
     		WHEN OTHERS THEN
         	raise_application_error(-20001, 'Error al tratar de insertar en la tabla [fco_autorizaciones]');
	 	return;
	END;
	COMMIT WORK;
END;
/

CREATE PUBLIC SYNONYM sp_fco_alta_autorizaciones FOR ADAM.sp_fco_alta_autorizaciones;
GRANT EXECUTE ON sp_fco_alta_autorizaciones TO adama;

CREATE OR REPLACE PROCEDURE sp_fco_baja_autorizaciones
(
  i_compania	    char,
  i_autorizacion	    number
)
AS
BEGIN
	BEGIN
		DELETE fco_autorizaciones_det
		WHERE compania = i_compania And
         	To_Number(autorizacion,0) = To_Number(i_autorizacion,0);
	EXCEPTION
		WHEN OTHERS THEN 
			raise_application_error(-20001, 'Error al tratar de borrar de la tabla [fco_autorizaciones_det]');
			return;
	END;		

	BEGIN
		DELETE fco_autorizaciones
		WHERE compania = i_compania And
          To_Number(autorizacion,0) = To_Number(i_autorizacion,0);
	EXCEPTION
		WHEN OTHERS THEN
			raise_application_error(-20001, 'Error al tratar de borrar de la tabla [fco_autorizaciones]');
			return;
	END;

	COMMIT WORK;
END;
/

CREATE PUBLIC SYNONYM sp_fco_baja_autorizaciones FOR ADAM.sp_fco_baja_autorizaciones;
GRANT EXECUTE ON sp_fco_baja_autorizaciones TO adama;

CREATE OR REPLACE PROCEDURE sp_fco_baja_autorizaciones_det
(
    i_compania        char,
    i_autorizacion    number,
    i_trabajador      char
)
AS
BEGIN

	IF i_trabajador Is Null Or i_trabajador = '0' THEN
      DELETE fco_autorizaciones_det
      WHERE compania = i_compania And
      autorizacion = i_autorizacion;
	ELSE
      DELETE fco_autorizaciones_det
      WHERE compania = i_compania And
      autorizacion = i_autorizacion And
      trabajador = i_trabajador;
	END IF;
	COMMIT WORK;
END;
/

CREATE PUBLIC SYNONYM sp_fco_baja_autorizaciones_det FOR ADAM.sp_fco_baja_autorizaciones_det;
GRANT EXECUTE ON sp_fco_baja_autorizaciones_det TO adama;

