Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como crear archivo .xml para cfd (https://www.clubdelphi.com/foros/showthread.php?t=71384)

richy08 16-12-2010 02:19:50

como crear archivo .xml para cfd
 
buenas noches compañeros he leido y leido, y veo codigos y mas codigos pero nada con el que pueda basarme para crear .xml ya cree mi cfdv2.pas pero creo funciones que no veo como utilizarlas :confused: vi un codigo con el cual podias insertar, eliminar nodos, pero era ya un .xml con datos, lo cual para la factura electronica no me serviria de ahi nacen estas cuestiones

1.- el archivo .xml debe de ser un archivo en blanco??

2.- como puedo posicionarme en un nodo para editar su cadena??

3.- y como uso el .xlst para saber si el .xml generado es correcto

esto es el codigo con el que he empezado a explorar los .xml desde delphi:D


Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Cliente, Nodo: IXMLNode;
begin
  XMLDocument1.LoadFromFile( ExtractFilePath( Application.ExeName ) + 'EjemploFactura.xml' );
  XMLDocument1.Active := True;
  Cliente := XMLDocument1.DocumentElement.AddChild( 'Cliente' );
  Cliente.Attributes['id'] := '3';
  Nodo := Cliente.AddChild( 'nombre' );
  Nodo.Text := 'PABLO PALAZON ALCOLEA';
  Nodo := Cliente.AddChild( 'nif' );
  Nodo.Text := '79469163E';
  Nodo := Cliente.AddChild( 'saldopte' );
  Nodo.Text := '0.00';
  Nodo := Cliente.AddChild( 'diaspago' );
  Nodo.Text := '15';
  XMLDocument1.SaveToFile( ExtractFilePath( Application.ExeName ) + 'clientes3.xml' );
end;
gracias por cualquier comentario

Delfino 16-12-2010 12:24:00

Yo uso el TJvSimpleXML de la libreria JVCL. Es muy sencillo y potente y hay ejemplo de su uso y se accede a elementos de manera directa..

richy08 16-12-2010 16:57:28

gracias delfino le voy a echar un vistazo saludos

gmontes 16-12-2010 17:38:07

pues yo baje el dcu NATIVEXML que es gratuito y listo :)

lo instalas y agregas el path de la libreria

Código:

var
  sruta, FicheroXML:string;
  ADoc: TNativeXml;

        //aqui los voy a guardar
      sruta:='c:\ssistema\reportes\xml\';


    //aqui tomamos los datos de la factura y demas
    //con la instruccion del sql, etc etc
    sDocumento:= DMSIU.cdsFac.FieldByName('documento').AsString;
 
    FicheroXML:=sruta+Trim(sDocumento);


      ADoc := TNativeXml.CreateName('comprobante');
        try
        // Add a subnode with name "Customer"
        with ADoc.Root.NodeNew('cliente') do
        begin
          // Add an attribute to this subnode
          // WriteAttributeInteger('ID', 123456);
          // Add subsubnode

        // puse el '1' para verificar que funcione y solo voy a cambiarlo por las variables de cada datos

          WriteString('cod_cte', '1');
          WriteString('razon_social', 'EMPRESA X');
          WriteString('rfc', '1');
          WriteString('calle','1');
          WriteString('num_exterior','1');
          WriteString('num_interior','1');
          WriteString('colonia','1');
          WriteString('cod_postal','1');
          WriteString('pobmunedo','1');
          WriteString('telefono','1');
          WriteString('municipio','1');
          WriteString('estado','1');
          WriteString('pais','1');
        end;
        with ADoc.Root.NodeNew('factura') do
        begin
          WriteString('folio', '1');
          WriteString('transaccion', '1');
          WriteString('fecha', '1');
          WriteString('plazo', '1');
          WriteString('cod_estab', '1');
          WriteString('importe', '1');
          WriteString('iva', '1');
          WriteString('descuento_porcentual', '1');
          WriteString('importe_descuento', '1');
          WriteString('iva_retenido', '1');
          WriteString('isr_retenido', '1');
          WriteString('total', '1');
          WriteString('ieps', '1');
          WriteString('costo', '1');
          WriteString('cantidad', '1');
          WriteString('vendedor', '1');
          WriteString('nom_vendedor', '1');
          WriteString('condicion_pago', '1');
          WriteString('notas', '1');
          WriteString('moneda', '1');
          WriteString('tipo_cambio', '1');
        end;
        //repetir por cada renglon de detalle
        with ADoc.Root.NodeNew('conceptos') do
        begin
          WriteString('cod_prod', '1');
          WriteString('descripcion_completa', '1');
          WriteString('comentario', '1');
          WriteString('cantidad', '1');
          WriteString('precio_lista', '1');
          WriteString('descuento_porcentual', '1');
          WriteString('importe_descuento', '1');
          WriteString('importe', '1');
          WriteString('iva', '1');
          WriteString('total', '1');
          WriteString('costo', '1');
          WriteString('porcentaje_iva', '1');
        end;

        // Save the XML in readable format (so with indents)
        ADoc.XmlFormat := xfReadable;
        // Save results to a file
        ADoc.SaveToFile(FicheroXML);
        finally
        ADoc.Free;

        end;


