data-and-reporting-sdk
Version:
Data And Reporting product consists of API's which provides details of transaction and invoice informations about shell cards. The Shell Card Transaction and Invoice API is REST-based and employs Basic authentication in Version 1 and Oauth authentication
651 lines (579 loc) • 18.6 kB
text/typescript
/**
* Shell Data & Reporting APIsLib
*
* This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
*/
import {
EIDDocumentResponse,
EIDDownloadRequest,
EIDSearchRequest,
InvoiceController,
InvoiceDatesRequest,
InvoiceDatesResponseData,
InvoiceDownloadRequest,
InvoiceSearchRequest,
InvoiceSearchResponse,
InvoiceSummaryRequest,
InvoiceSummaryResponse,
SearchDocumentsRequest,
SearchDocumentsResponse,
SearchStatementOfAccountRequest,
SearchStatementOfAccountResponse,
StatementOfAccountRequest,
StatementOfAccountResponse,
} from '../src';
import { testClient } from './testClient';
import {
expectHeadersToMatch,
expectMatchingWithOptions,
makeApiCall,
} from './testHelper';
describe('InvoiceController', () => {
let controller : InvoiceController;
beforeAll(() => {
controller = new InvoiceController(testClient);
});
it('should Test InvoiceSearch', async () => {
const requestId = '2b0cbe11-f109-4c43-9201-49af0370df1c';
const body: InvoiceSearchRequest = {
filters: {
colCoId: 14,
payerId: 78,
payerNumber: 'DE26688478',
invoiceId: 4013059,
invoiceNumber: '0123456789',
fromDate: '20170830',
toDate: '20171031',
invoiceDate: '20171031',
summaryDocumentId: 1616729,
summaryDocumentNumber: '1283899/289261063/2019',
statementOfAccountId: 'DE26702892',
soAReferenceNumber: '1283899',
period: 1,
invoiceStatus: 'Due',
invoicedOnBehalfOf: 'DE',
includeEInvoiceDetails: false,
type: 'Original',
},
pageSize: 50,
page: 1,
};
const response = await makeApiCall(
() => controller.invoiceSearch(requestId, body)
);
expect(response.statusCode).toBe(200);
const expectedHeaders = { 'Content-Type': ['application/json', true] };
expectHeadersToMatch(response.headers, expectedHeaders);
const expected: InvoiceSearchResponse = {
requestId: '18c955d1-b3ec-4dc0-95da-76e67afb891a',
status: 'SUCCESS',
data: [
{
accountFullName: 'powder ambition ERF ',
accountId: 179827,
accountNumber: 'DE26702892',
accountShortName: 'soft grocery Argyle ',
colCoId: 14,
colCoOpCoId: '014',
currentBillingFrequency: 'Last day of month',
currentBillingFrequencyId: 40,
currentDistributionMethod: 'e-mail',
currentDistributionMethodId: 1,
customerCurrencyCode: 'EUR',
customerCurrencySymbol: '€',
delCoClientNumber: '014',
delCoId: 14,
delCoOpCoId: '014',
documentType: 'Invoice',
documentTypeId: 1,
dueDate: '20190707',
grossAmountCustomerCurrency: 22.85,
grossAmountTransactionCurrency: 22.85,
invoiceDate: '20190630',
invoicedBy: 'euroShell Deutschland GmbH & Co. KG',
invoicedOnBehalfOf: 'Germany',
invoiceId: 4013059,
invoiceNumber: '6402009004',
isInternational: false,
isNational: true,
netAmountCustomerCurrency: 19.2,
netAmountTransactionCurrency: 19.2,
payerId: 164825,
payerNumber: 'DE26688478',
paymentTerms: '7 days after invoice',
paymentTermsId: 9,
replacementInvoiceId: 172,
reversalInvoiceId: 30,
status: 'Paid',
summaryDocumentBillingType: 'Standard Invoice',
summaryDocumentBillingTypeId: 0,
summaryDocumentDate: '20190630',
summaryDocumentDDAmount: 22.85,
summaryDocumentDueDate: '20190707',
summaryDocumentId: 1616729,
summaryDocumentIsFullyPaid: true,
summaryDocumentNumber: '1283899/289261063/2019',
summaryDocumentPaidAmount: 22.85,
summaryDocumentSoAReferenceNumber: '2000745709',
summaryDocumentStatementOfAccountId: 2000745709,
transactionCurrencyCode: 'EUR',
transactionCurrencySymbol: '€',
type: 'Original',
typeId: 1,
vATAmountCustomerCurrency: 3.65,
vATAmountTransactionCurrency: 3.65,
vATCountry: 'Germany',
vATCountryId: 9,
vATCountryISOCode: 'DE',
vATCountryOpCoId: '014',
}
],
page: 1,
pageSize: 50,
totalRecords: 1,
totalPages: 1,
};
expect(response.result).not.toBeNull();
expectMatchingWithOptions(
expected,
response.result,
{ allowExtra: true, isOrdered: false, checkValues: false }
);
});
it('should Test InvoiceSummary', async () => {
const requestId = '2b0cbe11-f109-4c43-9201-49af0370df1c';
const body: InvoiceSummaryRequest = {
filters: {
colCoId: 14,
payerId: 78,
payerNumber: 'DE26688478',
invoiceId: 4013059,
invoiceNumber: '0123456789',
fromDate: '20170830',
toDate: '20171031',
invoiceDate: '20171031',
summaryDocumentId: 1616729,
summaryDocumentNumber: '1283899/289261063/2019',
statementOfAccountId: 'DE26702892',
soAReferenceNumber: '1283899',
period: 1,
invoiceStatus: 'Due',
invoicedOnBehalfOf: 'DE',
includeEInvoiceDetails: false,
type: 'Original',
},
};
const response = await makeApiCall(
() => controller.invoiceSummary(requestId, body)
);
expect(response.statusCode).toBe(200);
const expectedHeaders = { 'Content-Type': ['application/json', true] };
expectHeadersToMatch(response.headers, expectedHeaders);
const expected: InvoiceSummaryResponse = {
requestId: 'a0a1596f-b242-4672-b513-66c5e5554195',
status: 'SUCCESS',
data: [
{
totalInvoices: 1,
totalGrossAmountCustomerCurrency: 22.85,
totalNetAmountCustomerCurrency: 19.2,
totalVATAmountCustomerCurrency: 3.65,
customerCurrencyCode: 'EUR',
customerCurrencySymbol: '€',
}
],
};
expect(response.result).not.toBeNull();
expectMatchingWithOptions(
expected,
response.result,
{ allowExtra: true, isOrdered: false, checkValues: false }
);
});
it('should Test StatementOfAccount', async () => {
const requestId = '2b0cbe11-f109-4c43-9201-49af0370df1c';
const body: StatementOfAccountRequest = {
filters: {
colCoCode: 32,
payerId: 308,
payerNumber: 'CZ56891709',
includeMonthlyInvoiceTrend: true,
includePastStatementOfAccounts: true,
dueOrOverDueSOADocumentsOnly: false,
numberOfSOADocuments: 10,
includeAccountInvoicesSummary: true,
},
};
const response = await makeApiCall(
() => controller.statementOfAccount(requestId, body)
);
expect(response.statusCode).toBe(200);
const expectedHeaders = { 'Content-Type': ['application/json', true] };
expectHeadersToMatch(response.headers, expectedHeaders);
const expected: StatementOfAccountResponse = {
requestId: '5acba53b-3ce7-4f4b-ab59-1db09399aa6a',
status: 'SUCCESS',
data: [
{
lastStatementOfAccount: {
amountDue: 123699.71,
amountNotOverdue: 136604.83,
amountOverdue: 926469.11,
creditLimit: 7000000,
creditLimitCurrencyCode: 'CZK',
creditLimitCurrencySymbol: 'Kč',
creditLimitInCustomerCurrency: 286826.469986,
currencyCode: 'EUR',
currencySymbol: '€',
lastPaymentCurrencyCode: 'EUR',
lastPaymentCurrencySymbol: '€',
lastPaymentDate: '20220209',
lastPaymentValue: 17918.98,
outstandingBalance: 1186773.65,
payerId: 308,
payerNumber: 'CZ56891709',
paymentDueDate: '20230608',
paymentMethod: 'Incoming - Bank Transfer',
paymentMethodId: 4,
paymentTerms: '30 days after Invoice',
paymentTermsId: 4,
soAReferenceNumber: '2003923319',
statementDate: '20230509',
statementOfAccountId: 2003923319,
totalBillingDocuments: 6,
totalSummaryBillingDocuments: 1,
unallocatedPayment: 0,
},
pastStatementOfAccounts: [
{
amountDue: 136604.83,
amountNotOverdue: 130344.09,
amountOverdue: 796109.41,
amountOverdueFromUnallocated: 0,
amountPaid: 0,
balanceOnThisStatement: 5866.1,
billingCurrencyCode: 'EUR',
billingCurrencySymbol: '€',
creditLimit: 7000000,
creditLimitCurrencyCode: 'CZK',
creditLimitCurrencySymbol: 'Kč',
creditLimitInCustomerCurrency: 286826.4699857,
currencyCode: 'EUR',
currencySymbol: '€',
fullyPaid: false,
lastPaymentCurrencyCode: 'EUR',
lastPaymentCurrencySymbol: '€',
lastPaymentDate: '20220209',
lastPaymentValue: 17918.98,
outstandingBalance: 1063058.33,
payerId: 308,
payerNumber: 'CZ56891709',
paymentDueDate: '20230511',
soAReferenceNumber: '2003920583',
statementDate: '20230411',
statementOfAccountId: 2003920583,
totalBillingDocuments: 3,
totalNetAmountBillingCurrency: 4847.94,
totalSummaryBillingDocuments: 1,
totalVATAmountBillingCurrency: 1018.16,
unallocatedPayment: 0,
localCurrencyCode: 'EUR',
localCurrencySymbol: '€',
localCurrencyExchangeRate: 24.405,
}
],
}
],
};
(expected.data ?? [])[0].monthlyInvoiceTrend = null;
(expected.data ?? [])[0].paymentsSinceLastSOA = null;
(expected.data ?? [])[0].invoicesSummaries = null;
expect(response.result).not.toBeNull();
expectMatchingWithOptions(
expected,
response.result,
{ allowExtra: true, isOrdered: false, checkValues: false }
);
});
it('should Test Dates', async () => {
const requestId = '2b0cbe11-f109-4c43-9201-49af0370df1c';
const body: InvoiceDatesRequest = {
filters: {
colCoCode: 0,
colCoId: 0,
payerId: 0,
payerNumber: 'string',
accounts: [
{
accountId: 3453,
accountNumber: 'GB000000124',
}
],
},
};
const response = await makeApiCall(
() => controller.dates(requestId, body)
);
expect(response.statusCode).toBe(200);
const expectedHeaders = { 'Content-Type': ['application/json', true] };
expectHeadersToMatch(response.headers, expectedHeaders);
const expected: InvoiceDatesResponseData = {
requestId: 'a0a1596f-b242-4672-b513-66c5e5554195',
status: 'SUCCESS',
data: [
{
invoiceNumbers: [
'6402009004'
],
invoiceDates: [
'20170101'
],
}
],
};
expect(response.result).not.toBeNull();
expectMatchingWithOptions(
expected,
response.result,
{ allowExtra: true, isOrdered: false, checkValues: false }
);
});
it('should Test SearchStatementOfAccount', async () => {
const requestId = '2b0cbe11-f109-4c43-9201-49af0370df1c';
const body: SearchStatementOfAccountRequest = {
filters: {
colCoCode: 18,
payerNumber: 'NL99781417',
invoiceNumber: '0123456789',
fromDate: '2022/05/04',
toDate: '2022/05/10',
period: 1,
invoiceDate: '20170830',
invoiceStatus: [
'Due'
],
sortBy: [
1
],
},
page: 1,
pageSize: 10,
};
const response = await makeApiCall(
() => controller.searchStatementOfAccount(requestId, body)
);
expect(response.statusCode).toBe(200);
const expectedHeaders = { 'Content-Type': ['application/json', true] };
expectHeadersToMatch(response.headers, expectedHeaders);
const expected: SearchStatementOfAccountResponse = {
requestId: 'a0a1596f-b242-4672-b513-66c5e5554195',
status: 'SUCCESS',
data: [
{
statementOfAccountId: 2001581712,
soAReferenceNumber: '2001581712',
statementDate: '20220505',
payerId: 17150,
payerNumber: 'NL99781417',
amountDue: 0,
amountOverdue: 197046.47,
currencyCode: 'EUR',
currencySymbol: '€',
dueDate: '20220604',
invoicedOnBehalfOf: 'Netherlands',
status: 'OverDue',
grossAmountCustomerCurrency: 0,
documentReferenceNumber: 'DocumentReferenceNumber2',
}
],
page: 1,
totalRecords: 62,
totalPages: 7,
pageSize: 10,
};
expect(response.result).not.toBeNull();
expectMatchingWithOptions(
expected,
response.result,
{ allowExtra: true, isOrdered: false, checkValues: false }
);
});
it('should Test SearchDocuments', async () => {
const requestId = '2b0cbe11-f109-4c43-9201-49af0370df1c';
const body: SearchDocumentsRequest = {
filters: {
payerNumber: 'DE00000096',
colCoCode: 14,
accountNumber: 'DE00000096',
accountNumberList: [
'DE00000123',
'DE00000225'
],
invoiceNumber: '1234567',
invoiceNumberList: [
'6400013693',
'9421000010'
],
invoiceStatus: 'NEW',
issuingDateFrom: '2023/05/01',
issuingDateTo: '2023/06/30',
dueDateFrom: '2023/05/04',
dueDateTo: '2023/06/30',
grossAmount: '1000',
grossAmountOperator: 'LT',
documentType: 'SOA',
vATIssuerCountry: 'DE',
sortyBy: [
'InvoiceNumber ASC',
'InvoiceDate DESC'
],
},
page: '1',
pageSize: '50',
};
const response = await makeApiCall(
() => controller.searchDocuments(requestId, body)
);
expect(response.statusCode).toBe(200);
const expectedHeaders = { 'Content-Type': ['application/json', true] };
expectHeadersToMatch(response.headers, expectedHeaders);
const expected: SearchDocumentsResponse = {
requestId: 'a8b81c1d-f44a-4365-8113-8958061c0b7e',
status: 'SUCCESS',
data: [
{
documentReference: 311161,
invoiceNumber: '6400013693',
payerName: 'DE00000096',
accountNumber: 'DE00000096',
accountName: 'DE00000096',
documentType: 'NAT',
grossAmount: -3141.93,
netAmount: 0,
taxAmount: 0,
currencyCode: 'EUR',
invoiceStatus: 'NEW',
invoiceDate: '2023/01/31',
dueDate: '2023/02/07',
vATCountryISOCode: 'DE',
}
],
totalRecords: 2,
totalRecordsOnPage: 2,
isFirstPage: true,
isLastPage: true,
};
expect(response.result).not.toBeNull();
expectMatchingWithOptions(
expected,
response.result,
{ allowExtra: true, isOrdered: false, checkValues: false }
);
});
it('should Test EidSearch', async () => {
const requestId = '2b0cbe11-f109-4c43-9201-49af0370df1c';
const body: EIDSearchRequest = {
filters: {
colCoCode: 32,
accountGroupCountry: 32,
accountGroupId: [
'122'
],
fromDate: '2017/08/30',
toDate: '2017/10/31',
invoiceType: 'NAT',
invoiceStatus: 'NEW',
sortBy: [
'DocumentDate ASC'
],
},
page: 1,
pageSize: 10,
};
body.filters.accountGroupName = null;
const response = await makeApiCall(
() => controller.eidSearch(requestId, body)
);
expect(response.statusCode).toBe(200);
const expectedHeaders = { 'Content-Type': ['application/json', true] };
expectHeadersToMatch(response.headers, expectedHeaders);
const expected: EIDDocumentResponse = {
requestId: 'a0a1596f-b242-4672-b513-66c5e5554195',
status: 'SUCCESS',
data: [
{
documentId: 15029,
accountGroupId: '122',
accountGroupName: 'EID-122',
documentType: 'INT',
documentFormat: 'FLAT',
documentDate: '2022/12/28',
numberOfInvoices: 1,
fileSize: 1624,
documentStatus: 'DOWNLOADED',
documentName: '032_122_INT_28122022.TXT',
}
],
pageSize: 1,
page: 1,
totalPages: 12,
totalRecords: 120,
isFirstPage: true,
isLastPage: false,
};
expect(response.result).not.toBeNull();
expectMatchingWithOptions(
expected,
response.result,
{ allowExtra: true, isOrdered: false, checkValues: false }
);
});
it('should Test Download', async () => {
const requestId = '2b0cbe11-f109-4c43-9201-49af0370df1c';
const body: InvoiceDownloadRequest = {
filters: {
colCoCode: 18,
payerNumber: 'NL99781417',
accountNumber: [
'NL99781420'
],
documentReference: [
1234567890
],
invoiceOrSOANumber: '2234556',
},
};
const response = await makeApiCall(
() => controller.download(requestId, body)
);
expect(response.statusCode).toBe(200);
const expectedHeaders = {
'Content-Type': ['application/octet-stream', true],
};
expectHeadersToMatch(response.headers, expectedHeaders);
});
it('should Test EidDownload', async () => {
const requestId = '2b0cbe11-f109-4c43-9201-49af0370df1c';
const body: EIDDownloadRequest = {
filters: {
colCoCode: 18,
eIDList: [
'1710187',
'1734566'
],
accountGroupCountry: 18,
accountGroupIdList: [
'26685402'
],
},
};
const response = await makeApiCall(
() => controller.eidDownload(requestId, body)
);
expect(response.statusCode).toBe(200);
const expectedHeaders = {
'Content-Type': ['application/octet-stream', true],
};
expectHeadersToMatch(response.headers, expectedHeaders);
});
});