
{*********************************************************************************************************************************}
{                                                                                                                                 }
{                                                        XML Data Binding                                                         }
{                                                                                                                                 }
{         Generated on: 18/05/2012 06:55:35 p.m.                                                                                  }
{       Generated from: C:\Users\Desarrollo-2\Documents\Programas Edith\Nuevo desarrollo especial\FacturaElectronica\cfdv32.xsd   }
{   Settings stored in: C:\Users\Desarrollo-2\Documents\Programas Edith\Nuevo desarrollo especial\FacturaElectronica\cfdv32.xdb   }
{                                                                                                                                 }
{*********************************************************************************************************************************}

unit cfdv32;

interface

uses xmldom, XMLDoc, XMLIntf;

type

{ Forward Decls }

  IXMLComprobante = interface;
  IXMLEmisor = interface;
  IXMLT_UbicacionFiscal = interface;
  IXMLT_Ubicacion = interface;
  IXMLRegimenFiscal = interface;
  IXMLRegimenFiscalList = interface;
  IXMLReceptor = interface;
  IXMLConceptos = interface;
  IXMLConcepto = interface;
  IXMLT_InformacionAduanera = interface;
  IXMLT_InformacionAduaneraList = interface;
  IXMLCuentaPredial = interface;
  IXMLComplementoConcepto = interface;
  IXMLParte = interface;
  IXMLParteList = interface;
  IXMLImpuestos = interface;
  IXMLRetenciones = interface;
  IXMLRetencion = interface;
  IXMLTraslados = interface;
  IXMLTraslado = interface;
  IXMLComplemento = interface;
  IXMLAddenda = interface;

{ IXMLComprobante }

  IXMLComprobante = interface(IXMLNode)
    ['{50F30840-D071-4571-B170-0BD6F592746A}']
    { Property Accessors }
    function Get_Version: WideString;
    function Get_Serie: WideString;
    function Get_Folio: WideString;
    function Get_Fecha: WideString;
    function Get_Sello: WideString;
    function Get_FormaDePago: WideString;
    function Get_NoCertificado: WideString;
    function Get_Certificado: WideString;
    function Get_CondicionesDePago: WideString;
    function Get_SubTotal: WideString;
    function Get_Descuento: WideString;
    function Get_MotivoDescuento: WideString;
    function Get_TipoCambio: WideString;
    function Get_Moneda: WideString;
    function Get_Total: WideString;
    function Get_TipoDeComprobante: WideString;
    function Get_MetodoDePago: WideString;
    function Get_LugarExpedicion: WideString;
    function Get_NumCtaPago: WideString;
    function Get_FolioFiscalOrig: WideString;
    function Get_SerieFolioFiscalOrig: WideString;
    function Get_FechaFolioFiscalOrig: WideString;
    function Get_MontoFolioFiscalOrig: WideString;
    function Get_Emisor: IXMLEmisor;
    function Get_Receptor: IXMLReceptor;
    function Get_Conceptos: IXMLConceptos;
    function Get_Impuestos: IXMLImpuestos;
    function Get_Complemento: IXMLComplemento;
    function Get_Addenda: IXMLAddenda;
    procedure Set_Version(Value: WideString);
    procedure Set_Serie(Value: WideString);
    procedure Set_Folio(Value: WideString);
    procedure Set_Fecha(Value: WideString);
    procedure Set_Sello(Value: WideString);
    procedure Set_FormaDePago(Value: WideString);
    procedure Set_NoCertificado(Value: WideString);
    procedure Set_Certificado(Value: WideString);
    procedure Set_CondicionesDePago(Value: WideString);
    procedure Set_SubTotal(Value: WideString);
    procedure Set_Descuento(Value: WideString);
    procedure Set_MotivoDescuento(Value: WideString);
    procedure Set_TipoCambio(Value: WideString);
    procedure Set_Moneda(Value: WideString);
    procedure Set_Total(Value: WideString);
    procedure Set_TipoDeComprobante(Value: WideString);
    procedure Set_MetodoDePago(Value: WideString);
    procedure Set_LugarExpedicion(Value: WideString);
    procedure Set_NumCtaPago(Value: WideString);
    procedure Set_FolioFiscalOrig(Value: WideString);
    procedure Set_SerieFolioFiscalOrig(Value: WideString);
    procedure Set_FechaFolioFiscalOrig(Value: WideString);
    procedure Set_MontoFolioFiscalOrig(Value: WideString);
    { Methods & Properties }
    property Version: WideString read Get_Version write Set_Version;
    property Serie: WideString read Get_Serie write Set_Serie;
    property Folio: WideString read Get_Folio write Set_Folio;
    property Fecha: WideString read Get_Fecha write Set_Fecha;
    property Sello: WideString read Get_Sello write Set_Sello;
    property FormaDePago: WideString read Get_FormaDePago write Set_FormaDePago;
    property NoCertificado: WideString read Get_NoCertificado write Set_NoCertificado;
    property Certificado: WideString read Get_Certificado write Set_Certificado;
    property CondicionesDePago: WideString read Get_CondicionesDePago write Set_CondicionesDePago;
    property SubTotal: WideString read Get_SubTotal write Set_SubTotal;
    property Descuento: WideString read Get_Descuento write Set_Descuento;
    property MotivoDescuento: WideString read Get_MotivoDescuento write Set_MotivoDescuento;
    property TipoCambio: WideString read Get_TipoCambio write Set_TipoCambio;
    property Moneda: WideString read Get_Moneda write Set_Moneda;
    property Total: WideString read Get_Total write Set_Total;
    property TipoDeComprobante: WideString read Get_TipoDeComprobante write Set_TipoDeComprobante;
    property MetodoDePago: WideString read Get_MetodoDePago write Set_MetodoDePago;
    property LugarExpedicion: WideString read Get_LugarExpedicion write Set_LugarExpedicion;
    property NumCtaPago: WideString read Get_NumCtaPago write Set_NumCtaPago;
    property FolioFiscalOrig: WideString read Get_FolioFiscalOrig write Set_FolioFiscalOrig;
    property SerieFolioFiscalOrig: WideString read Get_SerieFolioFiscalOrig write Set_SerieFolioFiscalOrig;
    property FechaFolioFiscalOrig: WideString read Get_FechaFolioFiscalOrig write Set_FechaFolioFiscalOrig;
    property MontoFolioFiscalOrig: WideString read Get_MontoFolioFiscalOrig write Set_MontoFolioFiscalOrig;
    property Emisor: IXMLEmisor read Get_Emisor;
    property Receptor: IXMLReceptor read Get_Receptor;
    property Conceptos: IXMLConceptos read Get_Conceptos;
    property Impuestos: IXMLImpuestos read Get_Impuestos;
    property Complemento: IXMLComplemento read Get_Complemento;
    property Addenda: IXMLAddenda read Get_Addenda;
  end;

{ IXMLEmisor }

  IXMLEmisor = interface(IXMLNode)
    ['{D01382D0-E8D0-4FAB-BF29-27A0B2D6D8C1}']
    { Property Accessors }
    function Get_Rfc: WideString;
    function Get_Nombre: WideString;
    function Get_DomicilioFiscal: IXMLT_UbicacionFiscal;
    function Get_ExpedidoEn: IXMLT_Ubicacion;
    function Get_RegimenFiscal: IXMLRegimenFiscalList;
    procedure Set_Rfc(Value: WideString);
    procedure Set_Nombre(Value: WideString);
    { Methods & Properties }
    property Rfc: WideString read Get_Rfc write Set_Rfc;
    property Nombre: WideString read Get_Nombre write Set_Nombre;
    property DomicilioFiscal: IXMLT_UbicacionFiscal read Get_DomicilioFiscal;
    property ExpedidoEn: IXMLT_Ubicacion read Get_ExpedidoEn;
    property RegimenFiscal: IXMLRegimenFiscalList read Get_RegimenFiscal;
  end;

