UNPKG

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
/** * 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); }); });