/// <summary> /// Obtener información para Nodo Emisor /// </summary> /// <param name="idComprobante">ID Comprobante</param> /// <returns>Modelo ComprobanteEmisor</returns> public async Task <ComprobanteEmisor> ObtenerNodoEmisor(string idComprobante) { ComprobanteEmisor respuesta = new ComprobanteEmisor(); try { var resultado = await _baseDatos.SelectFirstAsync <NodoEmisor>(_queryNodoEmisor + idComprobante); if (resultado != null && !string.IsNullOrWhiteSpace(resultado.rfc)) { respuesta.Nombre = resultado.nombre; respuesta.RegimenFiscal = resultado.regimenFiscal; respuesta.Rfc = resultado.rfc; } else { respuesta = null; } } catch (Exception ex) { respuesta = null; } return(respuesta); }
/// <summary> /// Emisor del comprobante /// </summary> /// <param name="pEmisor"></param> public void AddEmisor(ComprobanteEmisor pEmisor) { if (pEmisor != null) { Comprobante.Emisor = pEmisor; } }
private ComprobanteEmisor construyeEmisor(RazonesSociales razonSocial) { ComprobanteEmisor emisor = new ComprobanteEmisor(); emisor.Rfc = (razonSocial.rfc); //@ if (razonSocial.razonsocial != "") { emisor.Nombre = (razonSocial.razonsocial); } emisor.RegimenFiscal = (razonSocial.regimenFiscal); //Preguntar si sera fisico o moral //JEVC01 //emisor.getRegimenFiscal().add(construyeEmisorRegimenFiscal(razonSocial.getRegimenFiscal())); return(emisor); }
public ComprobanteEmisorDetailViewModel(ComprobanteEmisor emisor) { if (emisor == null) { throw new ArgumentNullException("emisor"); } this.PublicKey = emisor.PublicKey; this.RFC = emisor.RFC; this.Nombre = emisor.Nombre; if (emisor.RegimenFiscal != null && emisor.RegimenFiscal.Count > 0) { this.RegimenFiscal = emisor.RegimenFiscal[0].Regimen; } if (emisor.DomicilioFiscal != null) { this.Calle = emisor.DomicilioFiscal.Calle; this.NoExterior = emisor.DomicilioFiscal.NoExterior; this.NoInterior = emisor.DomicilioFiscal.NoInterior; this.Colonia = emisor.DomicilioFiscal.Colonia; this.Localidad = emisor.DomicilioFiscal.Localidad; this.Municipio = emisor.DomicilioFiscal.Municipio; this.Estado = emisor.DomicilioFiscal.Estado; this.Pais = emisor.DomicilioFiscal.Pais; this.CodigoPostal = emisor.DomicilioFiscal.CodigoPostal; this.Referencia = emisor.DomicilioFiscal.Referencia; } //this.RegimenFiscal = emisor.RegimenFiscal; // this.EmisorLogoUrl = comprobante.Emisor.LogoUrl; //this.EmisorTelefono = comprobante.Emisor.Telefono; //this.EmisorCorreo = comprobante.Emisor.Correo; //this.EmisorCifUrl = comprobante.Emisor.CifUrl; this.Correo = emisor.Correo; this.Telefono = emisor.Telefono; this.CifUrl = emisor.CifUrl; this.LogoUrl = emisor.LogoUrl; this.ViewTemplateId = emisor.ViewTemplateId; }
//Inicizalizar public void Inicializar() { //Controladores ventaController = new VentaController(); ventapController = new VentapController(); clienteController = new ClienteController(); empresaController = new EmpresaController(); dymErrorController = new DymErrorController(); //Utils respuestaCFDI = new RespuestaCFDi(); timbradoClient = new TimbradoClient(); selloDigital = new SelloDigital(); transformador = new XslCompiledTransform(); //Comprobante comprobante = new Comprobante(); emisor = new ComprobanteEmisor(); receptor = new ComprobanteReceptor(); // Nivel concepto conceptos = new List <ComprobanteConcepto>(); concepto = new ComprobanteConcepto(); impuestosConcepto = new List <ComprobanteConceptoImpuestosTraslado>(); ivaConcepto = new ComprobanteConceptoImpuestosTraslado(); iepsConcepto = new ComprobanteConceptoImpuestosTraslado(); //Nivel comprobante impuestosComprobante = new List <ComprobanteImpuestosTraslado>(); totalImpuestosComprobante = new ComprobanteImpuestos(); ivaComprobante = new ComprobanteImpuestosTraslado(); iepsComprobante = new ComprobanteImpuestosTraslado(); //inicializacion de propiedades empresa = empresaController.SelectTopOne(); partidas = ventapController.SelectPartidas(Venta.VentaId); cliente = clienteController.SelectOne(Venta.ClienteId); s = ""; }
public static void CreaFactura() { string pathCer = Directory.GetCurrentDirectory() + @"/Fiel/Certifiado.cer"; string pathKey = Directory.GetCurrentDirectory() + @"/Fiel/Key.key"; string clavePrivada = "12345678a"; //Obtenemos el numero string numeroCertificado, aa, b, c; SelloDigital.leerCER(pathCer, out aa, out b, out c, out numeroCertificado); //Llenamos la clase COMPROBANTE-------------------------------------------------------- Comprobante oComprobante = new Comprobante(); oComprobante.Version = "3.3"; oComprobante.Serie = "H"; oComprobante.Folio = "1"; oComprobante.Fecha = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"); // oComprobante.Sello = "faltante"; //sig video oComprobante.FormaPago = "1"; oComprobante.NoCertificado = numeroCertificado; // oComprobante.Certificado = ""; //sig video oComprobante.SubTotal = 10m; oComprobante.Moneda = "MXN"; oComprobante.Total = 10; oComprobante.TipoDeComprobante = "I"; oComprobante.MetodoPago = "PUE"; oComprobante.LugarExpedicion = "44860"; ComprobanteEmisor oEmisor = new ComprobanteEmisor(); oEmisor.Rfc = "AATJ9502061EA"; oEmisor.Nombre = "Jorge Humberto Alvarado Tostado"; oEmisor.RegimenFiscal = "612"; ComprobanteReceptor oReceptor = new ComprobanteReceptor(); oReceptor.Nombre = "Pepe SA DE CV"; oReceptor.Rfc = "BIO091204LB1"; oReceptor.UsoCFDI = "G03"; //asigno emisor y receptor oComprobante.Emisor = oEmisor; oComprobante.Receptor = oReceptor; List <ComprobanteConcepto> lstConceptos = new List <ComprobanteConcepto>(); ComprobanteConcepto oConcepto = new ComprobanteConcepto(); oConcepto.Importe = 10m; oConcepto.ClaveProdServ = "92111704"; oConcepto.Cantidad = 1; oConcepto.ClaveUnidad = "H87"; oConcepto.Descripcion = "Un misil para la guerra"; oConcepto.ValorUnitario = 10m; lstConceptos.Add(oConcepto); oComprobante.Conceptos = lstConceptos.ToArray(); //Creamos el xml CreateXML(oComprobante); string cadenaOriginal = ""; string pathxsl = Directory.GetCurrentDirectory() + @"/Fiel/cadenaoriginal_3_3.xslt"; System.Xml.Xsl.XslCompiledTransform transformador = new System.Xml.Xsl.XslCompiledTransform(true); transformador.Load(pathxsl); using (StringWriter sw = new StringWriter()) using (XmlWriter xwo = XmlWriter.Create(sw, transformador.OutputSettings)) { transformador.Transform(pathXML, xwo); cadenaOriginal = sw.ToString(); } SelloDigital oSelloDigital = new SelloDigital(); oComprobante.Certificado = oSelloDigital.Certificado(pathCer); oComprobante.Sello = oSelloDigital.Sellar(cadenaOriginal, pathKey, clavePrivada); CreateXML(oComprobante); ////TIMBRE DEL XML ServiceReferenceFC.RespuestaCFDi respuestaCFDI = new ServiceReferenceFC.RespuestaCFDi(); byte[] bXML = System.IO.File.ReadAllBytes(pathXML); ServiceReferenceFC.TimbradoClient oTimbrado = new ServiceReferenceFC.TimbradoClient(); respuestaCFDI = oTimbrado.TimbrarTest("TEST010101ST1", "a", bXML); if (respuestaCFDI.Documento == null) { Console.WriteLine(respuestaCFDI.Mensaje); } else { System.IO.File.WriteAllBytes(pathXML, respuestaCFDI.Documento); } }
public static string CreaFactura(string folio, string formaPago, string metodoDePago, List <ProductoSat> productos, float subtotal, string rfc, string rz, string usoCFDI, string mail) { string pathCer = Directory.GetCurrentDirectory() + @"/Fiel/Certifiado.cer"; string pathKey = Directory.GetCurrentDirectory() + @"/Fiel/Key.key"; string clavePrivada = "Jorge1995"; //Obtenemos el numero string numeroCertificado, aa, b, c; SelloDigital.leerCER(pathCer, out aa, out b, out c, out numeroCertificado); //Llenamos la clase COMPROBANTE-------------------------------------------------------- string subt = subtotal.ToString(); string impuetosImporte = (subtotal * 0.16).ToString(); float t = subtotal * 1.16f; string ts = t.ToString(); Comprobante oComprobante = new Comprobante(); oComprobante.Version = "3.3"; oComprobante.Serie = "H"; oComprobante.Folio = folio; oComprobante.Fecha = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"); //oComprobante.Fecha = "2019-06-11T10:52:20"; //oComprobante.Sello = "faltante"; //sig video oComprobante.FormaPago = formaPago; oComprobante.NoCertificado = numeroCertificado; // oComprobante.Certificado = ""; //sig video oComprobante.SubTotal = decimal.Parse(subt); oComprobante.Moneda = "MXN"; oComprobante.Total = decimal.Parse(ts); oComprobante.TipoDeComprobante = "I"; oComprobante.MetodoPago = "PUE"; oComprobante.LugarExpedicion = "44860"; ComprobanteEmisor oEmisor = new ComprobanteEmisor(); oEmisor.Rfc = "AATJ9502061EA"; oEmisor.Nombre = "Jorge Humberto Alvarado Tostado"; oEmisor.RegimenFiscal = "612"; ComprobanteReceptor oReceptor = new ComprobanteReceptor(); oReceptor.Nombre = rz; oReceptor.Rfc = rfc; oReceptor.UsoCFDI = usoCFDI; //asigno emisor y receptor oComprobante.Emisor = oEmisor; oComprobante.Receptor = oReceptor; List <ComprobanteConcepto> lstConceptos = new List <ComprobanteConcepto>(); ComprobanteConcepto oConcepto; ComprobanteConceptoImpuestos impuestos; ComprobanteConceptoImpuestosTraslado imAux; ComprobanteConceptoImpuestosTraslado[] impuestosTrasladados; foreach (ProductoSat a in productos) { oConcepto = new ComprobanteConcepto(); impuestos = new ComprobanteConceptoImpuestos(); imAux = new ComprobanteConceptoImpuestosTraslado(); impuestosTrasladados = new ComprobanteConceptoImpuestosTraslado[1]; oConcepto.Importe = Math.Round(decimal.Parse((a.Subtotal).ToString()), 3); oConcepto.ClaveProdServ = a.CodigoSAT; oConcepto.Cantidad = decimal.Parse(a.Cantidad.ToString()); oConcepto.ClaveUnidad = "H87"; oConcepto.Descripcion = a.Descripcion; oConcepto.ValorUnitario = decimal.Parse((a.Precio).ToString()); //Impuestos imAux.Base = decimal.Parse(a.Subtotal.ToString()); imAux.ImporteSpecified = true; imAux.TasaOCuotaSpecified = true; imAux.TipoFactor = "Tasa"; imAux.Importe = Math.Round(decimal.Parse((a.Subtotal * 0.16).ToString()), 3); imAux.TasaOCuota = decimal.Parse("0.160000"); imAux.Impuesto = "002"; impuestosTrasladados[0] = imAux; impuestos.Traslados = impuestosTrasladados; oConcepto.Impuestos = impuestos; lstConceptos.Add(oConcepto); } oComprobante.Conceptos = lstConceptos.ToArray(); ComprobanteImpuestos imComprobante = new ComprobanteImpuestos(); ComprobanteImpuestosTraslado imComprobanteTraladados = new ComprobanteImpuestosTraslado(); ComprobanteImpuestosTraslado[] imComprobanteTraladadosArray = new ComprobanteImpuestosTraslado[1]; imComprobanteTraladados.TipoFactor = "Tasa"; imComprobanteTraladados.TasaOCuota = decimal.Parse("0.160000"); imComprobanteTraladados.Impuesto = "002"; imComprobanteTraladados.Importe = Math.Round(decimal.Parse(impuetosImporte), 3); imComprobanteTraladadosArray[0] = imComprobanteTraladados; imComprobante.Traslados = imComprobanteTraladadosArray; imComprobante.TotalImpuestosTrasladadosSpecified = true; imComprobante.TotalImpuestosTrasladados = Math.Round(decimal.Parse(impuetosImporte), 2); oComprobante.Impuestos = imComprobante; //Creamos el xml CreateXML(oComprobante); string cadenaOriginal = ""; string pathxsl = Directory.GetCurrentDirectory() + @"/Fiel/cadenaoriginal_3_3.xslt"; System.Xml.Xsl.XslCompiledTransform transformador = new System.Xml.Xsl.XslCompiledTransform(true); transformador.Load(pathxsl); using (StringWriter sw = new StringWriter()) using (XmlWriter xwo = XmlWriter.Create(sw, transformador.OutputSettings)) { transformador.Transform(pathXML, xwo); cadenaOriginal = sw.ToString(); } SelloDigital oSelloDigital = new SelloDigital(); oComprobante.Certificado = oSelloDigital.Certificado(pathCer); oComprobante.Sello = oSelloDigital.Sellar(cadenaOriginal, pathKey, clavePrivada); CreateXML(oComprobante); ////TIMBRE DEL XML ServiceReferenceFC.RespuestaCFDi respuestaCFDI = new ServiceReferenceFC.RespuestaCFDi(); byte[] bXML = System.IO.File.ReadAllBytes(pathXML); ServiceReferenceFC.TimbradoClient oTimbrado = new ServiceReferenceFC.TimbradoClient(); respuestaCFDI = oTimbrado.Timbrar("AATJ9502061EA", "827984aaddd4126c9c67", bXML); if (respuestaCFDI.Documento == null) { return(respuestaCFDI.Mensaje); } else { System.IO.File.WriteAllBytes(pathXML, respuestaCFDI.Documento); ServiceReferenceFC.TimbradoClient pdf = new ServiceReferenceFC.TimbradoClient(); bXML = System.IO.File.ReadAllBytes(pathXML); respuestaCFDI = pdf.PDF("AATJ9502061EA", "827984aaddd4126c9c67", bXML, null); System.IO.File.WriteAllBytes(pathPDF, respuestaCFDI.Documento); Sql.InsertarFactura(folio, bXML); Sql.InsertarDatos("UPDATE `venta` SET `facturada`= 1 WHERE id_venta=" + folio); string pXMl = @path + "\\" + folio + ".xml"; string pPDF = @path + "\\" + folio + ".pdf"; File.Move(pathXML, pXMl); File.Move(pathPDF, pPDF); try { Email(mail, pXMl, pPDF); } catch (Exception e) { return("Error: " + e.Message); } File.Delete(pXMl); File.Delete(pPDF); } return(""); }
static void Main(string[] args) { Comprobante comprobante = new Comprobante(); ////////////Comprobante///////////////////// comprobante.Version = "3.3"; comprobante.Serie = "S"; comprobante.Folio = "1"; comprobante.Fecha = DateTime.Now; //CAMBIAR LA FECHA A FORMATO ORIGINAL comprobante.Sello = "Falta"; //EL SELLO FALTA DE IMPLEMENTARCE comprobante.FormaPago = "99"; comprobante.NoCertificado = "23456789998765432123"; //FALTA EN NUMERO DE CERTIFICADO comprobante.Certificado = ""; //FALTA EL CERTIFICADO comprobante.SubTotal = 100; comprobante.Descuento = 1; comprobante.Moneda = "MXN"; comprobante.Total = 99; comprobante.TipoDeComprobante = "I"; comprobante.MetodoPago = "PUE"; comprobante.LugarExpedicion = "20131"; ////////EMISOR//////////////////////////////////// ComprobanteEmisor emisor = new ComprobanteEmisor(); emisor.Rfc = "POWE870601DM7"; emisor.Nombre = "una razón"; emisor.RegimenFiscal = "605"; ////////RESEPTOR//////////////////////////////////// ComprobanteReceptor receptor = new ComprobanteReceptor(); receptor.Nombre = "Test"; receptor.Rfc = "TEST1234566546"; receptor.UsoCFDI = "P01"; //Asignacion de emisor y reseptor al a los atributos del objeto Comprobante comprobante.Emisor = emisor; comprobante.Receptor = receptor; //Creacion de lista ComproboanteConcepto List <ComprobanteConcepto> conceptos = new List <ComprobanteConcepto>(); ComprobanteConcepto compConcepto = new ComprobanteConcepto(); compConcepto.Importe = 10; compConcepto.ClaveProdServ = "92111704"; compConcepto.Cantidad = 1; compConcepto.ClaveUnidad = "C81"; compConcepto.Descripcion = "Un misil para la guerra"; compConcepto.ValorUnitario = 100; compConcepto.Descuento = 1; conceptos.Add(compConcepto); comprobante.Conceptos = conceptos.ToArray(); //Serializamos//////////////////////////////////////////////////////// string pathXML = @"C:\Users\ivanr\Documents\github\FacturacionDigital-CFDI\FacturacionDigital-CFDI\xml\myFirstXML.xml"; XmlSerializer xmlSerializer = new XmlSerializer(typeof(Comprobante)); string Sxml = ""; using (var sww = new StringWriter()) { using (XmlWriter writer = XmlWriter.Create(sww)) { xmlSerializer.Serialize(writer, comprobante); Sxml = sww.ToString(); } } ///////GUARDAMOS EL STRING EN UN ARCHIVO////////////////////////// File.WriteAllText(pathXML, Sxml); }
static private void Main(string[] args) { //obtener numero de certificado----------------------------------------------------------------------------------- //modifiquen por su path //string pathCer = path + @"CFDI 3.3_MIO\CSD01_AAA010101AAA.cer"; // string pathKey = path + @"CFDI 3.3_MIO\CSD01_AAA010101AAA.key"; // string clavePrivada = "12345678a"; //OBTENEMOS EL NUMERO //string numeroCertificado, aa, b, c; //LLEMANOS LA CLASE COMPROBATE Comprobante oComprobante = new Comprobante(); oComprobante.Version = "3.3"; oComprobante.Serie = "H"; oComprobante.Folio = "1"; oComprobante.Fecha = DateTime.Now.ToString("yyyy-MM-ddtHH:mm:ss"); oComprobante.Sello = ""; oComprobante.FormaPago = "99"; oComprobante.NoCertificado = ""; oComprobante.Certificado = ""; oComprobante.SubTotal = 10m; oComprobante.Descuento = 1; oComprobante.Moneda = "MXN"; oComprobante.Total = 9; oComprobante.TipoDeComprobante = "I"; oComprobante.MetodoPago = "PUE"; oComprobante.LugarExpedicion = "20131"; ComprobanteEmisor oEmisor = new ComprobanteEmisor(); oEmisor.Rfc = "POWE8710601DM7"; oEmisor.Nombre = "UNA RAZON"; oEmisor.RegimenFiscal = "605"; ComprobanteReceptor oReceptor = new ComprobanteReceptor(); oReceptor.Nombre = "PEPE SA DE CV"; oReceptor.Rfc = "PEPE0808013H1"; oReceptor.UsoCFDI = "P01"; oComprobante.Emisor = oEmisor; oComprobante.Receptor = oReceptor; List <ComprobanteConcepto> lstConceptos = new List <ComprobanteConcepto>(); ComprobanteConcepto oConcepto = new ComprobanteConcepto(); oConcepto.Importe = 19.2m; oConcepto.ClaveProdServ = "92111704"; oConcepto.Cantidad = 1; oConcepto.ClaveUnidad = "C81"; oConcepto.Descripcion = "un misil para la guerra"; oConcepto.ValorUnitario = 10m; oConcepto.Descuento = 1; lstConceptos.Add(oConcepto); oComprobante.Conceptos = lstConceptos.ToArray(); XML(oComprobante); }
private void xml2() { Models.Configuration configuracion = new Models.Configuration(); Models.Client clientes = new Models.Client(); Models.Product productos = new Models.Product(); using (configuracion) { using (clientes) { using (productos) { List <Models.Configuration> config = configuracion.getConfiguration(); DateTime dt = DateTime.Now; DateTime x = Convert.ToDateTime(String.Format("{0:s}", dt)); Comprobante oComprobante = new Comprobante(); ComprobanteEmisor oEmisor = new ComprobanteEmisor(); ComprobanteReceptor oReceptor = new ComprobanteReceptor(); string username = "******"; string password = "******"; string CertFile = config[0].Cer; string KeyFile = config[0].Key; string KeyPass = config[0].Pass; string Errores = ""; string noCertificado, aa, b, c; SelloDigital.leerCER(CertFile, out aa, out b, out c, out noCertificado); oComprobante.Folio = txtFolio.Text; oComprobante.Version = "3.3"; oComprobante.Fecha = x.ToString("yyyy-MM-ddTHH:mm:ss"); oComprobante.Serie = "A"; oComprobante.NoCertificado = noCertificado; oComprobante.SubTotal = Convert.ToDecimal(DoFormat(Convert.ToDouble(txtSubtotal.Text))); oComprobante.Moneda = "MXN"; oComprobante.Total = Convert.ToDecimal(DoFormat(Convert.ToDouble(txtSubtotal.Text))); oComprobante.TipoDeComprobante = "I"; oComprobante.FormaPago = txtFpago.Text; oComprobante.CondicionesDePago = "CONTADO"; oComprobante.MetodoPago = txtMPago.Text; oComprobante.LugarExpedicion = config[0].Cp; oEmisor.Rfc = config[0].RFC; oEmisor.Nombre = config[0].Razon_social; oEmisor.RegimenFiscal = config[0].Regimen; List <Models.Client> cliente = clientes.getClientbyId(Convert.ToInt16(txtIdCliente.Text)); oReceptor.Rfc = cliente[0].RFC; oReceptor.UsoCFDI = txtUsoCfdi.Text; oReceptor.Nombre = txtCliente.Text; oComprobante.Emisor = oEmisor; oComprobante.Receptor = oReceptor; List <Models.Product> producto = null; List <ComprobanteConcepto> lstConceptos = new List <ComprobanteConcepto>(); foreach (DataGridViewRow row in dtProductos.Rows) { ComprobanteConcepto oConcepto = new ComprobanteConcepto(); producto = productos.getProductById(Convert.ToInt16(row.Cells["id_producto"].Value.ToString())); List <ComprobanteConceptoImpuestosTraslado> Ltraslados = new List <ComprobanteConceptoImpuestosTraslado>(); ComprobanteConceptoImpuestos oConoceptoimpuesto = new ComprobanteConceptoImpuestos(); ComprobanteConceptoImpuestosTraslado oConcepto_traslado = new ComprobanteConceptoImpuestosTraslado(); oConcepto.ClaveProdServ = producto[0].Code_sat; oConcepto.Cantidad = Convert.ToDecimal(row.Cells["cantidad"].Value.ToString()); oConcepto.ClaveUnidad = producto[0].Medida_sat; oConcepto.Descripcion = row.Cells["descripcion"].Value.ToString(); oConcepto.ValorUnitario = Convert.ToDecimal(DoFormat(Convert.ToDouble(row.Cells["pu"].Value.ToString()))); oConcepto.Importe = Convert.ToDecimal(DoFormat(Convert.ToDouble(row.Cells["total"].Value.ToString()))); //oConcepto.Descuento = Convert.ToDecimal(0); oConcepto.Unidad = "PIEZA"; oConcepto.NoIdentificacion = producto[0].Code1; oConcepto_traslado.Base = Convert.ToDecimal(DoFormat(Convert.ToDouble(row.Cells["total"].Value.ToString()))); oConcepto_traslado.Impuesto = "002"; oConcepto_traslado.TipoFactor = "Tasa"; oConcepto_traslado.TasaOCuota = Convert.ToDecimal("0.000000"); oConcepto_traslado.Importe = Convert.ToDecimal(DoFormat(Convert.ToDouble(row.Cells["total"].Value.ToString()))) * 0; oConcepto_traslado.TasaOCuotaSpecified = true; oConcepto_traslado.ImporteSpecified = true; Ltraslados.Add(oConcepto_traslado); oConoceptoimpuesto.Traslados = Ltraslados.ToArray(); oConcepto.Impuestos = oConoceptoimpuesto; lstConceptos.Add(oConcepto); } oComprobante.Conceptos = lstConceptos.ToArray(); ComprobanteImpuestos oImpuuestos = new ComprobanteImpuestos(); List <ComprobanteImpuestos> lImpuestos = new List <ComprobanteImpuestos>(); ComprobanteImpuestosTraslado oImpuestos_traslados = new ComprobanteImpuestosTraslado(); List <ComprobanteImpuestosTraslado> lImpuestos_traslados = new List <ComprobanteImpuestosTraslado>(); oImpuestos_traslados.Impuesto = "002"; oImpuestos_traslados.TipoFactor = "Tasa"; oImpuestos_traslados.TasaOCuota = Convert.ToDecimal("0.000000"); oImpuestos_traslados.Importe = Convert.ToDecimal("0.00"); lImpuestos_traslados.Add(oImpuestos_traslados); oImpuuestos.TotalImpuestosRetenidos = Convert.ToDecimal(0.00); oImpuuestos.TotalImpuestosTrasladadosSpecified = true; oImpuuestos.Traslados = lImpuestos_traslados.ToArray(); oComprobante.Impuestos = oImpuuestos; xml(oComprobante, config[0].Ruta_factura + txtFolio.Text + ".xml"); string CadenaOriginal = ""; string path_cad = @"XSLT\cadenaoriginal_3_3.xslt"; System.Xml.Xsl.XslCompiledTransform transformador = new System.Xml.Xsl.XslCompiledTransform(true); transformador.Load(path_cad); using (StringWriter sw = new StringWriter()) { using (XmlWriter xwo = XmlWriter.Create(sw, transformador.OutputSettings)) { transformador.Transform(config[0].Ruta_factura + txtFolio.Text + ".xml", xwo); CadenaOriginal = sw.ToString(); } } SelloDigital sellodigital = new SelloDigital(); oComprobante.Certificado = sellodigital.Certificado(CertFile); oComprobante.Sello = sellodigital.Sellar(CadenaOriginal, KeyFile, KeyPass); xml(oComprobante, config[0].Ruta_factura + txtFolio.Text + ".xml"); timbrar(); } } } }
private void Button1_Click(object sender, EventArgs e) { //Obtener las variables string NoCertificado, aa, b, c; SelloDigital.leerCER(RutaCer, out aa, out b, out c, out NoCertificado); //Llenamos la clase COMPROBANTE-------------------------------------------------------- oComprobante = new Comprobante(); oComprobante.Version = "3.3"; oComprobante.Serie = "H"; oComprobante.Folio = "1"; oComprobante.Fecha = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"); oComprobante.FormaPago = "99"; oComprobante.NoCertificado = NoCertificado; oComprobante.SubTotal = 410.24m; oComprobante.Descuento = 0; oComprobante.Moneda = "MXN"; oComprobante.Total = 430.97m; oComprobante.TipoDeComprobante = "I"; oComprobante.MetodoPago = "PUE"; oComprobante.LugarExpedicion = "20131"; ComprobanteEmisor oEmisor = new ComprobanteEmisor(); // oEmisor.Rfc = "MEJJ940824C61"; oEmisor.Rfc = "AAA010101AAA"; //los sellos estan utilizando este rfc oEmisor.Nombre = "JESUS MENDOZA JUAREZ"; oEmisor.RegimenFiscal = "601"; ComprobanteReceptor oReceptor = new ComprobanteReceptor(); oReceptor.Nombre = "DAVID RODRIGUEZ BALCAZAR"; oReceptor.Rfc = "ROBD8901188E1"; oReceptor.UsoCFDI = "P01"; //asigno emisor y receptor oComprobante.Emisor = oEmisor; oComprobante.Receptor = oReceptor; List <ComprobanteConcepto> lstConceptos = new List <ComprobanteConcepto>(); //Conceptos ComprobanteConcepto oConcepto = new ComprobanteConcepto(); oConcepto.Importe = 45.6m; oConcepto.ClaveProdServ = "01010101"; oConcepto.Cantidad = 1; oConcepto.ClaveUnidad = "C81"; oConcepto.Descripcion = "Un misil para la guerra"; oConcepto.ValorUnitario = 45.6m; oConcepto.Descuento = 0; //impuesto trasladado SOLO IVA List <ComprobanteConceptoImpuestosTraslado> lstImpuestosTrasladados = new List <ComprobanteConceptoImpuestosTraslado>(); ComprobanteConceptoImpuestosTraslado oImpuestoTrasladado = new ComprobanteConceptoImpuestosTraslado(); oImpuestoTrasladado.Base = 45.6m; oImpuestoTrasladado.TasaOCuota = 0.160000m; oImpuestoTrasladado.TipoFactor = "Tasa"; oImpuestoTrasladado.Impuesto = "002"; oImpuestoTrasladado.Importe = 7.296m; lstImpuestosTrasladados.Add(oImpuestoTrasladado); oConcepto.Impuestos = new ComprobanteConceptoImpuestos(); oConcepto.Impuestos.Traslados = lstImpuestosTrasladados.ToArray(); lstConceptos.Add(oConcepto); //Concepto 2 IVA e IEPS ComprobanteConcepto oConcepto2 = new ComprobanteConcepto(); oConcepto2.Importe = 55.98m; oConcepto2.ClaveProdServ = "01010101"; oConcepto2.Cantidad = 1; oConcepto2.ClaveUnidad = "C81"; oConcepto2.Descripcion = "concepto iva e ieps"; oConcepto2.ValorUnitario = 55.98m; oConcepto2.Descuento = 0; List <ComprobanteConceptoImpuestosTraslado> lstImpuestosTrasladados2 = new List <ComprobanteConceptoImpuestosTraslado>(); ComprobanteConceptoImpuestosTraslado oImpuestoTrasladado2 = new ComprobanteConceptoImpuestosTraslado(); oImpuestoTrasladado2.Base = 55.98m; oImpuestoTrasladado2.TasaOCuota = 0.160000m; oImpuestoTrasladado2.TipoFactor = "Tasa"; oImpuestoTrasladado2.Impuesto = "002"; oImpuestoTrasladado2.Importe = 8.9568m; lstImpuestosTrasladados2.Add(oImpuestoTrasladado2); ComprobanteConceptoImpuestosTraslado oImpuestoTrasladadoIEPS = new ComprobanteConceptoImpuestosTraslado(); oImpuestoTrasladadoIEPS.Base = 55.98m; oImpuestoTrasladadoIEPS.TasaOCuota = 0.080000m; //debe corresponder con un valor del catalogo, exactamente oImpuestoTrasladadoIEPS.TipoFactor = "Tasa"; oImpuestoTrasladadoIEPS.Impuesto = "003"; //clave ieps 003 oImpuestoTrasladadoIEPS.Importe = 4.4784m; //el 25% de 9 es 2.25 lstImpuestosTrasladados2.Add(oImpuestoTrasladadoIEPS); oConcepto2.Impuestos = new ComprobanteConceptoImpuestos(); oConcepto2.Impuestos.Traslados = lstImpuestosTrasladados2.ToArray(); lstConceptos.Add(oConcepto2); //concepto 3, iva exento 0---------------------------------------------------------- ComprobanteConcepto oConcepto3 = new ComprobanteConcepto(); oConcepto3.Importe = 308.66m; oConcepto3.ClaveProdServ = "01010101"; oConcepto3.Cantidad = 1; oConcepto3.ClaveUnidad = "C81"; oConcepto3.Descripcion = "concepto iva exento"; oConcepto3.ValorUnitario = 308.66m; oConcepto3.Descuento = 0; //impuesto trasladado iva exento List <ComprobanteConceptoImpuestosTraslado> lstImpuestosTrasladados3 = new List <ComprobanteConceptoImpuestosTraslado>(); ComprobanteConceptoImpuestosTraslado oImpuestoTrasladadoIVAExento = new ComprobanteConceptoImpuestosTraslado(); oImpuestoTrasladadoIVAExento.Base = 308.66m; // oImpuestoTrasladado.TasaOCuota = 0.160000m; exento no lleva tasa oImpuestoTrasladadoIVAExento.TipoFactor = "Exento"; oImpuestoTrasladadoIVAExento.Impuesto = "002"; //clave iva es 002 //oImpuestoTrasladado.Importe = 1.44m; exento no lleva importe lstImpuestosTrasladados3.Add(oImpuestoTrasladadoIVAExento); oConcepto3.Impuestos = new ComprobanteConceptoImpuestos(); oConcepto3.Impuestos.Traslados = lstImpuestosTrasladados3.ToArray(); lstConceptos.Add(oConcepto3); oComprobante.Conceptos = lstConceptos.ToArray(); //NODO IMPUESTO************************************************************************************* List <ComprobanteImpuestosTraslado> lstImpuestoTRANSLADADOS = new List <ComprobanteImpuestosTraslado>(); ComprobanteImpuestos oIMPUESTOS = new ComprobanteImpuestos(); ComprobanteImpuestosTraslado oITIVA = new ComprobanteImpuestosTraslado(); ComprobanteImpuestosTraslado oITIEPS = new ComprobanteImpuestosTraslado(); oIMPUESTOS.TotalImpuestosTrasladados = 20.73m; //totales de impuestos trasladados //se agrupan los impuestos del mismo tipo, en este caso iva oITIVA.Importe = 16.2528m; oITIVA.Impuesto = "002"; oITIVA.TipoFactor = "Tasa"; oITIVA.TasaOCuota = 0.160000m; //ieps oITIEPS.Importe = 4.4784m; oITIEPS.Impuesto = "003"; oITIEPS.TipoFactor = "Tasa"; oITIEPS.TasaOCuota = 0.080000m; lstImpuestoTRANSLADADOS.Add(oITIVA); lstImpuestoTRANSLADADOS.Add(oITIEPS); oIMPUESTOS.Traslados = lstImpuestoTRANSLADADOS.ToArray(); //agregamos impuesto a comprobante oComprobante.Impuestos = oIMPUESTOS; FacturaActual = "FACTURA_" + oComprobante.Serie + oComprobante.Folio + ".xml"; //Crear Xml CreateXML(oComprobante); string cadenaOriginal = ""; XslCompiledTransform transformador = new XslCompiledTransform(true); transformador.Load(RutaCO); using (StringWriter sw = new StringWriter()) using (XmlWriter xwo = XmlWriter.Create(sw, transformador.OutputSettings)) { transformador.Transform(RutaComprobantes + FacturaActual, xwo); cadenaOriginal = sw.ToString(); } SelloDigital oSelloDigital = new SelloDigital(); oComprobante.Certificado = oSelloDigital.Certificado(RutaCer); oComprobante.Sello = oSelloDigital.Sellar(cadenaOriginal, RutaKey, ClavePrivada); CreateXML(oComprobante); //TIMBRE DEL XML WSTimbrado.RespuestaCFDi respuestaCFDI = new WSTimbrado.RespuestaCFDi(); WSTimbrado.TimbradoClient oTimbrado = new WSTimbrado.TimbradoClient(); byte[] bXML = File.ReadAllBytes(RutaComprobantes + FacturaActual); respuestaCFDI = oTimbrado.TimbrarTest("DGE131017IP1", "9616fb2b81e89673495f", bXML); if (respuestaCFDI.Documento == null) { MessageBox.Show(respuestaCFDI.Mensaje); } else { File.WriteAllBytes(RutaComprobantes + FacturaActual, respuestaCFDI.Documento); MessageBox.Show("Ok"); Desearizar(FacturaActual); MessageBox.Show(oComprobante.TimbreFiscalDigital.UUID); } }
static void Main(string[] args) { //Obtener numero certificado string pathCer = @"F:\ProyectoFactura33\CSDAAA010101AAA\CSD01_AAA010101AAA.cer"; string pathKey = @"F:\ProyectoFactura33\CSDAAA010101AAA\CSD01_AAA010101AAA.key"; string clavePrivada = "12345678a"; //Obtenemos el numero de certificado string numeroCertificado, aa, b, c; SelloDigital.leerCER(pathCer, out aa, out b, out c, out numeroCertificado); //Llamamos la clase comprobante Comprobante oComprobante = new Comprobante(); oComprobante.Version = "3.3"; oComprobante.Serie = "PF"; oComprobante.Folio = "026711"; oComprobante.Fecha = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"); //oComprobante.Sello = "Faltante"; oComprobante.FormaPago = "99"; oComprobante.NoCertificado = numeroCertificado; //oComprobante.Certificado = "Faltante"; oComprobante.SubTotal = 336.00m; oComprobante.Descuento = 0; oComprobante.Moneda = "MXN"; //oComprobante.TipoCambio = 17.20m; oComprobante.Total = 389.76m; oComprobante.TipoDeComprobante = "I"; oComprobante.MetodoPago = "PPD"; oComprobante.LugarExpedicion = "27000"; oComprobante.CondicionesDePago = "30 DIAS DE CREDITO"; ComprobanteEmisor oEmisor = new ComprobanteEmisor(); oEmisor.Rfc = "MEP900430F74"; oEmisor.Nombre = "MARATHON ELECTRICA DE PUEBLA S.A. DE C.V."; oEmisor.RegimenFiscal = "601"; ComprobanteReceptor oReceptor = new ComprobanteReceptor(); oReceptor.Nombre = "JOCAR INGENIERIA EN MANTENIMIENTO S.A. DE C.V."; oReceptor.Rfc = "JIM8410225I2"; oReceptor.UsoCFDI = "G01"; oComprobante.Emisor = oEmisor; oComprobante.Receptor = oReceptor; List <ComprobanteConcepto> listConceptos = new List <ComprobanteConcepto>(); ComprobanteConcepto oConcepto = new ComprobanteConcepto(); oConcepto.ValorUnitario = 3.36m; oConcepto.Unidad = "M"; oConcepto.NoIdentificacion = "SLYZ54 0"; oConcepto.Importe = 336.00m; oConcepto.Descripcion = "CABLE THMW NYLON ROJO 16 AWG"; oConcepto.ClaveProdServ = "26121634"; oConcepto.Cantidad = 100m; listConceptos.Add(oConcepto); oComprobante.Conceptos = listConceptos.ToArray(); List <ComprobanteImpuestosTraslado> listImpuestosTraslado = new List <ComprobanteImpuestosTraslado>(); ComprobanteImpuestosTraslado oImpuestosTraslado = new ComprobanteImpuestosTraslado(); oImpuestosTraslado.Importe = 53.76m; listImpuestosTraslado.Add(oImpuestosTraslado); //Creamos el xml selleado CreateXML(oComprobante); string cadenaOriginal = ""; string pathxsl = path + @"cadenaoriginal_3_3.xslt"; System.Xml.Xsl.XslCompiledTransform transformador = new System.Xml.Xsl.XslCompiledTransform(true); transformador.Load(pathxsl); using (StringWriter sw = new StringWriter()) { using (XmlWriter xwo = XmlWriter.Create(sw, transformador.OutputSettings)) { transformador.Transform(pathXML, xwo); cadenaOriginal = sw.ToString(); } } SelloDigital oSelloDigital = new SelloDigital(); oComprobante.Certificado = oSelloDigital.Certificado(pathCer); oComprobante.Sello = oSelloDigital.Sellar(cadenaOriginal, pathKey, clavePrivada); CreateXML(oComprobante); //Timbre del XML ServiceReference.RespuestaCFDi respuestaCFDI = new ServiceReference.RespuestaCFDi(); byte[] bXML = System.IO.File.ReadAllBytes(pathXML); ServiceReference.TimbradoClient oTimbrado = new ServiceReference.TimbradoClient(); respuestaCFDI = oTimbrado.TimbrarTest("TEST010101ST1", "aaaaa", bXML); if (respuestaCFDI.Documento == null) { Console.WriteLine(respuestaCFDI.Mensaje); } else { System.IO.File.WriteAllBytes(pathXML, respuestaCFDI.Documento); } }