public async Task OnGetAsync(int unidadId) { Unidad = await Mediator.Send(new UnidadGet.RequestModel() { Id = unidadId }); Institucion = await Mediator.Send(new InstitucionGet.RequestModel() { Id = Unidad.InstitucionId }); Input = new DisponibilidadCreateUpdate.RequestModel() { Id = -1, UnidadId = unidadId, Fecha = DateTime.UtcNow }; }
/// <summary> /// Convierte los registros que representan a las uniades en un documento de instancia de base de datos /// a su representación en DTO /// </summary> /// <param name="instanciaDb">Documento de instancia de Base de datos</param> /// <param name="instanciaXbrlDto">Documento de instancia destino dto</param> private static void CargarUnidades(DocumentoInstancia instanciaDb, DocumentoInstanciaXbrlDto instanciaXbrlDto) { foreach (var unidadDb in instanciaDb.Unidad) { var unidadDto = new UnidadDto { Id = unidadDb.IdRef, Tipo = unidadDb.EsFraccion ? Unit.Divisoria : Unit.Medida }; if (unidadDto.Tipo == Unit.Medida) { unidadDto.Medidas = CrearMedidasDto(unidadDb.Medida); } else { unidadDto.MedidasNumerador = CrearMedidasDto(unidadDb.Numerador); unidadDto.MedidasDenominador = CrearMedidasDto(unidadDb.Denominador); } if (!instanciaXbrlDto.UnidadesPorId.ContainsKey(unidadDto.Id)) { instanciaXbrlDto.UnidadesPorId.Add(unidadDto.Id, unidadDto); } } }
private void ActualizarValorHecho(ConceptoDto concepto, string valorCelda, List <DimensionInfoDto> dimensiones, DateTime fechaInicio, DateTime fechaFin, string qNameEntidad, DocumentoInstanciaXbrlDto instancia, IDefinicionPlantillaXbrl plantillaDocumento, AbaxXBRLCore.Common.Dtos.ResumenProcesoImportacionExcelDto resumenImportacion, ISheet hojaImportar, int iRenglon, int columna) { if (String.IsNullOrEmpty(valorCelda)) { return; } var fechaDefault = plantillaDocumento.ObtenerVariablePorId("fecha_2015_01_01"); List <HechoDto> hechosAActualizar = new List <HechoDto>(); var hechos = instancia.BuscarHechos(concepto.Id, null, null, fechaInicio, fechaFin, dimensiones); if (hechos.Count > 0) { hechosAActualizar.AddRange(hechos); } else { var qNameCompleto = XmlUtil.ParsearQName(qNameEntidad); ContextoDto contextoDestino = null; var tipoPeriodo = concepto.TipoPeriodo.Equals(EtiquetasXBRLConstantes.Instant) ? Period.Instante : Period.Duracion; var contextos = instancia.BuscarContexto(qNameEntidad, tipoPeriodo, fechaInicio, fechaFin, dimensiones); if (contextos == null || contextos.Count == 0) { contextoDestino = new ContextoDto() { Entidad = new EntidadDto() { ContieneInformacionDimensional = false, EsquemaId = qNameCompleto.Namespace, Id = qNameCompleto.Name }, ContieneInformacionDimensional = dimensiones.Count > 0, ValoresDimension = dimensiones, Periodo = new PeriodoDto() { Tipo = tipoPeriodo, FechaInicio = fechaInicio, FechaFin = fechaFin, FechaInstante = fechaFin }, Id = "C" + Guid.NewGuid().ToString() }; plantillaDocumento.InyectarContextoADocumentoInstancia(contextoDestino); } else { contextoDestino = contextos[0]; } UnidadDto unidadDestino = null; if (concepto.EsTipoDatoNumerico) { var listaMedidas = new List <MedidaDto>() { new MedidaDto() { EspacioNombres = plantillaDocumento.ObtenerVariablePorId("medida_http___www_xbrl_org_2003_iso4217"), Nombre = plantillaDocumento.ObtenerVariablePorId("medida_MXN") } }; var unidades = instancia.BuscarUnidades(Unit.Medida, listaMedidas, null); if (unidades == null || unidades.Count == 0) { unidadDestino = new UnidadDto() { Id = "U" + Guid.NewGuid().ToString(), Tipo = Unit.Medida, Medidas = listaMedidas }; instancia.UnidadesPorId.Add(unidadDestino.Id, unidadDestino); } else { unidadDestino = unidades[0]; } } var hechoNuevo = instancia.CrearHecho(concepto.Id, unidadDestino != null ? unidadDestino.Id : null, contextoDestino.Id, "A" + Guid.NewGuid().ToString()); if (concepto.EsTipoDatoNumerico) { hechoNuevo.Valor = "0"; hechoNuevo.Decimales = _valorDecimalesHechos; } hechosAActualizar.Add(hechoNuevo); plantillaDocumento.InyectaHechoADocumentoInstancia(hechoNuevo); } foreach (var hechoActualizar in hechosAActualizar) { var conceptoImportar = instancia.Taxonomia.ConceptosPorId[hechoActualizar.IdConcepto]; if (!UtilAbax.ActualizarValorHecho(conceptoImportar, hechoActualizar, valorCelda, fechaDefault)) { resumenImportacion.AgregarErrorFormato( UtilAbax.ObtenerEtiqueta(instancia.Taxonomia, conceptoImportar.Id), hojaImportar.SheetName, iRenglon.ToString(), columna.ToString(), valorCelda); } else { resumenImportacion.TotalHechosImportados++; var hechoImportado = new AbaxXBRLCore.Common.Dtos.InformacionHechoImportadoExcelDto() { IdConcepto = hechoActualizar.IdConcepto, IdHecho = hechoActualizar.Id, ValorImportado = valorCelda, HojaExcel = hojaImportar.SheetName, Renglon = iRenglon, Columna = columna }; resumenImportacion.AgregarHechoImportado(hechoImportado, UtilAbax.ObtenerEtiqueta(instancia.Taxonomia, conceptoImportar.Id)); } } }
/// <summary> /// Pinta el encabezado de la tabla. /// </summary> /// <param name="listacontextos">Lista con los contextoos que se van a pintar.</param> /// <param name="docBuilder">Constructor del documento.</param> /// <param name="exportadorOrigen">Exportador origen.</param> /// <param name="unidad">Unidad en la que se reporta la información.</param> public void PintaEncabezadoTabla(IList <ContextoDto> listacontextos, DocumentBuilder docBuilder, ExportadorRolDocumentoBase exportadorOrigen, UnidadDto unidad) { Color colorTitulo = exportadorOrigen.ObtenColorTitulo(); String textoUnidad = exportadorOrigen.ObtenTextoUnidad(unidad); docBuilder.InsertCell(); docBuilder.CellFormat.Shading.BackgroundPatternColor = colorTitulo; docBuilder.Font.Color = Color.White; docBuilder.Font.Size = exportadorOrigen.TamanioLetraContenidoTabla; docBuilder.RowFormat.HeadingFormat = true; docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left; docBuilder.Write("Concepto"); foreach (var contexto in listacontextos) { var fechaPeriodo = contexto.Periodo.Tipo == PeriodoDto.Duracion ? contexto.Periodo.FechaFin : contexto.Periodo.FechaInstante; var textoFecha = fechaPeriodo.ToString(DateUtil.DMYDateFormat); docBuilder.InsertCell(); docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center; docBuilder.Writeln(textoFecha); docBuilder.Write(textoUnidad); } docBuilder.EndRow(); docBuilder.CellFormat.HorizontalMerge = CellMerge.None; docBuilder.CellFormat.Shading.BackgroundPatternColor = Color.White; docBuilder.Font.Color = Color.Black; docBuilder.Bold = false; }
/// <summary> /// Crea los datos de una unidad de base de datos en base a los datos del DTO de origen /// </summary> /// <param name="documentoOrigen"></param> /// <param name="unidadDTO"></param> /// <returns></returns> public static Unidad CrearUnidadDb(DocumentoInstanciaXbrlDto documentoOrigen, UnidadDto unidadDTO) { var unidadDb = new Unidad { EsFraccion = unidadDTO.Tipo == Unit.Divisoria, IdRef = unidadDTO.Id }; if (!unidadDb.EsFraccion) { //Obtener la lista de medidas string sMedidas = ""; foreach (var medidaDTO in unidadDTO.Medidas) { if (!String.IsNullOrEmpty(sMedidas)) { sMedidas += ","; } sMedidas += medidaDTO.EspacioNombres + ":" + medidaDTO.Nombre; } unidadDb.Medida = sMedidas; } else { //Numerador string sMedidas = ""; foreach (var medidaDTO in unidadDTO.MedidasNumerador) { if (!String.IsNullOrEmpty(sMedidas)) { sMedidas += ","; } sMedidas += medidaDTO.EspacioNombres + ":" + medidaDTO.Nombre; } unidadDb.Numerador = sMedidas; //Denominador sMedidas = ""; foreach (var medidaDTO in unidadDTO.MedidasDenominador) { if (!String.IsNullOrEmpty(sMedidas)) { sMedidas += ","; } sMedidas += medidaDTO.EspacioNombres + ":" + medidaDTO.Nombre; } unidadDb.Denominador = sMedidas; } return(unidadDb); }
public void TestActualizarModeloVistaDocumentoInstancia() { var service = new DocumentoInstanciaService { DocumentoInstanciaRepository = new DocumentoInstanciaRepository(), UsuarioDocumentoInstanciaRepository = new UsuarioDocumentoInstanciaRepository(), VersionDocumentoInstanciaRepository = new VersionDocumentoInstanciaRepository(), EmpresaRepository = new EmpresaRepository(), UsuarioRepository = new UsuarioRepository(), UnidadRepository = new UnidadRepository(), ContextoRepository = new ContextoRepository(), DtsDocumentoInstanciaRepository = new DtsDocumentoInstanciaRepository(), HechoRepository = new HechoRepository() }; var instancia = new DocumentoInstanciaXbrlDto { IdDocumentoInstancia = 160, EsCorrecto = true, IdEmpresa = 1, NombreArchivo = "Titulo1", Titulo = "Titulo1", UnidadesPorId = new Dictionary <string, UnidadDto>() }; var unidad = new UnidadDto { Id = "MXN", Tipo = Unit.Medida, Medidas = new List <MedidaDto> { new MedidaDto { EspacioNombres = "http://www.xbrl.org/2003/iso4217", Nombre = "MXN" } } }; instancia.UnidadesPorId.Add(unidad.Id, unidad); //Contextos var contexto = new AbaxXBRLCore.Viewer.Application.Dto.ContextoDto() { ContieneInformacionDimensional = false, Escenario = null, Id = "ctx1", Entidad = new EntidadDto { EsquemaId = "http://2hsoftware.com", Id = "e1", Segmento = null }, Periodo = new PeriodoDto { Tipo = Period.Instante, FechaInstante = AbaxXBRLCore.Common.Util.DateUtil.ParseStandarDate("01/03/2014") } }; instancia.ContextosPorId = new Dictionary <string, AbaxXBRLCore.Viewer.Application.Dto.ContextoDto>(); instancia.ContextosPorId.Add(contexto.Id, contexto); instancia.DtsDocumentoInstancia = new List <DtsDocumentoInstanciaDto>(); instancia.DtsDocumentoInstancia.Add(new DtsDocumentoInstanciaDto { Tipo = DtsDocumentoInstanciaDto.SCHEMA_REF, HRef = "ifrsxbrl2014.xsd" }); var hecho = new AbaxXBRLCore.Viewer.Application.Dto.HechoDto { IdConcepto = "http://xbrl.ifrs.org/taxonomy/2011-03-25/ifrs:NameOfReportingEntityOrOtherMeansOfIdentification", EsFraccion = false, EsNumerico = false, NoEsNumerico = true, EsTupla = false, IdContexto = "ctx1", IdUnidad = "MXN", Tipo = Concept.Item, EsValorNil = false, Valor = "ALCON", TipoDato = "stringItemType" }; instancia.HechosPorIdConcepto = new Dictionary <string, IList <string> >(); instancia.HechosPorId = new Dictionary <string, AbaxXBRLCore.Viewer.Application.Dto.HechoDto>(); instancia.HechosPorIdConcepto[hecho.IdConcepto] = new List <string>(); instancia.HechosPorIdConcepto[hecho.IdConcepto].Add(hecho.Id); instancia.HechosPorId.Add(hecho.Id, hecho); instancia.DtsDocumentoInstancia = new List <DtsDocumentoInstanciaDto>(); instancia.DtsDocumentoInstancia.Add(new DtsDocumentoInstanciaDto { Tipo = DtsDocumentoInstanciaDto.SCHEMA_REF, HRef = "http://emisnet.bmv.com.mx/taxonomy/mx-ifrs-ics-2012-04-01/All/ifrs-mx-ics-entryPoint-all-2012-04-01.xsd" }); var viewService = new XbrlViewerService(); }