@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.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" },
@@ -127,7 +177,7 @@ var SALES_SUMMARY_AVAILABLE_COLUMNS = [
127
177
  ];
128
178
  var SALES_SUMMARY_DEFAULT_VISIBLE_COLUMNS = ["salesAmountNet", "guestsCount", "salesPerGuestTY"];
129
179
  var salesSummaryConfig = {
130
- fields: FIELDS,
180
+ fields: FIELDS2,
131
181
  availableColumns: SALES_SUMMARY_AVAILABLE_COLUMNS,
132
182
  defaultVisibleColumns: SALES_SUMMARY_DEFAULT_VISIBLE_COLUMNS,
133
183
  columnGroups: COLUMN_GROUPS,
@@ -135,7 +185,7 @@ var salesSummaryConfig = {
135
185
  };
136
186
 
137
187
  // src/reports/ticketSummary.ts
138
- var FIELDS2 = {
188
+ var FIELDS3 = {
139
189
  ticketId: { type: "string" },
140
190
  locationId: { type: "number" },
141
191
  orderName: { type: "string" },
@@ -147,7 +197,7 @@ var FIELDS2 = {
147
197
  footerCalculation: { type: "sum" }
148
198
  },
149
199
  locationName: { type: "string", size: 240, columnKey: "locationName" },
150
- orderNumber: { type: "number", columnKey: "ticketNumber", footerCalculation: { type: "none" } },
200
+ orderNumber: { type: "number", columnKey: "ticketNumber", footerCalculation: { type: "count" } },
151
201
  businessDate: { type: "date", columnKey: "date" },
152
202
  ticketOpenedAt: { type: "time", columnKey: "ticketOpen" },
153
203
  ticketClosedAt: { type: "time", columnKey: "ticketClosed" },
@@ -222,19 +272,19 @@ var TICKET_SUMMARY_AVAILABLE_COLUMNS = [
222
272
  "orderTypeName"
223
273
  ];
224
274
  var ticketSummaryConfig = {
225
- fields: FIELDS2,
275
+ fields: FIELDS3,
226
276
  availableColumns: TICKET_SUMMARY_AVAILABLE_COLUMNS,
227
277
  defaultVisibleColumns: TICKET_SUMMARY_AVAILABLE_COLUMNS,
228
278
  hasFooter: true
229
279
  };
230
280
 
231
281
  // src/reports/ticketLive.ts
232
- var FIELDS3 = {
282
+ var FIELDS4 = {
233
283
  locationName: { type: "string", columnKey: "locationName" },
234
284
  orderNumber: {
235
285
  type: "number",
236
286
  columnKey: "ticketNumber",
237
- footerCalculation: { type: "none" }
287
+ footerCalculation: { type: "count" }
238
288
  },
239
289
  dateOpen: { type: "string", columnKey: "date" },
240
290
  timeOpen: { type: "string", columnKey: "ticketOpen" },
@@ -280,17 +330,16 @@ var TICKET_LIVE_AVAILABLE_COLUMNS = [
280
330
  "orderType"
281
331
  ];
282
332
  var ticketLiveConfig = {
283
- fields: FIELDS3,
333
+ fields: FIELDS4,
284
334
  availableColumns: TICKET_LIVE_AVAILABLE_COLUMNS,
285
335
  defaultVisibleColumns: TICKET_LIVE_AVAILABLE_COLUMNS,
286
336
  hasFooter: true
287
337
  };
288
338
 
289
339
  // src/reports/productMix.ts
290
- var FIRST_COLUMN_WIDTH2 = 240;
291
- var FIELDS4 = {
340
+ var FIELDS5 = {
292
341
  groupById: { type: "string" },
293
- groupByName: { type: "string", size: FIRST_COLUMN_WIDTH2 },
342
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH },
294
343
  salesAmountGross: { type: "money", columnKey: "grossSales" },
295
344
  discountsAmount: { type: "money", columnKey: "discountAmount" },
296
345
  inclusiveTaxesAmount: { type: "money", columnKey: "inclusiveTax" },
@@ -308,16 +357,6 @@ var FIELDS4 = {
308
357
  salesMixPct: { type: "percent", columnKey: "salesMixByPct" }
309
358
  };
310
359
  var PRODUCT_MIX_AVAILABLE_COLUMNS = [
311
- "salesAmountGross",
312
- "discountsAmount",
313
- "inclusiveTaxesAmount",
314
- "salesAmountNet",
315
- "itemsQuantity",
316
- "avgPrice",
317
- "salesMixPct"
318
- ];
319
- var PRODUCT_MIX_DEFAULT_VISIBLE_COLUMNS = PRODUCT_MIX_AVAILABLE_COLUMNS;
320
- var PRODUCT_MIX_CHART_FIELDS = [
321
360
  "salesAmountGross",
322
361
  "itemsQuantity",
323
362
  "avgPrice",
@@ -327,19 +366,19 @@ var PRODUCT_MIX_CHART_FIELDS = [
327
366
  "salesMixPct"
328
367
  ];
329
368
  var productMixConfig = {
330
- fields: FIELDS4,
369
+ fields: FIELDS5,
331
370
  availableColumns: PRODUCT_MIX_AVAILABLE_COLUMNS,
332
- defaultVisibleColumns: PRODUCT_MIX_DEFAULT_VISIBLE_COLUMNS,
371
+ defaultVisibleColumns: PRODUCT_MIX_AVAILABLE_COLUMNS,
372
+ chartFields: PRODUCT_MIX_AVAILABLE_COLUMNS,
333
373
  hasFooter: true
334
374
  };
335
375
 
336
376
  // src/reports/modifierMix.ts
337
- var FIRST_COLUMN_WIDTH3 = 240;
338
- var FIELDS5 = {
377
+ var FIELDS6 = {
339
378
  groupById: { type: "string", filteringAvailable: false },
340
- groupByName: { type: "string", size: FIRST_COLUMN_WIDTH3, filteringAvailable: false },
379
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH, filteringAvailable: false },
341
380
  groupById2: { type: "string", filteringAvailable: false },
342
- groupByName2: { type: "string", size: FIRST_COLUMN_WIDTH3, filteringAvailable: false },
381
+ groupByName2: { type: "string", size: FIRST_COLUMN_WIDTH, filteringAvailable: false },
343
382
  modifiersSales: { type: "money", columnKey: "totalModifierSales" },
344
383
  modifiersQuantity: { type: "number", columnKey: "modifierQuantity" },
345
384
  itemsQuantity: {
@@ -402,14 +441,14 @@ var FIELDS5 = {
402
441
  };
403
442
  var MODIFIER_MIX_AVAILABLE_COLUMNS = ["modifiersSales", "modifiersQuantity", "avgGross"];
404
443
  var modifierMixConfig = {
405
- fields: FIELDS5,
444
+ fields: FIELDS6,
406
445
  availableColumns: MODIFIER_MIX_AVAILABLE_COLUMNS,
407
446
  defaultVisibleColumns: MODIFIER_MIX_AVAILABLE_COLUMNS,
408
447
  hasFooter: true
409
448
  };
410
449
 
411
450
  // src/reports/itemTax.ts
412
- var FIELDS6 = {
451
+ var FIELDS7 = {
413
452
  locationId: { type: "number", filteringAvailable: false },
414
453
  taxIsFlat: { type: "boolean", filteringAvailable: false },
415
454
  merchantId: { type: "string", columnKey: "locationMid", filteringAvailable: false },
@@ -456,156 +495,19 @@ var ITEM_TAX_AVAILABLE_COLUMNS = [
456
495
  "taxCollected"
457
496
  ];
458
497
  var itemTaxConfig = {
459
- fields: FIELDS6,
498
+ fields: FIELDS7,
460
499
  availableColumns: ITEM_TAX_AVAILABLE_COLUMNS,
461
500
  defaultVisibleColumns: ITEM_TAX_AVAILABLE_COLUMNS,
462
501
  hasFooter: false
463
502
  };
464
503
 
465
- // src/reports/dailySales.ts
466
- var FIRST_COLUMN_WIDTH4 = 240;
467
- var FIELDS7 = {
468
- groupById: { type: "string" },
469
- groupByName: { type: "string", size: FIRST_COLUMN_WIDTH4 },
470
- itemsQuantity: { type: "number", columnKey: "quantity" },
471
- salesAmountGross: { type: "money", columnKey: "grossSales" },
472
- discountsAmount: { type: "money", columnKey: "discountAmount" },
473
- inclusiveTaxesAmount: { type: "money", columnKey: "inclusiveTax" },
474
- salesAmountNet: { type: "money", columnKey: "netSales" },
475
- salesMixPct: { type: "percent", columnKey: "salesMixByPct" },
476
- avgPrice: {
477
- type: "fixedNumber",
478
- columnKey: "averageGrossPrice",
479
- footerCalculation: {
480
- type: "average",
481
- numeratorField: "salesAmountGross",
482
- denominatorField: "itemsQuantity"
483
- }
484
- },
485
- ticketsCount: { type: "number", columnKey: "tickets" },
486
- guestsCount: { type: "number", columnKey: "guests" },
487
- ticketAverage: {
488
- type: "money",
489
- columnKey: "ticketAverage",
490
- footerCalculation: {
491
- type: "average",
492
- numeratorField: "salesAmountNet",
493
- denominatorField: "ticketsCount"
494
- }
495
- },
496
- guestAverage: {
497
- type: "money",
498
- columnKey: "guestAverage",
499
- footerCalculation: {
500
- type: "average",
501
- numeratorField: "salesAmountNet",
502
- denominatorField: "guestsCount"
503
- }
504
- },
505
- ticketAvg: {
506
- type: "money",
507
- columnKey: "ticketAverage",
508
- footerCalculation: {
509
- type: "average",
510
- numeratorField: "salesAmountNet",
511
- denominatorField: "ticketsCount"
512
- }
513
- },
514
- guestAvg: {
515
- type: "money",
516
- columnKey: "guestAverage",
517
- footerCalculation: {
518
- type: "average",
519
- numeratorField: "salesAmountNet",
520
- denominatorField: "guestsCount"
521
- }
522
- }
523
- };
524
- var DAILY_SALES_AVAILABLE_COLUMNS = [
525
- "itemsQuantity",
526
- "salesAmountGross",
527
- "discountsAmount",
528
- "inclusiveTaxesAmount",
529
- "salesAmountNet",
530
- "salesMixPct"
531
- ];
532
- var DAILY_SALES_BY_GROUP_AVAILABLE_COLUMNS = [
533
- "ticketsCount",
534
- "guestsCount",
535
- "ticketAverage",
536
- "guestAverage",
537
- "salesAmountNet"
538
- ];
539
- var dailySalesConfig = {
540
- fields: FIELDS7,
541
- availableColumns: DAILY_SALES_AVAILABLE_COLUMNS,
542
- defaultVisibleColumns: DAILY_SALES_AVAILABLE_COLUMNS,
543
- hasFooter: true
544
- };
545
- var DAILY_SALES_TRENDS_AVAILABLE_COLUMNS = [
546
- "ticketsCount",
547
- "guestsCount",
548
- "ticketAvg",
549
- "guestAvg",
550
- "salesAmountNet"
551
- ];
552
- var dailySalesTrendsConfig = {
553
- fields: FIELDS7,
554
- availableColumns: DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
555
- defaultVisibleColumns: DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
556
- hasFooter: true
557
- };
558
-
559
- // src/reports/dailySalesPayments.ts
560
- var FIRST_COLUMN_WIDTH5 = 240;
561
- var FIELDS8 = {
562
- paymentTypeName: { type: "string", size: FIRST_COLUMN_WIDTH5 },
563
- paymentsCount: { type: "number", columnKey: "paymentsCount", footerCalculation: { type: "sum" } },
564
- paymentsAmount: { type: "money", columnKey: "paymentsAmount", footerCalculation: { type: "sum" } },
565
- tipsAmount: { type: "money", columnKey: "tips", footerCalculation: { type: "sum" } },
566
- totalSales: { type: "money", columnKey: "paymentsTotal", footerCalculation: { type: "sum" } }
567
- };
568
- var DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS = [
569
- "paymentsCount",
570
- "paymentsAmount",
571
- "tipsAmount",
572
- "totalSales"
573
- ];
574
- var dailySalesPaymentsConfig = {
575
- fields: FIELDS8,
576
- availableColumns: DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
577
- defaultVisibleColumns: DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
578
- hasFooter: true
579
- };
580
-
581
- // src/reports/dailySalesDiscounts.ts
582
- var FIRST_COLUMN_WIDTH6 = 240;
583
- var FIELDS9 = {
584
- discountName: { type: "string", columnKey: "discountName", size: FIRST_COLUMN_WIDTH6 },
585
- ticketCount: { type: "number", columnKey: "ticketCount", footerCalculation: { type: "sum" } },
586
- itemCount: { type: "number", columnKey: "itemCount", footerCalculation: { type: "sum" } },
587
- discountsAmount: { type: "money", columnKey: "discountAmount", footerCalculation: { type: "sum" } }
588
- };
589
- var DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS = [
590
- "ticketCount",
591
- "itemCount",
592
- "discountsAmount"
593
- ];
594
- var dailySalesDiscountsConfig = {
595
- fields: FIELDS9,
596
- availableColumns: DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
597
- defaultVisibleColumns: DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
598
- hasFooter: true
599
- };
600
-
601
504
  // src/reports/employeeTimecard.ts
602
- var FIRST_COLUMN_WIDTH7 = 240;
603
505
  var EMPLOYEE_NAME_WIDTH = 220;
604
506
  var STATUS_WIDTH = 140;
605
507
  var LOOKUP_WIDTH = 160;
606
508
  var PAYROLL_WIDTH = 160;
607
509
  var JOB_WIDTH = 200;
608
- var FIELDS10 = {
510
+ var FIELDS8 = {
609
511
  locationId: {
610
512
  type: "number",
611
513
  enableSorting: false,
@@ -613,7 +515,7 @@ var FIELDS10 = {
613
515
  },
614
516
  locationName: {
615
517
  type: "string",
616
- size: FIRST_COLUMN_WIDTH7,
518
+ size: FIRST_COLUMN_WIDTH,
617
519
  columnKey: "locationName"
618
520
  },
619
521
  businessDate: {
@@ -679,60 +581,103 @@ var EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS = [
679
581
  "shiftHours"
680
582
  ];
681
583
  var employeeTimecardConfig = {
682
- fields: FIELDS10,
584
+ fields: FIELDS8,
683
585
  availableColumns: EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS,
684
586
  defaultVisibleColumns: EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS,
685
- columnGroups: [],
686
- // No column groups for this report
687
587
  hasFooter: true
688
588
  };
689
589
 
690
- // src/reports/salesByItemDetail.ts
691
- var FIELDS11 = {
692
- businessDate: { type: "date", columnKey: "date", filteringAvailable: false },
693
- ticketClosedAt: { type: "string", columnKey: "ticketClosed", filteringAvailable: false },
694
- hourId: { type: "number", columnKey: "hour", filteringAvailable: false },
695
- daypartName: { type: "string", columnKey: "daypart", filteringAvailable: false },
696
- locationId: { type: "number", columnKey: "locationId", filteringAvailable: false },
697
- locationName: { type: "string", columnKey: "locationName", filteringAvailable: false },
698
- departmentName: { type: "string", columnKey: "department", filteringAvailable: false },
699
- itemName: { type: "string", columnKey: "itemName", filteringAvailable: false },
700
- revenueCenterName: { type: "string", columnKey: "revenueCenter", filteringAvailable: false },
701
- revenueClassName: { type: "string", columnKey: "revenueClass", filteringAvailable: false },
702
- 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 },
703
594
  itemsQuantity: { type: "number", columnKey: "quantity" },
704
- transactionId: { type: "string", columnKey: "ticketNumber", filteringAvailable: false },
705
- guestsCount: { type: "number", columnKey: "guestCount" },
706
- employeeName: { type: "string", columnKey: "employeeName", filteringAvailable: false },
707
- orderTypeName: { type: "string", columnKey: "orderType", filteringAvailable: false },
708
- salesType: { type: "string", columnKey: "salePaymentType", filteringAvailable: false },
709
- 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" }
710
600
  };
711
- var SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS = [
712
- "businessDate",
713
- "ticketClosedAt",
714
- "hourId",
715
- "daypartName",
716
- "locationId",
717
- "locationName",
718
- "departmentName",
719
- "itemName",
720
- "revenueCenterName",
721
- "revenueClassName",
601
+ var DAILY_SALES_AVAILABLE_COLUMNS = [
602
+ "itemsQuantity",
722
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 = [
723
629
  "itemsQuantity",
724
- "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",
725
671
  "guestsCount",
726
- "employeeName",
727
- "orderTypeName",
728
- "salesType",
729
- "itemPrice"
672
+ "ticketAvg",
673
+ "guestAvg",
674
+ "salesAmountNet"
730
675
  ];
731
- var salesByItemDetailConfig = {
676
+ var dailySalesTrendsConfig = {
732
677
  fields: FIELDS11,
733
- availableColumns: SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
734
- defaultVisibleColumns: SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
735
- hasFooter: false
678
+ availableColumns: DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
679
+ defaultVisibleColumns: DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
680
+ hasFooter: true
736
681
  };
737
682
 
738
683
  // src/report.ts
@@ -747,7 +692,8 @@ var Report = {
747
692
  EMPLOYEE_TIP: "employee-tip",
748
693
  SALES_BY_ITEM: "sales-by-item",
749
694
  DAILY_SALES: "daily-sales",
750
- DAILY_SALES_LIVE: "daily-sales-live"
695
+ DAILY_SALES_LIVE: "daily-sales-live",
696
+ DAILY_SALES_TRENDS: "daily-sales-trends"
751
697
  };
752
698
  var REPORT_CONFIG_MAP = {
753
699
  "sales-summary": salesSummaryConfig,
@@ -760,7 +706,8 @@ var REPORT_CONFIG_MAP = {
760
706
  "employee-tip": null,
761
707
  "sales-by-item": salesByItemDetailConfig,
762
708
  "daily-sales": dailySalesConfig,
763
- "daily-sales-live": null
709
+ "daily-sales-live": dailySalesLiveConfig,
710
+ "daily-sales-trends": dailySalesTrendsConfig
764
711
  };
765
712
  var getReportConfig = (reportType) => REPORT_CONFIG_MAP[reportType];
766
713
 
@@ -1449,6 +1396,9 @@ var calculateFieldTotal = (rows, field, config) => {
1449
1396
  if (calc?.type === "none") {
1450
1397
  return null;
1451
1398
  }
1399
+ if (calc?.type === "count") {
1400
+ return rows.length;
1401
+ }
1452
1402
  if (!calc || calc.type === "sum") {
1453
1403
  return config.columnKey || calc?.type === "sum" ? sumField(rows, field) : 0;
1454
1404
  }
@@ -1488,41 +1438,71 @@ var calculateReportTotals = (data, fieldConfig, opts) => {
1488
1438
  return result;
1489
1439
  };
1490
1440
 
1491
- // src/reports/dailySalesRefundsVoids.ts
1492
- var FIRST_COLUMN_WIDTH8 = 240;
1441
+ // src/reports/dailySalesPayments.ts
1493
1442
  var FIELDS12 = {
1494
- description: { type: "string", columnKey: "refundVoidDescription", size: FIRST_COLUMN_WIDTH8 },
1443
+ paymentTypeName: { type: "string", size: FIRST_COLUMN_WIDTH },
1444
+ paymentsCount: { type: "number", columnKey: "paymentsCount", footerCalculation: { type: "sum" } },
1445
+ paymentsAmount: { type: "money", columnKey: "paymentsAmount", footerCalculation: { type: "sum" } },
1446
+ tipsAmount: { type: "money", columnKey: "tips", footerCalculation: { type: "sum" } },
1447
+ totalSales: { type: "money", columnKey: "paymentsTotal", footerCalculation: { type: "sum" } }
1448
+ };
1449
+ var DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS = [
1450
+ "paymentsCount",
1451
+ "paymentsAmount",
1452
+ "tipsAmount",
1453
+ "totalSales"
1454
+ ];
1455
+ var dailySalesPaymentsConfig = {
1456
+ fields: FIELDS12,
1457
+ availableColumns: DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
1458
+ defaultVisibleColumns: DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
1459
+ hasFooter: true
1460
+ };
1461
+
1462
+ // src/reports/dailySalesDiscounts.ts
1463
+ var FIELDS13 = {
1464
+ discountName: { type: "string", columnKey: "discountName", size: FIRST_COLUMN_WIDTH },
1465
+ ticketCount: { type: "number", columnKey: "ticketCount", footerCalculation: { type: "sum" } },
1466
+ itemCount: { type: "number", columnKey: "itemCount", footerCalculation: { type: "sum" } },
1467
+ discountsAmount: { type: "money", columnKey: "discountAmount", footerCalculation: { type: "sum" } }
1468
+ };
1469
+ var DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS = [
1470
+ "ticketCount",
1471
+ "itemCount",
1472
+ "discountsAmount"
1473
+ ];
1474
+ var dailySalesDiscountsConfig = {
1475
+ fields: FIELDS13,
1476
+ availableColumns: DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
1477
+ defaultVisibleColumns: DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
1478
+ hasFooter: true
1479
+ };
1480
+
1481
+ // src/reports/dailySalesRefundsVoids.ts
1482
+ var FIELDS14 = {
1483
+ description: { type: "string", columnKey: "refundVoidDescription", size: FIRST_COLUMN_WIDTH },
1495
1484
  count: { type: "number", columnKey: "refundVoidCount", footerCalculation: { type: "sum" } },
1496
1485
  amount: { type: "money", columnKey: "refundVoidAmount", footerCalculation: { type: "sum" } },
1497
1486
  pctSales: { type: "percent", columnKey: "refundVoidPctSales", footerCalculation: { type: "sum" } }
1498
1487
  };
1499
- var DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS = [
1500
- "count",
1501
- "amount",
1502
- "pctSales"
1503
- ];
1488
+ var DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS = ["count", "amount", "pctSales"];
1504
1489
  var dailySalesRefundsVoidsConfig = {
1505
- fields: FIELDS12,
1490
+ fields: FIELDS14,
1506
1491
  availableColumns: DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS,
1507
1492
  defaultVisibleColumns: DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS,
1508
1493
  hasFooter: true
1509
1494
  };
1510
1495
 
1511
1496
  // src/reports/dailySalesTaxes.ts
1512
- var FIRST_COLUMN_WIDTH9 = 240;
1513
- var FIELDS13 = {
1514
- taxName: { type: "string", columnKey: "taxName", size: FIRST_COLUMN_WIDTH9 },
1497
+ var FIELDS15 = {
1498
+ taxName: { type: "string", columnKey: "taxName", size: FIRST_COLUMN_WIDTH },
1515
1499
  taxableSales: { type: "money", columnKey: "taxableSales", footerCalculation: { type: "sum" } },
1516
1500
  taxesAmount: { type: "money", columnKey: "taxCollected", footerCalculation: { type: "sum" } },
1517
1501
  exemptSales: { type: "money", columnKey: "exemptTaxes", footerCalculation: { type: "sum" } }
1518
1502
  };
1519
- var DAILY_SALES_TAXES_AVAILABLE_COLUMNS = [
1520
- "taxableSales",
1521
- "taxesAmount",
1522
- "exemptSales"
1523
- ];
1503
+ var DAILY_SALES_TAXES_AVAILABLE_COLUMNS = ["taxableSales", "taxesAmount", "exemptSales"];
1524
1504
  var dailySalesTaxesConfig = {
1525
- fields: FIELDS13,
1505
+ fields: FIELDS15,
1526
1506
  availableColumns: DAILY_SALES_TAXES_AVAILABLE_COLUMNS,
1527
1507
  defaultVisibleColumns: DAILY_SALES_TAXES_AVAILABLE_COLUMNS,
1528
1508
  hasFooter: true
@@ -1668,28 +1648,12 @@ var formatFieldValue = (value, type, localeOptions, fullRecord, fieldConfig = DE
1668
1648
  };
1669
1649
  export {
1670
1650
  COLUMN_REGISTRY,
1671
- DAILY_SALES_AVAILABLE_COLUMNS,
1672
- DAILY_SALES_BY_GROUP_AVAILABLE_COLUMNS,
1673
- DAILY_SALES_DISCOUNTS_AVAILABLE_COLUMNS,
1674
- DAILY_SALES_PAYMENTS_AVAILABLE_COLUMNS,
1675
- DAILY_SALES_REFUNDS_VOIDS_AVAILABLE_COLUMNS,
1676
- DAILY_SALES_TAXES_AVAILABLE_COLUMNS,
1677
- DAILY_SALES_TRENDS_AVAILABLE_COLUMNS,
1678
- EMPLOYEE_TIMECARD_AVAILABLE_COLUMNS,
1679
- ITEM_TAX_AVAILABLE_COLUMNS,
1680
- MODIFIER_MIX_AVAILABLE_COLUMNS,
1681
- PRODUCT_MIX_AVAILABLE_COLUMNS,
1682
- PRODUCT_MIX_CHART_FIELDS,
1683
- PRODUCT_MIX_DEFAULT_VISIBLE_COLUMNS,
1684
1651
  Report,
1685
- SALES_BY_ITEM_DETAIL_AVAILABLE_COLUMNS,
1686
- SALES_SUMMARY_AVAILABLE_COLUMNS,
1687
- TICKET_LIVE_AVAILABLE_COLUMNS,
1688
- TICKET_SUMMARY_AVAILABLE_COLUMNS,
1689
1652
  calculateFieldTotal,
1690
1653
  calculateReportTotals,
1691
1654
  dailySalesConfig,
1692
1655
  dailySalesDiscountsConfig,
1656
+ dailySalesLiveConfig,
1693
1657
  dailySalesPaymentsConfig,
1694
1658
  dailySalesRefundsVoidsConfig,
1695
1659
  dailySalesTaxesConfig,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harbortouch/skytab-analytics-report-utils",
3
- "version": "0.11.0",
3
+ "version": "0.12.1",
4
4
  "description": "Centralized report column presentation configuration for SkyTab Analytics",
5
5
  "engines": {
6
6
  "node": ">=22.6.0",