
IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'for_repuestosXalquiler')
DROP PROCEDURE [dbo].[for_repuestosXalquiler]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'for_equiposXalquiler')
DROP PROCEDURE [dbo].[for_equiposXalquiler]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'for_condicionXalquiler')
DROP PROCEDURE [dbo].[for_condicionXalquiler]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'for_alquiler')
DROP PROCEDURE [dbo].[for_alquiler]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'for_tarifaXalquiler')
DROP PROCEDURE [dbo].[for_tarifaXalquiler]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'for_liquidacionXalquiler')
DROP PROCEDURE [dbo].[for_liquidacionXalquiler]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'for_detalleMovimiento')
DROP PROCEDURE [dbo].[for_detalleMovimiento]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'for_saldoEventoXalquiler')
DROP PROCEDURE dbo.[for_saldoEventoXalquiler]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'for_detalleEventosXalquiler')
DROP PROCEDURE dbo.[for_detalleEventosXalquiler]
GO



IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'rep_listadoGeneralDeRepuestosAlq')
DROP PROCEDURE [dbo].[rep_listadoGeneralDeRepuestosAlq]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'rep_cobrosRealizadosAlquiler')
DROP PROCEDURE [dbo].[rep_cobrosRealizadosAlquiler]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'rep_proyeccionfac')
DROP PROCEDURE [dbo].[rep_proyeccionfac]
GO


IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'rep_ingresoCostoXEquipo')
DROP PROCEDURE [dbo].rep_ingresoCostoXEquipo
GO


IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'rep_disponibilidadEquipo_reporte')
DROP PROCEDURE [rep_disponibilidadEquipo_reporte]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'con_maestroEstados_equipo')
DROP PROCEDURE [con_maestroEstados_equipo]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'FN' AND name = 'f_horasTotalesMes')
DROP FUNCTION [f_horasTotalesMes]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'FN' AND name = 'f_horasVaradoEquipo')
DROP FUNCTION [f_horasVaradoEquipo]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'ind_nivelLiquidacionEstadoValor')
DROP PROCEDURE [ind_nivelLiquidacionEstadoValor]
GO

