SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

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

Create PROCEDURE WPvta_Reporte_D151
                 @Fecha_Desde DATETIME,
                 @Fecha_Hasta DATETIME,
                 @Cod_Pvta char(5),
			  @Tipo_Cambio numeric(5,2),
			  @orden      int
			  
AS

/* 
   Date: Jan 05,2015
         Feb 05,2016
   Reporte de D-151      
    
   
*/

BEGIN

Set language us_english

--Declare @Fecha_Desde datetime,
--        @Fecha_Hasta datetime,
--        @Cod_Pvta char(5),
--        @Tipo_Cambio numeric(5,2),
--        @Orden tinyint


Declare @Filtro_Pvtas  nvarchar(100) = '',
        @Filtro_Fechas nvarchar(200) = '',
        @Filtro_Orden nvarchar(100),
        @vSql nvarchar(2000)
        
--Set @Fecha_Desde = '2016-01-28 00:00:00' 
--Set @Fecha_Hasta = '2016-01-28 23:59:59'
--Set @Tipo_Cambio = 1
--Set @Orden = 3

Create Table #ListaDocumentos
		  (Id_Pvta	int	,
		   Cod_Pvta	char	(5),
		   Id_Fact	int	,
		   Nro_Cheque	int	,
		   Nro_Documento varchar	(40),
		   Fecha_Cierre datetime	,
		   Estado	tinyint	,
		   Desc_Estado	varchar	(30),
		   Id_Cardex int	,
		   Cliente varchar	(50),
		   id_exen int	,
		   Id_Mone int	,
		   Cons_Turn  int	,
		   Importe_Neto money,
		   Vtas_Gravadas money,
		   Vtas_Exentas money,
		   Imp_Ventas money	,
		   Imp_Servicio	money,
		   Tax3 money,
		   Tax4 money,
		   Tax5 money,
		   Tax6 money)


Set @Filtro_Fechas =
    ' Where DATEDIFF(day, ' + CHAR(39) 
    + convert(varchar(25), @Fecha_Desde, 121)  
    + CHAR(39) + ', hfac.fecha_cier) >= 0' + char(13) 
    +'   and DATEDIFF(day, ' 
    + CHAR(39) + convert(varchar(25), @Fecha_Hasta, 121)  
    + CHAR(39) + ', hfac.fecha_cier) <= 0'

--Set @Cod_Pvta = null

If @Cod_Pvta is not null 
Begin
  Select @Filtro_Pvtas = 
         ' and hfac.id_pvta = '  + ltrim(str(Id_Pvta))
     From RESTPVTA
     Where cod_pvta = @Cod_Pvta

End

SELECT @Filtro_Orden= 
    CASE WHEN @orden = 1 THEN ' Order by nro_cheque'
         WHEN @orden = 2 THEN ' Order by Nro_Documento'
         WHEN @orden = 3 THEN ' Order by Cod_Pvta,Nro_Documento'
         ELSE '' END

 -- drop table ##ListaDocumentos


    Set @vSql =
       'SELECT  hfac.Id_Pvta,
		  pvta.Cod_Pvta,
		  hfac.Id_Fact,hfac.Nro_Cheque,
		  Nro_Documento = hfac.Nro_Docum,
		  Fecha_Cierre = hfac.Fecha_Cier,
		  hfac.Estado,hfac.Desc_Estado,
		  Id_Cardex = Coalesce(hfac.Id_Cardex,0),
		  Cliente = Coalesce(hfac.objeto_social,''''),
		  id_exen = coalesce(hfac.id_exen,0),
		  hfac.Id_Mone,
		  turn.Cons_Turn,
		  Importe_Neto   = dbo.Get_Total_Neto_Contable_Factura_Hist(hfac.id_fact),
		  Vtas_Gravadas = Vtas.Vtas_Gravadas,
		  Vtas_Exentas  = Vtas.Vtas_Exentas,
		  Imp_Ventas    = dbo.Get_Suma_Impu_Grupo_Hist_Fact(hfac.id_fact,1),
		  Imp_Servicio  = dbo.Get_Suma_Impu_Grupo_Hist_Fact(hfac.id_fact,2),
		  Tax3          = dbo.Get_Suma_Impu_Grupo_Hist_Fact(hfac.id_fact,3),
		  Tax4          = dbo.Get_Suma_Impu_Grupo_Hist_Fact(hfac.id_fact,4),
		  Tax5          = dbo.Get_Suma_Impu_Grupo_Hist_Fact(hfac.id_fact,5),
		  Tax6          = dbo.Get_Suma_Impu_Grupo_Hist_Fact(hfac.id_fact,6)
    FROM VRESTHFAC hfac
	    INNER JOIN RestPvta pvta ON hfac.id_pvta = pvta.id_pvta
	    INNER JOIN RestTurn turn ON hfac.id_turn = turn.id_turn
	    left  JOIN RESTCARE Care ON Care.id_cardex = hfac.id_refer
	    CROSS APPLY dbo.Pvta_Get_VentasGravadas(hfac.id_fact) Vtas ' + CHAR(13) 
	    + @Filtro_Fechas + CHAR(13)
	    + @Filtro_Pvtas  + CHAR(13)
	    + @Filtro_Orden 
 
--print @vSql
Insert Into #ListaDocumentos
Exec (  @vSql)


  Update #ListaDocumentos
	Set Importe_Neto = Importe_Neto * @Tipo_Cambio,
	    Vtas_Gravadas = Vtas_Gravadas * @Tipo_Cambio,
	    Vtas_Exentas  = Vtas_Exentas  * @Tipo_Cambio,
	    Imp_Ventas  = Imp_Ventas  * @Tipo_Cambio,
	    Imp_Servicio  = Imp_Servicio  * @Tipo_Cambio,
	    Tax3 = Tax3  * @Tipo_Cambio,
	    Tax4 = Tax3  * @Tipo_Cambio,
	    Tax5 = Tax3  * @Tipo_Cambio,
	    Tax6 = Tax3  * @Tipo_Cambio
	    

 Select Nro_Documento,
        Cliente,
        Vtas_Gravadas,Vtas_Exentas,
        Imp_Ventas,Imp_Servicio,
        Tax3,Tax4,Tax5,Tax6
    From #ListaDocumentos


End    


