Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-03-2020
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 286
Poder: 8
manelb Va por buen camino
De forma muy rápida...

Me he descargado la documentación des de los enlaces que has puesto, he importado el xsd y he generado este pequeño ejemplo:

Metes un memo, un botón y un XMLDocument en un formulario, y en el botón pones lo siguiente:

Código Delphi [-]
var
  factura: IXMLInvoiceType;
  AccountID: IXMLAdditionalAccountIDType_cbc;
  PartyName: IXMLPartyNameType_cac;
begin
  factura:= GetInvoice(XMLDocument1);
  factura.IssueDate.NodeValue:='2011-06-28';
  factura.AccountingSupplierParty.CustomerAssignedAccountID.NodeValue:= '20100113612';

  AccountID:= factura.AccountingSupplierParty.AdditionalAccountID.Add;
  AccountID.nodevalue:='6';

  PartyName:= factura.AccountingSupplierParty.Party.PartyName.Add;
  PartyName.Name.NodeValue:='K&G Laboratorios';


  memoxml.lines.Text:= XMLDocument1.XML.Text;

end;

He cogido como ejemplo la factura que incluye en el documento
"Guia+XML+Boleta+version+2+0.pdf" que he descargado con la documentación.

Espero te sirva para comenzar....

Saludos
Responder Con Cita
  #2  
Antiguo 06-03-2020
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 286
Poder: 8
manelb Va por buen camino
Ah!!

Al componente XMLDocument le pones la propiedad Options.doNodeAutoIndent a true para que el texto quede mas estructurado
Responder Con Cita
  #3  
Antiguo 08-03-2020
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ok voy entediendo mas

pero hay algo que me tiene en duda

para que instancias

Código Delphi [-]
  AccountID: IXMLAdditionalAccountIDType_cbc;
  PartyName: IXMLPartyNameType_cac;

todo no se podria hacer desde

Código Delphi [-]
factura: IXMLInvoiceType;
???
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 08-03-2020
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
o al menos explicame por favor como identifico

Raíz, Nodo, Atributo, DATO y asi sucesivamente
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 08-03-2020
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 286
Poder: 8
manelb Va por buen camino
Smile

Pues supongo que alguien habrá que pueda contestarte con más criterio que yo, o por lo menos constatar que mis argumentos son correctos, pero intentaré razonarte mi código.

El caso es que si te fijas como están declaradas las dos variables del ejemplo:
Código Delphi [-]
AccountID: IXMLAdditionalAccountIDType_cbc;
PartyName: IXMLPartyNameType_cac;

y te fijas en el tipo de la propiedad que queremos asignar:
Código Delphi [-]
property AdditionalAccountID: IXMLAdditionalAccountIDType_cbcList read Get_AdditionalAccountID;
property PartyName: IXMLPartyNameType_cacList read Get_PartyName;

pues te das cuenta que son propiedades tipo lista:
Código Delphi [-]
IXMLAdditionalAccountIDType_cbcList = interface(IXMLNodeCollection)
IXMLPartyNameType_cacList = interface(IXMLNodeCollection)

Por lo tanto, tenemos que crear una instancia de la clase que se espera en esa lista para poder asignarla a la propiedad.

En cuanto a lo de identificar Raíz, Nodo, Atributo…, etc., con este sistema, a mi entender, no lo necesitas.
Tu trabajas con la estructura del xml como si se tratara de cualquier otra clase, y te olvidas de los nombres de cada nodo, ya que la interface creada te permite trabajar con los nombres como propiedades.

Imagina la de errores sintácticos que se pueden cometer creando un xml complejo a pelo…
o incluso creando los nodos a mano, tipo AddChild('cacigitalSignatureAttachment'),
i lo que puede costar después depurar y encontrar un fallo de este tipo.

Supongo que, como todo, es cuestión de gustos, pero creo que las ventajas de hacerlo así son considerables.


Par cualquier cosa que necesites, pongo mis modestos conocimientos a tu disposición

Saludos
Responder Con Cita
  #6  
Antiguo 08-03-2020
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
hola buenos dias

