Пример #1
0
        public GetRespuestaConsultaHacienda ConsultarDocumentoEnHacienda(string clave, string urlConsultaAlmacenada = "")
        {
            var respuesta    = new GetRespuestaConsultaHacienda();
            var respuestaApi = GetDocumento(clave, urlConsultaAlmacenada);

            if (respuestaApi.IsSuccessStatusCode)
            {
                respuesta.ConsultaExitosa = true;
                var jsonRespuesta = respuestaApi.Content.ReadAsStringAsync().Result;
                respuesta.Estado = Newtonsoft.Json.JsonConvert.DeserializeObject <EstadoDocumentoDto>(jsonRespuesta);
                if (!string.IsNullOrEmpty(respuesta.Estado.respuestaXml))
                {
                    respuesta.Estado.respuestaXml = DecodificarBase64(respuesta.Estado.respuestaXml);
                    respuesta.DetalleMensajeXML   = ModFunciones.ObtenerDatosEntre(respuesta.Estado.respuestaXml, "<DetalleMensaje>", "</DetalleMensaje>");
                    respuesta.CodigoMensajeXML    = ModFunciones.ObtenerDatosEntre(respuesta.Estado.respuestaXml, "<Mensaje>", "</Mensaje>");
                }
            }
            else
            {
                IEnumerable <string> valoresHeader;
                if (respuestaApi.Headers.TryGetValues("X-Error-Cause", out valoresHeader))
                {
                    respuesta.Mensaje = valoresHeader.FirstOrDefault();
                }
            }
            return(respuesta);
        }
        public string CrearXML(EnumeradoresFEL.enmTipoDocumento tipoDoc)
        {
            var encDoc = ResolverEncabezado(tipoDoc);

            encDoc.Clave             = Encabezado.Clave;
            encDoc.NumeroConsecutivo = Encabezado.NumeroConsecutivo;
            encDoc.FechaEmision      = Encabezado.FechaEmision;
            encDoc.Emisor            = Encabezado.Emisor;
            encDoc.Receptor          = Validador.esReceptorValido(Encabezado.Receptor) ? Encabezado.Receptor : null;
            encDoc.CondicionVenta    = ModFunciones.ObtenerValorEnumerador(Encabezado.CondicionVenta,
                                                                           Enumeradores.CondicionVenta.Item99);
            encDoc.PlazoCredito          = Encabezado.PlazoCredito;
            encDoc.MedioPago             = AsignarMediosPago();
            encDoc.DetalleServicio       = Detalles.ToArray();
            encDoc.ResumenFactura        = Resumen;
            encDoc.InformacionReferencia = CrearArregloReferencias();
            encDoc.Normativa             = new Normativa
            {
                NumeroResolucion = Encabezado.NormativaNombre,
                FechaResolucion  = Encabezado.NormativaFecha
            };
            encDoc.Otros = CrearSeccionOtros();
            return(encDoc.GenerarXML());

            throw new NotImplementedException();
        }
Пример #3
0
        public List <LineaDetalle> ParsearLineas(List <LineaDetalleSistema> lineasSistema)
        {
            var          felLineas = new List <LineaDetalle>();
            var          cont      = 0;
            LineaDetalle lnFel;

            foreach (var linea in lineasSistema)
            {
                lnFel = new LineaDetalle
                {
                    Cantidad = linea.Cantidad,
                    Codigo   = new CodigoType[] {
                        new CodigoType {
                            Codigo = linea.Codigo,
                            Tipo   = ModFunciones.ObtenerValorEnumerador(linea.TipoCodigo, CodigoType.TipoType.Item99)
                        }
                    },
                    Detalle                      = linea.Detalle,
                    NumeroLinea                  = (cont + 1).ToString(),
                    UnidadMedida                 = ModFunciones.ObtenerValorEnumerador(linea.UnidadMedida, LineaDetalle.UnidadMedidaType.Unid),
                    MontoDescuento               = linea.MontoDescuento,
                    MontoDescuentoSpecified      = linea.MontoDescuento > 0,
                    NaturalezaDescuento          = linea.NaturalezaDescuento,
                    NaturalezaDescuentoSpecified = !string.IsNullOrEmpty(linea.NaturalezaDescuento),
                    MontoTotal                   = linea.MontoTotal,
                    MontoTotalLinea              = linea.MontoTotalLinea,
                    PrecioUnitario               = linea.PrecioUnitario,
                    SubTotal                     = linea.SubTotal
                };
                ParsearImpuesto(lnFel, linea);
                felLineas.Add(lnFel);
                cont++;
            }
            return(felLineas);
        }
        private Enumeradores.MedioPago[] AsignarMediosPago()
        {
            var arrMediosPago = new Enumeradores.MedioPago[Encabezado.MediosPago.Length];

            for (int i = 0; i < Encabezado.MediosPago.Length; i++)
            {
                arrMediosPago[i] = ModFunciones.ObtenerValorEnumerador(Encabezado.MediosPago[i], Enumeradores.MedioPago.Item99);
            }
            return(arrMediosPago);
        }
