@harbortouch/skytab-analytics-report-utils 0.10.0 → 0.12.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.
package/dist/index.js CHANGED
@@ -1,6 +1,56 @@
1
- // src/reports/salesSummary.ts
2
- var FIRST_COLUMN_WIDTH = 240;
1
+ // src/reports/salesByItemDetail.ts
3
2
  var FIELDS = {
3
+ businessDate: { type: "date", columnKey: "date", filteringAvailable: false },
4
+ ticketClosedAt: { type: "string", columnKey: "ticketClosed", filteringAvailable: false },
5
+ hourId: { type: "number", columnKey: "hour", filteringAvailable: false },
6
+ daypartName: { type: "string", columnKey: "daypart", filteringAvailable: false },
7
+ locationId: { type: "number", columnKey: "locationId", filteringAvailable: false },
8
+ locationName: { type: "string", columnKey: "locationName", filteringAvailable: false },
9
+ departmentName: { type: "string", columnKey: "department", filteringAvailable: false },
10
+ itemName: { type: "string", columnKey: "itemName", filteringAvailable: false },
11
+ revenueCenterName: { type: "string", columnKey: "revenueCenter", filteringAvailable: false },
12
+ revenueClassName: { type: "string", columnKey: "revenueClass", filteringAvailable: false },
13
+ salesAmountGross: { type: "money", columnKey: "grossSales" },
14
+ itemsQuantity: { type: "number", columnKey: "quantity" },
15
+ transactionId: { type: "string", columnKey: "ticketNumber", filteringAvailable: false },
16
+ guestsCount: { type: "number", columnKey: "guestCount" },
17
+ employeeName: { type: "string", columnKey: "employeeName", filteringAvailable: false },
18
+ orderTypeName: { type: "string", columnKey: "orderType", filteringAvailable: false },
19
+ salesType: { type: "string", columnKey: "salePaymentType", filteringAvailable: false },
20
+ itemPrice: { type: "money", columnKey: "itemPrice" }
21
+ };
22
+ var SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS = [
23
+ "businessDate",
24
+ "ticketClosedAt",
25
+ "hourId",
26
+ "daypartName",
27
+ "locationId",
28
+ "locationName",
29
+ "departmentName",
30
+ "itemName",
31
+ "revenueCenterName",
32
+ "revenueClassName",
33
+ "salesAmountGross",
34
+ "itemsQuantity",
35
+ "transactionId",
36
+ "guestsCount",
37
+ "employeeName",
38
+ "orderTypeName",
39
+ "salesType",
40
+ "itemPrice"
41
+ ];
42
+ var salesByItemDetailConfig = {
43
+ fields: FIELDS,
44
+ availableColumns: SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
45
+ defaultVisibleColumns: SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
46
+ hasFooter: false
47
+ };
48
+
49
+ // src/reports/constants.ts
50
+ var FIRST_COLUMN_WIDTH = 240;
51
+
52
+ // src/reports/salesSummary.ts
53
+ var FIELDS2 = {
4
54
  groupById: { type: "number" },
5
55
  groupByName: { type: "string", size: FIRST_COLUMN_WIDTH },
6
56
  salesAmountNet: { type: "money", columnKey: "netSales" },
@@ -125,20 +175,17 @@ var SALES_SUMMARY_AVAILABLE_COLUMNS = [
125
175
  "salesPerGuestLW",
126
176
  "salesPerGuestLY"
127
177
  ];
128
- var SALES_SUMMARY_DEFAULT_VISIBLE_COLUMNS = [
129
- "salesAmountNet",
130
- "guestsCount",
131
- "salesPerGuestTY"
132
- ];
178
+ var SALES_SUMMARY_DEFAULT_VISIBLE_COLUMNS = ["salesAmountNet", "guestsCount", "salesPerGuestTY"];
133
179
  var salesSummaryConfig = {
134
- fields: FIELDS,
180
+ fields: FIELDS2,
135
181
  availableColumns: SALES_SUMMARY_AVAILABLE_COLUMNS,
136
182
  defaultVisibleColumns: SALES_SUMMARY_DEFAULT_VISIBLE_COLUMNS,
137
- columnGroups: COLUMN_GROUPS
183
+ columnGroups: COLUMN_GROUPS,
184
+ hasFooter: true
138
185
  };
139
186
 
140
187
  // src/reports/ticketSummary.ts
141
- var FIELDS2 = {
188
+ var FIELDS3 = {
142
189
  ticketId: { type: "string" },
143
190
  locationId: { type: "number" },
144
191
  orderName: { type: "string" },
@@ -224,15 +271,15 @@ var TICKET_SUMMARY_AVAILABLE_COLUMNS = [
224
271
  "employeeName",
225
272
  "orderTypeName"
226
273
  ];
227
- var TICKET_SUMMARY_DEFAULT_VISIBLE_COLUMNS = TICKET_SUMMARY_AVAILABLE_COLUMNS;
228
274
  var ticketSummaryConfig = {
229
- fields: FIELDS2,
275
+ fields: FIELDS3,
230
276
  availableColumns: TICKET_SUMMARY_AVAILABLE_COLUMNS,
231
- defaultVisibleColumns: TICKET_SUMMARY_DEFAULT_VISIBLE_COLUMNS
277
+ defaultVisibleColumns: TICKET_SUMMARY_AVAILABLE_COLUMNS,
278
+ hasFooter: true
232
279
  };
233
280
 
234
281
  // src/reports/ticketLive.ts
235
- var FIELDS3 = {
282
+ var FIELDS4 = {
236
283
  locationName: { type: "string", columnKey: "locationName" },
237
284
  orderNumber: {
238
285
  type: "number",
@@ -282,18 +329,17 @@ var TICKET_LIVE_AVAILABLE_COLUMNS = [
282
329
  "employeeName",
283
330
  "orderType"
284
331
  ];
285
- var TICKET_LIVE_DEFAULT_VISIBLE_COLUMNS = TICKET_LIVE_AVAILABLE_COLUMNS;
286
332
  var ticketLiveConfig = {
287
- fields: FIELDS3,
333
+ fields: FIELDS4,
288
334
  availableColumns: TICKET_LIVE_AVAILABLE_COLUMNS,
289
- defaultVisibleColumns: TICKET_LIVE_DEFAULT_VISIBLE_COLUMNS
335
+ defaultVisibleColumns: TICKET_LIVE_AVAILABLE_COLUMNS,
336
+ hasFooter: true
290
337
  };
291
338
 
292
339
  // src/reports/productMix.ts
293
- var FIRST_COLUMN_WIDTH2 = 240;
294
- var FIELDS4 = {
340
+ var FIELDS5 = {
295
341
  groupById: { type: "string" },
296
- groupByName: { type: "string", size: FIRST_COLUMN_WIDTH2 },
342
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH },
297
343
  salesAmountGross: { type: "money", columnKey: "grossSales" },
298
344
  discountsAmount: { type: "money", columnKey: "discountAmount" },
299
345
  inclusiveTaxesAmount: { type: "money", columnKey: "inclusiveTax" },
@@ -311,16 +357,6 @@ var FIELDS4 = {
311
357
  salesMixPct: { type: "percent", columnKey: "salesMixByPct" }
312
358
  };
313
359
  var PRODUCT_MIX_AVAILABLE_COLUMNS = [
314
- "salesAmountGross",
315
- "discountsAmount",
316
- "inclusiveTaxesAmount",
317
- "salesAmountNet",
318
- "itemsQuantity",
319
- "avgPrice",
320
- "salesMixPct"
321
- ];
322
- var PRODUCT_MIX_DEFAULT_VISIBLE_COLUMNS = PRODUCT_MIX_AVAILABLE_COLUMNS;
323
- var PRODUCT_MIX_CHART_FIELDS = [
324
360
  "salesAmountGross",
325
361
  "itemsQuantity",
326
362
  "avgPrice",
@@ -330,18 +366,19 @@ var PRODUCT_MIX_CHART_FIELDS = [
330
366
  "salesMixPct"
331
367
  ];
332
368
  var productMixConfig = {
333
- fields: FIELDS4,
369
+ fields: FIELDS5,
334
370
  availableColumns: PRODUCT_MIX_AVAILABLE_COLUMNS,
335
- defaultVisibleColumns: PRODUCT_MIX_DEFAULT_VISIBLE_COLUMNS
371
+ defaultVisibleColumns: PRODUCT_MIX_AVAILABLE_COLUMNS,
372
+ chartFields: PRODUCT_MIX_AVAILABLE_COLUMNS,
373
+ hasFooter: true
336
374
  };
337
375
 
338
376
  // src/reports/modifierMix.ts
339
- var FIRST_COLUMN_WIDTH3 = 240;
340
- var FIELDS5 = {
377
+ var FIELDS6 = {
341
378
  groupById: { type: "string", filteringAvailable: false },
342
- groupByName: { type: "string", size: FIRST_COLUMN_WIDTH3, filteringAvailable: false },
379
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH, filteringAvailable: false },
343
380
  groupById2: { type: "string", filteringAvailable: false },
344
- groupByName2: { type: "string", size: FIRST_COLUMN_WIDTH3, filteringAvailable: false },
381
+ groupByName2: { type: "string", size: FIRST_COLUMN_WIDTH, filteringAvailable: false },
345
382
  modifiersSales: { type: "money", columnKey: "totalModifierSales" },
346
383
  modifiersQuantity: { type: "number", columnKey: "modifierQuantity" },
347
384
  itemsQuantity: {
@@ -403,15 +440,15 @@ var FIELDS5 = {
403
440
  }
404
441
  };
405
442
  var MODIFIER_MIX_AVAILABLE_COLUMNS = ["modifiersSales", "modifiersQuantity", "avgGross"];
406
- var MODIFIER_MIX_DEFAULT_VISIBLE_COLUMNS = MODIFIER_MIX_AVAILABLE_COLUMNS;
407
443
  var modifierMixConfig = {
408
- fields: FIELDS5,
444
+ fields: FIELDS6,
409
445
  availableColumns: MODIFIER_MIX_AVAILABLE_COLUMNS,
410
- defaultVisibleColumns: MODIFIER_MIX_DEFAULT_VISIBLE_COLUMNS
446
+ defaultVisibleColumns: MODIFIER_MIX_AVAILABLE_COLUMNS,
447
+ hasFooter: true
411
448
  };
412
449
 
413
450
  // src/reports/itemTax.ts
414
- var FIELDS6 = {
451
+ var FIELDS7 = {
415
452
  locationId: { type: "number", filteringAvailable: false },
416
453
  taxIsFlat: { type: "boolean", filteringAvailable: false },
417
454
  merchantId: { type: "string", columnKey: "locationMid", filteringAvailable: false },
@@ -457,156 +494,20 @@ var ITEM_TAX_AVAILABLE_COLUMNS = [
457
494
  "taxableSales",
458
495
  "taxCollected"
459
496
  ];
460
- var ITEM_TAX_DEFAULT_VISIBLE_COLUMNS = ITEM_TAX_AVAILABLE_COLUMNS;
461
497
  var itemTaxConfig = {
462
- fields: FIELDS6,
463
- availableColumns: ITEM_TAX_AVAILABLE_COLUMNS,
464
- defaultVisibleColumns: ITEM_TAX_DEFAULT_VISIBLE_COLUMNS
465
- };
466
-
467
- // src/reports/dailySales.ts
468
- var FIRST_COLUMN_WIDTH4 = 240;
469
- var FIELDS7 = {
470
- groupById: { type: "string" },
471
- groupByName: { type: "string", size: FIRST_COLUMN_WIDTH4 },
472
- itemsQuantity: { type: "number", columnKey: "quantity" },
473
- salesAmountGross: { type: "money", columnKey: "grossSales" },
474
- discountsAmount: { type: "money", columnKey: "discountAmount" },
475
- inclusiveTaxesAmount: { type: "money", columnKey: "inclusiveTax" },
476
- salesAmountNet: { type: "money", columnKey: "netSales" },
477
- salesMixPct: { type: "percent", columnKey: "salesMixByPct" },
478
- avgPrice: {
479
- type: "fixedNumber",
480
- columnKey: "averageGrossPrice",
481
- footerCalculation: {
482
- type: "average",
483
- numeratorField: "salesAmountGross",
484
- denominatorField: "itemsQuantity"
485
- }
486
- },
487
- ticketsCount: { type: "number", columnKey: "tickets" },
488
- guestsCount: { type: "number", columnKey: "guests" },
489
- ticketAverage: {
490
- type: "money",
491
- columnKey: "ticketAverage",
492
- footerCalculation: {
493
- type: "average",
494
- numeratorField: "salesAmountNet",
495
- denominatorField: "ticketsCount"
496
- }
497
- },
498
- guestAverage: {
499
- type: "money",
500
- columnKey: "guestAverage",
501
- footerCalculation: {
502
- type: "average",
503
- numeratorField: "salesAmountNet",
504
- denominatorField: "guestsCount"
505
- }
506
- },
507
- ticketAvg: {
508
- type: "money",
509
- columnKey: "ticketAverage",
510
- footerCalculation: {
511
- type: "average",
512
- numeratorField: "salesAmountNet",
513
- denominatorField: "ticketsCount"
514
- }
515
- },
516
- guestAvg: {
517
- type: "money",
518
- columnKey: "guestAverage",
519
- footerCalculation: {
520
- type: "average",
521
- numeratorField: "salesAmountNet",
522
- denominatorField: "guestsCount"
523
- }
524
- }
525
- };
526
- var DAILY_SALES_AVAILABLE_COLUMNS = [
527
- "itemsQuantity",
528
- "salesAmountGross",
529
- "discountsAmount",
530
- "inclusiveTaxesAmount",
531
- "salesAmountNet",
532
- "salesMixPct"
533
- ];
534
- var DAILY_SALES_BY_GROUP_AVAILABLE_COLUMNS = [
535
- "ticketsCount",
536
- "guestsCount",
537
- "ticketAverage",
538
- "guestAverage",
539
- "salesAmountNet"
540
- ];
541
- var DAILY_SALES_DEFAULT_VISIBLE_COLUMNS = DAILY_SALES_AVAILABLE_COLUMNS;
542
- var dailySalesConfig = {
543
498
  fields: FIELDS7,
544
- availableColumns: DAILY_SALES_AVAILABLE_COLUMNS,
545
- defaultVisibleColumns: DAILY_SALES_DEFAULT_VISIBLE_COLUMNS
546
- };
547
- var DAILY_SALES_TRENDS_AVAILABLE_COLUMNS = [
548
- "ticketsCount",
549
- "guestsCount",
550
- "ticketAvg",
551
- "guestAvg",
552
- "salesAmountNet"
553
- ];
554
- var dailySalesTrendsConfig = {
555
- fields: FIELDS7,
556
- availableColumns: DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
557
- defaultVisibleColumns: DAILY_SALES_TRENDS_AVAILABLE_COLUMNS
558
- };
559
-
560
- // src/reports/dailySalesPayments.ts
561
- var FIRST_COLUMN_WIDTH5 = 240;
562
- var FIELDS8 = {
563
- paymentTypeName: { type: "string", size: FIRST_COLUMN_WIDTH5 },
564
- paymentsCount: { type: "number", columnKey: "paymentsCount", footerCalculation: { type: "sum" } },
565
- paymentsAmount: { type: "money", columnKey: "paymentsAmount", footerCalculation: { type: "sum" } },
566
- tipsAmount: { type: "money", columnKey: "tips", footerCalculation: { type: "sum" } },
567
- totalSales: { type: "money", columnKey: "paymentsTotal", footerCalculation: { type: "sum" } }
568
- };
569
- var DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS = [
570
- "paymentsCount",
571
- "paymentsAmount",
572
- "tipsAmount",
573
- "totalSales"
574
- ];
575
- var DAILY_SALES_PAYMENTS_DEFAULT_VISIBLE_COLUMNS = DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS;
576
- var dailySalesPaymentsConfig = {
577
- fields: FIELDS8,
578
- availableColumns: DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
579
- defaultVisibleColumns: DAILY_SALES_PAYMENTS_DEFAULT_VISIBLE_COLUMNS
580
- };
581
-
582
- // src/reports/dailySalesDiscounts.ts
583
- var FIRST_COLUMN_WIDTH6 = 240;
584
- var FIELDS9 = {
585
- discountName: { type: "string", columnKey: "discountName", size: FIRST_COLUMN_WIDTH6 },
586
- ticketCount: { type: "number", columnKey: "ticketCount", footerCalculation: { type: "sum" } },
587
- itemCount: { type: "number", columnKey: "itemCount", footerCalculation: { type: "sum" } },
588
- discountsAmount: { type: "money", columnKey: "discountAmount", footerCalculation: { type: "sum" } }
589
- };
590
- var DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS = [
591
- "ticketCount",
592
- "itemCount",
593
- "discountsAmount"
594
- ];
595
- var DAILY_SALES_DISCOUNTS_DEFAULT_VISIBLE_COLUMNS = DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS;
596
- var dailySalesDiscountsConfig = {
597
- fields: FIELDS9,
598
- availableColumns: DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
599
- defaultVisibleColumns: DAILY_SALES_DISCOUNTS_DEFAULT_VISIBLE_COLUMNS
499
+ availableColumns: ITEM_TAX_AVAILABLE_COLUMNS,
500
+ defaultVisibleColumns: ITEM_TAX_AVAILABLE_COLUMNS,
501
+ hasFooter: false
600
502
  };
601
503
 
602
504
  // src/reports/employeeTimecard.ts
603
- var FIRST_COLUMN_WIDTH7 = 240;
604
505
  var EMPLOYEE_NAME_WIDTH = 220;
605
506
  var STATUS_WIDTH = 140;
606
507
  var LOOKUP_WIDTH = 160;
607
508
  var PAYROLL_WIDTH = 160;
608
509
  var JOB_WIDTH = 200;
609
- var FIELDS10 = {
510
+ var FIELDS8 = {
610
511
  locationId: {
611
512
  type: "number",
612
513
  enableSorting: false,
@@ -614,7 +515,7 @@ var FIELDS10 = {
614
515
  },
615
516
  locationName: {
616
517
  type: "string",
617
- size: FIRST_COLUMN_WIDTH7,
518
+ size: FIRST_COLUMN_WIDTH,
618
519
  columnKey: "locationName"
619
520
  },
620
521
  businessDate: {
@@ -679,61 +580,104 @@ var EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS = [
679
580
  "endTime",
680
581
  "shiftHours"
681
582
  ];
682
- var EMPLOYEE_TIMECARD_DEFAULT_VISIBLE_COLUMNS = EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS;
683
583
  var employeeTimecardConfig = {
684
- fields: FIELDS10,
584
+ fields: FIELDS8,
685
585
  availableColumns: EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS,
686
- defaultVisibleColumns: EMPLOYEE_TIMECARD_DEFAULT_VISIBLE_COLUMNS,
687
- columnGroups: []
688
- // No column groups for this report
586
+ defaultVisibleColumns: EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS,
587
+ hasFooter: true
689
588
  };
690
589
 
691
- // src/reports/salesByItemDetail.ts
692
- var FIELDS11 = {
693
- businessDate: { type: "date", columnKey: "date", filteringAvailable: false },
694
- ticketClosedAt: { type: "string", columnKey: "ticketClosed", filteringAvailable: false },
695
- hourId: { type: "number", columnKey: "hour", filteringAvailable: false },
696
- daypartName: { type: "string", columnKey: "daypart", filteringAvailable: false },
697
- locationId: { type: "number", columnKey: "locationId", filteringAvailable: false },
698
- locationName: { type: "string", columnKey: "locationName", filteringAvailable: false },
699
- departmentName: { type: "string", columnKey: "department", filteringAvailable: false },
700
- itemName: { type: "string", columnKey: "itemName", filteringAvailable: false },
701
- revenueCenterName: { type: "string", columnKey: "revenueCenter", filteringAvailable: false },
702
- revenueClassName: { type: "string", columnKey: "revenueClass", filteringAvailable: false },
703
- salesAmountGross: { type: "money", columnKey: "grossSales" },
590
+ // src/reports/dailySales.ts
591
+ var FIELDS9 = {
592
+ groupById: { type: "string" },
593
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH },
704
594
  itemsQuantity: { type: "number", columnKey: "quantity" },
705
- transactionId: { type: "string", columnKey: "ticketNumber", filteringAvailable: false },
706
- guestsCount: { type: "number", columnKey: "guestCount" },
707
- employeeName: { type: "string", columnKey: "employeeName", filteringAvailable: false },
708
- orderTypeName: { type: "string", columnKey: "orderType", filteringAvailable: false },
709
- salesType: { type: "string", columnKey: "salePaymentType", filteringAvailable: false },
710
- itemPrice: { type: "money", columnKey: "itemPrice" }
595
+ salesAmountGross: { type: "money", columnKey: "grossSales" },
596
+ discountsAmount: { type: "money", columnKey: "discountAmount" },
597
+ inclusiveTaxesAmount: { type: "money", columnKey: "inclusiveTax" },
598
+ salesAmountNet: { type: "money", columnKey: "netSales" },
599
+ salesMixPct: { type: "percent", columnKey: "salesMixByPct" }
711
600
  };
712
- var SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS = [
713
- "businessDate",
714
- "ticketClosedAt",
715
- "hourId",
716
- "daypartName",
717
- "locationId",
718
- "locationName",
719
- "departmentName",
720
- "itemName",
721
- "revenueCenterName",
722
- "revenueClassName",
601
+ var DAILY_SALES_AVAILABLE_COLUMNS = [
602
+ "itemsQuantity",
723
603
  "salesAmountGross",
604
+ "discountsAmount",
605
+ "inclusiveTaxesAmount",
606
+ "salesAmountNet",
607
+ "salesMixPct"
608
+ ];
609
+ var dailySalesConfig = {
610
+ fields: FIELDS9,
611
+ availableColumns: DAILY_SALES_AVAILABLE_COLUMNS,
612
+ defaultVisibleColumns: DAILY_SALES_AVAILABLE_COLUMNS,
613
+ hasFooter: true
614
+ };
615
+
616
+ // src/reports/dailySalesLive.ts
617
+ var FIELDS10 = {
618
+ groupById: { type: "string" },
619
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH },
620
+ itemsQuantity: { type: "number", columnKey: "quantity" },
621
+ salesAmountGross: { type: "money", columnKey: "grossSales" },
622
+ discountsAmount: { type: "money", columnKey: "discountAmount" },
623
+ inclusiveTaxesAmount: { type: "money", columnKey: "inclusiveTax" },
624
+ salesAmountNet: { type: "money", columnKey: "netSales" },
625
+ salesMixPct: { type: "percent", columnKey: "salesMixByPct" },
626
+ guestsCount: { type: "number", columnKey: "guests" }
627
+ };
628
+ var DAILY_SALES_LIVE_AVAILABLE_COLUMNS = [
724
629
  "itemsQuantity",
725
- "transactionId",
630
+ "salesAmountGross",
631
+ "discountsAmount",
632
+ "inclusiveTaxesAmount",
633
+ "salesAmountNet",
634
+ "salesMixPct"
635
+ ];
636
+ var dailySalesLiveConfig = {
637
+ fields: FIELDS10,
638
+ availableColumns: DAILY_SALES_LIVE_AVAILABLE_COLUMNS,
639
+ defaultVisibleColumns: DAILY_SALES_LIVE_AVAILABLE_COLUMNS,
640
+ hasFooter: true
641
+ };
642
+
643
+ // src/reports/dailySalesTrends.ts
644
+ var FIELDS11 = {
645
+ groupById: { type: "string" },
646
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH },
647
+ salesAmountNet: { type: "money", columnKey: "netSales" },
648
+ ticketsCount: { type: "number", columnKey: "tickets" },
649
+ guestsCount: { type: "number", columnKey: "guests" },
650
+ ticketAvg: {
651
+ type: "money",
652
+ columnKey: "ticketAverage",
653
+ footerCalculation: {
654
+ type: "average",
655
+ numeratorField: "salesAmountNet",
656
+ denominatorField: "ticketsCount"
657
+ }
658
+ },
659
+ guestAvg: {
660
+ type: "money",
661
+ columnKey: "guestAverage",
662
+ footerCalculation: {
663
+ type: "average",
664
+ numeratorField: "salesAmountNet",
665
+ denominatorField: "guestsCount"
666
+ }
667
+ }
668
+ };
669
+ var DAILY_SALES_TRENDS_AVAILABLE_COLUMNS = [
670
+ "ticketsCount",
726
671
  "guestsCount",
727
- "employeeName",
728
- "orderTypeName",
729
- "salesType",
730
- "itemPrice"
672
+ "ticketAvg",
673
+ "guestAvg",
674
+ "salesAmountNet"
731
675
  ];
732
- var SALES_BY_ITEM_DETAIL_DEFAULT_VISIBLE_COLUMNS = SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS;
733
- var salesByItemDetailConfig = {
676
+ var dailySalesTrendsConfig = {
734
677
  fields: FIELDS11,
735
- availableColumns: SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
736
- defaultVisibleColumns: SALES_BY_ITEM_DETAIL_DEFAULT_VISIBLE_COLUMNS
678
+ availableColumns: DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
679
+ defaultVisibleColumns: DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
680
+ hasFooter: true
737
681
  };
738
682
 
739
683
  // src/report.ts
@@ -748,7 +692,8 @@ var Report = {
748
692
  EMPLOYEE_TIP: "employee-tip",
749
693
  SALES_BY_ITEM: "sales-by-item",
750
694
  DAILY_SALES: "daily-sales",
751
- DAILY_SALES_LIVE: "daily-sales-live"
695
+ DAILY_SALES_LIVE: "daily-sales-live",
696
+ DAILY_SALES_TRENDS: "daily-sales-trends"
752
697
  };
753
698
  var REPORT_CONFIG_MAP = {
754
699
  "sales-summary": salesSummaryConfig,
@@ -761,7 +706,8 @@ var REPORT_CONFIG_MAP = {
761
706
  "employee-tip": null,
762
707
  "sales-by-item": salesByItemDetailConfig,
763
708
  "daily-sales": dailySalesConfig,
764
- "daily-sales-live": null
709
+ "daily-sales-live": dailySalesLiveConfig,
710
+ "daily-sales-trends": dailySalesTrendsConfig
765
711
  };
766
712
  var getReportConfig = (reportType) => REPORT_CONFIG_MAP[reportType];
767
713
 
@@ -1448,7 +1394,7 @@ var calculateFieldTotal = (rows, field, config) => {
1448
1394
  }
1449
1395
  const calc = config.footerCalculation;
1450
1396
  if (calc?.type === "none") {
1451
- return 0;
1397
+ return null;
1452
1398
  }
1453
1399
  if (!calc || calc.type === "sum") {
1454
1400
  return config.columnKey || calc?.type === "sum" ? sumField(rows, field) : 0;
@@ -1489,44 +1435,74 @@ var calculateReportTotals = (data, fieldConfig, opts) => {
1489
1435
  return result;
1490
1436
  };
1491
1437
 
1492
- // src/reports/dailySalesRefundsVoids.ts
1493
- var FIRST_COLUMN_WIDTH8 = 240;
1438
+ // src/reports/dailySalesPayments.ts
1494
1439
  var FIELDS12 = {
1495
- description: { type: "string", columnKey: "refundVoidDescription", size: FIRST_COLUMN_WIDTH8 },
1440
+ paymentTypeName: { type: "string", size: FIRST_COLUMN_WIDTH },
1441
+ paymentsCount: { type: "number", columnKey: "paymentsCount", footerCalculation: { type: "sum" } },
1442
+ paymentsAmount: { type: "money", columnKey: "paymentsAmount", footerCalculation: { type: "sum" } },
1443
+ tipsAmount: { type: "money", columnKey: "tips", footerCalculation: { type: "sum" } },
1444
+ totalSales: { type: "money", columnKey: "paymentsTotal", footerCalculation: { type: "sum" } }
1445
+ };
1446
+ var DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS = [
1447
+ "paymentsCount",
1448
+ "paymentsAmount",
1449
+ "tipsAmount",
1450
+ "totalSales"
1451
+ ];
1452
+ var dailySalesPaymentsConfig = {
1453
+ fields: FIELDS12,
1454
+ availableColumns: DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
1455
+ defaultVisibleColumns: DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
1456
+ hasFooter: true
1457
+ };
1458
+
1459
+ // src/reports/dailySalesDiscounts.ts
1460
+ var FIELDS13 = {
1461
+ discountName: { type: "string", columnKey: "discountName", size: FIRST_COLUMN_WIDTH },
1462
+ ticketCount: { type: "number", columnKey: "ticketCount", footerCalculation: { type: "sum" } },
1463
+ itemCount: { type: "number", columnKey: "itemCount", footerCalculation: { type: "sum" } },
1464
+ discountsAmount: { type: "money", columnKey: "discountAmount", footerCalculation: { type: "sum" } }
1465
+ };
1466
+ var DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS = [
1467
+ "ticketCount",
1468
+ "itemCount",
1469
+ "discountsAmount"
1470
+ ];
1471
+ var dailySalesDiscountsConfig = {
1472
+ fields: FIELDS13,
1473
+ availableColumns: DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
1474
+ defaultVisibleColumns: DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
1475
+ hasFooter: true
1476
+ };
1477
+
1478
+ // src/reports/dailySalesRefundsVoids.ts
1479
+ var FIELDS14 = {
1480
+ description: { type: "string", columnKey: "refundVoidDescription", size: FIRST_COLUMN_WIDTH },
1496
1481
  count: { type: "number", columnKey: "refundVoidCount", footerCalculation: { type: "sum" } },
1497
1482
  amount: { type: "money", columnKey: "refundVoidAmount", footerCalculation: { type: "sum" } },
1498
1483
  pctSales: { type: "percent", columnKey: "refundVoidPctSales", footerCalculation: { type: "sum" } }
1499
1484
  };
1500
- var DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS = [
1501
- "count",
1502
- "amount",
1503
- "pctSales"
1504
- ];
1505
- var DAILY_SALES_REFUNDS_VOIDS_DEFAULT_VISIBLE_COLUMNS = DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS;
1485
+ var DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS = ["count", "amount", "pctSales"];
1506
1486
  var dailySalesRefundsVoidsConfig = {
1507
- fields: FIELDS12,
1487
+ fields: FIELDS14,
1508
1488
  availableColumns: DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS,
1509
- defaultVisibleColumns: DAILY_SALES_REFUNDS_VOIDS_DEFAULT_VISIBLE_COLUMNS
1489
+ defaultVisibleColumns: DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS,
1490
+ hasFooter: true
1510
1491
  };
1511
1492
 
1512
1493
  // src/reports/dailySalesTaxes.ts
1513
- var FIRST_COLUMN_WIDTH9 = 240;
1514
- var FIELDS13 = {
1515
- taxName: { type: "string", columnKey: "taxName", size: FIRST_COLUMN_WIDTH9 },
1494
+ var FIELDS15 = {
1495
+ taxName: { type: "string", columnKey: "taxName", size: FIRST_COLUMN_WIDTH },
1516
1496
  taxableSales: { type: "money", columnKey: "taxableSales", footerCalculation: { type: "sum" } },
1517
1497
  taxesAmount: { type: "money", columnKey: "taxCollected", footerCalculation: { type: "sum" } },
1518
1498
  exemptSales: { type: "money", columnKey: "exemptTaxes", footerCalculation: { type: "sum" } }
1519
1499
  };
1520
- var DAILY_SALES_TAXES_AVAILABLE_COLUMNS = [
1521
- "taxableSales",
1522
- "taxesAmount",
1523
- "exemptSales"
1524
- ];
1525
- var DAILY_SALES_TAXES_DEFAULT_VISIBLE_COLUMNS = DAILY_SALES_TAXES_AVAILABLE_COLUMNS;
1500
+ var DAILY_SALES_TAXES_AVAILABLE_COLUMNS = ["taxableSales", "taxesAmount", "exemptSales"];
1526
1501
  var dailySalesTaxesConfig = {
1527
- fields: FIELDS13,
1502
+ fields: FIELDS15,
1528
1503
  availableColumns: DAILY_SALES_TAXES_AVAILABLE_COLUMNS,
1529
- defaultVisibleColumns: DAILY_SALES_TAXES_DEFAULT_VISIBLE_COLUMNS
1504
+ defaultVisibleColumns: DAILY_SALES_TAXES_AVAILABLE_COLUMNS,
1505
+ hasFooter: true
1530
1506
  };
1531
1507
 
1532
1508
  // src/formatting.ts
@@ -1669,40 +1645,12 @@ var formatFieldValue = (value, type, localeOptions, fullRecord, fieldConfig = DE
1669
1645
  };
1670
1646
  export {
1671
1647
  COLUMN_REGISTRY,
1672
- DAILY_SALES_AVAILABLE_COLUMNS,
1673
- DAILY_SALES_BY_GROUP_AVAILABLE_COLUMNS,
1674
- DAILY_SALES_DEFAULT_VISIBLE_COLUMNS,
1675
- DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
1676
- DAILY_SALES_DISCOUNTS_DEFAULT_VISIBLE_COLUMNS,
1677
- DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
1678
- DAILY_SALES_PAYMENTS_DEFAULT_VISIBLE_COLUMNS,
1679
- DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS,
1680
- DAILY_SALES_REFUNDS_VOIDS_DEFAULT_VISIBLE_COLUMNS,
1681
- DAILY_SALES_TAXES_AVAILABLE_COLUMNS,
1682
- DAILY_SALES_TAXES_DEFAULT_VISIBLE_COLUMNS,
1683
- DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
1684
- EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS,
1685
- EMPLOYEE_TIMECARD_DEFAULT_VISIBLE_COLUMNS,
1686
- ITEM_TAX_AVAILABLE_COLUMNS,
1687
- ITEM_TAX_DEFAULT_VISIBLE_COLUMNS,
1688
- MODIFIER_MIX_AVAILABLE_COLUMNS,
1689
- MODIFIER_MIX_DEFAULT_VISIBLE_COLUMNS,
1690
- PRODUCT_MIX_AVAILABLE_COLUMNS,
1691
- PRODUCT_MIX_CHART_FIELDS,
1692
- PRODUCT_MIX_DEFAULT_VISIBLE_COLUMNS,
1693
1648
  Report,
1694
- SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
1695
- SALES_BY_ITEM_DETAIL_DEFAULT_VISIBLE_COLUMNS,
1696
- SALES_SUMMARY_AVAILABLE_COLUMNS,
1697
- SALES_SUMMARY_DEFAULT_VISIBLE_COLUMNS,
1698
- TICKET_LIVE_AVAILABLE_COLUMNS,
1699
- TICKET_LIVE_DEFAULT_VISIBLE_COLUMNS,
1700
- TICKET_SUMMARY_AVAILABLE_COLUMNS,
1701
- TICKET_SUMMARY_DEFAULT_VISIBLE_COLUMNS,
1702
1649
  calculateFieldTotal,
1703
1650
  calculateReportTotals,
1704
1651
  dailySalesConfig,
1705
1652
  dailySalesDiscountsConfig,
1653
+ dailySalesLiveConfig,
1706
1654
  dailySalesPaymentsConfig,
1707
1655
  dailySalesRefundsVoidsConfig,
1708
1656
  dailySalesTaxesConfig,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harbortouch/skytab-analytics-report-utils",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "Centralized report column presentation configuration for SkyTab Analytics",
5
5
  "engines": {
6
6
  "node": ">=22.6.0",