GO
/****** Object:  StoredProcedure [dbo].[for_alquiler]    Script Date: 26/02/2016 10:20:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[for_alquiler]
	@p_id INT,
	@p_eid varchar(100)
AS
BEGIN

	select [doc_documento.alquiler].[documento.alquiler] as alquiler,doc_documento.documento_codigo,
			doc_documento.documento,
			[doc_documento].fecha_fh,
			[doc_documento.alquiler].fechaFin_ff,
			ter_tercero.tercero,ter_tercero.tercero_nit,ter_tercero.direccion,ter_tercero.telefono,
			seg_usuario.nombre,
			doc_documento.prefijo + ' - ' + convert(varchar,doc_documento.documento_numero) as alq

	from	[doc_documento.alquiler] inner join
			doc_documento on doc_documento.id=[doc_documento.alquiler].id inner join
			ter_tercero on ter_tercero.id=[doc_documento].id_tercero_cliente inner join
			seg_usuario on seg_usuario.id=[doc_documento.alquiler].id_usuario_creo 
			

WHERE     
	([doc_documento.alquiler].id = @p_id) AND ([doc_documento.alquiler].active = 1) AND ([doc_documento.alquiler].eid LIKE @p_eid + '%')
END


GO



CREATE PROCEDURE for_equiposXalquiler
	@p_id INT,
	@p_eid varchar(100)

AS
BEGIN

SELECT equ_equipo.equipo as detalleAlquiler, equ_detalleAlquiler.detalleAlquiler_codigo, fechaDevolucion_ff,
fechaDespacho_ff,
equ_equipo.equipo_serial,
--cat_catalogo.catalogo,cat_catalogo.codigoInventario,
-- doc_itemDocumento.valorUnitarioPlaneado,
ter_sucursal.sucursal


FROM
	doc_documento inner join
	[doc_documento.alquiler] as alquiler on alquiler.id=doc_documento.id inner join
	equ_detalleAlquiler on (equ_detalleAlquiler.[id_documento.alquiler]=alquiler.id AND equ_detalleAlquiler.id_equipo>0) inner join
	ter_sucursal on ter_sucursal.id=equ_detalleAlquiler.id_sucursal inner join
	equ_equipo on equ_equipo.id=equ_detalleAlquiler.id_equipo --left join
	--alq_tarifa on alq_tarifa.id_detalleAlquiler =equ_detalleAlquiler.id left join
	--doc_itemDocumento on alq_tarifa.id_itemDocumento = doc_itemDocumento.id left join
	--cat_catalogo on cat_catalogo.id=doc_itemDocumento.id_catalogo

WHERE doc_documento.id=@p_id and doc_documento.active=1 and equ_detalleAlquiler.active=1

ORDER BY sucursal
END

GO


CREATE PROCEDURE for_repuestosXalquiler
@p_id as INT,
@p_eid as varchar(100)

AS
BEGIN
	SELECT 
		cat_catalogo.catalogo,cat_catalogo.codigoInventario,
		equ_detalleAlquiler.detalleAlquiler,equ_detalleAlquiler.detalleAlquiler_codigo,
		equ_detalleAlquiler.cantidadAlquilada, equ_detalleAlquiler.fechaDespacho_ff, equ_detalleAlquiler.fechaDevolucion_ff,
		ter_sucursal.sucursal

	FROM
		doc_documento inner join
	[doc_documento.alquiler] as alquiler on alquiler.id=doc_documento.id inner join
	equ_detalleAlquiler on (equ_detalleAlquiler.[id_documento.alquiler]=alquiler.id AND equ_detalleAlquiler.id_catalogo>0) inner join
	ter_sucursal on ter_sucursal.id=equ_detalleAlquiler.id_sucursal inner join
	cat_catalogo on cat_catalogo.id=equ_detalleAlquiler.id_catalogo --left join
	
	WHERE
		doc_documento.id=@p_id and doc_documento.active=1 and equ_detalleAlquiler.active=1
	ORDER BY
		ter_sucursal.sucursal


END

GO


CREATE PROCEDURE for_tarifaXalquiler
@p_id as INT,
@p_eid as varchar(100)

AS
BEGIN

SELECT 
	cat_catalogo.catalogo,cat_catalogo.catalogo_codigo,cat_catalogo.codigoInventario,
	doc_itemDocumento.itemDocumento, doc_itemDocumento.valorUnitarioPlaneado, doc_itemDocumento.cantidadPlaneado, 
	doc_itemDocumento.cantidadEjecutado
FROM
	doc_documento inner join
	[doc_documento.alquiler] as alquiler on alquiler.id=doc_documento.id inner join
	doc_itemDocumento on doc_itemDocumento.id_documento=doc_documento.id inner join
	cat_catalogo on cat_catalogo.id=doc_itemDocumento.id_catalogo inner join
	[cat_catalogo.otro] as otro on (otro.id=cat_catalogo.id and otro.periodoAlquiler=0)

WHERE
		doc_documento.id=@p_id and doc_documento.active=1 and doc_itemDocumento.active=1
		and doc_itemDocumento.id_catalogo>0

END


GO


CREATE PROCEDURE for_condicionXalquiler
@p_id as INT,
@p_eid as varchar(100)

AS
BEGIN

SELECT 
	doc_documentoAtributo.documentoAtributo
FROM 
	doc_documento inner join
	[doc_documento.alquiler] as alquiler on alquiler.id=doc_documento.id inner join
	doc_documentoAtributo on doc_documentoAtributo.id_documento=doc_documento.id inner join
	cat_atributo on cat_atributo.id=doc_documentoAtributo.id_atributo

WHERE
	doc_documento.id=@p_id and doc_documento.active=1 and doc_documentoAtributo.active=1 and
	cat_atributo.atributo='condiciones'

END

GO



CREATE PROCEDURE [dbo].[for_liquidacionXalquiler]
	@p_id INT,
	@p_eid varchar(100)
AS
BEGIN

SELECT 
	cat.codigoInventario, item.itemDocumento, item.cantidadPlaneado, doc_p.fecha_fh, 
	item.valorUnitarioPlaneado, item.totalPlaneado,
	doc_p.prefijo + '-' + cast(doc_p.documento_numero as varchar(100)) as documento
	
FROM
	[doc_documento.alquiler] as alq inner join
	doc_documento as doc_a on doc_a.id=alq.id inner join
	doc_documento as doc_p on doc_p.id_documento=alq.id inner join
	[doc_documento.cotizacion] as pre on pre.id=doc_p.id inner join
	doc_itemDocumento as item on item.id_documento=doc_p.id inner join
	cat_catalogo as cat on cat.id=item.id_catalogo
	
WHERE
	([alq].id = @p_id) AND ([alq].active = 1) AND ([alq].eid LIKE @p_eid + '%')
	and item.id_catalogo>0
	
END

GO

CREATE PROCEDURE for_detalleMovimiento 
@p_id as INT,
@p_eid as VARCHAR(100)

AS BEGIN


SELECT cat.codigoInventario, item.itemDocumento,item.cantidadPlaneado,
doc_documento.fecha_fh,
doc_documento.prefijo + '-' + cast(doc_documento.documento_numero as varchar(100)) as documento,
tipo.tipodocumento
FROM
	doc_documento inner join
	[doc_documento.alquiler] as alq on alq.id=doc_documento.id_documento inner join
	doc_subtipoDocumento as sub on sub.id=doc_documento.id_subtipoDocumento inner join
	doc_tipoDocumento as tipo on tipo.id=sub.id_tipoDocumento inner join
	doc_itemDocumento as item on item.id_documento=doc_documento.id inner join
	cat_catalogo as cat on cat.id=item.id_catalogo
	
WHERE
	([alq].id = @p_id) AND ([alq].active = 1) AND ([alq].eid LIKE @p_eid + '%')
	AND tipo.id in (5,6)

END

----------------------------------



/****** Object:  UserDefinedFunction [dbo].[AlquilerEquipo]    Script Date: 03/07/2016 11:35:35 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[AlquilerEquipo]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[AlquilerEquipo]
GO

/****** Object:  UserDefinedFunction [dbo].[AlquilerEquipo]    Script Date: 03/07/2016 11:35:35 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

create function [dbo].[AlquilerEquipo](@p_idEquipo int) returns varchar(100)
as 
begin

declare @retorno varchar(100)

select @retorno=doc_documento.prefijo+cast(doc_documento.documento_numero as varchar(10))
from equ_detalleAlquiler DA
     inner join [doc_documento.alquiler] ALQ on ALQ.id=DA.[id_documento.alquiler]
	 inner join doc_documento on doc_documento.id=ALQ.id
where DA.id_equipo=@p_idEquipo and DA.active=1
order by fechaDespacho_ff 

return @retorno
end

GO






CREATE PROCEDURE rep_listadoGeneralDeRepuestosAlq
@p_id as INT =0,
	@p_tercero as INT = 0,
	@p_esEmpresaPropia as INT = 0,
	@p_zona as INT = 0,
	@p_sucursal as INT = 0,
	@p_catalogo_equipo as INT = 0,
	@p_marca as INT = 0,
	@p_familia as INT = 0,
	@p_contrato as INT = 0,
	@p_subtipoCatalogo as INT = 0,
	@p_vencimientoGarantiaDistribuidor_ff as smalldatetime = null,
	@p_vencimientoGarantiaDistribuidor_ff_b as smalldatetime = null,
	@p_fechaPuestaMarcha_fh as smalldatetime = null,
	@p_fechaPuestaMarcha_fh_b as smalldatetime = null,
	@p_activo as int = -1,
	@p_eid varchar(100)

AS
BEGIN

SELECT cat.codigoInventario, cat.catalogo as descripcion, 
(SELECT sum(existencia) FROM cat_catalogo_bodega as c_b WHERE c_b.active=1 AND c_b.id_catalogo=cat.id) as enBodega,
(SELECT sum(cantidadAlquilada) FROM equ_detalleAlquiler as da WHERE da.active=1 AND da.id_catalogo=cat.id) as alquilado
FROM
	cat_catalogo as cat inner join
	[cat_catalogo.repuesto] as rep on rep.id=cat.id 
	inner join	equ_detalleAlquiler on (equ_detalleAlquiler.id_catalogo=cat.id AND equ_detalleAlquiler.active=1)
	inner join doc_documento as doc on doc.id=equ_detalleAlquiler.[id_documento.alquiler]
	inner join ter_tercero as ter on ter.id=doc.id_tercero_cliente
	--que solo salgan los que han estado alquilados

WHERE
	cat.active=1 AND cat.eid like @p_eid + '%'
	AND (@p_tercero=0 or ter.id = @p_tercero)

GROUP BY cat.codigoInventario, cat.catalogo, cat.id

ORDER BY cat.id

END


-------------------------------------------------
---------------Cobros_1---------------
-------------------------------------------
GO

CREATE PROCEDURE rep_cobrosRealizadosAlquiler
	@p_tercero as INT = 0,
	@p_fecha_fh as smalldatetime = null,
	@p_fecha_fh_b as smalldatetime = null,
	@p_eid varchar(100)

AS BEGIN

SELECT ter.tercero,cat.codigoInventario,cat.catalogo,
 sum(item.cantidadPlaneado) as cantidad, sum(item.totalPlaneado) as total

FROM 
	doc_documento inner join
	[doc_documento.cotizacion] as cot_ on cot_.id=doc_documento.id
	inner join doc_itemDocumento as item on (item.id_documento=cot_.id and item.id_catalogo>0)
	inner join [doc_documento.alquiler] as alq on alq.id=doc_documento.id_documento
	inner join cat_catalogo as cat on cat.id=item.id_catalogo
	inner join ter_tercero as ter on ter.id=doc_documento.id_tercero_cliente

WHERE
	(@p_tercero=0 or ter.id = @p_tercero)
			and (@p_fecha_fh is null or doc_documento.fecha_fh >= @p_fecha_fh)
			and (@p_fecha_fh_b is null or doc_documento.fecha_fh <= @p_fecha_fh_b)
			and doc_documento.eid like @p_eid + '%'
			and doc_documento.active=1

GROUP BY ter.tercero,cat.codigoInventario,cat.catalogo
END




-------------------------------------------------
---------------Cobros_2---------------
-------------------------------------------
GO

CREATE PROCEDURE rep_cobrosDetalleRealizadosAlquiler
	@p_tercero as INT = 0,
	@p_fecha_fh as smalldatetime = null,
	@p_fecha_fh_b as smalldatetime = null,
	@p_eid varchar(100)

AS BEGIN

SELECT ter.tercero,doc_documento.prefijo + '-' + cast(doc_documento.documento_numero as varchar(100)) as documento,
doc_documento.fecha_fh, 
item.itemDocumento, item.cantidadPlaneado, item.totalPlaneado, item.id

FROM 
	doc_documento inner join
	[doc_documento.cotizacion] as cot_ on cot_.id=doc_documento.id
	inner join doc_itemDocumento as item on (item.id_documento=cot_.id and item.id_catalogo>0)
	inner join [doc_documento.alquiler] as alq on alq.id=doc_documento.id_documento
	inner join cat_catalogo as cat on cat.id=item.id_catalogo
	inner join ter_tercero as ter on ter.id=doc_documento.id_tercero_cliente

WHERE
	(@p_tercero=0 or ter.id = @p_tercero)
	and (@p_fecha_fh is null or doc_documento.fecha_fh >= @p_fecha_fh)
	and (@p_fecha_fh_b is null or doc_documento.fecha_fh <= @p_fecha_fh_b)
	and doc_documento.eid like @p_eid + '%'
	and doc_documento.active=1
	and item.active=1

END

GO
-----------------------------

CREATE PROCEDURE [dbo].[rep_proyeccionfac]
		@p_tercero as INT = 0,
		@p_desde_fh as smalldatetime = null,
		@p_desde_fh_b as smalldatetime = null,
		@p_eid varchar(100)
AS
BEGIN
-- equipos en alquiler que deben liquidarse y que cumplen sus periodos de liquidacion ok

SELECT equ_detalleAlquiler.id, 
doc_documento.prefijo + '-' + cast(doc_documento.documento_numero as varchar) as numero, doc_documento.documento, 
case when equ_equipo.id>0 then equ_equipo.equipo else cat_catalogo.catalogo end as equipo, 
case when equ_equipo.id>0 then equ_equipo.equipo_serial else cat_catalogo.codigoInventario end as equipo_serial, 
ter_tercero.tercero,
cat_listaPrecio.listaPrecio, 
ter_sucursal.sucursal,
equ_detalleAlquiler.fechaDespacho_ff as despacho, 
(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end) as Ultima_Liquidacion,
dateadd(month,datediff(month,(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end),@p_desde_fh_b)-(case alq.mesVencido when 1 then 1 else 0 end ),(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end)) as siguienteCorte, -- la fecha de la ultima factura con la fecha de corte

cast((select top 1 doc_itemdocumento.valorUnitarioPlaneado  from doc_itemdocumento, [cat_catalogo.otro] where doc_itemdocumento.id_catalogo = [cat_catalogo.otro].id and [cat_catalogo.otro].periodoAlquiler = equ_detalleAlquiler.valorPeriodo and  doc_itemdocumento.id_documento = alq.id and doc_itemdocumento.active = 1 and doc_itemdocumento.id in (SELECT id_itemDocumento FROM alq_tarifa where id_detalleAlquiler=equ_detalleAlquiler.id)) as int) as valorPeriodo,
(case when valorPeriodo = 2 then 'Dia' when valorPeriodo = 4 then 'Semana' else 'Mes' end) as periodo,
(case when equ_detalleAlquiler.id_equipo>0 then 1 else equ_detalleAlquiler.cantidadAlquilada end) as cantidad,
--
cast((case 
when valorPeriodo = 2 then datediff(day,(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end),dateadd(month,datediff(month,(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end),@p_desde_fh_b)-(case [alq].mesVencido when 1 then 1 else 0 end ),(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end))) * (select top 1 doc_itemdocumento.valorUnitarioPlaneado  from doc_itemdocumento, [cat_catalogo.otro] where doc_itemdocumento.id_catalogo = [cat_catalogo.otro].id and [cat_catalogo.otro].periodoAlquiler = equ_detalleAlquiler.valorPeriodo and doc_itemdocumento.id_documento = alq.id and doc_itemdocumento.active = 1 and doc_itemDocumento.id in (SELECT id_itemDocumento FROM alq_tarifa where id_detalleAlquiler=equ_detalleAlquiler.id)) * (case when equ_detalleAlquiler.id_equipo>0 then 1 else equ_detalleAlquiler.cantidadAlquilada end)
when valorPeriodo = 4 then datediff(day,(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end),dateadd(month,datediff(month,(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end),@p_desde_fh_b)-(case alq.mesVencido when 1 then 1 else 0 end ),(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end))) * (select top 1 round((doc_itemdocumento.valorUnitarioPlaneado/7),0)  from doc_itemdocumento, [cat_catalogo.otro] where doc_itemdocumento.id_catalogo = [cat_catalogo.otro].id and [cat_catalogo.otro].periodoAlquiler = equ_detalleAlquiler.valorPeriodo and doc_itemdocumento.id_documento = alq.id and doc_itemdocumento.active = 1 and doc_itemdocumento.id in (SELECT id_itemDocumento FROM alq_tarifa where id_detalleAlquiler=equ_detalleAlquiler.id)) * (case when equ_detalleAlquiler.id_equipo>0 then 1 else equ_detalleAlquiler.cantidadAlquilada end)
else datediff(day,(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end),dateadd(month,datediff(month,(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end),@p_desde_fh_b)-(case alq.mesVencido when 1 then 1 else 0 end ),(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end))) * (select top 1 round((doc_itemdocumento.valorUnitarioPlaneado/30),0)  from doc_itemdocumento, [cat_catalogo.otro] where doc_itemdocumento.id_catalogo = [cat_catalogo.otro].id and [cat_catalogo.otro].periodoAlquiler = equ_detalleAlquiler.valorPeriodo and doc_itemdocumento.id_documento = alq.id and doc_itemdocumento.active = 1 and doc_itemdocumento.id in (SELECT id_itemDocumento FROM alq_tarifa where id_detalleAlquiler=equ_detalleAlquiler.id)) * (case when equ_detalleAlquiler.id_equipo>0 then 1 else equ_detalleAlquiler.cantidadAlquilada end)
end) as int) as  ValorEsperadoFacturar,
	(case alq.mesVencido when 1 then 'Mes Vencido' else 'Mes Anticipado' end)  as negociacion,
	'Equipo Alquilado' as tipo
	
FROM [doc_documento.alquiler] as alq INNER JOIN
	doc_documento on doc_documento.id=alq.id inner join
	ter_tercero ON ter_tercero.id = doc_documento.id_tercero_cliente INNER JOIN
	equ_detalleAlquiler on equ_detalleAlquiler.[id_documento.alquiler] = alq.id inner join
	equ_equipo on equ_equipo.id = equ_detalleAlquiler.id_equipo inner join
	cat_catalogo on cat_catalogo.id=equ_detalleAlquiler.id_catalogo inner join
	ter_sucursal on ter_sucursal.id = equ_detalleAlquiler.id_sucursal left join
    cat_listaPrecio on ter_tercero.id_listaPrecio=cat_listaPrecio.id



WHERE		(@p_tercero=0 or ter_tercero.id = @p_tercero)
			and (@p_desde_fh_b is null or equ_detalleAlquiler.fechaUltimaFactura_fh <= @p_desde_fh_b)
			and alq.active = 1 and equ_detallealquiler.active = 1 
			and alq.eid like @p_eid + '%' and equ_detalleAlquiler.fechaDevolucion_ff ='1900-01-01'
			and equ_detalleAlquiler.fechaUltimaFactura_fh <> @p_desde_fh_b


union 
-- equipos que fueron devueltos y no se han liquidado. ok

SELECT equ_detalleAlquiler.id, 
doc_documento.prefijo + '-' + cast(doc_documento.documento_numero as varchar) as numero, doc_documento.documento, 
case when equ_equipo.id>0 then equ_equipo.equipo else cat_catalogo.catalogo end as equipo, 
case when equ_equipo.id>0 then equ_equipo.equipo_serial else cat_catalogo.codigoInventario end as equipo_serial, 
ter_tercero.tercero, 
cat_listaPrecio.listaPrecio, 
ter_sucursal.sucursal,
	equ_detalleAlquiler.fechaDespacho_ff as despacho, 
(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end) as Ultima_Liquidacion,
equ_detallealquiler.fechaDevolucion_ff as siguienteCorte,
cast((select top 1 doc_itemdocumento.valorUnitarioPlaneado  from doc_itemdocumento, [cat_catalogo.otro] where doc_itemdocumento.id_catalogo = [cat_catalogo.otro].id and [cat_catalogo.otro].periodoAlquiler = equ_detalleAlquiler.valorPeriodo and doc_itemdocumento.id_documento = alq.id and doc_itemdocumento.active = 1 and doc_itemdocumento.id in (SELECT id_itemDocumento FROM alq_tarifa where id_detalleAlquiler=equ_detalleAlquiler.id)) as int) as valorPeriodo,
(case when valorPeriodo = 2 then 'Dia' when valorPeriodo = 4 then 'Semana' else 'Mes' end) as periodo,
(case when equ_detalleAlquiler.id_equipo>0 then 1 else equ_detalleAlquiler.cantidadAlquilada end) as cantidad,
--
cast((case 
when valorPeriodo = 2 then datediff(day,(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end),equ_detallealquiler.fechaDevolucion_ff) * (select top 1 doc_itemdocumento.valorUnitarioPlaneado  from doc_itemdocumento, [cat_catalogo.otro] where doc_itemdocumento.id_catalogo = [cat_catalogo.otro].id and [cat_catalogo.otro].periodoAlquiler = equ_detalleAlquiler.valorPeriodo and doc_itemdocumento.id_documento = alq.id and doc_itemdocumento.active = 1 and doc_itemdocumento.id in (SELECT id_itemDocumento FROM alq_tarifa where id_detalleAlquiler=equ_detalleAlquiler.id)) * (case when equ_detalleAlquiler.id_equipo>0 then 1 else equ_detalleAlquiler.cantidadAlquilada end)
when valorPeriodo = 4 then datediff(day,(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end),equ_detallealquiler.fechaDevolucion_ff) * (select top 1 round((doc_itemdocumento.valorUnitarioPlaneado/7),0)  from doc_itemdocumento, [cat_catalogo.otro] where doc_itemdocumento.id_catalogo = [cat_catalogo.otro].id and [cat_catalogo.otro].periodoAlquiler = equ_detalleAlquiler.valorPeriodo and doc_itemdocumento.id_documento = alq.id and doc_itemdocumento.active = 1 and doc_itemdocumento.id in (SELECT id_itemDocumento FROM alq_tarifa where id_detalleAlquiler=equ_detalleAlquiler.id)) * (case when equ_detalleAlquiler.id_equipo>0 then 1 else equ_detalleAlquiler.cantidadAlquilada end)
else datediff(day,(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end),equ_detallealquiler.fechaDevolucion_ff) * (select top 1 round((doc_itemdocumento.valorUnitarioPlaneado/30),0)  from doc_itemdocumento, [cat_catalogo.otro] where doc_itemdocumento.id_catalogo = [cat_catalogo.otro].id and [cat_catalogo.otro].periodoAlquiler = equ_detalleAlquiler.valorPeriodo and doc_itemdocumento.id_documento = alq.id and doc_itemdocumento.active = 1 and doc_itemdocumento.id in (SELECT id_itemDocumento FROM alq_tarifa where id_detalleAlquiler=equ_detalleAlquiler.id)) * (case when equ_detalleAlquiler.id_equipo>0 then 1 else equ_detalleAlquiler.cantidadAlquilada end)
end) as int) as  ValorEsperadoFacturar,

	(case alq.mesVencido when 1 then 'Mes Vencido' else 'Mes Anticipado' end)  as negociacion,
--	cast(datediff(day,(case when	equ_detallealquiler.fechaUltimaFactura_fh < equ_detalleAlquiler.fechaDespacho_ff  then equ_detalleAlquiler.fechaDespacho_ff  else equ_detallealquiler.fechaUltimaFactura_fh end),equ_detallealquiler.fechaDevolucion_ff) as varchar) as tipo
	'Equipo Devuelto' as tipo
	
FROM [doc_documento.alquiler] as alq INNER JOIN
	doc_documento on doc_documento.id=alq.id inner join
	ter_tercero ON ter_tercero.id = doc_documento.id_tercero_cliente INNER JOIN
	equ_detalleAlquiler on equ_detalleAlquiler.[id_documento.alquiler] = alq.id inner join
	equ_equipo on equ_equipo.id = equ_detalleAlquiler.id_equipo inner join
	cat_catalogo on cat_catalogo.id=equ_detalleAlquiler.id_catalogo inner join
	ter_sucursal on ter_sucursal.id = equ_detalleAlquiler.id_sucursal left join
        cat_listaPrecio on ter_tercero.id_listaPrecio=cat_listaPrecio.id
WHERE		(@p_tercero=0 or ter_tercero.id = @p_tercero)
			and alq.active = 1 and equ_detallealquiler.active = 1 
			and alq.eid like @p_eid + '%' and equ_detalleAlquiler.fechaDevolucion_ff > '1900-01-01'
			and equ_detalleAlquiler.fechaUltimaFactura_fh <  equ_detalleAlquiler.fechaDevolucion_ff -1


union
-- Liquidaciones de alquiler y liquidaciones de otros que no se han facturado y que tienen valor mayor a cero


SELECT 

doc_documento.id, 
doc_documento.prefijo + '-' + CAST(documento_numero as varchar) as numero, doc_documento.documento,
doc_itemdocumento.itemDocumento as equipo, 
'' as equipo_serial, 
ter_tercero.tercero, 
cat_listaPrecio.listaPrecio, 
ter_sucursal.sucursal,
	'' as despacho, 
	doc_documento.fecha_fh as Ultima_Liquidacion,
'' as siguienteCorte,
'' as valorPeriodo,
'' as periodo,
doc_itemDocumento.cantidadPlaneado as cantidad,
cast(doc_itemdocumento.subtotalPlaneado as int) as ValorEsperadoFacturar,


	'Liquidacion'  as negociacion,
	doc_subtipoDocumento.subtipoDocumento as tipo
	
	--doc_documento.prefijo as doc_documento_prefijo,
	--doc_documento.documento_numero as doc_documento_documento_numero,
	--doc_documento.fecha_fh AS doc_documento_fecha_fh,
	--doc_documento.subtotalPlaneado as doc_documento_subtotal,
	--doc_documento.descuentoPlaneado as doc_documento_descuento,
	--doc_documento.ivaPlaneado as doc_documento_iva,
	--doc_documento.totalPlaneado as doc_documento_total,
	--ter_tercero.tercero as ter_tercero_tercero,
	--doc_estadoTipoDocumento.estadoTipoDocumento as doc_estadoTipoDocumento_estadoTipoDocumento


FROM doc_documento inner join
[doc_documento.cotizacion] on [doc_documento.cotizacion].id = doc_documento.id inner join
doc_itemdocumento on  doc_itemdocumento.id_documento = doc_documento.id  inner join
ter_tercero on ter_tercero.id = doc_documento.id_tercero_cliente inner join 
ter_sucursal on ter_sucursal.id =  [doc_documento.cotizacion].id_sucursal inner join
doc_subtipodocumento on doc_subtipodocumento.id = doc_documento.id_subtipodocumento left join
        cat_listaPrecio on ter_tercero.id_listaPrecio=cat_listaPrecio.id

WHERE		(@p_tercero=0 or ter_tercero.id = @p_tercero)
			and doc_itemdocumento.active = 1 
			and doc_documento.prefijo in ('PRE','LIQ')
			and doc_documento.id_estadotipodocumento in (18)
			and doc_itemdocumento.totalplaneado > 0
		
order by ter_tercero.tercero asc

END

GO
------------


CREATE PROCEDURE rep_ingresoCostoXEquipo 

	@p_tercero as INT = 0,
	@p_catalogo_equipo as INT = 0,
	@p_marca as INT = 0,
	@p_familia as INT = 0,
	@p_subtipoCatalogo as INT = 0,
	@p_subtipoDocumento as INT = 0,
	@p_fecha_fh as smalldatetime = null,
	@p_fecha_fh_b as smalldatetime = null,
	@p_eid varchar(100)

AS
BEGIN

select equ.equipo,
equ.equipo_serial 
,equ.id
,detalle .id_catalogo
,doc.prefijo +'-'+CAST(doc.documento_numero  as varchar (100)) as documento
,doc.fecha_fh 
--,itemspre.itemDocumento
,sum(itemspre.subtotalPlaneado) as cobroALQ
,(select doc_pre.totalPlaneado from 
	doc_documento as doc_pre inner join
	[doc_documento.cotizacion] as pre on pre.id=doc_pre.id inner join
	doc_documento as doc_ot on doc_ot.id=doc_pre.id_documento inner join
	[doc_documento.ot] as ot on doc_ot.id=ot.id inner join
	equ_equipo as equipo on equipo.id=ot.id_equipo inner join
	doc_estadoTipoDocumento as estado on estado.id=doc_ot.id_estadoTipoDocumento

	where equipo.id=equ.id and equipo.id>0 
	--and estado.estadoTipoDocumento_codigo = 'CER'
	
	and (@p_tercero=0 or doc_pre.id_tercero_cliente = @p_tercero)
	and (@p_fecha_fh is null or doc_pre.fecha_fh >= @p_fecha_fh)
	and (@p_fecha_fh_b is null or doc_pre.fecha_fh <= @p_fecha_fh_b)
	and doc_pre.eid like @p_eid + '%'
	

) as cobroOT,
(select doc_ot.costoPlaneado from 
	doc_documento as doc_ot inner join 
	[doc_documento.ot] as ot on doc_ot.id=ot.id inner join
	equ_equipo on equ_equipo.id=ot.id_equipo inner join
	doc_estadoTipoDocumento as estado on estado.id=doc_ot.id_estadoTipoDocumento

	where equ_equipo.id=equ.id and equ_equipo.id>0  
	--and estado.estadoTipoDocumento_codigo = 'CER' 
	--filtros 
	and (@p_tercero=0 or doc_ot.id_tercero_cliente = @p_tercero)
	and (@p_fecha_fh is null or doc_ot.fecha_fh >= @p_fecha_fh)
	and (@p_fecha_fh_b is null or doc_ot.fecha_fh <= @p_fecha_fh_b)
	and doc_ot.eid like @p_eid + '%'

) as costoOT


from doc_itemdocumento itemspre
inner join doc_documento doc on doc.id =itemspre.id_documento and itemspre.active=1 and doc.active=1 and doc.id>0
inner join doc_itemdocumento itemsalq on itemspre.id_catalogo =itemsalq .id_catalogo 
--and itemsalq.id=itemspre .id_itemDocumento 
and itemsalq .active=1
inner join doc_documento as doc_alq on doc_alq.id=itemsalq.id_documento
inner join alq_tarifa tar on tar.id_itemDocumento =itemsalq .id and tar.active =1
inner join equ_detallealquiler detalle on detalle.id=tar.id_detalleAlquiler  and doc.id_documento=detalle.[id_documento.alquiler]and detalle.active =1
inner join doc_estadoTipoDocumento estado on estado.id=doc.id_estadoTipoDocumento  and estado.estadoTipoDocumento_codigo not in('CAN')
inner join equ_equipo equ on equ.id =detalle.id_equipo and equ.id>0 
inner join cat_catalogo modelo on itemspre .itemDocumento like '%'+ modelo.catalogo  +'%' and equ.[id_catalogo.equipo]=modelo.id 
inner join [cat_catalogo.equipo] on [cat_catalogo.equipo].id=modelo.id
inner join cat_marca on cat_marca.id=[cat_catalogo.equipo].id_marca
inner join gen_familia on gen_familia.id=modelo.id_familia

where detalle.[id_documento.alquiler]>0  --and  detalle.[id_documento.alquiler]=@p_idAlquiler  and itemsalq .id_documento=@p_idAlquiler
	--and estado.estadoTipoDocumento_codigo = 'CER'

	-------
	and (@p_tercero=0 or doc.id_tercero_cliente = @p_tercero)
	and (@p_marca=0 or cat_marca.id = @p_marca)
	and (@p_familia=0 or gen_familia.id = @p_familia)
	and (@p_catalogo_equipo=0 or modelo.id = @p_catalogo_equipo)
	and (@p_subtipoCatalogo=0 or modelo.id_subtipoCatalogo = @p_subtipoCatalogo)
	and (@p_subtipoDocumento=0 or doc_alq.id_subtipoDocumento = @p_subtipoDocumento)
	and (@p_fecha_fh is null or doc.fecha_fh >= @p_fecha_fh)
	and (@p_fecha_fh_b is null or doc.fecha_fh <= @p_fecha_fh_b)
	AND	itemspre.active = 1 
	and itemspre.eid like @p_eid + '%'
			------



group by equ.equipo,equ.equipo_serial, equ.id,detalle .id_catalogo,doc.prefijo, doc.documento_numero ,doc.fecha_fh 
--,itemspre.itemDocumento

order by doc.fecha_fh 

END

GO
---------------------------------------



CREATE FUNCTION [dbo].[f_horasVaradoEquipo]
(@idEquipo int,
@p_fecha_ff as smalldatetime,
@p_fecha_ff_b as smalldatetime )
RETURNS FLOAT
AS
BEGIN
----Horas varado desde la primer traza encontrada en el rango hasta el final del rango.
declare @p_resul table (resul float);
insert into @p_resul (resul)(select 
	sum (case when TRZ1.activo=0 then datediff (HOUR,TRZ1.fecha_ff,isnull (TRZ2.fecha_ff,@p_fecha_ff_b)) else 0 end)
from (select trzin.id,trzin.fecha_ff,ROW_NUMBER() OVER(ORDER BY fecha_ff) as num,trzin.id_equipo,estEqin.activo
	from equ_trazabilidad trzin 
	inner join equ_estadoEquipo estEqin on trzin.id_estadoEquipo=estEqin.id
	where trzin.fecha_ff>=@p_fecha_ff and trzin.fecha_ff<=@p_fecha_ff_b and  trzin.id_equipo=@idEquipo and trzin.id_estadoEquipo>0)TRZ1
 left join (
	select trzin.id,trzin.fecha_ff,ROW_NUMBER() OVER(ORDER BY fecha_ff) as num,trzin.id_equipo,estEqin.activo
	from equ_trazabilidad trzin 
	inner join equ_estadoEquipo estEqin on trzin.id_estadoEquipo=estEqin.id
	where trzin.fecha_ff>=@p_fecha_ff and trzin.fecha_ff<=@p_fecha_ff_b and trzin.id_equipo=@idEquipo and trzin.id_estadoEquipo>0) TRZ2 
	on (TRZ1.num+1)=TRZ2.num
GROUP BY TRZ1.id_equipo)

declare @p_resul1 as float
set @p_resul1 = 0.0
if exists (select * from @p_resul) begin set @p_resul1 = (select * from @p_resul)  end else begin set @p_resul1 = 
0 end

----Horas varado antes de la primer fecha encontrada en el rango.
--declare @p_trazaAnterior as smalldatetime
--set @p_trazaAnterior =  (select max (fecha_ff) from equ_trazabilidad inner join equ_estadoEquipo 
--						on equ_trazabilidad.id_estadoEquipo=equ_estadoEquipo.id
--						where fecha_ff<=@p_fecha_ff and id_equipo=@idEquipo and id_estadoEquipo>0 and equ_trazabilidad.active=1)
declare @p_estadoTrazaAnterior as bit
set @p_estadoTrazaAnterior =	(select top (1) (equ_estadoEquipo.activo) from equ_trazabilidad inner join equ_estadoEquipo 
						on equ_trazabilidad.id_estadoEquipo=equ_estadoEquipo.id
						where fecha_ff<=@p_fecha_ff and id_equipo=@idEquipo and id_estadoEquipo>0 and equ_trazabilidad.id_estadoEquipo>0 order by fecha_ff desc)
					
declare @p_trazaSiguiente as smalldatetime
set @p_trazaSiguiente =  (select min (fecha_ff) from equ_trazabilidad inner join equ_estadoEquipo 
						on equ_trazabilidad.id_estadoEquipo=equ_estadoEquipo.id
						where fecha_ff>=@p_fecha_ff and id_equipo=@idEquipo and activo>0 and equ_trazabilidad.active=1 and equ_trazabilidad.id_estadoEquipo>0)

declare @p_resul2 as float
set @p_resul2 = 0.0
if @p_estadoTrazaAnterior=0 begin 
set @p_resul2= DATEDIFF (HOUR,@p_fecha_ff,@p_trazaSiguiente)
end

declare @p_result as float
set @p_result = 0.0
if @p_resul1+@p_resul2  is null begin
set @p_result= DATEDIFF (HOUR,@p_fecha_ff,@p_fecha_ff_b)end
else
begin
set @p_result= @p_resul1+@p_resul2
end

RETURN @p_result
--RETURN @p_resul2
--RETURN @p_estado
--RETURN @p_resul1+@p_resul2
--RETURN @p_result
end

--select [dbo].[f_horasVaradoEquipo](5,'11/04/2015 00:00:00','11/05/2015 23:59:59')

GO

CREATE FUNCTION [dbo].[f_horasTotalesMes]
(@p_fecha_ff as smalldatetime,
@p_fecha_ff_b as smalldatetime )
RETURNS FLOAT
AS
BEGIN
declare @p_resul FLOAT
set @p_resul = (select 
datediff (HOUR,@p_fecha_ff,@p_fecha_ff_b))
RETURN @p_resul	
end


GO

CREATE PROCEDURE [dbo].[con_maestroEstados_equipo] 
		@p_catalogo_equipo as INT = 0,
		@p_sucursal as INT = 0,
		@p_equipo as INT =0,
		@p_tercero as INT = 0,	
		@p_familia as INT=0,		
		@p_fecha_fh as smalldatetime = null,
		@p_fecha_fh_b as smalldatetime = null,
		@p_eid varchar(100)
AS
BEGIN
select
gen_familia.familia,
fecha_ff,
equ_equipo.equipo,
doc_documento.prefijo,
doc_documento.documento_numero,
equ_estadoEquipo.estadoEquipo,
equ_trazabilidad.id
from equ_trazabilidad 
inner join equ_equipo on equ_trazabilidad.id_equipo=equ_equipo.id
inner join doc_documento on equ_trazabilidad.id_documento=doc_documento.id
inner join equ_estadoEquipo on equ_trazabilidad.id_estadoEquipo=equ_estadoEquipo.id
inner join ter_tercero on equ_equipo.id_tercero=ter_tercero.id
inner join ter_sucursal on equ_equipo.id_sucursal=ter_sucursal.id
inner join cat_catalogo on equ_equipo.[id_catalogo.equipo]=cat_catalogo.id
inner join gen_familia on cat_catalogo.id_familia=gen_familia.id
where 
(@p_tercero=0 or ter_tercero.id = @p_tercero)
		and equ_equipo.active=1
		and equ_trazabilidad.id_estadoEquipo>0
		and (@p_familia=0 or gen_familia.id=@p_familia)
		and (@p_catalogo_equipo=0 or cat_catalogo.id = @p_catalogo_equipo)
		and (@p_sucursal=0 or ter_sucursal.id = @p_sucursal)
		and (@p_equipo=0 or equ_equipo.id = @p_equipo)
		and (@p_fecha_fh is null or equ_trazabilidad.fecha_ff >= @p_fecha_fh)
		and (@p_fecha_fh_b is null or equ_trazabilidad.fecha_ff <= @p_fecha_fh_b)
		and (equ_equipo.eid LIKE @p_eid + '%')
order by fecha_ff
end


GO



CREATE PROCEDURE [dbo].[rep_disponibilidadEquipo_reporte] 
		@p_catalogo_equipo as INT = 0,
		@p_sucursal as INT = 0,
		@p_equipo as INT =0,
		@p_tercero as INT = 0,	
		@p_familia as INT=0,		
		@p_fecha_fh as smalldatetime = null,
		@p_fecha_fh_b as smalldatetime = null,
		@p_tercero_comprador as INT =0,
		@p_contrato as INT =0,
		@p_tipoContrato INT =0,
		@p_eid varchar(100)
AS
BEGIN

select 
	 
	(([dbo].[f_horasTotalesMes](@p_fecha_fh,@p_fecha_fh_b)-[dbo].[f_horasVaradoEquipo](equ_equipo.id,@p_fecha_fh,@p_fecha_fh_b))
	/[dbo].[f_horasTotalesMes](@p_fecha_fh,@p_fecha_fh_b))*100 as disponibilidad, 
	 
		  
		 
		equ_equipo.equipo,
		equ_equipo.id id_equipo,
		gen_familia.familia,
		gen_familia.id id_familia,
		ter_sucursal.sucursal,
		ter_tercero.tercero,
		ter_tercero.id as id_tercero
		
		
from	
		--equ_trazabilidad
		--inner join equ_equipo on equ_trazabilidad.id_equipo=equ_equipo.id
		equ_equipo
		inner join [cat_catalogo.equipo] on equ_equipo.[id_catalogo.equipo]=[cat_catalogo.equipo].id
		inner join cat_catalogo on [cat_catalogo.equipo].id=cat_catalogo.id
		inner join gen_familia on cat_catalogo.id_familia=gen_familia.id
		inner join ter_tercero on equ_equipo.id_tercero=ter_tercero.id
		inner join ter_sucursal on equ_equipo.id_sucursal=ter_sucursal.id
		inner join cnt_contrato on cnt_contrato.id_tercero = ter_tercero.id
		INNER JOIN ter_tercero as comprador on equ_equipo.id_tercero_comprador = comprador.id
		inner join cnt_tipoContrato on cnt_contrato.id_tipoServicio = cnt_tipoContrato.id
		
where	(@p_tercero=0 or ter_tercero.id = @p_tercero)
		and equ_equipo.active=1
		and equ_equipo.id_tercero_comprador=2
		and (@p_familia=0 or gen_familia.id=@p_familia)
		and (@p_catalogo_equipo=0 or [cat_catalogo.equipo].id = @p_catalogo_equipo)
		and (@p_sucursal=0 or ter_sucursal.id = @p_sucursal)
		and (@p_equipo=0 or equ_equipo.id = @p_equipo)
		and (@p_tercero_comprador=0 or COMPRADOR.id = @p_tercero_comprador)
		and (@p_contrato=0 or cnt_contrato.id = @p_contrato)
		and (@p_tipoContrato=0 or cnt_tipoContrato.id = @p_tipoContrato)
		--and (@p_fecha_fh is null or equ_trazabilidad.fecha_ff >= @p_fecha_fh)
		--and (@p_fecha_fh_b is null or equ_trazabilidad.fecha_ff <= @p_fecha_fh_b)
		and (equ_equipo.eid LIKE @p_eid + '%')

group by 
--equ_trazabilidad.id_equipo,convert(varchar(7),equ_trazabilidad.fecha_ff,111),
		equ_equipo.equipo,equ_equipo.id,gen_familia.familia,gen_familia.id,ter_sucursal.sucursal,ter_tercero.tercero,ter_tercero.id
		
order by convert(varchar(7),equ_equipo.equipo,111)

END

---------------------------------------------------
GO


CREATE PROCEDURE [dbo].[ind_nivelLiquidacionEstadoValor] 
		@p_estadoTipoDocumento as INT = 0,
		@p_moneda as INT = 0,
		@p_sucursal as INT = 0,
		@p_usuario as INT = 0,
		@p_tercero as INT = 0,			
		@p_fecha_fh as smalldatetime = null,
		@p_fecha_fh_b as smalldatetime = null,
		@p_subtipodocumento as INT = 0,
		@p_eid varchar(100)
AS
BEGIN


select convert(varchar(7),doc_documento.fecha_fh,111) as periodo,
case when doc_estadoTipodocumento.estadoTipodocumento='' then 'No hay Datos' else doc_estadoTipodocumento.estadoTipodocumento end as serie1,
		(sum(doc_documento.totalPlaneado)) as valor



from doc_documento inner join
 [doc_documento.cotizacion] on doc_documento.id=[doc_documento.cotizacion].id inner join
			doc_subtipodocumento on  doc_subtipodocumento.id = doc_documento.id_subtipodocumento inner join
 doc_estadoTipodocumento on doc_estadoTipodocumento.id=doc_documento.id_estadoTipodocumento  inner join 
		
			equ_equipo on equ_equipo.id=[doc_documento.cotizacion].id_equipo inner join
	
			ter_tercero on ter_tercero.id=equ_equipo.id_tercero inner join
			ter_sucursal on equ_equipo.id_sucursal=ter_sucursal.id inner join
			gen_zona on gen_zona.id=ter_tercero.id_zona inner join 
			gen_moneda on gen_moneda.id = doc_documento.id_moneda inner join

			 seg_usuario  on seg_usuario.id = [doc_documento.cotizacion].id_usuario_asesor



where (@p_estadoTipoDocumento=0 or doc_estadoTipoDocumento.id = @p_estadoTipoDocumento)and
 (@p_tercero=0 or ter_tercero.id = @p_tercero)
		
and (@p_usuario=0 or seg_usuario.id = @p_usuario)
and (@p_moneda=0 or gen_moneda.id = @p_moneda)
		and (@p_sucursal=0 or ter_sucursal.id = @p_sucursal)
			and (@p_moneda=0 or doc_documento.id_moneda = @p_moneda)
		and (@p_fecha_fh is null or doc_documento.fecha_fh >= @p_fecha_fh)
		and (@p_fecha_fh_b is null or doc_documento.fecha_fh <= @p_fecha_fh_b) 
			and (@p_subtipodocumento=0 or doc_subtipodocumento.id = @p_subtipodocumento)
	and doc_documento.active=1 
  and (doc_estadoTipodocumento.active=1 or doc_estadoTipodocumento.id=0)
  AND (doc_documento.eid LIKE @p_eid + '%')



group by doc_estadoTipodocumento.estadoTipodocumento,
convert(varchar(7),doc_documento.fecha_fh,111)

order by
convert(varchar(7),doc_documento.fecha_fh,111)


select 
case when doc_estadoTipodocumento.estadoTipodocumento='' then 'No hay Datos' else doc_estadoTipodocumento.estadoTipodocumento end as serie1,
		(sum(doc_documento.totalPlaneado)) as valor



from doc_documento inner join
 [doc_documento.cotizacion] on doc_documento.id=[doc_documento.cotizacion].id inner join
 doc_estadoTipodocumento on doc_estadoTipodocumento.id=doc_documento.id_estadoTipodocumento  inner join 
			doc_subtipodocumento on  doc_subtipodocumento.id = doc_documento.id_subtipodocumento inner join
		
			equ_equipo on equ_equipo.id=[doc_documento.cotizacion].id_equipo inner join
	
			ter_tercero on ter_tercero.id=equ_equipo.id_tercero inner join
			ter_sucursal on equ_equipo.id_sucursal=ter_sucursal.id inner join
			gen_zona on gen_zona.id=ter_tercero.id_zona inner join 
			gen_moneda on gen_moneda.id = doc_documento.id_moneda inner join

			 seg_usuario  on seg_usuario.id = [doc_documento.cotizacion].id_usuario_asesor



where (@p_estadoTipoDocumento=0 or doc_estadoTipoDocumento.id = @p_estadoTipoDocumento)and
 (@p_tercero=0 or ter_tercero.id = @p_tercero)
		
and (@p_usuario=0 or seg_usuario.id = @p_usuario)
and (@p_moneda=0 or gen_moneda.id = @p_moneda)
		and (@p_sucursal=0 or ter_sucursal.id = @p_sucursal)
			and (@p_moneda=0 or doc_documento.id_moneda = @p_moneda)
		and (@p_fecha_fh is null or doc_documento.fecha_fh >= @p_fecha_fh)
		and (@p_fecha_fh_b is null or doc_documento.fecha_fh <= @p_fecha_fh_b) 
			and (@p_subtipodocumento=0 or doc_subtipodocumento.id = @p_subtipodocumento)
	and doc_documento.active=1 
  and (doc_estadoTipodocumento.active=1 or doc_estadoTipodocumento.id=0)
	    AND (doc_documento.eid LIKE @p_eid + '%')



group by doc_estadoTipodocumento.estadoTipodocumento

order by sum(doc_documento.totalPlaneado) desc


select 
		(sum(doc_documento.totalPlaneado)) as total



from doc_documento inner join
 [doc_documento.cotizacion] on doc_documento.id=[doc_documento.cotizacion].id inner join
 doc_estadoTipodocumento on doc_estadoTipodocumento.id=doc_documento.id_estadoTipodocumento  inner join 
			doc_subtipodocumento on  doc_subtipodocumento.id = doc_documento.id_subtipodocumento inner join
		
			equ_equipo on equ_equipo.id=[doc_documento.cotizacion].id_equipo inner join
	
			ter_tercero on ter_tercero.id=equ_equipo.id_tercero inner join
			ter_sucursal on equ_equipo.id_sucursal=ter_sucursal.id inner join
			gen_zona on gen_zona.id=ter_tercero.id_zona inner join 
			gen_moneda on gen_moneda.id = doc_documento.id_moneda inner join

			 seg_usuario  on seg_usuario.id = [doc_documento.cotizacion].id_usuario_asesor



where (@p_estadoTipoDocumento=0 or doc_estadoTipoDocumento.id = @p_estadoTipoDocumento)and
 (@p_tercero=0 or ter_tercero.id = @p_tercero)
		
and (@p_usuario=0 or seg_usuario.id = @p_usuario)
and (@p_moneda=0 or gen_moneda.id = @p_moneda)
		and (@p_sucursal=0 or ter_sucursal.id = @p_sucursal)
			and (@p_moneda=0 or doc_documento.id_moneda = @p_moneda)
		and (@p_fecha_fh is null or doc_documento.fecha_fh >= @p_fecha_fh)
		and (@p_fecha_fh_b is null or doc_documento.fecha_fh <= @p_fecha_fh_b) 
			and (@p_subtipodocumento=0 or doc_subtipodocumento.id = @p_subtipodocumento)
	and doc_documento.active=1 
  and (doc_estadoTipodocumento.active=1 or doc_estadoTipodocumento.id=0)
	    AND (doc_documento.eid LIKE @p_eid + '%')



END




-------------------------------------------

GO
CREATE PROCEDURE [dbo].[for_saldoEventoXalquiler] 
	@p_id as INT,
	@p_tercero as INT = 0,
	@p_sucursal as INT = 0,
	@p_catalogo_equipo as INT = 0,
	@p_marca as INT = 0,
	@p_familia as INT = 0,
	@p_eid varchar(100),
	@p_equipo as INT = 0,
	@p_fecha_fh as smalldatetime = null,
	@p_fecha_fh_b as smalldatetime = null,
	@p_documento_numero as INT = 0,
	@p_subtipoDocumento as int=0,
	@p_documento_numero_b as int=0

AS
BEGIN
	
SELECT		--distinct equ_equipo.id,
           equ_equipo.equipo , 
           --equ_equipo.equipo_codigo as codigosap,
           equ_equipo.equipo_serial as serial,
		   --dis_evento.evento_codigo as codigo,
		   --dis_evento.fechaHoraInicio_ff as fechainicio,
		   --dis_evento.duracion_hh as fechafin,
		   --equ_trazabilidad.horometro as horometrofinal,
		 -- (select top 1 tra.horometro from equ_trazabilidad as tra inner join
		 -- doc_documento as doc on doc.id=tra.[id_documento.alquiler] inner join 
			--doc_subtipoDocumento as doc_subt on doc_subt.id=doc.id_subtipoDocumento left join
			--doc_tipoDocumento as doc_tip on doc_tip.id=doc_subt.id_tipoDocumento
		 --  where tra.id_equipo=equ_equipo.id and tra.fecha_ff<=equ_trazabilidad.fecha_ff and tra.id<> equ_trazabilidad.id 
		 --  and(@p_documento_numero = 0 or doc.documento_numero = @p_documento_numero)
			--and (@p_subtipoDocumento=0 or doc_subtipoDocumento.id = @p_subtipoDocumento)

		 --   order by tra.fecha_ff desc ) as horometroinicial,
		  --seg_usuario.nombre,
		  (doc_documento.prefijo + ' - ' + convert(varchar,doc_documento.documento_numero) ) as alquiler,
		  SUM(dis_evento_catalogo.cantidad) as cantidad,
--		  SUM(dis_evento_catalogo.valorUnitario) as valor,
		  SUM(dis_evento_catalogo.total) as total,
		  catalogo_evento.catalogo as tarifa,
		  catalogo_evento.catalogo_codigo as codigotarifa

		  
	          
     			
	
FROM        
			equ_equipo INNER JOIN
			[cat_catalogo.equipo] ON equ_equipo.[id_catalogo.equipo] = [cat_catalogo.equipo].id INNER JOIN
			ter_tercero ON equ_equipo.id_tercero = ter_tercero.id INNER JOIN
			ter_sucursal on ter_sucursal.id=equ_equipo.id_sucursal inner join	
			cat_marca on cat_marca.id = [cat_catalogo.equipo].id_marca	inner join
			cat_catalogo ON [cat_catalogo.equipo].id = cat_catalogo.id INNER JOIN
			gen_familia ON cat_catalogo.id_familia = gen_familia.id inner join
			dis_evento on dis_evento.id_equipo=equ_equipo.id inner join 
			equ_trazabilidad on equ_trazabilidad.id_equipo=equ_equipo.id and equ_trazabilidad.id_evento=dis_evento.id inner join
			doc_documento on doc_documento.id=equ_trazabilidad.[id_documento.alquiler] inner join 
			seg_usuario on seg_usuario.id=dis_evento.id_usuario left join
			dis_evento_catalogo on dis_evento_catalogo.id_evento=dis_evento.id left join
			cat_catalogo as catalogo_evento on catalogo_evento.id=dis_evento_catalogo.id_catalogo left join
			doc_subtipoDocumento on doc_subtipoDocumento.id=doc_documento.id_subtipoDocumento left join
			doc_tipoDocumento on doc_tipoDocumento.id=doc_subtipoDocumento.id_tipoDocumento
			



WHERE		(@p_id=0 or doc_documento.id=@p_id)
			and (@p_tercero=0 or ter_tercero.id = @p_tercero)
			and (@p_marca=0 or cat_marca.id = @p_marca)
			and (@p_familia=0 or gen_familia.id = @p_familia)
			and (@p_catalogo_equipo=0 or [cat_catalogo.equipo].id = @p_catalogo_equipo)
			and (@p_sucursal=0 or ter_sucursal.id = @p_sucursal)
			AND	equ_equipo.active = 1 
			and equ_equipo.eid like @p_eid + '%'
			and(@p_equipo=0 or equ_equipo.id = @p_equipo)
			and (@p_fecha_fh is null or dis_evento.fechaHoraInicio_ff >= @p_fecha_fh)
			and (@p_fecha_fh_b is null or dis_evento.fechaHoraInicio_ff <= @p_fecha_fh_b)
			and(@p_documento_numero = 0 or doc_documento.documento_numero = @p_documento_numero)
			and(@p_documento_numero_b = 0 or doc_documento.documento_numero = @p_documento_numero_b)
			and (@p_subtipoDocumento=0 or doc_subtipoDocumento.id = @p_subtipoDocumento)

GROUP BY
		  equ_equipo.equipo, equ_equipo.equipo_serial,
		  (doc_documento.prefijo + ' - ' + convert(varchar,doc_documento.documento_numero) ),
		  catalogo_evento.catalogo,
		  catalogo_evento.catalogo_codigo

END



-------------------------------


GO

CREATE PROCEDURE [dbo].[for_detalleEventosXalquiler] 
	@p_id as INT,
	@p_tercero as INT = 0,
	@p_sucursal as INT = 0,
	@p_catalogo_equipo as INT = 0,
	@p_marca as INT = 0,
	@p_familia as INT = 0,
	@p_eid varchar(100),
	@p_equipo as INT = 0,
	@p_fecha_fh as smalldatetime = null,
	@p_fecha_fh_b as smalldatetime = null,
	@p_documento_numero as INT = 0,
	@p_subtipoDocumento as int=0,
	@p_documento_numero_b as int=0

AS
BEGIN
	
SELECT		--distinct equ_equipo.id,
           equ_equipo.equipo , 
           --equ_equipo.equipo_codigo as codigosap,
           equ_equipo.equipo_serial as serial,
		   dis_evento.evento_codigo as codigo,
		   dis_evento.fechaHoraInicio_ff as fechainicio,
		   dis_evento.duracion_hh as fechafin,
		   equ_trazabilidad.horometro as horometrofinal,
		  (select top 1 tra.horometro from equ_trazabilidad as tra inner join
		  doc_documento as doc on doc.id=tra.[id_documento.alquiler] inner join 
			doc_subtipoDocumento as doc_subt on doc_subt.id=doc.id_subtipoDocumento left join
			doc_tipoDocumento as doc_tip on doc_tip.id=doc_subt.id_tipoDocumento
		   where tra.id_equipo=equ_equipo.id and tra.fecha_ff<=equ_trazabilidad.fecha_ff and tra.id<> equ_trazabilidad.id 
		   and(@p_documento_numero = 0 or doc.documento_numero = @p_documento_numero)
			and (@p_subtipoDocumento=0 or doc_subtipoDocumento.id = @p_subtipoDocumento)

		    order by tra.fecha_ff desc ) as horometroinicial,
		  seg_usuario.nombre,
		  (doc_documento.prefijo + ' - ' + convert(varchar,doc_documento.documento_numero) ) as alquiler,
		  dis_evento_catalogo.cantidad as cantidad,
		  dis_evento_catalogo.valorUnitario as valor,
		  dis_evento_catalogo.total,
		  catalogo_evento.catalogo as tarifa,
		  catalogo_evento.catalogo_codigo as codigotarifa

	
FROM        
			equ_equipo INNER JOIN
			[cat_catalogo.equipo] ON equ_equipo.[id_catalogo.equipo] = [cat_catalogo.equipo].id INNER JOIN
			ter_tercero ON equ_equipo.id_tercero = ter_tercero.id INNER JOIN
			ter_sucursal on ter_sucursal.id=equ_equipo.id_sucursal inner join	
			cat_marca on cat_marca.id = [cat_catalogo.equipo].id_marca	inner join
			cat_catalogo ON [cat_catalogo.equipo].id = cat_catalogo.id INNER JOIN
			gen_familia ON cat_catalogo.id_familia = gen_familia.id inner join
			dis_evento on dis_evento.id_equipo=equ_equipo.id inner join 
			equ_trazabilidad on equ_trazabilidad.id_equipo=equ_equipo.id and equ_trazabilidad.id_evento=dis_evento.id inner join
			doc_documento on doc_documento.id=equ_trazabilidad.[id_documento.alquiler] inner join 
			seg_usuario on seg_usuario.id=dis_evento.id_usuario left join
			dis_evento_catalogo on dis_evento_catalogo.id_evento=dis_evento.id left join
			cat_catalogo as catalogo_evento on catalogo_evento.id=dis_evento_catalogo.id_catalogo left join
			doc_subtipoDocumento on doc_subtipoDocumento.id=doc_documento.id_subtipoDocumento left join
			doc_tipoDocumento on doc_tipoDocumento.id=doc_subtipoDocumento.id_tipoDocumento
			



WHERE		(@p_id=0 or doc_documento.id=@p_id)
			and (@p_tercero=0 or ter_tercero.id = @p_tercero)
			and (@p_marca=0 or cat_marca.id = @p_marca)
			and (@p_familia=0 or gen_familia.id = @p_familia)
			and (@p_catalogo_equipo=0 or [cat_catalogo.equipo].id = @p_catalogo_equipo)
			and (@p_sucursal=0 or ter_sucursal.id = @p_sucursal)
			AND	equ_equipo.active = 1 
			and equ_equipo.eid like @p_eid + '%'
			and(@p_equipo=0 or equ_equipo.id = @p_equipo)
			and (@p_fecha_fh is null or dis_evento.fechaHoraInicio_ff >= @p_fecha_fh)
			and (@p_fecha_fh_b is null or dis_evento.fechaHoraInicio_ff <= @p_fecha_fh_b)
			and(@p_documento_numero = 0 or doc_documento.documento_numero = @p_documento_numero)
			and(@p_documento_numero_b = 0 or doc_documento.documento_numero = @p_documento_numero_b)
			and (@p_subtipoDocumento=0 or doc_subtipoDocumento.id = @p_subtipoDocumento)



END