{ IXMLT_UbicacionFiscal }

  IXMLT_UbicacionFiscal = interface(IXMLNode)
    ['{F85D89C6-73F6-4357-9A5E-53EC9E5FCB74}']
    { Property Accessors }
    function Get_Calle: WideString;
    function Get_NoExterior: WideString;
    function Get_NoInterior: WideString;
    function Get_Colonia: WideString;
    function Get_Localidad: WideString;
    function Get_Referencia: WideString;
    function Get_Municipio: WideString;
    function Get_Estado: WideString;
    function Get_Pais: WideString;
    function Get_CodigoPostal: WideString;
    procedure Set_Calle(Value: WideString);
    procedure Set_NoExterior(Value: WideString);
    procedure Set_NoInterior(Value: WideString);
    procedure Set_Colonia(Value: WideString);
    procedure Set_Localidad(Value: WideString);
    procedure Set_Referencia(Value: WideString);
    procedure Set_Municipio(Value: WideString);
    procedure Set_Estado(Value: WideString);
    procedure Set_Pais(Value: WideString);
    procedure Set_CodigoPostal(Value: WideString);
    { Methods & Properties }
    property Calle: WideString read Get_Calle write Set_Calle;
    property NoExterior: WideString read Get_NoExterior write Set_NoExterior;
    property NoInterior: WideString read Get_NoInterior write Set_NoInterior;
    property Colonia: WideString read Get_Colonia write Set_Colonia;
    property Localidad: WideString read Get_Localidad write Set_Localidad;
    property Referencia: WideString read Get_Referencia write Set_Referencia;
    property Municipio: WideString read Get_Municipio write Set_Municipio;
    property Estado: WideString read Get_Estado write Set_Estado;
    property Pais: WideString read Get_Pais write Set_Pais;
    property CodigoPostal: WideString read Get_CodigoPostal write Set_CodigoPostal;
  end;

{ IXMLT_Ubicacion }

  IXMLT_Ubicacion = interface(IXMLNode)
    ['{6B04D6AF-A6D4-415F-95E6-1EAFB8E744CB}']
    { Property Accessors }
    function Get_Calle: WideString;
    function Get_NoExterior: WideString;
    function Get_NoInterior: WideString;
    function Get_Colonia: WideString;
    function Get_Localidad: WideString;
    function Get_Referencia: WideString;
    function Get_Municipio: WideString;
    function Get_Estado: WideString;
    function Get_Pais: WideString;
    function Get_CodigoPostal: WideString;
    procedure Set_Calle(Value: WideString);
    procedure Set_NoExterior(Value: WideString);
    procedure Set_NoInterior(Value: WideString);
    procedure Set_Colonia(Value: WideString);
    procedure Set_Localidad(Value: WideString);
    procedure Set_Referencia(Value: WideString);
    procedure Set_Municipio(Value: WideString);
    procedure Set_Estado(Value: WideString);
    procedure Set_Pais(Value: WideString);
    procedure Set_CodigoPostal(Value: WideString);
    { Methods & Properties }
    property Calle: WideString read Get_Calle write Set_Calle;
    property NoExterior: WideString read Get_NoExterior write Set_NoExterior;
    property NoInterior: WideString read Get_NoInterior write Set_NoInterior;
    property Colonia: WideString read Get_Colonia write Set_Colonia;
    property Localidad: WideString read Get_Localidad write Set_Localidad;
    property Referencia: WideString read Get_Referencia write Set_Referencia;
    property Municipio: WideString read Get_Municipio write Set_Municipio;
    property Estado: WideString read Get_Estado write Set_Estado;
    property Pais: WideString read Get_Pais write Set_Pais;
    property CodigoPostal: WideString read Get_CodigoPostal write Set_CodigoPostal;
  end;

{ IXMLRegimenFiscal }

  IXMLRegimenFiscal = interface(IXMLNode)
    ['{1157ED25-10AC-4216-8C2C-F9C82EA83032}']
    { Property Accessors }
    function Get_Regimen: WideString;
    procedure Set_Regimen(Value: WideString);
    { Methods & Properties }
    property Regimen: WideString read Get_Regimen write Set_Regimen;
  end;

{ IXMLRegimenFiscalList }

  IXMLRegimenFiscalList = interface(IXMLNodeCollection)
    ['{BDF68329-5DDF-4387-9DA9-A7CAB1ED388F}']
    { Methods & Properties }
    function Add: IXMLRegimenFiscal;
    function Insert(const Index: Integer): IXMLRegimenFiscal;
    function Get_Item(Index: Integer): IXMLRegimenFiscal;
    property Items[Index: Integer]: IXMLRegimenFiscal read Get_Item; default;
  end;

{ IXMLReceptor }

  IXMLReceptor = interface(IXMLNode)
    ['{2E94BCF4-04C0-4EF3-9E1C-FC64D653364E}']
    { Property Accessors }
    function Get_Rfc: WideString;
    function Get_Nombre: WideString;
    function Get_Domicilio: IXMLT_Ubicacion;
    procedure Set_Rfc(Value: WideString);
    procedure Set_Nombre(Value: WideString);
    { Methods & Properties }
    property Rfc: WideString read Get_Rfc write Set_Rfc;
    property Nombre: WideString read Get_Nombre write Set_Nombre;
    property Domicilio: IXMLT_Ubicacion read Get_Domicilio;
  end;

{ IXMLConceptos }

  IXMLConceptos = interface(IXMLNodeCollection)
    ['{143713E8-6E92-473F-A537-4C6373B08A2D}']
    { Property Accessors }
    function Get_Concepto(Index: Integer): IXMLConcepto;
    { Methods & Properties }
    function Add: IXMLConcepto;
    function Insert(const Index: Integer): IXMLConcepto;
    property Concepto[Index: Integer]: IXMLConcepto read Get_Concepto; default;
  end;

{ IXMLConcepto }

  IXMLConcepto = interface(IXMLNode)
    ['{902BCCAA-46B5-42E6-A5A3-3BCC2DEA4276}']
    { Property Accessors }
    function Get_Cantidad: WideString;
    function Get_Unidad: WideString;
    function Get_NoIdentificacion: WideString;
    function Get_Descripcion: WideString;
    function Get_ValorUnitario: WideString;
    function Get_Importe: WideString;
    function Get_InformacionAduanera: IXMLT_InformacionAduaneraList;
    function Get_CuentaPredial: IXMLCuentaPredial;
    function Get_ComplementoConcepto: IXMLComplementoConcepto;
    function Get_Parte: IXMLParteList;
    procedure Set_Cantidad(Value: WideString);
    procedure Set_Unidad(Value: WideString);
    procedure Set_NoIdentificacion(Value: WideString);
    procedure Set_Descripcion(Value: WideString);
    procedure Set_ValorUnitario(Value: WideString);
    procedure Set_Importe(Value: WideString);
    { Methods & Properties }
    property Cantidad: WideString read Get_Cantidad write Set_Cantidad;
    property Unidad: WideString read Get_Unidad write Set_Unidad;
    property NoIdentificacion: WideString read Get_NoIdentificacion write Set_NoIdentificacion;
    property Descripcion: WideString read Get_Descripcion write Set_Descripcion;
    property ValorUnitario: WideString read Get_ValorUnitario write Set_ValorUnitario;
    property Importe: WideString read Get_Importe write Set_Importe;
    property InformacionAduanera: IXMLT_InformacionAduaneraList read Get_InformacionAduanera;
    property CuentaPredial: IXMLCuentaPredial read Get_CuentaPredial;
    property ComplementoConcepto: IXMLComplementoConcepto read Get_ComplementoConcepto;
    property Parte: IXMLParteList read Get_Parte;
  end;

{ IXMLT_InformacionAduanera }

  IXMLT_InformacionAduanera = interface(IXMLNode)
    ['{88D4C8C4-1BA9-4C35-88E3-17A92F3A92DD}']
    { Property Accessors }
    function Get_Numero: WideString;
    function Get_Fecha: WideString;
    function Get_Aduana: WideString;
    procedure Set_Numero(Value: WideString);
    procedure Set_Fecha(Value: WideString);
    procedure Set_Aduana(Value: WideString);
    { Methods & Properties }
    property Numero: WideString read Get_Numero write Set_Numero;
    property Fecha: WideString read Get_Fecha write Set_Fecha;
    property Aduana: WideString read Get_Aduana write Set_Aduana;
  end;

{ IXMLT_InformacionAduaneraList }

  IXMLT_InformacionAduaneraList = interface(IXMLNodeCollection)
    ['{97BC51F8-2A42-4102-9FF0-CF2FB96BA970}']
    { Methods & Properties }
    function Add: IXMLT_InformacionAduanera;
    function Insert(const Index: Integer): IXMLT_InformacionAduanera;
    function Get_Item(Index: Integer): IXMLT_InformacionAduanera;
    property Items[Index: Integer]: IXMLT_InformacionAduanera read Get_Item; default;
  end;

