UNPKG

@accounter/server

Version:
50 lines (49 loc) 3.46 kB
import { Injector } from 'graphql-modules'; import type { BusinessTripSummaryCategories, BusinessTripSummaryRow } from '../../../__generated__/types.js'; import { Currency } from '../../../shared/enums.js'; import type { IGetAllTaxVariablesResult, IGetBusinessTripsCarRentalExpensesByBusinessTripIdsResult, IGetBusinessTripsExpensesByBusinessTripIdsResult, IGetBusinessTripsFlightsExpensesByBusinessTripIdsResult, IGetBusinessTripsTravelAndSubsistenceExpensesByBusinessTripIdsResult } from '../types.js'; export declare class BusinessTripError extends Error { constructor(message: string); } export type SummaryCategoryData = Partial<Record<Currency, { total: number; taxable: number; maxTaxable: number; }>>; export type SummaryData = Record<BusinessTripSummaryCategories, SummaryCategoryData>; export type AttendeeInfo = { name: string; arrival: Date | null; departure: Date | null; daysCount: number; nightsCount: number; }; export declare function convertSummaryCategoryDataToRow(category: BusinessTripSummaryCategories, data: SummaryCategoryData): BusinessTripSummaryRow; export declare function calculateTotalReportSummaryCategory(data: Partial<SummaryData>): Partial<Record<Currency, { total: number; taxable: number; maxTaxable: number; }>>; export declare function getExpenseCoreData(tripExpense: Pick<IGetBusinessTripsExpensesByBusinessTripIdsResult, 'payed_by_employee' | 'amount' | 'date' | 'currency' | 'value_date' | 'id'>): { amount: number; currency: Currency; date: Date; }; export declare function getExpenseAmountsData(injector: Injector, businessTripExpense: IGetBusinessTripsExpensesByBusinessTripIdsResult): Promise<{ localAmount: number; foreignAmount: number; }>; export declare function flightExpenseDataCollector(injector: Injector, businessTripExpense: IGetBusinessTripsFlightsExpensesByBusinessTripIdsResult, partialSummaryData: Partial<SummaryData>): Promise<void>; export declare function employeeAccommodationDataByTrip(): Promise<void>; export declare function otherExpensesDataCollector(injector: Injector, otherExpenses: IGetBusinessTripsExpensesByBusinessTripIdsResult[], partialSummaryData: Partial<SummaryData>): Promise<string | void>; type ReportMetaData = { destinationCode: string | null; unAccommodatedDays: number; attendees: Map<string, AttendeeInfo>; }; export declare function travelAndSubsistenceExpensesDataCollector(injector: Injector, businessTripExpenses: IGetBusinessTripsTravelAndSubsistenceExpensesByBusinessTripIdsResult[], partialSummaryData: Partial<SummaryData>, taxVariables: IGetAllTaxVariablesResult, { destinationCode, unAccommodatedDays, attendees }: ReportMetaData): Promise<void>; export declare function carRentalExpensesDataCollector(injector: Injector, businessTripExpenses: IGetBusinessTripsCarRentalExpensesByBusinessTripIdsResult[], partialSummaryData: Partial<SummaryData>, taxVariables: IGetAllTaxVariablesResult, destinationCode: string | null): Promise<void>; export declare function isIncreasedLimitDestination(destinationCode: string | null): boolean; export declare function onlyUnique(value: string, index: number, array: string[]): boolean; export declare function getAttendeeTravelAndSubsistenceMaxTax(totalBusinessDays: number, unAccommodatedDays: number, destinationCode: string | null, taxVariables: IGetAllTaxVariablesResult): number; export * from './business-trip-report-accommodation.helper.js';