/* 16/07/2024
CLASSE PER GENERAR EL XML DE VERIFACTU.
=======================================
Classes per a crear el fitxer XML que serà enviat a VERI*FACTU.
En fase de desenvolupament 30/07/2024.
********************************************************
Model NÓMES per presentar registres d'ALTES de factures.
********************************************************
04/11/2024 adaptat a l'indicat per Hisenda.
Sembla que ja és operativa en aspectes bàsics. 13/08/2024
*/
#include "Hbxml.ch"
#include "Hbclass.ch"
#include "Fileio.ch"
CLASS TVeriFactu00
// Declaració de les DATA a on s'assignaran els valors a capturar.
// Totes les DATA es gestionaran en modus caràcter o objectes XML.
DATA oXmlTop
DATA oXmlSoapEnvelope
DATA oXmlRegFactuSistemaFacturacion
DATA oXmlCabecera
// Dades pel TAG Cabecera
//DATA cIDVersion
DATA oXmlObligadoEmision
// Dades pel TAG ObligadoEmision
DATA cObligadoEmision_NombreRazon
DATA cObligadoEmision_NIF
DATA oXmlRepresentante
// Dades pel TAG Representante
DATA cRepresentante_NombreRazon
DATA cRepresentante_NIF
DATA oXmlRemisionVoluntaria
// Dades pel TAG RemisionVoluntaria
DATA cFechaFinVeriFactu
DATA cIncidencia
DATA oXmlRemisionRequerimiento
// Dades pel TAG RemisionRequerimiento
DATA cRefRequerimiento
DATA cFinRequerimiento
DATA aRegistroFactura INIT {} // -- >> Fins a 1000
// DATA d'ús intern o que no contenen la informació a tractar.
DATA lError
// ACCESS a les DATA per tal de ser usades.
// De momento se aplica la conversión a UTF8, excepto a las huellas.
//ACCESS IDVersion INLINE ( hb_StrToUTF8( alltrim( ::cIDVersion ) ) )
ACCESS ObligadoEmision_NombreRazon INLINE ( hb_StrToUTF8( alltrim( ::cObligadoEmision_NombreRazon ) ) )
ACCESS ObligadoEmision_NIF INLINE ( hb_StrToUTF8( alltrim( ::cObligadoEmision_NIF ) ) )
ACCESS Representante_NombreRazon INLINE ( hb_StrToUTF8( alltrim( ::cRepresentante_NombreRazon ) ) )
ACCESS Representante_NIF INLINE ( hb_StrToUTF8( alltrim( ::cRepresentante_NIF ) ) )
//ACCESS FechaFinVeriFactu INLINE ( hb_StrToUTF8( alltrim( ::cFechaFinVeriFactu ) ) )
//ACCESS Incidencia INLINE ( hb_StrToUTF8( alltrim( ::cIncidencia ) ) )
ACCESS RefRequerimiento INLINE ( hb_StrToUTF8( alltrim( ::cRefRequerimiento ) ) )
ACCESS FinRequerimiento INLINE ( hb_StrToUTF8( alltrim( ::cFinRequerimiento ) ) )
// Métodes per gestionar la classe.
METHOD New() CONSTRUCTOR
METHOD ToXML() // Genera estructura XML con los datos.
METHOD GeneraXml( cFichero ) // Vuelca el XML a fichero.
// Añade datos de una factura para ser usados en el momento de generar XML.
METHOD AddFactura( oFactura ) INLINE ( AADD( ::aRegistroFactura, oFactura ) )
ENDCLASS
//---------------------------------------------------------------------------//
METHOD New() CLASS TVeriFactu00
::lError := .f.
Return ( self )
//---------------------------------------------------------------------------//
METHOD ToXML() CLASS TVeriFactu00
Local oXmlBody := Nil
Local nContador := 0
/*
Comienza el Nodo principal--------------------------------------------------
*/
//::oXmlTop := TXmlDocument():new( '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sum="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">' )
::oXmlTop := TXmlDocument():new( )
::oXmlTop:oRoot:AddBelow( TxmlNode():New( HBXML_TYPE_COMMENT, , , "Primeres proves..." ) )
::oXmlTop:oRoot:AddBelow( TxmlNode():New( HBXML_TYPE_COMMENT, , , "Date: " + DToC( Date() ) + " Time: " + Time() ) )
::oXmlTop:oRoot:AddBelow( TxmlNode():New( HBXML_TYPE_COMMENT, , , "Last access: " + GetEnv( "USERNAME" ) ) )
::oXmlSoapEnvelope := TxmlNode():New( HBXML_TYPE_TAG, "soapenv:Envelope" )
::oXmlTop:oRoot:AddBelow( ::oXmlSoapEnvelope )
::oXmlSoapEnvelope:SetAttribute( "xmlns:soapenv", "http://schemas.xmlsoap.org/soap/envelope/" )
::oXmlSoapEnvelope:SetAttribute( "xmlns:sum", "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" )
::oXmlSoapEnvelope:SetAttribute( "xmlns:sum1", "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd" )
::oXmlSoapEnvelope:SetAttribute( "xmlns:xd", "http://www.w3.org/2000/09/xmldsig#" )
//::oXmlTop:oRoot:AddBelow( ::oXmlSoapEnvelope )
::oXmlSoapEnvelope:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, "soapenv:Header" ) )
oXmlBody := TxmlNode():New( HBXML_TYPE_TAG, "soapenv:Body" )
::oXmlSoapEnvelope:AddBelow( oXmlBody )
/*
Comienza el Nodo RegFactuSistemaFacturacion--------------------------------------------------
*/
::oXmlRegFactuSistemaFacturacion := TxmlNode():New( HBXML_TYPE_TAG, "sum:RegFactuSistemaFacturacion" )
oXmlBody:AddBelow( ::oXmlRegFactuSistemaFacturacion )
/*
Comienza el Nodo Cabecera--------------------------------------------------
*/
::oXmlCabecera := TxmlNode():New( HBXML_TYPE_TAG, "sum:Cabecera" )
::oXmlRegFactuSistemaFacturacion:AddBelow( ::oXmlCabecera )
//::oXmlCabecera:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'IDVersion', , ::cIDVersion ) )
::oXmlObligadoEmision := TxmlNode():New( HBXML_TYPE_TAG, "sum1:ObligadoEmision" )
::oXmlCabecera:AddBelow( ::oXmlObligadoEmision )
::oXmlObligadoEmision:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NombreRazon', , ::ObligadoEmision_NombreRazon() ) )
::oXmlObligadoEmision:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NIF', , ::ObligadoEmision_NIF() ) )
If .Not. Empty( ::cRepresentante_NombreRazon )
::oXmlRepresentante := TxmlNode():New( HBXML_TYPE_TAG, "sum1:Representante" )
::oXmlCabecera:AddBelow( ::oXmlRepresentante )
::oXmlRepresentante:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NombreRazon', , ::Representante_NombreRazon() ) )
::oXmlRepresentante:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NIF', , ::Representante_NIF() ) )
EndIf
//::oXmlCabecera:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'TipoRegistroAEAT', , ::cTipoRegistroAEAT ) )
If .Not. Empty( ::cFechaFinVeriFactu ) .or. .Not. Empty( ::cIncidencia )
::oXmlRemisionVoluntaria := TxmlNode():New( HBXML_TYPE_TAG, 'RemisionVoluntaria' )
::oXmlCabecera:AddBelow( ::oXmlRemisionVoluntaria )
If .Not. Empty( ::cFechaFinVeriFactu )
::oXmlRemisionVoluntaria:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'FechaFinVeriFactu', , ::cFechaFinVeriFactu ) )
EndIf
If .Not. Empty( ::cIncidencia )
::oXmlRemisionVoluntaria:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'Incidencia', , ::cIncidencia ) )
EndIf
EndIf
If .Not. Empty( ::cRefRequerimiento )
::oXmlRemisionRequerimiento := TxmlNode():New( HBXML_TYPE_TAG, 'RemisionRequerimiento' )
::oXmlCabecera:AddBelow( ::oXmlRemisionRequerimiento )
::oXmlRemisionRequerimiento:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'RefRequerimiento', , ::RefRequerimiento() ) )
If .Not. Empty( ::cFinRequerimiento )
::oXmlRemisionRequerimiento:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'FinRequerimiento', , ::FinRequerimiento() ) )
EndIf
EndIf
/*
Comienza el Nodo RegistroFactura--------------------------------------------------
*/
For nContador := 1 To Len( ::aRegistroFactura )
::oXmlRegFactuSistemaFacturacion:AddBelow( ::aRegistroFactura[nContador]:ToXML() )
End
Return ( Self )
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
METHOD GeneraXML( cFichero ) CLASS TVeriFactu00
Local hDC := 0
/*
Generar fisicamente el fichero----------------------------------------------
*/
//oBlock := ErrorBlock( {| oError | ApoloBreak( oError ) } )
BEGIN SEQUENCE
ferase( cFichero )
hDC := fCreate( cFichero )
if hDC < 0
hDC := 0
endif
::oXmlTop:Write( hDC, HBXML_STYLE_INDENT + HBXML_STYLE_THREESPACES )
fClose( hDC )
hDC := 0
RECOVER // USING oError
::lError := .t.
END SEQUENCE
//ErrorBlock( oBlock )
// GoWeb( AllTrim( cFichero ) )
Return ( Self )
/* ***************************************************************************** */
/* ***************************************************************************** */
/* ***************************************************************************** */
CLASS RegistroFactura
// Declaració de les DATA a on s'assignaran els valors a capturar.
// Totes les DATA es gestionaran en modus caràcter o objectes XML.
//DATA oXmlRegistroFactura
// Dades pel TAG oXmlRegistroFactura
//DATA oXmlRegistroAlta
// Dades pel TAG RegistroAlta
DATA cIDVersion
//DATA oXmlIDFactura
// Dades pel TAG IDFactura
DATA cIDEmisorFactura
DATA cNumSerieFactura
DATA cFechaExpedicionFactura
DATA cRefExterna
DATA cNombreRazonEmisor
DATA cSubsanacion
DATA cRechazoPrevio
//DATA cTipoRegistroSIF
DATA cTipoFactura
DATA cTipoRectificativa
//DATA oXmlFacturasRectificadas
// Dades pel TAG FacturasRectificadas
DATA aIDFacturaRectificada INIT {} // -- >> Fins a 1000
//DATA oXmlFacturasSustituidas
// Dades pel TAG FacturasSustituidas
DATA aIDFacturaSustituida INIT {} // -- >> Fins a 1000
//DATA oXmlImporteRectificacion
// Dades pel TAG ImporteRectificacion
DATA cBaseRectificada
DATA cCuotaRectificada
DATA cCuotaRecargoRectificado
DATA cFechaOperacion
DATA cDescripcionOperacion
DATA cFacturaSimplificadaArt7273
DATA cFacturaSinIdentifDestinatarioArt61d
DATA cMacrodato
DATA cEmitidaPorTercerosODestinatario
//DATA oXmlTercero
// Dades pel TAG Tercero
DATA cTercero_NombreRazon
DATA cTercero_NIF
//DATA oXmlTercero_IDOtro
// Dades pel TAG IDOtro
DATA cTercero_IDOtro_CodigoPais
DATA cTercero_IDOtro_IDType
DATA cTercero_IDOtro_ID
//DATA oXmlDestinatarios
// Dades pel TAG Destinatarios
DATA aIDDestinatario INIT {} // -- >> Fins a 1000
DATA cCupon
//DATA oXmlDesglose
// Dades pel TAG Desglose
DATA aDetalleDesglose INIT {} // -- >> Fins a 12
DATA cCuotaTotal
DATA cImporteTotal
//DATA oXmlEncadenamiento
// Dades pel TAG Encadenamiento
DATA cPrimerRegistro
//DATA oXmlIRegistroAnterior
// Dades pel TAG IDRegistroAnterior
DATA cIDEmisorFacturaRegistroAnterior
DATA cNumSerieFacturaRegistroAnterior
DATA cFechaExpedicionFacturaRegistroAnterior
DATA cHuellaRegistroAnterior
//DATA oXmlSistemaInformatico
// Dades pel TAG SistemaInformatico
DATA cSistemaInformatico_NombreRazon
DATA cSistemaInformatico_NIF
//DATA oXmlSistemaInformatico_IDOtro
// Dades pel TAG IDOtro
DATA cSistemaInformatico_IDOtro_CodigoPais
DATA cSistemaInformatico_IDOtro_IDType
DATA cSistemaInformatico_IDOtro_ID
DATA cNombreSistemaInformatico
DATA cIdSistemaInformatico
DATA cVersion
DATA cNumeroInstalacion
DATA cTipoUsoPosibleSoloVerifactu
DATA cTipoUsoPosibleMultiOT
DATA cIndicadorMultiplesOT
//DATA cNumeroOTAlta
DATA cFechaHoraHusoGenRegistro
//DATA cFechaGenRegistro
//DATA cHoraGenRegistro
//DATA cHusoHorarioGenRegistro
DATA cNumRegistroAcuerdoFacturacion
DATA cIdAcuerdoSistemaInformatico
//DATA oXmlDatosControl
// Dades pel TAG DatosControl
DATA cTipoHuella
DATA cHuella
DATA cSignature
// ACCESS a les DATA per tal de ser usades.
// De momento se aplica la conversión a UTF8, excepto a las huellas.
ACCESS IDVersion INLINE ( hb_StrToUTF8( alltrim( ::cIDVersion ) ) )
ACCESS IDEmisorFactura INLINE ( hb_StrToUTF8( alltrim( ::cIDEmisorFactura ) ) )
ACCESS NumSerieFactura INLINE ( hb_StrToUTF8( alltrim( ::cNumSerieFactura ) ) )
ACCESS FechaExpedicionFactura INLINE ( hb_StrToUTF8( alltrim( ::cFechaExpedicionFactura ) ) )
ACCESS RefExterna INLINE ( hb_StrToUTF8( alltrim( ::cRefExterna ) ) )
ACCESS NombreRazonEmisor INLINE ( hb_StrToUTF8( alltrim( ::cNombreRazonEmisor ) ) )
ACCESS Subsanacion INLINE ( hb_StrToUTF8( alltrim( ::cSubsanacion ) ) )
ACCESS RechazoPrevio INLINE ( hb_StrToUTF8( alltrim( ::cRechazoPrevio ) ) )
//ACCESS TipoRegistroSIF INLINE ( hb_StrToUTF8( alltrim( ::cTipoRegistroSIF ) ) )
ACCESS TipoFactura INLINE ( hb_StrToUTF8( alltrim( ::cTipoFactura ) ) )
ACCESS TipoRectificativa INLINE ( hb_StrToUTF8( alltrim( ::cTipoRectificativa ) ) )
ACCESS BaseRectificada INLINE ( hb_StrToUTF8( alltrim( ::cBaseRectificada ) ) )
ACCESS CuotaRectificada INLINE ( hb_StrToUTF8( alltrim( ::cCuotaRectificada ) ) )
ACCESS CuotaRecargoRectificado INLINE ( hb_StrToUTF8( alltrim( ::cCuotaRecargoRectificado ) ) )
ACCESS FechaOperacion INLINE ( hb_StrToUTF8( alltrim( ::cFechaOperacion ) ) )
ACCESS DescripcionOperacion INLINE ( hb_StrToUTF8( alltrim( ::cDescripcionOperacion ) ) )
ACCESS FacturaSimplificadaArt7273 INLINE ( hb_StrToUTF8( alltrim( ::cFacturaSimplificadaArt7273 ) ) )
ACCESS FacturaSinIdentifDestinatarioArt61d INLINE ( hb_StrToUTF8( alltrim( ::cFacturaSinIdentifDestinatarioArt61d ) ) )
ACCESS Macrodato INLINE ( hb_StrToUTF8( alltrim( ::cMacrodato ) ) )
ACCESS EmitidaPorTercerosODestinatario INLINE ( hb_StrToUTF8( alltrim( ::cEmitidaPorTercerosODestinatario ) ) )
ACCESS Tercero_NombreRazon INLINE ( hb_StrToUTF8( alltrim( ::cTercero_NombreRazon ) ) )
ACCESS Tercero_NIF INLINE ( hb_StrToUTF8( alltrim( ::cTercero_NIF ) ) )
ACCESS Tercero_IDOtro_CodigoPais INLINE ( hb_StrToUTF8( alltrim( ::cTercero_IDOtro_CodigoPais ) ) )
ACCESS Tercero_IDOtro_IDType INLINE ( hb_StrToUTF8( alltrim( ::cTercero_IDOtro_IDType ) ) )
ACCESS Tercero_IDOtro_ID INLINE ( hb_StrToUTF8( alltrim( ::cTercero_IDOtro_ID ) ) )
ACCESS Cupon INLINE ( hb_StrToUTF8( alltrim( ::cCupon ) ) )
ACCESS CuotaTotal INLINE ( hb_StrToUTF8( alltrim( ::cCuotaTotal ) ) )
ACCESS ImporteTotal INLINE ( hb_StrToUTF8( alltrim( ::cImporteTotal ) ) )
ACCESS PrimerRegistro INLINE ( hb_StrToUTF8( alltrim( ::cPrimerRegistro ) ) )
ACCESS IDEmisorFacturaRegistroAnterior INLINE ( hb_StrToUTF8( alltrim( ::cIDEmisorFacturaRegistroAnterior ) ) )
ACCESS NumSerieFacturaRegistroAnterior INLINE ( hb_StrToUTF8( alltrim( ::cNumSerieFacturaRegistroAnterior ) ) )
ACCESS FechaExpedicionFacturaRegistroAnterior INLINE ( hb_StrToUTF8( alltrim( ::cFechaExpedicionFacturaRegistroAnterior ) ) )
ACCESS HuellaRegistroAnterior INLINE ( alltrim( ::cHuellaRegistroAnterior ) )
ACCESS SistemaInformatico_NombreRazon INLINE ( hb_StrToUTF8( alltrim( ::cSistemaInformatico_NombreRazon ) ) )
ACCESS SistemaInformatico_NIF INLINE ( hb_StrToUTF8( alltrim( ::cSistemaInformatico_NIF ) ) )
ACCESS SistemaInformatico_IDOtro_CodigoPais INLINE ( hb_StrToUTF8( alltrim( ::cSistemaInformatico_IDOtro_CodigoPais ) ) )
ACCESS SistemaInformatico_IDOtro_IDType INLINE ( hb_StrToUTF8( alltrim( ::cSistemaInformatico_IDOtro_IDType ) ) )
ACCESS SistemaInformatico_IDOtro_ID INLINE ( hb_StrToUTF8( alltrim( ::cSistemaInformatico_IDOtro_ID ) ) )
ACCESS NombreSistemaInformatico INLINE ( hb_StrToUTF8( alltrim( ::cNombreSistemaInformatico ) ) )
ACCESS IdSistemaInformatico INLINE ( hb_StrToUTF8( alltrim( ::cIdSistemaInformatico ) ) )
ACCESS Version INLINE ( hb_StrToUTF8( alltrim( ::cVersion ) ) )
ACCESS NumeroInstalacion INLINE ( hb_StrToUTF8( alltrim( ::cNumeroInstalacion ) ) )
ACCESS TipoUsoPosibleSoloVerifactu INLINE ( hb_StrToUTF8( alltrim( ::cTipoUsoPosibleSoloVerifactu ) ) )
ACCESS TipoUsoPosibleMultiOT INLINE ( hb_StrToUTF8( alltrim( ::cTipoUsoPosibleMultiOT ) ) )
ACCESS IndicadorMultiplesOT INLINE ( hb_StrToUTF8( alltrim( ::cIndicadorMultiplesOT ) ) )
//ACCESS NumeroOTAlta INLINE ( hb_StrToUTF8( alltrim( ::cNumeroOTAlta ) ) )
ACCESS FechaHoraHusoGenRegistro INLINE ( hb_StrToUTF8( alltrim( ::cFechaHoraHusoGenRegistro ) ) )
//ACCESS HoraGenRegistro INLINE ( hb_StrToUTF8( alltrim( ::cHoraGenRegistro ) ) )
//ACCESS HusoHorarioGenRegistro INLINE ( hb_StrToUTF8( alltrim( ::cHusoHorarioGenRegistro ) ) )
ACCESS NumRegistroAcuerdoFacturacion INLINE ( hb_StrToUTF8( alltrim( ::cNumRegistroAcuerdoFacturacion ) ) )
ACCESS IdAcuerdoSistemaInformatico INLINE ( hb_StrToUTF8( alltrim( ::cIdAcuerdoSistemaInformatico ) ) )
ACCESS TipoHuella INLINE ( hb_StrToUTF8( alltrim( ::cTipoHuella ) ) )
ACCESS Huella INLINE ( alltrim( ::cHuella ) )
ACCESS Signature INLINE ( hb_StrToUTF8( alltrim( ::cSignature ) ) )
// Métodes per gestionar la classe.
METHOD New() CONSTRUCTOR
METHOD ToXML() // Genera estructura XML con los datos.
// Guardan grupos de DATA repetitivos.
METHOD AddFacturaRectificada( oFacturaRectificada ) INLINE ( AADD( ::aIDFacturaRectificada, oFacturaRectificada ) )
METHOD AddFacturaSustituida( oFacturaSustituida ) INLINE ( AADD( ::aIDFacturaSustituida, oFacturaSustituida ) )
METHOD AddIDDestinatario( oIDDestinatario ) INLINE ( AADD( ::aIDDestinatario, oIDDestinatario ) )
METHOD AddaDetalleDesglose( oDetalleDesglose ) INLINE ( AADD( ::aDetalleDesglose, oDetalleDesglose ) )
ENDCLASS
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
METHOD New( ) CLASS RegistroFactura
Return ( self )
//---------------------------------------------------------------------------//
METHOD ToXML() CLASS RegistroFactura
Local oXmlRegistroFactura
Local oXmlRegistroAlta
Local oXmlIDFactura
Local oXmlFacturasRectificadas
Local oXmlFacturasSustituidas
Local oXmlImporteRectificacion
Local oXmlTercero
Local oXmlIDOtro
Local oXmlDestinatarios
Local oXmlDesglose
Local oXmlEncadenamiento
Local oXmlRegistroAnterior
//Local oXmlIDEmisorFacturaRegistroAnterior
Local oXmlSistemaInformatico
Local oXmlSistemaInformatico_IDOtro
//Local oXmlDatosControl
Local nContador := 0
oXmlRegistroFactura := TxmlNode():New( HBXML_TYPE_TAG, "sum:RegistroFactura" )
oXmlRegistroAlta := TxmlNode():New( HBXML_TYPE_TAG, "sum1:RegistroAlta" )
oXmlRegistroFactura:AddBelow( oXmlRegistroAlta )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:IDVersion', , ::IDVersion() ) )
// IDFactura
oXmlIDFactura := TxmlNode():New( HBXML_TYPE_TAG, "sum1:IDFactura" )
oXmlRegistroAlta:AddBelow( oXmlIDFactura )
oXmlIDFactura:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:IDEmisorFactura', , ::IDEmisorFactura() ) )
oXmlIDFactura:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NumSerieFactura', , ::NumSerieFactura() ) )
oXmlIDFactura:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:FechaExpedicionFactura', , ::FechaExpedicionFactura() ) )
If .Not. Empty( ::cRefExterna )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:RefExterna', , ::RefExterna() ) )
EndIf
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NombreRazonEmisor', , ::NombreRazonEmisor() ) )
If .Not. Empty( ::cSubsanacion )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:Subsanacion', , ::Subsanacion() ) )
EndIf
If .Not. Empty( ::cRechazoPrevio )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:RechazoPrevio', , ::RechazoPrevio() ) )
EndIf
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:TipoFactura', , ::TipoFactura() ) )
If .Not. Empty( ::cTipoRectificativa )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:TipoRectificativa', , ::TipoRectificativa() ) )
EndIf
// IDFacturaRectificada
If .Not. Empty( ::aIDFacturaRectificada )
oXmlFacturasRectificadas := TxmlNode():New( HBXML_TYPE_TAG, "sum1:FacturasRectificadas" )
oXmlRegistroAlta:AddBelow( oXmlFacturasRectificadas )
For nContador := 1 To Len( ::aIDFacturaRectificada )
oXmlFacturasRectificadas:AddBelow( ::aIDFacturaRectificada[nContador]:ToXML() )
End
EndIf
// IDFacturaSustituida
If .Not. Empty( ::aIDFacturaSustituida )
oXmlFacturasSustituidas := TxmlNode():New( HBXML_TYPE_TAG, "sum1:FacturasSustituidas" )
oXmlRegistroAlta:AddBelow( oXmlFacturasSustituidas )
For nContador := 1 To Len( ::aIDFacturaSustituida )
oXmlFacturasSustituidas:AddBelow( ::aIDFacturaSustituida[nContador]:ToXML() )
End
EndIf
// ImporteRectificacion
If .Not. Empty( ::cBaseRectificada )
oXmlImporteRectificacion := TxmlNode():New( HBXML_TYPE_TAG, "sum1:ImporteRectificacion" )
oXmlRegistroAlta:AddBelow( oXmlImporteRectificacion )
oXmlImporteRectificacion:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:BaseRectificada', , ::BaseRectificada() ) )
oXmlImporteRectificacion:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:CuotaRectificada', , ::CuotaRectificada() ) )
If .not. Empty( ::cCuotaRecargoRectificado )
oXmlImporteRectificacion:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:CuotaRecargoRectificado', , ::CuotaRecargoRectificado() ) )
EndIf
EndIf
If .not. Empty( ::cFechaOperacion )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:FechaOperacion', , ::FechaOperacion() ) )
EndIf
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:DescripcionOperacion', , ::DescripcionOperacion() ) )
If .not. Empty( ::cFacturaSimplificadaArt7273 )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:FacturaSimplificadaArt7273', , ::FacturaSimplificadaArt7273() ) )
EndIf
If .not. Empty( ::cFacturaSinIdentifDestinatarioArt61d )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:FacturaSinIdentifDestinatarioArt61d', , ::FacturaSinIdentifDestinatarioArt61d() ) )
EndIf
If .not. Empty( ::cMacrodato )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:Macrodato', , ::Macrodato() ) )
EndIf
// EmitidaPorTercerosODestinatario
If .not. Empty( ::cEmitidaPorTercerosODestinatario )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:EmitidaPorTercerosODestinatario', , ::EmitidaPorTercerosODestinatario() ) )
oXmlTercero := TxmlNode():New( HBXML_TYPE_TAG, "sum1:Tercero" )
oXmlRegistroAlta:AddBelow( oXmlTercero )
oXmlTercero:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NombreRazon', , ::Tercero_NombreRazon() ) )
If .Not. Empty( ::cTercero_NIF )
oXmlTercero:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NIF', , ::Tercero_NIF() ) )
EndIf
If .Not. Empty( ::cTercero_IDOtro_IDType )
oXmlIDOtro := TxmlNode():New( HBXML_TYPE_TAG, "sum1:IDOtro" )
oXmlTercero:AddBelow( oXmlIDOtro )
If .Not. Empty( ::cTercero_IDOtro_CodigoPais )
oXmlIDOtro:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:CodigoPais', , ::Tercero_IDOtro_CodigoPais() ) )
EndIf
oXmlIDOtro:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:IDType', , ::Tercero_IDOtro_IDType() ) )
oXmlIDOtro:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:ID', , ::Tercero_IDOtro_ID() ) )
EndIf
EndIf
// IDDestinatario
If .Not. Empty( ::aIDDestinatario )
oXmlDestinatarios := TxmlNode():New( HBXML_TYPE_TAG, "sum1:Destinatarios" )
oXmlRegistroAlta:AddBelow( oXmlDestinatarios )
For nContador := 1 To Len( ::aIDDestinatario )
oXmlDestinatarios:AddBelow( ::aIDDestinatario[nContador]:ToXML() )
End
EndIf
If .not. Empty( ::cCupon )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:Cupon', , ::Cupon() ) )
EndIf
// Desglose
oXmlDesglose := TxmlNode():New( HBXML_TYPE_TAG, "sum1:Desglose" )
oXmlRegistroAlta:AddBelow( oXmlDesglose )
For nContador := 1 To Len( ::aDetalleDesglose )
oXmlDesglose:AddBelow( ::aDetalleDesglose[nContador]:ToXML() )
End
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:CuotaTotal', , ::CuotaTotal() ) )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:ImporteTotal', , ::ImporteTotal() ) )
// Encadenamiento
oXmlEncadenamiento := TxmlNode():New( HBXML_TYPE_TAG, "sum1:Encadenamiento" )
oXmlRegistroAlta:AddBelow( oXmlEncadenamiento )
If .Not. Empty( ::cPrimerRegistro )
oXmlEncadenamiento:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:PrimerRegistro', , ::PrimerRegistro() ) )
EndIf
If .Not. Empty( ::cIDEmisorFacturaRegistroAnterior )
oXmlRegistroAnterior := TxmlNode():New( HBXML_TYPE_TAG, "sum1:RegistroAnterior" )
oXmlEncadenamiento:AddBelow( oXmlRegistroAnterior )
oXmlRegistroAnterior:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:IDEmisorFactura', , ::IDEmisorFacturaRegistroAnterior() ) )
oXmlRegistroAnterior:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NumSerieFactura', , ::NumSerieFacturaRegistroAnterior() ) )
oXmlRegistroAnterior:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:FechaExpedicionFactura', , ::FechaExpedicionFacturaRegistroAnterior() ) )
oXmlRegistroAnterior:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:Huella', , ::HuellaRegistroAnterior() ) )
EndIf
// SistemaInformatico
oXmlSistemaInformatico := TxmlNode():New( HBXML_TYPE_TAG, "sum1:SistemaInformatico" )
oXmlRegistroAlta:AddBelow( oXmlSistemaInformatico )
oXmlSistemaInformatico:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NombreRazon', , ::SistemaInformatico_NombreRazon() ) )
If .not. Empty( ::cSistemaInformatico_NIF )
oXmlSistemaInformatico:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NIF', , ::SistemaInformatico_NIF() ) )
EndIf
If .not. Empty( ::cSistemaInformatico_IDOtro_IDType )
oXmlSistemaInformatico_IDOtro := TxmlNode():New( HBXML_TYPE_TAG, "sum1:IDOtro" )
oXmlSistemaInformatico:AddBelow( oXmlSistemaInformatico_IDOtro )
If .not. Empty( ::cSistemaInformatico_IDOtro_CodigoPais )
oXmlSistemaInformatico_IDOtro:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:CodigoPais', , ::SistemaInformatico_IDOtro_CodigoPais() ) )
EndIf
oXmlSistemaInformatico_IDOtro:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:IDType', , ::SistemaInformatico_IDOtro_IDType() ) )
oXmlSistemaInformatico_IDOtro:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:ID', , ::SistemaInformatico_IDOtro_ID() ) )
EndIf
oXmlSistemaInformatico:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NombreSistemaInformatico', , ::NombreSistemaInformatico() ) )
oXmlSistemaInformatico:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:IdSistemaInformatico', , ::IdSistemaInformatico() ) )
oXmlSistemaInformatico:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:Version', , ::Version() ) )
oXmlSistemaInformatico:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NumeroInstalacion', , ::NumeroInstalacion() ) )
oXmlSistemaInformatico:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:TipoUsoPosibleSoloVerifactu', , ::TipoUsoPosibleSoloVerifactu() ) )
oXmlSistemaInformatico:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:TipoUsoPosibleMultiOT', , ::TipoUsoPosibleMultiOT() ) )
oXmlSistemaInformatico:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:IndicadorMultiplesOT', , ::IndicadorMultiplesOT() ) )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:FechaHoraHusoGenRegistro', , ::FechaHoraHusoGenRegistro() ) )
If .Not. Empty( ::cNumRegistroAcuerdoFacturacion )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NumRegistroAcuerdoFacturacion', , ::NumRegistroAcuerdoFacturacion() ) )
EndIf
If .Not. Empty( ::cIdAcuerdoSistemaInformatico )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:IdAcuerdoSistemaInformatico', , ::IdAcuerdoSistemaInformatico() ) )
EndIf
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:TipoHuella', , ::TipoHuella() ) )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:Huella', , ::Huella() ) )
If .Not. Empty( ::cSignature )
oXmlRegistroAlta:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:Signature', , ::Signature() ) )
EndIf
Return oXmlRegistroFactura
/* ***************************************************************************** */
/* ***************************************************************************** */
/* ***************************************************************************** */
CLASS IDFacturaRectificada
// Declaració de les DATA a on s'assignaran els valors a capturar.
// Totes les DATA es gestionaran en modus caràcter o objectes XML.
// Dades pel TAG IDFacturaRectificada
DATA cIDEmisorFactura
DATA cNumSerieFactura
DATA cFechaExpedicionFactura
// ACCESS a les DATA per tal de ser usades.
// De momento se aplica la conversión a UTF8, excepto a las huellas.
ACCESS IDEmisorFactura INLINE ( hb_StrToUTF8( alltrim( ::cIDEmisorFactura ) ) )
ACCESS NumSerieFactura INLINE ( hb_StrToUTF8( alltrim( ::cNumSerieFactura ) ) )
ACCESS FechaExpedicionFactura INLINE ( hb_StrToUTF8( alltrim( ::cFechaExpedicionFactura ) ) )
// Métodes per gestionar la classe.
METHOD New() CONSTRUCTOR
METHOD ToXML() // Genera estructura XML con los datos.
ENDCLASS
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
METHOD New( ) CLASS IDFacturaRectificada
Return ( self )
//---------------------------------------------------------------------------//
METHOD ToXML() CLASS IDFacturaRectificada
Local oXmlIDFacturaRectificada
oXmlIDFacturaRectificada := TxmlNode():New( HBXML_TYPE_TAG, "sum1:IDFacturaRectificada" )
oXmlIDFacturaRectificada:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:IDEmisorFactura', , ::IDEmisorFactura() ) )
oXmlIDFacturaRectificada:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NumSerieFactura', , ::NumSerieFactura() ) )
oXmlIDFacturaRectificada:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:FechaExpedicionFactura', , ::FechaExpedicionFactura() ) )
Return oXmlIDFacturaRectificada
/* ***************************************************************************** */
/* ***************************************************************************** */
/* ***************************************************************************** */
CLASS IDFacturaSustituida
// Declaració de les DATA a on s'assignaran els valors a capturar.
// Totes les DATA es gestionaran en modus caràcter o objectes XML.
// Dades pel TAG IDFacturaSustituida
DATA cIDEmisorFactura
DATA cNumSerieFactura
DATA cFechaExpedicionFactura
// ACCESS a les DATA per tal de ser usades.
// De momento se aplica la conversión a UTF8, excepto a las huellas.
ACCESS IDEmisorFactura INLINE ( hb_StrToUTF8( alltrim( ::cIDEmisorFactura ) ) )
ACCESS NumSerieFactura INLINE ( hb_StrToUTF8( alltrim( ::cNumSerieFactura ) ) )
ACCESS FechaExpedicionFactura INLINE ( hb_StrToUTF8( alltrim( ::cFechaExpedicionFactura ) ) )
// Métodes per gestionar la classe.
METHOD New() CONSTRUCTOR
METHOD ToXML() // Genera estructura XML con los datos.
ENDCLASS
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
METHOD New( ) CLASS IDFacturaSustituida
Return ( self )
//---------------------------------------------------------------------------//
METHOD ToXML() CLASS IDFacturaSustituida
Local oXmlIDFacturaSustituida
oXmlIDFacturaSustituida := TxmlNode():New( HBXML_TYPE_TAG, "sum1:IDFacturaSustituida" )
oXmlIDFacturaSustituida:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:IDEmisorFactura', , ::IDEmisorFactura() ) )
oXmlIDFacturaSustituida:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NumSerieFactura', , ::NumSerieFactura() ) )
oXmlIDFacturaSustituida:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:FechaExpedicionFactura', , ::FechaExpedicionFactura() ) )
Return oXmlIDFacturaSustituida
/* ***************************************************************************** */
/* ***************************************************************************** */
/* ***************************************************************************** */
CLASS IDDestinatario
// Declaració de les DATA a on s'assignaran els valors a capturar.
// Totes les DATA es gestionaran en modus caràcter o objectes XML.
// Dades pel TAG IDDestinatario -- >> Fins a 1000
DATA cNombreRazon
DATA cNIF
DATA oXmlIDOtro
// Dades pel TAG IDOtro
DATA cCodigoPais
DATA cIDType
DATA cID
// ACCESS a les DATA per tal de ser usades.
// De momento se aplica la conversión a UTF8, excepto a las huellas.
ACCESS NombreRazon INLINE ( hb_StrToUTF8( alltrim( ::cNombreRazon ) ) )
ACCESS NIF INLINE ( hb_StrToUTF8( alltrim( ::cNIF ) ) )
ACCESS CodigoPais INLINE ( hb_StrToUTF8( alltrim( ::cCodigoPais ) ) )
ACCESS IDType INLINE ( hb_StrToUTF8( alltrim( ::cIDType ) ) )
ACCESS ID INLINE ( hb_StrToUTF8( alltrim( ::cID ) ) )
// Métodes per gestionar la classe.
METHOD New() CONSTRUCTOR
METHOD ToXML() // Genera estructura XML con los datos.
ENDCLASS
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
METHOD New( ) CLASS IDDestinatario
Return ( self )
//---------------------------------------------------------------------------//
METHOD ToXML() CLASS IDDestinatario
Local oXmlIDDestinatario
Local oXmlIDOtro
oXmlIDDestinatario := TxmlNode():New( HBXML_TYPE_TAG, "sum1:IDDestinatario" )
oXmlIDDestinatario:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NombreRazon', , ::NombreRazon() ) )
If .Not. Empty( ::cNIF )
oXmlIDDestinatario:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:NIF', , ::NIF() ) )
EndIf
If .Not. Empty( ::cIDType )
oXmlIDOtro := TxmlNode():New( HBXML_TYPE_TAG, "sum1:IDOtro" )
oXmlIDDestinatario:AddBelow( oXmlIDOtro )
If .Not. Empty( ::cCodigoPais )
oXmlIDOtro:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:CodigoPais', , ::CodigoPais() ) )
EndIf
oXmlIDOtro:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:IDType', , ::IDType() ) )
oXmlIDOtro:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:ID', , ::ID() ) )
EndIf
Return oXmlIDDestinatario
/* ***************************************************************************** */
/* ***************************************************************************** */
/* ***************************************************************************** */
CLASS DetalleDesglose
// Declaració de les DATA a on s'assignaran els valors a capturar.
// Totes les DATA es gestionaran en modus caràcter o objectes XML.
// Dades pel TAG DetalleDesglose -- >> Fins a 12
DATA cImpuesto
DATA cClaveRegimen
DATA cCalificacionOperacion
DATA cOperacionExenta
DATA cTipoImpositivo
DATA cBaseImponibleOimporteNoSujeto
DATA cBaseImponibleACoste
DATA cCuotaRepercutida
DATA cTipoRecargoEquivalencia
DATA cCuotaRecargoEquivalencia
// ACCESS a les DATA per tal de ser usades.
// De momento se aplica la conversión a UTF8, excepto a las huellas.
ACCESS Impuesto INLINE ( hb_StrToUTF8( alltrim( ::cImpuesto ) ) )
ACCESS ClaveRegimen INLINE ( hb_StrToUTF8( alltrim( ::cClaveRegimen ) ) )
ACCESS CalificacionOperacion INLINE ( hb_StrToUTF8( alltrim( ::cCalificacionOperacion ) ) )
ACCESS OperacionExenta INLINE ( hb_StrToUTF8( alltrim( ::cOperacionExenta ) ) )
ACCESS TipoImpositivo INLINE ( hb_StrToUTF8( alltrim( ::cTipoImpositivo ) ) )
ACCESS BaseImponibleOimporteNoSujeto INLINE ( hb_StrToUTF8( alltrim( ::cBaseImponibleOimporteNoSujeto ) ) )
ACCESS BaseImponibleACoste INLINE ( hb_StrToUTF8( alltrim( ::cBaseImponibleACoste ) ) )
ACCESS CuotaRepercutida INLINE ( hb_StrToUTF8( alltrim( ::cCuotaRepercutida ) ) )
ACCESS TipoRecargoEquivalencia INLINE ( hb_StrToUTF8( alltrim( ::cTipoRecargoEquivalencia ) ) )
ACCESS CuotaRecargoEquivalencia INLINE ( hb_StrToUTF8( alltrim( ::cCuotaRecargoEquivalencia ) ) )
// Métodes per gestionar la classe.
METHOD New() CONSTRUCTOR
METHOD ToXML() // Genera estructura XML con los datos.
ENDCLASS
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
METHOD New( ) CLASS DetalleDesglose
Return ( self )
//---------------------------------------------------------------------------//
METHOD ToXML() CLASS DetalleDesglose
Local oXmlDetalleDesglose
oXmlDetalleDesglose := TxmlNode():New( HBXML_TYPE_TAG, "sum1:DetalleDesglose" )
If .Not. Empty( ::cImpuesto )
oXmlDetalleDesglose:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:Impuesto', , ::Impuesto() ) )
EndIf
If .Not. Empty( ::cClaveRegimen )
oXmlDetalleDesglose:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:ClaveRegimen', , ::ClaveRegimen() ) )
EndIf
//If .Not. Empty( ::cCalificacionOperacion )
oXmlDetalleDesglose:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:CalificacionOperacion', , ::CalificacionOperacion() ) )
//EndIf
If .Not. Empty( ::cOperacionExenta )
oXmlDetalleDesglose:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:OperacionExenta', , ::OperacionExenta() ) )
EndIf
If .Not. Empty( ::cTipoImpositivo )
oXmlDetalleDesglose:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:TipoImpositivo', , ::TipoImpositivo() ) )
EndIf
oXmlDetalleDesglose:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:BaseImponibleOimporteNoSujeto', , ::BaseImponibleOimporteNoSujeto() ) )
If .Not. Empty( ::cBaseImponibleACoste )
oXmlDetalleDesglose:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:BaseImponibleACoste', , ::BaseImponibleACoste() ) )
EndIf
If .Not. Empty( ::cCuotaRepercutida )
oXmlDetalleDesglose:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:CuotaRepercutida', , ::CuotaRepercutida() ) )
EndIf
If .Not. Empty( ::cTipoRecargoEquivalencia )
oXmlDetalleDesglose:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:TipoRecargoEquivalencia', , ::TipoRecargoEquivalencia() ) )
EndIf
If .Not. Empty( ::cCuotaRecargoEquivalencia )
oXmlDetalleDesglose:AddBelow( TxmlNode():New( HBXML_TYPE_TAG, 'sum1:CuotaRecargoEquivalencia', , ::CuotaRecargoEquivalencia() ) )
EndIf
Return oXmlDetalleDesglose
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//