¿Cómo crear el XML para cfdi 3.3 facturación electrónica C# .Net? – implementando anexo 20 – SAT #3

Te muestro como crear el xml según la documentación del SAT establecida en el anexo 20.

Clase para crear el XML: clic aquí

Video 1: https://www.youtube.com/watch?v=XlTz0NRQLm4

Video 2: https://www.youtube.com/watch?v=HjfqdTspnio

Catálogos SAT mysql: https://hdeleon.net/catalogos-para-facturar-3-3-sat-en-mysql/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
class Program
   {
       static void Main(string[] args)
       {
 
           //Llenamos la clase COMPROBANTE--------------------------------------------------------
 
           Comprobante oComprobante = new Comprobante();
           oComprobante.Version = "3.3";
           oComprobante.Serie = "H";
           oComprobante.Folio = "1";
           oComprobante.Fecha = DateTime.Now;
           oComprobante.Sello = "faltante"; //sig video
           oComprobante.FormaPago = "99";
           oComprobante.NoCertificado = "12312312313112121212"; //sig video
           oComprobante.Certificado = ""; //sig video
           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 = "POWE870601DM7";
           oEmisor.Nombre = "Una razón rh de cv";
           oEmisor.RegimenFiscal = "605";
 
           ComprobanteReceptor oReceptor = new ComprobanteReceptor();
           oReceptor.Nombre = "Pepe SA DE CV";
           oReceptor.Rfc = "PEPE080801JH1";
           oReceptor.UsoCFDI = "P01";
 
           //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 = "C81";
           oConcepto.Descripcion = "Un misil para la guerra";
           oConcepto.ValorUnitario = 10m;
           oConcepto.Descuento = 1;
 
           lstConceptos.Add(oConcepto);
 
           oComprobante.Conceptos = lstConceptos.ToArray();
 
           //SERIALIZAMOS.-------------------------------------------------
           string pathXML = @"C:\Users\Bioxor\source\repos\XSDToXML\miPrimerXML.xml";
 
           XmlSerializer oXmlSerializar = new XmlSerializer(typeof(Comprobante));
 
           string sXml = "";
 
           using (var sww= new StringWriter())
           {
               using (XmlWriter writter = XmlWriter.Create(sww))
               {
 
                   oXmlSerializar.Serialize(writter,oComprobante);
                   sXml = sww.ToString();
               }
 
           }
 
           //guardamos el string en un archivo
           System.IO.File.WriteAllText(pathXML,sXml);
 
       }
   }

Autor: Héctor de León

Desarrollador de software, lector compulsivo.