@harbortouch/skytab-analytics-report-utils 0.42.2 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- type ReportColumnKey = 'fifteenMinInterval' | 'adjustedTips' | 'advantageProgram' | 'amex' | 'amexReturns' | 'attachRate' | 'autoGratuity' | 'averageGrossPrice' | 'bankFees' | 'batchAmount' | 'batchDate' | 'batchNumber' | 'cashCollected' | 'clockInTime' | 'clockOutTime' | 'country' | 'customerName' | 'date' | 'dateClose' | 'daypart' | 'debit' | 'debitReturns' | 'declaredTips' | 'department' | 'depositCurrency' | 'depositDate' | 'discountAmount' | 'ticketCount' | 'itemCount' | 'discover' | 'discoverReturns' | 'ebt' | 'ebtReturns' | 'employeeId' | 'employeeJob' | 'employeeName' | 'exemptTaxes' | 'exemptSales' | 'grandTotal' | 'grossCashSales' | 'grossCashTips' | 'grossCreditCardTips' | 'grossCreditSales' | 'grossSales' | 'grossSalesVarLw' | 'grossSalesVarLy' | 'grossSalesVarLwPct' | 'grossSalesVarLyPct' | 'grossTips' | 'guestCount' | 'guestsVarLw' | 'guestsVarLwPct' | 'guestsVarLy' | 'guestsVarLyPct' | 'hour' | 'hoursWorked' | 'inclusiveTax' | 'itemName' | 'itemPrice' | 'locationCity' | 'locationId' | 'locationMid' | 'locationName' | 'locationState' | 'mastercard' | 'mcReturns' | 'modifierName' | 'modifierPrice' | 'modifierQuantity' | 'netSales' | 'netTaxCollected' | 'netTips' | 'numberOfGuests' | 'orderType' | 'paymentType' | 'payrollId' | 'quantity' | 'referenceNumber' | 'refundAmount' | 'refundedTaxAmount' | 'revenueCenter' | 'revenueClass' | 'salesVarLw' | 'salesVarLwPct' | 'salesVarLy' | 'salesVarLyPct' | 'salesMixByPct' | 'salesPerGuest' | 'salesPerGuestLw' | 'salesPerGuestLy' | 'scheduledShiftEnd' | 'scheduledShiftStart' | 'settlementBatchDate' | 'shiftDurationHrs' | 'subtotal' | 'taxCollected' | 'taxesVarLw' | 'taxesVarLy' | 'taxesVarLwPct' | 'taxesVarLyPct' | 'taxName' | 'taxRate' | 'taxableSales' | 'ticketClosed' | 'ticketFee' | 'ticketNumber' | 'ticketOpen' | 'ticketTotal' | 'timeOpenMins' | 'tipPct' | 'tipReduction' | 'tipShare' | 'tipShareContributed' | 'tips' | 'tipsPerHour' | 'totalCollected' | 'totalItemSales' | 'totalModifierSales' | 'totalReturns' | 'totalSales' | 'totalTips' | 'transactionDate' | 'transactionId' | 'transactionType' | 'untaxedSales' | 'visa' | 'visaReturns' | 'paymentsCount' | 'paymentsAmount' | 'paymentsTotal' | 'refundVoidDescription' | 'refundVoidCount' | 'refundVoidAmount' | 'refundVoidPctSales' | 'discountName' | 'tickets' | 'guests' | 'ticketAverage' | 'guestAverage' | 'net' | 'salePaymentType' | 'type' | 'status' | 'employeeStatus' | 'lastModified' | 'discountCount' | 'itemQuantity' | 'modifierQuantityComp' | 'itemQuantityComp' | 'attachRateComp' | 'totalModifierSalesVar' | 'totalModifierSalesVarPct' | 'modifierQuantityVar' | 'modifierQuantityVarPct' | 'attachRateVar' | 'attachRateVarPct' | 'totalModifierSalesComp' | 'paidNormalHours' | 'normalPay' | 'overtimePay' | 'doubleOvertimePay' | 'gratuity' | 'tipPaidStatus' | 'totalPayments' | 'minimumWageAdjustment' | 'tableName' | 'totalPay';
1
+ type ReportColumnKey = 'fifteenMinInterval' | 'adjustedTips' | 'advantageProgram' | 'amex' | 'amexReturns' | 'attachRate' | 'autoGratuity' | 'averageGrossPrice' | 'bankFees' | 'batchAmount' | 'batchDate' | 'batchNumber' | 'cashCollected' | 'clockInTime' | 'clockOutTime' | 'country' | 'customerName' | 'date' | 'dateClose' | 'daypart' | 'debit' | 'debitReturns' | 'declaredTips' | 'department' | 'depositCurrency' | 'depositDate' | 'discountAmount' | 'ticketCount' | 'itemCount' | 'discover' | 'discoverReturns' | 'ebt' | 'ebtReturns' | 'employeeId' | 'employeeJob' | 'employeeName' | 'exemptTaxes' | 'exemptSales' | 'grandTotal' | 'grossCashSales' | 'grossCashTips' | 'grossCreditCardTips' | 'grossCreditSales' | 'grossSales' | 'grossSalesVarLw' | 'grossSalesVarLy' | 'grossSalesVarLwPct' | 'grossSalesVarLyPct' | 'grossTips' | 'guestCount' | 'guestsVarLw' | 'guestsVarLwPct' | 'guestsVarLy' | 'guestsVarLyPct' | 'hour' | 'hoursWorked' | 'inclusiveTax' | 'itemName' | 'itemPrice' | 'locationCity' | 'locationId' | 'locationMid' | 'locationName' | 'locationState' | 'mastercard' | 'mcReturns' | 'modifierName' | 'modifierPrice' | 'modifierQuantity' | 'netSales' | 'netTaxCollected' | 'netTips' | 'numberOfGuests' | 'orderType' | 'paymentType' | 'payrollId' | 'quantity' | 'referenceNumber' | 'refundAmount' | 'refundedTaxAmount' | 'revenueCenter' | 'revenueClass' | 'salesVarLw' | 'salesVarLwPct' | 'salesVarLy' | 'salesVarLyPct' | 'salesMixByPct' | 'salesPerGuest' | 'salesPerGuestLw' | 'salesPerGuestLy' | 'scheduledShiftEnd' | 'scheduledShiftStart' | 'settlementBatchDate' | 'shiftDurationHrs' | 'subtotal' | 'taxCollected' | 'taxesVarLw' | 'taxesVarLy' | 'taxesVarLwPct' | 'taxesVarLyPct' | 'taxName' | 'taxRate' | 'taxableSales' | 'ticketClosed' | 'ticketFee' | 'ticketNumber' | 'ticketOpen' | 'ticketTotal' | 'timeOpenMins' | 'tipPct' | 'tipReduction' | 'tipShare' | 'tipShareContributed' | 'tips' | 'tipsPerHour' | 'totalCollected' | 'totalItemSales' | 'totalModifierSales' | 'totalReturns' | 'totalSales' | 'totalTips' | 'transactionDate' | 'transactionId' | 'transactionType' | 'untaxedSales' | 'visa' | 'visaReturns' | 'paymentsCount' | 'paymentsAmount' | 'paymentsTotal' | 'refundVoidDescription' | 'refundVoidCount' | 'refundVoidAmount' | 'refundVoidPctSales' | 'discountName' | 'tickets' | 'guests' | 'ticketAverage' | 'guestAverage' | 'net' | 'salePaymentType' | 'type' | 'status' | 'employeeStatus' | 'lastModified' | 'discountCount' | 'itemQuantity' | 'modifierQuantityComp' | 'itemQuantityComp' | 'attachRateComp' | 'totalModifierSalesVar' | 'totalModifierSalesVarPct' | 'modifierQuantityVar' | 'modifierQuantityVarPct' | 'attachRateVar' | 'attachRateVarPct' | 'totalModifierSalesComp' | 'paidNormalHours' | 'normalPay' | 'overtimePay' | 'doubleOvertimePay' | 'gratuity' | 'tipPaidStatus' | 'totalPayments' | 'minimumWageAdjustment' | 'tableName' | 'totalPay' | 'ticketCountLwPct' | 'ticketCountLyPct' | 'ticketCountVarLy' | 'ticketCountVarLw';
2
2
  declare const COLUMN_REGISTRY: {
3
3
  readonly fifteenMinInterval: {
4
4
  readonly titleKey: "common.report-col.fifteen-min-interval";
@@ -835,6 +835,26 @@ declare const COLUMN_REGISTRY: {
835
835
  readonly shortTitleKey: "common.report-col.table-name.short";
836
836
  readonly infoTextKey: "common.report-col.table-name.info";
837
837
  };
838
+ readonly ticketCountLwPct: {
839
+ readonly titleKey: "common.report-col.ticket-count-var-lw-pct";
840
+ readonly shortTitleKey: "common.report-col.ticket-count-var-lw-pct.short";
841
+ readonly infoTextKey: "common.report-col.ticket-count-var-lw-pct.info";
842
+ };
843
+ readonly ticketCountLyPct: {
844
+ readonly titleKey: "common.report-col.ticket-count-var-ly-pct";
845
+ readonly shortTitleKey: "common.report-col.ticket-count-var-ly-pct.short";
846
+ readonly infoTextKey: "common.report-col.ticket-count-var-ly-pct.info";
847
+ };
848
+ readonly ticketCountVarLw: {
849
+ readonly titleKey: "common.report-col.ticket-count-lw";
850
+ readonly shortTitleKey: "common.report-col.ticket-count-lw.short";
851
+ readonly infoTextKey: "common.report-col.ticket-count-lw.info";
852
+ };
853
+ readonly ticketCountVarLy: {
854
+ readonly titleKey: "common.report-col.ticket-count-ly";
855
+ readonly shortTitleKey: "common.report-col.ticket-count-ly.short";
856
+ readonly infoTextKey: "common.report-col.ticket-count-ly.info";
857
+ };
838
858
  };
839
859
  type ColumnMetadata = (typeof COLUMN_REGISTRY)[ReportColumnKey];
840
860
  type ColumnMessageKey = ColumnMetadata['titleKey'] | ColumnMetadata['shortTitleKey'] | Extract<ColumnMetadata, {
@@ -1342,9 +1362,21 @@ declare const enUS: {
1342
1362
  readonly 'common.report-col.total-pay': "Total Pay";
1343
1363
  readonly 'common.report-col.total-pay.short': "Total Pay";
1344
1364
  readonly 'common.report-col.total-pay.info': "Total compensation including wages, overtime, and adjustments";
1365
+ readonly 'common.report-col.ticket-count-var-lw-pct': "Ticket count ± LW %";
1366
+ readonly 'common.report-col.ticket-count-var-lw-pct.short': "± LW %";
1367
+ readonly 'common.report-col.ticket-count-var-lw-pct.info': "Percentage change in ticket count compared to last week";
1368
+ readonly 'common.report-col.ticket-count-var-ly-pct': "Ticket count ± LY %";
1369
+ readonly 'common.report-col.ticket-count-var-ly-pct.short': "± LY %";
1370
+ readonly 'common.report-col.ticket-count-var-ly-pct.info': "Percentage change in ticket count compared to last year";
1345
1371
  readonly 'common.report-col.table-name': "Table Name";
1346
1372
  readonly 'common.report-col.table-name.short': "Table Name";
1347
1373
  readonly 'common.report-col.table-name.info': "Table Name if assigned";
1374
+ readonly 'common.report-col.ticket-count-lw': "Ticket count ± LW";
1375
+ readonly 'common.report-col.ticket-count-lw.short': "± LW";
1376
+ readonly 'common.report-col.ticket-count-lw.info': "Ticket count compared to last week";
1377
+ readonly 'common.report-col.ticket-count-ly': "Ticket count ± LY";
1378
+ readonly 'common.report-col.ticket-count-ly.short': "± LY";
1379
+ readonly 'common.report-col.ticket-count-ly.info': "Ticket count compared to last year";
1348
1380
  readonly 'common.report-section.revenue-class': "Sales by Revenue Class";
1349
1381
  readonly 'common.report-section.payments': "Payments";
1350
1382
  readonly 'common.report-section.cash': "Expected Closeout Cash";
@@ -1408,6 +1440,8 @@ declare const enUS: {
1408
1440
  readonly 'table.groups.gross-sales': "Gross Sales";
1409
1441
  readonly 'table.groups.guests': "Guests";
1410
1442
  readonly 'table.groups.sales-per-guest': "Sales/Guest";
1443
+ readonly 'table.groups.other': "Other";
1444
+ readonly 'table.groups.tickets': "Tickets";
1411
1445
  readonly 'employee-timecard.status.active': "Active";
1412
1446
  readonly 'employee-timecard.status.inactive': "Inactive";
1413
1447
  readonly 'employee-timecard.job.break-suffix': " * break";
@@ -1459,18 +1493,20 @@ type ColumnPresentationConfig<TField = string> = (BaseColumnPresentationConfig<T
1459
1493
  customConfiguration: CustomConfiguration;
1460
1494
  conditionalConfiguration?: never;
1461
1495
  });
1462
- interface ColumnGroupConfig<TField extends string = string> {
1463
- id: string;
1496
+ interface ColumnGroupConfig<TField extends string = string, TGroupId extends string = string> {
1497
+ id: TGroupId;
1464
1498
  headerTranslationKey: MessageKey;
1465
1499
  baseFields: TField[];
1466
1500
  lastWeekFields?: TField[];
1467
1501
  lastYearFields?: TField[];
1468
1502
  }
1469
- interface ReportConfig<TField extends string = string> {
1503
+ interface ReportConfig<TField extends string = string, TGroupId extends string = string> {
1470
1504
  fields: Record<TField, ColumnPresentationConfig<TField>>;
1471
1505
  availableColumns: TField[];
1472
1506
  defaultVisibleColumns: TField[];
1473
- columnGroups?: ColumnGroupConfig<TField>[];
1507
+ columnGroups?: ColumnGroupConfig<TField, TGroupId>[];
1508
+ /** IDs of `columnGroups` that are enabled by default. */
1509
+ defaultColumnGroups?: TGroupId[];
1474
1510
  chartFields?: TField[];
1475
1511
  hasFooter: boolean;
1476
1512
  dataAccessKey?: string;
@@ -1496,7 +1532,7 @@ declare const Report: {
1496
1532
  readonly DAILY_SALES_LIVE: "daily-sales-live";
1497
1533
  };
1498
1534
  type ReportType = (typeof Report)[keyof typeof Report];
1499
- declare const getReportConfig: (reportType: ReportType) => ReportConfig<string> | ReportConfig<string>[] | null;
1535
+ declare const getReportConfig: (reportType: ReportType) => ReportConfig<string, string> | ReportConfig<string, string>[] | null;
1500
1536
  declare const getFixedColumns: <TField extends string = string>(config: ReportConfig<TField>, parameters?: {
1501
1537
  secondGroupBy?: AnalyticsField;
1502
1538
  }) => TField[];
@@ -1,4 +1,4 @@
1
- type ReportColumnKey = 'fifteenMinInterval' | 'adjustedTips' | 'advantageProgram' | 'amex' | 'amexReturns' | 'attachRate' | 'autoGratuity' | 'averageGrossPrice' | 'bankFees' | 'batchAmount' | 'batchDate' | 'batchNumber' | 'cashCollected' | 'clockInTime' | 'clockOutTime' | 'country' | 'customerName' | 'date' | 'dateClose' | 'daypart' | 'debit' | 'debitReturns' | 'declaredTips' | 'department' | 'depositCurrency' | 'depositDate' | 'discountAmount' | 'ticketCount' | 'itemCount' | 'discover' | 'discoverReturns' | 'ebt' | 'ebtReturns' | 'employeeId' | 'employeeJob' | 'employeeName' | 'exemptTaxes' | 'exemptSales' | 'grandTotal' | 'grossCashSales' | 'grossCashTips' | 'grossCreditCardTips' | 'grossCreditSales' | 'grossSales' | 'grossSalesVarLw' | 'grossSalesVarLy' | 'grossSalesVarLwPct' | 'grossSalesVarLyPct' | 'grossTips' | 'guestCount' | 'guestsVarLw' | 'guestsVarLwPct' | 'guestsVarLy' | 'guestsVarLyPct' | 'hour' | 'hoursWorked' | 'inclusiveTax' | 'itemName' | 'itemPrice' | 'locationCity' | 'locationId' | 'locationMid' | 'locationName' | 'locationState' | 'mastercard' | 'mcReturns' | 'modifierName' | 'modifierPrice' | 'modifierQuantity' | 'netSales' | 'netTaxCollected' | 'netTips' | 'numberOfGuests' | 'orderType' | 'paymentType' | 'payrollId' | 'quantity' | 'referenceNumber' | 'refundAmount' | 'refundedTaxAmount' | 'revenueCenter' | 'revenueClass' | 'salesVarLw' | 'salesVarLwPct' | 'salesVarLy' | 'salesVarLyPct' | 'salesMixByPct' | 'salesPerGuest' | 'salesPerGuestLw' | 'salesPerGuestLy' | 'scheduledShiftEnd' | 'scheduledShiftStart' | 'settlementBatchDate' | 'shiftDurationHrs' | 'subtotal' | 'taxCollected' | 'taxesVarLw' | 'taxesVarLy' | 'taxesVarLwPct' | 'taxesVarLyPct' | 'taxName' | 'taxRate' | 'taxableSales' | 'ticketClosed' | 'ticketFee' | 'ticketNumber' | 'ticketOpen' | 'ticketTotal' | 'timeOpenMins' | 'tipPct' | 'tipReduction' | 'tipShare' | 'tipShareContributed' | 'tips' | 'tipsPerHour' | 'totalCollected' | 'totalItemSales' | 'totalModifierSales' | 'totalReturns' | 'totalSales' | 'totalTips' | 'transactionDate' | 'transactionId' | 'transactionType' | 'untaxedSales' | 'visa' | 'visaReturns' | 'paymentsCount' | 'paymentsAmount' | 'paymentsTotal' | 'refundVoidDescription' | 'refundVoidCount' | 'refundVoidAmount' | 'refundVoidPctSales' | 'discountName' | 'tickets' | 'guests' | 'ticketAverage' | 'guestAverage' | 'net' | 'salePaymentType' | 'type' | 'status' | 'employeeStatus' | 'lastModified' | 'discountCount' | 'itemQuantity' | 'modifierQuantityComp' | 'itemQuantityComp' | 'attachRateComp' | 'totalModifierSalesVar' | 'totalModifierSalesVarPct' | 'modifierQuantityVar' | 'modifierQuantityVarPct' | 'attachRateVar' | 'attachRateVarPct' | 'totalModifierSalesComp' | 'paidNormalHours' | 'normalPay' | 'overtimePay' | 'doubleOvertimePay' | 'gratuity' | 'tipPaidStatus' | 'totalPayments' | 'minimumWageAdjustment' | 'tableName' | 'totalPay';
1
+ type ReportColumnKey = 'fifteenMinInterval' | 'adjustedTips' | 'advantageProgram' | 'amex' | 'amexReturns' | 'attachRate' | 'autoGratuity' | 'averageGrossPrice' | 'bankFees' | 'batchAmount' | 'batchDate' | 'batchNumber' | 'cashCollected' | 'clockInTime' | 'clockOutTime' | 'country' | 'customerName' | 'date' | 'dateClose' | 'daypart' | 'debit' | 'debitReturns' | 'declaredTips' | 'department' | 'depositCurrency' | 'depositDate' | 'discountAmount' | 'ticketCount' | 'itemCount' | 'discover' | 'discoverReturns' | 'ebt' | 'ebtReturns' | 'employeeId' | 'employeeJob' | 'employeeName' | 'exemptTaxes' | 'exemptSales' | 'grandTotal' | 'grossCashSales' | 'grossCashTips' | 'grossCreditCardTips' | 'grossCreditSales' | 'grossSales' | 'grossSalesVarLw' | 'grossSalesVarLy' | 'grossSalesVarLwPct' | 'grossSalesVarLyPct' | 'grossTips' | 'guestCount' | 'guestsVarLw' | 'guestsVarLwPct' | 'guestsVarLy' | 'guestsVarLyPct' | 'hour' | 'hoursWorked' | 'inclusiveTax' | 'itemName' | 'itemPrice' | 'locationCity' | 'locationId' | 'locationMid' | 'locationName' | 'locationState' | 'mastercard' | 'mcReturns' | 'modifierName' | 'modifierPrice' | 'modifierQuantity' | 'netSales' | 'netTaxCollected' | 'netTips' | 'numberOfGuests' | 'orderType' | 'paymentType' | 'payrollId' | 'quantity' | 'referenceNumber' | 'refundAmount' | 'refundedTaxAmount' | 'revenueCenter' | 'revenueClass' | 'salesVarLw' | 'salesVarLwPct' | 'salesVarLy' | 'salesVarLyPct' | 'salesMixByPct' | 'salesPerGuest' | 'salesPerGuestLw' | 'salesPerGuestLy' | 'scheduledShiftEnd' | 'scheduledShiftStart' | 'settlementBatchDate' | 'shiftDurationHrs' | 'subtotal' | 'taxCollected' | 'taxesVarLw' | 'taxesVarLy' | 'taxesVarLwPct' | 'taxesVarLyPct' | 'taxName' | 'taxRate' | 'taxableSales' | 'ticketClosed' | 'ticketFee' | 'ticketNumber' | 'ticketOpen' | 'ticketTotal' | 'timeOpenMins' | 'tipPct' | 'tipReduction' | 'tipShare' | 'tipShareContributed' | 'tips' | 'tipsPerHour' | 'totalCollected' | 'totalItemSales' | 'totalModifierSales' | 'totalReturns' | 'totalSales' | 'totalTips' | 'transactionDate' | 'transactionId' | 'transactionType' | 'untaxedSales' | 'visa' | 'visaReturns' | 'paymentsCount' | 'paymentsAmount' | 'paymentsTotal' | 'refundVoidDescription' | 'refundVoidCount' | 'refundVoidAmount' | 'refundVoidPctSales' | 'discountName' | 'tickets' | 'guests' | 'ticketAverage' | 'guestAverage' | 'net' | 'salePaymentType' | 'type' | 'status' | 'employeeStatus' | 'lastModified' | 'discountCount' | 'itemQuantity' | 'modifierQuantityComp' | 'itemQuantityComp' | 'attachRateComp' | 'totalModifierSalesVar' | 'totalModifierSalesVarPct' | 'modifierQuantityVar' | 'modifierQuantityVarPct' | 'attachRateVar' | 'attachRateVarPct' | 'totalModifierSalesComp' | 'paidNormalHours' | 'normalPay' | 'overtimePay' | 'doubleOvertimePay' | 'gratuity' | 'tipPaidStatus' | 'totalPayments' | 'minimumWageAdjustment' | 'tableName' | 'totalPay' | 'ticketCountLwPct' | 'ticketCountLyPct' | 'ticketCountVarLy' | 'ticketCountVarLw';
2
2
  declare const COLUMN_REGISTRY: {
3
3
  readonly fifteenMinInterval: {
4
4
  readonly titleKey: "common.report-col.fifteen-min-interval";
@@ -835,6 +835,26 @@ declare const COLUMN_REGISTRY: {
835
835
  readonly shortTitleKey: "common.report-col.table-name.short";
836
836
  readonly infoTextKey: "common.report-col.table-name.info";
837
837
  };
838
+ readonly ticketCountLwPct: {
839
+ readonly titleKey: "common.report-col.ticket-count-var-lw-pct";
840
+ readonly shortTitleKey: "common.report-col.ticket-count-var-lw-pct.short";
841
+ readonly infoTextKey: "common.report-col.ticket-count-var-lw-pct.info";
842
+ };
843
+ readonly ticketCountLyPct: {
844
+ readonly titleKey: "common.report-col.ticket-count-var-ly-pct";
845
+ readonly shortTitleKey: "common.report-col.ticket-count-var-ly-pct.short";
846
+ readonly infoTextKey: "common.report-col.ticket-count-var-ly-pct.info";
847
+ };
848
+ readonly ticketCountVarLw: {
849
+ readonly titleKey: "common.report-col.ticket-count-lw";
850
+ readonly shortTitleKey: "common.report-col.ticket-count-lw.short";
851
+ readonly infoTextKey: "common.report-col.ticket-count-lw.info";
852
+ };
853
+ readonly ticketCountVarLy: {
854
+ readonly titleKey: "common.report-col.ticket-count-ly";
855
+ readonly shortTitleKey: "common.report-col.ticket-count-ly.short";
856
+ readonly infoTextKey: "common.report-col.ticket-count-ly.info";
857
+ };
838
858
  };
839
859
  type ColumnMetadata = (typeof COLUMN_REGISTRY)[ReportColumnKey];
840
860
  type ColumnMessageKey = ColumnMetadata['titleKey'] | ColumnMetadata['shortTitleKey'] | Extract<ColumnMetadata, {
@@ -1342,9 +1362,21 @@ declare const enUS: {
1342
1362
  readonly 'common.report-col.total-pay': "Total Pay";
1343
1363
  readonly 'common.report-col.total-pay.short': "Total Pay";
1344
1364
  readonly 'common.report-col.total-pay.info': "Total compensation including wages, overtime, and adjustments";
1365
+ readonly 'common.report-col.ticket-count-var-lw-pct': "Ticket count ± LW %";
1366
+ readonly 'common.report-col.ticket-count-var-lw-pct.short': "± LW %";
1367
+ readonly 'common.report-col.ticket-count-var-lw-pct.info': "Percentage change in ticket count compared to last week";
1368
+ readonly 'common.report-col.ticket-count-var-ly-pct': "Ticket count ± LY %";
1369
+ readonly 'common.report-col.ticket-count-var-ly-pct.short': "± LY %";
1370
+ readonly 'common.report-col.ticket-count-var-ly-pct.info': "Percentage change in ticket count compared to last year";
1345
1371
  readonly 'common.report-col.table-name': "Table Name";
1346
1372
  readonly 'common.report-col.table-name.short': "Table Name";
1347
1373
  readonly 'common.report-col.table-name.info': "Table Name if assigned";
1374
+ readonly 'common.report-col.ticket-count-lw': "Ticket count ± LW";
1375
+ readonly 'common.report-col.ticket-count-lw.short': "± LW";
1376
+ readonly 'common.report-col.ticket-count-lw.info': "Ticket count compared to last week";
1377
+ readonly 'common.report-col.ticket-count-ly': "Ticket count ± LY";
1378
+ readonly 'common.report-col.ticket-count-ly.short': "± LY";
1379
+ readonly 'common.report-col.ticket-count-ly.info': "Ticket count compared to last year";
1348
1380
  readonly 'common.report-section.revenue-class': "Sales by Revenue Class";
1349
1381
  readonly 'common.report-section.payments': "Payments";
1350
1382
  readonly 'common.report-section.cash': "Expected Closeout Cash";
@@ -1408,6 +1440,8 @@ declare const enUS: {
1408
1440
  readonly 'table.groups.gross-sales': "Gross Sales";
1409
1441
  readonly 'table.groups.guests': "Guests";
1410
1442
  readonly 'table.groups.sales-per-guest': "Sales/Guest";
1443
+ readonly 'table.groups.other': "Other";
1444
+ readonly 'table.groups.tickets': "Tickets";
1411
1445
  readonly 'employee-timecard.status.active': "Active";
1412
1446
  readonly 'employee-timecard.status.inactive': "Inactive";
1413
1447
  readonly 'employee-timecard.job.break-suffix': " * break";
@@ -1459,18 +1493,20 @@ type ColumnPresentationConfig<TField = string> = (BaseColumnPresentationConfig<T
1459
1493
  customConfiguration: CustomConfiguration;
1460
1494
  conditionalConfiguration?: never;
1461
1495
  });
1462
- interface ColumnGroupConfig<TField extends string = string> {
1463
- id: string;
1496
+ interface ColumnGroupConfig<TField extends string = string, TGroupId extends string = string> {
1497
+ id: TGroupId;
1464
1498
  headerTranslationKey: MessageKey;
1465
1499
  baseFields: TField[];
1466
1500
  lastWeekFields?: TField[];
1467
1501
  lastYearFields?: TField[];
1468
1502
  }
1469
- interface ReportConfig<TField extends string = string> {
1503
+ interface ReportConfig<TField extends string = string, TGroupId extends string = string> {
1470
1504
  fields: Record<TField, ColumnPresentationConfig<TField>>;
1471
1505
  availableColumns: TField[];
1472
1506
  defaultVisibleColumns: TField[];
1473
- columnGroups?: ColumnGroupConfig<TField>[];
1507
+ columnGroups?: ColumnGroupConfig<TField, TGroupId>[];
1508
+ /** IDs of `columnGroups` that are enabled by default. */
1509
+ defaultColumnGroups?: TGroupId[];
1474
1510
  chartFields?: TField[];
1475
1511
  hasFooter: boolean;
1476
1512
  dataAccessKey?: string;
@@ -1496,7 +1532,7 @@ declare const Report: {
1496
1532
  readonly DAILY_SALES_LIVE: "daily-sales-live";
1497
1533
  };
1498
1534
  type ReportType = (typeof Report)[keyof typeof Report];
1499
- declare const getReportConfig: (reportType: ReportType) => ReportConfig<string> | ReportConfig<string>[] | null;
1535
+ declare const getReportConfig: (reportType: ReportType) => ReportConfig<string, string> | ReportConfig<string, string>[] | null;
1500
1536
  declare const getFixedColumns: <TField extends string = string>(config: ReportConfig<TField>, parameters?: {
1501
1537
  secondGroupBy?: AnalyticsField;
1502
1538
  }) => TField[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harbortouch/skytab-analytics-report-utils",
3
- "version": "0.42.2",
3
+ "version": "0.43.0",
4
4
  "description": "Centralized report column presentation configuration for SkyTab Analytics",
5
5
  "engines": {
6
6
  "node": ">=22.6.0",