{ IXMLCuentaPredial }

  IXMLCuentaPredial = interface(IXMLNode)
    ['{434F3DB5-8AAF-4D03-B445-27FD9774ADF9}']
    { Property Accessors }
    function Get_Numero: WideString;
    procedure Set_Numero(Value: WideString);
    { Methods & Properties }
    property Numero: WideString read Get_Numero write Set_Numero;
  end;

{ IXMLComplementoConcepto }

  IXMLComplementoConcepto = interface(IXMLNode)
    ['{996D2980-86C1-458C-8074-4F5408083A88}']
  end;

{ IXMLParte }

  IXMLParte = interface(IXMLNodeCollection)
    ['{1D70BD1B-0B66-4D59-9930-674C6D209BCC}']
    { Property Accessors }
    function Get_Cantidad: WideString;
    function Get_Unidad: WideString;
    function Get_NoIdentificacion: WideString;
    function Get_Descripcion: WideString;
    function Get_ValorUnitario: WideString;
    function Get_Importe: WideString;
    function Get_InformacionAduanera(Index: Integer): IXMLT_InformacionAduanera;
    procedure Set_Cantidad(Value: WideString);
    procedure Set_Unidad(Value: WideString);
    procedure Set_NoIdentificacion(Value: WideString);
    procedure Set_Descripcion(Value: WideString);
    procedure Set_ValorUnitario(Value: WideString);
    procedure Set_Importe(Value: WideString);
    { Methods & Properties }
    function Add: IXMLT_InformacionAduanera;
    function Insert(const Index: Integer): IXMLT_InformacionAduanera;
    property Cantidad: WideString read Get_Cantidad write Set_Cantidad;
    property Unidad: WideString read Get_Unidad write Set_Unidad;
    property NoIdentificacion: WideString read Get_NoIdentificacion write Set_NoIdentificacion;
    property Descripcion: WideString read Get_Descripcion write Set_Descripcion;
    property ValorUnitario: WideString read Get_ValorUnitario write Set_ValorUnitario;
    property Importe: WideString read Get_Importe write Set_Importe;
    property InformacionAduanera[Index: Integer]: IXMLT_InformacionAduanera read Get_InformacionAduanera; default;
  end;

{ IXMLParteList }

  IXMLParteList = interface(IXMLNodeCollection)
    ['{5E1F65CB-1024-44A0-A1D8-67DA71581621}']
    { Methods & Properties }
    function Add: IXMLParte;
    function Insert(const Index: Integer): IXMLParte;
    function Get_Item(Index: Integer): IXMLParte;
    property Items[Index: Integer]: IXMLParte read Get_Item; default;
  end;

{ IXMLImpuestos }

  IXMLImpuestos = interface(IXMLNode)
    ['{0A45B017-16FE-48EB-9E7D-80576AF0F67E}']
    { Property Accessors }
    function Get_TotalImpuestosRetenidos: WideString;
    function Get_TotalImpuestosTrasladados: WideString;
    function Get_Retenciones: IXMLRetenciones;
    function Get_Traslados: IXMLTraslados;
    procedure Set_TotalImpuestosRetenidos(Value: WideString);
    procedure Set_TotalImpuestosTrasladados(Value: WideString);
    { Methods & Properties }
    property TotalImpuestosRetenidos: WideString read Get_TotalImpuestosRetenidos write Set_TotalImpuestosRetenidos;
    property TotalImpuestosTrasladados: WideString read Get_TotalImpuestosTrasladados write Set_TotalImpuestosTrasladados;
    property Retenciones: IXMLRetenciones read Get_Retenciones;
    property Traslados: IXMLTraslados read Get_Traslados;
  end;

{ IXMLRetenciones }

  IXMLRetenciones = interface(IXMLNodeCollection)
    ['{3EEBC5E0-EBAD-48FA-907F-7B4667A87C27}']
    { Property Accessors }
    function Get_Retencion(Index: Integer): IXMLRetencion;
    { Methods & Properties }
    function Add: IXMLRetencion;
    function Insert(const Index: Integer): IXMLRetencion;
    property Retencion[Index: Integer]: IXMLRetencion read Get_Retencion; default;
  end;

{ IXMLRetencion }

  IXMLRetencion = interface(IXMLNode)
    ['{17776B4D-4F40-4A3D-9488-D32A68CB0A2A}']
    { Property Accessors }
    function Get_Impuesto: WideString;
    function Get_Importe: WideString;
    procedure Set_Impuesto(Value: WideString);
    procedure Set_Importe(Value: WideString);
    { Methods & Properties }
    property Impuesto: WideString read Get_Impuesto write Set_Impuesto;
    property Importe: WideString read Get_Importe write Set_Importe;
  end;

{ IXMLTraslados }

  IXMLTraslados = interface(IXMLNodeCollection)
    ['{43039707-463B-4A27-8290-70183694CEB9}']
    { Property Accessors }
    function Get_Traslado(Index: Integer): IXMLTraslado;
    { Methods & Properties }
    function Add: IXMLTraslado;
    function Insert(const Index: Integer): IXMLTraslado;
    property Traslado[Index: Integer]: IXMLTraslado read Get_Traslado; default;
  end;

{ IXMLTraslado }

  IXMLTraslado = interface(IXMLNode)
    ['{B908D56F-4D1E-48FA-8B10-6075641748E2}']
    { Property Accessors }
    function Get_Impuesto: WideString;
    function Get_Tasa: WideString;
    function Get_Importe: WideString;
    procedure Set_Impuesto(Value: WideString);
    procedure Set_Tasa(Value: WideString);
    procedure Set_Importe(Value: WideString);
    { Methods & Properties }
    property Impuesto: WideString read Get_Impuesto write Set_Impuesto;
    property Tasa: WideString read Get_Tasa write Set_Tasa;
    property Importe: WideString read Get_Importe write Set_Importe;
  end;

{ IXMLComplemento }

  IXMLComplemento = interface(IXMLNode)
    ['{04F7171F-230E-4A1E-9168-473BF9909829}']
  end;

{ IXMLAddenda }

  IXMLAddenda = interface(IXMLNode)
    ['{9B53BD76-DFCF-449E-BF73-3E3F99649838}']
  end;

{ Forward Decls }

  TXMLComprobante = class;
  TXMLEmisor = class;
  TXMLT_UbicacionFiscal = class;
  TXMLT_Ubicacion = class;
  TXMLRegimenFiscal = class;
  TXMLRegimenFiscalList = class;
  TXMLReceptor = class;
  TXMLConceptos = class;
  TXMLConcepto = class;
  TXMLT_InformacionAduanera = class;
  TXMLT_InformacionAduaneraList = class;
  TXMLCuentaPredial = class;
  TXMLComplementoConcepto = class;
  TXMLParte = class;
  TXMLParteList = class;
  TXMLImpuestos = class;
  TXMLRetenciones = class;
  TXMLRetencion = class;
  TXMLTraslados = class;
  TXMLTraslado = class;
  TXMLComplemento = class;
  TXMLAddenda = class;

