repzo-sap-absjo 1.0.21 → 1.0.23

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/changelog.md CHANGED
@@ -20,6 +20,7 @@
20
20
  - [command/measureunit-family] use _.xor instead or _.difference @maramalshen
21
21
  - [command/price_list] fix bug in priceList-item @maramalshen
22
22
  - [actions/**] don't update integration_meta.sync_to_sap_succeeded if it is already true @maramalshen
23
+ - [actions/create_invoice] include item.get_promotion in MEO_Serial & Promotion_Name @maramalshen
23
24
 
24
25
  ### Removed
25
26
 
@@ -1,9 +1,9 @@
1
1
  import Repzo from "repzo";
2
- import { _create } from "../util.js";
2
+ import { _create, getUniqueConcatenatedValues } from "../util.js";
3
3
  import { v4 as uuid } from "uuid";
4
4
  import moment from "moment-timezone";
5
5
  export const create_invoice = async (event, options) => {
6
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
6
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
7
7
  const repzo = new Repzo(
8
8
  (_a = options.data) === null || _a === void 0 ? void 0 : _a.repzoApiKey,
9
9
  { env: options.env }
@@ -197,28 +197,42 @@ export const create_invoice = async (event, options) => {
197
197
  },
198
198
  { per_page: 50000 }
199
199
  );
200
+ const all_promotions = {};
201
+ (_g =
202
+ repzo_invoice === null || repzo_invoice === void 0
203
+ ? void 0
204
+ : repzo_invoice.promotions) === null || _g === void 0
205
+ ? void 0
206
+ : _g.forEach((promo) => {
207
+ if (!promo) return;
208
+ all_promotions[promo._id] = {
209
+ _id: promo._id,
210
+ name: promo.name,
211
+ ref: promo.ref,
212
+ };
213
+ });
200
214
  // Prepare SAP_invoice_items
201
215
  const items = [];
202
216
  for (
203
217
  let i = 0;
204
218
  i <
205
- ((_g =
219
+ ((_h =
206
220
  repzo_invoice === null || repzo_invoice === void 0
207
221
  ? void 0
208
- : repzo_invoice.items) === null || _g === void 0
222
+ : repzo_invoice.items) === null || _h === void 0
209
223
  ? void 0
210
- : _g.length);
224
+ : _h.length);
211
225
  i++
212
226
  ) {
213
227
  const item = repzo_invoice.items[i];
214
228
  // Get Repzo Tax
215
229
  const repzo_tax =
216
- (_h =
230
+ (_j =
217
231
  repzo_taxes === null || repzo_taxes === void 0
218
232
  ? void 0
219
- : repzo_taxes.data) === null || _h === void 0
233
+ : repzo_taxes.data) === null || _j === void 0
220
234
  ? void 0
221
- : _h.find((t) => {
235
+ : _j.find((t) => {
222
236
  var _a, _b, _c;
223
237
  return (
224
238
  ((_a = t._id) === null || _a === void 0
@@ -235,12 +249,12 @@ export const create_invoice = async (event, options) => {
235
249
  if (!repzo_tax) throw `Tax with _id: ${item.tax._id} not found in Repzo`;
236
250
  // Get Repzo UoM
237
251
  const repzo_measureunit =
238
- (_j =
252
+ (_k =
239
253
  repzo_measureunits === null || repzo_measureunits === void 0
240
254
  ? void 0
241
- : repzo_measureunits.data) === null || _j === void 0
255
+ : repzo_measureunits.data) === null || _k === void 0
242
256
  ? void 0
243
- : _j.find((m) => {
257
+ : _k.find((m) => {
244
258
  var _a, _b, _c;
245
259
  return (
246
260
  ((_a = m._id) === null || _a === void 0
@@ -256,16 +270,16 @@ export const create_invoice = async (event, options) => {
256
270
  });
257
271
  if (!repzo_measureunit)
258
272
  throw `Uom with _id: ${
259
- (_k = item.measureunit) === null || _k === void 0 ? void 0 : _k._id
273
+ (_l = item.measureunit) === null || _l === void 0 ? void 0 : _l._id
260
274
  } not found in Repzo`;
261
275
  // Get Repzo Product
262
276
  const repzo_product =
263
- (_l =
277
+ (_m =
264
278
  repzo_products === null || repzo_products === void 0
265
279
  ? void 0
266
- : repzo_products.data) === null || _l === void 0
280
+ : repzo_products.data) === null || _m === void 0
267
281
  ? void 0
268
- : _l.find((p) => {
282
+ : _m.find((p) => {
269
283
  var _a, _b, _c;
270
284
  return (
271
285
  ((_a = p._id) === null || _a === void 0
@@ -282,8 +296,18 @@ export const create_invoice = async (event, options) => {
282
296
  if (!repzo_product)
283
297
  throw `Product with _id: ${item.measureunit._id} not found in Repzo`;
284
298
  items.push({
285
- MEO_Serial: getUniqueConcatenatedValues(item, "ref", " | "),
286
- Promotion_Name: getUniqueConcatenatedValues(item, "name", " | "),
299
+ MEO_Serial: getUniqueConcatenatedValues(
300
+ item,
301
+ "ref",
302
+ " | ",
303
+ all_promotions
304
+ ),
305
+ Promotion_Name: getUniqueConcatenatedValues(
306
+ item,
307
+ "name",
308
+ " | ",
309
+ all_promotions
310
+ ),
287
311
  ItemCode: item.variant.variant_name,
288
312
  Quantity: item.qty,
289
313
  TaxCode: repzo_tax.integration_meta.TaxCode,
@@ -293,19 +317,19 @@ export const create_invoice = async (event, options) => {
293
317
  LineTotal: item.total_before_tax / 1000,
294
318
  UomCode: repzo_measureunit.integration_meta.ALTUOMID,
295
319
  Brand:
296
- (_m = repzo_product.integration_meta) === null || _m === void 0
320
+ (_o = repzo_product.integration_meta) === null || _o === void 0
297
321
  ? void 0
298
- : _m.BRAND,
322
+ : _o.BRAND,
299
323
  Department:
300
- ((_o =
324
+ ((_p =
301
325
  repzo_rep === null || repzo_rep === void 0
302
326
  ? void 0
303
- : repzo_rep.integration_meta) === null || _o === void 0
327
+ : repzo_rep.integration_meta) === null || _p === void 0
304
328
  ? void 0
305
- : _o.DEPARTMENTCODE) ||
306
- ((_p = options.data) === null || _p === void 0
329
+ : _p.DEPARTMENTCODE) ||
330
+ ((_q = options.data) === null || _q === void 0
307
331
  ? void 0
308
- : _p.DepartmentCode), // "D2",
332
+ : _q.DepartmentCode), // "D2",
309
333
  });
310
334
  }
311
335
  const sap_invoice = {
@@ -369,12 +393,3 @@ export const get_invoice_from_sap = async (serviceEndPoint, query) => {
369
393
  throw e;
370
394
  }
371
395
  };
372
- function getUniqueConcatenatedValues(item, key, delimiter) {
373
- item.general_promotions = item.general_promotions || [];
374
- item.used_promotions = item.used_promotions || [];
375
- const allPromotions = [...item.general_promotions, ...item.used_promotions];
376
- const uniqueValues = new Set(
377
- allPromotions.map((promotion) => promotion[key]).filter((value) => value)
378
- );
379
- return [...uniqueValues].join(delimiter);
380
- }
@@ -1,9 +1,9 @@
1
1
  import Repzo from "repzo";
2
- import { _create } from "../util.js";
2
+ import { _create, getUniqueConcatenatedValues } from "../util.js";
3
3
  import { v4 as uuid } from "uuid";
4
4
  import moment from "moment-timezone";
5
5
  export const create_proforma = async (event, options) => {
6
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
6
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
7
7
  const repzo = new Repzo(
8
8
  (_a = options.data) === null || _a === void 0 ? void 0 : _a.repzoApiKey,
9
9
  { env: options.env }
@@ -137,28 +137,42 @@ export const create_proforma = async (event, options) => {
137
137
  },
138
138
  { per_page: 50000 }
139
139
  );
140
+ const all_promotions = {};
141
+ (_g =
142
+ repzo_proforma === null || repzo_proforma === void 0
143
+ ? void 0
144
+ : repzo_proforma.promotions) === null || _g === void 0
145
+ ? void 0
146
+ : _g.forEach((promo) => {
147
+ if (!promo) return;
148
+ all_promotions[promo._id] = {
149
+ _id: promo._id,
150
+ name: promo.name,
151
+ ref: promo.ref,
152
+ };
153
+ });
140
154
  // Prepare SAP_invoice_items
141
155
  const items = [];
142
156
  for (
143
157
  let i = 0;
144
158
  i <
145
- ((_g =
159
+ ((_h =
146
160
  repzo_proforma === null || repzo_proforma === void 0
147
161
  ? void 0
148
- : repzo_proforma.items) === null || _g === void 0
162
+ : repzo_proforma.items) === null || _h === void 0
149
163
  ? void 0
150
- : _g.length);
164
+ : _h.length);
151
165
  i++
152
166
  ) {
153
167
  const item = repzo_proforma.items[i];
154
168
  // Get Repzo Tax
155
169
  const repzo_tax =
156
- (_h =
170
+ (_j =
157
171
  repzo_taxes === null || repzo_taxes === void 0
158
172
  ? void 0
159
- : repzo_taxes.data) === null || _h === void 0
173
+ : repzo_taxes.data) === null || _j === void 0
160
174
  ? void 0
161
- : _h.find((t) => {
175
+ : _j.find((t) => {
162
176
  var _a, _b, _c;
163
177
  return (
164
178
  ((_a = t._id) === null || _a === void 0
@@ -175,12 +189,12 @@ export const create_proforma = async (event, options) => {
175
189
  if (!repzo_tax) throw `Tax with _id: ${item.tax._id} not found in Repzo`;
176
190
  // Get Repzo UoM
177
191
  const repzo_measureunit =
178
- (_j =
192
+ (_k =
179
193
  repzo_measureunits === null || repzo_measureunits === void 0
180
194
  ? void 0
181
- : repzo_measureunits.data) === null || _j === void 0
195
+ : repzo_measureunits.data) === null || _k === void 0
182
196
  ? void 0
183
- : _j.find((m) => {
197
+ : _k.find((m) => {
184
198
  var _a, _b, _c;
185
199
  return (
186
200
  ((_a = m._id) === null || _a === void 0
@@ -196,16 +210,16 @@ export const create_proforma = async (event, options) => {
196
210
  });
197
211
  if (!repzo_measureunit)
198
212
  throw `Uom with _id: ${
199
- (_k = item.measureunit) === null || _k === void 0 ? void 0 : _k._id
213
+ (_l = item.measureunit) === null || _l === void 0 ? void 0 : _l._id
200
214
  } not found in Repzo`;
201
215
  // Get Repzo Product
202
216
  const repzo_product =
203
- (_l =
217
+ (_m =
204
218
  repzo_products === null || repzo_products === void 0
205
219
  ? void 0
206
- : repzo_products.data) === null || _l === void 0
220
+ : repzo_products.data) === null || _m === void 0
207
221
  ? void 0
208
- : _l.find((p) => {
222
+ : _m.find((p) => {
209
223
  var _a, _b, _c;
210
224
  return (
211
225
  ((_a = p._id) === null || _a === void 0
@@ -222,6 +236,18 @@ export const create_proforma = async (event, options) => {
222
236
  if (!repzo_product)
223
237
  throw `Product with _id: ${item.measureunit._id} not found in Repzo`;
224
238
  items.push({
239
+ MEO_Serial: getUniqueConcatenatedValues(
240
+ item,
241
+ "ref",
242
+ " | ",
243
+ all_promotions
244
+ ),
245
+ Promotion_Name: getUniqueConcatenatedValues(
246
+ item,
247
+ "name",
248
+ " | ",
249
+ all_promotions
250
+ ),
225
251
  ItemCode: item.variant.variant_name,
226
252
  Quantity: item.qty,
227
253
  TaxCode: repzo_tax.integration_meta.TaxCode,
@@ -231,28 +257,28 @@ export const create_proforma = async (event, options) => {
231
257
  LineTotal: item.total_before_tax / 1000,
232
258
  UomCode: repzo_measureunit.integration_meta.ALTUOMID,
233
259
  Brand:
234
- (_m = repzo_product.integration_meta) === null || _m === void 0
260
+ (_o = repzo_product.integration_meta) === null || _o === void 0
235
261
  ? void 0
236
- : _m.BRAND,
262
+ : _o.BRAND,
237
263
  Department:
238
- ((_o =
264
+ ((_p =
239
265
  repzo_rep === null || repzo_rep === void 0
240
266
  ? void 0
241
- : repzo_rep.integration_meta) === null || _o === void 0
267
+ : repzo_rep.integration_meta) === null || _p === void 0
242
268
  ? void 0
243
- : _o.DEPARTMENTCODE) ||
244
- ((_p = options.data) === null || _p === void 0
269
+ : _p.DEPARTMENTCODE) ||
270
+ ((_q = options.data) === null || _q === void 0
245
271
  ? void 0
246
- : _p.DepartmentCode), // "D2"
272
+ : _q.DepartmentCode), // "D2"
247
273
  });
248
274
  }
249
275
  const sap_invoice = {
250
276
  RefNum: repzo_proforma.serial_number.formatted,
251
277
  SalPersCode: repzo_rep
252
278
  ? repzo_rep.integration_id
253
- : (_q = options.data) === null || _q === void 0
279
+ : (_r = options.data) === null || _r === void 0
254
280
  ? void 0
255
- : _q.SalPersCode,
281
+ : _r.SalPersCode,
256
282
  DocDate: moment(repzo_proforma.issue_date, "YYYY-MM-DD").format(
257
283
  "YYYYMMDD"
258
284
  ),
@@ -253,7 +253,7 @@ export const create_return_invoice = async (event, options) => {
253
253
  Brand:
254
254
  (_o = repzo_product.integration_meta) === null || _o === void 0
255
255
  ? void 0
256
- : _o.BRAND,
256
+ : _o.BRAND, // "B1",
257
257
  Department:
258
258
  ((_p =
259
259
  repzo_rep === null || repzo_rep === void 0
@@ -263,7 +263,7 @@ export const create_return_invoice = async (event, options) => {
263
263
  : _p.DEPARTMENTCODE) ||
264
264
  ((_q = options.data) === null || _q === void 0
265
265
  ? void 0
266
- : _q.DepartmentCode),
266
+ : _q.DepartmentCode), // "D2"
267
267
  Return_Reason:
268
268
  item_return_reason === null || item_return_reason === void 0
269
269
  ? void 0
@@ -171,7 +171,7 @@ export const create_transfer = async (event, options) => {
171
171
  ? repzo_rep.integration_id
172
172
  : (_o = options.data) === null || _o === void 0
173
173
  ? void 0
174
- : _o.SalesPersonCode,
174
+ : _o.SalesPersonCode, // "111"
175
175
  FromWarehouse: body.from.code,
176
176
  ToWarehouse: body.to.code,
177
177
  RepzoStockTransferLines: variants,
@@ -231,7 +231,7 @@ export const sync_client = async (commandEvent) => {
231
231
  paymentTerm: paymentTerm ? paymentTerm._id : undefined,
232
232
  sv_priceList: priceList ? priceList._id : undefined,
233
233
  disabled: sap_client.ACTIVE == "Y" ? false : true,
234
- payment_type: sap_client.PAYMENTTERM ? "credit" : "cash",
234
+ payment_type: sap_client.PAYMENTTERM ? "credit" : "cash", // sap_client.CLIENTGROUP == "Cash Van"
235
235
  integrated_client_balance:
236
236
  client_credit_consumed && Math.round(client_credit_consumed * 1000),
237
237
  };
@@ -197,7 +197,7 @@ export const sync_measureunit = async (commandEvent) => {
197
197
  const body = {
198
198
  parent: repzo_parent_id,
199
199
  name: sap_UoM.ALTUOMCODE,
200
- factor: sap_UoM.repzo_factor || 0,
200
+ factor: sap_UoM.repzo_factor || 0, // ??????
201
201
  disabled: false,
202
202
  integration_meta: {
203
203
  id: `${nameSpace}_${sap_UoM.UOMGROUPENTRY}_${sap_UoM.ALTUOMID}`,
@@ -299,7 +299,7 @@ export const sync_product = async (commandEvent) => {
299
299
  {
300
300
  disabled: false,
301
301
  name: sap_product.ITEMCODE,
302
- price: 0,
302
+ price: 0, // Math.round(sap_product.PRICE * 1000),
303
303
  integration_meta: {
304
304
  id: `${nameSpace}_${sap_product.ITEMCODE}`,
305
305
  ITEMCODE: sap_product.ITEMCODE,
@@ -96,7 +96,7 @@ export const sync_tax = async (commandEvent) => {
96
96
  const body = {
97
97
  name: sap_tax.TaxName,
98
98
  rate: Number(sap_tax.TaxRate / 100),
99
- type: "additive",
99
+ type: "additive", // hardcode
100
100
  disabled: sap_tax.Inactive === "N" ? false : true,
101
101
  integration_meta: {
102
102
  id: `${nameSpace}_${sap_tax.TaxCode}`,
@@ -6,7 +6,7 @@ Actions(
6
6
  rawPath: "/actions",
7
7
  rawQueryString: "app=repzo-sap-absjo&action=create_invoice",
8
8
  headers: {
9
- action_sync_id: "Actions-0000001",
9
+ action_sync_id: "Actions-0000001", // SYNC_ID
10
10
  accept: "*/*",
11
11
  "accept-encoding": "gzip, deflate",
12
12
  "content-length": "3658",
@@ -6,7 +6,7 @@ Actions(
6
6
  rawPath: "/actions",
7
7
  rawQueryString: "app=repzo-sap-absjo&action=create_payment",
8
8
  headers: {
9
- action_sync_id: "Actions-0000004",
9
+ action_sync_id: "Actions-0000004", // SYNC_ID
10
10
  accept: "*/*",
11
11
  "accept-encoding": "gzip, deflate",
12
12
  "content-length": "3658",
@@ -6,7 +6,7 @@ Actions(
6
6
  rawPath: "/actions",
7
7
  rawQueryString: "app=repzo-sap-absjo&action=create_proforma",
8
8
  headers: {
9
- action_sync_id: "Actions-0000003",
9
+ action_sync_id: "Actions-0000003", // SYNC_ID
10
10
  accept: "*/*",
11
11
  "accept-encoding": "gzip, deflate",
12
12
  "content-length": "3658",
@@ -6,7 +6,7 @@ Actions(
6
6
  rawPath: "/actions",
7
7
  rawQueryString: "app=repzo-sap-absjo&action=create_return_invoice",
8
8
  headers: {
9
- action_sync_id: "Actions-0000002",
9
+ action_sync_id: "Actions-0000002", // SYNC_ID
10
10
  accept: "*/*",
11
11
  "accept-encoding": "gzip, deflate",
12
12
  "content-length": "3658",
@@ -6,7 +6,7 @@ Actions(
6
6
  rawPath: "/actions",
7
7
  rawQueryString: "app=repzo-sap-absjo&action=create_transfer",
8
8
  headers: {
9
- action_sync_id: "Actions-0000005",
9
+ action_sync_id: "Actions-0000005", // SYNC_ID
10
10
  accept: "*/*",
11
11
  "accept-encoding": "gzip, deflate",
12
12
  "content-length": "3658",
@@ -87,7 +87,7 @@ let commandEvent = {
87
87
  __v: 0,
88
88
  },
89
89
  end_of_day: "04:00",
90
- nameSpace: ["unisap"],
90
+ nameSpace: ["unisap"], // demosv
91
91
  timezone: "Asia/Amman",
92
92
  meta: "",
93
93
  env: "staging",
@@ -87,7 +87,7 @@ let commandEvent = {
87
87
  __v: 0,
88
88
  },
89
89
  end_of_day: "04:00",
90
- nameSpace: ["unisap"],
90
+ nameSpace: ["unisap"], // demosv
91
91
  timezone: "Asia/Amman",
92
92
  meta: "",
93
93
  env: "staging",
@@ -87,7 +87,7 @@ let commandEvent = {
87
87
  __v: 0,
88
88
  },
89
89
  end_of_day: "04:00",
90
- nameSpace: ["unisap"],
90
+ nameSpace: ["unisap"], // demosv
91
91
  timezone: "Asia/Amman",
92
92
  meta: "",
93
93
  env: "staging",
@@ -87,7 +87,7 @@ let commandEvent = {
87
87
  __v: 0,
88
88
  },
89
89
  end_of_day: "04:00",
90
- nameSpace: ["unisap"],
90
+ nameSpace: ["unisap"], // demosv
91
91
  timezone: "Asia/Amman",
92
92
  meta: "",
93
93
  env: "staging",
@@ -341,7 +341,7 @@ let commandEvent = {
341
341
  timezone: "Asia/Amman",
342
342
  meta: "",
343
343
  env: "staging",
344
- sync_id: "9811c42a-d26e-41e0-bee5-e75260c04767",
344
+ sync_id: "9811c42a-d26e-41e0-bee5-e75260c04767", // should change
345
345
  command: "price_list",
346
346
  };
347
347
  Commands(commandEvent);
@@ -353,7 +353,7 @@ let commandEvent = {
353
353
  timezone: "Asia/Amman",
354
354
  meta: "",
355
355
  env: "staging",
356
- sync_id: "a7e620b6-c5a2-44f7-b44b-3599b3ea1b54",
356
+ sync_id: "a7e620b6-c5a2-44f7-b44b-3599b3ea1b54", // should change
357
357
  command: "price_list_disabled",
358
358
  };
359
359
  Commands(commandEvent);
@@ -87,7 +87,7 @@ let commandEvent = {
87
87
  __v: 0,
88
88
  },
89
89
  end_of_day: "04:00",
90
- nameSpace: ["unisap"],
90
+ nameSpace: ["unisap"], // demosv
91
91
  timezone: "Asia/Amman",
92
92
  meta: "",
93
93
  env: "staging",
package/lib/util.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import Repzo from "repzo";
2
2
  import { CommandType } from "./types";
3
+ import { Service } from "repzo/src/types";
3
4
  interface Params {
4
5
  [key: string]: any;
5
6
  }
@@ -79,4 +80,16 @@ export declare const send_command_to_marketplace: ({
79
80
  env: "production" | "staging" | "local";
80
81
  repzoApiKey: string;
81
82
  }) => Promise<void>;
83
+ export declare const getUniqueConcatenatedValues: (
84
+ item: Service.Item.Schema,
85
+ key: "name" | "ref",
86
+ delimiter: string,
87
+ all_promos: {
88
+ [promo_id: string]: {
89
+ _id: string;
90
+ name: string;
91
+ ref?: string | undefined;
92
+ };
93
+ }
94
+ ) => string;
82
95
  export {};
package/lib/util.js CHANGED
@@ -192,3 +192,29 @@ export const send_command_to_marketplace = async ({
192
192
  throw e;
193
193
  }
194
194
  };
195
+ export const getUniqueConcatenatedValues = function (
196
+ item,
197
+ key,
198
+ delimiter,
199
+ all_promos
200
+ ) {
201
+ var _a, _b, _c;
202
+ item.general_promotions = item.general_promotions || [];
203
+ item.used_promotions = item.used_promotions || [];
204
+ const allPromotions = [...item.general_promotions, ...item.used_promotions];
205
+ if ((_a = item.promotions) === null || _a === void 0 ? void 0 : _a.isGet) {
206
+ const promo_id =
207
+ (_c =
208
+ (_b = item.promotions.bookings) === null || _b === void 0
209
+ ? void 0
210
+ : _b[0]) === null || _c === void 0
211
+ ? void 0
212
+ : _c.promotion;
213
+ if (promo_id && all_promos[promo_id])
214
+ allPromotions.push(all_promos[promo_id]);
215
+ }
216
+ const uniqueValues = new Set(
217
+ allPromotions.map((promotion) => promotion[key]).filter((value) => value)
218
+ );
219
+ return [...uniqueValues].join(delimiter);
220
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "repzo-sap-absjo",
3
3
  "description": "repzo SAP ABS jo integration",
4
- "version": "1.0.21",
4
+ "version": "1.0.23",
5
5
  "homepage": "",
6
6
  "keywords": [],
7
7
  "author": {
@@ -45,7 +45,7 @@
45
45
  "jsonwebtoken": "^8.5.1",
46
46
  "lodash": "^4.17.21",
47
47
  "moment-timezone": "^0.5.34",
48
- "repzo": "^1.0.29",
48
+ "repzo": "^1.0.33",
49
49
  "uuid": "^8.3.2"
50
50
  }
51
51
  }
@@ -1,6 +1,12 @@
1
1
  import Repzo from "repzo";
2
2
  import { EVENT, Config } from "../types";
3
- import { _fetch, _create, _update, _delete } from "../util.js";
3
+ import {
4
+ _fetch,
5
+ _create,
6
+ _update,
7
+ _delete,
8
+ getUniqueConcatenatedValues,
9
+ } from "../util.js";
4
10
  import { Service } from "repzo/src/types";
5
11
  import { v4 as uuid } from "uuid";
6
12
  import moment from "moment-timezone";
@@ -211,6 +217,18 @@ export const create_invoice = async (event: EVENT, options: Config) => {
211
217
  { per_page: 50000 }
212
218
  );
213
219
 
220
+ const all_promotions: {
221
+ [promo_id: string]: { _id: string; name: string; ref?: string };
222
+ } = {};
223
+ repzo_invoice?.promotions?.forEach((promo) => {
224
+ if (!promo) return;
225
+ all_promotions[promo._id] = {
226
+ _id: promo._id,
227
+ name: promo.name,
228
+ ref: promo.ref,
229
+ };
230
+ });
231
+
214
232
  // Prepare SAP_invoice_items
215
233
  const items = [];
216
234
 
@@ -238,8 +256,18 @@ export const create_invoice = async (event: EVENT, options: Config) => {
238
256
  throw `Product with _id: ${item.measureunit._id} not found in Repzo`;
239
257
 
240
258
  items.push({
241
- MEO_Serial: getUniqueConcatenatedValues(item, "ref", " | "),
242
- Promotion_Name: getUniqueConcatenatedValues(item, "name", " | "),
259
+ MEO_Serial: getUniqueConcatenatedValues(
260
+ item,
261
+ "ref",
262
+ " | ",
263
+ all_promotions
264
+ ),
265
+ Promotion_Name: getUniqueConcatenatedValues(
266
+ item,
267
+ "name",
268
+ " | ",
269
+ all_promotions
270
+ ),
243
271
  ItemCode: item.variant.variant_name,
244
272
  Quantity: item.qty,
245
273
  TaxCode: repzo_tax.integration_meta.TaxCode,
@@ -325,20 +353,3 @@ export const get_invoice_from_sap = async (
325
353
  throw e;
326
354
  }
327
355
  };
328
-
329
- function getUniqueConcatenatedValues(
330
- item: Service.Item.Schema,
331
- key: "name" | "ref",
332
- delimiter: string
333
- ): string {
334
- item.general_promotions = item.general_promotions || [];
335
- item.used_promotions = item.used_promotions || [];
336
- const allPromotions: { name: string; ref?: string; [key: string]: any }[] = [
337
- ...item.general_promotions,
338
- ...item.used_promotions,
339
- ];
340
- const uniqueValues = new Set(
341
- allPromotions.map((promotion) => promotion[key]).filter((value) => value)
342
- );
343
- return [...uniqueValues].join(delimiter);
344
- }
@@ -1,11 +1,19 @@
1
1
  import Repzo from "repzo";
2
2
  import { EVENT, Config } from "../types";
3
- import { _fetch, _create, _update, _delete } from "../util.js";
3
+ import {
4
+ _fetch,
5
+ _create,
6
+ _update,
7
+ _delete,
8
+ getUniqueConcatenatedValues,
9
+ } from "../util.js";
4
10
  import { Service } from "repzo/src/types";
5
11
  import { v4 as uuid } from "uuid";
6
12
  import moment from "moment-timezone";
7
13
 
8
14
  interface SAPProformaItem {
15
+ MEO_Serial: string; // "INV-1021-4 | 010-LAG-PO0002";
16
+ Promotion_Name: string; // "INV-1021-4 | 010-LAG-PO0002";
9
17
  ItemCode: string; // "010-LAG-PO0002";
10
18
  Quantity: number; // 10;
11
19
  TaxCode: string; // "S16";
@@ -135,6 +143,18 @@ export const create_proforma = async (event: EVENT, options: Config) => {
135
143
  { per_page: 50000 }
136
144
  );
137
145
 
146
+ const all_promotions: {
147
+ [promo_id: string]: { _id: string; name: string; ref?: string };
148
+ } = {};
149
+ repzo_proforma?.promotions?.forEach((promo) => {
150
+ if (!promo) return;
151
+ all_promotions[promo._id] = {
152
+ _id: promo._id,
153
+ name: promo.name,
154
+ ref: promo.ref,
155
+ };
156
+ });
157
+
138
158
  // Prepare SAP_invoice_items
139
159
  const items: SAPProformaItem[] = [];
140
160
 
@@ -162,6 +182,18 @@ export const create_proforma = async (event: EVENT, options: Config) => {
162
182
  throw `Product with _id: ${item.measureunit._id} not found in Repzo`;
163
183
 
164
184
  items.push({
185
+ MEO_Serial: getUniqueConcatenatedValues(
186
+ item,
187
+ "ref",
188
+ " | ",
189
+ all_promotions
190
+ ),
191
+ Promotion_Name: getUniqueConcatenatedValues(
192
+ item,
193
+ "name",
194
+ " | ",
195
+ all_promotions
196
+ ),
165
197
  ItemCode: item.variant.variant_name,
166
198
  Quantity: item.qty,
167
199
  TaxCode: repzo_tax.integration_meta.TaxCode,
@@ -11,7 +11,7 @@ export const basic = async (commandEvent: CommandEvent) => {
11
11
  const commandLog = new Repzo.CommandLog(
12
12
  repzo,
13
13
  commandEvent.app,
14
- commandEvent.command,
14
+ commandEvent.command
15
15
  );
16
16
  try {
17
17
  // console.log("basic sync");
@@ -35,7 +35,7 @@ export const sync_price_list_disabled = async (commandEvent: CommandEvent) => {
35
35
  const commandLog = new Repzo.CommandLog(
36
36
  repzo,
37
37
  commandEvent.app,
38
- commandEvent.command,
38
+ commandEvent.command
39
39
  );
40
40
 
41
41
  try {
@@ -66,7 +66,7 @@ export const sync_price_list_disabled = async (commandEvent: CommandEvent) => {
66
66
  result.repzo_PL_total = repzo_price_lists?.data?.length;
67
67
  await commandLog
68
68
  .addDetail(
69
- `${repzo_price_lists?.data?.length} Active Price Lists in Repzo`,
69
+ `${repzo_price_lists?.data?.length} Active Price Lists in Repzo`
70
70
  )
71
71
  .commit();
72
72
 
@@ -89,7 +89,7 @@ export const sync_price_list_disabled = async (commandEvent: CommandEvent) => {
89
89
  {
90
90
  updateAt: "20000101:000000",
91
91
  PLDID: sap_price_list_id,
92
- },
92
+ }
93
93
  );
94
94
 
95
95
  result.sap_PL_items_total += sap_price_list_items?.length || 0;
@@ -140,7 +140,7 @@ export const sync_price_list_disabled = async (commandEvent: CommandEvent) => {
140
140
  console.log(
141
141
  "Disable Price List Item Failed >> ",
142
142
  e?.response?.data,
143
- repzo_item,
143
+ repzo_item
144
144
  );
145
145
  failed_docs_report.push({
146
146
  method: "update",
@@ -159,12 +159,12 @@ export const sync_price_list_disabled = async (commandEvent: CommandEvent) => {
159
159
  repzo,
160
160
  commandEvent.app._id,
161
161
  bench_time_key,
162
- new_bench_time,
162
+ new_bench_time
163
163
  );
164
164
  await commandLog
165
165
  .setStatus(
166
166
  "success",
167
- failed_docs_report.length ? failed_docs_report : null,
167
+ failed_docs_report.length ? failed_docs_report : null
168
168
  )
169
169
  .setBody(result)
170
170
  .commit();
@@ -179,13 +179,13 @@ export const sync_price_list_disabled = async (commandEvent: CommandEvent) => {
179
179
 
180
180
  const get_sap_price_list = async (
181
181
  serviceEndPoint: string,
182
- query?: { updateAt?: string; PLDID?: string },
182
+ query?: { updateAt?: string; PLDID?: string }
183
183
  ): Promise<SAPPriceListItem[]> => {
184
184
  try {
185
185
  const sap_price_lists: SAPPriceListItems = await _create(
186
186
  serviceEndPoint,
187
187
  "/PriceList",
188
- { UpdateAt: query?.updateAt, PLDID: query?.PLDID },
188
+ { UpdateAt: query?.updateAt, PLDID: query?.PLDID }
189
189
  );
190
190
  return sap_price_lists.PriceList;
191
191
  } catch (e: any) {
package/src/util.ts CHANGED
@@ -2,7 +2,7 @@ import axios from "axios";
2
2
  import Repzo from "repzo";
3
3
  import moment from "moment-timezone";
4
4
  import { CommandType } from "./types";
5
-
5
+ import { Service } from "repzo/src/types";
6
6
  interface Params {
7
7
  [key: string]: any;
8
8
  }
@@ -241,3 +241,28 @@ export const send_command_to_marketplace = async ({
241
241
  throw e;
242
242
  }
243
243
  };
244
+
245
+ export const getUniqueConcatenatedValues = function (
246
+ item: Service.Item.Schema,
247
+ key: "name" | "ref",
248
+ delimiter: string,
249
+ all_promos: {
250
+ [promo_id: string]: { _id: string; name: string; ref?: string };
251
+ }
252
+ ): string {
253
+ item.general_promotions = item.general_promotions || [];
254
+ item.used_promotions = item.used_promotions || [];
255
+ const allPromotions: { name: string; ref?: string; [key: string]: any }[] = [
256
+ ...item.general_promotions,
257
+ ...item.used_promotions,
258
+ ];
259
+ if (item.promotions?.isGet) {
260
+ const promo_id = item.promotions.bookings?.[0]?.promotion;
261
+ if (promo_id && all_promos[promo_id])
262
+ allPromotions.push(all_promos[promo_id]);
263
+ }
264
+ const uniqueValues = new Set(
265
+ allPromotions.map((promotion) => promotion[key]).filter((value) => value)
266
+ );
267
+ return [...uniqueValues].join(delimiter);
268
+ };