public void LoadData() { try { Mouse.OverrideCursor = Cursors.Wait; Data_Documentos data_Documento = new Data_Documentos(IdDocumento); // IdDocumento variable global data_Documento.Read_Documento(); Data_CabeceraDocumento cabeceraDocumento = new Data_CabeceraDocumento(data_Documento.IdCabeceraDocumento); cabeceraDocumento.Read_CabeceraDocumento(); Data_Contribuyente Receptor = new Data_Contribuyente(cabeceraDocumento.IdReceptor); Receptor.Read_Contribuyente(); lblTipoDocumento.Content = data_Documento.TDDescripcion; if (!string.IsNullOrEmpty(cabeceraDocumento.FechaEmision.ToString())) { lblFechaRecepcion.Content = cabeceraDocumento.FechaEmision.ToString(); } else { lblFechaRecepcion.Content = "----/--/--"; } if (!string.IsNullOrEmpty(data_Documento.FechaEmisionSUNAT.ToString())) { lblFechaEmision.Content = data_Documento.FechaEmisionSUNAT.ToString(); } else { lblFechaEmision.Content = "----/--/--"; } lblCliente.Content = Receptor.NombreComercial; lblTotal.Content = cabeceraDocumento.ImporteTotalVenta.ToString() + " " + cabeceraDocumento.DescripcionMoneda; } catch (Exception ex) { MessageBox.Show($"Ha ocurrido un error al cargar los registros, detalle del error: {ex}", "Error al cargar los datos", MessageBoxButton.OK, MessageBoxImage.Error); var msg = string.Concat(ex.InnerException?.Message, ex.Message); Data_Log data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al enviar el documento a sunat desde la interfaz", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } finally { Mouse.OverrideCursor = null; } }
/// <summary> /// IMPORTANTE /// Este método obtiene todos los datos del documento electrónico, por el momento esta como sincrono para testing pero en producción se pondrá como asíncrono /// </summary> /// <param name="data_Documento"></param> /// <returns></returns> public DocumentoElectronico data(Data_Documentos data_Documento) { DocumentoElectronico documento; try { Data_CabeceraDocumento cabeceraDocumento = new Data_CabeceraDocumento(data_Documento.IdCabeceraDocumento); cabeceraDocumento.Read_CabeceraDocumento(); documento = new DocumentoElectronico() // Documento principal { SerieCorrelativo = data_Documento.SerieCorrelativo, TipoDocumento = data_Documento.TipoDocumento ?? string.Empty, FechaEmision = cabeceraDocumento.FechaEmision, HoraEmision = cabeceraDocumento.HoraEmision, FechaVencimiento = cabeceraDocumento.FechaVencimiento, OrdenCompra = cabeceraDocumento.OrdenCompra, Moneda = cabeceraDocumento.Moneda, TipoOperacion = cabeceraDocumento.TipoOperacion, MontoEnLetras = cabeceraDocumento.MontoEnLetras ?? string.Empty, CantidadItems = cabeceraDocumento.CantidadItems, TotalValorVenta = cabeceraDocumento.TotalValorVenta, TotalPrecioVenta = cabeceraDocumento.TotalPrecioVenta, TotalDescuento = cabeceraDocumento.TotalDescuento, TotalOtrosCargos = cabeceraDocumento.TotalOtrosCargos, TotalAnticipos = cabeceraDocumento.TotalAnticipos, ImporteTotalVenta = cabeceraDocumento.ImporteTotalVenta }; #region Emisor Data_Contribuyente Emisor = new Data_Contribuyente(data_Documento.IdEmisor); Emisor.Read_Contribuyente(); documento.Emisor = Emisor; #endregion Emisor #region Receptor Data_Contribuyente Receptor = new Data_Contribuyente(cabeceraDocumento.IdReceptor); Receptor.Read_Contribuyente(); documento.Receptor = Receptor; documento.Receptor.OtrosParticipantes = new List <Contribuyente>(); // Pendiente crear entidad OtrosParticipantes #endregion Receptor #region documentoDetalle Data_DocumentoDetalle data_DocumentoDetalle = new Data_DocumentoDetalle(data_Documento.IdCabeceraDocumento); List <DetalleDocumento> detalleDocumentos = data_DocumentoDetalle.Read_DocumentoDetalle(); if (detalleDocumentos.Count > 0) // Validar en caso de que no haya detalles del documento { foreach (var detalleDocumento in detalleDocumentos) { #region lineaTotalImpuesto Data_TotalImpuesto lineaTotalImpuesto = new Data_TotalImpuesto(detalleDocumento.IdDocumentoDetalle); List <TotalImpuesto> lineaTotalImpuestos = lineaTotalImpuesto.Read_TotalImpuestos(2); // El parámetro -> 2 <- es indicativo de que es por cada línea foreach (var st_totalImpuesto in lineaTotalImpuestos) { Data_SubTotalImpuesto data_SubTotalImpuesto = new Data_SubTotalImpuesto(st_totalImpuesto.IdTotalImpuestos); List <SubTotalImpuestos> subTotalImpuestos = data_SubTotalImpuesto.Read_SubTotalImpuesto(); st_totalImpuesto.SubTotalesImpuestos = subTotalImpuestos; } detalleDocumento.TotalImpuestos = lineaTotalImpuestos; #endregion lineaTotalImpuesto #region Notas Data_Nota lineaData_Nota = new Data_Nota(detalleDocumento.IdDocumentoDetalle); // Parámetro es el id de cabecera de documento List <Nota> lineaNotas = lineaData_Nota.Read(2); detalleDocumento.Notas = lineaNotas; #endregion Notas #region Descripciones List <Descripcion> descripciones = data_DocumentoDetalle.Read_Descripcion(detalleDocumento.IdDocumentoDetalle); detalleDocumento.Descripciones = descripciones; #endregion Descripciones #region PrecioAlternativo Data_PrecioAlternativo data_PrecioAlternativo = new Data_PrecioAlternativo(detalleDocumento.IdDocumentoDetalle); List <PrecioAlternativo> precioAlternativos = data_PrecioAlternativo.Read_PrecioAlternativo(); detalleDocumento.PreciosAlternativos = precioAlternativos; #endregion PrecioAlternativo #region emergency List <Descuento> descuentos = new List <Descuento>(); detalleDocumento.Descuentos = descuentos; List <PropiedadAdicional> propiedadAdicionales = new List <PropiedadAdicional>(); detalleDocumento.PropiedadesAdicionales = propiedadAdicionales; List <Entrega> entregas1 = new List <Entrega>(); Entrega data_entrega; data_entrega = new Entrega() { Cantidad = 0, MaximaCantidad = 0, Envio = new Envio(), }; entregas1.Add(data_entrega); detalleDocumento.Entregas = entregas1; #endregion emergency } documento.DetalleDocumentos = detalleDocumentos; } #endregion documentoDetalle #region TotalImpuestos Data_TotalImpuesto data_TotalImpuesto = new Data_TotalImpuesto(data_Documento.IdCabeceraDocumento); List <TotalImpuesto> totalImpuestos = data_TotalImpuesto.Read_TotalImpuestos(1); // El parámetro -> 1 <- es indicativo de que es por cada línea foreach (var st_totalImpuesto in totalImpuestos) { Data_SubTotalImpuesto data_SubTotalImpuesto = new Data_SubTotalImpuesto(st_totalImpuesto.IdTotalImpuestos); List <SubTotalImpuestos> subTotalImpuestos = data_SubTotalImpuesto.Read_SubTotalImpuesto(); st_totalImpuesto.SubTotalesImpuestos = subTotalImpuestos; } documento.TotalImpuestos = totalImpuestos; #endregion TotalImpuestos #region Notas Data_Nota data_Nota = new Data_Nota(data_Documento.IdCabeceraDocumento); // Parámetro es el id de cabecera de documento List <Nota> notas = data_Nota.Read(1); documento.Notas = notas; #endregion Notas #region TerminosEntregas Data_TerminosEntrega data_TerminosEntrega = new Data_TerminosEntrega(data_Documento.IdCabeceraDocumento); data_TerminosEntrega.Read_TerminosEntrega(); // El parámetro -> 1 <- es indicativo de que es por cada línea documento.TerminosEntrega = data_TerminosEntrega; #endregion TerminosEntregas #region Anticipos Data_Anticipo anticipo = new Data_Anticipo(data_Documento.IdCabeceraDocumento); List <Anticipo> anticipos = anticipo.Read_Anticipo(); documento.Anticipos = anticipos; #endregion Anticipos List <PeriodoFactura> periodoFacturas = null; List <DocumentoRelacionado> documentoRelacionados = null; List <DocumentoRelacionado> otrosDocumentosRelacionados = null; List <Entrega> entregas = null; List <MedioPago> medioPagos = null; List <Descuento> item_descuentos = null; documento.Relacionados = documentoRelacionados; documento.OtrosDocumentosRelacionados = otrosDocumentosRelacionados; documento.Entregas = entregas; documento.MedioPagos = medioPagos; documento.Descuentos = item_descuentos; documento.PeriodosFactura = periodoFacturas; } catch (Exception ex) { documento = new DocumentoElectronico(); } return(documento); }
public ResumenDiario Data(List <Data_Documentos> data_Documentos) { DateTime dateTime = DateTime.Now; ResumenDiario resumenDiario; ReadGeneralData readGeneralData = new ReadGeneralData(); try { Data_CabeceraDocumento cabeceraDocumento = new Data_CabeceraDocumento(data_Documentos[0].IdCabeceraDocumento); cabeceraDocumento.Read_CabeceraDocumento(); Data_Contribuyente data_Emisor = new Data_Contribuyente(data_Documentos[0].IdEmisor); data_Emisor.Read_Contribuyente(); int numeracion = 0; string mes = dateTime.Month < 10 ? $"0{dateTime.Month}" : dateTime.Month.ToString(); string dia = dateTime.Day < 10 ? $"0{dateTime.Day}" : dateTime.Day.ToString(); try { numeracion = readGeneralData.GetScalarValueINT("[dbo].[Query_Scalar_GetValue_CantidadDocsDia]", "@IdDatosFox", data_Documentos[0].IdDatosFox); } catch (Exception) { numeracion++; } resumenDiario = new ResumenDiario() // Documento principal { IdDocumento = $"RC-{dateTime.Year}{mes}{dia}-{numeracion}", FechaEmision = dateTime.ToString(), FechaReferencia = data_Documentos[0].FechaEmision, Emisor = data_Emisor, Resumenes = new List <GrupoResumenNuevo>() }; int contador = 1; foreach (var data_Documento in data_Documentos) { Data_CabeceraDocumento data_CabeceraDocumento = new Data_CabeceraDocumento(data_Documento.IdCabeceraDocumento); data_CabeceraDocumento.Read_CabeceraDocumento(); Data_Contribuyente data_Receptor = new Data_Contribuyente(data_CabeceraDocumento.IdReceptor); data_Receptor.Read_Contribuyente(); var resumen = new GrupoResumenNuevo() { Id = contador, TipoDocumento = data_Documento.TipoDocumento, Serie = data_Documento.SerieCorrelativo, Receptor = data_Receptor, TotalVenta = data_CabeceraDocumento.ImporteTotalVenta, Moneda = data_CabeceraDocumento.Moneda, Gravadas = data_CabeceraDocumento.Gravadas, Exoneradas = data_CabeceraDocumento.Exoneradas, Inafectas = data_CabeceraDocumento.Inafectas, Exportaciones = data_CabeceraDocumento.Exportaciones, Gratuitas = data_CabeceraDocumento.Gratuitas, TotalDescuentos = data_CabeceraDocumento.TotalDescuento, }; Data_DocumentoRelacionado data_DocumentoRelacionado = new Data_DocumentoRelacionado(data_Documento.IdCabeceraDocumento); List <DocumentoRelacionado> documentoRelacionados = data_DocumentoRelacionado.Read_DocumentoRelacionado(); if (documentoRelacionados.Count > 0) { resumen.DocumentoRelacionado = documentoRelacionados[0].NroDocumento ?? string.Empty; // Sólo habrá un doc relacionado para cada boleta } Data_Discrepancia data_Discrepancia = new Data_Discrepancia(data_Documento.IdCabeceraDocumento); List <Discrepancia> discrepancias = data_Discrepancia.Read_DiscrepanciaDocumento(); if (discrepancias.Count > 0) { resumen.CodigoEstadoItem = Convert.ToInt32(discrepancias[0].Tipo ?? string.Empty); // // en la documentación dice que es el valor del tipo de discrepancia catalogo 9 } else { resumen.CodigoEstadoItem = 1; // Poca información respecto a lo que va aquí } #region TotalImpuestos Data_TotalImpuesto data_TotalImpuesto = new Data_TotalImpuesto(data_Documento.IdCabeceraDocumento); List <TotalImpuesto> totalImpuestos = data_TotalImpuesto.Read_TotalImpuestos(1); // El parámetro -> 1 <- es indicativo de que es por cada línea foreach (var st_totalImpuesto in totalImpuestos) { Data_SubTotalImpuesto data_SubTotalImpuesto = new Data_SubTotalImpuesto(st_totalImpuesto.IdTotalImpuestos); List <SubTotalImpuestos> subTotalImpuestos = data_SubTotalImpuesto.Read_SubTotalImpuesto(); st_totalImpuesto.SubTotalesImpuestos = subTotalImpuestos; } resumen.TotalImpuestos = totalImpuestos; #endregion TotalImpuestos resumenDiario.Resumenes.Add(resumen); contador++; } } catch (Exception ex) { resumenDiario = new ResumenDiario(); } return(resumenDiario); }