{ TXMLComprobante }

  TXMLComprobante = class(TXMLNode, IXMLComprobante)
  protected
    { IXMLComprobante }
    function Get_Version: WideString;
    function Get_Serie: WideString;
    function Get_Folio: WideString;
    function Get_Fecha: WideString;
    function Get_Sello: WideString;
    function Get_FormaDePago: WideString;
    function Get_NoCertificado: WideString;
    function Get_Certificado: WideString;
    function Get_CondicionesDePago: WideString;
    function Get_SubTotal: WideString;
    function Get_Descuento: WideString;
    function Get_MotivoDescuento: WideString;
    function Get_TipoCambio: WideString;
    function Get_Moneda: WideString;
    function Get_Total: WideString;
    function Get_TipoDeComprobante: WideString;
    function Get_MetodoDePago: WideString;
    function Get_LugarExpedicion: WideString;
    function Get_NumCtaPago: WideString;
    function Get_FolioFiscalOrig: WideString;
    function Get_SerieFolioFiscalOrig: WideString;
    function Get_FechaFolioFiscalOrig: WideString;
    function Get_MontoFolioFiscalOrig: WideString;
    function Get_Emisor: IXMLEmisor;
    function Get_Receptor: IXMLReceptor;
    function Get_Conceptos: IXMLConceptos;
    function Get_Impuestos: IXMLImpuestos;
    function Get_Complemento: IXMLComplemento;
    function Get_Addenda: IXMLAddenda;
    procedure Set_Version(Value: WideString);
    procedure Set_Serie(Value: WideString);
    procedure Set_Folio(Value: WideString);
    procedure Set_Fecha(Value: WideString);
    procedure Set_Sello(Value: WideString);
    procedure Set_FormaDePago(Value: WideString);
    procedure Set_NoCertificado(Value: WideString);
    procedure Set_Certificado(Value: WideString);
    procedure Set_CondicionesDePago(Value: WideString);
    procedure Set_SubTotal(Value: WideString);
    procedure Set_Descuento(Value: WideString);
    procedure Set_MotivoDescuento(Value: WideString);
    procedure Set_TipoCambio(Value: WideString);
    procedure Set_Moneda(Value: WideString);
    procedure Set_Total(Value: WideString);
    procedure Set_TipoDeComprobante(Value: WideString);
    procedure Set_MetodoDePago(Value: WideString);
    procedure Set_LugarExpedicion(Value: WideString);
    procedure Set_NumCtaPago(Value: WideString);
    procedure Set_FolioFiscalOrig(Value: WideString);
    procedure Set_SerieFolioFiscalOrig(Value: WideString);
    procedure Set_FechaFolioFiscalOrig(Value: WideString);
    procedure Set_MontoFolioFiscalOrig(Value: WideString);
  public
    procedure AfterConstruction; override;
  end;

{ TXMLEmisor }

  TXMLEmisor = class(TXMLNode, IXMLEmisor)
  private
    FRegimenFiscal: IXMLRegimenFiscalList;
  protected
    { IXMLEmisor }
    function Get_Rfc: WideString;
    function Get_Nombre: WideString;
    function Get_DomicilioFiscal: IXMLT_UbicacionFiscal;
    function Get_ExpedidoEn: IXMLT_Ubicacion;
    function Get_RegimenFiscal: IXMLRegimenFiscalList;
    procedure Set_Rfc(Value: WideString);
    procedure Set_Nombre(Value: WideString);
  public
    procedure AfterConstruction; override;
  end;

{ TXMLT_UbicacionFiscal }

  TXMLT_UbicacionFiscal = class(TXMLNode, IXMLT_UbicacionFiscal)
  protected
    { IXMLT_UbicacionFiscal }
    function Get_Calle: WideString;
    function Get_NoExterior: WideString;
    function Get_NoInterior: WideString;
    function Get_Colonia: WideString;
    function Get_Localidad: WideString;
    function Get_Referencia: WideString;
    function Get_Municipio: WideString;
    function Get_Estado: WideString;
    function Get_Pais: WideString;
    function Get_CodigoPostal: WideString;
    procedure Set_Calle(Value: WideString);
    procedure Set_NoExterior(Value: WideString);
    procedure Set_NoInterior(Value: WideString);
    procedure Set_Colonia(Value: WideString);
    procedure Set_Localidad(Value: WideString);
    procedure Set_Referencia(Value: WideString);
    procedure Set_Municipio(Value: WideString);
    procedure Set_Estado(Value: WideString);
    procedure Set_Pais(Value: WideString);
    procedure Set_CodigoPostal(Value: WideString);
  end;

{ TXMLT_Ubicacion }

  TXMLT_Ubicacion = class(TXMLNode, IXMLT_Ubicacion)
  protected
    { IXMLT_Ubicacion }
    function Get_Calle: WideString;
    function Get_NoExterior: WideString;
    function Get_NoInterior: WideString;
    function Get_Colonia: WideString;
    function Get_Localidad: WideString;
    function Get_Referencia: WideString;
    function Get_Municipio: WideString;
    function Get_Estado: WideString;
    function Get_Pais: WideString;
    function Get_CodigoPostal: WideString;
    procedure Set_Calle(Value: WideString);
    procedure Set_NoExterior(Value: WideString);
    procedure Set_NoInterior(Value: WideString);
    procedure Set_Colonia(Value: WideString);
    procedure Set_Localidad(Value: WideString);
    procedure Set_Referencia(Value: WideString);
    procedure Set_Municipio(Value: WideString);
    procedure Set_Estado(Value: WideString);
    procedure Set_Pais(Value: WideString);
    procedure Set_CodigoPostal(Value: WideString);
  end;

{ TXMLRegimenFiscal }

  TXMLRegimenFiscal = class(TXMLNode, IXMLRegimenFiscal)
  protected
    { IXMLRegimenFiscal }
    function Get_Regimen: WideString;
    procedure Set_Regimen(Value: WideString);
  end;

{ TXMLRegimenFiscalList }

  TXMLRegimenFiscalList = class(TXMLNodeCollection, IXMLRegimenFiscalList)
  protected
    { IXMLRegimenFiscalList }
    function Add: IXMLRegimenFiscal;
    function Insert(const Index: Integer): IXMLRegimenFiscal;
    function Get_Item(Index: Integer): IXMLRegimenFiscal;
  end;

{ TXMLReceptor }

  TXMLReceptor = class(TXMLNode, IXMLReceptor)
  protected
    { IXMLReceptor }
    function Get_Rfc: WideString;
    function Get_Nombre: WideString;
    function Get_Domicilio: IXMLT_Ubicacion;
    procedure Set_Rfc(Value: WideString);
    procedure Set_Nombre(Value: WideString);
  public
    procedure AfterConstruction; override;
  end;

{ TXMLConceptos }

  TXMLConceptos = class(TXMLNodeCollection, IXMLConceptos)
  protected
    { IXMLConceptos }
    function Get_Concepto(Index: Integer): IXMLConcepto;
    function Add: IXMLConcepto;
    function Insert(const Index: Integer): IXMLConcepto;
  public
    procedure AfterConstruction; override;
  end;

{ TXMLConcepto }

  TXMLConcepto = class(TXMLNode, IXMLConcepto)
  private
    FInformacionAduanera: IXMLT_InformacionAduaneraList;
    FParte: IXMLParteList;
  protected
    { IXMLConcepto }
    function Get_Cantidad: WideString;
    function Get_Unidad: WideString;
    function Get_NoIdentificacion: WideString;
    function Get_Descripcion: WideString;
    function Get_ValorUnitario: WideString;
    function Get_Importe: WideString;
    function Get_InformacionAduanera: IXMLT_InformacionAduaneraList;
    function Get_CuentaPredial: IXMLCuentaPredial;
    function Get_ComplementoConcepto: IXMLComplementoConcepto;
    function Get_Parte: IXMLParteList;
    procedure Set_Cantidad(Value: WideString);
    procedure Set_Unidad(Value: WideString);
    procedure Set_NoIdentificacion(Value: WideString);
    procedure Set_Descripcion(Value: WideString);
    procedure Set_ValorUnitario(Value: WideString);
    procedure Set_Importe(Value: WideString);
  public
    procedure AfterConstruction; override;
  end;

{ TXMLT_InformacionAduanera }

  TXMLT_InformacionAduanera = class(TXMLNode, IXMLT_InformacionAduanera)
  protected
    { IXMLT_InformacionAduanera }
    function Get_Numero: WideString;
    function Get_Fecha: WideString;
    function Get_Aduana: WideString;
    procedure Set_Numero(Value: WideString);
    procedure Set_Fecha(Value: WideString);
    procedure Set_Aduana(Value: WideString);
  end;

{ TXMLT_InformacionAduaneraList }

  TXMLT_InformacionAduaneraList = class(TXMLNodeCollection, IXMLT_InformacionAduaneraList)
  protected
    { IXMLT_InformacionAduaneraList }
    function Add: IXMLT_InformacionAduanera;
    function Insert(const Index: Integer): IXMLT_InformacionAduanera;
    function Get_Item(Index: Integer): IXMLT_InformacionAduanera;
  end;

{ TXMLCuentaPredial }

  TXMLCuentaPredial = class(TXMLNode, IXMLCuentaPredial)
  protected
    { IXMLCuentaPredial }
    function Get_Numero: WideString;
    procedure Set_Numero(Value: WideString);
  end;

{ TXMLComplementoConcepto }

  TXMLComplementoConcepto = class(TXMLNode, IXMLComplementoConcepto)
  protected
    { IXMLComplementoConcepto }
  end;