Пример #5
0
        private Exoneracion ParsearExoneracion(ExoneracionSistema exoSis)
        {
            if (exoSis == null)
            {
                return(null);
            }
            var exo = new Exoneracion
            {
                FechaEmision          = exoSis.FechaEmision,
                MontoExoneracion      = exoSis.MontoExoneracion,
                NombreInstitucion     = exoSis.NombreInstitucion,
                NumeroDocumento       = exoSis.NumeroDocumento,
                PorcentajeExoneracion = exoSis.PorcentajeExoneracion,
                TipoDocumento         = ModFunciones.ObtenerValorEnumerador(exoSis.TipoDocumento, Exoneracion.ExoneracionTipoDoc.Item99)
            };

            return(exo);
        }
Пример #6
0
        private void ParsearImpuesto(LineaDetalle lnFel, LineaDetalleSistema linea)
        {
            if (!Validador.HayImpuestosDeSistema(linea.Impuesto))
            {
                return;
            }
            var imp = new List <Impuesto>();

            linea.Impuesto.ForEach(i =>
            {
                imp.Add(new Impuesto
                {
                    Monto       = i.Monto,
                    Tarifa      = i.Tarifa,
                    Codigo      = ModFunciones.ObtenerValorEnumerador(i.Codigo, Impuesto.ImpuestoCodigo.Item99),
                    Exoneracion = ParsearExoneracion(i.Exoneracion)
                });
            });
            lnFel.Impuesto = imp.ToArray();
        }
        private InformacionReferencia[] CrearArregloReferencias()
        {
            if (DocsReferencia == null || DocsReferencia.Length <= 0)
            {
                return(null);
            }
            var lista = new List <InformacionReferencia>();

            DocsReferencia.ToList().ForEach(t =>
            {
                lista.Add(new InformacionReferencia
                {
                    FechaEmision = t.FechaEmision,
                    Razon        = t.Razon,
                    Codigo       = ModFunciones.ObtenerValorEnumerador(t.Codigo, InformacionReferencia.InformacionReferenciaCodigo.Item99),
                    TipoDoc      = ModFunciones.ObtenerValorEnumerador(t.TipoDoc, InformacionReferencia.TipoDocumento.Item99)
                });
            });

            return(lista.ToArray());
        }
Пример #8
0
        private void ParsearImpuesto(LineaDetalle lnFel, LineaDetalleSistema linea)
        {
            var imp = new List <Impuesto>();

            linea.Impuesto.ForEach(i =>
            {
                imp.Add(new Impuesto
                {
                    Codigo       = ModFunciones.ObtenerValorEnumerador(i.Codigo, Impuesto.ImpuestoCodigo.Item99),
                    CodigoTarifa = ModFunciones.ObtenerValorEnumerador(i.CodigoTarifa, Impuesto.ImpuestoTypeCodigoTarifa.Item01),
                    Tarifa       = i.Tarifa,

                    FactorIVASpecified = i.FactorIVA > 0,
                    FactorIVA          = i.FactorIVA,

                    Monto       = i.Monto,
                    Exoneracion = ParsearExoneracion(i.Exoneracion)
                });
            });
            lnFel.Impuesto = imp.ToArray();
        }
Пример #9
0
 public string GenerarXML()
 {
     return(ModFunciones.ObtenerXMLComoString(this));
 }