Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,57 +19,56 @@ codeunit 28007 "PINT A-NZ Import"

procedure ParseBasicInfo(var EDocument: Record "E-Document"; var TempBlob: Codeunit "Temp Blob")
var
TempXMLBuffer: Record "XML Buffer" temporary;
GeneralLedgerSetup: Record "General Ledger Setup";
TempXMLBuffer: Record "XML Buffer" temporary;
DocStream: InStream;
CreditNoteTok: Label 'CREDITNOTE', Locked = true;
InvoiceTok: Label 'INVOICE', Locked = true;
DueDate, IssueDate : Text;
DocumentType: Text;
InvoiceTok: Label '/Invoice', Locked = true;
CreditNoteTok: Label '/CreditNote', Locked = true;
Currency: Text[10];
DocStream: InStream;
RootPath: Text;
begin
TempXMLBuffer.DeleteAll();
TempBlob.CreateInStream(DocStream, TextEncoding::UTF8);
TempXMLBuffer.LoadFromStream(DocStream);

if GetDocumentType(TempXMLBuffer) = 'Invoice' then begin
DocumentType := InvoiceTok;
EDocument."Document Type" := EDocument."Document Type"::"Purchase Invoice";
end else begin
DocumentType := CreditNoteTok;
EDocument."Document Type" := EDocument."Document Type"::"Purchase Credit Memo";
case UpperCase(GetDocumentType(TempXMLBuffer, RootPath)) of
InvoiceTok:
EDocument."Document Type" := EDocument."Document Type"::"Purchase Invoice";
CreditNoteTok:
EDocument."Document Type" := EDocument."Document Type"::"Purchase Credit Memo";
end;
EDocument.Direction := EDocument.Direction::Incoming;
EDocument."Incoming E-Document No." := CopyStr(GetNodeByPath(TempXMLBuffer, DocumentType + '/cbc:ID'), 1, MaxStrLen(EDocument."Document No."));
EDocument."Incoming E-Document No." := CopyStr(GetNodeByPath(TempXMLBuffer, RootPath + '/cbc:ID'), 1, MaxStrLen(EDocument."Document No."));

ParseAccountingSupplierParty(EDocument, TempXMLBuffer, DocumentType);
ParseAccountingCustomerParty(EDocument, TempXMLBuffer, DocumentType);
ParseAccountingSupplierParty(EDocument, TempXMLBuffer, RootPath);
ParseAccountingCustomerParty(EDocument, TempXMLBuffer, RootPath);

DueDate := GetNodeByPath(TempXMLBuffer, DocumentType + '/cbc:DueDate');
DueDate := GetNodeByPath(TempXMLBuffer, RootPath + '/cbc:DueDate');
if DueDate <> '' then
Evaluate(EDocument."Due Date", DueDate, 9);
IssueDate := GetNodeByPath(TempXMLBuffer, DocumentType + '/cbc:IssueDate');
IssueDate := GetNodeByPath(TempXMLBuffer, RootPath + '/cbc:IssueDate');
if IssueDate <> '' then
Evaluate(EDocument."Document Date", IssueDate, 9);

