Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import { AmaliaFunctionCategory, AmaliaFunctionKeys, type AmaliaFormula } from '@amalia/amalia-lang/formula/types';
import { TokenType } from '@amalia/amalia-lang/tokens/types';
import { FormatsEnum } from '@amalia/data-capture/fields/types';
import { dayjs } from '@amalia/ext/dayjs';
import { AmaliaFunctionDefault } from '../../AmaliaFunction';
export const datesBusinessDaysTo = new AmaliaFunctionDefault<[number, number]>({
name: AmaliaFunctionKeys.businessDaysTo,
category: AmaliaFunctionCategory.DATES,
nbParamsRequired: 2,
description: 'Count the number of business days between 2 dates (both dates are included)',
exec: (startDate: number, endDate: number): number =>
startDate < endDate
? Math.abs(dayjs(startDate, 'X').businessDiff(dayjs(endDate, 'X').endOf('day')))
: Math.abs(dayjs(endDate, 'X').businessDiff(dayjs(startDate, 'X').endOf('day'))),
params: [
{
name: 'startDate',
description:
'Start of the interval: variables, properties, fields, keywords or date with format toDate("YYYY-MM-DD")',
validTokenTypes: [TokenType.VARIABLE, TokenType.PROPERTY, TokenType.FIELD, TokenType.KEYWORD, TokenType.FUNCTION],
validTokenValues: {
[TokenType.FUNCTION]: [AmaliaFunctionKeys.toDate],
},
validFormats: [FormatsEnum.date, FormatsEnum['date-time']],
},
{
name: 'endDate',
description:
'End of the interval: variables, properties, fields, keywords or date with format toDate("YYYY-MM-DD")',
validTokenTypes: [TokenType.VARIABLE, TokenType.PROPERTY, TokenType.FIELD, TokenType.KEYWORD, TokenType.FUNCTION],
validTokenValues: {
[TokenType.FUNCTION]: [AmaliaFunctionKeys.toDate],
},
validFormats: [FormatsEnum.date, FormatsEnum['date-time']],
},
],
examples: [
{
desc: 'Returns 5',
formula: 'businessDaysTo(toDate("2023-05-01"), toDate("2023-05-05"))' as AmaliaFormula,
result: 5,
},
{
desc: 'Returns 8',
formula: 'businessDaysTo(toDate("2023-04-23"), toDate("2023-05-03"))' as AmaliaFormula,
result: 8,
},
{
desc: 'Returns the number of business days between the statement start date and end date.',
formula: 'businessDaysTo(statementPeriod.startDate, statementPeriod.endDate)' as AmaliaFormula,
},
{
desc: 'Returns the number of business days between Close Date and the statement end date.',
formula: 'businessDaysTo(opportunity.closeDate, statementPeriod.endDate)' as AmaliaFormula,
},
],
});
|