

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[_ajustarCantidadesCostosejecutados]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[_ajustarCantidadesCostosejecutados]
GO

CREATE procedure [dbo].[_ajustarCantidadesCostosejecutados]	
@p_documento as INT = 0
as begin

update doc_itemDocumento set cantidadEjecutado=tablita .cantidadEjecutado , costoEjecutado=tablita.costoEjecutado
from
doc_itemdocumento inner join (
select doc_itemdocumento.id, sum(case when estadosal.id_tipoDocumento =5 then itemsal.cantidadEjecutado*-1  else itemsal.cantidadEjecutado end  )as cantidadEjecutado 
, sum(case when estadosal.id_tipoDocumento <>5 then itemsal.costoEjecutado   else 0 end  ) as costoEjecutado
from doc_itemdocumento 
inner join doc_documento sal on sal.id_documento =doc_itemDocumento .id_documento and doc_itemDocumento .active =1
inner join doc_itemDocumento itemsal on itemsal .id_documento =sal.id and doc_itemDocumento .id =itemsal .id_itemdocumento  and itemsal.active=1
inner join doc_estadoTipoDocumento estadosal on estadosal.estadoTipoDocumento_codigo in('CER') and sal.active=1
and  estadosal .id =sal.id_estadoTipoDocumento and estadosal.id_tipoDocumento in (6,3,5) and doc_itemDocumento .id_documento=@p_documento
group by doc_itemdocumento .id) tablita on tablita .id =doc_itemDocumento .id 

--actualizo aquellos items de la ot que no esten asociado a items hijos
--update doc_itemDocumento set cantidadEjecutado=tablita .cantidadEjecutado , costoEjecutado=tablita.costoEjecutado
--from
--doc_itemdocumento inner join (
--select doc_itemdocumento.id, sum(itemsal.cantidadEjecutado )as cantidadEjecutado , sum(itemsal.costoEjecutado ) as costoEjecutado
--from doc_itemdocumento 
--inner join doc_documento sal on sal.id_documento =doc_itemDocumento .id_documento and doc_itemDocumento .active =1
--inner join doc_itemDocumento itemsal on itemsal .id_documento =sal.id and doc_itemDocumento .id_catalogo =itemsal .id_catalogo and itemsal.id_itemDocumento =0 
--and doc_itemDocumento .id not in (select salitem.id_itemdocumento from doc_itemdocumento salitem inner join doc_documento docsal on docsal.id=salitem.id_documento and docsal.id_documento=@p_documento and salitem .active=1 and salitem .id_itemDocumento >0  )
-- and itemsal.active=1
--inner join doc_estadoTipoDocumento estadosal on estadosal.estadoTipoDocumento_codigo in('CER') and sal.active=1
--and  estadosal .id =sal.id_estadoTipoDocumento and estadosal.id_tipoDocumento in (6,3) and doc_itemDocumento .id_documento=@p_documento
--group by doc_itemdocumento .id) tablita on tablita .id =doc_itemDocumento .id 


end
GO




--select * from doc_itemdocumento where id_documento=110303