private void button1_Click(object sender, EventArgs e) { logicSRI.sendClaveAcceso("1301202101179282192400120010050000298690002986913"); List <DETALLE_COMPROBANTE> _listaDetalle = new List <DETALLE_COMPROBANTE>(); DETALLE_COMPROBANTE _infoDetalle = new DETALLE_COMPROBANTE(); _infoDetalle.dec_id = 1; _infoDetalle.dec_cantidad = 1; _infoDetalle.dec_codigoproducto = "PRO001"; _infoDetalle.dec_descripcion = "COMPUTADOR"; _infoDetalle.dec_descuento = 0; _infoDetalle.dec_iva0 = 0; _infoDetalle.dec_precio = 1000; _infoDetalle.dec_ivagravado = 120; _infoDetalle.dec_valortotal = 1120; DETALLE_COMPROBANTE _infoDetalle2 = new DETALLE_COMPROBANTE(); _infoDetalle2.dec_id = 2; _infoDetalle2.dec_cantidad = 1; _infoDetalle2.dec_codigoproducto = "PRO002"; _infoDetalle2.dec_descripcion = "TECLADO"; _infoDetalle2.dec_descuento = 0; _infoDetalle2.dec_iva0 = 0; _infoDetalle2.dec_precio = 100; _infoDetalle2.dec_ivagravado = 12; _infoDetalle2.dec_valortotal = 112; _listaDetalle.Add(_infoDetalle); _listaDetalle.Add(_infoDetalle2); COMPROBANTE _infoComprobante = new COMPROBANTE(); DatosElectronicos _infoDatosElectronicos = new DatosElectronicos(); var res = LayerLogic.ClassLibrary.PlantillaXml.xmlFactura.generateFacturaXml(_infoComprobante, _listaDetalle, _infoDatosElectronicos); //Convert Base 64 string xmlSinFirma = res.Declaration.ToString() + res.ToString(); byte[] newByte = new byte[xmlSinFirma.Length]; newByte = Encoding.UTF8.GetBytes(xmlSinFirma); string base64 = Convert.ToBase64String(newByte); LayerLogic.ClassLibrary.Complementos.Firmar.firmar(base64); res.Save(@"C:\XML\result.xml"); string fecha = DateTime.Now.ToString("ddMMyyyy"); string tipoCOmprobante = "02"; string ruc = "1725667054001"; string codigoNumerico = "12345"; string secuencia = "00000001"; string establecimiento = "001"; string emsion = "002"; }
public static XDocument generateFacturaXml(COMPROBANTE _infoComprobante, List <DETALLE_COMPROBANTE> _listaDetalleProductos, DatosElectronicos _infoDatosElectronicos) { XElement factura = new XElement("factura", new XAttribute("id", "comprobante"), new XAttribute("version", "1.1.0")); //InfoTributaria factura.Add( new XElement("infoTributaria", new XElement("ambiente", _infoDatosElectronicos.ambiente), new XElement("tipoEmision", "1"), new XElement("razonSocial", "FABRICIO MERO"), new XElement("nombreComercial", "EL ASESOR CONTABLE"), new XElement("ruc", "0801895186001"), new XElement("claveAcceso", _infoDatosElectronicos.ClaveAcceso), new XElement("codDoc", "01"), new XElement("estab", _infoComprobante.com_establecimiento), new XElement("ptoEmi", _infoComprobante.com_emision), new XElement("secuencial", _infoComprobante.com_secuencial), new XElement("dirMatriz", "LAS CASAS") )); //infoFactura XElement infoFactura = new XElement("infoFactura"); infoFactura.Add( new XElement("fechaEmision", _infoComprobante.com_fecha), new XElement("dirEstablecimiento", _infoComprobante.com_direccion), new XElement("contribuyenteEspecial", "NO"), new XElement("obligadoContabilidad", "NO"), new XElement("tipoIdentificacionComprador", _infoComprobante.com_tipoIdentificacion == "CF" ? "7" : _infoComprobante.com_tipoIdentificacion == "R" ? "4" : _infoComprobante.com_tipoIdentificacion == "P" ? "6" : _infoComprobante.com_tipoIdentificacion == "c" ? "5" : null), new XElement("direccionComprador", _infoComprobante.com_direccion), new XElement("razonSocialComprador", _infoComprobante.com_nombres), new XElement("identificacionComprador", _infoComprobante.com_identificacion), new XElement("totalSinImpuestos", _infoComprobante.com_total.ToString("0.00")), new XElement("totalDescuento", _infoComprobante.com_totalDescuento.ToString("0.00")), new XElement("totalConImpuestos", new XElement("totalImpuesto", new XElement("codigo", "2"), new XElement("codigoPorcentaje", "2"), new XElement("baseImponible", "50.00"), new XElement("valor", "6.00"))), new XElement("propina", "0.00"), new XElement("importeTotal", "56.00"), new XElement("moneda", "DOLAR"), new XElement("pagos", new XElement("pago", new XElement("formaPago", "18"), new XElement("total", "56.00"), new XElement("plazo", "3"), new XElement("unidadTiempo", "30") )) ); //InfoDetalle XElement detalleFactura = new XElement("detalles", from a in _listaDetalleProductos select new XElement("detalle", new XElement("CodigoPrincipal", a.dec_codigoproducto), new XElement("codigoAuxiliar", a.dec_codigoproducto), new XElement("descripcion", a.dec_descripcion), new XElement("cantidad", a.dec_cantidad), new XElement("precioUnitario", a.dec_precio.ToString("0.00")), new XElement("descuento", a.dec_descuento.ToString("0.00")), new XElement("precioTotalSinImpuesto", a.dec_cantidad * a.dec_precio), new XElement("impuestos", new XElement("impuesto", new XElement("codigo", "2"), new XElement("codigoPorcentaje", "2"), new XElement("tarifa", "12.00"), new XElement("baseImponible", a.dec_cantidad * a.dec_precio), new XElement("valor", a.dec_ivagravado))))); //InfoAdicional XDocument doc = new XDocument( new XDeclaration("1.0", "utf-8", "no") ); factura.Add(infoFactura); factura.Add(detalleFactura); //infoAdicional a factura doc.Add(factura); return(doc); }