2025-05-27 11:21:00 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								using  GestionIntegral.Api.Data.Repositories.Reportes ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using  GestionIntegral.Api.Dtos.Reportes ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using  Microsoft.Extensions.Logging ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using  System ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using  System.Collections.Generic ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using  System.Linq ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using  System.Threading.Tasks ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								namespace  GestionIntegral.Api.Services.Reportes  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  class  ReportesService  :  IReportesService 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        private  readonly  IReportesRepository  _reportesRepository ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        private  readonly  ILogger < ReportesService >  _logger ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // No necesitas _connectionFactory aquí si toda la lógica de BD está en el repositorio. 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 11:21:00 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  ReportesService ( IReportesRepository  reportesRepository ,  ILogger < ReportesService >  logger ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            _reportesRepository  =  reportesRepository ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            _logger  =  logger ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < ExistenciaPapelDto >  Data ,  string?  Error ) >  ObtenerExistenciaPapelAsync ( 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            DateTime  fechaDesde ,  DateTime  fechaHasta ,  int?  idPlanta ,  bool  consolidado ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 11:21:00 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ExistenciaPapelDto > ( ) ,  "La fecha 'Desde' no puede ser mayor que la fecha 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! consolidado  & &  ! idPlanta . HasValue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ExistenciaPapelDto > ( ) ,  "Se requiere un ID de planta para reportes no consolidados." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  dataFromRepo  =  await  _reportesRepository . GetExistenciaPapelAsync ( fechaDesde ,  fechaHasta ,  idPlanta ,  consolidado ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  dataWithUtcDates  =  dataFromRepo . Select ( dto  = > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( dto . FechaEstimacionFinStock . HasValue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        dto . FechaEstimacionFinStock  =  DateTime . SpecifyKind ( dto . FechaEstimacionFinStock . Value . Date ,  DateTimeKind . Utc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  dto ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ) . ToList ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( dataWithUtcDates ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            catch  ( ArgumentNullException  ex )  when  ( ex . ParamName  = =  "idPlanta" ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 11:21:00 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogWarning ( ex ,  "ArgumentNullException para idPlanta en ObtenerExistenciaPapelAsync." ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ExistenciaPapelDto > ( ) ,  ex . Message ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 11:21:00 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Existencia de Papel." ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ExistenciaPapelDto > ( ) ,  "Error interno al generar el reporte de existencia de papel." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < MovimientoBobinasDto >  Data ,  string?  Error ) >  ObtenerMovimientoBobinasAsync ( DateTime  fechaDesde ,  DateTime  fechaHasta ,  int  idPlanta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < MovimientoBobinasDto > ( ) ,  "La fecha 'Desde' no puede ser mayor que la fecha 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            int  diasPeriodo  =  ( fechaHasta . Date  -  fechaDesde . Date ) . Days  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetMovimientoBobinasAsync ( fechaDesde . Date ,  diasPeriodo ,  idPlanta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Movimiento de Bobinas." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < MovimientoBobinasDto > ( ) ,  "Error interno al generar el reporte de movimiento de bobinas." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < MovimientoBobinaEstadoDetalleDto >  Detalle ,  IEnumerable < MovimientoBobinaEstadoTotalDto >  Totales ,  string?  Error ) >  ObtenerMovimientoBobinasPorEstadoAsync ( DateTime  fechaDesde ,  DateTime  fechaHasta ,  int  idPlanta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < MovimientoBobinaEstadoDetalleDto > ( ) ,  Enumerable . Empty < MovimientoBobinaEstadoTotalDto > ( ) ,  "La fecha 'Desde' no puede ser mayor que la fecha 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  detalle  =  await  _reportesRepository . GetMovimientoBobinasEstadoDetalleAsync ( fechaDesde . Date ,  fechaHasta . Date ,  idPlanta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  totales  =  await  _reportesRepository . GetMovimientoBobinasEstadoTotalesAsync ( fechaDesde . Date ,  fechaHasta . Date ,  idPlanta ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  detalleUtc  =  detalle . Select ( d  = > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                { 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    d . FechaMovimiento  =  DateTime . SpecifyKind ( d . FechaMovimiento ,  DateTimeKind . Utc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  d ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ) . ToList ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( detalleUtc ,  totales ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Movimiento de Bobinas por Estado." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < MovimientoBobinaEstadoDetalleDto > ( ) ,  Enumerable . Empty < MovimientoBobinaEstadoTotalDto > ( ) ,  "Error interno al generar el reporte de movimiento de bobinas por estado." ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 11:21:00 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < ListadoDistribucionGeneralResumenDto >  Resumen ,  IEnumerable < ListadoDistribucionGeneralPromedioDiaDto >  Promedios ,  string?  Error ) >  ObtenerListadoDistribucionGeneralAsync ( int  idPublicacion ,  DateTime  fechaDesde ,  DateTime  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ListadoDistribucionGeneralResumenDto > ( ) ,  Enumerable . Empty < ListadoDistribucionGeneralPromedioDiaDto > ( ) ,  "La fecha 'Desde' no puede ser mayor que la fecha 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // El SP SP_DistObtenerResumenMensual usa Mes y Año de fechaDesde. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // El SP SP_DistObtenerResumenMensualPorDiaSemana también. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  resumenData  =  await  _reportesRepository . GetListadoDistribucionGeneralResumenAsync ( idPublicacion ,  fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  promediosData  =  await  _reportesRepository . GetListadoDistribucionGeneralPromedioDiaAsync ( idPublicacion ,  fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                var  resumenUtc  =  resumenData . Select ( r  = >  {  r . Fecha  =  DateTime . SpecifyKind ( r . Fecha ,  DateTimeKind . Utc ) ;  return  r ;  } ) . ToList ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 11:21:00 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return  ( resumenUtc ,  promediosData ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Listado Distribucion General." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ListadoDistribucionGeneralResumenDto > ( ) ,  Enumerable . Empty < ListadoDistribucionGeneralPromedioDiaDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < ListadoDistribucionCanillasSimpleDto >  Simple ,  IEnumerable < ListadoDistribucionCanillasPromedioDiaDto >  Promedios ,  string?  Error ) >  ObtenerListadoDistribucionCanillasAsync ( int  idPublicacion ,  DateTime  fechaDesde ,  DateTime  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ListadoDistribucionCanillasSimpleDto > ( ) ,  Enumerable . Empty < ListadoDistribucionCanillasPromedioDiaDto > ( ) ,  "La fecha 'Desde' no puede ser mayor que la fecha 'Hasta'." ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  simpleData  =  await  _reportesRepository . GetListadoDistribucionCanillasSimpleAsync ( idPublicacion ,  fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  promediosData  =  await  _reportesRepository . GetListadoDistribucionCanillasPromedioDiaAsync ( idPublicacion ,  fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( simpleData ,  promediosData ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Listado Distribucion Canillas." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ListadoDistribucionCanillasSimpleDto > ( ) ,  Enumerable . Empty < ListadoDistribucionCanillasPromedioDiaDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < ListadoDistribucionCanillasImporteDto >  Data ,  string?  Error ) >  ObtenerListadoDistribucionCanillasConImporteAsync ( int  idPublicacion ,  DateTime  fechaDesde ,  DateTime  fechaHasta ,  bool  esAccionista ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ListadoDistribucionCanillasImporteDto > ( ) ,  "La fecha 'Desde' no puede ser mayor que la fecha 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetListadoDistribucionCanillasImporteAsync ( idPublicacion ,  fechaDesde ,  fechaHasta ,  esAccionista ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Listado Distribucion Canillas con Importe." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ListadoDistribucionCanillasImporteDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < VentaMensualSecretariaElDiaDto >  Data ,  string?  Error ) >  ObtenerVentaMensualSecretariaElDiaAsync ( DateTime  fechaDesde ,  DateTime  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta )  return  ( Enumerable . Empty < VentaMensualSecretariaElDiaDto > ( ) ,  "La fecha 'Desde' no puede ser mayor que la fecha 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetVentaMensualSecretariaElDiaAsync ( fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Venta Mensual Secretaria El Dia." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < VentaMensualSecretariaElDiaDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < VentaMensualSecretariaElPlataDto >  Data ,  string?  Error ) >  ObtenerVentaMensualSecretariaElPlataAsync ( DateTime  fechaDesde ,  DateTime  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta )  return  ( Enumerable . Empty < VentaMensualSecretariaElPlataDto > ( ) ,  "La fecha 'Desde' no puede ser mayor que la fecha 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetVentaMensualSecretariaElPlataAsync ( fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Venta Mensual Secretaria El Plata." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < VentaMensualSecretariaElPlataDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < VentaMensualSecretariaTirDevoDto >  Data ,  string?  Error ) >  ObtenerVentaMensualSecretariaTirDevoAsync ( DateTime  fechaDesde ,  DateTime  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta )  return  ( Enumerable . Empty < VentaMensualSecretariaTirDevoDto > ( ) ,  "La fecha 'Desde' no puede ser mayor que la fecha 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetVentaMensualSecretariaTirDevoAsync ( fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Venta Mensual Secretaria Tirada/Devolucion." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < VentaMensualSecretariaTirDevoDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        public  async  Task < ( 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IEnumerable < DetalleDistribucionCanillaDto >  Canillas , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IEnumerable < DetalleDistribucionCanillaDto >  CanillasAcc , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IEnumerable < DetalleDistribucionCanillaAllDto >  CanillasAll , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IEnumerable < DetalleDistribucionCanillaDto >  CanillasFechaLiq , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IEnumerable < DetalleDistribucionCanillaDto >  CanillasAccFechaLiq , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IEnumerable < ObtenerCtrlDevolucionesDto >  CtrlDevolucionesRemitos , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IEnumerable < ControlDevolucionesReporteDto >  CtrlDevolucionesParaDistCan , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IEnumerable < DevueltosOtrosDiasDto >  CtrlDevolucionesOtrosDias , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    string?  Error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								) >  ObtenerReporteDistribucionCanillasAsync ( DateTime  fecha ,  int  idEmpresa )  
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  canillasTask  =  _reportesRepository . GetDetalleDistribucionCanillasPubliAsync ( fecha ,  idEmpresa ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  canillasAccTask  =  _reportesRepository . GetDetalleDistribucionCanillasAccPubliAsync ( fecha ,  idEmpresa ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  canillasAllTask  =  _reportesRepository . GetDetalleDistribucionCanillasAllPubliAsync ( fecha ,  idEmpresa ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  canillasFechaLiqTask  =  _reportesRepository . GetDetalleDistribucionCanillasPubliFechaLiqAsync ( fecha ,  idEmpresa ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  canillasAccFechaLiqTask  =  _reportesRepository . GetDetalleDistribucionCanillasAccPubliFechaLiqAsync ( fecha ,  idEmpresa ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                var  ctrlDevolucionesRemitosTask  =  _reportesRepository . GetReporteObtenerCtrlDevolucionesAsync ( fecha ,  idEmpresa ) ;  // SP_ObtenerCtrlDevoluciones 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  ctrlDevolucionesParaDistCanTask  =  _reportesRepository . GetReporteCtrlDevolucionesParaDistCanAsync ( fecha ,  idEmpresa ) ;  // SP_DistCanillasCantidadEntradaSalida 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  ctrlDevolucionesOtrosDiasTask  =  _reportesRepository . GetEntradaSalidaOtrosDiasAsync ( fecha ,  idEmpresa ) ;  // SP_DistCanillasCantidadEntradaSalidaOtrosDias 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                await  Task . WhenAll ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    canillasTask ,  canillasAccTask ,  canillasAllTask , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    canillasFechaLiqTask ,  canillasAccFechaLiqTask , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ctrlDevolucionesRemitosTask ,  ctrlDevolucionesParaDistCanTask , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ctrlDevolucionesOtrosDiasTask 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                Func < IEnumerable < DetalleDistribucionCanillaDto > ,  IEnumerable < DetalleDistribucionCanillaDto > >  toUtc  = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    items  = >  items ? . Select ( c  = >  {  if  ( c . Fecha . HasValue )  c . Fecha  =  DateTime . SpecifyKind ( c . Fecha . Value . Date ,  DateTimeKind . Utc ) ;  return  c ;  } ) . ToList ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                             ? ?  Enumerable . Empty < DetalleDistribucionCanillaDto > ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    toUtc ( await  canillasTask ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    toUtc ( await  canillasAccTask ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    await  canillasAllTask  ? ?  Enumerable . Empty < DetalleDistribucionCanillaAllDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    toUtc ( await  canillasFechaLiqTask ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    toUtc ( await  canillasAccFechaLiqTask ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    await  ctrlDevolucionesRemitosTask  ? ?  Enumerable . Empty < ObtenerCtrlDevolucionesDto > ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    await  ctrlDevolucionesParaDistCanTask  ? ?  Enumerable . Empty < ControlDevolucionesReporteDto > ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    await  ctrlDevolucionesOtrosDiasTask  ? ?  Enumerable . Empty < DevueltosOtrosDiasDto > ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Reporte Distribucion Canillas para fecha {Fecha} y empresa {IdEmpresa}." ,  fecha ,  idEmpresa ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < DetalleDistribucionCanillaDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < DetalleDistribucionCanillaDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < DetalleDistribucionCanillaAllDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < DetalleDistribucionCanillaDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < DetalleDistribucionCanillaDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < ObtenerCtrlDevolucionesDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < ControlDevolucionesReporteDto > ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    Enumerable . Empty < DevueltosOtrosDiasDto > ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    "Error interno al generar el reporte de distribución de canillas." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < TiradasPublicacionesSeccionesDto >  Data ,  string?  Error ) >  ObtenerTiradasPublicacionesSeccionesAsync ( int  idPublicacion ,  DateTime  fechaDesde ,  DateTime  fechaHasta ,  int  idPlanta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta )  return  ( Enumerable . Empty < TiradasPublicacionesSeccionesDto > ( ) ,  "Fecha 'Desde' no puede ser mayor que 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetTiradasPublicacionesSeccionesAsync ( idPublicacion ,  fechaDesde ,  fechaHasta ,  idPlanta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Tiradas por Publicación y Secciones." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < TiradasPublicacionesSeccionesDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < TiradasPublicacionesSeccionesDto >  Data ,  string?  Error ) >  ObtenerTiradasPublicacionesSeccionesConsolidadoAsync ( int  idPublicacion ,  DateTime  fechaDesde ,  DateTime  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta )  return  ( Enumerable . Empty < TiradasPublicacionesSeccionesDto > ( ) ,  "Fecha 'Desde' no puede ser mayor que 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetTiradasPublicacionesSeccionesConsolidadoAsync ( idPublicacion ,  fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Tiradas por Publicación y Secciones (Consolidado)." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < TiradasPublicacionesSeccionesDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < ConsumoBobinasSeccionDto >  Data ,  string?  Error ) >  ObtenerConsumoBobinasPorSeccionAsync ( DateTime  fechaDesde ,  DateTime  fechaHasta ,  int  idPlanta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta )  return  ( Enumerable . Empty < ConsumoBobinasSeccionDto > ( ) ,  "Fecha 'Desde' no puede ser mayor que 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetConsumoBobinasPorSeccionAsync ( fechaDesde ,  fechaHasta ,  idPlanta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Consumo de Bobinas por Sección." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ConsumoBobinasSeccionDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < ConsumoBobinasSeccionDto >  Data ,  string?  Error ) >  ObtenerConsumoBobinasPorSeccionConsolidadoAsync ( DateTime  fechaDesde ,  DateTime  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta )  return  ( Enumerable . Empty < ConsumoBobinasSeccionDto > ( ) ,  "Fecha 'Desde' no puede ser mayor que 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetConsumoBobinasPorSeccionConsolidadoAsync ( fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Consumo de Bobinas por Sección (Consolidado)." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ConsumoBobinasSeccionDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < ConsumoBobinasPublicacionDto >  Data ,  string?  Error ) >  ObtenerConsumoBobinasPorPublicacionAsync ( DateTime  fechaDesde ,  DateTime  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta )  return  ( Enumerable . Empty < ConsumoBobinasPublicacionDto > ( ) ,  "Fecha 'Desde' no puede ser mayor que 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetConsumoBobinasPorPublicacionAsync ( fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Consumo de Bobinas por Publicación." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ConsumoBobinasPublicacionDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < ComparativaConsumoBobinasDto >  Data ,  string?  Error ) >  ObtenerComparativaConsumoBobinasAsync ( DateTime  fechaInicioMesA ,  DateTime  fechaFinMesA ,  DateTime  fechaInicioMesB ,  DateTime  fechaFinMesB ,  int  idPlanta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaInicioMesA  >  fechaFinMesA  | |  fechaInicioMesB  >  fechaFinMesB )  return  ( Enumerable . Empty < ComparativaConsumoBobinasDto > ( ) ,  "Fechas de inicio no pueden ser mayores que las de fin para los meses." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetComparativaConsumoBobinasAsync ( fechaInicioMesA ,  fechaFinMesA ,  fechaInicioMesB ,  fechaFinMesB ,  idPlanta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Comparativa de Consumo de Bobinas." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ComparativaConsumoBobinasDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < ComparativaConsumoBobinasDto >  Data ,  string?  Error ) >  ObtenerComparativaConsumoBobinasConsolidadoAsync ( DateTime  fechaInicioMesA ,  DateTime  fechaFinMesA ,  DateTime  fechaInicioMesB ,  DateTime  fechaFinMesB ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaInicioMesA  >  fechaFinMesA  | |  fechaInicioMesB  >  fechaFinMesB )  return  ( Enumerable . Empty < ComparativaConsumoBobinasDto > ( ) ,  "Fechas de inicio no pueden ser mayores que las de fin para los meses." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetComparativaConsumoBobinasConsolidadoAsync ( fechaInicioMesA ,  fechaFinMesA ,  fechaInicioMesB ,  fechaFinMesB ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Comparativa de Consumo de Bobinas (Consolidado)." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ComparativaConsumoBobinasDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Implementación para ReporteCuentasDistribuidores 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            IEnumerable < BalanceCuentaDistDto >  EntradasSalidas , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            IEnumerable < BalanceCuentaDebCredDto >  DebitosCreditos , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            IEnumerable < BalanceCuentaPagosDto >  Pagos , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            IEnumerable < SaldoDto >  Saldos , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            string?  Error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) >  ObtenerReporteCuentasDistribuidorAsync ( int  idDistribuidor ,  int  idEmpresa ,  DateTime  fechaDesde ,  DateTime  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < BalanceCuentaDistDto > ( ) ,  Enumerable . Empty < BalanceCuentaDebCredDto > ( ) ,  Enumerable . Empty < BalanceCuentaPagosDto > ( ) ,  Enumerable . Empty < SaldoDto > ( ) ,  "Fecha 'Desde' no puede ser mayor que 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  esTask  =  _reportesRepository . GetBalanceCuentaDistEntradaSalidaPorEmpresaAsync ( idDistribuidor ,  idEmpresa ,  fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  dcTask  =  _reportesRepository . GetBalanceCuentDistDebCredEmpresaAsync ( idDistribuidor ,  idEmpresa ,  fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  paTask  =  _reportesRepository . GetBalanceCuentDistPagosEmpresaAsync ( idDistribuidor ,  idEmpresa ,  fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  saTask  =  _reportesRepository . GetBalanceCuentSaldosEmpresasAsync ( "Distribuidores" ,  idDistribuidor ,  idEmpresa ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                await  Task . WhenAll ( esTask ,  dcTask ,  paTask ,  saTask ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                Func < IEnumerable < BalanceCuentaDistDto > ,  IEnumerable < BalanceCuentaDistDto > >  esToUtc  = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    items  = >  items ? . Select ( i  = >  {  i . Fecha  =  DateTime . SpecifyKind ( i . Fecha . Date ,  DateTimeKind . Utc ) ;  return  i ;  } ) . ToList ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            ? ?  Enumerable . Empty < BalanceCuentaDistDto > ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                Func < IEnumerable < BalanceCuentaDebCredDto > ,  IEnumerable < BalanceCuentaDebCredDto > >  dcToUtc  = 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    items  = >  items ? . Select ( i  = >  {  i . Fecha  =  DateTime . SpecifyKind ( i . Fecha . Date ,  DateTimeKind . Utc ) ;  return  i ;  } ) . ToList ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            ? ?  Enumerable . Empty < BalanceCuentaDebCredDto > ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-28 16:01:59 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                Func < IEnumerable < BalanceCuentaPagosDto > ,  IEnumerable < BalanceCuentaPagosDto > >  paToUtc  = 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 18:17:56 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    items  = >  items ? . Select ( i  = >  {  i . Fecha  =  DateTime . SpecifyKind ( i . Fecha . Date ,  DateTimeKind . Utc ) ;  return  i ;  } ) . ToList ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            ? ?  Enumerable . Empty < BalanceCuentaPagosDto > ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    esToUtc ( await  esTask ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    dcToUtc ( await  dcTask ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    paToUtc ( await  paTask ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    await  saTask  ? ?  Enumerable . Empty < SaldoDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Reporte Cuentas Distribuidor." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < BalanceCuentaDistDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < BalanceCuentaDebCredDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < BalanceCuentaPagosDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < SaldoDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "Error interno al generar el reporte." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-31 23:48:42 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < ListadoDistribucionDistSimpleDto >  Simple ,  IEnumerable < ListadoDistribucionDistPromedioDiaDto >  Promedios ,  string?  Error ) >  ObtenerListadoDistribucionDistribuidoresAsync ( int  idDistribuidor ,  int  idPublicacion ,  DateTime  fechaDesde ,  DateTime  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fechaDesde  >  fechaHasta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ListadoDistribucionDistSimpleDto > ( ) ,  Enumerable . Empty < ListadoDistribucionDistPromedioDiaDto > ( ) ,  "La fecha 'Desde' no puede ser mayor que la fecha 'Hasta'." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Llamar a los métodos específicos del repositorio 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  simpleDataTask  =  _reportesRepository . GetListadoDistribucionDistSimpleAsync ( idDistribuidor ,  idPublicacion ,  fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  promediosDataTask  =  _reportesRepository . GetListadoDistribucionDistPromedioDiaAsync ( idDistribuidor ,  idPublicacion ,  fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                await  Task . WhenAll ( simpleDataTask ,  promediosDataTask ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( await  simpleDataTask ,  await  promediosDataTask ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener Listado Distribucion (Distribuidores). Params: Dist={idDistribuidor}, Pub={idPublicacion}, Desde={fechaDesde}, Hasta={fechaHasta}" ,  idDistribuidor ,  idPublicacion ,  fechaDesde ,  fechaHasta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ListadoDistribucionDistSimpleDto > ( ) ,  Enumerable . Empty < ListadoDistribucionDistPromedioDiaDto > ( ) ,  "Error interno al generar el reporte." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2025-06-03 13:45:20 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        IEnumerable < LiquidacionCanillaDetalleDto >  Detalles , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        IEnumerable < LiquidacionCanillaGananciaDto >  Ganancias , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        string?  Error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) >  ObtenerDatosTicketLiquidacionAsync ( DateTime  fecha ,  int  idCanilla ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  detallesTask  =  _reportesRepository . GetLiquidacionCanillaDetalleAsync ( fecha ,  idCanilla ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  gananciasTask  =  _reportesRepository . GetLiquidacionCanillaGananciasAsync ( fecha ,  idCanilla ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                await  Task . WhenAll ( detallesTask ,  gananciasTask ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  detalles  =  await  detallesTask ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  ganancias  =  await  gananciasTask ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ( detalles  = =  null  | |  ! detalles . Any ( ) )  & &  ( ganancias  = =  null  | |  ! ganancias . Any ( ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Podrías optar por no devolver error aquí si es válido que uno de los dos esté vacío 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // y manejarlo en el controlador o el RDLC. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Convertir fechas a UTC si es necesario para el RDLC (aunque estos DTOs no tienen fechas) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    detalles  ? ?  Enumerable . Empty < LiquidacionCanillaDetalleDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ganancias  ? ?  Enumerable . Empty < LiquidacionCanillaGananciaDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error en ReportesService al obtener datos para Ticket Liquidación Canilla. Fecha: {Fecha}, Canilla: {IdCanilla}" ,  fecha ,  idCanilla ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < LiquidacionCanillaDetalleDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    Enumerable . Empty < LiquidacionCanillaGananciaDto > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "Error interno al obtener los datos para el ticket de liquidación." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2025-06-06 18:33:09 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < ListadoDistCanMensualDiariosDto >  Data ,  string?  Error ) >  ObtenerReporteMensualDiariosAsync ( DateTime  fechaDesde ,  DateTime  fechaHasta ,  bool  esAccionista ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetReporteMensualDiariosAsync ( fechaDesde ,  fechaHasta ,  esAccionista ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error al obtener reporte mensual canillitas (diarios)." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ListadoDistCanMensualDiariosDto > ( ) ,  "Error al obtener datos del reporte (diarios)." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        public  async  Task < ( IEnumerable < ListadoDistCanMensualPubDto >  Data ,  string?  Error ) >  ObtenerReporteMensualPorPublicacionAsync ( DateTime  fechaDesde ,  DateTime  fechaHasta ,  bool  esAccionista ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  data  =  await  _reportesRepository . GetReporteMensualPorPublicacionAsync ( fechaDesde ,  fechaHasta ,  esAccionista ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( data ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( Exception  ex ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _logger . LogError ( ex ,  "Error al obtener reporte mensual canillitas (por publicación)." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( Enumerable . Empty < ListadoDistCanMensualPubDto > ( ) ,  "Error al obtener datos del reporte (por publicación)." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 11:21:00 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}