
ALTER PROCEDURE [dbo].[a_sel_equiposAFacturar]
@p_filtro as varchar(5000)
as begin


execute('
declare @tablaEquipos as table (
id_detalle  int
,id_alquiler int
,id_equipo int
,docdevolucion varchar(50)
,tipocobro int
,detalle  varchar(300)
,serial  varchar(200)
,fechainiciofactura_fh datetime
,fechaUltimaFactura_fh  datetime
,ultimafac datetime
,fechaafacturar  datetime
,despacho  datetime
,devolucion  datetime
,valormulta money
,[StandBy]  money
,mhorometro  bit
,ultimalectura  smalldatetime
,cantidadstandby  float
,total money
,checked  varchar(10)
,periodoalquiler int
, id_catalogotarifa int
, id_itemtarifa int
, porciva float
,porcdto float
,diascalculo int
,reporte varchar(20)
,horometro float
,mesvencido bit
,promediohoras float
,ubicacion varchar(300)
,horometrodespacho smalldatetime
,horometrodevolucion smalldatetime
,tipotarifa int
,id_tipo int
)

--CARGO DATOS PRINCIPALES DE LA CONSULTA
insert into @tablaEquipos  (
 id_detalle  
,id_alquiler 
,id_equipo 
,docdevolucion
,tipocobro 
,detalle  
,serial  
,fechainiciofactura_fh 
,fechaUltimaFactura_fh  
,ultimafac 
,fechaafacturar  
,despacho  
,devolucion  
,valormulta 
,[StandBy]  
,mhorometro 
,ultimalectura  
,cantidadstandby  
,total 
,checked  
,periodoalquiler 
, id_catalogotarifa 
, id_itemtarifa 
, porciva 
,porcdto 
,diascalculo 
,reporte 
,horometro 
,mesvencido 
,promediohoras 
,ubicacion 
,horometrodespacho 
,horometrodevolucion 
,tipotarifa
,id_tipo)

select 
view_equ_detalleAlquiler.id   
,view_equ_detalleAlquiler.[id_documento.alquiler] 
,view_equ_detalleAlquiler.id_equipo 
,''''
,0
,view_equ_detalleAlquiler.equ_equipo_equipo 
,view_equ_detalleAlquiler.equ_equipo_equipo_serial 
,view_equ_detalleAlquiler.fechainiciofactura_fh
,view_equ_detalleAlquiler.fechaUltimaFactura_fh
,view_equ_detalleAlquiler.fechaUltimaFactura_fh 
,view_equ_detalleAlquiler.fechadevolucion_ff 
,view_equ_detalleAlquiler.fechadespacho_ff
,view_equ_detalleAlquiler.fechadevolucion_ff 
,view_equ_detalleAlquiler.valormulta 
,view_equ_detalleAlquiler.ValorHoraStandBy 
,modelo.manejaHorometro 
,null
,0
,0
,''true''
,0
,0
,0
,0
,0
,0
,''''
,0
,view_equ_detalleAlquiler.[doc_documento.alquiler_mesVencido]  mesvencido
,view_equ_detalleAlquiler.equ_equipo_promedioHoras
,view_equ_detalleAlquiler.ter_sucursal_Direccion 
,0
,0
,0
,0
from view_equ_detalleAlquiler 
inner join [cat_catalogo.equipo] modelo on modelo.id= view_equ_detalleAlquiler .[equ_equipo_id_catalogo.equipo]  
where view_equ_detalleAlquiler.id_equipo>0  and '+@p_filtro+'


--ACTUALIZO CON INFORMACION RELACIONADA A LA TRAZABILIDAD DEL EQUIPO EN  LA TABLA TEMPORAL

--EMPIEZO POR FECHA DE LECTURA
update @tablaEquipos
set ultimalectura =temp1.ultimalectura 
from  @tablaEquipos temp2
inner join (select max(traza.fecha_ff) ultimalectura 
			  , equipos.id_detalle
				from  @tablaEquipos  equipos
				inner join equ_trazabilidad traza on traza.active=1 
						and equipos.id_equipo=traza.id_equipo
				group by equipos.id_detalle  ) temp1
				on temp1.id_detalle =temp2.id_detalle 

--SIGO CON  HOROMETRO
update @tablaEquipos
set horometro  =traza.horometro  
from  @tablaEquipos  equipos
inner join equ_trazabilidad traza on traza.active=1 
		and equipos.id_equipo=traza.id_equipo  
		and equipos.ultimalectura =traza.fecha_ff 

--ACTUALIZO FECHAS DE DESPACHO Y DEVOLUCION 

update @tablaEquipos
set  horometrodespacho  =temp1.horometrodespacho 
	,horometrodevolucion =case when temp1.tipocobro =1 and temp1.idTipo=5   AND temp1.horometrodevolucion>0  then   dateadd(DD,-1,temp1.horometrodevolucion)  else  temp1.horometrodevolucion end 
	,fechaafacturar =case when temp1.tipocobro =1 and temp1.idTipo=5  AND temp1.horometrodevolucion>0 then   dateadd(DD,-1,temp1.horometrodevolucion)  else fechaafacturar end 
	,docdevolucion=temp1.docDevolucion 
	,tipocobro =temp1.tipocobro 
	,id_tipo=temp1.idTipo
from  @tablaEquipos temp2
inner join (select min(traza.fecha_ff) horometrodespacho
				  ,max(traza.fecha_ff) horometrodevolucion  
				  , equipos.id_detalle
				  ,max(doc.prefijo) +''-''+cast(max(doc.documento_numero) as varchar(50))  docDevolucion
				  ,max(subtipo.tipocobro)  tipocobro
				  ,max(subtipo.id_tipodocumento) idTipo
					from  @tablaEquipos  equipos
					inner join equ_trazabilidad traza on traza.active=1 
					and equipos.id_equipo=traza.id_equipo
					and equipos.id_alquiler =traza.[id_documento.alquiler]
					and traza.id_equipo>0
					left join [doc_documento.entrada] entrada on entrada.id=traza.id_documento
					left join [doc_documento] doc on doc.id=entrada.id
					left join[doc_subtipoDocumento] subtipo on subtipo.id=doc.id_subtipoDocumento
					
					group by equipos.id_detalle  ) temp1
					on temp1.id_detalle =temp2.id_detalle 




select  id_detalle  
,id_alquiler 
,id_equipo 
,docdevolucion
,tipocobro 
,detalle  
,serial  
,fechainiciofactura_fh 
,fechaUltimaFactura_fh  
,ultimafac 
,fechaafacturar  
,despacho  
,devolucion  
,valormulta 
,[StandBy]  
,mhorometro 
,ultimalectura  
,cantidadstandby  
,total 
,checked  
,periodoalquiler 
, id_catalogotarifa 
, id_itemtarifa 
, porciva 
,porcdto 
,diascalculo 
,reporte 
,horometro 
,mesvencido 
,promediohoras 
,ubicacion 
,horometrodespacho 
,horometrodevolucion 
,tipotarifa
,id_tipo
from @tablaEquipos ')

end