USE [SevenSIO]
GO
/****** Object:  StoredProcedure [dbo].[SIO_Reserva_PutInfo]    Script Date: 04/19/2016 10:05:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[SIO_Reserva_PutInfo]
	@id_rese INT,
	@id_json INT,
	@orbe_id VARCHAR(50),
	@estado  VARCHAR(50),
	@moneda  VARCHAR(50),
	@fecha DATETIME,
	@fecha_ent DATE,
	@fecha_sal DATE,
	@nombre VARCHAR(40),
	@nacionalidad VARCHAR(255),
	@telefono VARCHAR(15),
	@email VARCHAR(80),
	@observaciones VARCHAR(4000),
	@ninos VARCHAR(500),
	@precio_final NUMERIC(18, 2),
	@id_rese_fdk INT,
	@nro_reserva INT,
	@eliminado BIT
AS
BEGIN
	DECLARE @MensajeError VARCHAR(255) = ''

	IF @eliminado = 0
	BEGIN

		IF @id_rese = 0
		BEGIN
		
			-- Crear
			
			DECLARE @id_estado INT = 3 -- Solicitada
			DECLARE @id_mone INT = (SELECT TOP 1 id_mone FROM SICLAMON WHERE LTRIM(RTRIM(UPPER(cod_mone))) = LTRIM(RTRIM(UPPER(@moneda))))
			DECLARE @id_naci INT = (SELECT TOP 1 id_naci FROM HOTENACI WHERE LTRIM(RTRIM(UPPER(nacionalidad))) IN 
										(SELECT TOP 1 LTRIM(RTRIM(UPPER(fdk_naci))) FROM ORBENACI WHERE orbe_naci = @nacionalidad))
										
			IF ISNULL(@id_mone, 0) = 0
			BEGIN
				SET @MensajeError = 'Moneda inexistente (' + @moneda + ')'
				GOTO ERROR
			END
			
			DECLARE @nacionalidad_old VARCHAR(255) = ''
			
			-- En ciertos casos envía el nombre del país y no el código
			IF ISNULL(@id_naci, 0) = 0
			BEGIN
				SET @nacionalidad_old = @nacionalidad
				SET @nacionalidad = (SELECT TOP 1 codigo_pais FROM MIGRNACI WHERE LTRIM(RTRIM(UPPER(nombre_pais))) = LTRIM(RTRIM(UPPER(@nacionalidad))))
				IF LEN(LTRIM(RTRIM(@nacionalidad))) > 0
				BEGIN
					SET @id_naci = (SELECT TOP 1 id_naci FROM HOTENACI WHERE LTRIM(RTRIM(UPPER(nacionalidad))) IN 
											(SELECT TOP 1 LTRIM(RTRIM(UPPER(fdk_naci))) FROM ORBENACI WHERE orbe_naci = @nacionalidad))
				END
			END
			
			-- Si no se encuentra la nacionalidad se asigna la predeterminada y se guarda la que no se encontró
			IF ISNULL(@id_naci, 0) = 0
			BEGIN
				SET @id_naci = (SELECT TOP 1 default_nac FROM HOTETABL)
				SET @nacionalidad = @nacionalidad_old
				INSERT INTO ORBEUNNA (id_json, orbe_naci) VALUES (@id_json, @nacionalidad)
			END
			
			SET @observaciones = 'ORBE ID: ' + @orbe_id + CHAR(13) + CHAR(10) 
				+ 'ESTADO: ' + CASE LTRIM(RTRIM(LOWER(@estado))) 
				                    WHEN 'created' THEN 'Creada' 
				                    WHEN 'paid'    THEN 'Pagada' 
				                    ELSE @estado END + CHAR(13) + CHAR(10) 
				+ CASE LEN(LTRIM(RTRIM(@ninos)))
				       WHEN 0 THEN ''
				       ELSE 'NIÑOS: ' + CHAR(13) + CHAR(10) + @ninos + CHAR(13) + CHAR(10)
				       END
				+ 'COMENTARIOS DEL CLIENTE:' + CHAR(13) + CHAR(10)
				+ @observaciones
		
			INSERT INTO ORBERESE
			(
				id_json, orbe_id, id_estado, 
				id_mone, fecha, fecha_ent, fecha_sal, 
				nombre, id_naci, telefono, email, 
				observaciones, precio_final, 
				id_rese_fdk, nro_reserva
			)
			VALUES
			(
				@id_json, @orbe_id, @id_estado, 
				@id_mone, @fecha, @fecha_ent, @fecha_sal, 
				@nombre, @id_naci, @telefono, @email, 
				@observaciones, @precio_final, 
				0, 0
			)

			SET @id_rese = @@IDENTITY
		
		END

	END

	SELECT @id_rese AS Id
	
	RETURN

	ERROR:
		RAISERROR (@MensajeError, 16, 1)

END