richy08 16-12-2010 17:49:02

gracias gmontes podrias indicarme de donde descargo el componente, pero aun sigo condudas para que sirve el .xsd que nos da hacienda

:confused:

AzidRain 16-12-2010 18:38:45

El xsd es el "schema" o "esquema" para armar la esctructura de tu xml. Un consejo, si no tienes mucho conocimiento de xml, cifrado y demás y no cuentas con algún tipo de biblioteca de componentes o código de las que ya andan por ahí mejor ni te metas ya en este rollo. Al menos en 15 días es bastante difícil lograr algo sin ayudas externas y menos aún desconociendo algunos temas. No mencionas si trabajas para alguna empresa en el depto de sistemas o bien en alguna casa de software.

richy08 16-12-2010 22:11:40

Cita:

Empezado por AzidRain (Mensaje 385176)
El xsd es el "schema" o "esquema" para armar la esctructura de tu xml. Un consejo, si no tienes mucho conocimiento de xml, cifrado y demás y no cuentas con algún tipo de biblioteca de componentes o código de las que ya andan por ahí mejor ni te metas ya en este rollo. Al menos en 15 días es bastante difícil lograr algo sin ayudas externas y menos aún desconociendo algunos temas. No mencionas si trabajas para alguna empresa en el depto de sistemas o bien en alguna casa de software.

hola azid rain pues si trabajo para una empresa en la cual se desarrolla software entre otras cosas, pero esta ves la implementacion es para le cotizador que yo mismo implemente para la empresa. lo del . xsd ya se que es la estructura del .xml pero lo que no se es como utilizarlo para generarlo desde delhpi, y si sitengo eperiencia con archivos .xml pero bajo php, y pues desgraciadamente ya estoy metido en esto por que soy el unico programador en la empresa ::eek: , y lo de la encriptacion pues no se ve tan dificil, espero poder sacrlo aunque ahorita ando metido en otros rollos mas urgentes asi es que a los 15 dias le tendre que descontar mas :D


saludos

AzidRain 16-12-2010 22:39:36

Changos richy!! No pues si que la tienes bastante pesada, queda muy poco tiempo ojalá y que no tengas problemas ahi cualquier cosa nos echas un cable y no creas que el cifrado es lo de menos,...es lo demás....

Teóricamente no necesitas el schema para generar el xml, únicamente para validarlo.

richy08 17-12-2010 00:09:05

Cita:

Empezado por AzidRain (Mensaje 385214)
Changos richy!! No pues si que la tienes bastante pesada, queda muy poco tiempo ojalá y que no tengas problemas ahi cualquier cosa nos echas un cable y no creas que el cifrado es lo de menos,...es lo demás....

Teóricamente no necesitas el schema para generar el xml, únicamente para validarlo.

a ok entonces el .xml lo formo yo :D y como lo valido??


La franja horaria es GMT +2. Ahora son las 12:27:28.

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