Evaluate(EDocument."Amount Excl. VAT", GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount'), 9);
Evaluate(EDocument."Amount Incl. VAT", GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:LegalMonetaryTotal/cbc:PayableAmount'), 9);
Evaluate(EDocument."Amount Excl. VAT", GetNodeByPath(TempXMLBuffer, RootPath + '/cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount'), 9);
Evaluate(EDocument."Amount Incl. VAT", GetNodeByPath(TempXMLBuffer, RootPath + '/cac:LegalMonetaryTotal/cbc:PayableAmount'), 9);

EDocument."Order No." := CopyStr(GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:OrderReference/cbc:ID'), 1, MaxStrLen(EDocument."Order No."));
EDocument."Order No." := CopyStr(GetNodeByPath(TempXMLBuffer, RootPath + '/cac:OrderReference/cbc:ID'), 1, MaxStrLen(EDocument."Order No."));

Currency := CopyStr(GetNodeByPath(TempXMLBuffer, DocumentType + '/cbc:DocumentCurrencyCode'), 1, MaxStrLen(EDocument."Currency Code"));
Currency := CopyStr(GetNodeByPath(TempXMLBuffer, RootPath + '/cbc:DocumentCurrencyCode'), 1, MaxStrLen(EDocument."Currency Code"));
GeneralLedgerSetup.Get();
if GeneralLedgerSetup."LCY Code" <> Currency then
EDocument."Currency Code" := Currency;
end;

local procedure ParseAccountingSupplierParty(var EDocument: Record "E-Document"; var TempXMLBuffer: Record "XML Buffer" temporary; DocumentType: Text)
local procedure ParseAccountingSupplierParty(var EDocument: Record "E-Document"; var TempXMLBuffer: Record "XML Buffer" temporary; RootPath: Text)
var
Vendor: Record Vendor;
EDocumentImportHelper: Codeunit "E-Document Import Helper";
VendorNo: Code[20];
begin
TryMatchVendor(EDocument, TempXMLBuffer, DocumentType, VendorNo);
TryMatchVendor(EDocument, TempXMLBuffer, RootPath, VendorNo);

Vendor := EDocumentImportHelper.GetVendor(EDocument, VendorNo);
if Vendor."No." <> '' then begin
Expand All @@ -78,15 +77,15 @@ codeunit 28007 "PINT A-NZ Import"
end;
end;

local procedure TryMatchVendor(EDocument: Record "E-Document"; var TempXMLBuffer: Record "XML Buffer" temporary; DocumentType: Text; var VendorNo: Code[20])
local procedure TryMatchVendor(EDocument: Record "E-Document"; var TempXMLBuffer: Record "XML Buffer" temporary; RootPath: Text; var VendorNo: Code[20])
var
EDocumentImportHelper: Codeunit "E-Document Import Helper";
VendorName, VendorAddress, VendorParticipantId : Text;
VATRegistrationNo: Text[20];
GLN: Code[13];
ABN: Code[11];
GLN: Code[13];
VendorAddress, VendorName, VendorParticipantId : Text;
VATRegistrationNo: Text[20];
begin
GetVendorRelatedData(TempXMLBuffer, DocumentType, ABN, GLN, VATRegistrationNo, VendorParticipantId, VendorName, VendorAddress);
GetVendorRelatedData(TempXMLBuffer, RootPath, ABN, GLN, VATRegistrationNo, VendorParticipantId, VendorName, VendorAddress);

if FindVendorByABN(VendorNo, ABN) then
exit;
Expand All @@ -100,20 +99,20 @@ codeunit 28007 "PINT A-NZ Import"
VendorNo := EDocumentImportHelper.FindVendorByNameAndAddress(VendorName, VendorAddress);
end;

local procedure GetVendorRelatedData(var TempXMLBuffer: Record "XML Buffer" temporary; DocumentType: Text; var ABN: Code[11]; var GLN: Code[13]; var VATRegistrationNo: Text[20]; VendorParticipantId: Text; VendorName: Text; VendorAddress: Text)
local procedure GetVendorRelatedData(var TempXMLBuffer: Record "XML Buffer" temporary; RootPath: Text; var ABN: Code[11]; var GLN: Code[13]; var VATRegistrationNo: Text[20]; VendorParticipantId: Text; VendorName: Text; VendorAddress: Text)
var
ABNSchemeIdTok: Label '0151', Locked = true;
GLNSchemeIdTok: Label '0088', Locked = true;
begin
if GetNodeAttributeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingSupplierParty/cac:Party/cbc:EndpointID/@schemeID') = ABNSchemeIdTok then
ABN := CopyStr(GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingSupplierParty/cac:Party/cbc:EndpointID'), 1, MaxStrLen(ABN));
if GetNodeAttributeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingSupplierParty/cac:Party/cbc:EndpointID/@schemeID') = GLNSchemeIdTok then
GLN := CopyStr(GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingSupplierParty/cac:Party/cbc:EndpointID'), 1, MaxStrLen(GLN));
VATRegistrationNo := CopyStr(GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID'), 1, MaxStrLen(VATRegistrationNo));
VendorParticipantId := GetNodeAttributeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingSupplierParty/cac:Party/cbc:EndpointID/@schemeID') + ':';
VendorParticipantId += this.GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingSupplierParty/cac:Party/cbc:EndpointID');
VendorName := GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingSupplierParty/cac:Party/cac:PartyName/cbc:Name');
VendorAddress := GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingSupplierParty/cac:Party/cac:PostalAddress/cbc:StreetName');
if GetNodeAttributeByPath(TempXMLBuffer, RootPath + '/cac:AccountingSupplierParty/cac:Party/cbc:EndpointID/@schemeID') = ABNSchemeIdTok then
ABN := CopyStr(GetNodeByPath(TempXMLBuffer, RootPath + '/cac:AccountingSupplierParty/cac:Party/cbc:EndpointID'), 1, MaxStrLen(ABN));
if GetNodeAttributeByPath(TempXMLBuffer, RootPath + '/cac:AccountingSupplierParty/cac:Party/cbc:EndpointID/@schemeID') = GLNSchemeIdTok then
GLN := CopyStr(GetNodeByPath(TempXMLBuffer, RootPath + '/cac:AccountingSupplierParty/cac:Party/cbc:EndpointID'), 1, MaxStrLen(GLN));
VATRegistrationNo := CopyStr(GetNodeByPath(TempXMLBuffer, RootPath + '/cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID'), 1, MaxStrLen(VATRegistrationNo));
VendorParticipantId := GetNodeAttributeByPath(TempXMLBuffer, RootPath + '/cac:AccountingSupplierParty/cac:Party/cbc:EndpointID/@schemeID') + ':';
VendorParticipantId += this.GetNodeByPath(TempXMLBuffer, RootPath + '/cac:AccountingSupplierParty/cac:Party/cbc:EndpointID');
VendorName := GetNodeByPath(TempXMLBuffer, RootPath + '/cac:AccountingSupplierParty/cac:Party/cac:PartyName/cbc:Name');
VendorAddress := GetNodeByPath(TempXMLBuffer, RootPath + '/cac:AccountingSupplierParty/cac:Party/cac:PostalAddress/cbc:StreetName');
end;

local procedure FindVendorByABN(var VendorNo: Code[20]; InputABN: Code[11]): Boolean
Expand Down Expand Up @@ -156,21 +155,20 @@ codeunit 28007 "PINT A-NZ Import"
exit(VendorNo <> '');
end;

local procedure ParseAccountingCustomerParty(var EDocument: Record "E-Document"; var TempXMLBuffer: Record "XML Buffer" temporary; DocumentType: Text)
local procedure ParseAccountingCustomerParty(var EDocument: Record "E-Document"; var TempXMLBuffer: Record "XML Buffer" temporary; RootPath: Text)
var
ReceivingId: Text[250];
begin
EDocument."Receiving Company Name" := CopyStr(GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingCustomerParty/cac:Party/cac:PartyName/cbc:Name'), 1, MaxStrLen(EDocument."Receiving Company Name"));
EDocument."Receiving Company Address" := CopyStr(GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:StreetName'), 1, MaxStrLen(EDocument."Receiving Company Address"));
EDocument."Receiving Company GLN" := CopyStr(GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingCustomerParty/cac:Party/cac:PartyIdentification/cbc:ID'), 1, MaxStrLen(EDocument."Receiving Company GLN"));
EDocument."Receiving Company VAT Reg. No." := CopyStr(GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingCustomerParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID'), 1, MaxStrLen(EDocument."Receiving Company VAT Reg. No."));
ReceivingId := CopyStr(this.GetNodeAttributeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingCustomerParty/cac:Party/cbc:EndpointID/@schemeID'), 1, (MaxStrLen(EDocument."Receiving Company Id") - 1)) + ':';
ReceivingId += CopyStr(this.GetNodeByPath(TempXMLBuffer, DocumentType + '/cac:AccountingCustomerParty/cac:Party/cbc:EndpointID'), 1, MaxStrLen(EDocument."Receiving Company Id") - StrLen(ReceivingId));
EDocument."Receiving Company Name" := CopyStr(GetNodeByPath(TempXMLBuffer, RootPath + '/cac:AccountingCustomerParty/cac:Party/cac:PartyName/cbc:Name'), 1, MaxStrLen(EDocument."Receiving Company Name"));
EDocument."Receiving Company Address" := CopyStr(GetNodeByPath(TempXMLBuffer, RootPath + '/cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:StreetName'), 1, MaxStrLen(EDocument."Receiving Company Address"));
EDocument."Receiving Company GLN" := CopyStr(GetNodeByPath(TempXMLBuffer, RootPath + '/cac:AccountingCustomerParty/cac:Party/cac:PartyIdentification/cbc:ID'), 1, MaxStrLen(EDocument."Receiving Company GLN"));
EDocument."Receiving Company VAT Reg. No." := CopyStr(GetNodeByPath(TempXMLBuffer, RootPath + '/cac:AccountingCustomerParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID'), 1, MaxStrLen(EDocument."Receiving Company VAT Reg. No."));
ReceivingId := CopyStr(this.GetNodeAttributeByPath(TempXMLBuffer, RootPath + '/cac:AccountingCustomerParty/cac:Party/cbc:EndpointID/@schemeID'), 1, (MaxStrLen(EDocument."Receiving Company Id") - 1)) + ':';
ReceivingId += CopyStr(this.GetNodeByPath(TempXMLBuffer, RootPath + '/cac:AccountingCustomerParty/cac:Party/cbc:EndpointID'), 1, MaxStrLen(EDocument."Receiving Company Id") - StrLen(ReceivingId));
EDocument."Receiving Company Id" := ReceivingId;
end;

local procedure GetDocumentType(var TempXMLBuffer: Record "XML Buffer" temporary): Text
var
local procedure GetDocumentType(var TempXMLBuffer: Record "XML Buffer" temporary; var RootPath: Text): Text
begin
TempXMLBuffer.Reset();
TempXMLBuffer.SetRange(Type, TempXMLBuffer.Type::Element);
Expand All @@ -179,6 +177,7 @@ codeunit 28007 "PINT A-NZ Import"
if not TempXMLBuffer.FindFirst() then
Error('Invalid XML file');

RootPath := TempXMLBuffer.Path;
TempXMLBuffer.Reset();
exit(TempXMLBuffer.Name);
end;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ubl:Invoice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<cbc:CustomizationID>urn:peppol:pint:billing-1@aunz-1</cbc:CustomizationID>
<cbc:ProfileID>urn:peppol:bis:billing</cbc:ProfileID>
<cbc:ID>INV-001</cbc:ID>
<cbc:IssueDate>2026-01-15</cbc:IssueDate>
<cbc:DueDate>2026-02-15</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>AUD</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>BR-001</cbc:BuyerReference>
<cac:OrderReference>
<cbc:ID>PO-001</cbc:ID>
</cac:OrderReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="0151">51824753556</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>Supplier Pty Ltd</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>100 Queen Street</cbc:StreetName>
<cbc:CityName>Sydney</cbc:CityName>
<cbc:PostalZone>2000</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>AU</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>51824753556</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>GST</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Supplier Pty Ltd</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="0151">12345678901</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>Buyer Pty Ltd</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>200 George Street</cbc:StreetName>
<cbc:CityName>Melbourne</cbc:CityName>
<cbc:PostalZone>3000</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>AU</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>12345678901</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>GST</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Buyer Pty Ltd</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="AUD">150.00</cbc:TaxAmount>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:TaxExclusiveAmount currencyID="AUD">1500.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="AUD">1650.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="AUD">1650.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="EA">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="AUD">1500.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Test Item</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>10</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>GST</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="AUD">150.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</ubl:Invoice>
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Invoice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<cbc:CustomizationID>urn:peppol:pint:billing-1@aunz-1</cbc:CustomizationID>
<cbc:ProfileID>urn:peppol:bis:billing</cbc:ProfileID>
<cbc:ID>INV-001</cbc:ID>
<cbc:IssueDate>2026-01-15</cbc:IssueDate>
<cbc:DueDate>2026-02-15</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>AUD</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>BR-001</cbc:BuyerReference>
<cac:OrderReference>
<cbc:ID>PO-001</cbc:ID>
</cac:OrderReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="0151">51824753556</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>Supplier Pty Ltd</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>100 Queen Street</cbc:StreetName>
<cbc:CityName>Sydney</cbc:CityName>
<cbc:PostalZone>2000</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>AU</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>51824753556</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>GST</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Supplier Pty Ltd</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="0151">12345678901</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>Buyer Pty Ltd</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>200 George Street</cbc:StreetName>
<cbc:CityName>Melbourne</cbc:CityName>
<cbc:PostalZone>3000</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>AU</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>12345678901</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>GST</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Buyer Pty Ltd</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="AUD">150.00</cbc:TaxAmount>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:TaxExclusiveAmount currencyID="AUD">1500.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="AUD">1650.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="AUD">1650.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="EA">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="AUD">1500.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Test Item</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>10</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>GST</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="AUD">150.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</Invoice>
Loading
Loading