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())); } }
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); }
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); } }