{ TXMLParte }

  TXMLParte = class(TXMLNodeCollection, IXMLParte)
  protected
    { IXMLParte }
    function Get_Cantidad: WideString;
    function Get_Unidad: WideString;
    function Get_NoIdentificacion: WideString;
    function Get_Descripcion: WideString;
    function Get_ValorUnitario: WideString;
    function Get_Importe: WideString;
    function Get_InformacionAduanera(Index: Integer): IXMLT_InformacionAduanera;
    procedure Set_Cantidad(Value: WideString);
    procedure Set_Unidad(Value: WideString);
    procedure Set_NoIdentificacion(Value: WideString);
    procedure Set_Descripcion(Value: WideString);
    procedure Set_ValorUnitario(Value: WideString);
    procedure Set_Importe(Value: WideString);
    function Add: IXMLT_InformacionAduanera;
    function Insert(const Index: Integer): IXMLT_InformacionAduanera;
  public
    procedure AfterConstruction; override;
  end;

{ TXMLParteList }

  TXMLParteList = class(TXMLNodeCollection, IXMLParteList)
  protected
    { IXMLParteList }
    function Add: IXMLParte;
    function Insert(const Index: Integer): IXMLParte;
    function Get_Item(Index: Integer): IXMLParte;
  end;

{ TXMLImpuestos }

  TXMLImpuestos = class(TXMLNode, IXMLImpuestos)
  protected
    { IXMLImpuestos }
    function Get_TotalImpuestosRetenidos: WideString;
    function Get_TotalImpuestosTrasladados: WideString;
    function Get_Retenciones: IXMLRetenciones;
    function Get_Traslados: IXMLTraslados;
    procedure Set_TotalImpuestosRetenidos(Value: WideString);
    procedure Set_TotalImpuestosTrasladados(Value: WideString);
  public
    procedure AfterConstruction; override;
  end;

{ TXMLRetenciones }

  TXMLRetenciones = class(TXMLNodeCollection, IXMLRetenciones)
  protected
    { IXMLRetenciones }
    function Get_Retencion(Index: Integer): IXMLRetencion;
    function Add: IXMLRetencion;
    function Insert(const Index: Integer): IXMLRetencion;
  public
    procedure AfterConstruction; override;
  end;

{ TXMLRetencion }

  TXMLRetencion = class(TXMLNode, IXMLRetencion)
  protected
    { IXMLRetencion }
    function Get_Impuesto: WideString;
    function Get_Importe: WideString;
    procedure Set_Impuesto(Value: WideString);
    procedure Set_Importe(Value: WideString);
  end;

{ TXMLTraslados }

  TXMLTraslados = class(TXMLNodeCollection, IXMLTraslados)
  protected
    { IXMLTraslados }
    function Get_Traslado(Index: Integer): IXMLTraslado;
    function Add: IXMLTraslado;
    function Insert(const Index: Integer): IXMLTraslado;
  public
    procedure AfterConstruction; override;
  end;

{ TXMLTraslado }

  TXMLTraslado = class(TXMLNode, IXMLTraslado)
  protected
    { IXMLTraslado }
    function Get_Impuesto: WideString;
    function Get_Tasa: WideString;
    function Get_Importe: WideString;
    procedure Set_Impuesto(Value: WideString);
    procedure Set_Tasa(Value: WideString);
    procedure Set_Importe(Value: WideString);
  end;

{ TXMLComplemento }

  TXMLComplemento = class(TXMLNode, IXMLComplemento)
  protected
    { IXMLComplemento }
  end;

{ TXMLAddenda }

  TXMLAddenda = class(TXMLNode, IXMLAddenda)
  protected
    { IXMLAddenda }
  end;

{ Global Functions }

function GetComprobante(Doc: IXMLDocument): IXMLComprobante;
function LoadComprobante(const FileName: WideString): IXMLComprobante;
function NewComprobante: IXMLComprobante;

const
  TargetNamespace = 'http://www.sat.gob.mx/cfd/3';

implementation

{ Global Functions }

function GetComprobante(Doc: IXMLDocument): IXMLComprobante;
begin
  Result := Doc.GetDocBinding('Comprobante', TXMLComprobante, TargetNamespace) as IXMLComprobante;
end;

function LoadComprobante(const FileName: WideString): IXMLComprobante;
begin
  Result := LoadXMLDocument(FileName).GetDocBinding('Comprobante', TXMLComprobante, TargetNamespace) as IXMLComprobante;
end;

function NewComprobante: IXMLComprobante;
begin
  Result := NewXMLDocument.GetDocBinding('Comprobante', TXMLComprobante, TargetNamespace) as IXMLComprobante;
end;

{ TXMLComprobante }

procedure TXMLComprobante.AfterConstruction;
begin
  RegisterChildNode('Emisor', TXMLEmisor);
  RegisterChildNode('Receptor', TXMLReceptor);
  RegisterChildNode('Conceptos', TXMLConceptos);
  RegisterChildNode('Impuestos', TXMLImpuestos);
  RegisterChildNode('Complemento', TXMLComplemento);
  RegisterChildNode('Addenda', TXMLAddenda);
  inherited;
end;

function TXMLComprobante.Get_Version: WideString;
begin
  Result := AttributeNodes['version'].Text;
end;

procedure TXMLComprobante.Set_Version(Value: WideString);
begin
  SetAttribute('version', Value);
end;

function TXMLComprobante.Get_Serie: WideString;
begin
  Result := AttributeNodes['serie'].Text;
end;

procedure TXMLComprobante.Set_Serie(Value: WideString);
begin
  SetAttribute('serie', Value);
end;

function TXMLComprobante.Get_Folio: WideString;
begin
  Result := AttributeNodes['folio'].Text;
end;

procedure TXMLComprobante.Set_Folio(Value: WideString);
begin
  SetAttribute('folio', Value);
end;

function TXMLComprobante.Get_Fecha: WideString;
begin
  Result := AttributeNodes['fecha'].Text;
end;

procedure TXMLComprobante.Set_Fecha(Value: WideString);
begin
  SetAttribute('fecha', Value);
end;

function TXMLComprobante.Get_Sello: WideString;
begin
  Result := AttributeNodes['sello'].Text;
end;

procedure TXMLComprobante.Set_Sello(Value: WideString);
begin
  SetAttribute('sello', Value);
end;

function TXMLComprobante.Get_FormaDePago: WideString;
begin
  Result := AttributeNodes['formaDePago'].Text;
end;

procedure TXMLComprobante.Set_FormaDePago(Value: WideString);
begin
  SetAttribute('formaDePago', Value);
end;

function TXMLComprobante.Get_NoCertificado: WideString;
begin
  Result := AttributeNodes['noCertificado'].Text;
end;

procedure TXMLComprobante.Set_NoCertificado(Value: WideString);
begin
  SetAttribute('noCertificado', Value);
end;

function TXMLComprobante.Get_Certificado: WideString;
begin
  Result := AttributeNodes['certificado'].Text;
end;

procedure TXMLComprobante.Set_Certificado(Value: WideString);
begin
  SetAttribute('certificado', Value);
end;

function TXMLComprobante.Get_CondicionesDePago: WideString;
begin
  Result := AttributeNodes['condicionesDePago'].Text;
end;

procedure TXMLComprobante.Set_CondicionesDePago(Value: WideString);
begin
  SetAttribute('condicionesDePago', Value);
end;

function TXMLComprobante.Get_SubTotal: WideString;
begin
  Result := AttributeNodes['subTotal'].Text;
end;

procedure TXMLComprobante.Set_SubTotal(Value: WideString);
begin
  SetAttribute('subTotal', Value);
end;

function TXMLComprobante.Get_Descuento: WideString;
begin
  Result := AttributeNodes['descuento'].Text;
end;

procedure TXMLComprobante.Set_Descuento(Value: WideString);
begin
  SetAttribute('descuento', Value);
end;

function TXMLComprobante.Get_MotivoDescuento: WideString;
begin
  Result := AttributeNodes['motivoDescuento'].Text;
end;

procedure TXMLComprobante.Set_MotivoDescuento(Value: WideString);
begin
  SetAttribute('motivoDescuento', Value);
end;

function TXMLComprobante.Get_TipoCambio: WideString;
begin
  Result := AttributeNodes['TipoCambio'].Text;
end;

procedure TXMLComprobante.Set_TipoCambio(Value: WideString);
begin
  SetAttribute('TipoCambio', Value);
