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 64 | 1x 1x 1x 1x 1x 1x 1x 1x 67x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 68x 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';
import { type ComputeEngineDayjsInput } from '../dates.types';
export const datesMonthsTo = new AmaliaFunctionDefault<[ComputeEngineDayjsInput, ComputeEngineDayjsInput], number>({
name: AmaliaFunctionKeys.monthsTo,
category: AmaliaFunctionCategory.DATES,
nbParamsRequired: 2,
description: 'Return the number of months between two dates (rounded up)',
// https://github.com/moment/moment/issues/3713
exec: (date1, date2) => Math.ceil(dayjs(date2, 'X').diff(dayjs(date1, 'X'), 'months', true)),
params: [
{
name: 'date1',
description:
'Date to start counting at: 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: 'date2',
description:
'Date to end counting at: 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 1 (rounded up)',
formula: 'monthsTo(toDate("2023-05-01"), toDate("2023-05-06"))' as AmaliaFormula,
result: 1,
},
{
desc: 'Returns 1',
formula: 'monthsTo(toDate("2023-05-19"), toDate("2023-06-19"))' as AmaliaFormula,
result: 1,
},
{
desc: 'Returns 8 (rounded up)',
formula: 'monthsTo(toDate("2023-02-12"), toDate("2023-10-05"))' as AmaliaFormula,
result: 8,
},
{
desc: 'Returns the number of months between the statement start date and the Close Date rounded up.',
formula: 'monthsTo(statementPeriod.startDate, opportunity.closeDate)' as AmaliaFormula,
},
],
});
|