Como agrego la addenda de FEMSA a un XML ya timbrado

2,822 views
Skip to first unread message

Sergio SA

unread,
Sep 27, 2012, 4:47:19 PM9/27/12
to vfp-factura-ele...@googlegroups.com
Buenos Dias a Todos, soy nuevo en esto del XML y tengo algunas sino es que muchas dudas acerca de esto, tengo una aplicacion a la cual le integre el timbrado, me hecharon la mano con un codigo, que siendo sinceros, practicamente cambie variariables, ajuste, adapte y ya funciona, pero muchas de las opciones que tiene este, las desconosco. Ahora me esta solicitando un cliente que agregue la addenda de FEMSA, la idea es que al momento de factura agregar los datos que requiere FEMSA y para las facturas ya timbradas tener una ventana, ya sea para agregar la addenda  o modificarla.
 
La pregunta es: como puedo modificar un XML ya generado y como puedo verificar si ya tiene esta addenda.
 
Encontre codigo, que creo que cumple con las especificaciones de FEMSA, pero no se como agregarlo, vaya no encuentro donde haga referencia a un XML (path y nombre de archivo, como salvarlo, etc...)
si me pueden ayudar, tal vez sea algo que tengo que declara antes, y si asi fuera si me pueden decir como, la verdad estoy completamente perdido en esto del XML.
 
De ante mano Muchas Gracias por su Apoyo
 
PD. Este es el codigo
 

 

 

nAddEnda = CFDXml.CreateNode(1, "Addenda", "")

* ? "Creando el nodo addenda"

nDocumento = CFDXml.CreateNode(1, "Documento", "")

nFacturaFemsa = CFDXml.CreateNode(1, "FacturaFemsa","")

nNoVersAdd = CFDXml.CreateElement("NoVersAdd")

nClaseDoc = CFDXml.CreateElement("claseDoc")

nNoSociedad = CFDXml.CreateElement("noSociedad")

nNoProveedor = CFDXml.CreateElement("Noproveedor")

nNoPedido = CFDXml.CreateElement("noPedido")

nMoneda = CFDXml.CreateElement("moneda")

nNoEntrada = CFDXml.CreateElement("noEntrada")

nNoRemision = CFDXml.CreateElement("noRemision")

nNoSocio = CFDXml.CreateElement("noSocio")

nCentroCostos = CFDXml.CreateElement("centrocostos")

niniPerLiq = CFDXml.CreateElement("iniPerLiq")

nfinPerLiq = CFDXml.CreateElement("finPerLiq")

nretencion1 = CFDXml.CreateElement("retencion1")

nretencion2 = CFDXml.CreateElement("retencion2")

nemail = CFDXml.CreateElement("email")

nNoVersAdd.

TEXT="1"

nClaseDoc.

TEXT="1"

nNoSociedad.

TEXT="F145"

nNoProveedor.

TEXT="1"

nNoPedido.

TEXT="1"

nMoneda.

TEXT="1"

nNoEntrada.

TEXT="1"

nNoRemision.

TEXT="1"

nNoSocio.

TEXT="1"

nCentroCostos.

TEXT=""

niniPerLiq.

TEXT=""

nfinPerliq.

TEXT=""

nretencion1.

TEXT=""

nretencion2.

TEXT=""

nemail.

TEXT="ju...@yahoo.com"

nFacturaFemsa.AppendChild(nNoVersAdd)

nFacturaFemsa.AppendChild(nClaseDoc)

nFacturaFemsa.AppendChild(nNoSociedad)

nFacturaFemsa.AppendChild(nNoproveedor)

nFacturaFemsa.AppendChild(nNoPedido)

nFacturaFemsa.AppendChild(nMoneda)

nFacturaFemsa.AppendChild(nNoEntrada)

nFacturaFemsa.AppendChild(nNoRemision)

nFacturaFemsa.AppendChild(nNoSocio)

nFacturaFemsa.AppendChild(nCentrocostos)

nFacturaFemsa.AppendChild(niniPerLiq)

nFacturaFemsa.AppendChild(nfinPerLiq)

nFacturaFemsa.AppendChild(nretencion1)

nFacturaFemsa.AppendChild(nretencion2)

nFacturaFemsa.AppendChild(nemail)

nDocumento.AppendChild(nFacturaFemsa)

nAddEnda.AppendChild(nDocumento)

* se agrega el nodo AddEnda al nodo Comprobante

nComprobante.AppendChild(nAddEnda)

Oscar Garcia

unread,
Sep 28, 2012, 11:48:32 AM9/28/12
to vfp-factura-ele...@googlegroups.com
Saludos...

Me parece que aquí en el foro ya se trató este tema, te sugiero que busques en los hilos anteriores, (yo todavía no llego a este punto de agregar addendas, sino con todo gusto).


