Respuesta: Facturas Digitales SAT - Mexico C# Gracias a todos los que ponen sus dudas y soluciones he logrado crear mi comprobante fiscal digital, de aquí y de otras páginas, les dejo mi código por si a alguien le sirve, es visual basic 2008:
Cadena Original:
Cadena = “|”
SGL_Query = “SELECT EFA_CEFA,EFA_NUME,CONVERT(VARCHAR,EFA_FECH,126),CT E_NORS,CTE_RFCC,CTE_CALL,CTE_NEXT,CTE_NINT,CTE_COL O,”
SGL_Query = SGL_Query & “PDM_DESC, ENT_DESC, PAI_DESC, CTE_CODP ”
SGL_Query = SGL_Query & “FROM TDFCTEFA, TCFCTCTE, TCRHUPAI, TCRHUPDM, TCRHUENT ”
SGL_Query = SGL_Query & “WHERE EFA_CCTE = CTE_CCTE And CTE_CPDM = PDM_CPDM And CTE_CENT = ENT_CENT ”
SGL_Query = SGL_Query & “And CTE_CPAI = PAI_CPAI ”
SGL_Query = SGL_Query & ” AND EFA_CEFA=” & Val(Txt_Clave.Text)
Call Ejecuta(sat, SGL_Query)
Do Until TraeSig(sat) = NOMOREROWS
Cadena = Cadena + “|2.0|A”
Cadena = Cadena + “|” + Trim(DameDato(sat, 2))
Cadena = Cadena + “|” + Trim(DameDato(sat, 3))
Cadena = Cadena + “|174911|2010|ingreso|efectivo|Pago en una sola exhibicion|subtotal|0|grantotal”
Cadena = Cadena + “|JSI060303UA9|JF SISTEMAS, S. A. DE C. V.|MIRAVEREDA|23|B|CUMBRIA”
Cadena = Cadena + “|CUAUTITLAN IZCALLI|ESTADO DE MEXICO|MEXICO|54740″
Cadena = Cadena + “|” + Trim(DameDato(sat, 5))
Cadena = Cadena + “|” + Trim(DameDato(sat, 4))
Cadena = Cadena + “|” + Trim(DameDato(sat, 6))
If Trim(DameDato(sat, 7)) + Trim(DameDato(sat, 8)) “” Then
Cadena = Cadena + “|” + Trim(DameDato(sat, 7)) + Trim(DameDato(sat, 8))
Else
Cadena = Cadena + “|”
End If
Cadena = Cadena + “|” + Trim(DameDato(sat, 9))
Cadena = Cadena + “|” + Trim(DameDato(sat, 10))
Cadena = Cadena + “|” + Trim(DameDato(sat, 11))
Cadena = Cadena + “|” + Trim(DameDato(sat, 12))
Cadena = Cadena + “|” + Trim(DameDato(sat, 13))
Loop
SGL_Query = “SELECT DFE_CANT,DFE_CONC,DFE_IMPO,DFE_CANT*DFE_IMPO,DFE_I IVA*DFE_CANT,DFE_CONS ”
SGL_Query = SGL_Query & “FROM TDFCTDFE WHERE DFE_CEFA=” & Val(Txt_Clave.Text)
Call Ejecuta(sat, SGL_Query)
Dim ImpIva As Double
ImpIva = 0
GTotal = 0
Subtotal = 0
Do Until TraeSig(sat) = NOMOREROWS
Cadena = Cadena + “|” + Trim(DameDato(sat, 1))
Cadena = Cadena + “|PZA”
Cadena = Cadena + “|” + Trim(DameDato(sat, 6))
Cadena = Cadena + “|” + Trim(DameDato(sat, 2))
Cadena = Cadena + “|” + Trim(Str(CorrigeMoneda(DameDato(sat, 3))))
Cadena = Cadena + “|” + Trim(Str(CorrigeMoneda(DameDato(sat, 4))))
ImpIva = ImpIva + Val(CorrigeMoneda(DameDato(sat, 5)))
Subtotal = Subtotal + CorrigeMoneda(DameDato(sat, 4))
GTotal = GTotal + CorrigeMoneda(DameDato(sat, 4)) + CorrigeMoneda(DameDato(sat, 5))
Loop
Cadena = Cadena + “|IVA|” + Trim(Str(IIva * 100))
Cadena = Cadena + “|” & Trim(Str(ImpIva))
Cadena = Cadena + “|” & Trim(Str(ImpIva))
Cadena = Cadena + “||”
Cadena = Replace(Cadena, “subtotal”, Trim(Str(Subtotal)))
Cadena = Replace(Cadena, “grantotal”, Trim(Str(GTotal)))
System.IO.File.WriteAllText(“C:\SARV3.1J\ELE\caden a_orig.txt”, Cadena)
archivo XML:
Dim ANIO As Long
ANIO = 0
SGL_Query = “SELECT YEAR(EFA_FECH) FROM TDFCTEFA WHERE EFA_CEFA=” & Val(Txt_Clave.Text)
Call Ejecuta(sat, SGL_Query)
Do Until TraeSig(sat) = NOMOREROWS
ANIO = Val(DameDato(sat, 1))
Loop
Dim W As New XmlTextWriter(“C:\SARV3.1J\ELE\” & Txt_Clave.Text & “.xml”, System.Text.Encoding.UTF8)
W.WriteStartDocument()
Shell(“C:\OpenSSL-Win32\bin\openssl.exe pkcs8 -inform DER -in C:\SARv3.1J\ELE\JSI060303UA9_0903250930.key -passin pass:chela2009 -out C:\SARV3.1J\ELE\JSI.key.pem”)
System.Threading.Thread.Sleep(500)
Shell(“C:\OpenSSL-Win32\bin\openssl.exe x509 -inform DER -outform PEM -in C:\SARv3.1J\ELE\jsi060303ua9_1010061243s.cer -pubkey -passin pass:chela2009 -out C:\SARV3.1J\ELE\JSI.cer.pem”)
System.Threading.Thread.Sleep(500)
If ANIO 0 Then
W.WriteStartElement(“Impuestos”)
W.WriteAttributeString(“totalImpuestosTrasladados” , Trim(Str(ImpIva)))
W.WriteStartElement(“Traslados”)
W.WriteStartElement(“Traslado”)
W.WriteAttributeString(“impuesto”, “IVA”)
W.WriteAttributeString(“tasa”, Trim(Str((IIva * 100))))
W.WriteAttributeString(“importe”, Trim(Str(ImpIva)))
W.WriteEndElement() ‘finaliza traslado
W.WriteFullEndElement() ‘finaliza traslados
W.WriteFullEndElement() ‘finaliza impuestos
End If
W.WriteStartElement(“Impresion”)
W.WriteAttributeString(“CadenaOriginal”, Cadena)
W.WriteFullEndElement()
‘…………………………………
W.WriteFullEndElement() ‘finaliza comprobante
W.WriteEndDocument() ‘finaliza documento
W.Flush()
W.Close()
obviamente yo uso mi base de datos, espero entiendan el código y lo adapten al suyo. |