Login to website
Moderator: Rathinagiri
- tomtagaris
- Posts: 107
- Joined: Tue Aug 23, 2016 2:43 pm
Re: Login to website
Strange, this response should not generate an error.
Please, show the piece of code with the line numbers where this error occurs.
Also, please try to:
Please, show the piece of code with the line numbers where this error occurs.
Also, please try to:
Code: Select all
Msgdebug ( GetFromXML ( ohttp:ResponseBody(), "entityUid" ) )
Re: Login to website
Also try this code (based on mxml and hash array)
Remember to add #include "hbmxml.ch" at the beginning of your code.
You must also add "hbmxml.hbc" to your project (preferably in a .hbp file)
Code: Select all
#include "hbmxml.ch"
(...)
cXml := ohttp:ResponseBody()
pRoot := mxmlLoadString( NIL, cXml, MXML_OPAQUE_CALLBACK )
hHash := XMLtoHash( pRoot, 'response' )
mxmlDelete( pRoot )
MsgInfo( "entitylineNumber: " + hHash["entitylineNumber"] + CRLF + ;
"statusCode: " + hHash["statusCode"] + CRLF + ;
"entityUid: " + hHash["entityUid"] + CRLF + ;
"entityMark: " + hHash["entityMark"] )
(...)
*************************************************************
FUNCTION XMLtoHash( pRoot, cElement )
Local pNode, hNext
Local Map := {=>}
If Empty( cElement )
pNode := pRoot
Else
pNode := mxmlFindElement( pRoot, pRoot, cElement, NIL, NIL, MXML_DESCEND )
Endif
IF Empty( pNode )
RETURN Map
ENDIF
hNext := mxmlWalkNext( pNode, pNode, MXML_DESCEND )
Map := NodeToHash( hNext )
Return Map
**********************************************
STATIC FUNCTION NodeToHash( node )
Local hNext
Local hHashChild := {=>}
Local hHash := {=>}
DO WHILE node != NIL
IF mxmlGetType( node ) == MXML_ELEMENT
If HB_HHASKEY( hHash, mxmlGetElement( node ) )
if valtype( hHash[ mxmlGetElement( node ) ] ) <> "A"
hHash[ mxmlGetElement( node ) ] := mxmlGetOpaque( node )
else
//Jest to tablica, dlatego pomijamy
endif
Else
hHash[ mxmlGetElement( node ) ] := mxmlGetOpaque( node )
Endif
If HB_MXMLGETATTRSCOUNT( node ) > 0
hHash[ mxmlGetElement( node ) + "@attribute"] := HB_MXMLGETATTRS( node )
Endif
If Empty( mxmlGetOpaque( node ) ) // Zagladamy do srodka
hNext := mxmlWalkNext( node, node, MXML_DESCEND )
iF hNext != NIL
if Empty( hHash[ mxmlGetElement( node ) ] )
hHash[ mxmlGetElement( node ) ] := {}
endif
hHashChild := NodeToHash( hNext )
if hHashChild != NIL
AADD( hHash[ mxmlGetElement( node ) ], hHashChild )
endif
enDiF
EndIf
ENDIF
node := mxmlGetNextSibling( node )
ENDDO WHILE
RETURN hHash
**********************************************************************************************************************
You must also add "hbmxml.hbc" to your project (preferably in a .hbp file)
- tomtagaris
- Posts: 107
- Joined: Tue Aug 23, 2016 2:43 pm
Re: Login to website
yes it works perfectly
thank you very much
thank you very much
- tomtagaris
- Posts: 107
- Joined: Tue Aug 23, 2016 2:43 pm
Re: Login to website
Something else
if i send two invoices the answer is double or triple depending on how much i send
is there any way to get the answer because you don't get it with for ...next
thanks
<?xml version="1.0" encoding="utf-8"?>
<ResponseDoc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<response>
<entitylineNumber>1</entitylineNumber>
<statusCode>Success</statusCode>
<entityUid>8B5F90485B444AC25259C053646A3F098C6965F9</entityUid>
<entityMark>1000000278308</entityMark>
</response>
<response>
<entitylineNumber>2</entitylineNumber>
<statusCode>Success</statusCode>
<entityUid>8B5F90485B444AC25259C053646A3F098C6965F9</entityUid>
<entityMark>1000000278309</entityMark>
</response>
</ResponseDoc>
if i send two invoices the answer is double or triple depending on how much i send
is there any way to get the answer because you don't get it with for ...next
thanks
<?xml version="1.0" encoding="utf-8"?>
<ResponseDoc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<response>
<entitylineNumber>1</entitylineNumber>
<statusCode>Success</statusCode>
<entityUid>8B5F90485B444AC25259C053646A3F098C6965F9</entityUid>
<entityMark>1000000278308</entityMark>
</response>
<response>
<entitylineNumber>2</entitylineNumber>
<statusCode>Success</statusCode>
<entityUid>8B5F90485B444AC25259C053646A3F098C6965F9</entityUid>
<entityMark>1000000278309</entityMark>
</response>
</ResponseDoc>
Re: Login to website
Code: Select all
cXml := ohttp:ResponseBody()
pRoot := mxmlLoadString( NIL, cXml, MXML_OPAQUE_CALLBACK )
hHash := XMLtoHash( pRoot, /* start from root node */ )
mxmlDelete( pRoot )
hResponse := hHash["ResponseDoc"][1]["response"] //All <response> nodes
For i=1 TO Len( hResponse )
MsgInfo( "entitylineNumber: " + hResponse[i]["entitylineNumber"] + CRLF + ;
"statusCode: " + hResponse[i]["statusCode"] + CRLF + ;
"entityUid: " + hResponse[i]["entityUid"] + CRLF + ;
"entityMark: " + hResponse[i]["entityMark"] , hb_NTOS(i) + " response" )
Next i
- tomtagaris
- Posts: 107
- Joined: Tue Aug 23, 2016 2:43 pm
Re: Login to website
perfect
I have no words to thank you
I wish you the best edk
thank you very much
I have no words to thank you
I wish you the best edk
thank you very much
- tomtagaris
- Posts: 107
- Joined: Tue Aug 23, 2016 2:43 pm
Re: Login to website
SOMETHING ELSE EDK
I USE THE SAME PROCEDURE TO PROVIDE DATA FROM THE XML FILE RETURNED WITH RequestInvoices BUT I DON'T GET ANYTHING
WHAT I DON'T DO right
cXml := ohttp:ResponseBody()
pRoot := mxmlLoadString( NIL, cXml, MXML_OPAQUE_CALLBACK )
hHash := XMLtoHash( pRoot, /* start from root node */ )
mxmlDelete( pRoot )
hResponse := hHash["invoicesDoc"][2]["invoice"] //All <response> nodes
For i=1 TO Len( hResponse )
MsgInfo( "uid: " + hResponse["uid"] + CRLF + ;
"mark: " + hResponse["mark"] + CRLF + ;
"vatNumber: " + hResponse["vatNumber"] + CRLF + ;
"mark: " + hResponse["mark"] , hb_NTOS(i) + " response" )
next i
the returned xml
<?xml version="1.0" encoding="utf-8"?>
<requestedInvoicesDoc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<invoicesDoc xmlns="http://www.aade.gr/myDATA/invoice/v1.0">
<invoice>
<uid>8B5F90485B444AC25259C053646A3F098C6965F9</uid>
<mark>1000000280441</mark>
<issuer>
<vatNumber>029690710</vatNumber>
<country>GR</country>
<name>οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½</name>
</issuer>
<counterpart>
<vatNumber>029690710</vatNumber>
<country>GR</country>
</counterpart>
<invoiceHeader>
<branch>0</branch>
<series>οΏ½</series>
<aa>2</aa>
<issueDate>2019-07-19</issueDate>
<invoiceType>1.1</invoiceType>
<vatPaymentSuspension>true</vatPaymentSuspension>
<currency>EUR</currency>
<exchangeRate>8.00</exchangeRate>
<correlatedInvoices />
<selfPricing>false</selfPricing>
<dispatchTime>16:47:51.7000000+00:00</dispatchTime>
<vehicleNumber />
<movePurpose>1</movePurpose>
</invoiceHeader>
<invoiceDetails>
<lineNumber>1</lineNumber>
<measurementUnit>1</measurementUnit>
<netValue>140</netValue>
<vatCategory>2</vatCategory>
<vatExemptionCategory>1</vatExemptionCategory>
<dienergia>
<applicationId />
<applicationDate>1986-12-20</applicationDate>
<shipId />
</dienergia>
<discountOption>true</discountOption>
<withheldAmount>0</withheldAmount>
<stampDutyPercentCategory>1</stampDutyPercentCategory>
<feesAmount>0</feesAmount>
<otherTaxesPercentCategory>1</otherTaxesPercentCategory>
<deductionsPercentage>0</deductionsPercentage>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
</invoiceDetails>
<invoiceDetails>
<lineNumber>1</lineNumber>
<quantity>10</quantity>
<measurementUnit>1</measurementUnit>
<invoiceDetailType>1</invoiceDetailType>
<netValue>140</netValue>
<vatCategory>2</vatCategory>
<dienergia>
<applicationId />
<applicationDate>2004-12-14</applicationDate>
<shipId />
</dienergia>
<discountOption>true</discountOption>
<withheldAmount>0</withheldAmount>
<withheldPercentCategory>1</withheldPercentCategory>
<stampDutyPercentCategory>1</stampDutyPercentCategory>
<feesAmount>0</feesAmount>
<otherTaxesPercentCategory>1</otherTaxesPercentCategory>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
</invoiceDetails>
<invoiceSummary>
<totalNetValue>140</totalNetValue>
<totalVatAmount>18.2</totalVatAmount>
<totalWithheldAmount>0</totalWithheldAmount>
<totalFeesAmount>0</totalFeesAmount>
<totalStampDutyAmount>0</totalStampDutyAmount>
<totalOtherTaxesAmount>0</totalOtherTaxesAmount>
<totalDeductionsAmount>0</totalDeductionsAmount>
<totalGrossValue>158.2</totalGrossValue>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>158.2</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
</invoiceSummary>
</invoice>
<invoice>
<uid>8B5F90485B444AC25259C053646A3F098C6965F9</uid>
<mark>1000000280442</mark>
<issuer>
<vatNumber>029690710</vatNumber>
<country>GR</country>
<name>ΤΑΓΑΡΗΣ</name>
</issuer>
<counterpart>
<vatNumber>029690710</vatNumber>
<country>GR</country>
</counterpart>
<invoiceHeader>
<branch>0</branch>
<series>οΏ½</series>
<aa>1</aa>
<issueDate>2019-07-19</issueDate>
<invoiceType>1.1</invoiceType>
<vatPaymentSuspension>true</vatPaymentSuspension>
<currency>EUR</currency>
<exchangeRate>1.00</exchangeRate>
<correlatedInvoices />
<selfPricing>false</selfPricing>
<dispatchTime>16:47:51.0000000+00:00</dispatchTime>
<vehicleNumber />
<movePurpose>1</movePurpose>
</invoiceHeader>
<invoiceDetails>
<lineNumber>1</lineNumber>
<quantity>1</quantity>
<measurementUnit>1</measurementUnit>
<invoiceDetailType>2</invoiceDetailType>
<netValue>140</netValue>
<vatCategory>2</vatCategory>
<discountOption>true</discountOption>
<withheldAmount>0</withheldAmount>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>158.2</amount>
</incomeClassification>
</invoiceDetails>
<invoiceSummary>
<totalNetValue>140</totalNetValue>
<totalVatAmount>18.2</totalVatAmount>
<totalWithheldAmount>0</totalWithheldAmount>
<totalFeesAmount>0</totalFeesAmount>
<totalStampDutyAmount>0</totalStampDutyAmount>
<totalOtherTaxesAmount>0</totalOtherTaxesAmount>
<totalDeductionsAmount>0</totalDeductionsAmount>
<totalGrossValue>158.2</totalGrossValue>
</invoiceSummary>
</invoice>
<invoice>
<uid>8B5F90485B444AC25259C053646A3F098C6965F9</uid>
<mark>1000000280443</mark>
<issuer>
<vatNumber>029690710</vatNumber>
<country>GR</country>
<name>οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½</name>
</issuer>
<counterpart>
<vatNumber>029690710</vatNumber>
<country>GR</country>
</counterpart>
<invoiceHeader>
<branch>0</branch>
<series>οΏ½</series>
<aa>2</aa>
<issueDate>2019-07-19</issueDate>
<invoiceType>1.1</invoiceType>
<vatPaymentSuspension>true</vatPaymentSuspension>
<currency>EUR</currency>
<exchangeRate>8.00</exchangeRate>
<correlatedInvoices />
<selfPricing>false</selfPricing>
<dispatchTime>16:47:51.7000000+00:00</dispatchTime>
<vehicleNumber />
<movePurpose>1</movePurpose>
</invoiceHeader>
<invoiceDetails>
<lineNumber>1</lineNumber>
<measurementUnit>1</measurementUnit>
<netValue>140</netValue>
<vatCategory>2</vatCategory>
<vatExemptionCategory>1</vatExemptionCategory>
<dienergia>
<applicationId />
<applicationDate>1986-12-20</applicationDate>
<shipId />
</dienergia>
<discountOption>true</discountOption>
<withheldAmount>0</withheldAmount>
<stampDutyPercentCategory>1</stampDutyPercentCategory>
<feesAmount>0</feesAmount>
<otherTaxesPercentCategory>1</otherTaxesPercentCategory>
<deductionsPercentage>0</deductionsPercentage>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
</invoiceDetails>
<invoiceDetails>
<lineNumber>1</lineNumber>
<quantity>10</quantity>
<measurementUnit>1</measurementUnit>
<invoiceDetailType>1</invoiceDetailType>
<netValue>140</netValue>
<vatCategory>2</vatCategory>
<dienergia>
<applicationId />
<applicationDate>2004-12-14</applicationDate>
<shipId />
</dienergia>
<discountOption>true</discountOption>
<withheldAmount>0</withheldAmount>
<withheldPercentCategory>1</withheldPercentCategory>
<stampDutyPercentCategory>1</stampDutyPercentCategory>
<feesAmount>0</feesAmount>
<otherTaxesPercentCategory>1</otherTaxesPercentCategory>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
</invoiceDetails>
<invoiceSummary>
<totalNetValue>140</totalNetValue>
<totalVatAmount>18.2</totalVatAmount>
<totalWithheldAmount>0</totalWithheldAmount>
<totalFeesAmount>0</totalFeesAmount>
<totalStampDutyAmount>0</totalStampDutyAmount>
<totalOtherTaxesAmount>0</totalOtherTaxesAmount>
<totalDeductionsAmount>0</totalDeductionsAmount>
<totalGrossValue>158.2</totalGrossValue>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>158.2</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
</invoiceSummary>
</invoice>
</invoicesDoc>
</requestedInvoicesDoc>
I USE THE SAME PROCEDURE TO PROVIDE DATA FROM THE XML FILE RETURNED WITH RequestInvoices BUT I DON'T GET ANYTHING
WHAT I DON'T DO right
cXml := ohttp:ResponseBody()
pRoot := mxmlLoadString( NIL, cXml, MXML_OPAQUE_CALLBACK )
hHash := XMLtoHash( pRoot, /* start from root node */ )
mxmlDelete( pRoot )
hResponse := hHash["invoicesDoc"][2]["invoice"] //All <response> nodes
For i=1 TO Len( hResponse )
MsgInfo( "uid: " + hResponse["uid"] + CRLF + ;
"mark: " + hResponse["mark"] + CRLF + ;
"vatNumber: " + hResponse["vatNumber"] + CRLF + ;
"mark: " + hResponse["mark"] , hb_NTOS(i) + " response" )
next i
the returned xml
<?xml version="1.0" encoding="utf-8"?>
<requestedInvoicesDoc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<invoicesDoc xmlns="http://www.aade.gr/myDATA/invoice/v1.0">
<invoice>
<uid>8B5F90485B444AC25259C053646A3F098C6965F9</uid>
<mark>1000000280441</mark>
<issuer>
<vatNumber>029690710</vatNumber>
<country>GR</country>
<name>οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½</name>
</issuer>
<counterpart>
<vatNumber>029690710</vatNumber>
<country>GR</country>
</counterpart>
<invoiceHeader>
<branch>0</branch>
<series>οΏ½</series>
<aa>2</aa>
<issueDate>2019-07-19</issueDate>
<invoiceType>1.1</invoiceType>
<vatPaymentSuspension>true</vatPaymentSuspension>
<currency>EUR</currency>
<exchangeRate>8.00</exchangeRate>
<correlatedInvoices />
<selfPricing>false</selfPricing>
<dispatchTime>16:47:51.7000000+00:00</dispatchTime>
<vehicleNumber />
<movePurpose>1</movePurpose>
</invoiceHeader>
<invoiceDetails>
<lineNumber>1</lineNumber>
<measurementUnit>1</measurementUnit>
<netValue>140</netValue>
<vatCategory>2</vatCategory>
<vatExemptionCategory>1</vatExemptionCategory>
<dienergia>
<applicationId />
<applicationDate>1986-12-20</applicationDate>
<shipId />
</dienergia>
<discountOption>true</discountOption>
<withheldAmount>0</withheldAmount>
<stampDutyPercentCategory>1</stampDutyPercentCategory>
<feesAmount>0</feesAmount>
<otherTaxesPercentCategory>1</otherTaxesPercentCategory>
<deductionsPercentage>0</deductionsPercentage>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
</invoiceDetails>
<invoiceDetails>
<lineNumber>1</lineNumber>
<quantity>10</quantity>
<measurementUnit>1</measurementUnit>
<invoiceDetailType>1</invoiceDetailType>
<netValue>140</netValue>
<vatCategory>2</vatCategory>
<dienergia>
<applicationId />
<applicationDate>2004-12-14</applicationDate>
<shipId />
</dienergia>
<discountOption>true</discountOption>
<withheldAmount>0</withheldAmount>
<withheldPercentCategory>1</withheldPercentCategory>
<stampDutyPercentCategory>1</stampDutyPercentCategory>
<feesAmount>0</feesAmount>
<otherTaxesPercentCategory>1</otherTaxesPercentCategory>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
</invoiceDetails>
<invoiceSummary>
<totalNetValue>140</totalNetValue>
<totalVatAmount>18.2</totalVatAmount>
<totalWithheldAmount>0</totalWithheldAmount>
<totalFeesAmount>0</totalFeesAmount>
<totalStampDutyAmount>0</totalStampDutyAmount>
<totalOtherTaxesAmount>0</totalOtherTaxesAmount>
<totalDeductionsAmount>0</totalDeductionsAmount>
<totalGrossValue>158.2</totalGrossValue>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>158.2</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
</invoiceSummary>
</invoice>
<invoice>
<uid>8B5F90485B444AC25259C053646A3F098C6965F9</uid>
<mark>1000000280442</mark>
<issuer>
<vatNumber>029690710</vatNumber>
<country>GR</country>
<name>ΤΑΓΑΡΗΣ</name>
</issuer>
<counterpart>
<vatNumber>029690710</vatNumber>
<country>GR</country>
</counterpart>
<invoiceHeader>
<branch>0</branch>
<series>οΏ½</series>
<aa>1</aa>
<issueDate>2019-07-19</issueDate>
<invoiceType>1.1</invoiceType>
<vatPaymentSuspension>true</vatPaymentSuspension>
<currency>EUR</currency>
<exchangeRate>1.00</exchangeRate>
<correlatedInvoices />
<selfPricing>false</selfPricing>
<dispatchTime>16:47:51.0000000+00:00</dispatchTime>
<vehicleNumber />
<movePurpose>1</movePurpose>
</invoiceHeader>
<invoiceDetails>
<lineNumber>1</lineNumber>
<quantity>1</quantity>
<measurementUnit>1</measurementUnit>
<invoiceDetailType>2</invoiceDetailType>
<netValue>140</netValue>
<vatCategory>2</vatCategory>
<discountOption>true</discountOption>
<withheldAmount>0</withheldAmount>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>158.2</amount>
</incomeClassification>
</invoiceDetails>
<invoiceSummary>
<totalNetValue>140</totalNetValue>
<totalVatAmount>18.2</totalVatAmount>
<totalWithheldAmount>0</totalWithheldAmount>
<totalFeesAmount>0</totalFeesAmount>
<totalStampDutyAmount>0</totalStampDutyAmount>
<totalOtherTaxesAmount>0</totalOtherTaxesAmount>
<totalDeductionsAmount>0</totalDeductionsAmount>
<totalGrossValue>158.2</totalGrossValue>
</invoiceSummary>
</invoice>
<invoice>
<uid>8B5F90485B444AC25259C053646A3F098C6965F9</uid>
<mark>1000000280443</mark>
<issuer>
<vatNumber>029690710</vatNumber>
<country>GR</country>
<name>οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½</name>
</issuer>
<counterpart>
<vatNumber>029690710</vatNumber>
<country>GR</country>
</counterpart>
<invoiceHeader>
<branch>0</branch>
<series>οΏ½</series>
<aa>2</aa>
<issueDate>2019-07-19</issueDate>
<invoiceType>1.1</invoiceType>
<vatPaymentSuspension>true</vatPaymentSuspension>
<currency>EUR</currency>
<exchangeRate>8.00</exchangeRate>
<correlatedInvoices />
<selfPricing>false</selfPricing>
<dispatchTime>16:47:51.7000000+00:00</dispatchTime>
<vehicleNumber />
<movePurpose>1</movePurpose>
</invoiceHeader>
<invoiceDetails>
<lineNumber>1</lineNumber>
<measurementUnit>1</measurementUnit>
<netValue>140</netValue>
<vatCategory>2</vatCategory>
<vatExemptionCategory>1</vatExemptionCategory>
<dienergia>
<applicationId />
<applicationDate>1986-12-20</applicationDate>
<shipId />
</dienergia>
<discountOption>true</discountOption>
<withheldAmount>0</withheldAmount>
<stampDutyPercentCategory>1</stampDutyPercentCategory>
<feesAmount>0</feesAmount>
<otherTaxesPercentCategory>1</otherTaxesPercentCategory>
<deductionsPercentage>0</deductionsPercentage>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
</invoiceDetails>
<invoiceDetails>
<lineNumber>1</lineNumber>
<quantity>10</quantity>
<measurementUnit>1</measurementUnit>
<invoiceDetailType>1</invoiceDetailType>
<netValue>140</netValue>
<vatCategory>2</vatCategory>
<dienergia>
<applicationId />
<applicationDate>2004-12-14</applicationDate>
<shipId />
</dienergia>
<discountOption>true</discountOption>
<withheldAmount>0</withheldAmount>
<withheldPercentCategory>1</withheldPercentCategory>
<stampDutyPercentCategory>1</stampDutyPercentCategory>
<feesAmount>0</feesAmount>
<otherTaxesPercentCategory>1</otherTaxesPercentCategory>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
</invoiceDetails>
<invoiceSummary>
<totalNetValue>140</totalNetValue>
<totalVatAmount>18.2</totalVatAmount>
<totalWithheldAmount>0</totalWithheldAmount>
<totalFeesAmount>0</totalFeesAmount>
<totalStampDutyAmount>0</totalStampDutyAmount>
<totalOtherTaxesAmount>0</totalOtherTaxesAmount>
<totalDeductionsAmount>0</totalDeductionsAmount>
<totalGrossValue>158.2</totalGrossValue>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>158.2</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
<incomeClassification>
<classificationType>101</classificationType>
<classificationCategory>1</classificationCategory>
<amount>140</amount>
</incomeClassification>
</invoiceSummary>
</invoice>
</invoicesDoc>
</requestedInvoicesDoc>
Re: Login to website
Hi Tom.
I see you have a problem understanding the hash array structure.
Unfortunately, my English is not very good to explain, so I made a pictorial description. I hope it will be helpful.
Source code below:
I split hHash into individual variables to make the structure easier to understand.
Edward.
I see you have a problem understanding the hash array structure.
Unfortunately, my English is not very good to explain, so I made a pictorial description. I hope it will be helpful.
Source code below:
Code: Select all
hInvoice := hHash["requestedInvoicesDoc"][ 1 ]["invoicesDoc"][ 1 ]["invoice"] //All <invoice> nodes
For i=1 TO Len( hInvoice )
// the "invoice" root node
cInv_Root := "uid: " + hInvoice[ i /* n-th invoice */ ]["uid"] + CRLF + ;
"mark: " + hInvoice[ i ]["mark"]
// the "invoice" node has only one [1] "issuer" node
cInv_Issuer := "issuer -> vatNumber:" + hInvoice[ i /* n-th invoice */ ]["issuer"][ 1 /* 1-st and only sub-node "issuer" */ ]["vatNumber"] + CRLF +;
"issuer -> counrty:" + hInvoice[ i ]["issuer"][ 1 ]["country"] + CRLF +;
"issuer -> name:" + hInvoice[ i ]["issuer"][ 1 ]["name"]
// the "invoice" node has only one [1] "counterpart" node
cInv_Counterpart := "counterpart -> vatNumber:" + hInvoice[ i /* n-th invoice */ ]["counterpart"][ 1 /* 1-st and only sub-node "counterpart" */ ]["vatNumber"] + CRLF +;
"counterpart -> country:" + hInvoice[ i ]["counterpart"][ 1 ]["country"]
// the "invoice" node has only one [1] "invoiceHeadert" node
cInv_Header := "invoiceHeader -> branch:" + hInvoice[ i /* n-th invoice */ ]["invoiceHeader"][ 1 /* 1-st and only sub-node "invoiceHeader" */ ]["branch"] + CRLF +;
"invoiceHeader -> series:" + hInvoice[ i ]["invoiceHeader"][ 1 ]["series"] + CRLF +;
"invoiceHeader -> aa:" + hInvoice[ i ]["invoiceHeader"][ 1 ]["aa"] + CRLF +;
"invoiceHeader -> issueDate:" + hInvoice[ i ]["invoiceHeader"][ 1 ]["issueDate"] + CRLF +;
"invoiceHeader -> invoiceType:" + hInvoice[ i ]["invoiceHeader"][ 1 ]["invoiceType"] + CRLF +;
"invoiceHeader -> vatPaymentSuspension:" + hInvoice[ i ]["invoiceHeader"][ 1 ]["vatPaymentSuspension"] + CRLF +;
"invoiceHeader -> currency:" + hInvoice[ i ]["invoiceHeader"][ 1 ]["currency"] + CRLF +;
"invoiceHeader -> exchangeRate:" + hInvoice[ i ]["invoiceHeader"][ 1 ]["exchangeRate"] + CRLF +;
"invoiceHeader -> correlatedInvoices:" + hInvoice[ i ]["invoiceHeader"][ 1 ]["correlatedInvoices"] + CRLF +;
"invoiceHeader -> selfPricing:" + hInvoice[ i ]["invoiceHeader"][ 1 ]["selfPricing"] + CRLF +;
"invoiceHeader -> dispatchTime:" + hInvoice[ i ]["invoiceHeader"][ 1 ]["dispatchTime"] + CRLF +;
"invoiceHeader -> vehicleNumber:" + hInvoice[ i ]["invoiceHeader"][ 1 ]["vehicleNumber"] + CRLF +;
"invoiceHeader -> movePurpose:" + hInvoice[ i ]["invoiceHeader"][ 1 ]["movePurpose"]
MsgInfo( "Invoice #" + hb_ntos (i) + CRLF + ;
cInv_root + CRLF +;
cInv_Issuer + CRLF +;
cInv_Counterpart + CRLF +;
cInv_Header )
// the "invoice" node can have several "invoiceDetails" nodes
FOR nDetails = 1 TO Len ( hInvoice[ i /* n-th invoice */ ]["invoiceDetails"] )
hDetails := hInvoice[ i /* n-th invoice */ ]["invoiceDetails"][ nDetails /* n-th sub-node "invoiceDetails" */ ]
cInv_Details := "invoiceDetails -> lineNumber:" + hDetails["lineNumber"] + CRLF
//I am not sure if the item exists (may be optional), so I will ask for it using the function hb_HGetDef (<hHash>, <Key>, [<DefaultValue>]) => xValue | NIL
cInv_Details += "invoiceDetails -> quantity:" + hb_HGetDef( hDetails , "quantity" , "") + CRLF
cInv_Details += "invoiceDetails -> measurementUnit:" + hb_HGetDef( hDetails , "measurementUnit" , "") + CRLF
cInv_Details += "invoiceDetails -> netValue:" + hb_HGetDef( hDetails, "netValue", "") + CRLF
cInv_Details += "invoiceDetails -> vatCategory:" + hb_HGetDef( hDetails, "vatCategory", "") + CRLF
cInv_Details += "invoiceDetails -> vatExemptionCategory:" + hb_HGetDef( hDetails, "vatExemptionCategory", "") + CRLF
//the "invoiceDetails" node has the optional "dienergy" node. Let's check if it exists
IF hb_HHasKey( hDetails, "dienergia" )
//I don't know if the "dienergia" node can occur more than once. Just in case, I check all occurrences
FOR j = 1 TO Len( hDetails["dienergia"] )
cInv_Details += "invoiceDetails -> dienergia -> applicationId:" + hb_HGetDef( hDetails["dienergia"][ j /* n-st sub-node "dianergia" */ ], "applicationId", "") + CRLF
cInv_Details += "invoiceDetails -> dienergia -> applicationDate:" + hb_HGetDef( hDetails["dienergia"][ j ], "applicationDate", "") + CRLF
cInv_Details += "invoiceDetails -> dienergia -> shipId:" + hb_HGetDef( hDetails["dienergia"][ j ], "shipId", "") + CRLF
NEXT j
ENDIF
cInv_Details += "invoiceDetails -> discountOption:" + hb_HGetDef( hDetails, "discountOption" , "") + CRLF
cInv_Details += "invoiceDetails -> withheldAmount:" + hb_HGetDef( hDetails, "withheldAmount" , "") + CRLF
cInv_Details += "invoiceDetails -> stampDutyPercentCategory:" + hb_HGetDef( hDetails, "stampDutyPercentCategory" , "") + CRLF
cInv_Details += "invoiceDetails -> feesAmount:" + hb_HGetDef( hDetails, "feesAmount" , "") + CRLF
cInv_Details += "invoiceDetails -> otherTaxesPercentCategory:" + hb_HGetDef( hDetails, "otherTaxesPercentCategory" , "") + CRLF
cInv_Details += "invoiceDetails -> deductionsPercentage:" + hb_HGetDef( hDetails, "deductionsPercentage" , "") + CRLF
//the "invoiceDetails" node has the optional "incomeClassification" node. Let's check if it exists
IF hb_HHasKey( hDetails, "incomeClassification" )
//I don't know if the "incomeClassification" node can occur more than once. Just in case, I check all occurrences
FOR j = 1 TO Len( hDetails["incomeClassification"] )
cInv_Details += "invoiceDetails -> incomeClassification -> classificationType:" + hb_HGetDef( hDetails["incomeClassification"][ j /* n-st sub-node "incomeClassification" */ ], "classificationType", "") + CRLF
cInv_Details += "invoiceDetails -> incomeClassification -> classificationCategory:" + hb_HGetDef( hDetails["incomeClassification"][ j ], "classificationCategory", "") + CRLF
cInv_Details += "invoiceDetails -> incomeClassification -> amount:" + hb_HGetDef( hDetails["incomeClassification"][ j ], "amount", "") + CRLF
NEXT j
ENDIF
MsgInfo( "Invoice #" + hb_ntos (i) + " Detail #" + hb_ntos (nDetails) + CRLF + cInv_Details)
Next nDetails
// the "invoice" node has only one [1] "invoiceSummary" node
hSummary := hInvoice[ i /* n-th invoice */ ]["invoiceSummary"][ 1 /* 1-st and only sub-node "invoiceSummary" */ ]
cInv_Summary := "invoiceSummary -> totalNetValue:" + hSummary["totalNetValue"] + CRLF +;
"invoiceSummary -> totalVatAmount:" + hSummary["totalVatAmount"] + CRLF +;
"invoiceSummary -> totalWithheldAmount:" + hSummary["totalWithheldAmount"] + CRLF +;
"invoiceSummary -> totalFeesAmount:" + hSummary["totalFeesAmount"] + CRLF +;
"invoiceSummary -> totalStampDutyAmount:" + hSummary["totalStampDutyAmount"] + CRLF +;
"invoiceSummary -> totalOtherTaxesAmount:" + hSummary["totalOtherTaxesAmount"] + CRLF +;
"invoiceSummary -> totalDeductionsAmount:" + hSummary["totalDeductionsAmount"] + CRLF +;
"invoiceSummary -> totalGrossValue:" + hSummary["totalGrossValue"] + CRLF
//the "invoiceSummary" node has the optional "incomeClassification" node. Let's check if it exists
IF hb_HHasKey( hSummary, "incomeClassification" )
//I don't know if the "incomeClassification" node can occur more than once. Just in case, I check all occurrences
FOR j = 1 TO Len( hSummary["incomeClassification"] )
cInv_Summary += "invoiceSummary -> incomeClassification -> classificationType:" + hb_HGetDef( hSummary["incomeClassification"][ j /* n-st sub-node "incomeClassification" */ ], "classificationType", "") + CRLF
cInv_Summary += "invoiceSummary -> incomeClassification -> classificationCategory:" + hb_HGetDef( hSummary["incomeClassification"][ j ], "classificationCategory", "") + CRLF
cInv_Summary += "invoiceSummary -> incomeClassification -> amount:" + hb_HGetDef( hSummary["incomeClassification"][ j ], "amount", "") + CRLF
NEXT j
ENDIF
MsgInfo( "Invoice #" + hb_ntos (i) + " Summary:" + CRLF + cInv_Summary)
next i
Edward.
- tomtagaris
- Posts: 107
- Joined: Tue Aug 23, 2016 2:43 pm
Re: Login to website
thank you very much edk
I'm trying to understand how it works
it's too deep for me
and my english is not good
your work is amazing
Thank you very much
without your help I wouldn't succeed
I hope this is the last thing I ask of you
I'm trying to understand how it works
it's too deep for me
and my english is not good
your work is amazing
Thank you very much
without your help I wouldn't succeed
I hope this is the last thing I ask of you