@aptos-scp/scp-component-store-selling-features-domain-model 2.16.0 → 2.18.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.
Files changed (25) hide show
  1. package/lib/domain/UIBusinessEventTypes.d.ts +3 -0
  2. package/lib/domain/UIBusinessEventTypes.js +3 -0
  3. package/lib/domain/model/Constants.d.ts +6 -0
  4. package/lib/domain/model/Constants.js +6 -0
  5. package/lib/domain/model/configuration/IDiscountAttributesConfig .d.ts +1 -0
  6. package/lib/domain/model/discounts/IRewardCardDiscountLine.d.ts +23 -0
  7. package/lib/domain/model/discounts/IRewardCardDiscountLine.js +3 -0
  8. package/lib/domain/model/discounts/RewardCardDiscountLine.d.ts +50 -0
  9. package/lib/domain/model/discounts/RewardCardDiscountLine.js +103 -0
  10. package/lib/domain/model/discounts/RewardCardDiscountLineDecorator.d.ts +32 -0
  11. package/lib/domain/model/discounts/RewardCardDiscountLineDecorator.js +94 -0
  12. package/lib/domain/model/discounts/RewardCardDiscountLineTotalDecorator.d.ts +28 -0
  13. package/lib/domain/model/discounts/RewardCardDiscountLineTotalDecorator.js +63 -0
  14. package/lib/domain/model/discounts/VoidedRewardCardDiscountLineDecorator.d.ts +27 -0
  15. package/lib/domain/model/discounts/VoidedRewardCardDiscountLineDecorator.js +61 -0
  16. package/lib/domain/model/discounts/index.d.ts +5 -0
  17. package/lib/domain/model/discounts/index.js +4 -0
  18. package/lib/domain/model/discounts/lineTypes.d.ts +3 -0
  19. package/lib/domain/model/discounts/lineTypes.js +11 -1
  20. package/lib/domain/model/item/ISerializedPriceCalculationResultsWithSource.d.ts +2 -1
  21. package/lib/domain/model/item/ItemLineRewardCardDiscountDecorator.d.ts +30 -0
  22. package/lib/domain/model/item/ItemLineRewardCardDiscountDecorator.js +123 -0
  23. package/lib/domain/model/item/index.d.ts +1 -0
  24. package/lib/domain/model/item/index.js +1 -0
  25. package/package.json +6 -6
@@ -76,6 +76,9 @@ export declare const MANUAL_TRANSACTION_DISCOUNT_EVENT: string;
76
76
  export declare const PERMANENT_MEMBERSHIP_DISCOUNT_EVENT: string;
77
77
  export declare const ADD_EMPLOYEE_CUSTOMER_EVENT: string;
78
78
  export declare const REWARD_CARD_DISCOUNT_EVENT: string;
79
+ export declare const RESET_REWARD_CARD_BALANCE_INQUIRY_EVENT: string;
80
+ export declare const APPLY_REWARD_CARD_EVENT: string;
81
+ export declare const VOID_REWARD_CARD_EVENT: string;
79
82
  export declare const APPLY_EMPLOYEE_CUSTOMER_DISCOUNT_EVENT = "ApplyEmployeeCustomerDiscount";
80
83
  export declare const MODIFY_EMPLOYEE_MANUAL_DISCOUNT_EVENT: string;
81
84
  export declare const MODIFY_ITEM_MANUAL_DISCOUNT_EVENT: string;
@@ -79,6 +79,9 @@ exports.MANUAL_TRANSACTION_DISCOUNT_EVENT = "ManualTransactionDiscount";
79
79
  exports.PERMANENT_MEMBERSHIP_DISCOUNT_EVENT = "PermanentMembershipDiscount";
80
80
  exports.ADD_EMPLOYEE_CUSTOMER_EVENT = "AddEmployeeCustomer";
81
81
  exports.REWARD_CARD_DISCOUNT_EVENT = "RewardCardDiscount";
82
+ exports.RESET_REWARD_CARD_BALANCE_INQUIRY_EVENT = "ResetRewardCardBalanceInquiryDiscount";
83
+ exports.APPLY_REWARD_CARD_EVENT = "ApplyRewardCard";
84
+ exports.VOID_REWARD_CARD_EVENT = "VoidRewardCard";
82
85
  exports.APPLY_EMPLOYEE_CUSTOMER_DISCOUNT_EVENT = "ApplyEmployeeCustomerDiscount";
83
86
  exports.MODIFY_EMPLOYEE_MANUAL_DISCOUNT_EVENT = "ModifyEmployeeManualDiscount";
84
87
  exports.MODIFY_ITEM_MANUAL_DISCOUNT_EVENT = "ModifyItemManualDiscount";
@@ -163,6 +163,7 @@ export declare enum UiInputKey {
163
163
  FISCAL_ID = "fiscalId",
164
164
  FOREIGN_TENDER_AMOUNT = "input_foreignTenderAmount",
165
165
  FORFEIT_TENDER_CHANGE_CONFIRMATION = "input_forfeitTenderChange",
166
+ REWARD_CARD_CONFIG = "input_rewardCardConfig",
166
167
  REDEEM_CARD_NUMBER = "input_redeemCardNumber",
167
168
  REDEEMED_REDEMPTIONS = "input_redeemedRedemptions",
168
169
  LOYALTY_PLANS = "input_loyaltyPlans",
@@ -624,6 +625,11 @@ export declare enum CollectedDataKey {
624
625
  FormOfProofCode = "formOfProofCode",
625
626
  CustomCompetitorName = "customCompetitorName",
626
627
  CustomFormOfProof = "customFormOfProof",
628
+ DiscountLevel = "discountLevel",
629
+ RewardPrintedName = "rewardPrintedName",
630
+ RewardPrintedNumberLabel = "rewardPrintedNumberLabel",
631
+ AutoPopulateCardNumberFromCustomer = "autoPopulateCardNumberFromCustomer",
632
+ RewardCardName = "rewardCardName",
627
633
  IsCompetitivePriceDiscount = "isCompetitivePriceDiscount",
628
634
  NextTransactionNumber = "nextTransactionNumber",
629
635
  Offline = "offline",
@@ -164,6 +164,7 @@ var UiInputKey;
164
164
  UiInputKey["FISCAL_ID"] = "fiscalId";
165
165
  UiInputKey["FOREIGN_TENDER_AMOUNT"] = "input_foreignTenderAmount";
166
166
  UiInputKey["FORFEIT_TENDER_CHANGE_CONFIRMATION"] = "input_forfeitTenderChange";
167
+ UiInputKey["REWARD_CARD_CONFIG"] = "input_rewardCardConfig";
167
168
  UiInputKey["REDEEM_CARD_NUMBER"] = "input_redeemCardNumber";
168
169
  UiInputKey["REDEEMED_REDEMPTIONS"] = "input_redeemedRedemptions";
169
170
  UiInputKey["LOYALTY_PLANS"] = "input_loyaltyPlans";
@@ -631,6 +632,11 @@ var CollectedDataKey;
631
632
  CollectedDataKey["FormOfProofCode"] = "formOfProofCode";
632
633
  CollectedDataKey["CustomCompetitorName"] = "customCompetitorName";
633
634
  CollectedDataKey["CustomFormOfProof"] = "customFormOfProof";
635
+ CollectedDataKey["DiscountLevel"] = "discountLevel";
636
+ CollectedDataKey["RewardPrintedName"] = "rewardPrintedName";
637
+ CollectedDataKey["RewardPrintedNumberLabel"] = "rewardPrintedNumberLabel";
638
+ CollectedDataKey["AutoPopulateCardNumberFromCustomer"] = "autoPopulateCardNumberFromCustomer";
639
+ CollectedDataKey["RewardCardName"] = "rewardCardName";
634
640
  CollectedDataKey["IsCompetitivePriceDiscount"] = "isCompetitivePriceDiscount";
635
641
  CollectedDataKey["NextTransactionNumber"] = "nextTransactionNumber";
636
642
  CollectedDataKey["Offline"] = "offline";
@@ -38,4 +38,5 @@ export interface IRewardCardAvailable {
38
38
  }
39
39
  export interface IRewardCardDiscount extends IDiscountDefinition {
40
40
  rewardCardsAvailable: IRewardCardAvailable[];
41
+ discountType?: string;
41
42
  }
@@ -0,0 +1,23 @@
1
+ import { Money } from "@aptos-scp/scp-component-business-core";
2
+ import { IAuthorizationResponse } from "@aptos-scp/scp-types-commerce-devices";
3
+ import { ManualDiscountLevel } from "../configuration";
4
+ import { TenderType } from "../TenderType";
5
+ import { IManualDiscountLine } from "./IManualDiscountLine";
6
+ export interface IRewardCardDiscountLine extends IManualDiscountLine {
7
+ readonly cardNumber: string;
8
+ readonly discountLevel: ManualDiscountLevel;
9
+ readonly rewardPrintedName: string;
10
+ readonly rewardPrintedNumberLabel: string;
11
+ readonly rewardCardName: string;
12
+ readonly autoPopulateCardNumberFromCustomer: boolean;
13
+ readonly pin: string;
14
+ /**
15
+ * The tenderId is the id of the tender associated with reward card authorization
16
+ */
17
+ readonly tenderId: string;
18
+ readonly authResponse: IAuthorizationResponse;
19
+ readonly tenderAmount: Money;
20
+ readonly tenderType: TenderType;
21
+ readonly authorizationDeviceId: string;
22
+ readonly isAuthorized: boolean;
23
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IRewardCardDiscountLine.js.map
@@ -0,0 +1,50 @@
1
+ import { Money, Price } from "@aptos-scp/scp-component-business-core";
2
+ import { UiBusinessEvent } from "@aptos-scp/scp-component-store-selling-core";
3
+ import { DiscountEntryType, ITransactionLineReferenceType, ManualDiscountType } from "@aptos-scp/scp-types-commerce-transaction";
4
+ import { IAuthorizationResponse } from "@aptos-scp/scp-types-commerce-devices";
5
+ import { BaseTransactionLine } from "../BaseTransactionLine";
6
+ import { ManualDiscountLevel } from "../configuration";
7
+ import { TenderType } from "../TenderType";
8
+ import { BaseManualDiscountLine } from "./BaseManualDiscountLine";
9
+ import { IRewardCardDiscountLine } from "./IRewardCardDiscountLine";
10
+ export declare class RewardCardDiscountLine extends BaseManualDiscountLine implements IRewardCardDiscountLine {
11
+ private _cardNumber;
12
+ private _discountLevel;
13
+ private _rewardPrintedName;
14
+ private _rewardPrintedNumberLabel;
15
+ private _rewardCardName;
16
+ private _autoPopulateCardNumberFromCustomer;
17
+ private _pin;
18
+ /**
19
+ * The tenderId is the id of the tender associated with reward card authorization
20
+ */
21
+ private _tenderId;
22
+ /**
23
+ * The create method is called by the transaction line factory to create an instance and initialize it from the
24
+ * data collected during the qualification process.
25
+ *
26
+ * @param {number} lineNumber The line number of this line in the transaction
27
+ * @param {string} lineType The type of line
28
+ * @param {UiBusinessEvent} uiBusinessEvent The UI business event that led to the creation of this line
29
+ * @param {Readonly<Map<string, any>>} collectedData The data collected during the qualification process
30
+ *
31
+ * @return {RewardCardDiscountLine}
32
+ */
33
+ static create(lineNumber: number, lineType: string, uiBusinessEvent: UiBusinessEvent, collectedData: Readonly<Map<string, any>>): RewardCardDiscountLine;
34
+ static createFromJsonObject(transactionLineJsonObj: any): RewardCardDiscountLine;
35
+ get discountLevel(): ManualDiscountLevel;
36
+ get autoPopulateCardNumberFromCustomer(): boolean;
37
+ get cardNumber(): string;
38
+ get rewardPrintedName(): string;
39
+ get rewardCardName(): string;
40
+ get rewardPrintedNumberLabel(): string;
41
+ get tenderId(): string;
42
+ get pin(): string;
43
+ get authResponse(): IAuthorizationResponse;
44
+ get tenderAmount(): Money;
45
+ get tenderType(): TenderType;
46
+ get authorizationDeviceId(): string;
47
+ get isAuthorized(): boolean;
48
+ protected constructor(lineNumber: number, lineType: string, discountType: ManualDiscountType, discountLevel: ManualDiscountLevel, rewardPrintedName: string, rewardPrintedNumberLabel: string, rewardCardName: string, autoPopulateCardNumberFromCustomer: boolean, tenderId: string, pin: string, cardNumber: string, pricingRuleId?: string, amount?: Money, percent?: string, replacementUnitPrice?: Price, reasonCode?: string, reasonDesc?: string, reasonType?: string, couponCode?: string, supervisorOverrideLineReference?: ITransactionLineReferenceType, isEmployeeDiscount?: boolean, isFastDiscount?: boolean, competitivePrice?: Price, competitor?: string, formOfProof?: string, customCompetitorName?: string, customFormOfProof?: string, competitorCode?: string, formOfProofCode?: string, entryType?: DiscountEntryType);
49
+ protected newTransactionLine(): BaseTransactionLine;
50
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const BaseTransactionLine_1 = require("../BaseTransactionLine");
4
+ const Constants_1 = require("../Constants");
5
+ const BaseManualDiscountLine_1 = require("./BaseManualDiscountLine");
6
+ class RewardCardDiscountLine extends BaseManualDiscountLine_1.BaseManualDiscountLine {
7
+ // Since the constructor is only called from the create methods it is made protected to prevent use by others.
8
+ constructor(lineNumber, lineType, discountType, discountLevel, rewardPrintedName, rewardPrintedNumberLabel, rewardCardName, autoPopulateCardNumberFromCustomer, tenderId, pin, cardNumber, pricingRuleId, amount, percent, replacementUnitPrice, reasonCode, reasonDesc, reasonType, couponCode, supervisorOverrideLineReference, isEmployeeDiscount, isFastDiscount, competitivePrice, competitor, formOfProof, customCompetitorName, customFormOfProof, competitorCode, formOfProofCode, entryType) {
9
+ super(lineNumber, lineType, discountType, pricingRuleId, amount, percent, replacementUnitPrice, reasonCode, reasonDesc, reasonType, couponCode, supervisorOverrideLineReference, isEmployeeDiscount, isFastDiscount, false, competitivePrice, competitor, formOfProof, customCompetitorName, customFormOfProof, competitorCode, formOfProofCode, entryType);
10
+ this._discountLevel = discountLevel;
11
+ this._rewardPrintedName = rewardPrintedName;
12
+ this._rewardCardName = rewardCardName;
13
+ this._rewardPrintedNumberLabel = rewardPrintedNumberLabel;
14
+ this._tenderId = tenderId;
15
+ this._pin = pin;
16
+ this._cardNumber = cardNumber;
17
+ }
18
+ /**
19
+ * The create method is called by the transaction line factory to create an instance and initialize it from the
20
+ * data collected during the qualification process.
21
+ *
22
+ * @param {number} lineNumber The line number of this line in the transaction
23
+ * @param {string} lineType The type of line
24
+ * @param {UiBusinessEvent} uiBusinessEvent The UI business event that led to the creation of this line
25
+ * @param {Readonly<Map<string, any>>} collectedData The data collected during the qualification process
26
+ *
27
+ * @return {RewardCardDiscountLine}
28
+ */
29
+ static create(lineNumber, lineType, uiBusinessEvent, collectedData) {
30
+ const discountLevel = collectedData.get(Constants_1.CollectedDataKey.DiscountLevel);
31
+ const rewardPrintedName = collectedData.get(Constants_1.CollectedDataKey.RewardPrintedName);
32
+ const rewardPrintedNumberLabel = collectedData.get(Constants_1.CollectedDataKey.RewardPrintedNumberLabel);
33
+ const autoPopulateCardNumberFromCustomer = collectedData.get(Constants_1.CollectedDataKey.AutoPopulateCardNumberFromCustomer);
34
+ const tenderId = collectedData.get(Constants_1.CollectedDataKey.TenderId);
35
+ const pin = collectedData.get(Constants_1.CollectedDataKey.GiftCardPin);
36
+ const cardNumber = collectedData.get(Constants_1.CollectedDataKey.CardNumber);
37
+ const rewardCardName = collectedData.get(Constants_1.CollectedDataKey.RewardCardName);
38
+ const discountType = BaseManualDiscountLine_1.BaseManualDiscountLine.discountTypeFromCollectedData(collectedData);
39
+ const discountLine = new RewardCardDiscountLine(lineNumber, lineType, discountType, discountLevel, rewardPrintedName, rewardPrintedNumberLabel, rewardCardName, autoPopulateCardNumberFromCustomer, tenderId, pin, cardNumber);
40
+ discountLine.loadFromCollectedData(collectedData);
41
+ return discountLine;
42
+ }
43
+ static createFromJsonObject(transactionLineJsonObj) {
44
+ const lineNumber = BaseTransactionLine_1.BaseTransactionLine.lineNumberFromJsonObject(transactionLineJsonObj);
45
+ const lineType = BaseTransactionLine_1.BaseTransactionLine.lineTypeFromJsonObject(transactionLineJsonObj);
46
+ const discountType = BaseManualDiscountLine_1.BaseManualDiscountLine.discountTypeFromJsonObject(transactionLineJsonObj);
47
+ const discountLevel = transactionLineJsonObj._discountLevel;
48
+ const rewardPrintedName = transactionLineJsonObj._rewardPrintedName;
49
+ const rewardCardName = transactionLineJsonObj._rewardCardName;
50
+ const rewardPrintedNumberLabel = transactionLineJsonObj._rewardPrintedNumberLabel;
51
+ const autoPopulateCardNumberFromCustomer = transactionLineJsonObj._autoPopulateCardNumberFromCustomer;
52
+ const tenderId = transactionLineJsonObj._tenderId;
53
+ const pin = transactionLineJsonObj._pin;
54
+ const cardNumber = transactionLineJsonObj._cardNumber;
55
+ const discountLine = new RewardCardDiscountLine(lineNumber, lineType, discountType, discountLevel, rewardPrintedName, rewardPrintedNumberLabel, rewardCardName, autoPopulateCardNumberFromCustomer, tenderId, pin, cardNumber);
56
+ discountLine.loadFromJsonObject(transactionLineJsonObj);
57
+ return discountLine;
58
+ }
59
+ get discountLevel() {
60
+ return this._discountLevel;
61
+ }
62
+ get autoPopulateCardNumberFromCustomer() {
63
+ return this._autoPopulateCardNumberFromCustomer;
64
+ }
65
+ get cardNumber() {
66
+ return this._cardNumber;
67
+ }
68
+ get rewardPrintedName() {
69
+ return this._rewardPrintedName;
70
+ }
71
+ get rewardCardName() {
72
+ return this._rewardCardName;
73
+ }
74
+ get rewardPrintedNumberLabel() {
75
+ return this._rewardPrintedNumberLabel;
76
+ }
77
+ get tenderId() {
78
+ return this._tenderId;
79
+ }
80
+ get pin() {
81
+ return this._pin;
82
+ }
83
+ get authResponse() {
84
+ return undefined;
85
+ }
86
+ get tenderAmount() {
87
+ return undefined;
88
+ }
89
+ get tenderType() {
90
+ return undefined;
91
+ }
92
+ get authorizationDeviceId() {
93
+ return undefined;
94
+ }
95
+ get isAuthorized() {
96
+ return false;
97
+ }
98
+ newTransactionLine() {
99
+ return new RewardCardDiscountLine(this.lineNumber, this.lineType, this._discountType, this._discountLevel, this._rewardPrintedName, this._rewardPrintedNumberLabel, this._rewardCardName, this._autoPopulateCardNumberFromCustomer, this._tenderId, this._pin, this._cardNumber, this._pricingRuleId, this._amount, this._percent, this._replacementUnitPrice, this._reasonCode, this._reasonDescription, this._reasonListType, this._couponCode, this._supervisorOverrideLineReference, this._isEmployeeDiscount, this._isFastDiscount, this._competitivePrice, this._competitor, this._formOfProof, this._customCompetitorName, this._customFormOfProof, this._competitorCode, this._formOfProofCode, this._entryType);
100
+ }
101
+ }
102
+ exports.RewardCardDiscountLine = RewardCardDiscountLine;
103
+ //# sourceMappingURL=RewardCardDiscountLine.js.map
@@ -0,0 +1,32 @@
1
+ import { Money } from "@aptos-scp/scp-component-business-core";
2
+ import { ITransactionLine, ITransactionLineFactory } from "@aptos-scp/scp-component-store-selling-core";
3
+ import { IAuthorizationResponse } from "@aptos-scp/scp-types-commerce-devices";
4
+ import { TenderType } from "../TenderType";
5
+ import { BaseManualDiscountLineDecorator } from "./BaseManualDiscountLineDecorator";
6
+ import { IRewardCardDiscountLine } from "./IRewardCardDiscountLine";
7
+ import { ManualDiscountLevel } from "../configuration";
8
+ export declare const DECORATOR_TYPE_REWARD_CARD_DISCOUNT: string;
9
+ export declare function isRewardCardDiscountDecorator(transactionLine: ITransactionLine): transactionLine is RewardCardDiscountLineDecorator;
10
+ export declare class RewardCardDiscountLineDecorator extends BaseManualDiscountLineDecorator implements IRewardCardDiscountLine {
11
+ private _authResponse;
12
+ private _tenderAmount;
13
+ private _tenderType;
14
+ private _authorizationDeviceId;
15
+ static createFromJsonObject(transactionLineJsonObj: any, transactionLineFactory: ITransactionLineFactory): RewardCardDiscountLineDecorator;
16
+ constructor(manualDiscountLine: IRewardCardDiscountLine, annotationSourceLineNumber: number, authResponse: IAuthorizationResponse, tenderAmount: Money, tenderType: TenderType, authorizationDeviceId: string);
17
+ get discountLevel(): ManualDiscountLevel;
18
+ get autoPopulateCardNumberFromCustomer(): boolean;
19
+ get cardNumber(): string;
20
+ get rewardPrintedName(): string;
21
+ get rewardCardName(): string;
22
+ get rewardPrintedNumberLabel(): string;
23
+ get tenderId(): string;
24
+ get pin(): string;
25
+ get authResponse(): IAuthorizationResponse;
26
+ get tenderAmount(): Money;
27
+ get tenderType(): TenderType;
28
+ get authorizationDeviceId(): string;
29
+ get isAuthorized(): boolean;
30
+ protected clone(): RewardCardDiscountLineDecorator;
31
+ protected newTransactionLine(): RewardCardDiscountLineDecorator;
32
+ }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const scp_component_business_core_1 = require("@aptos-scp/scp-component-business-core");
4
+ const TenderType_1 = require("../TenderType");
5
+ const BaseManualDiscountLineDecorator_1 = require("./BaseManualDiscountLineDecorator");
6
+ const ANNOTATION_SOURCE_TYPE = "RewardCard";
7
+ exports.DECORATOR_TYPE_REWARD_CARD_DISCOUNT = "REWARD_CARD_DISCOUNT_DECORATOR";
8
+ function isRewardCardDiscountDecorator(transactionLine) {
9
+ return (transactionLine.lineDecoratorType ===
10
+ exports.DECORATOR_TYPE_REWARD_CARD_DISCOUNT);
11
+ }
12
+ exports.isRewardCardDiscountDecorator = isRewardCardDiscountDecorator;
13
+ class RewardCardDiscountLineDecorator extends BaseManualDiscountLineDecorator_1.BaseManualDiscountLineDecorator {
14
+ constructor(manualDiscountLine, annotationSourceLineNumber, authResponse, tenderAmount, tenderType, authorizationDeviceId) {
15
+ super(exports.DECORATOR_TYPE_REWARD_CARD_DISCOUNT, manualDiscountLine, undefined, ANNOTATION_SOURCE_TYPE, annotationSourceLineNumber);
16
+ this._authResponse = authResponse;
17
+ this._tenderAmount = tenderAmount;
18
+ this._tenderType = tenderType;
19
+ this._authorizationDeviceId = authorizationDeviceId;
20
+ }
21
+ static createFromJsonObject(transactionLineJsonObj, transactionLineFactory) {
22
+ const decoratedTransactionLineJsonObj = BaseManualDiscountLineDecorator_1.BaseManualDiscountLineDecorator.getDecoratedTransactionLineJsonObjectFromJsonObject(transactionLineJsonObj);
23
+ const decoratedItemLine = transactionLineFactory.createTransactionLineFromJsonObj(decoratedTransactionLineJsonObj);
24
+ const annotationSourceLineNumber = BaseManualDiscountLineDecorator_1.BaseManualDiscountLineDecorator.getAnnotationSourceLineNumberFromJsonObject(transactionLineJsonObj);
25
+ const authResponse = transactionLineJsonObj._authResponse;
26
+ if (transactionLineJsonObj._authResponse) {
27
+ if (transactionLineJsonObj._authResponse.balance) {
28
+ authResponse.balance = new scp_component_business_core_1.Money(transactionLineJsonObj._authResponse.balance);
29
+ }
30
+ if (transactionLineJsonObj._authResponse.amount) {
31
+ authResponse.amount = new scp_component_business_core_1.Money(transactionLineJsonObj._authResponse.amount);
32
+ }
33
+ if (transactionLineJsonObj._authResponse.approvedAmount) {
34
+ authResponse.approvedAmount = new scp_component_business_core_1.Money(transactionLineJsonObj._authResponse.approvedAmount);
35
+ }
36
+ }
37
+ const tenderAmount = new scp_component_business_core_1.Money(transactionLineJsonObj._tenderAmount);
38
+ const tenderType = TenderType_1.TenderType.createFromJsonObject(transactionLineJsonObj._tenderType);
39
+ const authorizationDeviceId = transactionLineJsonObj._authorizationDeviceId;
40
+ return new RewardCardDiscountLineDecorator(decoratedItemLine, annotationSourceLineNumber, authResponse, tenderAmount, tenderType, authorizationDeviceId);
41
+ }
42
+ get discountLevel() {
43
+ return this.decoratedTransactionLine.discountLevel;
44
+ }
45
+ get autoPopulateCardNumberFromCustomer() {
46
+ return this.decoratedTransactionLine.autoPopulateCardNumberFromCustomer;
47
+ }
48
+ get cardNumber() {
49
+ return this.decoratedTransactionLine.cardNumber;
50
+ }
51
+ get rewardPrintedName() {
52
+ return this.decoratedTransactionLine.rewardPrintedName;
53
+ }
54
+ get rewardCardName() {
55
+ return this.decoratedTransactionLine.rewardCardName;
56
+ }
57
+ get rewardPrintedNumberLabel() {
58
+ return this.decoratedTransactionLine.rewardPrintedNumberLabel;
59
+ }
60
+ get tenderId() {
61
+ return this.decoratedTransactionLine.tenderId;
62
+ }
63
+ get pin() {
64
+ return this.decoratedTransactionLine.pin;
65
+ }
66
+ get authResponse() {
67
+ return this._authResponse;
68
+ }
69
+ get tenderAmount() {
70
+ return this._tenderAmount;
71
+ }
72
+ get tenderType() {
73
+ return this._tenderType;
74
+ }
75
+ get authorizationDeviceId() {
76
+ return this._authorizationDeviceId;
77
+ }
78
+ get isAuthorized() {
79
+ return !!this._authResponse;
80
+ }
81
+ clone() {
82
+ const newRewardCardRedeemDecorator = super.clone();
83
+ newRewardCardRedeemDecorator._authResponse = this._authResponse;
84
+ newRewardCardRedeemDecorator._tenderAmount = this._tenderAmount;
85
+ newRewardCardRedeemDecorator._tenderType = this._tenderType;
86
+ newRewardCardRedeemDecorator._authorizationDeviceId = this._authorizationDeviceId;
87
+ return newRewardCardRedeemDecorator;
88
+ }
89
+ newTransactionLine() {
90
+ return new RewardCardDiscountLineDecorator(this.decoratedTransactionLine, this.annotationSourceLineNumber, this._authResponse, this._tenderAmount, this._tenderType, this._authorizationDeviceId);
91
+ }
92
+ }
93
+ exports.RewardCardDiscountLineDecorator = RewardCardDiscountLineDecorator;
94
+ //# sourceMappingURL=RewardCardDiscountLineDecorator.js.map
@@ -0,0 +1,28 @@
1
+ import { Money } from "@aptos-scp/scp-component-business-core";
2
+ import { ITransactionLineFactory } from "@aptos-scp/scp-component-store-selling-core";
3
+ import { IAuthorizationResponse } from "@aptos-scp/scp-types-commerce-devices";
4
+ import { ManualDiscountLevel } from "../configuration";
5
+ import { TenderType } from "../TenderType";
6
+ import { IManualDiscountLine } from "./IManualDiscountLine";
7
+ import { ManualDiscountLineTotalDecorator } from "./ManualDiscountLineTotalDecorator";
8
+ import { IRewardCardDiscountLine } from "./IRewardCardDiscountLine";
9
+ export declare const DECORATOR_TYPE_REWARD_CARD_DISCOUNT_TOTAL: string;
10
+ export declare const REWARD_CARD_TOTAL_DISCOUNT_ANNOTATION_SOURCE: string;
11
+ export declare class RewardCardDiscountLineTotalDecorator extends ManualDiscountLineTotalDecorator implements IRewardCardDiscountLine {
12
+ static createFromJsonObject(transactionLineJsonObj: any, transactionLineFactory: ITransactionLineFactory): RewardCardDiscountLineTotalDecorator;
13
+ constructor(decoratorLineType: string, decoratedTransactionLine: IManualDiscountLine, totalDiscount: Money, annotationSourceLineNumber?: number);
14
+ get discountLevel(): ManualDiscountLevel;
15
+ get rewardPrintedName(): string;
16
+ get rewardPrintedNumberLabel(): string;
17
+ get cardNumber(): string;
18
+ get rewardCardName(): string;
19
+ get tenderId(): string;
20
+ get pin(): string;
21
+ get autoPopulateCardNumberFromCustomer(): boolean;
22
+ get authResponse(): IAuthorizationResponse;
23
+ get tenderAmount(): Money;
24
+ get tenderType(): TenderType;
25
+ get authorizationDeviceId(): string;
26
+ get isAuthorized(): boolean;
27
+ protected newTransactionLine(): RewardCardDiscountLineTotalDecorator;
28
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const scp_component_business_core_1 = require("@aptos-scp/scp-component-business-core");
4
+ const ManualDiscountLineTotalDecorator_1 = require("./ManualDiscountLineTotalDecorator");
5
+ exports.DECORATOR_TYPE_REWARD_CARD_DISCOUNT_TOTAL = "DECORATOR_TYPE_REWARD_CARD_DISCOUNT_TOTAL";
6
+ exports.REWARD_CARD_TOTAL_DISCOUNT_ANNOTATION_SOURCE = "REWARD_CARD_TOTAL_DISCOUNT_ANNOTATION_SOURCE";
7
+ class RewardCardDiscountLineTotalDecorator extends ManualDiscountLineTotalDecorator_1.ManualDiscountLineTotalDecorator {
8
+ static createFromJsonObject(transactionLineJsonObj, transactionLineFactory) {
9
+ const decoratedTransactionLineJsonObj = this.getDecoratedTransactionLineJsonObjectFromJsonObject(transactionLineJsonObj);
10
+ const decoratedLine = transactionLineFactory.createTransactionLineFromJsonObj(decoratedTransactionLineJsonObj);
11
+ const totalDiscount = scp_component_business_core_1.Money.fromJSON(transactionLineJsonObj._totalDiscount);
12
+ const annotationSourceLineNumber = this.getAnnotationSourceLineNumberFromJsonObject(transactionLineJsonObj);
13
+ const decoratorType = this.getLineDecoratorTypeFromJsonObject(transactionLineJsonObj);
14
+ return new RewardCardDiscountLineTotalDecorator(decoratorType, decoratedLine, totalDiscount, annotationSourceLineNumber);
15
+ }
16
+ constructor(decoratorLineType, decoratedTransactionLine, totalDiscount, annotationSourceLineNumber) {
17
+ super(decoratorLineType, decoratedTransactionLine, undefined, exports.REWARD_CARD_TOTAL_DISCOUNT_ANNOTATION_SOURCE, totalDiscount, annotationSourceLineNumber);
18
+ }
19
+ get discountLevel() {
20
+ return this.decoratedTransactionLine.discountLevel;
21
+ }
22
+ get rewardPrintedName() {
23
+ return this.decoratedTransactionLine.rewardPrintedName;
24
+ }
25
+ get rewardPrintedNumberLabel() {
26
+ return this.decoratedTransactionLine.rewardPrintedNumberLabel;
27
+ }
28
+ get cardNumber() {
29
+ return this.decoratedTransactionLine.cardNumber;
30
+ }
31
+ get rewardCardName() {
32
+ return this.decoratedTransactionLine.rewardCardName;
33
+ }
34
+ get tenderId() {
35
+ return this.decoratedTransactionLine.tenderId;
36
+ }
37
+ get pin() {
38
+ return this.decoratedTransactionLine.pin;
39
+ }
40
+ get autoPopulateCardNumberFromCustomer() {
41
+ return this.decoratedTransactionLine.autoPopulateCardNumberFromCustomer;
42
+ }
43
+ get authResponse() {
44
+ return this.decoratedTransactionLine.authResponse;
45
+ }
46
+ get tenderAmount() {
47
+ return this.decoratedTransactionLine.tenderAmount;
48
+ }
49
+ get tenderType() {
50
+ return this.decoratedTransactionLine.tenderType;
51
+ }
52
+ get authorizationDeviceId() {
53
+ return this.decoratedTransactionLine.authorizationDeviceId;
54
+ }
55
+ get isAuthorized() {
56
+ return this.decoratedTransactionLine.isAuthorized;
57
+ }
58
+ newTransactionLine() {
59
+ return new RewardCardDiscountLineTotalDecorator(this.lineDecoratorType, this.decoratedTransactionLine, this.totalDiscount, this.annotationSourceLineNumber);
60
+ }
61
+ }
62
+ exports.RewardCardDiscountLineTotalDecorator = RewardCardDiscountLineTotalDecorator;
63
+ //# sourceMappingURL=RewardCardDiscountLineTotalDecorator.js.map
@@ -0,0 +1,27 @@
1
+ import { ITransactionLineFactory } from "@aptos-scp/scp-component-store-selling-core";
2
+ import { VoidSource } from "../Constants";
3
+ import { RewardCardDiscountLine } from "./RewardCardDiscountLine";
4
+ import { ManualDiscountLevel } from "../configuration";
5
+ import { VoidedDiscountLineDecorator } from "./VoidedDiscountLineDecorator";
6
+ import { IRewardCardDiscountLine } from "./IRewardCardDiscountLine";
7
+ import { IAuthorizationResponse } from "@aptos-scp/scp-types-commerce-devices";
8
+ import { Money } from "@aptos-scp/scp-component-business-core";
9
+ import { TenderType } from "../TenderType";
10
+ export declare class VoidedRewardCardDiscountLineDecorator extends VoidedDiscountLineDecorator implements IRewardCardDiscountLine {
11
+ static createFromJsonObject(transactionLineJsonObj: any, transactionLineFactory: ITransactionLineFactory): VoidedRewardCardDiscountLineDecorator;
12
+ constructor(voidSource: VoidSource, discountLine: RewardCardDiscountLine, annotationSourceLineNumber: number);
13
+ get discountLevel(): ManualDiscountLevel;
14
+ get cardNumber(): string;
15
+ get rewardPrintedName(): string;
16
+ get rewardPrintedNumberLabel(): string;
17
+ get tenderId(): string;
18
+ get pin(): string;
19
+ get rewardCardName(): string;
20
+ get autoPopulateCardNumberFromCustomer(): boolean;
21
+ get authResponse(): IAuthorizationResponse;
22
+ get tenderAmount(): Money;
23
+ get tenderType(): TenderType;
24
+ get authorizationDeviceId(): string;
25
+ get isAuthorized(): boolean;
26
+ protected newTransactionLine(): VoidedRewardCardDiscountLineDecorator;
27
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const BaseLineDecorator_1 = require("../BaseLineDecorator");
4
+ const VoidedDiscountLineDecorator_1 = require("./VoidedDiscountLineDecorator");
5
+ class VoidedRewardCardDiscountLineDecorator extends VoidedDiscountLineDecorator_1.VoidedDiscountLineDecorator {
6
+ static createFromJsonObject(transactionLineJsonObj, transactionLineFactory) {
7
+ const decoratedTransactionLineJsonObj = BaseLineDecorator_1.BaseLineDecorator.getDecoratedTransactionLineJsonObjectFromJsonObject(transactionLineJsonObj);
8
+ const decoratedDiscountLine = transactionLineFactory.createTransactionLineFromJsonObj(decoratedTransactionLineJsonObj);
9
+ const annotationSourceLineNumber = BaseLineDecorator_1.BaseLineDecorator.getAnnotationSourceLineNumberFromJsonObject(transactionLineJsonObj);
10
+ const voidSource = transactionLineJsonObj._voidSource;
11
+ const voidedRewardCardDiscountLineDecorator = new VoidedRewardCardDiscountLineDecorator(voidSource, decoratedDiscountLine, annotationSourceLineNumber);
12
+ return voidedRewardCardDiscountLineDecorator;
13
+ }
14
+ constructor(voidSource, discountLine, annotationSourceLineNumber) {
15
+ super(voidSource, discountLine, annotationSourceLineNumber);
16
+ }
17
+ get discountLevel() {
18
+ return this.decoratedTransactionLine.discountLevel;
19
+ }
20
+ get cardNumber() {
21
+ return this.decoratedTransactionLine.cardNumber;
22
+ }
23
+ get rewardPrintedName() {
24
+ return this.decoratedTransactionLine.rewardPrintedName;
25
+ }
26
+ get rewardPrintedNumberLabel() {
27
+ return this.decoratedTransactionLine.rewardPrintedNumberLabel;
28
+ }
29
+ get tenderId() {
30
+ return this.decoratedTransactionLine.tenderId;
31
+ }
32
+ get pin() {
33
+ return this.decoratedTransactionLine.pin;
34
+ }
35
+ get rewardCardName() {
36
+ return this.decoratedTransactionLine.rewardCardName;
37
+ }
38
+ get autoPopulateCardNumberFromCustomer() {
39
+ return this.decoratedTransactionLine.autoPopulateCardNumberFromCustomer;
40
+ }
41
+ get authResponse() {
42
+ return this.decoratedTransactionLine.authResponse;
43
+ }
44
+ get tenderAmount() {
45
+ return this.decoratedTransactionLine.tenderAmount;
46
+ }
47
+ get tenderType() {
48
+ return this.decoratedTransactionLine.tenderType;
49
+ }
50
+ get authorizationDeviceId() {
51
+ return this.decoratedTransactionLine.authorizationDeviceId;
52
+ }
53
+ get isAuthorized() {
54
+ return this.decoratedTransactionLine.isAuthorized;
55
+ }
56
+ newTransactionLine() {
57
+ return new VoidedRewardCardDiscountLineDecorator(this.voidSource, this.decoratedTransactionLine, this.annotationSourceLineNumber);
58
+ }
59
+ }
60
+ exports.VoidedRewardCardDiscountLineDecorator = VoidedRewardCardDiscountLineDecorator;
61
+ //# sourceMappingURL=VoidedRewardCardDiscountLineDecorator.js.map
@@ -1,4 +1,5 @@
1
1
  export * from "./IManualDiscountLine";
2
+ export * from "./IRewardCardDiscountLine";
2
3
  export * from "./IPromotionCouponLine";
3
4
  export * from "./BaseManualDiscountLine";
4
5
  export * from "./LoyaltyDiscountLine";
@@ -15,5 +16,9 @@ export * from "./ModifyManualDiscountLine";
15
16
  export * from "./ManualDiscountLineModificationDecorator";
16
17
  export * from "./BaseManualDiscountLineDecorator";
17
18
  export * from "./ExpiredCouponOverrideLine";
19
+ export * from "./RewardCardDiscountLineTotalDecorator";
20
+ export * from "./RewardCardDiscountLine";
21
+ export * from "./RewardCardDiscountLineDecorator";
22
+ export * from "./VoidedRewardCardDiscountLineDecorator";
18
23
  export * from "./PromotionCouponLine";
19
24
  export * from "./employee/";
@@ -18,6 +18,10 @@ __export(require("./ModifyManualDiscountLine"));
18
18
  __export(require("./ManualDiscountLineModificationDecorator"));
19
19
  __export(require("./BaseManualDiscountLineDecorator"));
20
20
  __export(require("./ExpiredCouponOverrideLine"));
21
+ __export(require("./RewardCardDiscountLineTotalDecorator"));
22
+ __export(require("./RewardCardDiscountLine"));
23
+ __export(require("./RewardCardDiscountLineDecorator"));
24
+ __export(require("./VoidedRewardCardDiscountLineDecorator"));
21
25
  __export(require("./PromotionCouponLine"));
22
26
  __export(require("./employee/"));
23
27
  //# sourceMappingURL=index.js.map
@@ -1,12 +1,15 @@
1
1
  import { ITransactionLine } from "@aptos-scp/scp-component-store-selling-core";
2
2
  import { IManualDiscountLine } from "./IManualDiscountLine";
3
3
  import { LoyaltyDiscountLine } from "./LoyaltyDiscountLine";
4
+ import { RewardCardDiscountLine } from "./RewardCardDiscountLine";
4
5
  import { ManualItemDiscountLine } from "./ManualItemDiscountLine";
5
6
  import { ManualTransactionDiscountLine } from "./ManualTransactionDiscountLine";
6
7
  export declare const ITEM_MANUAL_DISCOUNT_LINE_TYPE = "ItemManualDiscount";
7
8
  export declare const TRANSACTION_MANUAL_DISCOUNT_LINE_TYPE = "TransactionManualDiscount";
8
9
  export declare const LOYALTY_DISCOUNT_LINE_TYPE = "LoyaltyDiscount";
10
+ export declare const REWARD_CARD_DISCOUNT_LINE_TYPE = "RewardCardDiscount";
9
11
  export declare function isManualItemDiscountLine(transactionLine: ITransactionLine): transactionLine is ManualItemDiscountLine;
10
12
  export declare function isManualTransactionDiscountLine(transactionLine: ITransactionLine): transactionLine is ManualTransactionDiscountLine;
11
13
  export declare function isLoyaltyDiscountLine(transactionLine: ITransactionLine): transactionLine is LoyaltyDiscountLine;
14
+ export declare function isRewardCardDiscountLine(transactionLine: ITransactionLine): transactionLine is RewardCardDiscountLine;
12
15
  export declare function isManualDiscountLine(transactionLine: ITransactionLine): transactionLine is IManualDiscountLine;
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const LoyaltyDiscountLine_1 = require("./LoyaltyDiscountLine");
4
+ const RewardCardDiscountLine_1 = require("./RewardCardDiscountLine");
4
5
  const ManualItemDiscountLine_1 = require("./ManualItemDiscountLine");
5
6
  const ManualTransactionDiscountLine_1 = require("./ManualTransactionDiscountLine");
6
7
  exports.ITEM_MANUAL_DISCOUNT_LINE_TYPE = "ItemManualDiscount";
7
8
  exports.TRANSACTION_MANUAL_DISCOUNT_LINE_TYPE = "TransactionManualDiscount";
8
9
  exports.LOYALTY_DISCOUNT_LINE_TYPE = "LoyaltyDiscount";
10
+ exports.REWARD_CARD_DISCOUNT_LINE_TYPE = "RewardCardDiscount";
9
11
  function isManualItemDiscountLine(transactionLine) {
10
12
  return (transactionLine instanceof ManualItemDiscountLine_1.ManualItemDiscountLine ||
11
13
  (transactionLine.lineType === exports.ITEM_MANUAL_DISCOUNT_LINE_TYPE &&
@@ -21,10 +23,18 @@ function isLoyaltyDiscountLine(transactionLine) {
21
23
  return (transactionLine instanceof LoyaltyDiscountLine_1.LoyaltyDiscountLine || transactionLine.lineType === exports.LOYALTY_DISCOUNT_LINE_TYPE);
22
24
  }
23
25
  exports.isLoyaltyDiscountLine = isLoyaltyDiscountLine;
26
+ function isRewardCardDiscountLine(transactionLine) {
27
+ return (transactionLine instanceof RewardCardDiscountLine_1.RewardCardDiscountLine ||
28
+ transactionLine.lineType === exports.REWARD_CARD_DISCOUNT_LINE_TYPE);
29
+ }
30
+ exports.isRewardCardDiscountLine = isRewardCardDiscountLine;
24
31
  function isManualDiscountLine(transactionLine) {
32
+ //RewardCardDiscount is NOT a manual discount type, since IManualDiscountLine
33
+ // has most of common discount properties, IRewardCardDiscountLine extends IManualDiscountLine
25
34
  return (isManualItemDiscountLine(transactionLine) ||
26
35
  isManualTransactionDiscountLine(transactionLine) ||
27
- isLoyaltyDiscountLine(transactionLine));
36
+ isLoyaltyDiscountLine(transactionLine) ||
37
+ isRewardCardDiscountLine(transactionLine));
28
38
  }
29
39
  exports.isManualDiscountLine = isManualDiscountLine;
30
40
  //# sourceMappingURL=lineTypes.js.map
@@ -1,13 +1,14 @@
1
1
  import { IPricingMetadataPersistanceObject, ISerializedLinePricingAdjustment, ISerializedSubline, ISerializedSublinePricingAdjustment, ISublinePricingAdjustment, RewardIssue } from "@aptos-scp/scp-component-pricing";
2
2
  import { ISerializedNonFinancialReward } from "@aptos-scp/scp-component-pricing/lib/interfaces/ILineNonFinancialReward";
3
3
  import { ICompetitivePriceInformation, ILoyaltyInformation, ISupervisorOverrideInformation, PricingAdjustmentScope, SourceIndicator } from "@aptos-scp/scp-types-commerce-transaction";
4
- import { PotentialPromotion } from "@aptos-scp/scp-types-pricing";
4
+ import { PotentialPromotion, RewardCard } from "@aptos-scp/scp-types-pricing";
5
5
  export interface ISerializedPriceCalculationResultsWithSource {
6
6
  readonly lineAdjustments: ISerializedLinePricingAdjustmentWithSource[];
7
7
  readonly sublines?: ISerializedSublineWithSource[];
8
8
  readonly issues: RewardIssue[];
9
9
  readonly nonFinancialRewards?: ISerializedNonFinancialRewardWithSource[];
10
10
  readonly potentialPromotions?: PotentialPromotion[];
11
+ readonly rewardCards?: RewardCard[];
11
12
  metadata?: IPricingMetadataPersistanceObject;
12
13
  }
13
14
  export interface ISerializedLinePricingAdjustmentWithSource extends ISerializedLinePricingAdjustment {
@@ -0,0 +1,30 @@
1
+ import { Money, Price } from "@aptos-scp/scp-component-business-core";
2
+ import { VerboseDiscountType } from "@aptos-scp/scp-component-pricing";
3
+ import { ITransactionLine, ITransactionLineFactory } from "@aptos-scp/scp-component-store-selling-core";
4
+ import { ISameTransactionLineReference } from "@aptos-scp/scp-types-commerce-transaction";
5
+ import { SelectedUnitPrice } from "../StoreItem";
6
+ import { IItemLine, IItemSubline } from "./IItemLine";
7
+ import { ItemLineBaseDiscountDecorator } from "./ItemLineBaseDiscountDecorator";
8
+ export declare const DECORATOR_TYPE_ITEM_LINE_REWARD_CARD_DISCOUNT = "ITEM_LINE_REWARD_CARD_DISCOUNT_DECORATOR";
9
+ export declare function isItemLineRewardCardDiscountDecorator(transactionLine: ITransactionLine): transactionLine is ItemLineRewardCardDiscountDecorator;
10
+ export declare class ItemLineRewardCardDiscountDecorator extends ItemLineBaseDiscountDecorator {
11
+ private _discountLineNumber?;
12
+ private _selectedUnitPrice?;
13
+ private _baseUnitPrice?;
14
+ private _baseExtendedAmount?;
15
+ private _baseLineSavings?;
16
+ private _rewardCardNumber?;
17
+ static createFromJsonObject(transactionLineJsonObj: any, transactionLineFactory: ITransactionLineFactory): ItemLineRewardCardDiscountDecorator;
18
+ constructor(decoratorType: string, replacementUnitPrice: Price, newExtendedAmount: Money, itemLine: IItemLine, lineSavings: Money, adjustmentAmount: Money, annotationDescription: string, annotationSourceType: string, discountAmount?: Money, percent?: string, discountName?: string, discountDescription?: string, discountType?: VerboseDiscountType, sublines?: IItemSubline[], replacementAmount?: Money, discountLineNumber?: ISameTransactionLineReference, ruleId?: string, extendedAmountBeforeAdjustment?: Money, selectedUnitPrice?: SelectedUnitPrice, presentation?: IItemLine, aggregationId?: string, rewardCardNumber?: string);
19
+ get discountLineNumber(): ISameTransactionLineReference;
20
+ get rewardCardNumber(): string;
21
+ get itemSelectedUnitPrice(): SelectedUnitPrice;
22
+ get originalUnitPrice(): Price;
23
+ get originalExtendedAmount(): Money;
24
+ get lineSavings(): Money;
25
+ get markeddownPriceLineSavings(): Money;
26
+ get unitPriceExcludingTransactionDiscounts(): Price;
27
+ get extendedAmountExcludingTransactionDiscounts(): Money;
28
+ protected clone(): ItemLineRewardCardDiscountDecorator;
29
+ protected newTransactionLine(): ItemLineRewardCardDiscountDecorator;
30
+ }
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const scp_component_business_core_1 = require("@aptos-scp/scp-component-business-core");
4
+ const StoreItem_1 = require("../StoreItem");
5
+ const BaseItemLineDecorator_1 = require("./BaseItemLineDecorator");
6
+ const ItemLine_1 = require("./ItemLine");
7
+ const ItemLineBaseDiscountDecorator_1 = require("./ItemLineBaseDiscountDecorator");
8
+ exports.DECORATOR_TYPE_ITEM_LINE_REWARD_CARD_DISCOUNT = "ITEM_LINE_REWARD_CARD_DISCOUNT_DECORATOR";
9
+ function isItemLineRewardCardDiscountDecorator(transactionLine) {
10
+ const decoratorType = transactionLine.lineDecoratorType;
11
+ return decoratorType === exports.DECORATOR_TYPE_ITEM_LINE_REWARD_CARD_DISCOUNT;
12
+ }
13
+ exports.isItemLineRewardCardDiscountDecorator = isItemLineRewardCardDiscountDecorator;
14
+ class ItemLineRewardCardDiscountDecorator extends ItemLineBaseDiscountDecorator_1.ItemLineBaseDiscountDecorator {
15
+ constructor(decoratorType, replacementUnitPrice, newExtendedAmount, itemLine, lineSavings, adjustmentAmount, annotationDescription, annotationSourceType, discountAmount, percent, discountName, discountDescription, discountType, sublines, replacementAmount, discountLineNumber, ruleId, extendedAmountBeforeAdjustment, selectedUnitPrice, presentation, aggregationId, rewardCardNumber) {
16
+ super(decoratorType, replacementUnitPrice, newExtendedAmount, itemLine, lineSavings, adjustmentAmount, annotationDescription, annotationSourceType, discountAmount, percent, discountName, discountDescription, discountType, sublines, replacementAmount, false, ruleId, extendedAmountBeforeAdjustment, false, presentation, aggregationId);
17
+ this._discountLineNumber = discountLineNumber;
18
+ this._selectedUnitPrice = selectedUnitPrice;
19
+ this._rewardCardNumber = rewardCardNumber;
20
+ if (selectedUnitPrice === StoreItem_1.SelectedUnitPrice.FullPrice && itemLine.itemFullPrice) {
21
+ this._baseUnitPrice = itemLine.itemFullPrice;
22
+ this._baseExtendedAmount = itemLine.itemFullPrice.calculateExtendedAmount(itemLine.quantity);
23
+ this._baseLineSavings = lineSavings;
24
+ }
25
+ else if (selectedUnitPrice === StoreItem_1.SelectedUnitPrice.PermanentPrice && itemLine.itemPermanentPrice) {
26
+ this._baseUnitPrice = itemLine.itemPermanentPrice;
27
+ this._baseExtendedAmount = itemLine.itemPermanentPrice.calculateExtendedAmount(itemLine.quantity);
28
+ this._baseLineSavings = lineSavings;
29
+ }
30
+ }
31
+ static createFromJsonObject(transactionLineJsonObj, transactionLineFactory) {
32
+ const decoratedTransactionLineJsonObj = BaseItemLineDecorator_1.BaseItemLineDecorator.getDecoratedTransactionLineJsonObjectFromJsonObject(transactionLineJsonObj);
33
+ const decoratedItemLine = transactionLineFactory.createTransactionLineFromJsonObj(decoratedTransactionLineJsonObj);
34
+ let adjustmentAmount;
35
+ if (transactionLineJsonObj.adjustmentAmount) {
36
+ adjustmentAmount = scp_component_business_core_1.Money.fromIMoney(transactionLineJsonObj.adjustmentAmount);
37
+ }
38
+ const replacementUnitPrice = scp_component_business_core_1.Price.fromJSON(transactionLineJsonObj._replacementUnitPrice);
39
+ let replacementAmount;
40
+ if (transactionLineJsonObj._replacementAmount) {
41
+ replacementAmount = scp_component_business_core_1.Money.fromJSON(transactionLineJsonObj._replacementAmount);
42
+ }
43
+ const newExtendedAmount = new scp_component_business_core_1.Money(transactionLineJsonObj._newExtendedAmount);
44
+ const discountName = transactionLineJsonObj._discountName;
45
+ const discountDescription = transactionLineJsonObj._discountDescription;
46
+ const discountType = transactionLineJsonObj._discountType;
47
+ let discountAmount;
48
+ if (transactionLineJsonObj._discountAmount) {
49
+ discountAmount = scp_component_business_core_1.Money.fromJSON(transactionLineJsonObj._discountAmount);
50
+ }
51
+ const percent = transactionLineJsonObj._percent;
52
+ const discountLineNumber = transactionLineJsonObj._discountLineNumber;
53
+ const lineSavings = BaseItemLineDecorator_1.BaseItemLineDecorator.getLineSavingsFromJsonObject(transactionLineJsonObj);
54
+ const annotationDescription = BaseItemLineDecorator_1.BaseItemLineDecorator.getAnnotationDescriptionFromJsonObject(transactionLineJsonObj);
55
+ const annotationSourceType = BaseItemLineDecorator_1.BaseItemLineDecorator.getAnnotationSourceTypeFromJsonObject(transactionLineJsonObj);
56
+ const sublines = BaseItemLineDecorator_1.BaseItemLineDecorator.getSublinesFromJsonObject(transactionLineJsonObj);
57
+ const lineDecoratorType = BaseItemLineDecorator_1.BaseItemLineDecorator.getLineDecoratorTypeFromJsonObject(transactionLineJsonObj);
58
+ const ruleId = transactionLineJsonObj._ruleId;
59
+ const extendedAmountBeforeAdjustment = transactionLineJsonObj._extendedAmountBeforeAdjustment
60
+ ? scp_component_business_core_1.Money.fromJSON(transactionLineJsonObj._extendedAmountBeforeAdjustment)
61
+ : undefined;
62
+ const selectedUnitPrice = transactionLineJsonObj._selectedUnitPrice;
63
+ const presentation = transactionLineJsonObj._presentation
64
+ ? ItemLineRewardCardDiscountDecorator.createFromJsonObject(transactionLineJsonObj._presentation, transactionLineFactory)
65
+ : undefined;
66
+ const aggregationId = transactionLineJsonObj._aggregationId;
67
+ const rewardCardNumber = transactionLineJsonObj._rewardCardNumber;
68
+ const rewardCardDiscountsDecorator = new ItemLineRewardCardDiscountDecorator(lineDecoratorType, replacementUnitPrice, newExtendedAmount, decoratedItemLine, lineSavings, adjustmentAmount, annotationDescription, annotationSourceType, discountAmount, percent, discountName, discountDescription, discountType, sublines, replacementAmount, discountLineNumber, ruleId, extendedAmountBeforeAdjustment, selectedUnitPrice, presentation, aggregationId, rewardCardNumber);
69
+ return rewardCardDiscountsDecorator;
70
+ }
71
+ get discountLineNumber() {
72
+ return this._discountLineNumber;
73
+ }
74
+ get rewardCardNumber() {
75
+ return this._rewardCardNumber;
76
+ }
77
+ get itemSelectedUnitPrice() {
78
+ return this._selectedUnitPrice
79
+ ? this._selectedUnitPrice
80
+ : this.decoratedTransactionLine.itemSelectedUnitPrice;
81
+ }
82
+ get originalUnitPrice() {
83
+ return this._baseUnitPrice ? this._baseUnitPrice : this.decoratedTransactionLine.originalUnitPrice;
84
+ }
85
+ get originalExtendedAmount() {
86
+ return this._baseExtendedAmount
87
+ ? this._baseExtendedAmount
88
+ : this.decoratedTransactionLine.originalExtendedAmount;
89
+ }
90
+ get lineSavings() {
91
+ return this._baseLineSavings ? this._baseLineSavings : super.lineSavings;
92
+ }
93
+ get markeddownPriceLineSavings() {
94
+ return this._baseLineSavings ? undefined : this.decoratedTransactionLine.markeddownPriceLineSavings;
95
+ }
96
+ get unitPriceExcludingTransactionDiscounts() {
97
+ return this.lineDecoratorType === exports.DECORATOR_TYPE_ITEM_LINE_REWARD_CARD_DISCOUNT
98
+ ? this.decoratedTransactionLine.unitPriceExcludingTransactionDiscounts
99
+ : this.unitPrice;
100
+ }
101
+ get extendedAmountExcludingTransactionDiscounts() {
102
+ return this.lineDecoratorType === exports.DECORATOR_TYPE_ITEM_LINE_REWARD_CARD_DISCOUNT &&
103
+ !ItemLine_1.isFulfillmentLine(this.decoratedTransactionLine) &&
104
+ !ItemLine_1.isCancelLine(this.decoratedTransactionLine)
105
+ ? this.decoratedTransactionLine.extendedAmountExcludingTransactionDiscounts
106
+ : this.decoratedTransactionLine.extendedAmountExcludingTransactionDiscounts.minus(this.adjustmentAmount);
107
+ }
108
+ clone() {
109
+ const newItemLineRewardCardDiscountDecorator = super.clone();
110
+ newItemLineRewardCardDiscountDecorator._discountLineNumber = this._discountLineNumber;
111
+ newItemLineRewardCardDiscountDecorator._selectedUnitPrice = this._selectedUnitPrice;
112
+ newItemLineRewardCardDiscountDecorator._baseUnitPrice = this._baseUnitPrice;
113
+ newItemLineRewardCardDiscountDecorator._rewardCardNumber = this._rewardCardNumber;
114
+ newItemLineRewardCardDiscountDecorator._baseExtendedAmount = this._baseExtendedAmount;
115
+ newItemLineRewardCardDiscountDecorator._baseLineSavings = this._baseLineSavings;
116
+ return newItemLineRewardCardDiscountDecorator;
117
+ }
118
+ newTransactionLine() {
119
+ return new ItemLineRewardCardDiscountDecorator(this.lineDecoratorType, this.replacementUnitPrice, this.newExtendedAmount, this.decoratedTransactionLine, this.lineSavings, this.adjustmentAmount, this.annotationDescription, this.annotationSourceType, this.discountAmount, this.percent, this.discountName, this.discountDescription, this.discountType, this.sublines, this.replacementAmount, this.discountLineNumber, this.ruleId, this.extendedAmountBeforeAdjustment, this.itemSelectedUnitPrice, this.presentation, this.aggregationId, this.rewardCardNumber);
120
+ }
121
+ }
122
+ exports.ItemLineRewardCardDiscountDecorator = ItemLineRewardCardDiscountDecorator;
123
+ //# sourceMappingURL=ItemLineRewardCardDiscountDecorator.js.map
@@ -35,4 +35,5 @@ export * from "./ItemLineNonFinancialRewardDecorator";
35
35
  export * from "./IAllLinePricingAdjustments";
36
36
  export * from "./ISerializedPriceCalculationResultsWithSource";
37
37
  export * from "./ItemLineExtensibilityFormDataDecorator";
38
+ export * from "./ItemLineRewardCardDiscountDecorator";
38
39
  export * from "./SupersededPriceChangeLineDecorator";
@@ -38,5 +38,6 @@ __export(require("./ItemLineTaxOverrideDecorator"));
38
38
  __export(require("./ItemLineNonFinancialRewardDecorator"));
39
39
  __export(require("./IAllLinePricingAdjustments"));
40
40
  __export(require("./ItemLineExtensibilityFormDataDecorator"));
41
+ __export(require("./ItemLineRewardCardDiscountDecorator"));
41
42
  __export(require("./SupersededPriceChangeLineDecorator"));
42
43
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aptos-scp/scp-component-store-selling-features-domain-model",
3
- "version": "2.16.0",
3
+ "version": "2.18.0",
4
4
  "description": "This component library provides the common components to handle the coordination of processing the business events from the UI.",
5
5
  "private": false,
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -55,7 +55,7 @@
55
55
  "peerDependencies": {
56
56
  "@aptos-scp/scp-component-business-core": "^1.12.7",
57
57
  "@aptos-scp/scp-component-logging": "^2.1.16",
58
- "@aptos-scp/scp-component-pricing": "^7.62.0",
58
+ "@aptos-scp/scp-component-pricing": "^7.66.4",
59
59
  "@aptos-scp/scp-component-store-items": "^1.21.0",
60
60
  "@aptos-scp/scp-component-store-selling-core": "^18.9.3",
61
61
  "@aptos-scp/scp-component-taxation": "^5.28.0",
@@ -63,7 +63,7 @@
63
63
  "@aptos-scp/scp-types-client-registration": "^1.4.0",
64
64
  "@aptos-scp/scp-types-core-config": "^2.2.1",
65
65
  "@aptos-scp/scp-types-commerce-devices": "^6.0.0",
66
- "@aptos-scp/scp-types-commerce-transaction": "^1.80.0",
66
+ "@aptos-scp/scp-types-commerce-transaction": "^1.83.0",
67
67
  "@aptos-scp/scp-types-customer": "^3.7.0",
68
68
  "@aptos-scp/scp-types-einvoice": "^1.17.0",
69
69
  "@aptos-scp/scp-types-inventory": "^2.0.0",
@@ -77,7 +77,7 @@
77
77
  "@aptos-scp/scp-component-business-core": "^1.12.7",
78
78
  "@aptos-scp/scp-component-commit-configs": "^4.1.3",
79
79
  "@aptos-scp/scp-component-logging": "^2.1.16",
80
- "@aptos-scp/scp-component-pricing": "^7.62.0",
80
+ "@aptos-scp/scp-component-pricing": "^7.66.4",
81
81
  "@aptos-scp/scp-component-rn-circuit-breaker": "^1.0.15",
82
82
  "@aptos-scp/scp-component-store-items": "^1.21.0",
83
83
  "@aptos-scp/scp-component-store-selling-core": "^18.9.3",
@@ -85,7 +85,7 @@
85
85
  "@aptos-scp/scp-component-user": "^1.4.0",
86
86
  "@aptos-scp/scp-types-client-registration": "^1.4.0",
87
87
  "@aptos-scp/scp-types-commerce-devices": "^6.3.0",
88
- "@aptos-scp/scp-types-commerce-transaction": "^1.80.0",
88
+ "@aptos-scp/scp-types-commerce-transaction": "^1.83.0",
89
89
  "@aptos-scp/scp-types-core": "^1.0.5",
90
90
  "@aptos-scp/scp-types-core-config": "^2.2.1",
91
91
  "@aptos-scp/scp-types-currency-conversion": "^1.2.0",
@@ -95,7 +95,7 @@
95
95
  "@aptos-scp/scp-types-inventory": "^2.0.0",
96
96
  "@aptos-scp/scp-types-loyalty-memberships": "^2.3.0",
97
97
  "@aptos-scp/scp-types-orders": "^4.11.0",
98
- "@aptos-scp/scp-types-pricing": "^4.26.0",
98
+ "@aptos-scp/scp-types-pricing": "^4.30.0",
99
99
  "@aptos-scp/scp-types-ss-transaction-history": "^1.6.0",
100
100
  "@aptos-scp/scp-types-store-items": "^1.34.0",
101
101
  "@aptos-scp/scp-types-terminal-settings": "^1.3.0",