@harbortouch/skytab-analytics-report-utils 0.38.1 → 0.39.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.
@@ -252,355 +252,6 @@ var salesSummaryConfig = {
252
252
  hasFooter: true
253
253
  };
254
254
 
255
- // src/reports/ticketSummary.ts
256
- var FIELDS3 = {
257
- ticketId: { type: "string", filteringAvailable: false },
258
- locationId: { type: "number", filteringAvailable: false },
259
- orderName: { type: "string", filteringAvailable: false },
260
- revenueCenterName: { type: "string", columnKey: "revenueCenter", filteringAvailable: false },
261
- daypartName: { type: "string", columnKey: "daypart", filteringAvailable: false },
262
- inclusiveTaxesAmount: {
263
- type: "money",
264
- columnKey: "inclusiveTax",
265
- footerCalculation: { type: "sum" },
266
- filteringAvailable: false
267
- },
268
- locationName: { type: "string", size: 240, columnKey: "locationName", filteringAvailable: false },
269
- orderNumber: {
270
- type: "string",
271
- columnKey: "ticketNumber",
272
- footerCalculation: { type: "label", label: "table.total" },
273
- filteringAvailable: false
274
- },
275
- businessDate: { type: "date", columnKey: "date", filteringAvailable: false },
276
- ticketOpenedAt: { type: "time", columnKey: "ticketOpen", filteringAvailable: false },
277
- ticketClosedAt: { type: "time", columnKey: "ticketClosed", filteringAvailable: false },
278
- ticketTime: { type: "number", columnKey: "timeOpenMins", enableSorting: false, filteringAvailable: false },
279
- ticketSubtotal: {
280
- type: "money",
281
- columnKey: "subtotal",
282
- footerCalculation: { type: "sum" },
283
- filteringAvailable: false
284
- },
285
- discountsAmount: {
286
- type: "money",
287
- columnKey: "discountAmount",
288
- footerCalculation: { type: "sum" },
289
- filteringAvailable: false
290
- },
291
- surchargesAmount: {
292
- type: "money",
293
- columnKey: "ticketFee",
294
- footerCalculation: { type: "sum" },
295
- filteringAvailable: false
296
- },
297
- taxesAmount: {
298
- type: "money",
299
- columnKey: "taxCollected",
300
- footerCalculation: { type: "sum" },
301
- filteringAvailable: false
302
- },
303
- ticketGrandTotal: {
304
- type: "money",
305
- columnKey: "grandTotal",
306
- footerCalculation: { type: "sum" },
307
- filteringAvailable: false
308
- },
309
- gratuitiesAmount: {
310
- type: "money",
311
- columnKey: "autoGratuity",
312
- footerCalculation: { type: "sum" },
313
- filteringAvailable: false
314
- },
315
- tipAmount: {
316
- type: "money",
317
- columnKey: "tips",
318
- footerCalculation: { type: "sum" },
319
- filteringAvailable: false
320
- },
321
- paymentsAmount: {
322
- type: "money",
323
- columnKey: "totalCollected",
324
- footerCalculation: { type: "sum" },
325
- filteringAvailable: false
326
- },
327
- paymentTypeName: { type: "string", columnKey: "paymentType", filteringAvailable: false },
328
- guestsCount: {
329
- type: "number",
330
- columnKey: "guestCount",
331
- footerCalculation: { type: "sum" },
332
- filteringAvailable: false
333
- },
334
- employeeName: { type: "string", columnKey: "employeeName", filteringAvailable: false },
335
- orderTypeName: { type: "string", columnKey: "orderType", filteringAvailable: false }
336
- };
337
- var TICKET_SUMMARY_VISIBLE_COLUMNS = [
338
- "locationName",
339
- "businessDate",
340
- "ticketOpenedAt",
341
- "ticketClosedAt",
342
- "ticketTime",
343
- "ticketSubtotal",
344
- "discountsAmount",
345
- "surchargesAmount",
346
- "taxesAmount",
347
- "ticketGrandTotal",
348
- "gratuitiesAmount",
349
- "tipAmount",
350
- "paymentsAmount",
351
- "paymentTypeName",
352
- "guestsCount",
353
- "employeeName",
354
- "orderTypeName"
355
- ];
356
- var TICKET_SUMMARY_AVAILABLE_COLUMNS = ["orderNumber", ...TICKET_SUMMARY_VISIBLE_COLUMNS];
357
- var ticketSummaryConfig = {
358
- fields: FIELDS3,
359
- availableColumns: TICKET_SUMMARY_AVAILABLE_COLUMNS,
360
- defaultVisibleColumns: TICKET_SUMMARY_VISIBLE_COLUMNS,
361
- hasFooter: true
362
- };
363
-
364
- // src/reports/ticketLive.ts
365
- var FIELDS4 = {
366
- locationName: { type: "string", columnKey: "locationName" },
367
- orderNumber: {
368
- type: "string",
369
- columnKey: "ticketNumber",
370
- footerCalculation: { type: "label", label: "table.total" }
371
- },
372
- dateOpen: { type: "string", columnKey: "date" },
373
- timeOpen: { type: "string", columnKey: "ticketOpen" },
374
- dateClose: { type: "string", columnKey: "dateClose" },
375
- timeClose: { type: "string", columnKey: "ticketClosed" },
376
- durationMinutes: { type: "number", columnKey: "timeOpenMins" },
377
- subtotal: { type: "money", columnKey: "subtotal" },
378
- discountTotal: { type: "money", columnKey: "discountAmount" },
379
- surchargeTotal: { type: "money", columnKey: "ticketFee" },
380
- taxTotal: { type: "money", columnKey: "taxCollected" },
381
- grandTotal: { type: "money", columnKey: "grandTotal" },
382
- gratuityTotal: { type: "money", columnKey: "autoGratuity" },
383
- totalTips: { type: "money", columnKey: "totalTips" },
384
- paymentsReceived: { type: "money", columnKey: "totalCollected" },
385
- paymentTypeName: { type: "string", columnKey: "paymentType" },
386
- guestCount: {
387
- type: "number",
388
- columnKey: "guestCount",
389
- footerCalculation: { type: "sum" }
390
- },
391
- customerName: { type: "string", columnKey: "customerName" },
392
- employeeName: { type: "string", columnKey: "employeeName" },
393
- orderType: { type: "string", columnKey: "orderType" }
394
- };
395
- var TICKET_LIVE_VISIBLE_COLUMNS = [
396
- "locationName",
397
- "dateOpen",
398
- "timeOpen",
399
- "timeClose",
400
- "durationMinutes",
401
- "subtotal",
402
- "discountTotal",
403
- "surchargeTotal",
404
- "taxTotal",
405
- "grandTotal",
406
- "gratuityTotal",
407
- "totalTips",
408
- "paymentsReceived",
409
- "paymentTypeName",
410
- "guestCount",
411
- "employeeName",
412
- "orderType"
413
- ];
414
- var TICKET_LIVE_AVAILABLE_COLUMNS = ["orderNumber", ...TICKET_LIVE_VISIBLE_COLUMNS];
415
- var ticketLiveConfig = {
416
- fields: FIELDS4,
417
- availableColumns: TICKET_LIVE_AVAILABLE_COLUMNS,
418
- defaultVisibleColumns: TICKET_LIVE_VISIBLE_COLUMNS,
419
- hasFooter: true
420
- };
421
-
422
- // src/reports/productMix.ts
423
- var FIELDS5 = {
424
- groupById: { type: "string" },
425
- groupByName: { type: "string", size: FIRST_COLUMN_WIDTH, footerCalculation: { type: "label", label: "table.total" } },
426
- salesAmountGross: { type: "money", columnKey: "grossSales" },
427
- discountsAmount: { type: "money", columnKey: "discountAmount" },
428
- inclusiveTaxesAmount: { type: "money", columnKey: "inclusiveTax" },
429
- salesAmountNet: { type: "money", columnKey: "netSales" },
430
- itemsQuantity: { type: "fixedNumber", columnKey: "quantity" },
431
- avgPrice: {
432
- type: "money",
433
- columnKey: "averageGrossPrice",
434
- footerCalculation: {
435
- type: "average",
436
- numeratorField: "salesAmountGross",
437
- denominatorField: "itemsQuantity"
438
- }
439
- },
440
- salesMixPct: { type: "percent", columnKey: "salesMixByPct" }
441
- };
442
- var PRODUCT_MIX_VISIBLE_COLUMNS = [
443
- "salesAmountGross",
444
- "itemsQuantity",
445
- "avgPrice",
446
- "discountsAmount",
447
- "inclusiveTaxesAmount",
448
- "salesAmountNet",
449
- "salesMixPct"
450
- ];
451
- var PRODUCT_MIX_AVAILABLE_COLUMNS = ["groupByName", ...PRODUCT_MIX_VISIBLE_COLUMNS];
452
- var productMixConfig = {
453
- fields: FIELDS5,
454
- availableColumns: PRODUCT_MIX_AVAILABLE_COLUMNS,
455
- defaultVisibleColumns: PRODUCT_MIX_VISIBLE_COLUMNS,
456
- chartFields: PRODUCT_MIX_VISIBLE_COLUMNS,
457
- hasFooter: true
458
- };
459
-
460
- // src/reports/modifierMix.ts
461
- var FIELDS6 = {
462
- groupById: { type: "string", filteringAvailable: false },
463
- groupByName: {
464
- type: "string",
465
- size: FIRST_COLUMN_WIDTH,
466
- filteringAvailable: false,
467
- footerCalculation: { type: "label", label: "table.total" }
468
- },
469
- groupById2: { type: "string", filteringAvailable: false },
470
- groupByName2: {
471
- type: "string",
472
- size: FIRST_COLUMN_WIDTH,
473
- filteringAvailable: false,
474
- footerCalculation: { type: "none" }
475
- },
476
- modifiersSales: { type: "money", columnKey: "totalModifierSales" },
477
- modifiersQuantity: { type: "number", columnKey: "modifierQuantity" },
478
- itemsQuantity: {
479
- type: "number",
480
- columnKey: "quantity",
481
- filteringAvailable: false
482
- },
483
- avgGross: {
484
- type: "money",
485
- columnKey: "averageGrossPrice",
486
- footerCalculation: {
487
- type: "average",
488
- numeratorField: "modifiersSales",
489
- denominatorField: "modifiersQuantity"
490
- }
491
- },
492
- attachRate: {
493
- type: "percent",
494
- columnKey: "attachRate",
495
- footerCalculation: {
496
- type: "average",
497
- numeratorField: "modifiersQuantity",
498
- denominatorField: "itemsQuantity"
499
- }
500
- },
501
- modifiersSalesComp: { type: "money", filteringAvailable: false },
502
- modifiersQuantityComp: { type: "number", filteringAvailable: false },
503
- itemsQuantityComp: { type: "number", filteringAvailable: false },
504
- attachRateComp: { type: "percent", filteringAvailable: false },
505
- modifiersSalesVar: { type: "money", filteringAvailable: false },
506
- modifiersSalesVarPct: {
507
- type: "percent",
508
- filteringAvailable: false,
509
- footerCalculation: {
510
- type: "percentChange",
511
- numeratorField: "modifiersSales",
512
- denominatorField: "modifiersSalesComp"
513
- }
514
- },
515
- modifiersQuantityVar: { type: "number", filteringAvailable: false },
516
- modifiersQuantityVarPct: {
517
- type: "percent",
518
- filteringAvailable: false,
519
- footerCalculation: {
520
- type: "percentChange",
521
- numeratorField: "modifiersQuantity",
522
- denominatorField: "modifiersQuantityComp"
523
- }
524
- },
525
- attachRateVar: { type: "percent", filteringAvailable: false },
526
- attachRateVarPct: {
527
- type: "percent",
528
- filteringAvailable: false,
529
- footerCalculation: {
530
- type: "percentChange",
531
- numeratorField: "attachRate",
532
- denominatorField: "attachRateComp"
533
- }
534
- }
535
- };
536
- var MODIFIER_MIX_VISIBLE_COLUMNS = ["modifiersSales", "modifiersQuantity", "avgGross"];
537
- var MODIFIER_MIX_AVAILABLE_COLUMNS = [
538
- "groupByName",
539
- "groupByName2",
540
- ...MODIFIER_MIX_VISIBLE_COLUMNS
541
- ];
542
- var modifierMixConfig = {
543
- fields: FIELDS6,
544
- chartFields: MODIFIER_MIX_VISIBLE_COLUMNS,
545
- availableColumns: MODIFIER_MIX_AVAILABLE_COLUMNS,
546
- defaultVisibleColumns: MODIFIER_MIX_VISIBLE_COLUMNS,
547
- hasFooter: true
548
- };
549
-
550
- // src/reports/itemTax.ts
551
- var FIELDS7 = {
552
- locationId: { type: "number", filteringAvailable: false },
553
- taxIsFlat: { type: "boolean", filteringAvailable: false },
554
- merchantId: { type: "string", columnKey: "locationMid", filteringAvailable: false },
555
- locationName: { type: "string", columnKey: "locationName", filteringAvailable: false },
556
- locationCity: { type: "string", columnKey: "locationCity", filteringAvailable: false },
557
- locationState: { type: "string", columnKey: "locationState", filteringAvailable: false },
558
- itemName: { type: "string", columnKey: "itemName", filteringAvailable: false },
559
- itemPrice: { type: "money", columnKey: "itemPrice" },
560
- departmentName: { type: "string", columnKey: "department", filteringAvailable: false },
561
- revenueClassName: { type: "string", columnKey: "revenueClass", filteringAvailable: false },
562
- orderTypeName: { type: "string", columnKey: "orderType", filteringAvailable: false },
563
- taxName: { type: "string", columnKey: "taxName", filteringAvailable: false },
564
- taxValue: { type: "money", columnKey: "taxableSales" },
565
- taxRate: {
566
- type: "conditional",
567
- columnKey: "taxRate",
568
- conditionalConfiguration: {
569
- conditionalField: "taxIsFlat",
570
- conditionalFormat: (field) => {
571
- return field ? "money" : "percent";
572
- }
573
- }
574
- },
575
- recordsCount: { type: "number", columnKey: "quantity" },
576
- taxableSales: { type: "money", columnKey: "taxableSales" },
577
- totalCollected: { type: "money", columnKey: "totalCollected" },
578
- itemTax: { type: "money", columnKey: "taxCollected" },
579
- taxCollected: { type: "money", columnKey: "taxCollected" }
580
- };
581
- var ITEM_TAX_AVAILABLE_COLUMNS = [
582
- "merchantId",
583
- "locationName",
584
- "locationCity",
585
- "locationState",
586
- "itemName",
587
- "departmentName",
588
- "revenueClassName",
589
- "orderTypeName",
590
- "recordsCount",
591
- "itemPrice",
592
- "taxName",
593
- "taxRate",
594
- "taxableSales",
595
- "taxCollected"
596
- ];
597
- var itemTaxConfig = {
598
- fields: FIELDS7,
599
- availableColumns: ITEM_TAX_AVAILABLE_COLUMNS,
600
- defaultVisibleColumns: ITEM_TAX_AVAILABLE_COLUMNS,
601
- hasFooter: false
602
- };
603
-
604
255
  // src/translations/crowdin/skytab-analytics-report-utils/en-GB.ts