end;

function TXMLComprobante.Get_Moneda: WideString;
begin
  Result := AttributeNodes['Moneda'].Text;
end;

procedure TXMLComprobante.Set_Moneda(Value: WideString);
begin
  SetAttribute('Moneda', Value);
end;

function TXMLComprobante.Get_Total: WideString;
begin
  Result := AttributeNodes['total'].Text;
end;

procedure TXMLComprobante.Set_Total(Value: WideString);
begin
  SetAttribute('total', Value);
end;

function TXMLComprobante.Get_TipoDeComprobante: WideString;
begin
  Result := AttributeNodes['tipoDeComprobante'].Text;
end;

procedure TXMLComprobante.Set_TipoDeComprobante(Value: WideString);
begin
  SetAttribute('tipoDeComprobante', Value);
end;

function TXMLComprobante.Get_MetodoDePago: WideString;
begin
  Result := AttributeNodes['metodoDePago'].Text;
end;

procedure TXMLComprobante.Set_MetodoDePago(Value: WideString);
begin
  SetAttribute('metodoDePago', Value);
end;

function TXMLComprobante.Get_LugarExpedicion: WideString;
begin
  Result := AttributeNodes['LugarExpedicion'].Text;
end;

procedure TXMLComprobante.Set_LugarExpedicion(Value: WideString);
begin
  SetAttribute('LugarExpedicion', Value);
end;

function TXMLComprobante.Get_NumCtaPago: WideString;
begin
  Result := AttributeNodes['NumCtaPago'].Text;
end;

procedure TXMLComprobante.Set_NumCtaPago(Value: WideString);
begin
  SetAttribute('NumCtaPago', Value);
end;

function TXMLComprobante.Get_FolioFiscalOrig: WideString;
begin
  Result := AttributeNodes['FolioFiscalOrig'].Text;
end;

procedure TXMLComprobante.Set_FolioFiscalOrig(Value: WideString);
begin
  SetAttribute('FolioFiscalOrig', Value);
end;

function TXMLComprobante.Get_SerieFolioFiscalOrig: WideString;
begin
  Result := AttributeNodes['SerieFolioFiscalOrig'].Text;
end;

procedure TXMLComprobante.Set_SerieFolioFiscalOrig(Value: WideString);
begin
  SetAttribute('SerieFolioFiscalOrig', Value);
end;

function TXMLComprobante.Get_FechaFolioFiscalOrig: WideString;
begin
  Result := AttributeNodes['FechaFolioFiscalOrig'].Text;
end;

procedure TXMLComprobante.Set_FechaFolioFiscalOrig(Value: WideString);
begin
  SetAttribute('FechaFolioFiscalOrig', Value);
end;

function TXMLComprobante.Get_MontoFolioFiscalOrig: WideString;
begin
  Result := AttributeNodes['MontoFolioFiscalOrig'].Text;
end;

procedure TXMLComprobante.Set_MontoFolioFiscalOrig(Value: WideString);
begin
  SetAttribute('MontoFolioFiscalOrig', Value);
end;

function TXMLComprobante.Get_Emisor: IXMLEmisor;
begin
  Result := ChildNodes['Emisor'] as IXMLEmisor;
end;

function TXMLComprobante.Get_Receptor: IXMLReceptor;
begin
  Result := ChildNodes['Receptor'] as IXMLReceptor;
end;

function TXMLComprobante.Get_Conceptos: IXMLConceptos;
begin
  Result := ChildNodes['Conceptos'] as IXMLConceptos;
end;

function TXMLComprobante.Get_Impuestos: IXMLImpuestos;
begin
  Result := ChildNodes['Impuestos'] as IXMLImpuestos;
end;

function TXMLComprobante.Get_Complemento: IXMLComplemento;
begin
  Result := ChildNodes['Complemento'] as IXMLComplemento;
end;

function TXMLComprobante.Get_Addenda: IXMLAddenda;
begin
  Result := ChildNodes['Addenda'] as IXMLAddenda;
end;

{ TXMLEmisor }

procedure TXMLEmisor.AfterConstruction;
begin
  RegisterChildNode('DomicilioFiscal', TXMLT_UbicacionFiscal);
  RegisterChildNode('ExpedidoEn', TXMLT_Ubicacion);
  RegisterChildNode('RegimenFiscal', TXMLRegimenFiscal);
  FRegimenFiscal := CreateCollection(TXMLRegimenFiscalList, IXMLRegimenFiscal, 'RegimenFiscal') as IXMLRegimenFiscalList;
  inherited;
end;

function TXMLEmisor.Get_Rfc: WideString;
begin
  Result := AttributeNodes['rfc'].Text;
end;

procedure TXMLEmisor.Set_Rfc(Value: WideString);
begin
  SetAttribute('rfc', Value);
end;

function TXMLEmisor.Get_Nombre: WideString;
begin
  Result := AttributeNodes['nombre'].Text;
end;

procedure TXMLEmisor.Set_Nombre(Value: WideString);
begin
  SetAttribute('nombre', Value);
end;

function TXMLEmisor.Get_DomicilioFiscal: IXMLT_UbicacionFiscal;
begin
  Result := ChildNodes['DomicilioFiscal'] as IXMLT_UbicacionFiscal;
end;

function TXMLEmisor.Get_ExpedidoEn: IXMLT_Ubicacion;
begin
  Result := ChildNodes['ExpedidoEn'] as IXMLT_Ubicacion;
end;

function TXMLEmisor.Get_RegimenFiscal: IXMLRegimenFiscalList;
begin
  Result := FRegimenFiscal;
end;

{ TXMLT_UbicacionFiscal }

function TXMLT_UbicacionFiscal.Get_Calle: WideString;
begin
  Result := AttributeNodes['calle'].Text;
end;

procedure TXMLT_UbicacionFiscal.Set_Calle(Value: WideString);
begin
  SetAttribute('calle', Value);
end;

function TXMLT_UbicacionFiscal.Get_NoExterior: WideString;
begin
  Result := AttributeNodes['noExterior'].Text;
end;

procedure TXMLT_UbicacionFiscal.Set_NoExterior(Value: WideString);
begin
  SetAttribute('noExterior', Value);
end;

function TXMLT_UbicacionFiscal.Get_NoInterior: WideString;
begin
  Result := AttributeNodes['noInterior'].Text;
end;

procedure TXMLT_UbicacionFiscal.Set_NoInterior(Value: WideString);
begin
  SetAttribute('noInterior', Value);
end;

function TXMLT_UbicacionFiscal.Get_Colonia: WideString;
begin
  Result := AttributeNodes['colonia'].Text;
end;

procedure TXMLT_UbicacionFiscal.Set_Colonia(Value: WideString);
begin
  SetAttribute('colonia', Value);
end;

function TXMLT_UbicacionFiscal.Get_Localidad: WideString;
begin
  Result := AttributeNodes['localidad'].Text;
end;

procedure TXMLT_UbicacionFiscal.Set_Localidad(Value: WideString);
begin
  SetAttribute('localidad', Value);
end;

function TXMLT_UbicacionFiscal.Get_Referencia: WideString;
begin
  Result := AttributeNodes['referencia'].Text;
end;

procedure TXMLT_UbicacionFiscal.Set_Referencia(Value: WideString);
begin
  SetAttribute('referencia', Value);
end;

function TXMLT_UbicacionFiscal.Get_Municipio: WideString;
begin
  Result := AttributeNodes['municipio'].Text;
end;

procedure TXMLT_UbicacionFiscal.Set_Municipio(Value: WideString);
begin
  SetAttribute('municipio', Value);
end;

function TXMLT_UbicacionFiscal.Get_Estado: WideString;
begin
  Result := AttributeNodes['estado'].Text;
end;

procedure TXMLT_UbicacionFiscal.Set_Estado(Value: WideString);
begin
  SetAttribute('estado', Value);
end;

function TXMLT_UbicacionFiscal.Get_Pais: WideString;
begin
  Result := AttributeNodes['pais'].Text;
end;

procedure TXMLT_UbicacionFiscal.Set_Pais(Value: WideString);
begin
  SetAttribute('pais', Value);
end;

function TXMLT_UbicacionFiscal.Get_CodigoPostal: WideString;
begin
  Result := AttributeNodes['codigoPostal'].Text;
end;

procedure TXMLT_UbicacionFiscal.Set_CodigoPostal(Value: WideString);
begin
  SetAttribute('codigoPostal', Value);
