Ejemplo n.º 1
0
        public ResponseFactura(string json)
        {
            JObject jo = JObject.Parse(json);

            if (!jo.ContainsKey("respuesta"))
            {
                throw new Exception(Error.E300);
            }
            if (jo["respuesta"]["codRespuesta"].ToString() != "0")
            {
                Respuesta = new Respuesta()
                {
                    CodRespuesta = jo["respuesta"]["codRespuesta"].ToString(),
                    TxtRespuesta = jo["respuesta"]["txtRespuesta"].ToString()
                };
            }
            else
            {
                string tf = string.Empty;
                foreach (string tipoDocFiscal in Enum.GetNames(typeof(TipoFactura)))
                {
                    if (jo.ContainsKey(tipoDocFiscal))
                    {
                        tf = tipoDocFiscal; break;
                    }
                }
                if (string.IsNullOrEmpty(tf) || !jo.ContainsKey("proceso"))
                {
                    throw new Exception(Error.E300);
                }

                Enum.TryParse(tf, out TipoFactura tipoFactura);

                Factura   = FabricaFactura.Fabricar(tipoFactura);
                Respuesta = new Respuesta();
                Proceso   = new Proceso();
                JsonConvert.PopulateObject(jo["respuesta"].ToString(), Respuesta);
                JsonConvert.PopulateObject(jo["proceso"].ToString(), Proceso);
                JsonConvert.PopulateObject(jo[tipoFactura.ToString()].ToString(), Convert.ChangeType(Factura, Factura.GetType()));
            }
        }
Ejemplo n.º 2
0
        public RequestFactura ArmarFacturaElectronicaJson2(DataRow drCabeceraFactura, DataTable dtDetalleFactura)
        {
            string         facturaJson           = string.Empty;
            List <Detalle> ListadoDetalleFactura = new List <Detalle>();
            RequestFactura requestFactura        = new RequestFactura();

            //string file = Log.Instancia.GeneraNombreLog();
            //file += drCabeceraFactura["fehfeiddf"].ToString(); //nro. correlativo interno.

            try
            {
                Factura factura = FabricaFactura.Fabricar((TipoFactura)int.Parse(drCabeceraFactura["fehfecdse"].ToString()));
                CargarObjetoFactura(factura.Cabecera, drCabeceraFactura, factura.CamposDB);

                Detalle detalle = null;
                foreach (DataRow drDetalleFactura in dtDetalleFactura.Rows)
                {
                    detalle = FabricaFactura.FabricarDetalle(factura.Tipo);
                    CargarObjetoFactura(detalle, drDetalleFactura, factura.CamposDB);
#warning Completar este switch
                    switch (factura.Tipo)
                    {
                    case TipoFactura.facturaEstandar:
                        ((FacturaEstandar)factura).ListaDetalle.Add(detalle as DetalleFacturaEstandar);
                        break;

                    case TipoFactura.facturaColegio:
                        ((FacturaColegio)factura).ListaDetalle.Add(detalle as DetalleFacturaColegio);
                        break;

                    case TipoFactura.facturaAlquiler:
                        ((FacturaAlquiler)factura).ListaDetalle.Add(detalle as DetalleFacturaAlquiler);
                        break;

                    case TipoFactura.facturaCombustible:
                        ((FacturaCombustible)factura).ListaDetalle.Add(detalle as DetalleFacturaCombustible);
                        break;

                    case TipoFactura.facturaServicios:
                        ((FacturaServiciosBasicos)factura).ListaDetalle.Add(detalle as DetalleFacturaServiciosBasicos);
                        break;

                    case TipoFactura.facturaEmbotelladoras:
                        ((FacturaEmbotelladora)factura).ListaDetalle.Add(detalle as DetalleFacturaEmbotelladora);
                        break;

                    case TipoFactura.facturaBancos:
                        ((FacturaBanco)factura).ListaDetalle.Add(detalle as DetalleFacturaBanco);
                        break;

                    case TipoFactura.facturaHoteles:
                        ((FacturaHotel)factura).ListaDetalle.Add(detalle as DetalleFacturaHotel);
                        break;

                    case TipoFactura.facturaHospitales:
                        ((FacturaHospital)factura).ListaDetalle.Add(detalle as DetalleFacturaHospital);
                        break;

                    case TipoFactura.facturaJuegos:
                        ((FacturaJuego)factura).ListaDetalle.Add(detalle as DetalleFacturaJuego);
                        break;

                    case TipoFactura.facturaEspectaculoPublicoInternacional:
                        ((FacturaEspectaculoPublicoInternacional)factura).ListaDetalle.Add(detalle as DetalleFacturaEspectaculoPublicoInternacional);
                        break;

                    case TipoFactura.notaExportacion:
                        ((NotaExportacion)factura).ListaDetalle.Add(detalle as DetalleNotaExportacion);
                        break;

                    case TipoFactura.notaLibreConsignacion:
                        ((NotaLibreConsignacion)factura).ListaDetalle.Add(detalle as DetalleNotaLibreConsignacion);
                        break;

                    case TipoFactura.notaZonaFranca:
                        ((NotaZonaFranca)factura).ListaDetalle.Add(detalle as DetalleNotaZonaFranca);
                        break;

                    case TipoFactura.notaEspectaculoPublicoNacional:
                        ((NotaEspectaculoPublicoNacional)factura).ListaDetalle.Add(detalle as DetalleFacturaEspectaculoPublicoInternacional);
                        break;

                    case TipoFactura.notaSeguridadAlimentaria:
                        ((NotaSeguridadAlimentaria)factura).ListaDetalle.Add(detalle as DetalleNotaSeguridadAlimentaria);
                        break;

                    case TipoFactura.notaMonedaExtranjera:
                        ((NotaMonedaExtranjera)factura).ListaDetalle.Add(detalle as DetalleNotaMonedaExtranjera);
                        break;

                    //case TipoFactura.NOTA_DE_CREDITO_DEBITO:
                    //    break;
                    //case TipoFactura.NOTA_DE_CONCILIACION:
                    //    break;
                    //case TipoFactura.BOLETO_AEREO:
                    //    break;
                    case TipoFactura.notaTurismoReceptivo:
                        ((NotaTurismoReceptivo)factura).ListaDetalle.Add(detalle as DetalleNotaTurismoReceptivo);
                        break;

                    case TipoFactura.notaTasaCero:
                        factura.ListaDetalle.Add(detalle);
                        break;

                    case TipoFactura.facturaHidrocarburos:
                        ((FacturaHidrocarburos)factura).ListaDetalle.Add(detalle as DetalleFacturaHidrocarburos);
                        break;
                    }
                }

                requestFactura.Factura = factura;

                requestFactura.IdDocFiscalERP    = drCabeceraFactura["fehfeiddf"].ToString();
                requestFactura.Cufd              = null;
                requestFactura.Contingencia      = (drCabeceraFactura["fehfecont"].ToString() != "0");
                requestFactura.EsLote            = (drCabeceraFactura["fehfelote"].ToString() != "0");
                requestFactura.IdLoteERP         = drCabeceraFactura["fehfeidlo"].ToString();
                requestFactura.UltFacturaLote    = (drCabeceraFactura["fehfeufac"].ToString() != "0");
                requestFactura.CodigoTipoFactura = int.Parse(drCabeceraFactura["fehfectip"].ToString());
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
                //Log.Instancia.LogWS_Mensaje_FSX(file, "Excepción: ArmarFacturaElectronicaJson2(DataTable dtCabezeraFactura, DataTable dtDetalleFactura) \r\n" +
                //    ex.Message);
            }

            return(requestFactura);
        }
