UNPKG

@logismix/mydata-client

Version:
134 lines (133 loc) 6.3 kB
import { AadeBookInvoiceType } from '../models/invoice.model'; import { ResponseDoc } from '../models/response.model'; import { IncomeClassificationsDoc } from '../models/incomeClassification.model'; import { ExpensesClassificationsDoc } from '../models/expensesClassification.model'; import { PaymentMethodsDoc } from '../models/paymentMethods.model'; import { RequestedDoc } from '../models/requestedDoc.model'; import { RequestedProviderDoc } from '../models/requestedProviderDoc.model'; import { ReceiverInfoDoc } from '../models/receiverInfoDoc.model'; import { RequestedBookInfo } from '../models/requestedBookInfo.model'; import { RequestedVatInfo } from '../models/requestVatInfoResponse.model'; import { RequestedE3Info } from '../models/requestE3InfoResponse.model'; import { RequestDocParams, RequestMyDataParams, RequestVatE3Params } from '../models/request-params.model'; export interface MyDataClientConfig { userId: string; subscriptionKey: string; production: boolean; } /** * MyDATA API Service (Browser & Node.js compatible) * * This service provides functions for interacting with the Greek myDATA API for both ERP and Provider users. */ export declare class MyDataClient { private _xmlService; private _userId; private _subscriptionKey; private _production; private get erpBaseUrl(); private get providerBaseUrl(); constructor(initConfig: MyDataClientConfig); private getHeaders; private handleResponse; /** * [ERP] Sends one or more invoices, including corrected/amending ones. * @param invoices Array of invoice objects * @returns The full ResponseDoc from myDATA */ sendErpInvoices(invoices: AadeBookInvoiceType[]): Promise<ResponseDoc>; /** * [ERP] Sends one or more income classifications, corresponding to already submitted invoices. * @param classificationsDoc Object containing income classifications * @returns The full ResponseDoc from myDATA */ sendErpIncomeClassification(classificationsDoc: IncomeClassificationsDoc): Promise<ResponseDoc>; /** * [ERP] Sends one or more expense classifications. * @param classificationsDoc Object containing classifications * @returns The full ResponseDoc from myDATA */ sendErpExpensesClassification(classificationsDoc: ExpensesClassificationsDoc): Promise<ResponseDoc>; /** * [ERP] Sends payment methods for an invoice. * @param paymentsDoc Object containing payment methods * @returns The full ResponseDoc from myDATA */ sendErpPaymentsMethod(paymentsDoc: PaymentMethodsDoc): Promise<ResponseDoc>; /** * [ERP] Cancels a previously transmitted invoice. * @param mark The MARK of the invoice to cancel * @param entityVatNumber Optional: VAT of the entity if called by a representative * @returns The full ResponseDoc from myDATA (containing cancellationMark on success) */ cancelErpInvoice(mark: number, entityVatNumber?: string): Promise<ResponseDoc>; /** * [ERP] Requests documents (invoices, classifications, cancellations) received from others. * @param params Search parameters * @returns Parsed RequestedDoc object */ requestErpDocs(params: RequestDocParams): Promise<RequestedDoc>; /** * [ERP] Requests documents (invoices, classifications, cancellations) previously transmitted by the user. * @param params Search parameters * @returns Parsed RequestedDoc object */ requestErpTransmittedDocs(params: RequestDocParams): Promise<RequestedDoc>; /** * [ERP] Requests aggregated income data for a period. * @param params Search parameters (dateFrom, dateTo required) * @returns Parsed RequestedBookInfo object */ requestErpMyIncome(params: RequestMyDataParams): Promise<RequestedBookInfo>; /** * [ERP] Requests aggregated expense data for a period. * @param params Search parameters (dateFrom, dateTo required) * @returns Parsed RequestedBookInfo object */ requestErpMyExpenses(params: RequestMyDataParams): Promise<RequestedBookInfo>; /** * [ERP] Requests VAT related data for a period. * @param params Search parameters (dateFrom, dateTo required) * @returns Parsed RequestedVatInfo object */ requestErpVatInfo(params: RequestVatE3Params): Promise<RequestedVatInfo>; /** * [ERP] Requests E3 related data for a period. * @param params Search parameters (dateFrom, dateTo required) * @returns Parsed RequestedE3Info object */ requestErpE3Info(params: RequestVatE3Params): Promise<RequestedE3Info>; /** * [Provider] Sends one or more invoices. * @param invoices Array of invoice objects * @returns The full ResponseDoc from myDATA */ sendProviderInvoices(invoices: AadeBookInvoiceType[]): Promise<ResponseDoc>; /** * [Provider] Sends one or more invoices pending issuance (unsigned). * @param invoices Array of invoice objects * @returns The full ResponseDoc from myDATA */ sendProviderUnsignedInvoices(invoices: AadeBookInvoiceType[]): Promise<ResponseDoc>; /** * [Provider] Sends payment methods for an invoice. * @param paymentsDoc Object containing payment methods * @returns The full ResponseDoc from myDATA */ sendProviderPaymentsMethod(paymentsDoc: PaymentMethodsDoc): Promise<ResponseDoc>; /** * [Provider] Requests summaries of documents previously transmitted by the provider for a specific issuer. * @param issuerVat The VAT number of the issuer whose invoices were sent * @param mark The minimum MARK to retrieve (exclusive) * @param nextPartitionKey Optional key for pagination * @param nextRowKey Optional key for pagination * @returns Parsed RequestedProviderDoc object */ requestProviderTransmittedDocs(issuerVat: string, mark: number, nextPartitionKey?: string, nextRowKey?: string): Promise<RequestedProviderDoc>; /** * [Provider] Requests information about a recipient's registered providers and emails. * @param vatNumber The VAT number of the recipient entity to query * @returns Parsed ReceiverInfoDoc object */ requestProviderReceiverInfo(vatNumber: string): Promise<ReceiverInfoDoc>; }