/// <summary>Construir un nuevo emisor</summary> public Emisor(string Ruc, string RazonSocial, string NombreComercial, string Direccion, string ContribuyenteEspecial, bool ObligadoContabilidad, Establecimiento Establecimiento) { this.Ruc = Ruc; this.RazonSocial = RazonSocial; this.NombreComercial = NombreComercial; this.Direccion = Direccion; this.ContribuyenteEspecial = ContribuyenteEspecial; this.ObligadoContabilidad = ObligadoContabilidad; this.Establecimiento = Establecimiento; }
static void Main(string[] args) { string datilApiGuiaRemisionUrl = "https://link.datil.co/waybills/"; // Credenciales del requerimiento string myApiKey = "xxxx"; string myPassword = "******"; // Crear requerimiento var requestOptions = new RequestOptions(); requestOptions.ApiKey = myApiKey; requestOptions.Password = myPassword; requestOptions.Url = datilApiGuiaRemisionUrl + "issue"; // Información del establecimiento del emisor de la guìa de remisión Establecimiento establecimiento = new Establecimiento("001", "002", "Av. Primera 234 y calle 5ta"); // Información del emisor. Necesita de un Establecimiento. Emisor emisor = new Emisor("0910000000001", "GUGA S.A. ", "XYZ Corp", "Av.Primera 234 y calle 5ta", "12345", true, establecimiento); // Información del transportista Transportista transportista = new Transportista("Juan Pérez", "0989898921001", "04", "*****@*****.**", "Calle única Numero 987", "046029400"); // Crear guía de remisión GuiaDeRemision guiaDeRemision = new GuiaDeRemision(); // Cabecera de la guía de remisión guiaDeRemision.Secuencial = "610"; DateTime today = DateTime.Today; var offset = TimeZoneInfo.Local.GetUtcOffset(today); guiaDeRemision.FechaInicioTransporte = new DateTimeOffset(today, offset); guiaDeRemision.FechaFinTransporte = new DateTimeOffset(today, offset); guiaDeRemision.DireccionPartida = "Kennedy Norte - Torres del Norte"; guiaDeRemision.Ambiente = 1; guiaDeRemision.TipoEmision = 1; // Lista de Destinatarios (1 para el ejemplo) var destinatarios = new List<Destinatario>(); var destinatario = new Destinatario("Andrade Hnos", "0933442233", "Av. de las Americas"); destinatario.MotivoTraslado = "Entrega"; destinatario.TipoIdentificacion = "05"; destinatario.FechaEmisionDocumentoSustento = new DateTimeOffset(today, offset); destinatario.NumeroDocumentoSustento = "001-001-000000324"; destinatario.NumeroAutorizacionDocumentoSustento = "2609201612325309921238470010843106733"; destinatario.TipoDocumentoSustento = "01"; destinatario.Ruta = "Av. Perimetral - Av. de las Americas"; destinatario.DocumentoAduaneroUnico = "123122343"; destinatario.CodigoEstablecimientoDestino = "002"; destinatario.Email = "*****@*****.**"; destinatario.Telefono = "043343434"; // Lista de items del destinatario (1 para el ejemplo) var itemsDestinatario = new List<ItemDestinatario>(); var itemDestinatario = new ItemDestinatario("ZNC", "050", "Zanahoria granel 50 Kg.", 4.0); itemsDestinatario.Add(itemDestinatario); destinatario.Items = itemsDestinatario; destinatarios.Add(destinatario); //guiaDeRemision.Version = //guiaDeRemision.ClaveAcceso = // Informaciòn de la guía de remisión guiaDeRemision.Emisor = emisor; guiaDeRemision.Transportista = transportista; guiaDeRemision.Destinatarios = destinatarios; // Informaciòn adicional var infoAdicionalGuiaDeRemision = new Dictionary<string, string>(); infoAdicionalGuiaDeRemision.Add("Via", "terrestre"); guiaDeRemision.InformacionAdicional = infoAdicionalGuiaDeRemision; // Enviar guía de remisión var respuesta = guiaDeRemision.Enviar(requestOptions); Console.WriteLine("RESPUESTA:" + respuesta); // Obtener el id externo, para luego consultar el estado JObject json = JObject.Parse(respuesta); string idExterno = (string)json["id"]; Console.WriteLine("ID EXTERNO: " + idExterno); //5832e2c370414663a1bea71938a65bf0 //Consultar estado de la guía de remisión var requestOptions2 = new RequestOptions(); requestOptions2.ApiKey = myApiKey; requestOptions2.Password = myPassword; requestOptions2.Url = datilApiGuiaRemisionUrl + idExterno; respuesta = GuiaDeRemision.Consultar(requestOptions2); json = JObject.Parse(respuesta); string estado = (string)json["estado"]; Console.WriteLine("ESTADO: " + estado); // RECIBIDO }
static void Main_(string[] args) { string datilApiRetencionUrl = "https://link.datil.co/retentions/"; // Credenciales del requerimiento string myApiKey = "xxxx"; string myPassword = "******"; // Crear requerimiento var requestOptions = new RequestOptions(); requestOptions.ApiKey = myApiKey; requestOptions.Password = myPassword; requestOptions.Url = datilApiRetencionUrl + "issue"; // Crear retención Retencion retencion = new Retencion(); // Cabecera de la retención retencion.Secuencial = "610"; DateTime today = DateTime.Today; var offset = TimeZoneInfo.Local.GetUtcOffset(today); retencion.FechaEmision = new DateTimeOffset(today, offset); retencion.Ambiente = 1; retencion.TipoEmision = 1; retencion.PeriodoFiscal = "09/2016"; //retencion.Version = //retencion.ClaveAcceso = // Información del sujeto retenido Comprador sujetoRetenido = new Comprador("Juan Pérez", "0989898921001", "04", "*****@*****.**", "Calle única Numero 987", "046029400"); retencion.Sujeto = sujetoRetenido; // Información del establecimiento Establecimiento establecimiento = new Establecimiento("001", "002", "Av. Primera 234 y calle 5ta"); // Información del emisor. Necesita de un Establecimiento. Emisor emisor = new Emisor("0910000000001", "GUGA S.A. ", "XYZ Corp", "Av.Primera 234 y calle 5ta", "12345", true, establecimiento); retencion.Emisor = emisor; // Impuestos de la retención. var impuestos = new List<ItemRetencion>(); ItemRetencion impuesto = new ItemRetencion("2", "3", 14, 4359.54, 610.36, new DateTimeOffset(today, offset), "001-002-000000123", "01"); impuestos.Add(impuesto); // agregar más impuestos a la retenciòn de ser necesario retencion.items = impuestos; // Información adicional var infoAdicionalRetencion = new Dictionary<string, string>(); infoAdicionalRetencion.Add("Tiempo de entrega", "5 días"); retencion.InformacionAdicional = infoAdicionalRetencion; // Enviar retención var respuesta = retencion.Enviar(requestOptions); Console.WriteLine("RESPUESTA:" + respuesta); // Obtener el id externo, para luego consultar el estado JObject json = JObject.Parse(respuesta); string idExterno = (string)json["id"]; Console.WriteLine("ID EXTERNO: " + idExterno); //5832e2c370414663a1bea71938a65bf0 //Consultar estado de la retención var requestOptions2 = new RequestOptions(); requestOptions2.ApiKey = myApiKey; requestOptions2.Password = myPassword; requestOptions2.Url = datilApiRetencionUrl + idExterno; respuesta = Retencion.Consultar(requestOptions2); json = JObject.Parse(respuesta); string estado = (string)json["estado"]; Console.WriteLine("ESTADO: " + estado); // RECIBIDO }
static void Main_(string[] args) { string datilApiNotaCreditoUrl = "https://link.datil.co/credit-notes/"; // Credenciales del requerimiento string myApiKey = "xxxx"; string myPassword = "******"; // Crear requerimiento var requestOptions = new RequestOptions(); requestOptions.ApiKey = myApiKey; requestOptions.Password = myPassword; requestOptions.Url = datilApiNotaCreditoUrl + "issue"; // Información del comprador Comprador comprador = new Comprador("Juan Pérez", "0989898921001", "04", "*****@*****.**", "Calle única Numero 987", "046029400"); // Información del establecimiento Establecimiento establecimiento = new Establecimiento("001", "002", "Av. Primera 234 y calle 5ta"); // Información del emisor. Necesita de un Establecimiento. Emisor emisor = new Emisor("0910000000001", "GUGA S.A. ", "XYZ Corp", "Av.Primera 234 y calle 5ta", "12345", true, establecimiento); // Detalle de la nota de crédito y sus impuestos. var items = new List<Item>(); Item item = new Item("ZNC", "050", "Zanahoria granel 50 Kg.", 622.0, 7.01, 4360.22, 0.0); var detallesAdicionales = new Dictionary<string, string>(); detallesAdicionales.Add("Peso", "5000"); // agregar más detalles al item de ser necesario item.DetallesAdicionales = detallesAdicionales; var impuestos = new List<ImpuestoItem>(); impuestos.Add(new ImpuestoItem("2", "2", 4359.54, 523.14, 12.0)); // agregar más impuestos al item de ser necesario item.Impuestos = impuestos; items.Add(item); //agregar más items a la lista de ser necesario // Total de la nota de crédito con sus impuestos, no necesita propina. var totales = new TotalesNotaDeCredito(4359.54, 4882.68); var impuestosDeTotal = new List<Impuesto>(); impuestosDeTotal.Add(new Impuesto("2", "0", 0.0, 0.0)); impuestosDeTotal.Add(new Impuesto("2", "2", 4359.54, 523.14)); // agregar más impuestos a la lista de ser necesario. totales.Impuestos = impuestosDeTotal; // Crear nota de crédito NotaDeCredito notaDeCredito = new NotaDeCredito(); // Cabecera notaDeCredito.Secuencial = "610"; notaDeCredito.Moneda = "USD"; DateTime today = DateTime.Today; var offset = TimeZoneInfo.Local.GetUtcOffset(today); notaDeCredito.FechaEmision = new DateTimeOffset(today, offset); notaDeCredito.Ambiente = 1; notaDeCredito.TipoEmision = 1; notaDeCredito.FechaEmisionDocumentoModificado = new DateTimeOffset(today, offset); notaDeCredito.NumeroDocumentoModificado = "001-001-000012345"; notaDeCredito.TipoDocumentoModificado = "01"; notaDeCredito.Motivo = "Devolución"; //notaDeCredito.Version = //notaDeCredito.ClaveAcceso = // Informaciòn de la nota de crédito notaDeCredito.Emisor = emisor; notaDeCredito.Comprador = comprador; notaDeCredito.Totales = totales; notaDeCredito.Items = items; // Informaciòn adicional var infoAdicionalFactura = new Dictionary<string, string>(); infoAdicionalFactura.Add("Tiempo de entrega", "5 días"); notaDeCredito.InformacionAdicional = infoAdicionalFactura; // Enviar nota de crédito var respuesta = notaDeCredito.Enviar(requestOptions); Console.WriteLine("RESPUESTA:" + respuesta); // Obtener el id externo, para luego consultar el estado JObject json = JObject.Parse(respuesta); string idExterno = (string)json["id"]; Console.WriteLine("ID EXTERNO: " + idExterno); //5832e2c370414663a1bea71938a65bf0 //Consultar estado de la nota de crédito var requestOptions2 = new RequestOptions(); requestOptions2.ApiKey = myApiKey; requestOptions2.Password = myPassword; requestOptions2.Url = datilApiNotaCreditoUrl + idExterno; respuesta = NotaDeCredito.Consultar(requestOptions2); json = JObject.Parse(respuesta); string estado = (string)json["estado"]; Console.WriteLine("ESTADO: " + estado); // RECIBIDO }
static void Main_(string[] args) { string datilApiFacturaUrl = "https://link.datil.co/invoices/"; // Credenciales del requerimiento string myApiKey = "xxxx"; string myPassword = "******"; // Crear requerimiento var requestOptions = new RequestOptions(); requestOptions.ApiKey = myApiKey; requestOptions.Password = myPassword; requestOptions.Url = datilApiFacturaUrl + "issue"; // Información del comprador (Obligatorio) Comprador comprador = new Comprador("Juan Pérez", "0989898921001", "04", "*****@*****.**", "Calle única Numero 987", "046029400"); // Información del establecimiento (Obligatorio) Establecimiento establecimiento = new Establecimiento("001", "002", "Av. Primera 234 y calle 5ta"); // Información del emisor. Necesita de un Establecimiento. (Obligatorio) Emisor emisor = new Emisor("0910000000001", "GUGA S.A. ", "XYZ Corp", "Av.Primera 234 y calle 5ta", "12345", true, establecimiento); // Detalle de la factura y sus impuestos. (Obligatorio) var items = new List<Item>(); Item item = new Item("ZNC","050","Zanahoria granel 50 Kg.",622.0, 7.01,4360.22,0.0); item.PrecioSinSubsidio = 600.0; var detallesAdicionales = new Dictionary<string, string>(); detallesAdicionales.Add("Peso", "5000"); // agregar más detalles al item de ser necesario item.DetallesAdicionales = detallesAdicionales; var impuestos = new List<ImpuestoItem>(); impuestos.Add(new ImpuestoItem("2","2",4359.54, 523.14, 12.0)); // agregar más impuestos al item de ser necesario item.Impuestos = impuestos; items.Add(item); //agregar más items a la lista de ser necesario // Total de la factura con sus impuestos. (Obligatorio) var totales = new TotalesFactura(4359.54, 4882.68,0.0, 0.0); totales.TotalSubsidio = 22.00; var impuestosDeTotal = new List<Impuesto>(); impuestosDeTotal.Add(new Impuesto("2","0", 0.0,0.0)); impuestosDeTotal.Add(new Impuesto("2", "2", 4359.54, 523.14)); // agregar más impuestos a la lista de ser necesario. totales.Impuestos = impuestosDeTotal; // Retenciones en la factura /* Caso específico de Retenciones en la Comercializadores / Distribuidores de derivados del Petróleo y Retención presuntiva de IVA a los Editores, Distribuidores y Voceadores que participan en la comercialización de periódicos y/ o revistas. */ var retenciones = new List<RetencionFactura>(); RetencionFactura retencion = new RetencionFactura("4", "327", 0.20, 0.13); retenciones.Add(retencion); RetencionFactura retencion2 = new RetencionFactura("4", "327", 0.20, 0.13); retenciones.Add(retencion2); // Creación del objeto factura Factura factura = new Factura(); // Cabecera de la factura factura.Secuencial = "1613"; factura.Moneda = "USD"; factura.Ambiente = 1; factura.TipoEmision = 1; DateTime today = DateTime.Today; var offset = TimeZoneInfo.Local.GetUtcOffset(today); factura.FechaEmision = new DateTimeOffset(today, offset); //factura.Version = //factura.ClaveAcceso = //factura.GuiaRemision = // Completar informaciòn de la factura factura.Emisor = emisor; factura.Comprador = comprador; factura.Totales = totales; factura.Items = items; factura.Retenciones = retenciones; // Valores de retención de IVA y de Renta (Opcionales) factura.ValorRetIva = 2.0; factura.ValorRetRenta = 0.10; //Métodos de pago (Obligatorio) // Ejemplo de pagos sin propiedades adicionales factura.Pagos.Add(new MetodoPago("efectivo", 12.0)); factura.Pagos.Add(new MetodoPago("transferencia_otro_banco", 8.0)); // Ejemplo de pago con propiedades adicionales var pagoConDetalle = new MetodoPago("tarjeta_credito_nacional", 60.0); pagoConDetalle.Propiedades = new Dictionary<string, string>(); pagoConDetalle.Propiedades.Add("Tipo tarjeta", "Visa"); pagoConDetalle.Propiedades.Add("Diferido", "3 meses"); factura.Pagos.Add(pagoConDetalle); // Credito otorgado al cliente (Opcional) var montoCredito = 10.50; // Crédito a 30 días a partir de la fecha de emisión. Formato 'yyyy-mm-dd' var fechaVencimientoCredito = factura.FechaEmision.Date.AddDays(30).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture); factura.Credito = new CreditoFactura(montoCredito, fechaVencimientoCredito); // Informaciòn adicional de la factura (Opcional) var infoAdicionalFactura = new Dictionary<string, string>(); infoAdicionalFactura.Add("Tiempo de entrega", "5 días"); factura.InformacionAdicional = infoAdicionalFactura; Console.WriteLine(factura.toJson()); // Enviar factura var respuesta = factura.Enviar(requestOptions); Console.WriteLine("RESPUESTA:" + respuesta); // Obtener el id externo, para luego consultar el estado JObject json = JObject.Parse(respuesta); string idExterno = (string)json["id"]; Console.WriteLine("ID EXTERNO: " + idExterno); //5832e2c370414663a1bea71938a65bf0 // Consultar estado de la factura var requestOptions2 = new RequestOptions(); requestOptions2.ApiKey = myApiKey; requestOptions2.Password = myPassword; requestOptions2.Url = datilApiFacturaUrl + idExterno; respuesta = Factura.Consultar(requestOptions2); json = JObject.Parse(respuesta); string estado = (string)json["estado"]; Console.WriteLine("ESTADO: " + estado); // RECIBIDO }