@harbortouch/skytab-analytics-report-utils 0.11.0 → 0.12.1

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.
package/dist/index.cjs CHANGED
@@ -21,28 +21,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
23
  COLUMN_REGISTRY: () => COLUMN_REGISTRY,
24
- DAILY_SALES_AVAILABLE_COLUMNS: () => DAILY_SALES_AVAILABLE_COLUMNS,
25
- DAILY_SALES_BY_GROUP_AVAILABLE_COLUMNS: () => DAILY_SALES_BY_GROUP_AVAILABLE_COLUMNS,
26
- DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS: () => DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
27
- DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS: () => DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
28
- DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS: () => DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS,
29
- DAILY_SALES_TAXES_AVAILABLE_COLUMNS: () => DAILY_SALES_TAXES_AVAILABLE_COLUMNS,
30
- DAILY_SALES_TRENDS_AVAILABLE_COLUMNS: () => DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
31
- EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS: () => EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS,
32
- ITEM_TAX_AVAILABLE_COLUMNS: () => ITEM_TAX_AVAILABLE_COLUMNS,
33
- MODIFIER_MIX_AVAILABLE_COLUMNS: () => MODIFIER_MIX_AVAILABLE_COLUMNS,
34
- PRODUCT_MIX_AVAILABLE_COLUMNS: () => PRODUCT_MIX_AVAILABLE_COLUMNS,
35
- PRODUCT_MIX_CHART_FIELDS: () => PRODUCT_MIX_CHART_FIELDS,
36
- PRODUCT_MIX_DEFAULT_VISIBLE_COLUMNS: () => PRODUCT_MIX_DEFAULT_VISIBLE_COLUMNS,
37
24
  Report: () => Report,
38
- SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS: () => SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
39
- SALES_SUMMARY_AVAILABLE_COLUMNS: () => SALES_SUMMARY_AVAILABLE_COLUMNS,
40
- TICKET_LIVE_AVAILABLE_COLUMNS: () => TICKET_LIVE_AVAILABLE_COLUMNS,
41
- TICKET_SUMMARY_AVAILABLE_COLUMNS: () => TICKET_SUMMARY_AVAILABLE_COLUMNS,
42
25
  calculateFieldTotal: () => calculateFieldTotal,
43
26
  calculateReportTotals: () => calculateReportTotals,
44
27
  dailySalesConfig: () => dailySalesConfig,
45
28
  dailySalesDiscountsConfig: () => dailySalesDiscountsConfig,
29
+ dailySalesLiveConfig: () => dailySalesLiveConfig,
46
30
  dailySalesPaymentsConfig: () => dailySalesPaymentsConfig,
47
31
  dailySalesRefundsVoidsConfig: () => dailySalesRefundsVoidsConfig,
48
32
  dailySalesTaxesConfig: () => dailySalesTaxesConfig,
@@ -75,9 +59,59 @@ __export(index_exports, {
75
59
  });
76
60
  module.exports = __toCommonJS(index_exports);
77
61
 