end;

{ TXMLT_Ubicacion }

function TXMLT_Ubicacion.Get_Calle: WideString;
begin
  Result := AttributeNodes['calle'].Text;
end;

procedure TXMLT_Ubicacion.Set_Calle(Value: WideString);
begin
  SetAttribute('calle', Value);
end;

function TXMLT_Ubicacion.Get_NoExterior: WideString;
begin
  Result := AttributeNodes['noExterior'].Text;
end;

procedure TXMLT_Ubicacion.Set_NoExterior(Value: WideString);
begin
  SetAttribute('noExterior', Value);
end;

function TXMLT_Ubicacion.Get_NoInterior: WideString;
begin
  Result := AttributeNodes['noInterior'].Text;
end;

procedure TXMLT_Ubicacion.Set_NoInterior(Value: WideString);
begin
  SetAttribute('noInterior', Value);
end;

function TXMLT_Ubicacion.Get_Colonia: WideString;
begin
  Result := AttributeNodes['colonia'].Text;
end;

procedure TXMLT_Ubicacion.Set_Colonia(Value: WideString);
begin
  SetAttribute('colonia', Value);
end;

function TXMLT_Ubicacion.Get_Localidad: WideString;
begin
  Result := AttributeNodes['localidad'].Text;
end;

procedure TXMLT_Ubicacion.Set_Localidad(Value: WideString);
begin
  SetAttribute('localidad', Value);
end;

function TXMLT_Ubicacion.Get_Referencia: WideString;
begin
  Result := AttributeNodes['referencia'].Text;
end;

procedure TXMLT_Ubicacion.Set_Referencia(Value: WideString);
begin
  SetAttribute('referencia', Value);
end;

function TXMLT_Ubicacion.Get_Municipio: WideString;
begin
  Result := AttributeNodes['municipio'].Text;
end;

procedure TXMLT_Ubicacion.Set_Municipio(Value: WideString);
begin
  SetAttribute('municipio', Value);
end;

function TXMLT_Ubicacion.Get_Estado: WideString;
begin
  Result := AttributeNodes['estado'].Text;
end;

procedure TXMLT_Ubicacion.Set_Estado(Value: WideString);
begin
  SetAttribute('estado', Value);
end;

function TXMLT_Ubicacion.Get_Pais: WideString;
begin
  Result := AttributeNodes['pais'].Text;
end;

procedure TXMLT_Ubicacion.Set_Pais(Value: WideString);
begin
  SetAttribute('pais', Value);
end;

function TXMLT_Ubicacion.Get_CodigoPostal: WideString;
begin
  Result := AttributeNodes['codigoPostal'].Text;
end;

procedure TXMLT_Ubicacion.Set_CodigoPostal(Value: WideString);
begin
  SetAttribute('codigoPostal', Value);
end;

{ TXMLRegimenFiscal }

function TXMLRegimenFiscal.Get_Regimen: WideString;
begin
  Result := AttributeNodes['Regimen'].Text;
end;

procedure TXMLRegimenFiscal.Set_Regimen(Value: WideString);
begin
  SetAttribute('Regimen', Value);
end;

{ TXMLRegimenFiscalList }

function TXMLRegimenFiscalList.Add: IXMLRegimenFiscal;
begin
  Result := AddItem(-1) as IXMLRegimenFiscal;
end;

function TXMLRegimenFiscalList.Insert(const Index: Integer): IXMLRegimenFiscal;
begin
  Result := AddItem(Index) as IXMLRegimenFiscal;
end;
function TXMLRegimenFiscalList.Get_Item(Index: Integer): IXMLRegimenFiscal;
begin
  Result := List[Index] as IXMLRegimenFiscal;
end;

{ TXMLReceptor }

procedure TXMLReceptor.AfterConstruction;
begin
  RegisterChildNode('Domicilio', TXMLT_Ubicacion);
  inherited;
end;

function TXMLReceptor.Get_Rfc: WideString;
begin
  Result := AttributeNodes['rfc'].Text;
end;

procedure TXMLReceptor.Set_Rfc(Value: WideString);
begin
  SetAttribute('rfc', Value);
end;

function TXMLReceptor.Get_Nombre: WideString;
begin
  Result := AttributeNodes['nombre'].Text;
end;

procedure TXMLReceptor.Set_Nombre(Value: WideString);
begin
  SetAttribute('nombre', Value);
end;

function TXMLReceptor.Get_Domicilio: IXMLT_Ubicacion;
begin
  Result := ChildNodes['Domicilio'] as IXMLT_Ubicacion;
end;

{ TXMLConceptos }

procedure TXMLConceptos.AfterConstruction;
begin
  RegisterChildNode('Concepto', TXMLConcepto);
  ItemTag := 'Concepto';
  ItemInterface := IXMLConcepto;
  inherited;
end;

function TXMLConceptos.Get_Concepto(Index: Integer): IXMLConcepto;
begin
  Result := List[Index] as IXMLConcepto;
end;

function TXMLConceptos.Add: IXMLConcepto;
begin
  Result := AddItem(-1) as IXMLConcepto;
end;

function TXMLConceptos.Insert(const Index: Integer): IXMLConcepto;
begin
  Result := AddItem(Index) as IXMLConcepto;
end;

{ TXMLConcepto }

procedure TXMLConcepto.AfterConstruction;
begin
  RegisterChildNode('InformacionAduanera', TXMLT_InformacionAduanera);
  RegisterChildNode('CuentaPredial', TXMLCuentaPredial);
  RegisterChildNode('ComplementoConcepto', TXMLComplementoConcepto);
  RegisterChildNode('Parte', TXMLParte);
  FInformacionAduanera := CreateCollection(TXMLT_InformacionAduaneraList, IXMLT_InformacionAduanera, 'InformacionAduanera') as IXMLT_InformacionAduaneraList;
  FParte := CreateCollection(TXMLParteList, IXMLParte, 'Parte') as IXMLParteList;
  inherited;
end;

function TXMLConcepto.Get_Cantidad: WideString;
begin
  Result := AttributeNodes['cantidad'].Text;
end;

procedure TXMLConcepto.Set_Cantidad(Value: WideString);
begin
  SetAttribute('cantidad', Value);
end;

function TXMLConcepto.Get_Unidad: WideString;
begin
  Result := AttributeNodes['unidad'].Text;
end;

procedure TXMLConcepto.Set_Unidad(Value: WideString);
begin
  SetAttribute('unidad', Value);
end;

function TXMLConcepto.Get_NoIdentificacion: WideString;
begin
  Result := AttributeNodes['noIdentificacion'].Text;
end;

procedure TXMLConcepto.Set_NoIdentificacion(Value: WideString);
begin
  SetAttribute('noIdentificacion', Value);
end;

function TXMLConcepto.Get_Descripcion: WideString;
begin
  Result := AttributeNodes['descripcion'].Text;
end;

procedure TXMLConcepto.Set_Descripcion(Value: WideString);
begin
  SetAttribute('descripcion', Value);
end;

function TXMLConcepto.Get_ValorUnitario: WideString;
begin
  Result := AttributeNodes['valorUnitario'].Text;
end;

procedure TXMLConcepto.Set_ValorUnitario(Value: WideString);
begin
  SetAttribute('valorUnitario', Value);
end;

function TXMLConcepto.Get_Importe: WideString;
begin
  Result := AttributeNodes['importe'].Text;
end;

procedure TXMLConcepto.Set_Importe(Value: WideString);
begin
  SetAttribute('importe', Value);
end;

function TXMLConcepto.Get_InformacionAduanera: IXMLT_InformacionAduaneraList;
begin
  Result := FInformacionAduanera;
end;

function TXMLConcepto.Get_CuentaPredial: IXMLCuentaPredial;
begin
  Result := ChildNodes['CuentaPredial'] as IXMLCuentaPredial;
end;

function TXMLConcepto.Get_ComplementoConcepto: IXMLComplementoConcepto;
begin
  Result := ChildNodes['ComplementoConcepto'] as IXMLComplementoConcepto;
end;

function TXMLConcepto.Get_Parte: IXMLParteList;
begin
  Result := FParte;
end;

{ TXMLT_InformacionAduanera }

function TXMLT_InformacionAduanera.Get_Numero: WideString;
begin
  Result := AttributeNodes['numero'].Text;
end;

