@infosoftas/s4-orders-js-sdk 0.1.13 → 0.1.15

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/README.md CHANGED
@@ -133,7 +133,11 @@ type ConfigType = {
133
133
  errorValidationBlockingOffersMsg?: string;
134
134
  paymentMethodNotAllowedMsg?: string;
135
135
  invoiceLookupNotFoundText?: string;
136
- termsAndConditionsText?: string;
136
+ orderDenialOfferBaseText?: string;
137
+ orderDenialOfferWithFallbackText?: string;
138
+ orderDenialAmountText?: string;
139
+ fetchDenialFallbackOffer?: (organizationId: string) => Promise<OrderDenialFallbackOfferType | undefined>;
140
+ termsAndConditionsText?: string | ReactNode;
137
141
  };
138
142
  }
139
143
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infosoftas/s4-orders-js-sdk",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "scripts": {
5
5
  "build": "rimraf lib && webpack --mode production",
6
6
  "release": "release-it"
package/src/App.tsx CHANGED
@@ -74,7 +74,6 @@ const App: FC<ConfigType> = ({
74
74
  'Hello again!\n\nLooks like you already tried this offer, but we would like to keep you with us.\n\nTherefore we got a new great offer for you:',
75
75
  orderDenialAmountText:
76
76
  'We are sorry, but you do not meet the requirements for this offer. Please contact customer service for more information.',
77
- orderDenialFallbackOffer: undefined,
78
77
  paymentMethodNotAllowedMsg: '',
79
78
  invoiceLookupNotFoundText:
80
79
  'There was no recipient found for the given information',
@@ -399,8 +398,8 @@ const App: FC<ConfigType> = ({
399
398
  orderDenialAmountText={
400
399
  settings?.orderDenialAmountText
401
400
  }
402
- orderDenialFallbackOffer={
403
- settings?.orderDenialFallbackOffer
401
+ fetchDenialFallbackOffer={
402
+ settings?.fetchDenialFallbackOffer
404
403
  }
405
404
  />
406
405
  )}
@@ -459,8 +458,8 @@ const App: FC<ConfigType> = ({
459
458
  orderDenialAmountText={
460
459
  settings?.orderDenialAmountText
461
460
  }
462
- orderDenialFallbackOffer={
463
- settings?.orderDenialFallbackOffer
461
+ fetchDenialFallbackOffer={
462
+ settings?.fetchDenialFallbackOffer
464
463
  }
465
464
  />
466
465
  )}
@@ -533,8 +532,8 @@ const App: FC<ConfigType> = ({
533
532
  orderDenialAmountText={
534
533
  settings?.orderDenialAmountText
535
534
  }
536
- orderDenialFallbackOffer={
537
- settings?.orderDenialFallbackOffer
535
+ fetchDenialFallbackOffer={
536
+ settings?.fetchDenialFallbackOffer
538
537
  }
539
538
  termsAndConditionsText={
540
539
  settings?.termsAndConditionsText
@@ -58,7 +58,7 @@ type Props = {
58
58
  orderDenialOfferBaseText?: string;
59
59
  orderDenialOfferWithFallbackText?: string;
60
60
  orderDenialAmountText?: string;
61
- orderDenialFallbackOffer?: OrderDenialFallbackOfferType;
61
+ fetchDenialFallbackOffer?: (organizationId: string) => Promise<OrderDenialFallbackOfferType | undefined>;
62
62
  };
63
63
 
64
64
  type EHFFormInputsType = {
@@ -101,7 +101,7 @@ const EHFForm: FC<Props> = ({
101
101
  orderDenialOfferBaseText,
102
102
  orderDenialOfferWithFallbackText,
103
103
  orderDenialAmountText,
104
- orderDenialFallbackOffer,
104
+ fetchDenialFallbackOffer,
105
105
  }) => {
106
106
  const methods = useForm<EHFFormInputsType>({
107
107
  defaultValues: {
@@ -130,6 +130,7 @@ const EHFForm: FC<Props> = ({
130
130
  errorsMsg,
131
131
  orderDenialType,
132
132
  orderDenialMessage,
133
+ orderDenialFallbackOffer,
133
134
  dismissOrderDenial,
134
135
  } = useOrderForm({
135
136
  callback,
@@ -156,7 +157,7 @@ const EHFForm: FC<Props> = ({
156
157
  orderDenialOfferBaseText,
157
158
  orderDenialOfferWithFallbackText,
158
159
  orderDenialAmountText,
159
- orderDenialFallbackOffer,
160
+ fetchDenialFallbackOffer,
160
161
  });
161
162
 
162
163
  const onSubmit: SubmitHandler<EHFFormInputsType> = async (
@@ -59,7 +59,7 @@ type Props = {
59
59
  orderDenialOfferBaseText?: string;
60
60
  orderDenialOfferWithFallbackText?: string;
61
61
  orderDenialAmountText?: string;
62
- orderDenialFallbackOffer?: OrderDenialFallbackOfferType;
62
+ fetchDenialFallbackOffer?: (organizationId: string) => Promise<OrderDenialFallbackOfferType | undefined>;
63
63
  };
64
64
 
65
65
  type OIOFormInputsType = {
@@ -105,7 +105,7 @@ const OIOForm: FC<Props> = ({
105
105
  orderDenialOfferBaseText,
106
106
  orderDenialOfferWithFallbackText,
107
107
  orderDenialAmountText,
108
- orderDenialFallbackOffer,
108
+ fetchDenialFallbackOffer,
109
109
  }) => {
110
110
  const methods = useForm<OIOFormInputsType>({
111
111
  defaultValues: {
@@ -138,6 +138,7 @@ const OIOForm: FC<Props> = ({
138
138
  errorsMsg,
139
139
  orderDenialType,
140
140
  orderDenialMessage,
141
+ orderDenialFallbackOffer,
141
142
  dismissOrderDenial,
142
143
  } = useOrderForm({
143
144
  callback,
@@ -164,7 +165,7 @@ const OIOForm: FC<Props> = ({
164
165
  orderDenialOfferBaseText,
165
166
  orderDenialOfferWithFallbackText,
166
167
  orderDenialAmountText,
167
- orderDenialFallbackOffer,
168
+ fetchDenialFallbackOffer,
168
169
  });
169
170
 
170
171
  const onSubmit: SubmitHandler<OIOFormInputsType> = async (
@@ -42,13 +42,11 @@ const OrderDenialModal: FC<Props> = ({
42
42
  aria-modal="true"
43
43
  aria-label="Order denial modal"
44
44
  >
45
- <p className="sdk-order-denial-modal-text">
46
- {message?.split('\\n').map((line, i, arr) => (
47
- <span key={i}>
48
- {line}
49
- {i < arr.length - 1 && <br />}
50
- </span>
51
- ))}
45
+ <p
46
+ className="sdk-order-denial-modal-text"
47
+ style={{ whiteSpace: 'pre-line' }}
48
+ >
49
+ {message?.replace(/\\n/g, '\n')}
52
50
  </p>
53
51
  {offer?.title && offer?.templatePackageId && (
54
52
  <div className="sdk-order-denial-offer-box">
@@ -76,7 +76,9 @@ type Props = {
76
76
  orderDenialOfferBaseText?: string;
77
77
  orderDenialOfferWithFallbackText?: string;
78
78
  orderDenialAmountText?: string;
79
- orderDenialFallbackOffer?: OrderDenialFallbackOfferType;
79
+ fetchDenialFallbackOffer?: (
80
+ organizationId: string
81
+ ) => Promise<OrderDenialFallbackOfferType | undefined>;
80
82
  termsAndConditionsText?: string | ReactNode;
81
83
  };
82
84
 
@@ -127,7 +129,7 @@ const OrderForm: FC<Props> = ({
127
129
  orderDenialOfferBaseText,
128
130
  orderDenialOfferWithFallbackText,
129
131
  orderDenialAmountText,
130
- orderDenialFallbackOffer,
132
+ fetchDenialFallbackOffer,
131
133
  requireTermsAcceptance,
132
134
  termsAndConditionsText,
133
135
  }) => {
@@ -205,6 +207,7 @@ const OrderForm: FC<Props> = ({
205
207
  errorsMsg,
206
208
  orderDenialType,
207
209
  orderDenialMessage,
210
+ orderDenialFallbackOffer,
208
211
  dismissOrderDenial,
209
212
  } = useOrderForm({
210
213
  callback,
@@ -230,7 +233,7 @@ const OrderForm: FC<Props> = ({
230
233
  orderDenialOfferBaseText,
231
234
  orderDenialOfferWithFallbackText,
232
235
  orderDenialAmountText,
233
- orderDenialFallbackOffer,
236
+ fetchDenialFallbackOffer,
234
237
  });
235
238
 
236
239
  const onSubmit: SubmitHandler<OrderFormInputsType> = async (
@@ -57,7 +57,9 @@ type Props = {
57
57
  orderDenialOfferBaseText?: string;
58
58
  orderDenialOfferWithFallbackText?: string;
59
59
  orderDenialAmountText?: string;
60
- orderDenialFallbackOffer?: OrderDenialFallbackOfferType;
60
+ fetchDenialFallbackOffer?: (
61
+ organizationId: string
62
+ ) => Promise<OrderDenialFallbackOfferType | undefined>;
61
63
  };
62
64
 
63
65
  type DenialErrorType = {
@@ -127,7 +129,7 @@ const useOrderForm = ({
127
129
  orderDenialOfferBaseText,
128
130
  orderDenialOfferWithFallbackText,
129
131
  orderDenialAmountText,
130
- orderDenialFallbackOffer,
132
+ fetchDenialFallbackOffer,
131
133
  }: Props) => {
132
134
  const [loading, setLoading] = useState<boolean>(false);
133
135
  const [apiErrorMsg, setApiErrorMsg] = useState<string>('');
@@ -135,12 +137,16 @@ const useOrderForm = ({
135
137
  const [orderDenialType, setOrderDenialType] = useState<
136
138
  'offer' | 'amount' | null
137
139
  >(null);
140
+ const [orderDenialFallbackOffer, setOrderDenialFallbackOffer] = useState<
141
+ OrderDenialFallbackOfferType | undefined
142
+ >();
138
143
  const [submittedOrderData, setSubmittedOrderData] =
139
144
  useState<OrderFormInputsType | null>(null);
140
145
  const fallbackOfferTemplatePackageIdRef = useRef<string | null>(null);
141
146
 
142
147
  const dismissOrderDenial = () => {
143
148
  setOrderDenialType(null);
149
+ setOrderDenialFallbackOffer(undefined);
144
150
  };
145
151
 
146
152
  const getOrderDenialMessage = () => {
@@ -311,8 +317,21 @@ const useOrderForm = ({
311
317
  if (detectedDenialType) {
312
318
  setApiErrorMsg('');
313
319
  setErrorsMsg([]);
320
+ setOrderDenialFallbackOffer(undefined);
314
321
  setOrderDenialType(detectedDenialType);
315
322
  callback(null);
323
+ if (
324
+ detectedDenialType === 'offer' &&
325
+ fetchDenialFallbackOffer
326
+ ) {
327
+ void fetchDenialFallbackOffer(organizationId)
328
+ .then((offer) => {
329
+ setOrderDenialFallbackOffer(offer);
330
+ })
331
+ .catch(() => {
332
+ setOrderDenialFallbackOffer(undefined);
333
+ });
334
+ }
316
335
  return;
317
336
  }
318
337
 
@@ -365,6 +384,7 @@ const useOrderForm = ({
365
384
  errorsMsg,
366
385
  orderDenialType,
367
386
  orderDenialMessage: getOrderDenialMessage(),
387
+ orderDenialFallbackOffer,
368
388
  dismissOrderDenial,
369
389
  };
370
390
  };
@@ -34,6 +34,8 @@ export type ContactRequestType = {
34
34
  city?: string;
35
35
  zip?: string;
36
36
  careOf?: string;
37
+ organizationNumber?: string;
38
+ gln?: string;
37
39
  };
38
40
 
39
41
  export type OrderDenialFallbackOfferType = {
@@ -97,7 +99,9 @@ export type ConfigType = {
97
99
  orderDenialOfferBaseText?: string;
98
100
  orderDenialOfferWithFallbackText?: string;
99
101
  orderDenialAmountText?: string;
100
- orderDenialFallbackOffer?: OrderDenialFallbackOfferType;
102
+ fetchDenialFallbackOffer?: (
103
+ organizationId: string
104
+ ) => Promise<OrderDenialFallbackOfferType | undefined>;
101
105
  termsAndConditionsText?: string | ReactNode;
102
106
  };
103
107
  };
@@ -112,6 +112,11 @@ export const prepareContactModel = ({
112
112
  data,
113
113
  orderFields,
114
114
  }: ContactModelType) => {
115
+ const organizationNumber =
116
+ data.paymentMethod === PaymentMethodEnum.OIO
117
+ ? data.cvr?.trim() || undefined
118
+ : data.organizationNumber?.trim() || undefined;
119
+
115
120
  const model = {
116
121
  name: orderFields.find((i) => i.name === 'name')
117
122
  ? data.name?.trim() || undefined
@@ -143,6 +148,11 @@ export const prepareContactModel = ({
143
148
  careOf: orderFields.find((i) => i.name === 'careOf')
144
149
  ? data.careOf?.trim() || undefined
145
150
  : undefined,
151
+ organizationNumber,
152
+ gln:
153
+ data.paymentMethod === PaymentMethodEnum.OIO
154
+ ? data.gln?.trim() || undefined
155
+ : undefined,
146
156
  };
147
157
 
148
158
  return model;