yo estoy aprendiendo Delphi de manera autodidacta y hay temas que aun son desconocidos para mi
sobre todo esta parte de utilizar librerias externas y/o creacion lectura de XML

agradezco la paciencia

pero crees que podrias generarme un ejemplo?


de otro lado estuve "generando" un xml con el xsd, lo que no estoy entendiendo bien es que en los archivos XML de ejemplo (adjunto)
existen "claves" que cuando se generan con xl XSD no aparecen

[TEXT] <cbc:PriceAmount currencyID="PEN">38.00</cbc:PriceAmount>[/TEXT]
O TAMBIEN

<cbc:PriceTypeCode listName="SUNAT:Indicador de Tipo de Precio"
listAgencyName="PE:SUNAT"
listURI="urne:gob:sunat:cpe:see:gem:catalogos:catalogo16">01</cbc:PriceTypeCode>

creo que con un ejemplo lo entenderia mejor

gracias
Archivos Adjuntos
Tipo de Archivo: rar 20553510661-01-F001-1.rar (3,5 KB, 6 visitas)
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #7  
Antiguo 14-03-2020
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 286
Poder: 8
manelb Va por buen camino
Buenos días a todos…

Hola Oscarrac, perdona el retraso en contestar….

No comprendo a que te refieres cuando dices que
Cita:
en los archivos XML de ejemplo (adjunto)
existen "claves" que cuando se generan con xl XSD no aparecen
El fixhero xml resultante contendrá todas y cada una de las líneas que tú le añadas.
Es verdad que estas líneas que me muestras de ejemplo, las cuales hacen referencia a precios, además del propio valor de la etiqueta tienen atributos.
Para asignarlos, deberás conocer los diferentes valores que pueden tomar, y la forma de asignarlos a cada etiqueta.
No recuerdo yo ahora que el formato Facturae en España tenga etiquetas con atributos, pero buscando un poco he encontrado que probablemente se pueda hacer de la siguiente e forma.
He ampliado un poco el ejemplo anterior que puse para insertar un nodo con algunas etiquetas de una línea de factura

Código Delphi [-]
var
  factura: IXMLInvoiceType;
  AccountID: IXMLAdditionalAccountIDType_cbc;
  PartyName: IXMLPartyNameType_cac;
  unaLinea: IXMLInvoiceLineType_cac;
begin
  factura:= GetInvoice(XMLDocument1);
  factura.IssueDate.NodeValue:='2011-06-28';
  factura.AccountingSupplierParty.CustomerAssignedAccountID.NodeValue:= '20100113612';

  AccountID:= factura.AccountingSupplierParty.AdditionalAccountID.Add;
  AccountID.nodevalue:='6';

  PartyName:= factura.AccountingSupplierParty.Party.PartyName.Add;
  PartyName.Name.NodeValue:='K&G Laboratorios';

  //******

  unaLinea:= factura.InvoiceLine.Add;
  unalinea.id.NodeValue:=1;

  unaLinea.InvoicedQuantity.SetAttributeNS('unitCode','', 'BX');
  unaLinea.InvoicedQuantity.SetAttributeNS('unitCodeListID','', 'UN/ECE rec 20');
  unaLinea.InvoicedQuantity.SetAttributeNS('unitCodeListAgencyName','', 'United Nations Economic Commission forEurope');
  unaLinea.InvoicedQuantity.NodeValue:=2000;

  unaLinea.LineExtensionAmount.SetAttributeNS('currencyID','','PEN');
  unaLinea.LineExtensionAmount.NodeValue:= '43840.00';


  //*****

  memoxml.lines.Text:= XMLDocument1.XML.Text;

end;

Espero te sirva...

Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Facturación electrónica Perú SUNAT wilcg Internet 5 29-10-2018 18:46:01
Facturacion Electrónica México kapcomx Varios 3 15-09-2017 18:23:18
Qué se sabe de la facturación electrónica en Colombia ? rolandoj Varios 9 11-01-2017 22:30:58
facturacion electronica anubis Debates 5 09-11-2010 06:33:59
facturacion electronica pmfras Internet 1 04-11-2008 14:09:35


La franja horaria es GMT +2. Ahora son las 03:16:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi