rerobe-js-orm 3.7.9 → 3.8.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/lib/constants/order-constants.d.ts +2 -0
- package/lib/constants/order-constants.js +2 -0
- package/lib/helpers/OrderHelpers.d.ts +2 -27
- package/lib/helpers/OrderHelpers.js +59 -12
- package/lib/models/Order.d.ts +2 -0
- package/lib/translations.d.ts +30 -0
- package/lib/translations.js +73 -0
- package/lib/types/rerobe-order-types.d.ts +34 -0
- package/package.json +1 -1
|
@@ -216,34 +216,9 @@ export default class OrderHelpers {
|
|
|
216
216
|
};
|
|
217
217
|
getPaymentTerminalReceiptInfo(payload?: any): PaymentTerminalReceiptInfo;
|
|
218
218
|
getFormattedFulfillmentLocation(order: ReRobeOrderObj): string;
|
|
219
|
+
generateReceiptLabels(locale: string, paymentMethod: string, entryMethod?: string): ReceiptLabels;
|
|
219
220
|
buildReceiptObjFromOrder({ order, merchant }: {
|
|
220
221
|
order: ReRobeOrderObj;
|
|
221
222
|
merchant: MerchantObj;
|
|
222
|
-
}):
|
|
223
|
-
aid: string;
|
|
224
|
-
tvr: string;
|
|
225
|
-
authorizationCode: string;
|
|
226
|
-
entryMode: string;
|
|
227
|
-
applicationName: string;
|
|
228
|
-
cardBrand: string;
|
|
229
|
-
lastFour: string;
|
|
230
|
-
referenceNumber: string;
|
|
231
|
-
merchantName: string;
|
|
232
|
-
storeAddress: string;
|
|
233
|
-
phone: string;
|
|
234
|
-
contactEmail: string;
|
|
235
|
-
organizationNumber: string | undefined;
|
|
236
|
-
primaryDomain: string;
|
|
237
|
-
orderDate: string;
|
|
238
|
-
lineItems: {
|
|
239
|
-
title: string;
|
|
240
|
-
price: string;
|
|
241
|
-
quantity: string | number;
|
|
242
|
-
showUnitPrice: boolean;
|
|
243
|
-
unitPrice: string;
|
|
244
|
-
}[];
|
|
245
|
-
subTotal: string;
|
|
246
|
-
amountPaid: string;
|
|
247
|
-
tax: string;
|
|
248
|
-
};
|
|
223
|
+
}): ReceiptObj;
|
|
249
224
|
}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const Order_1 = require("../models/Order");
|
|
4
4
|
const Utilities_1 = require("../helpers/Utilities");
|
|
5
|
+
const order_constants_1 = require("../constants/order-constants");
|
|
6
|
+
const translations_1 = require("../translations");
|
|
5
7
|
class OrderHelpers {
|
|
6
8
|
getOrderIdFromShopifyObj(order) {
|
|
7
9
|
const { id, tags } = order;
|
|
@@ -519,13 +521,37 @@ class OrderHelpers {
|
|
|
519
521
|
const location = (_a = fulfillmentLocations[0]) === null || _a === void 0 ? void 0 : _a.location;
|
|
520
522
|
return (0, Utilities_1.convertAddressInputToFormatted)(location);
|
|
521
523
|
}
|
|
524
|
+
generateReceiptLabels(locale, paymentMethod, entryMethod = '') {
|
|
525
|
+
let paymentMethodLabel = translations_1.cardPaymentTranslations[locale] || translations_1.cardPaymentTranslations['en-US'];
|
|
526
|
+
if (paymentMethod === order_constants_1.PAYMENT_TYPES.cash) {
|
|
527
|
+
paymentMethodLabel = translations_1.cashTranslations[locale] || translations_1.cashTranslations['en-US'];
|
|
528
|
+
}
|
|
529
|
+
if (paymentMethod === order_constants_1.PAYMENT_TYPES.mobilePayment) {
|
|
530
|
+
paymentMethodLabel = translations_1.mobilePaymentTranslations[locale] || translations_1.mobilePaymentTranslations['en-US'];
|
|
531
|
+
}
|
|
532
|
+
let entryMethodLabel = '';
|
|
533
|
+
const contactlessRegex = /contactless|kontaktlos|kontaktløs|kontaktlös|contact-less/i;
|
|
534
|
+
if (contactlessRegex.test(entryMethod)) {
|
|
535
|
+
entryMethodLabel = translations_1.contactlessTranslations[locale] || translations_1.contactlessTranslations['en-US'];
|
|
536
|
+
}
|
|
537
|
+
return {
|
|
538
|
+
receiptLabel: translations_1.receiptTranslations[locale] || translations_1.receiptTranslations['en-US'],
|
|
539
|
+
totalLabel: translations_1.totalTranslations[locale] || translations_1.totalTranslations['en-US'],
|
|
540
|
+
taxLabel: translations_1.taxTranslations[locale] || translations_1.taxTranslations['en-US'],
|
|
541
|
+
purchaseLabel: translations_1.purchaseTranslations[locale] || translations_1.purchaseTranslations['en-US'],
|
|
542
|
+
authorizationCodeLabel: translations_1.authorizationCodeTranslations[locale] || translations_1.authorizationCodeTranslations['en-US'],
|
|
543
|
+
referenceLabel: translations_1.referenceTranslations[locale] || translations_1.referenceTranslations['en-US'],
|
|
544
|
+
paymentMethodLabel,
|
|
545
|
+
entryMethodLabel,
|
|
546
|
+
};
|
|
547
|
+
}
|
|
522
548
|
buildReceiptObjFromOrder({ order, merchant }) {
|
|
523
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
524
|
-
const { address: merchantAddress, legalName, contactEmail, phone, organizationNumber, primaryDomain, currency: storeCurrencyCode, } = merchant;
|
|
549
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
550
|
+
const { address: merchantAddress, legalName, contactEmail, phone = '', organizationNumber = '', primaryDomain, currency: storeCurrencyCode, } = merchant;
|
|
525
551
|
const currencyCode = ((_a = order.totalPricePresentment) === null || _a === void 0 ? void 0 : _a.currencyCode) || storeCurrencyCode;
|
|
526
552
|
const presentmentLocale = (0, Utilities_1.getPresentmentLocaleByCurrencyCode)(currencyCode);
|
|
527
553
|
const mapLineItem = (l) => {
|
|
528
|
-
var _a, _b, _c;
|
|
554
|
+
var _a, _b, _c, _d;
|
|
529
555
|
let totalPrice = Number((_a = l.presentmentTotalPrice) === null || _a === void 0 ? void 0 : _a.amount);
|
|
530
556
|
if (l.isTaxable && l.taxRate) {
|
|
531
557
|
const taxRate = Number(l.taxRate);
|
|
@@ -538,11 +564,11 @@ class OrderHelpers {
|
|
|
538
564
|
amount: totalPrice,
|
|
539
565
|
fractionDigits: 2,
|
|
540
566
|
}),
|
|
541
|
-
quantity: l === null || l === void 0 ? void 0 : l.quantity,
|
|
567
|
+
quantity: Number((_b = l === null || l === void 0 ? void 0 : l.quantity) !== null && _b !== void 0 ? _b : 0),
|
|
542
568
|
showUnitPrice: Number(l === null || l === void 0 ? void 0 : l.quantity) > 1,
|
|
543
569
|
unitPrice: (0, Utilities_1.formatPrice)({
|
|
544
570
|
currencyCode,
|
|
545
|
-
amount: (
|
|
571
|
+
amount: (_d = (_c = l === null || l === void 0 ? void 0 : l.originalUnitPrice) === null || _c === void 0 ? void 0 : _c.amount) !== null && _d !== void 0 ? _d : '',
|
|
546
572
|
fractionDigits: 2,
|
|
547
573
|
}),
|
|
548
574
|
};
|
|
@@ -572,6 +598,27 @@ class OrderHelpers {
|
|
|
572
598
|
}
|
|
573
599
|
return result;
|
|
574
600
|
};
|
|
601
|
+
const taxRates = order.lineItems
|
|
602
|
+
.map((lineItem) => {
|
|
603
|
+
var _a;
|
|
604
|
+
if (lineItem.isTaxable) {
|
|
605
|
+
return {
|
|
606
|
+
taxRate: lineItem.taxRate,
|
|
607
|
+
taxAmount: ((_a = lineItem.taxAmountWithDiscount) === null || _a === void 0 ? void 0 : _a.amount) || 0,
|
|
608
|
+
};
|
|
609
|
+
}
|
|
610
|
+
return {};
|
|
611
|
+
})
|
|
612
|
+
.reduce((acc, cur) => {
|
|
613
|
+
if (cur.taxRate) {
|
|
614
|
+
if (!acc[cur.taxRate]) {
|
|
615
|
+
acc[cur.taxRate] = 0;
|
|
616
|
+
}
|
|
617
|
+
acc[cur.taxRate] += Number(cur.taxAmount);
|
|
618
|
+
acc[cur.taxRate] = parseFloat(acc[cur.taxRate].toFixed(2));
|
|
619
|
+
}
|
|
620
|
+
return acc;
|
|
621
|
+
}, {});
|
|
575
622
|
const buildStoreAddress = () => {
|
|
576
623
|
let address = this.getFormattedFulfillmentLocation(order);
|
|
577
624
|
if (!address) {
|
|
@@ -579,22 +626,22 @@ class OrderHelpers {
|
|
|
579
626
|
}
|
|
580
627
|
return address;
|
|
581
628
|
};
|
|
582
|
-
|
|
629
|
+
const paymentMethod = (_b = order.paymentMethod) !== null && _b !== void 0 ? _b : '';
|
|
630
|
+
return Object.assign(Object.assign({ merchantName: legalName, storeAddress: buildStoreAddress(), phone,
|
|
583
631
|
contactEmail,
|
|
584
|
-
organizationNumber,
|
|
585
|
-
primaryDomain, orderDate: (0, Utilities_1.getFormattedTimestamp)(presentmentLocale), lineItems: buildLineItems(), subTotal: (0, Utilities_1.formatPrice)({
|
|
632
|
+
organizationNumber, primaryDomain: `https://${primaryDomain}`, orderDate: (0, Utilities_1.getFormattedTimestamp)(presentmentLocale), lineItems: buildLineItems(), subTotal: (0, Utilities_1.formatPrice)({
|
|
586
633
|
currencyCode,
|
|
587
|
-
amount: (
|
|
634
|
+
amount: (_d = (_c = order.subtotalPricePresentment) === null || _c === void 0 ? void 0 : _c.amount) !== null && _d !== void 0 ? _d : '',
|
|
588
635
|
fractionDigits: 2,
|
|
589
636
|
}), amountPaid: (0, Utilities_1.formatPrice)({
|
|
590
637
|
currencyCode,
|
|
591
|
-
amount: (
|
|
638
|
+
amount: (_f = (_e = order.totalPricePresentment) === null || _e === void 0 ? void 0 : _e.amount) !== null && _f !== void 0 ? _f : '',
|
|
592
639
|
fractionDigits: 2,
|
|
593
640
|
}), tax: (0, Utilities_1.formatPrice)({
|
|
594
641
|
currencyCode,
|
|
595
|
-
amount: (
|
|
642
|
+
amount: (_h = (_g = order.totalTaxPresentment) === null || _g === void 0 ? void 0 : _g.amount) !== null && _h !== void 0 ? _h : '',
|
|
596
643
|
fractionDigits: 2,
|
|
597
|
-
}) }, this.getPaymentTerminalReceiptInfo(order));
|
|
644
|
+
}), taxRates }, this.generateReceiptLabels(presentmentLocale, paymentMethod)), this.getPaymentTerminalReceiptInfo(order));
|
|
598
645
|
}
|
|
599
646
|
}
|
|
600
647
|
exports.default = OrderHelpers;
|
package/lib/models/Order.d.ts
CHANGED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare const receiptTranslations: {
|
|
2
|
+
[key: string]: string;
|
|
3
|
+
};
|
|
4
|
+
export declare const totalTranslations: {
|
|
5
|
+
[key: string]: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const taxTranslations: {
|
|
8
|
+
[key: string]: string;
|
|
9
|
+
};
|
|
10
|
+
export declare const purchaseTranslations: {
|
|
11
|
+
[key: string]: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const cashTranslations: {
|
|
14
|
+
[key: string]: string;
|
|
15
|
+
};
|
|
16
|
+
export declare const cardPaymentTranslations: {
|
|
17
|
+
[key: string]: string;
|
|
18
|
+
};
|
|
19
|
+
export declare const mobilePaymentTranslations: {
|
|
20
|
+
[key: string]: string;
|
|
21
|
+
};
|
|
22
|
+
export declare const authorizationCodeTranslations: {
|
|
23
|
+
[key: string]: string;
|
|
24
|
+
};
|
|
25
|
+
export declare const contactlessTranslations: {
|
|
26
|
+
[key: string]: string;
|
|
27
|
+
};
|
|
28
|
+
export declare const referenceTranslations: {
|
|
29
|
+
[key: string]: string;
|
|
30
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.referenceTranslations = exports.contactlessTranslations = exports.authorizationCodeTranslations = exports.mobilePaymentTranslations = exports.cardPaymentTranslations = exports.cashTranslations = exports.purchaseTranslations = exports.taxTranslations = exports.totalTranslations = exports.receiptTranslations = void 0;
|
|
4
|
+
exports.receiptTranslations = {
|
|
5
|
+
'sv-SE': 'Kvitto',
|
|
6
|
+
'nb-NO': 'Kvittering',
|
|
7
|
+
'en-US': 'Receipt',
|
|
8
|
+
'en-UK': 'Receipt',
|
|
9
|
+
'en-DE': 'Quittung',
|
|
10
|
+
};
|
|
11
|
+
exports.totalTranslations = {
|
|
12
|
+
'sv-SE': 'Totalt',
|
|
13
|
+
'nb-NO': 'Total',
|
|
14
|
+
'en-US': 'Total',
|
|
15
|
+
'en-UK': 'Total',
|
|
16
|
+
'en-DE': 'Gesamt',
|
|
17
|
+
};
|
|
18
|
+
exports.taxTranslations = {
|
|
19
|
+
'sv-SE': 'Moms',
|
|
20
|
+
'nb-NO': 'MVA',
|
|
21
|
+
'en-US': 'Tax',
|
|
22
|
+
'en-UK': 'Tax',
|
|
23
|
+
'en-DE': 'MwSt',
|
|
24
|
+
};
|
|
25
|
+
exports.purchaseTranslations = {
|
|
26
|
+
'sv-SE': 'Köp',
|
|
27
|
+
'nb-NO': 'Kjøp',
|
|
28
|
+
'en-US': 'Purchase',
|
|
29
|
+
'en-UK': 'Purchase',
|
|
30
|
+
'en-DE': 'Kauf',
|
|
31
|
+
};
|
|
32
|
+
exports.cashTranslations = {
|
|
33
|
+
'sv-SE': 'Kontant',
|
|
34
|
+
'nb-NO': 'Kontant',
|
|
35
|
+
'en-US': 'Cash',
|
|
36
|
+
'en-UK': 'Cash',
|
|
37
|
+
'en-DE': 'Bar',
|
|
38
|
+
};
|
|
39
|
+
exports.cardPaymentTranslations = {
|
|
40
|
+
'sv-SE': 'Kortbetalning',
|
|
41
|
+
'nb-NO': 'Kortbetaling',
|
|
42
|
+
'en-US': 'Card Payment',
|
|
43
|
+
'en-UK': 'Card Payment',
|
|
44
|
+
'en-DE': 'Kartenzahlung',
|
|
45
|
+
};
|
|
46
|
+
exports.mobilePaymentTranslations = {
|
|
47
|
+
'sv-SE': 'Swish',
|
|
48
|
+
'nb-NO': 'Vipps',
|
|
49
|
+
'en-US': 'Mobile Payment',
|
|
50
|
+
'en-UK': 'Mobile Payment',
|
|
51
|
+
'en-DE': 'Mobiles Bezahlen',
|
|
52
|
+
};
|
|
53
|
+
exports.authorizationCodeTranslations = {
|
|
54
|
+
'sv-SE': 'Auktoriseringskod',
|
|
55
|
+
'nb-NO': 'Autorisasjonskode',
|
|
56
|
+
'en-US': 'Authorization Code',
|
|
57
|
+
'en-UK': 'Authorization Code',
|
|
58
|
+
'en-DE': 'Autorisierungscode',
|
|
59
|
+
};
|
|
60
|
+
exports.contactlessTranslations = {
|
|
61
|
+
'sv-SE': 'Kontaktlös',
|
|
62
|
+
'nb-NO': 'Kontaktløs',
|
|
63
|
+
'en-US': 'Contactless',
|
|
64
|
+
'en-UK': 'Contactless',
|
|
65
|
+
'en-DE': 'Kontaktlos',
|
|
66
|
+
};
|
|
67
|
+
exports.referenceTranslations = {
|
|
68
|
+
'sv-SE': 'Referens',
|
|
69
|
+
'nb-NO': 'Referanse',
|
|
70
|
+
'en-US': 'Reference',
|
|
71
|
+
'en-UK': 'Reference',
|
|
72
|
+
'en-DE': 'Referenz',
|
|
73
|
+
};
|
|
@@ -39,6 +39,40 @@ interface PaymentTerminalReceiptInfo {
|
|
|
39
39
|
lastFour: string;
|
|
40
40
|
referenceNumber: string;
|
|
41
41
|
}
|
|
42
|
+
type ReceiptLineItem = {
|
|
43
|
+
title: string;
|
|
44
|
+
price: string;
|
|
45
|
+
showUnitPrice: boolean;
|
|
46
|
+
quantity: number;
|
|
47
|
+
unitPrice: string;
|
|
48
|
+
};
|
|
49
|
+
interface ReceiptLabels {
|
|
50
|
+
receiptLabel: string;
|
|
51
|
+
totalLabel: string;
|
|
52
|
+
taxLabel: string;
|
|
53
|
+
purchaseLabel: string;
|
|
54
|
+
paymentMethodLabel: string;
|
|
55
|
+
entryMethodLabel: string;
|
|
56
|
+
authorizationCodeLabel: string;
|
|
57
|
+
referenceLabel: string;
|
|
58
|
+
}
|
|
59
|
+
type ReceiptLabelsAndPaymentTerminalInfo = ReceiptLabels & PaymentTerminalReceiptInfo;
|
|
60
|
+
interface ReceiptObj extends ReceiptLabelsAndPaymentTerminalInfo {
|
|
61
|
+
merchantName: string;
|
|
62
|
+
storeAddress: string;
|
|
63
|
+
phone: string;
|
|
64
|
+
contactEmail: string;
|
|
65
|
+
organizationNumber: string;
|
|
66
|
+
primaryDomain: string;
|
|
67
|
+
orderDate: string;
|
|
68
|
+
lineItems: ReceiptLineItem[];
|
|
69
|
+
subTotal: string;
|
|
70
|
+
amountPaid: string;
|
|
71
|
+
tax: string;
|
|
72
|
+
taxRates: {
|
|
73
|
+
[key: number]: number;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
42
76
|
type ReRobeOrderObj = {
|
|
43
77
|
id: string;
|
|
44
78
|
appliedDiscount: AppliedDiscount;
|