All files / libs/amalia-lang/formula/evaluate/shared/src/functions/dates/end-of-quarter index.ts

100% Statements 46/46
100% Branches 1/1
100% Functions 1/1
100% Lines 46/46

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 471x 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';
import { type ComputeEngineDayjsInput } from '../dates.types';
 
export const datesEndOfQuarter = new AmaliaFunctionDefault<[ComputeEngineDayjsInput], number>({
  name: AmaliaFunctionKeys.endOfQuarter,
  category: AmaliaFunctionCategory.DATES,
 
  nbParamsRequired: 1,
  description: 'Return the last day of quarter of a given date',
 
  exec: (date: ComputeEngineDayjsInput): number => dayjs(date, 'X').endOf('quarter').startOf('day').unix(),
 
  params: [
    {
      name: 'date',
      description:
        'Date to apply function on: 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 "2023-06-30"',
      formula: 'endOfQuarter(toDate("2023-05-19"))' as AmaliaFormula,
      result: 1_688_083_200,
    },
    {
      desc: "Returns last day of quarter of the user's plan assignment start date.",
      formula: 'endOfQuarter(planAssignement.effectiveAsOf)' as AmaliaFormula,
    },
    {
      desc: 'Returns last day of quarter of opportunity close date.',
      formula: 'endOfQuarter(opportunity.closeDate)' as AmaliaFormula,
    },
  ],
});