--
Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/vfp-factura-electronica-mexico/-/tanJzbcOjMgJ.
Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-ele...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.

Sergio SA

unread,
Oct 2, 2012, 3:55:45 PM10/2/12
to vfp-factura-ele...@googlegroups.com
Amigos Programadores si hay alguien que me pueda ayudar con esto, algun link, pagina, tutorial, codigo de muestra, etc... se los voy a agradecer mucho.
Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-electronica-mex...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com

eduardo perez schmidt

unread,
Oct 3, 2012, 9:14:16 AM10/3/12
to vfp-factura-ele...@googlegroups.com
Hola, te mando el codigo para hacer lo que tu quieres, espero te sirva.
 
 
 
PARAMETERS archivo
archivoxml='_paso'+TRIM(archivo)
*************************
* creas un cursor donde pegas ti xml sin addenda
* generas la addenda y la pegas a otro cursor
* despues lo agregas al cursor con el xml original
* salvas tu xml con addenda

 siniestro=TRIM(addendas.siniestro)
 reporte=TRIM(addendas.reporte)
 tmo=addendas.mo
 tre=addendas.ref
SET SAFETY off
CREATE cursor xmlfinal (texto_xml m)
CREATE cursor xml (texto_xml m)
DO creaaddenda
comando='copy file "'+archivoxml+'" to xxpaso'
&comando
xx=FILETOSTR('xxpaso')
SELECT xml
Append Blank
REPLACE texto_xml WITH FILETOSTR('xxpaso')
x=AT('<Addenda',texto_xml)
texto=SUBSTR(texto_xml,x,300)
texto=TRIM(texto)
texto=TRIM(texto)
REPLACE texto_xml WITH texto
DO integraxml WITH archivo
=messagebox('Addenda agregada correctamente...',64,'proceso')
RETURN
 
FUNCTION integraxml
 PARAMETERS archivo
 comando='copy file "'+archivo+'" to xxpaso'
 &comando
 xx=FILETOSTR('xxpaso')
 SELECT xmlfinal
 Append Blank
 REPLACE texto_xml WITH FILETOSTR('xxpaso')
 SELECT xml
 GO TOP
 maddenda=TRIM(texto_xml)
 SELECT xmlfinal
 REPLACE texto_xml WITH STRTRAN(texto_xml,'</cfdi:Comprobante>',TRIM(xml.texto_xml))
 comando="strtofile(texto_xml,'"+archivo+"')"
 &comando
 brow 
 RETURN
 
PROCEDURE creaaddenda
 CFDXml = CREATEOBJECT("msxml2.DOMDocument")
 root   = CFDXml.createProcessingInstruction("xml","version='1.0' encoding='UTF-8'")
 CFDXml.insertBefore(root, CFDXml.documentElement)
*********aqui creas la addenda como si fuera un xml ****************
 * Crea el Nodo Principal COMPROBANTE
 cfdi="http://www.sat.gob.mx/cfd/3"
 *nComprobante = cfdxml.CreateNode(1,"cfdi:Comprobante"," ")
 nComprobante = cfdxml.CreateNode(1,"cfdi:Comprobante","http://www.sat.gob.mx/cfd/3")
 
 *************************+
  siniestro='siniestro'
  reporte='reporte'
  STORE 100.00 TO tmo,tre
  tre=200.00
      nAddEnda = cfdxml.CreateNode(1, "Addenda", "")
      nrefreceptor = cfdxml.CreateNode(1, "ReferenciaReceptor", "")
             x=cfdxml.createnode(1,"Siniestro", "")
             x.setattribute("Afectado","A")
             x.setattribute("Numero",siniestro)
             x.setattribute("Emisor",reporte)
             nrefreceptor.appendchild(x)
            
    x=cfdxml.createnode(1,"Deducible","")
    x.setattribute("Importe","0.00")
    nrefreceptor.appendchild(x)
    x=cfdxml.createnode(1,"Descuento","")
    x.setattribute("Importe","0.00")
    nrefreceptor.appendchild(x)
    
    x=cfdxml.createnode(1,"TotalManoObra","")
    x.setattribute("Importe",LTRIM(STR(tmo,13,2)))
    nrefreceptor.appendchild(x)
    
    x=cfdxml.createnode(1,"TotalRefacciones","")
    x.setattribute("Importe",LTRIM(STR(tre,13,2)))
    nrefreceptor.appendchild(x)
   naddenda.appendchild(nrefreceptor)
  ncomprobante.appendchild(naddenda)
 cfdxml.AppendChild(nComprobante)
 cfdxml.Save(archivoxml)
 
 retu

El 27 de septiembre de 2012 15:47, Sergio SA <safac...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/vfp-factura-electronica-mexico/-/tanJzbcOjMgJ.
Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-ele...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com

Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.



