SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO

IF EXISTS (SELECT * FROM sys.objects 
   WHERE object_id = OBJECT_ID(N'Calc_Ing_Desg') )
DROP Procedure Calc_Ing_Desg
GO

Create PROCEDURE Calc_Ing_Desg
                 @id_cfag money , 
			     @aloj_precio money output, 
			     @aloj_porc numeric(4,2) output,
			     @pen_precio money output, 
			     @pen_porc numeric(4,2) output, 
			     @otr_precio money output, 
			     @otr_porc numeric(4,2) output

AS
/* procedimiento que dado un id_cfag (compuesto),
   calcula el desglose del mismo por Alojamiento,
   Pension y Otros  (por precio y por porciento) 
*/

begin
   Select @aloj_precio=SUM( CASE WHEN csim.tipo_csim <> 1 
		   	                     THEN 0 
	       			             ELSE  
	       			                CASE WHEN csim.csim_dp = 1 
	      				                 THEN 0 
						                 ELSE  
						                   CASE WHEN cscp.porciento = 0 
						                        THEN pres.precio_s 
						                        ELSE 0 END
							        END
				        	 END),
 		    @aloj_porc  = SUM ( CASE WHEN csim.tipo_csim <> 1 
		   	                         THEN 0 
	       			                 ELSE 
	       			                   CASE WHEN csim.csim_dp = 1 
	      				                    THEN 0 
						                    ELSE  
						                      CASE WHEN cscp.porciento = 1 
						                           THEN pors.porciento  
						                           ELSE 0 END
							           END
				        	      END),
		     @pen_precio = SUM (  CASE WHEN csim.tipo_csim <> 2 
		   	                           THEN 0 
	       			                   ELSE  
	       			                     CASE WHEN csim.csim_dp = 1 
	      				                      THEN 0 
						                      ELSE  
						                        CASE WHEN cscp.porciento = 0 
						                             THEN pres.precio_s 
						                             ELSE 0 END
							             END
				        	      END ) ,
 		    @pen_porc   =  SUM ( CASE WHEN csim.tipo_csim <> 2 
		   	                          THEN 0 
	       			                  ELSE  
	       			                    CASE WHEN csim.csim_dp = 1 
	      				                     THEN 0 
						                     ELSE  
						                       CASE WHEN cscp.porciento = 1 
						                            THEN pors.porciento
						                            ELSE 0 END
							            END
				        	      END ),
		     @otr_precio  = SUM ( CASE WHEN csim.tipo_csim <> 3 
		   	                           THEN 0 
	       			                   ELSE  
	       			                     CASE WHEN csim.csim_dp = 1 
	      				                      THEN 0 
						                      ELSE 
						                        CASE WHEN cscp.porciento = 0 
						                             THEN pres.precio_s 
						                             ELSE 0 END
							             END
				        	      END ) ,
 		    @otr_porc    =  SUM ( CASE WHEN csim.tipo_csim <> 3 
		   	                           THEN 0 
	       			                   ELSE  
	       			                     CASE WHEN csim.csim_dp = 1 
	      				                      THEN 0 
						                      ELSE  
						                        CASE WHEN cscp.porciento = 1 
						                             THEN pors.porciento  
						                             ELSE 0 END
							             END
				        	      END )
      	From Hotecomp comp
  		     Inner Join  Hotecsim  csim on comp.id_csim = csim.id_csim
             Left  Join  Hotecscp cscp on csim.id_csim  = cscp.id_csim
		     Left  Join  HotePres pres on csim.id_csim  = pres.id_csim
		     Left  Join  HotePors pors on csim.id_csim  = pors.id_csim				
		Where comp.id_cfag = @id_cfag     

    Select @aloj_precio = COALESCE (@aloj_precio,0),
           @aloj_porc   = COALESCE (@aloj_porc,0),
           @pen_precio  = COALESCE (@pen_precio,0),
           @pen_porc    = COALESCE (@pen_porc,0),
           @otr_precio  = COALESCE (@otr_precio,0),
           @otr_porc    = COALESCE (@otr_porc,0)

end