605
256
  var enUS = {
606
257
  "common.report-col.fifteen-min-interval": false,
@@ -1071,6 +722,9 @@ var enUS = {
1071
722
  "common.report-col.total-pay": false,
1072
723
  "common.report-col.total-pay.short": false,
1073
724
  "common.report-col.total-pay.info": false,
725
+ "common.report-col.table-name": false,
726
+ "common.report-col.table-name.short": false,
727
+ "common.report-col.table-name.info": false,
1074
728
  "common.report-section.revenue-class": false,
1075
729
  "common.report-section.payments": false,
1076
730
  "common.report-section.cash": false,
@@ -1096,6 +750,7 @@ var enUS = {
1096
750
  "components.form.field.last-year": false,
1097
751
  "common.labels.locations": false,
1098
752
  "common.labels.yes": false,
753
+ "common.labels.unassigned": false,
1099
754
  // Analytic fields
1100
755
  "analytics.field.location_id": false,
1101
756
  "analytics.field.order_type_id": false,
@@ -1595,6 +1250,9 @@ var enUS2 = {
1595
1250
  "common.report-col.total-pay": false,
1596
1251
  "common.report-col.total-pay.short": false,
1597
1252
  "common.report-col.total-pay.info": false,
1253
+ "common.report-col.table-name": false,
1254
+ "common.report-col.table-name.short": false,
1255
+ "common.report-col.table-name.info": false,
1598
1256
  "common.report-section.revenue-class": false,
1599
1257
  "common.report-section.payments": false,
1600
1258
  "common.report-section.cash": false,
@@ -1620,6 +1278,7 @@ var enUS2 = {
1620
1278
  "components.form.field.last-year": false,
1621
1279
  "common.labels.locations": false,
1622
1280
  "common.labels.yes": false,
1281
+ "common.labels.unassigned": false,
1623
1282
  // Analytic fields
1624
1283
  "analytics.field.location_id": false,
1625
1284
  "analytics.field.order_type_id": false,
@@ -2119,6 +1778,9 @@ var enUS3 = {
2119
1778
  "common.report-col.total-pay": "Total Pay",
2120
1779
  "common.report-col.total-pay.short": "Total Pay",
2121
1780
  "common.report-col.total-pay.info": "Total compensation including wages, overtime, and adjustments",
1781
+ "common.report-col.table-name": "Table Name",
1782
+ "common.report-col.table-name.short": "Table Name",
1783
+ "common.report-col.table-name.info": "Table Name if assigned",
2122
1784
  "common.report-section.revenue-class": "Sales by Revenue Class",
2123
1785
  "common.report-section.payments": "Payments",
2124
1786
  "common.report-section.cash": "Expected Closeout Cash",
@@ -2144,6 +1806,7 @@ var enUS3 = {
2144
1806
  "components.form.field.last-year": "Compare to Last Year",
2145
1807
  "common.labels.locations": "Locations",
2146
1808
  "common.labels.yes": "Yes",
1809
+ "common.labels.unassigned": "Unassigned",
2147
1810
  // Analytic fields
2148
1811
  "analytics.field.location_id": "Location",
2149
1812
  "analytics.field.order_type_id": "Order Types",
@@ -2171,26 +1834,399 @@ var enUS3 = {
2171
1834
  "employee-timecard.status.inactive": "Inactive",
2172
1835
  "employee-timecard.job.break-suffix": " * break"
2173
1836
  };
2174
- var en_US_default = enUS3;
1837
+ var en_US_default = enUS3;
1838
+
1839
+ // src/translations/index.ts
1840
+ var filterCrowdin = (messages) => Object.fromEntries(
1841
+ Object.entries(messages).filter((entry) => typeof entry[1] === "string")
1842
+ );
1843
+ var LOCALE_OVERRIDES = {
1844
+ "en-GB": filterCrowdin(en_GB_default),
1845
+ "es-ES": filterCrowdin(es_ES_default)
1846
+ };
1847
+ function resolveTranslate(key, locale) {
1848
+ const overrides = LOCALE_OVERRIDES[locale];
1849
+ if (overrides) {
1850
+ const override = overrides[key];
1851
+ if (override !== void 0) {
1852
+ return override;
1853
+ }
1854
+ }
1855
+ return en_US_default[key] ?? key;
1856
+ }
1857
+
1858
+ // src/reports/ticketSummary.ts
1859
+ var FIELDS3 = {
1860
+ ticketId: { type: "string", filteringAvailable: false },
1861
+ locationId: { type: "number", filteringAvailable: false },
1862
+ orderName: { type: "string", filteringAvailable: false },
1863
+ revenueCenterName: { type: "string", columnKey: "revenueCenter", filteringAvailable: false },
1864
+ daypartName: { type: "string", columnKey: "daypart", filteringAvailable: false },
1865
+ inclusiveTaxesAmount: {
1866
+ type: "money",
1867
+ columnKey: "inclusiveTax",
1868
+ footerCalculation: { type: "sum" },
1869
+ filteringAvailable: false
1870
+ },
1871
+ locationName: { type: "string", size: 240, columnKey: "locationName", filteringAvailable: false },
1872
+ orderNumber: {
1873
+ type: "string",
1874
+ columnKey: "ticketNumber",
1875
+ footerCalculation: { type: "label", label: "table.total" },
1876
+ filteringAvailable: false
1877
+ },
1878
+ businessDate: { type: "date", columnKey: "date", filteringAvailable: false },
1879
+ ticketOpenedAt: { type: "time", columnKey: "ticketOpen", filteringAvailable: false },
1880
+ ticketClosedAt: { type: "time", columnKey: "ticketClosed", filteringAvailable: false },
1881
+ ticketTime: { type: "number", columnKey: "timeOpenMins", enableSorting: false, filteringAvailable: false },
1882
+ ticketSubtotal: {
1883
+ type: "money",
1884
+ columnKey: "subtotal",
1885
+ footerCalculation: { type: "sum" },
1886
+ filteringAvailable: false
1887
+ },
1888
+ discountsAmount: {
1889
+ type: "money",
1890
+ columnKey: "discountAmount",
1891
+ footerCalculation: { type: "sum" },
1892
+ filteringAvailable: false
1893
+ },
1894
+ surchargesAmount: {
1895
+ type: "money",
1896
+ columnKey: "ticketFee",
1897
+ footerCalculation: { type: "sum" },
1898
+ filteringAvailable: false
1899
+ },
1900
+ taxesAmount: {
1901
+ type: "money",
1902
+ columnKey: "taxCollected",
1903
+ footerCalculation: { type: "sum" },
1904
+ filteringAvailable: false
1905
+ },
1906
+ ticketGrandTotal: {
1907
+ type: "money",
1908
+ columnKey: "grandTotal",
1909
+ footerCalculation: { type: "sum" },
1910
+ filteringAvailable: false
1911
+ },
1912
+ gratuitiesAmount: {
1913
+ type: "money",
1914
+ columnKey: "autoGratuity",
1915
+ footerCalculation: { type: "sum" },
1916
+ filteringAvailable: false
1917
+ },
1918
+ tipAmount: {
1919
+ type: "money",
1920
+ columnKey: "tips",
1921
+ footerCalculation: { type: "sum" },
1922
+ filteringAvailable: false
1923
+ },
1924
+ paymentsAmount: {
1925
+ type: "money",
1926
+ columnKey: "totalCollected",
1927
+ footerCalculation: { type: "sum" },
1928
+ filteringAvailable: false
1929
+ },
1930
+ paymentTypeName: { type: "string", columnKey: "paymentType", filteringAvailable: false },
1931
+ guestsCount: {
1932
+ type: "number",
1933
+ columnKey: "guestCount",
1934
+ footerCalculation: { type: "sum" },
1935
+ filteringAvailable: false
1936
+ },
1937
+ employeeName: { type: "string", columnKey: "employeeName", filteringAvailable: false },
1938
+ orderTypeName: { type: "string", columnKey: "orderType", filteringAvailable: false },
1939
+ tableName: {
1940
+ type: "custom",
1941
+ columnKey: "tableName",
1942
+ enableSorting: false,
1943
+ filteringAvailable: false,
1944
+ customConfiguration: {
1945
+ customFormat: (value, _full, locale) => {
1946
+ return typeof value === "string" && value !== "" ? value : resolveTranslate("common.labels.unassigned", locale);
1947
+ }
1948
+ }
1949
+ }
1950
+ };
1951
+ var TICKET_SUMMARY_VISIBLE_COLUMNS = [
1952
+ "locationName",
1953
+ "businessDate",
1954
+ "ticketOpenedAt",
1955
+ "ticketClosedAt",
1956
+ "ticketTime",
1957
+ "ticketSubtotal",
1958
+ "discountsAmount",
1959
+ "surchargesAmount",
1960
+ "taxesAmount",
1961
+ "ticketGrandTotal",
1962
+ "gratuitiesAmount",
1963
+ "tipAmount",
1964
+ "paymentsAmount",
1965
+ "paymentTypeName",
1966
+ "guestsCount",
1967
+ "employeeName",
1968
+ "orderTypeName",
1969
+ "tableName"
1970
+ ];
1971
+ var TICKET_SUMMARY_AVAILABLE_COLUMNS = ["orderNumber", ...TICKET_SUMMARY_VISIBLE_COLUMNS];
1972
+ var ticketSummaryConfig = {
1973
+ fields: FIELDS3,
1974
+ availableColumns: TICKET_SUMMARY_AVAILABLE_COLUMNS,
1975
+ defaultVisibleColumns: TICKET_SUMMARY_VISIBLE_COLUMNS,
1976
+ hasFooter: true
1977
+ };
1978
+
1979
+ // src/reports/ticketLive.ts
1980
+ var FIELDS4 = {
1981
+ locationName: { type: "string", columnKey: "locationName" },
1982
+ orderNumber: {
1983
+ type: "string",
1984
+ columnKey: "ticketNumber",
1985
+ footerCalculation: { type: "label", label: "table.total" }
1986
+ },
1987
+ dateOpen: { type: "string", columnKey: "date" },
1988
+ timeOpen: { type: "string", columnKey: "ticketOpen" },
1989
+ dateClose: { type: "string", columnKey: "dateClose" },
1990
+ timeClose: { type: "string", columnKey: "ticketClosed" },
1991
+ durationMinutes: { type: "number", columnKey: "timeOpenMins" },
1992
+ subtotal: { type: "money", columnKey: "subtotal" },
1993
+ discountTotal: { type: "money", columnKey: "discountAmount" },
1994
+ surchargeTotal: { type: "money", columnKey: "ticketFee" },
1995
+ taxTotal: { type: "money", columnKey: "taxCollected" },
1996
+ grandTotal: { type: "money", columnKey: "grandTotal" },
1997
+ gratuityTotal: { type: "money", columnKey: "autoGratuity" },
1998
+ totalTips: { type: "money", columnKey: "totalTips" },
1999
+ paymentsReceived: { type: "money", columnKey: "totalCollected" },
2000
+ paymentTypeName: { type: "string", columnKey: "paymentType" },
2001
+ guestCount: {
2002
+ type: "number",
2003
+ columnKey: "guestCount",
2004
+ footerCalculation: { type: "sum" }
2005
+ },
2006
+ customerName: { type: "string", columnKey: "customerName" },
2007
+ employeeName: { type: "string", columnKey: "employeeName" },
2008
+ orderType: { type: "string", columnKey: "orderType" },
2009
+ tableName: {
2010
+ type: "custom",
2011
+ columnKey: "tableName",
2012
+ enableSorting: false,
2013
+ filteringAvailable: false,
2014
+ customConfiguration: {
2015
+ customFormat: (value, _full, locale) => {
2016
+ return typeof value === "string" && value !== "" ? value : resolveTranslate("common.labels.unassigned", locale);
2017
+ }
2018
+ }
2019
+ }
2020
+ };
2021
+ var TICKET_LIVE_VISIBLE_COLUMNS = [
2022
+ "locationName",
2023
+ "dateOpen",
2024
+ "timeOpen",
2025
+ "timeClose",
2026
+ "durationMinutes",
2027
+ "subtotal",
2028
+ "discountTotal",
2029
+ "surchargeTotal",
2030
+ "taxTotal",
2031
+ "grandTotal",
2032
+ "gratuityTotal",
2033
+ "totalTips",
2034
+ "paymentsReceived",
2035
+ "paymentTypeName",
2036
+ "guestCount",
2037
+ "employeeName",
2038
+ "orderType",
2039
+ "tableName"
2040
+ ];
2041
+ var TICKET_LIVE_AVAILABLE_COLUMNS = ["orderNumber", ...TICKET_LIVE_VISIBLE_COLUMNS];
2042
+ var ticketLiveConfig = {
2043
+ fields: FIELDS4,
2044
+ availableColumns: TICKET_LIVE_AVAILABLE_COLUMNS,
2045
+ defaultVisibleColumns: TICKET_LIVE_VISIBLE_COLUMNS,
2046
+ hasFooter: true
2047
+ };
2175
2048
 
2176
- // src/translations/index.ts
2177
- var filterCrowdin = (messages) => Object.fromEntries(
2178
- Object.entries(messages).filter((entry) => typeof entry[1] === "string")
2179
- );
2180
- var LOCALE_OVERRIDES = {
2181
- "en-GB": filterCrowdin(en_GB_default),
2182
- "es-ES": filterCrowdin(es_ES_default)
2049
+ // src/reports/productMix.ts
2050
+ var FIELDS5 = {
2051
+ groupById: { type: "string" },
2052
+ groupByName: { type: "string", size: FIRST_COLUMN_WIDTH, footerCalculation: { type: "label", label: "table.total" } },
2053
+ salesAmountGross: { type: "money", columnKey: "grossSales" },
2054
+ discountsAmount: { type: "money", columnKey: "discountAmount" },
2055
+ inclusiveTaxesAmount: { type: "money", columnKey: "inclusiveTax" },
2056
+ salesAmountNet: { type: "money", columnKey: "netSales" },
2057
+ itemsQuantity: { type: "fixedNumber", columnKey: "quantity" },
2058
+ avgPrice: {
2059
+ type: "money",
2060
+ columnKey: "averageGrossPrice",
2061
+ footerCalculation: {
2062
+ type: "average",
2063
+ numeratorField: "salesAmountGross",
2064
+ denominatorField: "itemsQuantity"
2065
+ }
2066
+ },
2067
+ salesMixPct: { type: "percent", columnKey: "salesMixByPct" }
2183
2068
  };
2184
- function resolveTranslate(key, locale) {
2185
- const overrides = LOCALE_OVERRIDES[locale];
2186
- if (overrides) {
2187
- const override = overrides[key];
2188
- if (override !== void 0) {
2189
- return override;
2069
+ var PRODUCT_MIX_VISIBLE_COLUMNS = [
2070
+ "salesAmountGross",
2071
+ "itemsQuantity",
2072
+ "avgPrice",
2073
+ "discountsAmount",
2074
+ "inclusiveTaxesAmount",
2075
+ "salesAmountNet",
2076
+ "salesMixPct"
2077
+ ];
2078
+ var PRODUCT_MIX_AVAILABLE_COLUMNS = ["groupByName", ...PRODUCT_MIX_VISIBLE_COLUMNS];
2079
+ var productMixConfig = {
2080
+ fields: FIELDS5,
2081
+ availableColumns: PRODUCT_MIX_AVAILABLE_COLUMNS,
2082
+ defaultVisibleColumns: PRODUCT_MIX_VISIBLE_COLUMNS,
2083
+ chartFields: PRODUCT_MIX_VISIBLE_COLUMNS,
2084
+ hasFooter: true
2085
+ };
2086
+
2087
+ // src/reports/modifierMix.ts
2088
+ var FIELDS6 = {
2089
+ groupById: { type: "string", filteringAvailable: false },
2090
+ groupByName: {
2091
+ type: "string",
2092
+ size: FIRST_COLUMN_WIDTH,
2093
+ filteringAvailable: false,
2094
+ footerCalculation: { type: "label", label: "table.total" }
2095
+ },
2096
+ groupById2: { type: "string", filteringAvailable: false },
2097
+ groupByName2: {
2098
+ type: "string",
2099
+ size: FIRST_COLUMN_WIDTH,
2100
+ filteringAvailable: false,
2101
+ footerCalculation: { type: "none" }
2102
+ },
2103
+ modifiersSales: { type: "money", columnKey: "totalModifierSales" },
2104
+ modifiersQuantity: { type: "number", columnKey: "modifierQuantity" },
2105
+ itemsQuantity: {
2106
+ type: "number",
2107
+ columnKey: "quantity",
2108
+ filteringAvailable: false
2109
+ },
2110
+ avgGross: {
2111
+ type: "money",
2112
+ columnKey: "averageGrossPrice",
2113
+ footerCalculation: {
2114
+ type: "average",
2115
+ numeratorField: "modifiersSales",
2116
+ denominatorField: "modifiersQuantity"
2117
+ }
2118
+ },
2119
+ attachRate: {
2120
+ type: "percent",
2121
+ columnKey: "attachRate",
2122
+ footerCalculation: {
2123
+ type: "average",
2124
+ numeratorField: "modifiersQuantity",
2125
+ denominatorField: "itemsQuantity"
2126
+ }
2127
+ },
2128
+ modifiersSalesComp: { type: "money", filteringAvailable: false },
2129
+ modifiersQuantityComp: { type: "number", filteringAvailable: false },
2130
+ itemsQuantityComp: { type: "number", filteringAvailable: false },
2131
+ attachRateComp: { type: "percent", filteringAvailable: false },
2132
+ modifiersSalesVar: { type: "money", filteringAvailable: false },
2133
+ modifiersSalesVarPct: {
2134
+ type: "percent",
2135
+ filteringAvailable: false,
2136
+ footerCalculation: {
2137
+ type: "percentChange",
2138
+ numeratorField: "modifiersSales",
2139
+ denominatorField: "modifiersSalesComp"
2140
+ }
2141
+ },
2142
+ modifiersQuantityVar: { type: "number", filteringAvailable: false },
2143
+ modifiersQuantityVarPct: {
2144
+ type: "percent",
2145
+ filteringAvailable: false,
2146
+ footerCalculation: {
2147
+ type: "percentChange",
2148
+ numeratorField: "modifiersQuantity",
2149
+ denominatorField: "modifiersQuantityComp"
2150
+ }
2151
+ },
2152
+ attachRateVar: { type: "percent", filteringAvailable: false },
2153
+ attachRateVarPct: {
2154
+ type: "percent",
2155
+ filteringAvailable: false,
2156
+ footerCalculation: {
2157
+ type: "percentChange",
2158
+ numeratorField: "attachRate",
2159
+ denominatorField: "attachRateComp"
2190
2160
  }
2191
2161
  }
2192
- return en_US_default[key] ?? key;
2193
- }
2162
+ };
2163
+ var MODIFIER_MIX_VISIBLE_COLUMNS = ["modifiersSales", "modifiersQuantity", "avgGross"];
2164
+ var MODIFIER_MIX_AVAILABLE_COLUMNS = [
2165
+ "groupByName",
2166
+ "groupByName2",
2167
+ ...MODIFIER_MIX_VISIBLE_COLUMNS
2168
+ ];
2169
+ var modifierMixConfig = {
2170
+ fields: FIELDS6,
2171
+ chartFields: MODIFIER_MIX_VISIBLE_COLUMNS,
2172
+ availableColumns: MODIFIER_MIX_AVAILABLE_COLUMNS,
2173
+ defaultVisibleColumns: MODIFIER_MIX_VISIBLE_COLUMNS,
2174
+ hasFooter: true
2175
+ };
2176
+
2177
+ // src/reports/itemTax.ts
2178
+ var FIELDS7 = {
2179
+ locationId: { type: "number", filteringAvailable: false },
2180
+ taxIsFlat: { type: "boolean", filteringAvailable: false },
2181
+ merchantId: { type: "string", columnKey: "locationMid", filteringAvailable: false },
2182
+ locationName: { type: "string", columnKey: "locationName", filteringAvailable: false },
2183
+ locationCity: { type: "string", columnKey: "locationCity", filteringAvailable: false },
2184
+ locationState: { type: "string", columnKey: "locationState", filteringAvailable: false },
2185
+ itemName: { type: "string", columnKey: "itemName", filteringAvailable: false },
2186
+ itemPrice: { type: "money", columnKey: "itemPrice" },
2187
+ departmentName: { type: "string", columnKey: "department", filteringAvailable: false },
2188
+ revenueClassName: { type: "string", columnKey: "revenueClass", filteringAvailable: false },
2189
+ orderTypeName: { type: "string", columnKey: "orderType", filteringAvailable: false },
2190
+ taxName: { type: "string", columnKey: "taxName", filteringAvailable: false },
2191
+ taxValue: { type: "money", columnKey: "taxableSales" },
2192
+ taxRate: {
2193
+ type: "conditional",
2194
+ columnKey: "taxRate",
2195
+ conditionalConfiguration: {
2196
+ conditionalField: "taxIsFlat",
2197
+ conditionalFormat: (field) => {
2198
+ return field ? "money" : "percent";
2199
+ }
2200
+ }
2201
+ },
2202
+ recordsCount: { type: "number", columnKey: "quantity" },
2203
+ taxableSales: { type: "money", columnKey: "taxableSales" },
2204
+ totalCollected: { type: "money", columnKey: "totalCollected" },
2205
+ itemTax: { type: "money", columnKey: "taxCollected" },
2206
+ taxCollected: { type: "money", columnKey: "taxCollected" }
2207
+ };
2208
+ var ITEM_TAX_AVAILABLE_COLUMNS = [
2209
+ "merchantId",
2210
+ "locationName",
2211
+ "locationCity",
2212
+ "locationState",
2213
+ "itemName",
2214
+ "departmentName",
2215
+ "revenueClassName",
2216
+ "orderTypeName",
2217
+ "recordsCount",
2218
+ "itemPrice",
2219
+ "taxName",
2220
+ "taxRate",
2221
+ "taxableSales",
2222
+ "taxCollected"
2223
+ ];
2224
+ var itemTaxConfig = {
2225
+ fields: FIELDS7,
2226
+ availableColumns: ITEM_TAX_AVAILABLE_COLUMNS,
2227
+ defaultVisibleColumns: ITEM_TAX_AVAILABLE_COLUMNS,
2228
+ hasFooter: false
2229
+ };
2194
2230
 
2195
2231
  // src/reports/employeeTimecard.ts
2196
2232
  var EMPLOYEE_NAME_WIDTH = 220;
@@ -3577,6 +3613,11 @@ var COLUMN_REGISTRY = {
3577
3613
  titleKey: "common.report-col.total-pay",
3578
3614
  shortTitleKey: "common.report-col.total-pay.short",
3579
3615
  infoTextKey: "common.report-col.total-pay.info"
3616
+ },
3617
+ tableName: {
3618
+ titleKey: "common.report-col.table-name",
3619
+ shortTitleKey: "common.report-col.table-name.short",
3620
+ infoTextKey: "common.report-col.table-name.info"
3580
3621
  }
3581
3622
  };
3582
3623
  function getColumnMetadata(key) {
@@ -3807,12 +3848,12 @@ var formatFieldValue = (value, type, localeOptions, fullRecord, fieldConfig = DE
3807
3848
  export {
3808
3849
  salesByItemDetailConfig,
3809
3850
  salesSummaryConfig,
3851
+ resolveTranslate,
3810
3852
  ticketSummaryConfig,
3811
3853
  ticketLiveConfig,
3812
3854
  productMixConfig,
3813
3855
  modifierMixConfig,
3814
3856
  itemTaxConfig,
3815
- resolveTranslate,
3816
3857
  employeeTimecardConfig,
3817
3858
  employeeTipConfig,
3818
3859
  tipCashoutReconciliationConfig,