--
Gracias.

Eduardo Pérez Schmidt
Sistemas Interactivos
Tel. Cel. 044 55 3474 3664

Sergio SA

unread,
Oct 4, 2012, 6:18:10 AM10/4/12
to vfp-factura-ele...@googlegroups.com
Eduardo Muchas Gracias por tu apoyo, voy a hacer pruebas
 
Buen Dia
Saludos!!!
Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-electronica-mex...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com

Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.

Cesar Esquivel

unread,
Oct 4, 2012, 7:37:04 AM10/4/12
to vfp-factura-ele...@googlegroups.com

Y si pides un ejemplo de algun otro proveedor y de ahi te puedes basar.
Tambien hay que ver si es una addenda especial o es complemento detallista.

Saludos!

Para ver este debate en la Web, visita https://groups.google.com/d/msg/vfp-factura-electronica-mexico/-/JcAU335YnggJ.
Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-ele...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com

Alejandro Castrejon

unread,
Oct 4, 2012, 7:38:27 AM10/4/12
to vfp-factura-ele...@googlegroups.com
He seguido este tema y tengo esta pregunta: ¿alguno de ustedes ha tomado en cuenta la nom-151 ?

Entiendo que están modificando el comprobante despues de haber sido sellado, aunque la addenda no altere el resultado del la cadena original si creas un nuevo documento al que tiene el pac en su resguardo, ¿No seria lo correcto agegar la addenda antes de sellar el comprobante?

Saludos,
Alejandro Castrejón
Para ver este debate en la Web, visita https://groups.google.com/d/msg/vfp-factura-electronica-mexico/-/JcAU335YnggJ.

Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-ele...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com

Sergio SA

unread,
Oct 4, 2012, 8:04:04 AM10/4/12
to vfp-factura-ele...@googlegroups.com
En la ley establece que las addendas sean agregadas despues del timbrado, ya que son de caracter comercial, y para cada giro o empresa varian, no recuerdo exactamente donde lo leei (esto fue hace como 6 meses, salvo que haya salido algo diferente) por otra parte si estos cuates no hayan que hacer con las unidades de medida (son internacionales), imaginate si les metemos las addendas jajajajajajaj
 
de cualquier manera, voy a revizar la nom-151 que mencionas
 
Gracias por tu aporte
Buen Dia
Saludos !!! 
Para publicar una entrada en este grupo, envía un correo electrónico a vfp-factura-electronica-mexico@googlegroups.com.

Para anular tu suscripción a este grupo, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/vfp-factura-electronica-mexico?hl=es.



--
Gracias.

Eduardo Pérez Schmidt
Sistemas Interactivos
Tel. Cel. 044 55 3474 3664

Sergio SA

unread,
Oct 4, 2012, 8:38:57 AM10/4/12
to vfp-factura-ele...@googlegroups.com
Se me paso comentarles, el complemento si va antes de timbrar, dependiendo el giro es el complemento que les corresponde, yo creo que es ahi la confusion, el complemento lo solicita el SAT y las addendas las solicita el sector privado.
 
 
PD. Eduardo Perez Muchas Gracias ya funciono con la addenda que me pasaste, voy a hacer los cambios correspondientes para la addenda de FEMSA y se las posteo cuando la tenga.
 
Buen Dias
Saludos !!!

eduardo perez schmidt

unread,
Oct 4, 2012, 8:40:27 AM10/4/12
to vfp-factura-ele...@googlegroups.com
Definitivamente si sería lo correcto (dejar el comprobante com o lo genero el PAC), el problema es que algunos PAC no te timbran el archivo si trae addenda, por lo que debes hacer éste tipo de maromas.
 
saludos.

Arturo Ramos

unread,
Oct 7, 2012, 3:20:03 PM10/7/12
to vfp-factura-ele...@googlegroups.com
Sergio,

Si ya lo tienes listo comparte tu código, a otros del foro le puede servir.

Saludos.

Arturo Ramos
Cancún, México

Sergio SA

unread,
Oct 12, 2012, 4:43:49 AM10/12/12
to vfp-factura-ele...@googlegroups.com
Si Claro Arturo
esta es una prueba, aunque no he hecho pruebas reales me parece que si funciona:
Mando llamar a la funcion con el archivo que quiero agregar la addenda (este desdes cuaquier parte del sistema)

c_archivoXML = "C:\FacturaE\Archivos_XML\fa-cfdi152"

add_femsa(c_archivoXML)

Esta es la funcion, la agregue a un prg que se llama: add_femsa les mando el prg
 
PD. Espero les sirva
Have a good day

add_femsa.prg
add_femsa.FXP
Reply all
Reply to author
Forward
0 new messages