Respuesta: Factura Electronica en VFP ayuda con XML Buenos Dias AlconDivino tengo un problema con respecto a la factura digital en el tema de la addenda con tu ejemplo ya pude realizar bien mi factura, solo que al agregarla addenda de Mabe tengo el problema que al nombre del nodo no le puedo poner los : ya que al parecer los : punto tiene un significado especial en Hml, al ponerlos no me muestra informacion del nodo, en este caso el nodo de mabe se llaman mabe:Proveedor, no se si con alguna funcion se puedan insertar los 2 puntos y me los reconozca se programa en visual fox pro ver 9.0
soy novato en la programacion, agradezco tu aporte.
te envio el ejemplo de la addenda de mabe:
<?xml version="1.0" encoding="UTF-8" ?>
- <mabe:Factura xmlns:mabe="http://recepcionfe.mabempresa.com/cfd/addenda/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://recepcionfe.mabempresa.com/cfd/addenda/v1 http://recepcionfe.mabempresa.com/cfd/addenda/v1/mabev1.xsd" version="1.0" tipoDocumento="FACTURA" folio="1" fecha="2011-04-14" ordenCompra="500012365" referencia1="TICKET12030" referencia2="KW12390044">
<mabe:Moneda tipoMoneda="MXN" tipoCambio="1.00" importeConLetra="CIENTO TREINTA PESOS CON CUARENTA CENTAVOS" />
<mabe:Proveedor codigo="PPDN00000" />
<mabe:Entrega plantaEntrega="330" calle="Av. Mexico" noExterior="13" noInterior="A" codigoPostal="11000" />
- <mabe:Detalles>
<mabe:Detalle noLineaArticulo="001" codigoArticulo="1234567890" descripcion="Articulo 1" unidad="PZA" cantidad="1" precioSinIva="100.00" precioConIva="116.00" importeSinIva="100.00" importeConIva="116.00" />
</mabe:Detalles>
<mabe:Descuentos tipo="CARGO" descripcion="OTROS CARGOS" importe="10.00" />
<mabe:Subtotal importe="110.00" />
- <mabe:Traslados>
<mabe:Traslado tipo="IVA" tasa="16" importe="16.00" />
</mabe:Traslados>
- <mabe:Retenciones>
<mabe:Retencion tipo="FLETE" tasa="4" importe="4.40" />
</mabe:Retenciones>
<mabe:Total importe="130.40" />
</mabe:Factura>
Te envio el codigo con que se realiza esto
* Se crea el Nodo AddEnda
* Facor de ver mis comentarios sobre el nodo addena en la cabezera de esta rutina .
*
nAddEnda = CFDXml.CreateNode(1, "Addenda", "")
* Se crea el Nodo Mabe:Factura
nmabeFactura = CFDXml.CreateNode(1, "mabeFactura", "")
* Agregan los atributos al nodo nmabeFactura
nmabeFactura.setAttribute("xmlns:mabe" ,"http://recepcionfe.mabempresa.com/cfd/addenda/v1")
nmabeFactura.setAttribute("xmlns:xsi" ,"http://www.w3.org/2001/XMLSchema-instance")
nmabeFactura.setAttribute("xsi:schemaLocation","ht tp://recepcionfe.mabempresa.com/cfd/addenda/v1 http://recepcionfe.mabempresa.com/cfd/addenda/v1/mabev1.xsd")
nmabeFactura.setAttribute("version","1.0")
Select Gral
Goto Top
If Len(QtarChrInval(Gral.tipodocume)) > 0
nmabeFactura.setAttribute("tipoDocumento" ,QtarChrInval(Gral.tipodocume ))
ENDIF
If Len(QtarChrInval(Gral.serie)) > 0 .AND. Len(QtarChrInval(Gral.folio)) > 0
nmabeFactura.setAttribute("folio" ,QtarChrInval(Gral.serie)+QtarChrInval(Gral.folio) )
ENDIF
If Len(QtarChrInval(Gral.fecha)) > 0
xaño=SUBSTR(ALLTRIM(Gral.fecha),1,4)
xmes=SUBSTR(ALLTRIM(Gral.fecha),6,2)
xdia=SUBSTR(ALLTRIM(Gral.fecha),9,2)
xfecha=xaño+"-"+xmes+"-"+xdia
nmabeFactura.setAttribute("fecha" ,xfecha)
ENDIF
* se agrega el nodo nmabeFactura al nodo AddEnda
*nAddEnda.AppendChild(nmabeFactura)
*xx=cfdxml.createtextnodo("mabe_Moneda")
*xx="Alt+58"
*xx="mabeAlt+58Moneda"
nmabemoneda = CFDXml.CreateNode(1,"mabeMoneda", "") &&Se Crea nodo mabe:Moneda
*nnuevo= nmabemoneda.insertbefore(xx,nmabemoneda.childnodes .item(1))
If Len(QtarChrInval(Gral.moneda)) > 0
nmabemoneda.setAttribute("tipoMoneda" ,Gral.moneda)
ENDIF
* se agrega el nodo nmabemoneda al nodo AddEnda
nmabeFactura.AppendChild(nmabemoneda)
nmabeProveedor = CFDXml.CreateNode(1,"mabeProveedor", "") &&Se Crea nodo mabe:Proveedor
If Len(QtarChrInval(Gral.proveedor)) > 0
nmabeProveedor.setAttribute("codigo" ,QtarChrInval(Gral.proveedor))
ENDIF
* se agrega el nodo nmabeProveedor al nodo AddEnda
nmabeFactura.AppendChild(nmabeProveedor)
nmabeEntrega = CFDXml.CreateNode(1,"mabeEntrega", "") &&Se Crea nodo mabe:Proveedor
If Len(QtarChrInval(Gral.plantaEntr)) > 0
nmabeEntrega.setAttribute("plantaEntrega" ,QtarChrInval(Gral.plantaEntr))
ENDIF
* se agrega el nodo nmabeEntrega al nodo AddEnda
nmabeFactura.AppendChild(nmabeEntrega)
nmabeDetalles = CFDXml.CreateNode(1,"mabeDetalles", "") &&Se Crea nodo mabe:Detalles
imporsiniva=0
i=0
Select Cnspts
Goto Top
Do While Not Eof()
* Se crea el Nodo detalle
nmabeDetalle = CFDXml.CreateNode(1 , "mabeDetalle", "")
i=i+1
nmabeDetalle.setAttribute("noLineaArticulo",ALLTRI M(STR(i)))
If Len(QtarChrInval(Cnspts.noID)) > 0
nmabeDetalle.setAttribute("codigoArticulo" ,QtarChrInval(Cnspts.noID ))
EndIf
If Len(QtarChrInval(Cnspts.descripcio)) > 0
nmabeDetalle.setAttribute("descripcion" ,QtarChrInval(Cnspts.descripcio ))
EndIf
If Len(QtarChrInval(Cnspts.unidad)) > 0
nmabeDetalle.setAttribute("unidad" ,QtarChrInval(Cnspts.unidad))
EndIf
If Len(QtarChrInval(Cnspts.cantidad)) > 0
nmabeDetalle.setAttribute("cantidad" ,QtarChrInval(Cnspts.cantidad ))
EndIf
If Len(QtarChrInval(Cnspts.valorUnita)) > 0
nmabeDetalle.setAttribute("precioSinIva" ,QtarChrInval(Cnspts.valorUnita ))
ENDIF
* imporsini= VAL(Cnspts.cantidad)* VAL(Cnspts.valorUnita)
imporsiniva= imporsiniva+ VAL(ALLTRIM(Cnspts.importe))
If Len(QtarChrInval(Cnspts.importe)) > 0
nmabeDetalle.setAttribute("importeSinIva" ,QtarChrInval(Cnspts.importe))
ENDIF
*****
* El nodo Concepto se agrega al nodo Detalles
nmabeDetalles.AppendChild(nmabeDetalle)
Select Cnspts
Skip
EndDo
* El nodo Detalles se agrega al nodo Addenda
nmabeFactura.AppendChild(nmabeDetalles)
nmabeSubtotal = CFDXml.CreateNode(1,"mabeSubtotal", "") &&Se Crea nodo mabe:Subtotal
Select Gral
GOTO Top
If imporsiniva > 0
nmabeSubtotal.setAttribute("importe",STR(imporsini va,12,2))
ENDIF
* El nodo Subtotal se agrega al nodo Addenda
nmabeFactura.AppendChild(nmabeSubtotal)
nmabeTotal = CFDXml.CreateNode(1,"mabe'Total", "") &&Se Crea nodo mabe:Total
* nmabeTotal.("_","mabeTotal")
*Select Gral
*Goto Top
If Len(QtarChrInval(Gral.total)) > 0
nmabeTotal.setAttribute("importe" ,QtarChrInval(gral.total))
ENDIF
* nmabeTotal.attribute.value="mabe_Total"
* El nodo total se agrega al nodo Addenda
nmabeFactura.AppendChild(nmabeTotal)
* El nodo Factura se agrega al nodo Addenda
nAddEnda.AppendChild(nmabeFactura)
* se agrega el nodo AddEnda al nodo Comprobante
nComprobante.AppendChild(nAddEnda)
&&--------------------------------------------------------------
* se agrega el nodo Comprobante al nodo CFDXml
CFDXml.AppendChild(nComprobante)
* Se salva el documento XML
CFDXml.Save(ArchivoXml)
con este codigo asi me queda el xml, espero me puedas ayudar buen dia
<Addenda>
- <mabeFactura xmlns:mabe="http://recepcionfe.mabempresa.com/cfd/addenda/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://recepcionfe.mabempresa.com/cfd/addenda/v1 http://recepcionfe.mabempresa.com/cfd/addenda/v1/mabev1.xsd" version="1.0" tipoDocumento="FACTURA" folio="IA1222" fecha="2011-09-20">
<mabeMoneda tipoMoneda="MXN" />
<mabeProveedor codigo="PPIN01532" />
<mabeEntrega plantaEntrega="590" />
- <mabeDetalles>
<mabeDetalle noLineaArticulo="1" codigoArticulo="N40254" descripcion="ALUM.BARRA CUADRADA 6061T6 25.4 MM." unidad="KG" cantidad="1.120" precioSinIva="73.60" importeSinIva="82.43" />
<mabeDetalle noLineaArticulo="2" codigoArticulo="N80091" descripcion="ALUMINIO SOLERA 6061 T-6 9.5X101.6MM" unidad="KG" cantidad="1.900" precioSinIva="73.60" importeSinIva="139.84" />
<mabeDetalle noLineaArticulo="3" codigoArticulo="N80504" descripcion="ALUMINIO SOLERA 6061 T-6 12.7X50.8MM" unidad="KG" cantidad="3.600" precioSinIva="73.60" importeSinIva="264.96" />
</mabeDetalles>
<mabeSubtotal importe="487.23" />
</mabeFactura>
</Addenda>
</Comprobante> |