SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

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

Create FUNCTION Pvta_Get_VentasGravadas
                (@Id_Factura int)

RETURNS @TempVentas Table
        (Vtas_Gravadas   numeric(12,4),
         Vtas_Exentas    numeric(12,4),
         Vtas_Gravadas_2 numeric(12,4),
         Vtas_Exentas_2  numeric(12,4))
AS
/* 
   Date: Feb 02,2016
         Feb 17,2016
         
   Obtiene un tabla con la información,
   de las ventas gravadas y exentas,
   estos es porque en punto de ventas,
   hay articulos que pueden ser exentos,
   y tambien se puede aplicar una exension 
   de impuestos de toda la factura
   
*/   
BEGIN
Declare @Exento int

/* Esto es solo para consulta manual   
   No Borrar
*/
--Declare @Id_Factura int
--Declare @TempVentas Table
--        (Vtas_Gravadas numeric(12,2),
--         Vtas_Exentas numeric(12,2),
--         Vtas_Gravadas_2 numeric(12,2),
--         Vtas_Exentas_2 numeric(12,2))
--Set @Id_Factura = 59942
--Set @Exento = 1


/* ==========================
   Region 01
   Insertar registro en blanco
   ==========================
*/
	Insert Into @TempVentas
		Values(0,0,0,0)

/* ==========================================
   Region 02
   verifica si la factura,
   tiene una exencion de impuestos
   ==========================================
*/
	 Select @Exento = id_exen 
		From RESTHFAC 
		Where id_fact = @Id_Factura

	  Declare @Result          numeric(19,4) = 0,
			  @Vtas_Gravadas   numeric(19,4) = 0,
			  @Vtas_Exentas    numeric(19,4) = 0,
			  @Vtas_Gravadas_2 numeric(19,4) = 0,
			  @Vtas_Exentas_2  numeric(19,4) = 0

/* ==========================================
   Region 03
   ==========================================
*/
   Select @Vtas_Gravadas_2 = Sum(Precio)
	           From Pvta_FacturaH_Linea c
	           Where id_fact = @Id_Factura
	            and c.id_fali in (
	                  Select Id_Fali
	                     From Pvta_FacturaH_Impuestos
	                     Where Id_Impu IN(2))

     Select @Vtas_Exentas_2 =
       ( Select v2= sum(Precio)
	          From Pvta_FacturaH_Linea
	           Where id_fact = @Id_Factura)
	     -
	    (Select sum(Precio)
	           From Pvta_FacturaH_Linea c
	           Where id_fact = @Id_Factura
	            and c.id_fali in (
	                  Select Id_Fali
	                     From Pvta_FacturaH_Impuestos
	                     Where Id_Impu IN(2)))
      
/* ============================================
   Ventas Gravadas y la factura no esta exenta 
   ============================================ 
*/
	If @Exento is null
	Begin
		--Set @Result  = 0 
		Select @Vtas_Gravadas = Sum(Precio)
		  From Pvta_FacturaH_Linea c
		  Where id_fact = @Id_Factura
	      
		Set @Vtas_Exentas = 0   
	      
	End

/* ============================================
   Venta de articulos Exentos y 
   la factura es exenta  
   ============================================
*/
	If @Exento is not null
	Begin
		Select @Vtas_Exentas = Sum(Precio)
		  From Pvta_FacturaH_Linea c
		  Where id_fact = @Id_Factura
	      
		Set @Vtas_Gravadas = 0   
	      
	End

/* ============================================
   Ventas Gravadas y la factura no esta exenta  
   pero hay articulos sin impuestos
   ============================================
*/
	If @Vtas_Gravadas <> @Vtas_Gravadas_2 and @Exento is null
	Begin
	   
		 Set @Vtas_Gravadas = @Vtas_Gravadas_2
		 Set @Vtas_Exentas  = @Vtas_Exentas_2

	End 

    Update @TempVentas
       Set Vtas_Gravadas   = @Vtas_Gravadas,
           Vtas_Exentas    = @Vtas_Exentas,
           Vtas_Gravadas_2 = @Vtas_Gravadas_2,
           Vtas_Exentas_2  = @Vtas_Exentas_2

  Return 

END





