UNPKG

@salaxy/reports

Version:

Salaxy (Palkkaus.fi) reporting library

1,297 lines (1,244 loc) 66.2 kB
import { AccountingData } from '@salaxy/core'; import { AuthorizationPdfParams } from '@salaxy/core'; import { Avatar } from '@salaxy/core'; import { CalcGroup } from '@salaxy/core'; import { Calculation } from '@salaxy/core'; import { CalendarDay } from '@salaxy/core'; import { CalendarMonth } from '@salaxy/core'; import { CalendarSeries } from '@salaxy/core'; import { Contact } from '@salaxy/core'; import { CostAccountingDimensionDefinition } from '@salaxy/core'; import { DateRange } from '@salaxy/core'; import { Invoice } from '@salaxy/core'; import { InvoiceListItem } from '@salaxy/core'; import { IrRow } from '@salaxy/core'; import { Language } from '@salaxy/core'; import { ReportType } from '@salaxy/core'; import { SummaryReportData } from '@salaxy/core'; import { WorkerSummaryReportData } from '@salaxy/core'; /** * Mapper for accounting report. */ export declare class AccountingMapper { /** * Maps data to hbs supported report format * @param data BusinessObject data for mapping * @returns Mapped data */ static getAccountingReport(data: AccountingData): AccountingReport; /** * Creates HeaderFooterData from provided parameters * @param businessObject AccountingData that * @param options Report options * @param lang gets translation with this lang, if null use current lang * @returns HeaderFooterData for provided businessObject */ static getHeaderFooter(businessObject: AccountingData, options: ReportOptions, lang: Language): HeaderFooterData; /** * Creates ReporLayout object depending on switchToPortrait boolean * @param switchToPortrait boolean indicating if layout should be portrait * @returns ReportLayout object */ static getReportLayout(switchToPortrait: boolean, pdf?: boolean): ReportLayout; } /** Contains accounting data structured for easy rendering in reports. */ export declare interface AccountingReport extends AccountingData { /** Accounting report result row displayed in report */ result?: IAccountingReportResultRow[] | null; /** Optional data based dimension headers for report */ dimensionHeaders?: string[] | null; /** Global pre defined dimension headers for report */ globalDimensions?: string[] | null; } /** * Mapper for authorization. */ export declare class AuthorizationMapper { /** * Loads report type specific HeaderFooterData. * @param reportOptions The AuthorizationPdf entity used to load the HeaderFooterData. * @param lang gets translation with this lang, if null use current lang * @returns Returns HeaderFooterData. */ static getHeaderFooter(reportOptions: ReportOptions, lang: Language): HeaderFooterData; /** * Loads report type specific HeaderFooterData. * @param reportOptions The AuthorizationPdf entity used to load the HeaderFooterData. * @param lang gets translation with this lang, if null use current lang * @returns Returns HeaderFooterData. */ static getRaksaHeaderFooter(reportOptions: ReportOptions, lang: Language): HeaderFooterData; /** * Loads report type specific HeaderFooterData. * @param reportOptions The AuthorizationPdf entity used to load the HeaderFooterData. * @param lang gets translation with this lang, if null use current lang * @returns Returns HeaderFooterData. */ static getKycHeaderFooter(reportOptions: ReportOptions, lang: Language): HeaderFooterData; /** * Loads the raw report that is then rendered downstream as an html or pdf report. Also handles if person or company * @param businessObject Authorization entity * @returns Authorization */ static getAuthorizationReport(businessObject: AuthorizationPdfParams): AuthorizationPdfParams; /** * Loads the authorization layout for pdf or html reports. * @param pdf Are we rendering a pdf report or not. * @returns Returns authorization layout. */ static loadReportLayout(pdf: boolean): ReportLayout; } /** * Helpers for generating barcode values. * Using format Code 128 (Uniform Symbology Specification) * with Modulo 103 algorithm for generating checksum. * @see http://www.finanssiala.fi/maksujenvalitys/dokumentit/Bank_bar_code_guide.pdf * @see http://www.finanssiala.fi/maksujenvalitys/dokumentit/Pankkiviivakoodi-opas.pdf */ export declare class Barcodes { /** * Creates a value for barcode labels. Does not calculate the checksum by default. * Most libraries, which generate barcode labels, add the checksum and start and stop sequences automatically, * and those are not needed to be calculated externally. * @param iban - IBAN bank account number. Must be a Finnish IBAN. Can have whitespace. * @param ref - Reference number as a string. Either fully numeric (max len 20), or starting with RF (max len 2+23). * Can have whitespace. * @param dueDate - Date as ISO date (yyyy-MM-dd). False fills values with zeros. * @param euroAmount - Euro amount. If string, e.g. 3030,33€, is converted to cents amount 303033. * Alternative can be passed cents amount as number. * @param includeChecksum - Calculates and appends the checksum to the end of the barcode value. * @returns The barcode value (without start and end characters). The checksum is only calculated and appended to the value if the includeChecksum-parameter is true. */ static getValue(iban: string, ref: string, dueDate: string | false, euroAmount: number | string, includeChecksum?: boolean): string; /** * Takes in 54 characters string value and calculates modulo 103 value. * @param val - 54 characters long string of numbers * @returns A Number within range of 0-99. Reminder of dividing the sum total of weighted value pairs with 103. */ static modulo103(val: string): number; /** * Creates a barcode SVG string based on the provided parameters. * @param getDocumentAndSvgNode - The document and SVG node to render the barcode on. * @param iban - The IBAN number. * @param ref - The reference number. * @param dueDate - The due date. * @param euroAmount - The euro amount. * @param barcodeOptions - The options for the barcode (width, height, displayValue, fontSize). * @param barcodeOptions.width - Width of the barcode. * @param barcodeOptions.height - Height of the barcode * @param barcodeOptions.displayValue - Whether to display the value of the barcode. * @param barcodeOptions.fontSize - Fontsize of the barcode. * @returns The SVG string of the created barcode. */ static createBarcode(getDocumentAndSvgNode: () => any, iban: string, ref: string, dueDate: string, euroAmount: number, barcodeOptions: { width: number; height: number; displayValue: boolean; fontSize: number; }): string; } /** * Maps Calculation-object to report template ready objects. */ export declare class CalculationMapper { /** * Creates a new CalculationReport from the fiven Calculation. * @param calc Calcuation for the report. * @param reportType Report type. */ static getCalculationReport(calc: Calculation, reportType: ReportType, lang: Language | undefined): CalculationReport | undefined; /** * Creates a new CalculationSummaryReport from the given calculations. * @param calcs Calculations for the report. * @param lang Language. */ static getCalculationSummaryReport(calcs: Calculation[], lang: Language): CalculationSummaryReport | undefined; /** * Creates HeaderFooterData from provided parameters * @param type ReportType * @param calc Calculation BusinessObject * @param options ReportOptions * @param lang gets translation with this lang, if null use current lang * @returns Created HeaderFooterData */ static getHeaderFooter(type: ReportType, calc: Calculation, options: ReportOptions, lang?: Language | undefined): HeaderFooterData; /** * Creates HeaderFooterData from provided parameters * @param calc Calculation BusinessObject * @param options ReportOptions * @param lang gets translation with this lang, if null use current lang * @returns Created HeaderFooterData */ static getTotalReportHeaderFooter(calc: Calculation | Calculation[], options: ReportOptions, lang?: Language | undefined): HeaderFooterData; /** * Get ReportLayout for calculation * @param isLandscape If true, the layout is rendered as landscape. * @param pdf By default the mode is htmlPage. Set this to true to use pdf mode. This may affect some rendering details. * @param watermark If provided, the watermark is shown in the report. Use "default" to show the default watermark ("SALAXY.REPORTS.document.preview"). * @returns Report task */ static getReportLayout(isLandscape?: boolean, pdf?: boolean, watermark?: string): ReportLayout; /** * Creates HeaderFooterData (for summaryreport) from provided parameters * @param calcs Array of Calculation BusinessObjects * @param reportOptions ReportOptions * @param lang gets translation with this lang, if null use current lang * @returns Created HeaderFooterData */ static getCalculationSummaryReportHeaderFooter(calcs: Calculation[], reportOptions: ReportOptions, lang: Language): HeaderFooterData; private static createSalarySlipRowGroups; private static createEmployerReportRowGroups; private static createPaymentReportRowGroups; private static createHeader; private static createSummaryHeader; private static createValidationMessages; private static createEmployerReportNotes; private static createSalarySlipNotes; private static createCumulativeData; private static getPensionCompanyName; private static isCompensation; private static getEnum; private static isRaksa; private static calculateCalculationsResultsSummary; private static summarizeField; private static getYearlyChangingNumbers; /** Current household deduction max amount. */ private static getHouseholdDeductionMaxAmount; private static getHouseholdDeductionDeductible; private static getTaxDeductionWorkCategories; private static getHouseholdDeductionCategoriesExtended; private static getPalkkausVatPercent; private static displayVatPercent; private static calculateVat; private static calculatePriceExclVat; } /** Contains calculation data structured for easy rendering in reports. */ export declare interface CalculationReport { /** Calculation report type. */ reportType?: ReportType | null; /** Report header section. */ header?: CalculationReportHeader | null; /** Cumulative data for the report. */ cumulative?: CalculationReportSimpleRow[] | null; /** Report row groups. */ rowGroups?: ICalculationReportRowGroup[] | null; /** Validation messages for the report. Contains for example deduction warnings. */ validationMessages?: CalculationReportText[] | null; /** Returns true if the report has validation messages. */ readonly hasValidationMessages?: boolean | null; /** Additional notes for the report. */ notes?: CalculationReportText[] | null; /** Returns true if the report has notes. */ readonly hasNotes?: boolean | null; } /** Employer name and contact details for reports. */ export declare interface CalculationReportEmployer { /** Finnish Business Identifier (Y-tunnus) for the company. */ businessId?: string | null; /** Employer avatar. */ avatar?: Avatar | null; /** Employer contact information. */ contact?: Contact | null; } /** Report header information for the report. Contains employer and worker details as well as further info about the work. */ export declare interface CalculationReportHeader { /** Employer name and contact details. */ employer?: CalculationReportEmployer | null; /** Worker name and contact details. */ worker?: CalculationReportWorker | null; /** Start date of the work. */ workStartDate?: string | null; /** End date of the work. */ workEndDate?: string | null; /** Employment period: Start and potential end date of the employment relation. */ employmentPeriod?: DateRange | null; /** Description of the work for reporting purposes. */ workDescription?: string | null; /** The day when the total amount was paid by Employer to Palkkaus.fi */ paidAt?: string | null; /** The estimated date for the salary in worker. */ salaryDate?: string | null; /** The actual date for the salary in worker. */ requestedSalaryDate?: string | null; /** Number of days may affect calculation of different payments calculated based on a Framework agreement. */ numberOfDays?: number | null; /** If true, the worker has not given any tax card, 60% will be taken. */ workerHasNoTaxcard?: boolean | null; /** If true, the employer is household and no withholding tax is deducted (less than 1500€/year/Worker). */ noWithholdingHousehold?: boolean | null; /** Calculated tax percent. Please note this is a number between 0-1. */ taxPercent?: number | null; /** Tax percent in the tax card. */ taxcardTaxPercent?: number | null; /** Additional tax percent in the tax card. */ taxcardTaxPercent2?: number | null; /** Income limit for the taxcard */ taxcardIncomeLimit?: number | null; /** The cumulative income on the taxcard - including this calculation. Note that with shared taxcards, this may include income from other employers. */ taxcardCumulativeIncome?: number | null; /** Salary slip message */ salarySlipMessage?: string | null; /** TaxAtSource is being used */ isTaxAtSource?: boolean | null; /** Tax at source deduction percent */ taxAtSourceDeductionPercent?: number | null; } /** CalculationReport implementation. */ export declare class CalculationReportImpl implements CalculationReport { reportType: ReportType; /** Report header section. */ header: CalculationReportHeader; /** Report row groups. */ rowGroups: ICalculationReportRowGroup[]; /** Validation messages for the report. Contains for example deduction warnings. */ validationMessages: CalculationReportText[]; /** Returns true if the report has validation messages. */ get hasValidationMessages(): boolean; /** Additional notes for the report. */ notes: CalculationReportText[]; /** Returns true if the report has notes. */ get hasNotes(): boolean; /** * Creates a new report. * @param reportType Report type for the report. */ constructor(reportType: ReportType); } /** Extension to IR row for reporting purposes. */ export declare class CalculationReportRow<T extends ICalculationReportRowData> implements ICalculationReportRow { data: T; /** Contains sub rows. */ subRows: Array<CalculationReportRow<T>>; private _mainRow; /** * Creates a new report row based on given row data. * @param data The data for the row. */ constructor(data: T); /** Level of the row in the row hierarchy. */ get level(): number; /** Returns true if level is 0. */ get isLevel0(): boolean; /** Returns true if level is 1. */ get isLevel1(): boolean; /** Returns true if level is 2. */ get isLevel2(): boolean; /** Returns true if level is 3. */ get isLevel3(): boolean; /** Returns true if level is 4. */ get isLevel4(): boolean; /** Boolean to indicate if this row has sub rows */ get hasSubRows(): boolean; /** Sum of sub row totals. */ get subTotal(): number | undefined | null; /** Parent row for this row. */ get mainRow(): CalculationReportRow<T> | undefined; /** Parent row for this row. */ set mainRow(value: CalculationReportRow<T>); } /** Row group for calculation. Groups logically calculation rows. */ export declare class CalculationReportRowGroup<T extends ICalculationReportRow> implements ICalculationReportRowGroup { /** Grouping for the row group. */ grouping: CalcGroup | undefined; /** Grouping term */ get groupingTerm(): string; /** Grouping term */ set groupingTerm(value: string | undefined); /** Total term */ get totalTerm(): string; /** Total term */ set totalTerm(value: string | undefined); /** Additional ui data for the renderer */ params: any; /** Returns true if the group has rows. */ get hasRows(): boolean; /** Returns true if this is Deductions group. */ get isDeductions(): boolean; /** Returns true if this is Totals group. */ get isTotals(): boolean; /** Returns true if this is Benefits group. */ get isBenefits(): boolean; /** Returns true if this is Expenses group. */ get isExpenses(): boolean; /** Returns true if this is SalaryAdditions group. */ get isSalaryAdditions(): boolean; /** Returns true if this is BaseSalary group. */ get isBaseSalary(): boolean; /** Returns true if this is Disabled group. */ get isDisabled(): boolean; /** Returns true if this is OtherNoPayment group. */ get isOtherNoPayment(): boolean; /** Returns true if this is Undefined group. */ get isUndefined(): boolean; /** Rows that are compatible with Incomes Register (tulorekisteri) process. */ rows: T[]; /** If true, the group is not visible in the report */ isHidden: boolean | undefined | null; /** Group total. */ get total(): number; /** Group total. */ set total(value: number | undefined); /** Returns true if this the total field has value greater than 0. */ get hasTotalValue(): boolean; private _groupingTerm; private _totalTerm; private _total?; /** Constructor */ constructor(data: ICalculationReportRowGroupInput<T>); } /** A simple row for misc. tables in calculation. */ export declare interface CalculationReportSimpleRow { /** * Technical name / key for the cumulative field. */ key?: string | null; /** * Label for the row. */ label?: string | null; /** * Total for the row. This may later be extended with count and/or price. */ total?: number | null; /** * Additional data for the row. */ data?: { [key: string]: any; } | null; /** * Unit for the row. */ unit?: string | null; } /** Generic text object for the report. Contains heading, text and optional interpolation parameters. */ export declare interface CalculationReportText { /** Heading for the text. */ heading?: string | null; /** The actual content for the text. */ text?: string | null; /** Parameters to be interpolated in the text. */ parameters?: { [key: string]: any; } | null; } /** Worker name and contact details for reports. */ export declare interface CalculationReportWorker { /** The Person ID of the worker if known. */ socialSecurityNumberValid?: string | null; /** Bank account number. */ ibanNumber?: string | null; /** Employer avatar. */ avatar?: Avatar | null; /** Worker contact information. */ contact?: Contact | null; } /** * Calculation summary data for report rendering. */ declare interface CalculationSummaryReport extends CalculationReport { header?: CalculationSummaryReportHeader; } /** * Header data for CalculationSummaryReport. */ declare interface CalculationSummaryReportHeader extends CalculationReportHeader { /** The number of workers on the report. */ workerCount?: number | null; /** The number of calculations on the report. */ calculationCount?: number | null; /** The total salary costa summarized from all the calculations on the report. */ totalSalaryCost?: number | null; /** The total gross salary summarized from all the calculations on the report. */ totalGrossSalary?: number | null; /** The total worker payment summarized from all the calculations on the report. */ totalWorkerPaymentLegacy?: number | null; } /** Row data for worker and employer calculation tables. */ export declare class CalculationTableRowData implements ICalculationReportRowData { /** Ir row. */ irRow: IrRow; /** Full total for the row. For example the original calculated version. */ fullTotal?: number; /** Returns true if there is no enough money to pay the calculated amount. */ isTotalReduced?: boolean; private _comment; /** Constructor for creating row. */ constructor(data: ICalculationTableRowDataInput, lang?: Language); /** Total amount. */ get total(): number; /** Total amount. */ set total(value: number); /** Returns true if the unit is percentage */ get isUnitPercent(): boolean; /** Row further information. */ get comment(): string | undefined; /** Row further information. */ set comment(value: string | undefined); private getEnum; } /** * The CalendarMapper class provides methods to generate and manipulate calendar data, * including mapping months and series to a structured result, and loading report layouts * and options for invoice reports. */ export declare class CalendarMapper { /** * Generates calendar data by mapping months and series to a structured result. * @param {CalendarMonth[]} months - An array of calendar months to be processed. * @param {CalendarSeries[]} series - An array of calendar series to be mapped to each month. * @returns {CalendarResult} The structured calendar result containing mapped months with their respective days, series, title, and weeks. */ static getCalendarData(months: CalendarMonth[], series: CalendarSeries[]): CalendarResult; /** * Loads the invoice layout for pdf or html reports. * @param pdf Are we rendering a pdf report or not. * @returns Returns invoice layout. */ static loadReportLayout(pdf: boolean): ReportLayout; /** * Loads Invoice specific ReportOptions * @returns ReportOptions for report */ static loadReportOptions(): ReportOptions; private static getWeekNumbersForMonth; } /** * Represents the result of a calendar mapping operation. */ export declare type CalendarResult = { /** An array of mapped calendar months. */ months?: MappendCalendarMonth[]; }; /** * Helper class used to create CostCenterReport (kustannuspaikkaraportti) config for sxy-table. */ export declare class CostCenterReportConfigGenerator { /** * Generates config for SxyTable component. * @param calcs Calculations for report * @returns Configuration for SxyTable component */ static getConfig(calcs: Calculation[], sysDims: CostAccountingDimensionDefinition[]): { options: any; include: any[]; data: any[]; }; /** * Adds same css class to child rows, recursively. * @param row Row element. * @param cssClass Either "nested-odd" or "nested-even". */ private static addClassToChildRows; /** * Get all the dimensions from system settings. * @param dims System dimensions. * @returns Dimensions. */ static getDimensions(dims: CostAccountingDimensionDefinition[]): any[]; /** * Headers for the report (both browser and excel). * @returns Array of headers. */ static getHeaders(): { field: string; title: string; }[]; /** * Creates column config for tabulator table. * @param dimensions System dimensions. * @returns Column configuration. */ private static getColConfig; /** * Returns currency formatting settings for table column. * @returns Table column settings. */ private static getCurrencySettings; /** * Returns dimensions row data for the report. * @param calcs Array of calculations. * @param allDimensions All dimensions in the system. * @returns Data in an array. */ private static getData; /** * Splits a row into dimension rows which have a percentage weight calculated for the sum. * @param calcDimensions Dimensions to calculate. * @param sysDims All dimensions in the system, used for header labeling. * @param row The row whose sums are to be calculated. * @returns Split rows array. */ private static getSplitRows; /** * Creates the excel rows out of generated data. * @param config Generated config (data, headers, options). * @returns Flat array containing excel header and data rows. */ static createCostCenterExcelRows(config: any): any[]; } /** * Mapper for ESalary */ export declare class ESalaryMapper { /** * Maps input calc to hbs supported format * @param businessObject calculation to be mapped * @returns Extended calculation with eSalary property */ static getESalary(businessObject: Calculation): ESalaryReport; /** * get xml file name * @returns name of eSalary xml name */ static getXmlFileName(): string; /** * Maps cumulative calculation to hbs supported format * @param calc cumulative calculation * @returns object containing array of current and previous earnings */ private static getCumulativeData; private static addBenefitsToReportTotals; } /** * Contains eSalary data structured for easy rendering in reports. * */ export declare interface ESalaryReport extends Calculation { /** Interface for hbs template data */ eSalaryHbs?: IESalaryHbs | null; } /** * Represents a mapped calendar day with an additional background color property. */ export declare type ExtendedCalendarDay = CalendarDay & { style?: string; hasEvents?: boolean; }; /** * Represents an extended calendar series which includes a calendar day and an array of extended calendar days. */ export declare type ExtendedCalendarSeries = CalendarSeries & { days: ExtendedCalendarDay[]; }; export declare const hbsTemplates: { heartbeat: (data: any) => string; accountingReport: (data: any) => string; employerReportV2: (data: any) => string; employerReportV2Page1: (data: any) => string; paymentReportV2: (data: any) => string; paymentSummaryReportV2: (data: any) => string; salarySlipV2: (data: any) => string; salarySlipV2Page1: (data: any) => string; accountingReportHead: (data: any) => string; accountingTable: (data: any) => string; contractPartiesContactDetailsV2: (data: any) => string; document: (data: any) => string; employerCalculationAdditionalInfoV2: (data: any) => string; employerCalculationTablesV2: (data: any) => string; employerContractDetailsV2: (data: any) => string; employerReportHeadV2: (data: any) => string; page: (data: any) => string; partial: (data: any) => string; paymentReportHeadV2: (data: any) => string; paymentSummaryReportHeadV2: (data: any) => string; paymentTablesV2: (data: any) => string; workerCalculationAdditionalInfoV2: (data: any) => string; workerCalculationTablesV2: (data: any) => string; workerContractDetailsV2: (data: any) => string; workerCumulativeTables: (data: any) => string; workerDeductionWarningsV2: (data: any) => string; workerReportHeadV2: (data: any) => string; defaultFooter: (data: any) => string; defaultHeader: (data: any) => string; img2: (data: any) => string; logo: (data: any) => string; pageNumber: (data: any) => string; totalPages: (data: any) => string; summaryReport: (data: any) => string; summaryReportHead: (data: any) => string; summaryReportTable: (data: any) => string; authorizationPerson: (data: any) => string; authorizationCompany: (data: any) => string; authorizationRaksa: (data: any) => string; iamPerson: (data: any) => string; invoice: (data: any) => string; invoiceHead: (data: any) => string; invoiceTable: (data: any) => string; kycCompany: (data: any) => string; eSalary: (data: any) => string; totalsReport: (data: any) => string; totalsTables: (data: any) => string; totalsHead: (data: any) => string; workerSummaryReport: (data: any) => string; workerSummaryReportHead: (data: any) => string; workerSummaryReportTable: (data: any) => string; invoiceList: (data: any) => string; calendar: (data: any) => string; }; /** * Data that is avaible for the header and footer templates. */ export declare interface HeaderFooterData { /** Logical report date, e.g. Salary date for salary slip. */ date?: string; /** Printing date of the report. */ today?: string; /** Report specific title, e.g. "Palkkalaskelma". */ title?: string | undefined | null; /** Report specific sub title, e.g. "Palkkapäivä 1.6.2020". */ subTitle?: string; /** The HTML for the logo in the header and/or footer */ logo?: string; /** The HTML for the secondary image in the header and/or footer */ img2?: string; } /** Interface for result row. */ export declare interface IAccountingReportResultRow { /** row account number */ accountNumber?: string | null; /** row account name */ accountName?: string | null; /** VAT */ vatPercent?: number | null; /** row sum*/ sum?: number | null; /** Dimensions of row */ dimensions?: { [key: string]: number; } | null; } /** Interface for report row. */ export declare interface ICalculationReportRow { /** Level of the row in the row hierarchy. */ level?: number | null; /** Sum of sub row totals. */ subTotal?: number | null; } /** Interface for report row data. */ export declare interface ICalculationReportRowData { /** Total amount. */ total?: number | null; } /** Interface for report row group. */ export declare interface ICalculationReportRowGroup { /** Group total. */ total?: number | null; } /** Row group for calculation. Groups logically calculation rows. */ export declare interface ICalculationReportRowGroupInput<T extends ICalculationReportRow> { /** Grouping for the row group. */ grouping?: CalcGroup; /** Grouping term */ groupingTerm?: string; /** Total term */ totalTerm?: string; /** Additional ui data for the renderer */ params?: any; /** Rows that are compatible with Incomes Register (tulorekisteri) process. */ rows?: T[]; /** Group total. */ total?: number; /** If true, the group is not visible in the report */ isHidden?: boolean | null; } /** Row data for worker and employer calculation tables. */ export declare interface ICalculationTableRowDataInput { /** Ir row. */ irRow?: IrRow; /** Full total for the row. For example the original calculated version. */ fullTotal?: number; /** Returns true if there is no enough money to pay the calculated amount. */ isTotalReduced?: boolean; /** Row further information. */ comment?: string; } /** Interface for eSalary bank account*/ export declare interface IESalaryBankAccount { /** Bank account description */ heading?: string | null; /** Account code description */ label?: string | null; /** IBAN code without spaces */ value?: string | null; /** Bic code */ bic?: string | null; } /** Interface for eSalary calculation bases*/ export declare interface IESalaryCalculationBases { /** Payment information description */ heading?: string | null; /** Salaryrates information */ salaryRates?: { heading: string | null; }; /** Taxation information */ taxationRates?: { /** Taxation rate description */ heading?: string | null; /** Deduction rates */ recordLabels?: { /** Tax percent */ taxPercent: string | null; /** Additional tax percent */ taxPercent2: string | null; }; }; /** Label for income limit */ incomeLimitLabel?: string | null; /** Income limit value */ incomeLimit?: string | null; /** Label for taxcard validity */ taxcardValidityLabel?: string | null; /** Taxcard value */ taxcardValidity?: string | null; } /** Interface for eSalary cumulative*/ export declare interface IESalaryCumulative { /** Cumulative data heading */ heading?: string | null; /** Current data */ current?: { heading?: string | null; data?: Array<{ label: string; value: string; }>; } | null; /** Previous data */ previous?: { heading?: string | null; data?: Array<{ label: string; value: string; }>; } | null; } /** Interface for eSalary delivery*/ export declare interface IESalaryDelivery { /** Sender element */ sender?: IESalarySender | null; /** Recipient elemenet */ recipient?: IESalaryRecipient | null; /** ESalary payoffice */ payOffice?: IESalaryPayOffice | null; } /** Interface for eSalary delivery channel. */ export declare interface IESalaryDeliveryChannel { /** Delivery code */ deliveryMethodCode?: string | null; /** Delivery location data. Bankcode: Unique bank identifier */ deliveryInfo?: { bankCode: string; } | null; } /** Interface for eSalary employee*/ export declare interface IESalaryEmployee { /** Employee description */ heading?: string | null; /** Employee identity */ identity?: { label: string; item: string | undefined | null; } | null; /** Employee employment date */ employmentDate?: { label: string; value: string | undefined | null; } | null; /** Classification information of job */ classification?: { /** Classification description */ heading?: string | null; /** Job title element */ jobTitle?: { label?: string | null; value?: string | null; }; }; /** Name of employee */ employeeName?: { foreName: string | undefined | null; surName: string | undefined | null; } | null; } /** * Contains eSalary data structured for easy rendering in reports. * */ export declare interface IESalaryHbs { /** Esalary version */ version?: string | null; /** Headerdata element*/ headerData?: IESalaryHeaderData | null; /** Payperiod element */ payPeriod?: IESalaryPayPeriod | null; /** Delivery element */ delivery?: IESalaryDelivery | null; /** Employee element */ employee?: IESalaryEmployee | null; /** Bank account element */ bankAccount?: IESalaryBankAccount | null; /** Calculation bases element */ calculationBases?: IESalaryCalculationBases | null; /** Pay details element */ payDetails?: IESalaryPayDetails | null; /** Report element */ report?: CalculationReport | null; /** Messages element */ messages?: IESalaryMessages | null; /** Cumulative element */ cumulative?: IESalaryCumulative | null; } /** Interface for Esalary header data. */ export declare interface IESalaryHeaderData { /** Unique payslip identifier */ messageId?: string | null; /** report timestamp */ timestamp?: string | null; /** Report title */ documentTitle?: string | null; /** Report payment date */ payDate?: string | null; /** Netpayment information */ netPayment?: { label: string; value: string | undefined; } | undefined; /** Name of payer */ payer?: string | null; /** Payer info */ partyIdentifications?: Array<{ authority: string; value: string | undefined | null; }> | null; /** Delivery channel information */ deliveryChannels?: IESalaryDeliveryChannel[] | null; } /** Interface for eSalary messages*/ export declare interface IESalaryMessages { /** Messages description */ heading?: string | null; /** Salaryslip message to worker */ salarySlipMessage?: { label: string; message: string | undefined | null; } | null; /** Transient messages */ transient?: { heading: string; } | null; } /** Interface for eSalary pay details*/ export declare interface IESalaryPayDetails { /** Pay details description */ heading?: string | null; } /** Interface for eSalary pay office*/ export declare interface IESalaryPayOffice { /** Name of pay office */ fullName?: string | null; /** Pay office street address */ addressLine?: string | null; /** Pay office postal code */ postalCode?: string | null; /** Pay office post office */ postOffice?: string | null; /** Countrycode of pay office */ countryCode?: string | null; /** Telephone of pay office */ telephone?: Array<{ phoneNumber: string; }> | null; /** Pay office email */ emailAddress: string | null; } /** Interface for eSalary pay period. */ export declare interface IESalaryPayPeriod { /** Pay period description */ heading?: string | null; /** Payment date element */ dateOfPayment?: { label: string; date: string; } | null; /** Period dates element */ period?: { label: string; date: string; } | null; /** Periods dates of esalary */ periodDates?: IESalaryPeriodDates | null; } /** Interface for eSalary period dates */ export declare interface IESalaryPeriodDates { /** Payperiod description */ label?: string | null; /** Job description */ jobLabel?: string | null; /** Message description */ messageLabel?: string | null; /** Start date element */ startDate?: { label: string; date: string | undefined | null; } | null; /** Term date element */ termDate?: { label: string; date: string | undefined | null; } | null; } /** Interface for eSalary recipient*/ export declare interface IESalaryRecipient { /** Recipient description */ heading?: string; /** Recipient name element */ recipientName?: { foreName: string | undefined | null; surName: string | undefined | null; } | undefined | null; /** Recipient street address */ addressLine?: string | null; /** Recipient postal code */ postalCode?: string | null; /** Recipient post office */ postOffice?: string | null; /** Recipient country code */ countryCode?: string | null; /** Recipient country */ country?: string | null; } /** Interface for eSalary sender*/ export declare interface IESalarySender { /** Sender heading */ heading?: string | null; /** Name of sender */ name?: string | null; /** Street */ addressLine?: string | null; /** Sender portal code */ postalCode?: string | null; /** Sender post office */ postOffice?: string | null; /** Sender country code */ countryCode?: string | null; /** Sender country */ country?: string | null; /** Sender telephone */ telephone?: Array<{ phoneNumber: string | undefined | null; }> | null; /** Sender email */ emailAddress?: string | null; } /** * Mapper for InvoiceList. */ export declare class InvoiceListMapper { /** * Loads report type specific HeaderFooterData. * @param businessObject - The array of invoice list items. * @param reportOptions The ReportOptions entity used to load the HeaderFooterData. * @param _lang gets translation with this lang, if null use current lang * @returns Returns HeaderFooterData. */ static getHeaderFooter(businessObject: InvoiceListItem[], reportOptions: ReportOptions, _lang?: Language): HeaderFooterData; /** * Loads the invoice layout for pdf or html reports. * @param pdf Are we rendering a pdf report or not. * @returns Returns invoice layout. */ static loadReportLayout(pdf: boolean): ReportLayout; /** * Retrieves a invoice list based on the provided business object. * @param businessObject - The array of invoice list items. * @param getDocumentAndSvgNode - A function that returns the document and SVG node. * @returns A promise that resolves to an array of mapped invoices. */ static getInvoiceList(businessObject: InvoiceListItem[], getDocumentAndSvgNode: () => any): Promise<MappedInvoiceListItem[]>; /** * Loads InvoiceList specific ReportOptions * @returns ReportOptions for report */ static loadReportOptions(): ReportOptions; /** * Calculates the invoice payment amount for a given invoice item. * If the invoice item is of type "tax" or "union" and the total paid amount * is different from the payment amount, it returns the rounded difference * between the payment amount and the total paid amount. * Otherwise, it returns the payment amount. * @param {InvoiceListItem} item - The invoice item to calculate the payment for. * @returns {number} - The calculated payment amount. */ private static getInvoicePayment; private static getHeadingText; private static createBarCode; private static createQrCode; } /** * Mapper for Invoice. */ export declare class InvoiceMapper { /** * Loads report type specific HeaderFooterData. * @param businessObject The Invoice entity used to load the HeaderFooterData. * @param reportOptions The ReportOptions entity used to load the HeaderFooterData. * @param lang gets translation with this lang, if null use current lang * @returns Returns HeaderFooterData. */ static getHeaderFooter(businessObject: Invoice, reportOptions: ReportOptions, lang?: Language | undefined): HeaderFooterData; /** * Loads the raw report that is then rendered downstream as an html or pdf report. * @param businessObject Invoice entity * @returns Authorization */ static getInvoice(businessObject: Invoice, getDocumentAndSvgNode: () => any): Promise<MappedInvoice>; private static getReferenceNumber; private static getPayment; private static createBarCode; private static createQrCode; private static isPreviewInvoice; /** * Loads the invoice layout for pdf or html reports. * @param pdf Are we rendering a pdf report or not. * @returns Returns invoice layout. */ static loadReportLayout(pdf: boolean): ReportLayout; /** * Loads Invoice specific ReportOptions * @returns ReportOptions for report */ static loadReportOptions(businessObject: Invoice): ReportOptions; } /** Row data for payment tables. */ export declare interface IPaymentTableRowDataInput { /** Name for the payment. */ label?: string; /** Receiver of the payment. */ receiver?: string; /** Base amount for the payment calculation. */ baseAmount?: number; /** Worker part of the payment. */ workerPercent?: number; /** Employer part of the payment. */ employerPercent?: number; /** Total amount. */ total?: number; /** Comment for the row. */ comment?: string; } /** * Helper class used to create IrRowsReport config for sxy-table and create tableData for ExcelHelpers(ng1) */ export declare class IrRowsReportConfigGenerator { /** * Generates config for SxyTable component * @param calcs Calculations for report * @param lang Language for report * @returns Configuration for SxyTable component */ static getConfig(calcs: Calculation[], lang: Language): { options: any; include: any[]; data: any[]; }; private static getKind; private static getType; /** Generates tableData for ExcelHelpers.export (ng1) */ static getTableData(calcs: Calculation[], lang: Language): any[]; private static getIncomeType; private static translateRowType; } /** Type used to present InvoiceMappers getInvoice() result */ export declare type MappedInvoice = { /** Containing header related data */ header?: { /** Date of invoice */ date: string | null | undefined; /** Due date of invoice */ dueDate: string | null | undefined; /** Payment reference (e.g. RF0710010831). Please note that in salary payment scenarios, this is not necessarily unique. */ referenceNumber: string | null | undefined; /** The free text that is displayed / sent with the invoice. May have multiple lines. */ message?: string | null | undefined; }; /** Containing total related data */ totals?: { /** Total amount without vat */ totalExVat: number | null | undefined; /** Total amount of vat */ totalVat: number | null | undefined; /** Total amount with vat */ total: number | null | undefined; /** Total amount of social security tax */ taxSocialSecurity: number | null | undefined; /** Total amount of withholding tax */ taxWithholding: number | null; /** Invoice total paid */ totalPaid?: number | null; /** Invoice total remaining */ toBePaid?: number | null; /** Helper for hbs template to show totalPaid and toBePaid */ showTotalPaid?: boolean | null; }; /** Containing row related data */ rows?: { /** Message (RowFreeText in Finvoice) is the message is mainly designed for accounting systems. */ message: string | null; /** Name of the product or service. In the case of Salaxy salaries, this is language versioned text of CalculationRowType. */ articleName: string | null; /** Count (DeliveredQuantity in Finvoice) is the quantity of product or service. */ count: number | null; /** Price including VAT (UnitPriceVatIncludedAmount, Yksikköhinta verollinen) */ price: number | null; /** Price of one product or service without Vat (UnitPriceAmount, Yksikköhinta veroton). Yksikköhinta voidaan ilmoittaa myös verollisena UnitPriceVatIncludedAmount- elementissä laskutuskäytännön ja verottajan ALV-ohjeistuksen mukaan. */ priceExVat: number | null; /** Row total with VAT (RowAmount, Yhteensä verollinen) */ total: number | null; /** Row total excluding VAT (RowVatExcludedAmount, Yhteensä veroton) */ totalExVat: number | null; /** Vat percent related to the product or service (RowVatRatePercent, Alv%) */ vatPercent: number | null; /** Suggested account number (RowNormalProposedAccountIdentifier). */ accountingAccountNumber: string | null; /** Textual code for accounting mapping (RowProposedAccountText, Raportointikoodi). In Finvoice: "Accounting information agreed between seller and buyer." */ accountingCode: string | null; }[]; /** Is this a preview invoice */ isPreview?: boolean | null; /** Containing payer related data */ payer?: { /** Name of payer */ name: string | null | undefined; /** Official identifier of the party: Finnish HETU (Soc. sec. number) for a Person or Y-tunnus (Company ID for a company or association). */ officialId: string | null | undefined; /** Street of payer */ street: string | null | undefined; /** Postal code of payer */ postalCode: string | null | undefined; /** City of payer */ city: string | null | undefined; }; /** Containing recipient related data */ recipient?: { /** Name of recipient */ name: string | null | undefined; /** * This is an official identifier of the party: Finnish Personal Id (HETU) for a Person or Company Id (Y-tunnus) for a company or association. * WARNING: This is currently needed for Finvoice only (https://www.finanssiala.fi/finvoice/Sivut/default.aspx). As such we consider removing it from persons. * Please inform if you use this property! */ officialId: string | null | undefined; /** Street of recipient */ street: string | null | undefined; /** Postal code of recipient */ postalCode: string | null | undefined; /** City of recipient */ city: string | null | undefined; /** The International Bank Account Number of the receiver. */ iban: string | null | undefined; /** Bic of recipient */ bic: string | null | undefined; }; /** Barcode