@accounter/server
Version:
Accounter GraphQL server
50 lines (49 loc) • 3.46 kB
TypeScript
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';