UNPKG

@phasesdk/api-client-for-economic

Version:

e-conomic REST API Library for Node.js is a powerful tool designed to simplify integration with the e-conomic platform for developers building Node.js applications. With this library, developers can effortlessly leverage the full functionality of the e-co

305 lines (304 loc) 9.74 kB
import { AuthToken, EconomicResponse, Pagination } from "../../types/Economic.type"; import { HttpResponse } from "../../types/Http.type"; import RestApi from "../RestApi"; import { Employee } from "./Employees"; import { DraftInvoice, InvoiceEndpoints, Totals } from "./Invoices"; import { Layout } from "./Layouts"; import { PaymentTerms } from "./PaymentTerms"; import { Templates } from "./Templates"; import { VatZone, VatZoneInfo } from "./Vatzone"; export type CustomerGroup = { customerGroupNumber: number; self: string; }; export type Customer = { authToken: any; address: string; attention: Attention; balance: number; barred: boolean; city: string; contacts: string; corporateIdentificationNumber: string; country: string; creditLimit: number; currency: string; customerContact: CustomerContactInfo; customerGroup: CustomerGroup; customerNumber: number; defaultDeliveryLocation: DefaultDeliveryLocation; deliveryLocations: string; dueAmount: number; ean: string; eInvoicingDisabledByDefault: boolean; email: string; invoices: Pick<InvoiceEndpoints, "booked" | "drafts" | "self">; lastUpdated: string; layout: Layout; mobilePhone: string; name: string; paymentTerms: PaymentTerms; pNumber: string; publicEntryNumber: string; salesPerson: Employee; self: string; telephoneAndFaxNumber: string; templates: Pick<Templates, "invoice" | "invoiceLine" | "self">; totals: Totals; vatNumber: string; vatZone: VatZone; website: string; zip: string; }; export type CustomerInfo = Pick<Customer, "customerNumber" | "self">; export type Attention = { customerContactNumber: number; self: string; }; export type CustomerContactInfo = { customerContactNumber: number; self: string; }; export type DefaultDeliveryLocation = { deliveryLocationNumber: number; self: string; }; export type CustomerTotals = { booked: string; drafts: string; self: string; }; export type CustomerDeliveryLocations = { address: string; barred: boolean; city: string; country: string; customer: CustomerInfo; deliveryLocationNumber: number; postalCode: string; self: string; sortKey: number; termsOfDelivery: string; }; export type CustomerContact = { customer: CustomerInfo; customerContactNumber: number; deleted: boolean; eInvoiceId: string; email: string; emailNotifications: []; name: string; notes: string; phone: string; self: string; sortKey: number; }; export type CreateCustomerContact = { customer: CustomerInfo; eInvoiceId: string; email: string; name: string; phone: string; sortKey: number; notes?: string; }; export type CreateCustomerDeliveryLocation = { address: string; barred: boolean; city: string; country: string; postalCode: string; sortKey: number; termsOfDelivery: string; }; export type SalesPerson = { employeeNumber: number; self: string; }; export type References = { customerContact: { customerContactNumber: number; self: string; }; salesPerson: SalesPerson; }; export type Recipient = { address: string; attention: Attention; city: string; country: string; ean: string; name: string; publicEntryNumber: string; vatZone: VatZoneInfo; zip: string; }; export type DeliveryInfo = { address: string; city: string; country: string; deliveryDate: string; deliveryTerms: string; zip: string; }; export type DeliveryLocationInfo = { deliveryLocationNumber: number; self: string; }; export type CustomerInvoiceTemplate = { customer: { customerNumber?: number; self: string; }; deliveryLocation: { deliveryLocationNumber?: number; self: string; }; paymentTerms: { paymentTermsNumber?: number; self: string; }; recipient: { attention: { customerContactNumber?: number; self: string; }; vatZone: { vatZoneNumber?: number; self: string; }; address?: string; city?: string; country?: string; ean?: string; name?: string; publicEntryNumber?: string; zip?: string; }; references: { customerContact: { customerContactNumber?: number; self: string; }; salesPerson: { employeeNumber?: number; self: string; }; }; currency?: string; date?: string; dueDate?: string; exchangeRate?: number; delivery?: { address?: string; city?: string; country?: string; deliveryDate?: string; deliveryTerms?: string; zip?: string; }; }; export type ProductInfo = { productNumber?: string; self: string; }; export type CustomerInvoiceLineTemplate = { description?: string; product: ProductInfo; self: string; }; export default class Customers extends RestApi { /** * @constructor */ constructor(props: AuthToken); getUrl(): string; /** * Get collection of customers. * @see https://restdocs.e-conomic.com/#get-customers * * @param {number} offset * @param {number} limit * @returns {Promise<HttpResponse>} */ get(offset?: number, limit?: number): Promise<HttpResponse<EconomicResponse<Customer[], Pagination, any>>>; /** * Get a specific customer * @see https://restdocs.e-conomic.com/#get-customers-customernumber * @param {number} customerNumber * @returns {Promise<HttpResponse>} */ getFor(customerNumber: number): Promise<HttpResponse<Customer>>; /** * Returns a specific customer totals. * @see https://restdocs.e-conomic.com/#get-customers-customernumber-totals * @param {number} customerNumber * @returns {Promise<HttpResponse>} */ getCustomerTotals(customerNumber: number): Promise<HttpResponse<CustomerTotals>>; /** * Returns a specific customer delivery locations. * @see https://restdocs.e-conomic.com/#get-customers-customernumber-delivery-locations * @param {number} customerNumber * @returns {Promise<HttpResponse>} */ getCustomerDeliveryLocations(customerNumber: number, skipPages?: number, limit?: number): Promise<HttpResponse<EconomicResponse<CustomerDeliveryLocations[], Pagination, any>>>; /** * Returns a specific customer contacts. * * @see https://restdocs.e-conomic.com/#get-customers-customernumber-contacts * @param {number} customerNumber * @returns {Promise<HttpResponse>} */ getCustomerContacts(customerNumber: number, skipPages?: number, limit?: number): Promise<HttpResponse<EconomicResponse<CustomerContact[], Pagination, any>>>; /** * Returns a specific customer invoices drafts. * * @see https://restdocs.e-conomic.com/#get-customers-customernumber-invoices-drafts * @param {number} customerNumber * @returns {Promise<HttpResponse>} */ getCustomerInvoiceDrafts(customerNumber: number, skipPages?: number, limit?: number): Promise<HttpResponse<EconomicResponse<DraftInvoice[], Pagination, any>>>; /** * Create a new customer * @see https://restdocs.e-conomic.com/#customers-create * @param {Customer} customer * @returns {Promise<HttpResponse<Customer>>} */ createCustomer(customer: Customer): Promise<HttpResponse<Customer>>; /** * Create a new customer contact * @see https://restdocs.e-conomic.com/#post-customers-customernumber-contacts * @param {number} customerNumber * @param {CreateCustomerContact} contact * @returns {Promise<HttpResponse<CustomerContact>>} */ createCustomerContact(customerNumber: number, contact: CreateCustomerContact): Promise<HttpResponse<CustomerContact>>; /** * Create a new customer delivery location * @see https://restdocs.e-conomic.com/#post-customers-customernumber-delivery-locations * @param {number} customerNumber * @param {CreateCustomerDeliveryLocation} deliveryLocation * @returns {Promise<HttpResponse<CustomerDeliveryLocations>>} */ createCustomerDeliveryLocation(customerNumber: number, deliveryLocation: CreateCustomerDeliveryLocation): Promise<HttpResponse<CustomerDeliveryLocations>>; /** * Get a specific contact for a specific customer * @see https://restdocs.e-conomic.com/#get-customers-customernumber-contacts-contactnumber * @param {number} customerNumber * @param {number} contactNumber * @returns {Promise<HttpResponse>} */ getCustomerContact(customerNumber: number, contactNumber: number): Promise<HttpResponse<CustomerContact>>; /** * Get a specific delivery location for a specific customer * @see https://restdocs.e-conomic.com/#get-customers-customernumber-delivery-locations-deliverylocationnumber * @param {number} customerNumber * @param {number} deliveryLocationNumber * @returns {Promise<HttpResponse>} */ getCustomerDeliveryLocation(customerNumber: number, deliveryLocationNumber: number): Promise<HttpResponse<CustomerDeliveryLocations>>; getCustomerTemplate(customerNumber: number): Promise<HttpResponse<Templates>>; getCustomerInvoiceTemplate(customerNumber: number): Promise<HttpResponse<CustomerInvoiceTemplate>>; getCustomerInvoiceLineTemplate(customerNumber: number, skipPages?: number, limit?: number): Promise<HttpResponse<EconomicResponse<CustomerInvoiceLineTemplate[], Pagination, any>>>; }