procedure TXMLT_InformacionAduanera.Set_Numero(Value: WideString);
begin
  SetAttribute('numero', Value);
end;

function TXMLT_InformacionAduanera.Get_Fecha: WideString;
begin
  Result := AttributeNodes['fecha'].Text;
end;

procedure TXMLT_InformacionAduanera.Set_Fecha(Value: WideString);
begin
  SetAttribute('fecha', Value);
end;

function TXMLT_InformacionAduanera.Get_Aduana: WideString;
begin
  Result := AttributeNodes['aduana'].Text;
end;

procedure TXMLT_InformacionAduanera.Set_Aduana(Value: WideString);
begin
  SetAttribute('aduana', Value);
end;

{ TXMLT_InformacionAduaneraList }

function TXMLT_InformacionAduaneraList.Add: IXMLT_InformacionAduanera;
begin
  Result := AddItem(-1) as IXMLT_InformacionAduanera;
end;

function TXMLT_InformacionAduaneraList.Insert(const Index: Integer): IXMLT_InformacionAduanera;
begin
  Result := AddItem(Index) as IXMLT_InformacionAduanera;
end;
function TXMLT_InformacionAduaneraList.Get_Item(Index: Integer): IXMLT_InformacionAduanera;
begin
  Result := List[Index] as IXMLT_InformacionAduanera;
end;

{ TXMLCuentaPredial }

function TXMLCuentaPredial.Get_Numero: WideString;
begin
  Result := AttributeNodes['numero'].Text;
end;

procedure TXMLCuentaPredial.Set_Numero(Value: WideString);
begin
  SetAttribute('numero', Value);
end;

{ TXMLComplementoConcepto }

{ TXMLParte }

procedure TXMLParte.AfterConstruction;
begin
  RegisterChildNode('InformacionAduanera', TXMLT_InformacionAduanera);
  ItemTag := 'InformacionAduanera';
  ItemInterface := IXMLT_InformacionAduanera;
  inherited;
end;

function TXMLParte.Get_Cantidad: WideString;
begin
  Result := AttributeNodes['cantidad'].Text;
end;

procedure TXMLParte.Set_Cantidad(Value: WideString);
begin
  SetAttribute('cantidad', Value);
end;

function TXMLParte.Get_Unidad: WideString;
begin
  Result := AttributeNodes['unidad'].Text;
end;

procedure TXMLParte.Set_Unidad(Value: WideString);
begin
  SetAttribute('unidad', Value);
end;

function TXMLParte.Get_NoIdentificacion: WideString;
begin
  Result := AttributeNodes['noIdentificacion'].Text;
end;

procedure TXMLParte.Set_NoIdentificacion(Value: WideString);
begin
  SetAttribute('noIdentificacion', Value);
end;

function TXMLParte.Get_Descripcion: WideString;
begin
  Result := AttributeNodes['descripcion'].Text;
end;

procedure TXMLParte.Set_Descripcion(Value: WideString);
begin
  SetAttribute('descripcion', Value);
end;

function TXMLParte.Get_ValorUnitario: WideString;
begin
  Result := AttributeNodes['valorUnitario'].Text;
end;

procedure TXMLParte.Set_ValorUnitario(Value: WideString);
begin
  SetAttribute('valorUnitario', Value);
end;

function TXMLParte.Get_Importe: WideString;
begin
  Result := AttributeNodes['importe'].Text;
end;

procedure TXMLParte.Set_Importe(Value: WideString);
begin
  SetAttribute('importe', Value);
end;

function TXMLParte.Get_InformacionAduanera(Index: Integer): IXMLT_InformacionAduanera;
begin
  Result := List[Index] as IXMLT_InformacionAduanera;
end;

function TXMLParte.Add: IXMLT_InformacionAduanera;
begin
  Result := AddItem(-1) as IXMLT_InformacionAduanera;
end;

function TXMLParte.Insert(const Index: Integer): IXMLT_InformacionAduanera;
begin
  Result := AddItem(Index) as IXMLT_InformacionAduanera;
end;

{ TXMLParteList }

function TXMLParteList.Add: IXMLParte;
begin
  Result := AddItem(-1) as IXMLParte;
end;

function TXMLParteList.Insert(const Index: Integer): IXMLParte;
begin
  Result := AddItem(Index) as IXMLParte;
end;
function TXMLParteList.Get_Item(Index: Integer): IXMLParte;
begin
  Result := List[Index] as IXMLParte;
end;

{ TXMLImpuestos }

procedure TXMLImpuestos.AfterConstruction;
begin
  RegisterChildNode('Retenciones', TXMLRetenciones);
  RegisterChildNode('Traslados', TXMLTraslados);
  inherited;
end;

function TXMLImpuestos.Get_TotalImpuestosRetenidos: WideString;
begin
  Result := AttributeNodes['totalImpuestosRetenidos'].Text;
end;

procedure TXMLImpuestos.Set_TotalImpuestosRetenidos(Value: WideString);
begin
  SetAttribute('totalImpuestosRetenidos', Value);
end;

function TXMLImpuestos.Get_TotalImpuestosTrasladados: WideString;
begin
  Result := AttributeNodes['totalImpuestosTrasladados'].Text;
end;

procedure TXMLImpuestos.Set_TotalImpuestosTrasladados(Value: WideString);
begin
  SetAttribute('totalImpuestosTrasladados', Value);
end;

function TXMLImpuestos.Get_Retenciones: IXMLRetenciones;
begin
  Result := ChildNodes['Retenciones'] as IXMLRetenciones;
end;

function TXMLImpuestos.Get_Traslados: IXMLTraslados;
begin
  Result := ChildNodes['Traslados'] as IXMLTraslados;
end;

{ TXMLRetenciones }

procedure TXMLRetenciones.AfterConstruction;
begin
  RegisterChildNode('Retencion', TXMLRetencion);
  ItemTag := 'Retencion';
  ItemInterface := IXMLRetencion;
  inherited;
end;

function TXMLRetenciones.Get_Retencion(Index: Integer): IXMLRetencion;
begin
  Result := List[Index] as IXMLRetencion;
end;

function TXMLRetenciones.Add: IXMLRetencion;
begin
  Result := AddItem(-1) as IXMLRetencion;
end;

function TXMLRetenciones.Insert(const Index: Integer): IXMLRetencion;
begin
  Result := AddItem(Index) as IXMLRetencion;
end;

{ TXMLRetencion }

function TXMLRetencion.Get_Impuesto: WideString;
begin
  Result := AttributeNodes['impuesto'].Text;
end;

procedure TXMLRetencion.Set_Impuesto(Value: WideString);
begin
  SetAttribute('impuesto', Value);
end;

function TXMLRetencion.Get_Importe: WideString;
begin
  Result := AttributeNodes['importe'].Text;
end;

procedure TXMLRetencion.Set_Importe(Value: WideString);
begin
  SetAttribute('importe', Value);
end;

{ TXMLTraslados }

procedure TXMLTraslados.AfterConstruction;
begin
  RegisterChildNode('Traslado', TXMLTraslado);
  ItemTag := 'Traslado';
  ItemInterface := IXMLTraslado;
  inherited;
end;

function TXMLTraslados.Get_Traslado(Index: Integer): IXMLTraslado;
begin
  Result := List[Index] as IXMLTraslado;
end;

function TXMLTraslados.Add: IXMLTraslado;
begin
  Result := AddItem(-1) as IXMLTraslado;
end;

function TXMLTraslados.Insert(const Index: Integer): IXMLTraslado;
begin
  Result := AddItem(Index) as IXMLTraslado;
end;

{ TXMLTraslado }

function TXMLTraslado.Get_Impuesto: WideString;
begin
  Result := AttributeNodes['impuesto'].Text;
end;

procedure TXMLTraslado.Set_Impuesto(Value: WideString);
begin
  SetAttribute('impuesto', Value);
end;

function TXMLTraslado.Get_Tasa: WideString;
begin
  Result := AttributeNodes['tasa'].Text;
end;

procedure TXMLTraslado.Set_Tasa(Value: WideString);
begin
  SetAttribute('tasa', Value);
end;

function TXMLTraslado.Get_Importe: WideString;
begin
  Result := AttributeNodes['importe'].Text;
end;

procedure TXMLTraslado.Set_Importe(Value: WideString);
begin
  SetAttribute('importe', Value);
end;

{ TXMLComplemento }

{ TXMLAddenda }

end.