Ejemplo n.º 3
0
        public ResponseConsultaDocumentoFiscal(string json)
        {
            JObject jo = JObject.Parse(json);

            if (!jo.ContainsKey("respuesta"))
            {
                throw new Exception(Error.E300);
            }
            if (jo["respuesta"]["codRespuesta"].ToString() != "0")
            {
                Respuesta = new Respuesta()
                {
                    CodRespuesta = jo["respuesta"]["codRespuesta"].ToString(),
                    TxtRespuesta = jo["respuesta"]["txtRespuesta"].ToString()
                };
            }
            else
            {
                string tf = string.Empty;
                foreach (string tipoDocFiscal in Enum.GetNames(typeof(TipoFactura)))
                {
                    if (jo.ContainsKey(tipoDocFiscal))
                    {
                        tf = tipoDocFiscal; break;
                    }
                }
                if (string.IsNullOrEmpty(tf) || !jo.ContainsKey("estado"))
                {
                    throw new Exception(Error.E300);
                }

                Enum.TryParse(tf, out TipoFactura tipoFactura);

                Factura   = FabricaFactura.Fabricar(tipoFactura);
                Respuesta = new Respuesta();

                switch (jo["estado"].ToString())
                {
                case "D1": Estado = EstadoFacturaFEEL.FacturaRecibidaDeOrigen; break;

                case "D2": Estado = EstadoFacturaFEEL.FacturaEnviadaAlSIN; break;

                case "D3": Estado = EstadoFacturaFEEL.FacturarValidadaPorElSIN; break;

                case "D4": Estado = EstadoFacturaFEEL.FacturaNotificadaAOrigen; break;

                case "DA1": Estado = EstadoFacturaFEEL.AnulacionRecibidaDeOrigen; break;

                case "DA2": Estado = EstadoFacturaFEEL.AnulacionEnviadaAlSIN; break;

                case "DA3": Estado = EstadoFacturaFEEL.AnulacionValidadaPorSIN; break;

                case "DA4": Estado = EstadoFacturaFEEL.AnulacionNotificadaAOrigen; break;

                default: throw new Exception(Error.E301);
                }

                JsonConvert.PopulateObject(jo["respuesta"].ToString(), Respuesta);
                JsonConvert.PopulateObject(jo[tipoFactura.ToString()].ToString(), Factura);
            }
        }