Пример #1
0
        /// <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,
                    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 <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

                #region Relacionados
                Data_DocumentoRelacionado   data_DocumentoRelacionado = new Data_DocumentoRelacionado(data_Documento.IdCabeceraDocumento);
                List <DocumentoRelacionado> documentoRelacionados     = data_DocumentoRelacionado.Read_DocumentoRelacionado();
                documento.Relacionados = documentoRelacionados;
                #endregion Relacionados

                #region Descuentos
                Data_Descuento   data_Descuento = new Data_Descuento(data_Documento.IdCabeceraDocumento);
                List <Descuento> descuentos     = data_Descuento.Read_Descuento_Total();
                documento.Descuentos = descuentos;
                #endregion Descuentos

                List <PeriodoFactura>       periodoFacturas             = null;
                List <DocumentoRelacionado> otrosDocumentosRelacionados = null;
                List <Entrega>   entregas   = null;
                List <MedioPago> medioPagos = null;

                documento.OtrosDocumentosRelacionados = otrosDocumentosRelacionados;
                documento.Entregas        = entregas;
                documento.MedioPagos      = medioPagos;
                documento.PeriodosFactura = periodoFacturas;
            }
            catch (Exception ex)
            {
                documento = new DocumentoElectronico();
            }

            return(documento);
        }
Пример #2
0
        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);
        }