78
- // src/reports/salesSummary.ts
79
- var FIRST_COLUMN_WIDTH = 240;
62
+ // src/reports/salesByItemDetail.ts
80
63
  var FIELDS = {
64
+ businessDate: { type: "date", columnKey: "date", filteringAvailable: false },
65
+ ticketClosedAt: { type: "string", columnKey: "ticketClosed", filteringAvailable: false },
66
+ hourId: { type: "number", columnKey: "hour", filteringAvailable: false },
67
+ daypartName: { type: "string", columnKey: "daypart", filteringAvailable: false },
68
+ locationId: { type: "number", columnKey: "locationId", filteringAvailable: false },
69
+ locationName: { type: "string", columnKey: "locationName", filteringAvailable: false },
70
+ departmentName: { type: "string", columnKey: "department", filteringAvailable: false },
71
+ itemName: { type: "string", columnKey: "itemName", filteringAvailable: false },
72
+ revenueCenterName: { type: "string", columnKey: "revenueCenter", filteringAvailable: false },
73
+ revenueClassName: { type: "string", columnKey: "revenueClass", filteringAvailable: false },
74
+ salesAmountGross: { type: "money", columnKey: "grossSales" },
75
+ itemsQuantity: { type: "number", columnKey: "quantity" },
76
+ transactionId: { type: "string", columnKey: "ticketNumber", filteringAvailable: false },
77
+ guestsCount: { type: "number", columnKey: "guestCount" },
78
+ employeeName: { type: "string", columnKey: "employeeName", filteringAvailable: false },
79
+ orderTypeName: { type: "string", columnKey: "orderType", filteringAvailable: false },
80
+ salesType: { type: "string", columnKey: "salePaymentType", filteringAvailable: false },
81
+ itemPrice: { type: "money", columnKey: "itemPrice" }
82
+ };
83
+ var SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS = [
84
+ "businessDate",
85
+ "ticketClosedAt",
86
+ "hourId",
87
+ "daypartName",
88
+ "locationId",
89
+ "locationName",
90
+ "departmentName",
91
+ "itemName",
92
+ "revenueCenterName",
93
+ "revenueClassName",
94
+ "salesAmountGross",
95
+ "itemsQuantity",
96
+ "transactionId",
97
+ "guestsCount",
98
+ "employeeName",
99
+ "orderTypeName",
100
+ "salesType",
101
+ "itemPrice"
102
+ ];
103
+ var salesByItemDetailConfig = {
104
+ fields: FIELDS,
105
+ availableColumns: SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
106
+ defaultVisibleColumns: SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
107
+ hasFooter: false
108
+ };
109
+
110
+ // src/reports/constants.ts
111
+ var FIRST_COLUMN_WIDTH = 240;
112
+
113
+ // src/reports/salesSummary.ts
114
+ var FIELDS2 = {
81
115
  groupById: { type: "number" },
82
116
  groupByName: { type: "string", size: FIRST_COLUMN_WIDTH },
83
117
  salesAmountNet: { type: "money", columnKey: "netSales" },
@@ -204,7 +238,7 @@ var SALES_SUMMARY_AVAILABLE_COLUMNS = [
204
238
  ];
205
239
  var SALES_SUMMARY_DEFAULT_VISIBLE_COLUMNS = ["salesAmountNet", "guestsCount", "salesPerGuestTY"];
206
240
  var salesSummaryConfig = {
207
- fields: FIELDS,
241
+ fields: FIELDS2,
208
242
  availableColumns: SALES_SUMMARY_AVAILABLE_COLUMNS,
209
243
  defaultVisibleColumns: SALES_SUMMARY_DEFAULT_VISIBLE_COLUMNS,
210
244
  columnGroups: COLUMN_GROUPS,
@@ -212,7 +246,7 @@ var salesSummaryConfig = {
212
246
  };
213
247
 
214
248
  // src/reports/ticketSummary.ts
215
- var FIELDS2 = {
249
+ var FIELDS3 = {
216
250
  ticketId: { type: "string" },
217
251
  locationId: { type: "number" },
218
252
  orderName: { type: "string" },
@@ -224,7 +258,7 @@ var FIELDS2 = {
224
258
  footerCalculation: { type: "sum" }
225
259
  },
226
260
  locationName: { type: "string", size: 240, columnKey: "locationName" },
227
- orderNumber: { type: "number", columnKey: "ticketNumber", footerCalculation: { type: "none" } },
261
+ orderNumber: { type: "number", columnKey: "ticketNumber", footerCalculation: { type: "count" } },
228
262
  businessDate: { type: "date", columnKey: "date" },
229
263
  ticketOpenedAt: { type: "time", columnKey: "ticketOpen" },
230
264
  ticketClosedAt: { type: "time", columnKey: "ticketClosed" },
@@ -299,19 +333,19 @@ var TICKET_SUMMARY_AVAILABLE_COLUMNS = [
299
333
  "orderTypeName"
300
334
  ];
301
335
  var ticketSummaryConfig = {
302
- fields: FIELDS2,
336
+ fields: FIELDS3,
303
337
  availableColumns: TICKET_SUMMARY_AVAILABLE_COLUMNS,
304
338
  defaultVisibleColumns: TICKET_SUMMARY_AVAILABLE_COLUMNS,
305
339
  hasFooter: true
306
340
  };
307
341
 
308
342
  // src/reports/ticketLive.ts
309
- var FIELDS3 = {
343
+ var FIELDS4 = {
310
344
  locationName: { type: "string", columnKey: "locationName" },
311
345
  orderNumber: {
312
346
  type: "number",
313
347
  columnKey: "ticketNumber",
314
- footerCalculation: { type: "none" }
348
+ footerCalculation: { type: "count" }
315
349
  },
316
350
  dateOpen: { type: "string", columnKey: "date" },
317
351
  timeOpen: { type: "string", columnKey: "ticketOpen" },
@@ -357,17 +391,16 @@ var TICKET_LIVE_AVAILABLE_COLUMNS = [
357
391
  "orderType"
358
392
  ];
359
393
  var ticketLiveConfig = {
360
- fields: FIELDS3,
394
+ fields: FIELDS4,
361
395
  availableColumns: TICKET_LIVE_AVAILABLE_COLUMNS,
362
396
  defaultVisibleColumns: TICKET_LIVE_AVAILABLE_COLUMNS,
363
397
  hasFooter: true
364
398
  };
365
399
 
366
400
  // src/reports/productMix.ts
367
- var FIRST_COLUMN_WIDTH2 = 240;
368
- var FIELDS4 = {
401
+ var FIELDS5 = {
369
402
  groupById: { type: "string" },
370
- groupByName: { type: "string", size: FIRST_COLUMN_WIDTH2 },
403
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH },
371
404
  salesAmountGross: { type: "money", columnKey: "grossSales" },
372
405
  discountsAmount: { type: "money", columnKey: "discountAmount" },
373
406
  inclusiveTaxesAmount: { type: "money", columnKey: "inclusiveTax" },
@@ -385,16 +418,6 @@ var FIELDS4 = {
385
418
  salesMixPct: { type: "percent", columnKey: "salesMixByPct" }
386
419
  };
387
420
  var PRODUCT_MIX_AVAILABLE_COLUMNS = [
388
- "salesAmountGross",
389
- "discountsAmount",
390
- "inclusiveTaxesAmount",
391
- "salesAmountNet",
392
- "itemsQuantity",
393
- "avgPrice",
394
- "salesMixPct"
395
- ];
396
- var PRODUCT_MIX_DEFAULT_VISIBLE_COLUMNS = PRODUCT_MIX_AVAILABLE_COLUMNS;
397
- var PRODUCT_MIX_CHART_FIELDS = [
398
421
  "salesAmountGross",
399
422
  "itemsQuantity",
400
423
  "avgPrice",
@@ -404,19 +427,19 @@ var PRODUCT_MIX_CHART_FIELDS = [
404
427
  "salesMixPct"
405
428
  ];
406
429
  var productMixConfig = {
407
- fields: FIELDS4,
430
+ fields: FIELDS5,
408
431
  availableColumns: PRODUCT_MIX_AVAILABLE_COLUMNS,
409
- defaultVisibleColumns: PRODUCT_MIX_DEFAULT_VISIBLE_COLUMNS,
432
+ defaultVisibleColumns: PRODUCT_MIX_AVAILABLE_COLUMNS,
433
+ chartFields: PRODUCT_MIX_AVAILABLE_COLUMNS,
410
434
  hasFooter: true
411
435
  };
412
436
 
413
437
  // src/reports/modifierMix.ts
414
- var FIRST_COLUMN_WIDTH3 = 240;
415
- var FIELDS5 = {
438
+ var FIELDS6 = {
416
439
  groupById: { type: "string", filteringAvailable: false },
417
- groupByName: { type: "string", size: FIRST_COLUMN_WIDTH3, filteringAvailable: false },
440
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH, filteringAvailable: false },
418
441
  groupById2: { type: "string", filteringAvailable: false },
419
- groupByName2: { type: "string", size: FIRST_COLUMN_WIDTH3, filteringAvailable: false },
442
+ groupByName2: { type: "string", size: FIRST_COLUMN_WIDTH, filteringAvailable: false },
420
443
  modifiersSales: { type: "money", columnKey: "totalModifierSales" },
421
444
  modifiersQuantity: { type: "number", columnKey: "modifierQuantity" },
422
445
  itemsQuantity: {
@@ -479,14 +502,14 @@ var FIELDS5 = {
479
502
  };
480
503
  var MODIFIER_MIX_AVAILABLE_COLUMNS = ["modifiersSales", "modifiersQuantity", "avgGross"];
481
504
  var modifierMixConfig = {
482
- fields: FIELDS5,
505
+ fields: FIELDS6,
483
506
  availableColumns: MODIFIER_MIX_AVAILABLE_COLUMNS,
484
507
  defaultVisibleColumns: MODIFIER_MIX_AVAILABLE_COLUMNS,
485
508
  hasFooter: true
486
509
  };
487
510
 
488
511
  // src/reports/itemTax.ts
489
- var FIELDS6 = {
512
+ var FIELDS7 = {
490
513
  locationId: { type: "number", filteringAvailable: false },
491
514
  taxIsFlat: { type: "boolean", filteringAvailable: false },
492
515
  merchantId: { type: "string", columnKey: "locationMid", filteringAvailable: false },
@@ -533,156 +556,19 @@ var ITEM_TAX_AVAILABLE_COLUMNS = [
533
556
  "taxCollected"
534
557
  ];
535
558
  var itemTaxConfig = {
536
- fields: FIELDS6,
559
+ fields: FIELDS7,
537
560
  availableColumns: ITEM_TAX_AVAILABLE_COLUMNS,
538
561
  defaultVisibleColumns: ITEM_TAX_AVAILABLE_COLUMNS,
539
562
  hasFooter: false
540
563
  };
541
564
 
542
- // src/reports/dailySales.ts
543
- var FIRST_COLUMN_WIDTH4 = 240;
544
- var FIELDS7 = {
545
- groupById: { type: "string" },
546
- groupByName: { type: "string", size: FIRST_COLUMN_WIDTH4 },
547
- itemsQuantity: { type: "number", columnKey: "quantity" },
548
- salesAmountGross: { type: "money", columnKey: "grossSales" },
549
- discountsAmount: { type: "money", columnKey: "discountAmount" },
550
- inclusiveTaxesAmount: { type: "money", columnKey: "inclusiveTax" },
551
- salesAmountNet: { type: "money", columnKey: "netSales" },
552
- salesMixPct: { type: "percent", columnKey: "salesMixByPct" },
553
- avgPrice: {
554
- type: "fixedNumber",
555
- columnKey: "averageGrossPrice",
556
- footerCalculation: {
557
- type: "average",
558
- numeratorField: "salesAmountGross",
559
- denominatorField: "itemsQuantity"
560
- }
561
- },
562
- ticketsCount: { type: "number", columnKey: "tickets" },
563
- guestsCount: { type: "number", columnKey: "guests" },
564
- ticketAverage: {
565
- type: "money",
566
- columnKey: "ticketAverage",
567
- footerCalculation: {
568
- type: "average",
569
- numeratorField: "salesAmountNet",
570
- denominatorField: "ticketsCount"
571
- }
572
- },
573
- guestAverage: {
574
- type: "money",
575
- columnKey: "guestAverage",
576
- footerCalculation: {
577
- type: "average",
578
- numeratorField: "salesAmountNet",
579
- denominatorField: "guestsCount"
580
- }
581
- },
582
- ticketAvg: {
583
- type: "money",
584
- columnKey: "ticketAverage",
585
- footerCalculation: {
586
- type: "average",
587
- numeratorField: "salesAmountNet",
588
- denominatorField: "ticketsCount"
589
- }
590
- },
591
- guestAvg: {
592
- type: "money",
593
- columnKey: "guestAverage",
594
- footerCalculation: {
595
- type: "average",
596
- numeratorField: "salesAmountNet",
597
- denominatorField: "guestsCount"
598
- }
599
- }
600
- };
601
- var DAILY_SALES_AVAILABLE_COLUMNS = [
602
- "itemsQuantity",
603
- "salesAmountGross",
604
- "discountsAmount",
605
- "inclusiveTaxesAmount",
606
- "salesAmountNet",
607
- "salesMixPct"
608
- ];
609
- var DAILY_SALES_BY_GROUP_AVAILABLE_COLUMNS = [
610
- "ticketsCount",
611
- "guestsCount",
612
- "ticketAverage",
613
- "guestAverage",
614
- "salesAmountNet"
615
- ];
616
- var dailySalesConfig = {
617
- fields: FIELDS7,
618
- availableColumns: DAILY_SALES_AVAILABLE_COLUMNS,
619
- defaultVisibleColumns: DAILY_SALES_AVAILABLE_COLUMNS,
620
- hasFooter: true
621
- };
622
- var DAILY_SALES_TRENDS_AVAILABLE_COLUMNS = [
623
- "ticketsCount",
624
- "guestsCount",
625
- "ticketAvg",
626
- "guestAvg",
627
- "salesAmountNet"
628
- ];
629
- var dailySalesTrendsConfig = {
630
- fields: FIELDS7,
631
- availableColumns: DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
632
- defaultVisibleColumns: DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
633
- hasFooter: true
634
- };
635
-
636
- // src/reports/dailySalesPayments.ts
637
- var FIRST_COLUMN_WIDTH5 = 240;
638
- var FIELDS8 = {
639
- paymentTypeName: { type: "string", size: FIRST_COLUMN_WIDTH5 },
640
- paymentsCount: { type: "number", columnKey: "paymentsCount", footerCalculation: { type: "sum" } },
641
- paymentsAmount: { type: "money", columnKey: "paymentsAmount", footerCalculation: { type: "sum" } },
642
- tipsAmount: { type: "money", columnKey: "tips", footerCalculation: { type: "sum" } },
643
- totalSales: { type: "money", columnKey: "paymentsTotal", footerCalculation: { type: "sum" } }
644
- };
645
- var DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS = [
646
- "paymentsCount",
647
- "paymentsAmount",
648
- "tipsAmount",
649
- "totalSales"
650
- ];
651
- var dailySalesPaymentsConfig = {
652
- fields: FIELDS8,
653
- availableColumns: DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
654
- defaultVisibleColumns: DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
655
- hasFooter: true
656
- };
657
-
658
- // src/reports/dailySalesDiscounts.ts
659
- var FIRST_COLUMN_WIDTH6 = 240;
660
- var FIELDS9 = {
661
- discountName: { type: "string", columnKey: "discountName", size: FIRST_COLUMN_WIDTH6 },
662
- ticketCount: { type: "number", columnKey: "ticketCount", footerCalculation: { type: "sum" } },
663
- itemCount: { type: "number", columnKey: "itemCount", footerCalculation: { type: "sum" } },
664
- discountsAmount: { type: "money", columnKey: "discountAmount", footerCalculation: { type: "sum" } }
665
- };
666
- var DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS = [
667
- "ticketCount",
668
- "itemCount",
669
- "discountsAmount"
670
- ];
671
- var dailySalesDiscountsConfig = {
672
- fields: FIELDS9,
673
- availableColumns: DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
674
- defaultVisibleColumns: DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
675
- hasFooter: true
676
- };
677
-
678
565
  // src/reports/employeeTimecard.ts
679
- var FIRST_COLUMN_WIDTH7 = 240;
680
566
  var EMPLOYEE_NAME_WIDTH = 220;
681
567
  var STATUS_WIDTH = 140;
682
568
  var LOOKUP_WIDTH = 160;
683
569
  var PAYROLL_WIDTH = 160;
684
570
  var JOB_WIDTH = 200;
685
- var FIELDS10 = {
571
+ var FIELDS8 = {
686
572
  locationId: {
687
573
  type: "number",
688
574
  enableSorting: false,
@@ -690,7 +576,7 @@ var FIELDS10 = {
690
576
  },
691
577
  locationName: {
692
578
  type: "string",
693
- size: FIRST_COLUMN_WIDTH7,
579
+ size: FIRST_COLUMN_WIDTH,
694
580
  columnKey: "locationName"
695
581
  },
696
582
  businessDate: {
@@ -756,60 +642,103 @@ var EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS = [
756
642
  "shiftHours"
757
643
  ];
758
644
  var employeeTimecardConfig = {
759
- fields: FIELDS10,
645
+ fields: FIELDS8,
760
646
  availableColumns: EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS,
761
647
  defaultVisibleColumns: EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS,
762
- columnGroups: [],
763
- // No column groups for this report
764
648
  hasFooter: true
765
649
  };
766
650
 
767
- // src/reports/salesByItemDetail.ts
768
- var FIELDS11 = {
769
- businessDate: { type: "date", columnKey: "date", filteringAvailable: false },
770
- ticketClosedAt: { type: "string", columnKey: "ticketClosed", filteringAvailable: false },
771
- hourId: { type: "number", columnKey: "hour", filteringAvailable: false },
772
- daypartName: { type: "string", columnKey: "daypart", filteringAvailable: false },
773
- locationId: { type: "number", columnKey: "locationId", filteringAvailable: false },
774
- locationName: { type: "string", columnKey: "locationName", filteringAvailable: false },
775
- departmentName: { type: "string", columnKey: "department", filteringAvailable: false },
776
- itemName: { type: "string", columnKey: "itemName", filteringAvailable: false },
777
- revenueCenterName: { type: "string", columnKey: "revenueCenter", filteringAvailable: false },
778
- revenueClassName: { type: "string", columnKey: "revenueClass", filteringAvailable: false },
779
- salesAmountGross: { type: "money", columnKey: "grossSales" },
651
+ // src/reports/dailySales.ts
652
+ var FIELDS9 = {
653
+ groupById: { type: "string" },
654
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH },
780
655
  itemsQuantity: { type: "number", columnKey: "quantity" },
781
- transactionId: { type: "string", columnKey: "ticketNumber", filteringAvailable: false },
782
- guestsCount: { type: "number", columnKey: "guestCount" },
783
- employeeName: { type: "string", columnKey: "employeeName", filteringAvailable: false },
784
- orderTypeName: { type: "string", columnKey: "orderType", filteringAvailable: false },
785
- salesType: { type: "string", columnKey: "salePaymentType", filteringAvailable: false },
786
- itemPrice: { type: "money", columnKey: "itemPrice" }
656
+ salesAmountGross: { type: "money", columnKey: "grossSales" },
657
+ discountsAmount: { type: "money", columnKey: "discountAmount" },
658
+ inclusiveTaxesAmount: { type: "money", columnKey: "inclusiveTax" },
659
+ salesAmountNet: { type: "money", columnKey: "netSales" },
660
+ salesMixPct: { type: "percent", columnKey: "salesMixByPct" }
787
661
  };
788
- var SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS = [
789
- "businessDate",
790
- "ticketClosedAt",
791
- "hourId",
792
- "daypartName",
793
- "locationId",
794
- "locationName",
795
- "departmentName",
796
- "itemName",
797
- "revenueCenterName",
798
- "revenueClassName",
662
+ var DAILY_SALES_AVAILABLE_COLUMNS = [
663
+ "itemsQuantity",
799
664
  "salesAmountGross",
665
+ "discountsAmount",
666
+ "inclusiveTaxesAmount",
667
+ "salesAmountNet",
668
+ "salesMixPct"
669
+ ];
670
+ var dailySalesConfig = {
671
+ fields: FIELDS9,
672
+ availableColumns: DAILY_SALES_AVAILABLE_COLUMNS,
673
+ defaultVisibleColumns: DAILY_SALES_AVAILABLE_COLUMNS,
674
+ hasFooter: true
675
+ };
676
+
677
+ // src/reports/dailySalesLive.ts
678
+ var FIELDS10 = {
679
+ groupById: { type: "string" },
680
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH },
681
+ itemsQuantity: { type: "number", columnKey: "quantity" },
682
+ salesAmountGross: { type: "money", columnKey: "grossSales" },
683
+ discountsAmount: { type: "money", columnKey: "discountAmount" },
684
+ inclusiveTaxesAmount: { type: "money", columnKey: "inclusiveTax" },
685
+ salesAmountNet: { type: "money", columnKey: "netSales" },
686
+ salesMixPct: { type: "percent", columnKey: "salesMixByPct" },
687
+ guestsCount: { type: "number", columnKey: "guests" }
688
+ };
689
+ var DAILY_SALES_LIVE_AVAILABLE_COLUMNS = [
800
690
  "itemsQuantity",
801
- "transactionId",
691
+ "salesAmountGross",
692
+ "discountsAmount",
693
+ "inclusiveTaxesAmount",
694
+ "salesAmountNet",
695
+ "salesMixPct"
696
+ ];
697
+ var dailySalesLiveConfig = {
698
+ fields: FIELDS10,
699
+ availableColumns: DAILY_SALES_LIVE_AVAILABLE_COLUMNS,
700
+ defaultVisibleColumns: DAILY_SALES_LIVE_AVAILABLE_COLUMNS,
701
+ hasFooter: true
702
+ };
703
+
704
+ // src/reports/dailySalesTrends.ts
705
+ var FIELDS11 = {
706
+ groupById: { type: "string" },
707
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH },
708
+ salesAmountNet: { type: "money", columnKey: "netSales" },
709
+ ticketsCount: { type: "number", columnKey: "tickets" },
710
+ guestsCount: { type: "number", columnKey: "guests" },
711
+ ticketAvg: {
712
+ type: "money",
713
+ columnKey: "ticketAverage",
714
+ footerCalculation: {
715
+ type: "average",
716
+ numeratorField: "salesAmountNet",
717
+ denominatorField: "ticketsCount"
718
+ }
719
+ },
720
+ guestAvg: {
721
+ type: "money",
722
+ columnKey: "guestAverage",
723
+ footerCalculation: {
724
+ type: "average",
725
+ numeratorField: "salesAmountNet",
726
+ denominatorField: "guestsCount"
727
+ }
728
+ }
729
+ };
730
+ var DAILY_SALES_TRENDS_AVAILABLE_COLUMNS = [
731
+ "ticketsCount",
802
732
  "guestsCount",
803
- "employeeName",
804
- "orderTypeName",
805
- "salesType",
806
- "itemPrice"
733
+ "ticketAvg",
734
+ "guestAvg",
735
+ "salesAmountNet"
807
736
  ];
808
- var salesByItemDetailConfig = {
737
+ var dailySalesTrendsConfig = {
809
738
  fields: FIELDS11,
810
- availableColumns: SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
811
- defaultVisibleColumns: SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
812
- hasFooter: false
739
+ availableColumns: DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
740
+ defaultVisibleColumns: DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
741
+ hasFooter: true
813
742
  };
814
743
 
815
744
  // src/report.ts
@@ -824,7 +753,8 @@ var Report = {
824
753
  EMPLOYEE_TIP: "employee-tip",
825
754
  SALES_BY_ITEM: "sales-by-item",
826
755
  DAILY_SALES: "daily-sales",
827
- DAILY_SALES_LIVE: "daily-sales-live"
756
+ DAILY_SALES_LIVE: "daily-sales-live",
757
+ DAILY_SALES_TRENDS: "daily-sales-trends"
828
758
  };
829
759
  var REPORT_CONFIG_MAP = {
830
760
  "sales-summary": salesSummaryConfig,
@@ -837,7 +767,8 @@ var REPORT_CONFIG_MAP = {
837
767
  "employee-tip": null,
838
768
  "sales-by-item": salesByItemDetailConfig,
839
769
  "daily-sales": dailySalesConfig,
840
- "daily-sales-live": null
770
+ "daily-sales-live": dailySalesLiveConfig,
771
+ "daily-sales-trends": dailySalesTrendsConfig
841
772
  };
842
773
  var getReportConfig = (reportType) => REPORT_CONFIG_MAP[reportType];
843
774
 
@@ -1526,6 +1457,9 @@ var calculateFieldTotal = (rows, field, config) => {
1526
1457
  if (calc?.type === "none") {
1527
1458
  return null;
1528
1459
  }
1460
+ if (calc?.type === "count") {
1461
+ return rows.length;
1462
+ }
1529
1463
  if (!calc || calc.type === "sum") {
1530
1464
  return config.columnKey || calc?.type === "sum" ? sumField(rows, field) : 0;
1531
1465
  }
@@ -1565,41 +1499,71 @@ var calculateReportTotals = (data, fieldConfig, opts) => {
1565
1499
  return result;
1566
1500
  };
1567
1501
 
1568
- // src/reports/dailySalesRefundsVoids.ts
1569
- var FIRST_COLUMN_WIDTH8 = 240;
1502
+ // src/reports/dailySalesPayments.ts
1570
1503
  var FIELDS12 = {
1571
- description: { type: "string", columnKey: "refundVoidDescription", size: FIRST_COLUMN_WIDTH8 },
1504
+ paymentTypeName: { type: "string", size: FIRST_COLUMN_WIDTH },
1505
+ paymentsCount: { type: "number", columnKey: "paymentsCount", footerCalculation: { type: "sum" } },
1506
+ paymentsAmount: { type: "money", columnKey: "paymentsAmount", footerCalculation: { type: "sum" } },
1507
+ tipsAmount: { type: "money", columnKey: "tips", footerCalculation: { type: "sum" } },
1508
+ totalSales: { type: "money", columnKey: "paymentsTotal", footerCalculation: { type: "sum" } }
1509
+ };
1510
+ var DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS = [
1511
+ "paymentsCount",
1512
+ "paymentsAmount",
1513
+ "tipsAmount",
1514
+ "totalSales"
1515
+ ];
1516
+ var dailySalesPaymentsConfig = {
1517
+ fields: FIELDS12,
1518
+ availableColumns: DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
1519
+ defaultVisibleColumns: DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
1520
+ hasFooter: true
1521
+ };
1522
+
1523
+ // src/reports/dailySalesDiscounts.ts
1524
+ var FIELDS13 = {
1525
+ discountName: { type: "string", columnKey: "discountName", size: FIRST_COLUMN_WIDTH },
1526
+ ticketCount: { type: "number", columnKey: "ticketCount", footerCalculation: { type: "sum" } },
1527
+ itemCount: { type: "number", columnKey: "itemCount", footerCalculation: { type: "sum" } },
1528
+ discountsAmount: { type: "money", columnKey: "discountAmount", footerCalculation: { type: "sum" } }
1529
+ };
1530
+ var DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS = [
1531
+ "ticketCount",
1532
+ "itemCount",
1533
+ "discountsAmount"
1534
+ ];
1535
+ var dailySalesDiscountsConfig = {
1536
+ fields: FIELDS13,
1537
+ availableColumns: DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
1538
+ defaultVisibleColumns: DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
1539
+ hasFooter: true
1540
+ };
1541
+
1542
+ // src/reports/dailySalesRefundsVoids.ts
1543
+ var FIELDS14 = {
1544
+ description: { type: "string", columnKey: "refundVoidDescription", size: FIRST_COLUMN_WIDTH },
1572
1545
  count: { type: "number", columnKey: "refundVoidCount", footerCalculation: { type: "sum" } },
1573
1546
  amount: { type: "money", columnKey: "refundVoidAmount", footerCalculation: { type: "sum" } },
1574
1547
  pctSales: { type: "percent", columnKey: "refundVoidPctSales", footerCalculation: { type: "sum" } }
1575
1548
  };
1576
- var DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS = [
1577
- "count",
1578
- "amount",
1579
- "pctSales"
1580
- ];
1549
+ var DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS = ["count", "amount", "pctSales"];
1581
1550
  var dailySalesRefundsVoidsConfig = {
1582
- fields: FIELDS12,
1551
+ fields: FIELDS14,
1583
1552
  availableColumns: DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS,
1584
1553
  defaultVisibleColumns: DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS,
1585
1554
  hasFooter: true
1586
1555
  };
1587
1556
 
1588
1557
  // src/reports/dailySalesTaxes.ts
1589
- var FIRST_COLUMN_WIDTH9 = 240;
1590
- var FIELDS13 = {
1591
- taxName: { type: "string", columnKey: "taxName", size: FIRST_COLUMN_WIDTH9 },
1558
+ var FIELDS15 = {
1559
+ taxName: { type: "string", columnKey: "taxName", size: FIRST_COLUMN_WIDTH },
1592
1560
  taxableSales: { type: "money", columnKey: "taxableSales", footerCalculation: { type: "sum" } },
1593
1561
  taxesAmount: { type: "money", columnKey: "taxCollected", footerCalculation: { type: "sum" } },
1594
1562
  exemptSales: { type: "money", columnKey: "exemptTaxes", footerCalculation: { type: "sum" } }
1595
1563
  };
1596
- var DAILY_SALES_TAXES_AVAILABLE_COLUMNS = [
1597
- "taxableSales",
1598
- "taxesAmount",
1599
- "exemptSales"
1600
- ];
1564
+ var DAILY_SALES_TAXES_AVAILABLE_COLUMNS = ["taxableSales", "taxesAmount", "exemptSales"];
1601
1565
  var dailySalesTaxesConfig = {
1602
- fields: FIELDS13,
1566
+ fields: FIELDS15,
1603
1567
  availableColumns: DAILY_SALES_TAXES_AVAILABLE_COLUMNS,
1604
1568
  defaultVisibleColumns: DAILY_SALES_TAXES_AVAILABLE_COLUMNS,
1605
1569
  hasFooter: true
@@ -1746,28 +1710,12 @@ var formatFieldValue = (value, type, localeOptions, fullRecord, fieldConfig = DE
1746
1710
  // Annotate the CommonJS export names for ESM import in node:
1747
1711
  0 && (module.exports = {
1748
1712
  COLUMN_REGISTRY,
1749
- DAILY_SALES_AVAILABLE_COLUMNS,
1750
- DAILY_SALES_BY_GROUP_AVAILABLE_COLUMNS,
1751
- DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
1752
- DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
1753
- DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS,
1754
- DAILY_SALES_TAXES_AVAILABLE_COLUMNS,
1755
- DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
1756
- EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS,
1757
- ITEM_TAX_AVAILABLE_COLUMNS,
1758
- MODIFIER_MIX_AVAILABLE_COLUMNS,
1759
- PRODUCT_MIX_AVAILABLE_COLUMNS,
1760
- PRODUCT_MIX_CHART_FIELDS,
1761
- PRODUCT_MIX_DEFAULT_VISIBLE_COLUMNS,
1762
1713
  Report,
1763
- SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
1764
- SALES_SUMMARY_AVAILABLE_COLUMNS,
1765
- TICKET_LIVE_AVAILABLE_COLUMNS,
1766
- TICKET_SUMMARY_AVAILABLE_COLUMNS,
1767
1714
  calculateFieldTotal,
1768
1715
  calculateReportTotals,
1769
1716
  dailySalesConfig,
1770
1717
  dailySalesDiscountsConfig,
1718
+ dailySalesLiveConfig,
1771
1719
  dailySalesPaymentsConfig,
1772
1720
  dailySalesRefundsVoidsConfig,
1773
1721
  dailySalesTaxesConfig,