@logismix/mydata-client
Version:
Greek myDATA (AADE) API client library
134 lines (133 loc) • 6.3 kB
TypeScript
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>;
}