@subiz/widget-v4 4.1.158 → 4.1.160

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 (130) hide show
  1. package/assets/less/message_input.less +1 -1
  2. package/compiled_src/bot.js +1 -1
  3. package/compiled_src/chatbox/Event.js +2 -0
  4. package/compiled_src/chatbox/Widget.js +5 -2
  5. package/compiled_src/lib.js +4 -1
  6. package/compiled_src/store/store.js +16 -2
  7. package/dist/127.js +273 -0
  8. package/dist/132.js +2802 -0
  9. package/dist/185.js +1827 -0
  10. package/dist/1989dc3a5f1.127.js +1 -0
  11. package/dist/1989dc3a5f1.132.js +1 -0
  12. package/dist/1989dc3a5f1.185.js +1 -0
  13. package/dist/1989dc3a5f1.27.js +1 -0
  14. package/dist/1989dc3a5f1.278.js +1 -0
  15. package/dist/1989dc3a5f1.339.js +1 -0
  16. package/dist/1989dc3a5f1.459.js +1 -0
  17. package/dist/1989dc3a5f1.490.js +1 -0
  18. package/dist/1989dc3a5f1.74.js +1 -0
  19. package/dist/1989dc3a5f1.997.js +1 -0
  20. package/dist/1989dc3a5f1.app.js +1 -0
  21. package/dist/1989dc3a5f1.chat.html +1 -0
  22. package/dist/1989dc3a5f1.chat.js +1 -0
  23. package/dist/1989dc3a5f1.form.html +1 -0
  24. package/dist/1989dc3a5f1.form.js +1 -0
  25. package/dist/1989dc3a5f1.index.html +71 -0
  26. package/dist/1989dc3a5f1.library.html +71 -0
  27. package/dist/1989dc3a5f1.library.js +1 -0
  28. package/dist/1989dc3a5f1.preview.html +759 -0
  29. package/dist/1989dc3a5f1.preview.js +1 -0
  30. package/dist/1989dc3a5f1.webview.js +1 -0
  31. package/dist/1989dc3ac95.127.js +1 -0
  32. package/dist/1989dc3ac95.132.js +1 -0
  33. package/dist/1989dc3ac95.185.js +1 -0
  34. package/dist/1989dc3ac95.27.js +1 -0
  35. package/dist/1989dc3ac95.278.js +1 -0
  36. package/dist/1989dc3ac95.339.js +1 -0
  37. package/dist/1989dc3ac95.459.js +1 -0
  38. package/dist/1989dc3ac95.490.js +1 -0
  39. package/dist/1989dc3ac95.74.js +1 -0
  40. package/dist/1989dc3ac95.997.js +1 -0
  41. package/dist/1989dc3ac95.app.js +1 -0
  42. package/dist/1989dc3ac95.chat.html +1 -0
  43. package/dist/1989dc3ac95.chat.js +1 -0
  44. package/dist/1989dc3ac95.form.html +1 -0
  45. package/dist/1989dc3ac95.form.js +1 -0
  46. package/dist/1989dc3ac95.index.html +71 -0
  47. package/dist/1989dc3ac95.library.html +71 -0
  48. package/dist/1989dc3ac95.library.js +1 -0
  49. package/dist/1989dc3ac95.preview.html +759 -0
  50. package/dist/1989dc3ac95.preview.js +1 -0
  51. package/dist/1989dc3ac95.webview.js +1 -0
  52. package/dist/27.js +107 -0
  53. package/dist/278.js +417 -0
  54. package/dist/459.js +107 -0
  55. package/dist/490.js +305 -0
  56. package/dist/74.js +372 -0
  57. package/dist/997.js +107 -0
  58. package/dist/HASH +1 -0
  59. package/dist/assets/img/Facebook.64607ec.png +0 -0
  60. package/dist/assets/img/Zalo.6845707.png +0 -0
  61. package/dist/assets/img/award1a.1a58e10.png +0 -0
  62. package/dist/assets/img/award3a.3b74423.png +0 -0
  63. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  64. package/dist/assets/img/award5.39eb7ae.png +0 -0
  65. package/dist/assets/img/bubble_default.7d5e4ab.svg +20 -0
  66. package/dist/assets/img/caret.998eb8f.svg +1 -0
  67. package/dist/assets/img/convos_empty.2353007.svg +72 -0
  68. package/dist/assets/img/default.06e6ee0.jpg +0 -0
  69. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  70. package/dist/assets/img/done_gray.d7e8203.svg +4 -0
  71. package/dist/assets/img/done_green.b817fd4.svg +4 -0
  72. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  73. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  74. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  75. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  76. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  77. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  78. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  79. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  80. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  81. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  82. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  83. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  84. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  85. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  86. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  87. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  88. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  89. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  90. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  91. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  92. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  93. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  94. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  95. package/dist/assets/img/empty.29bed2d.svg +23 -0
  96. package/dist/assets/img/empty_1.0b98af0.svg +11 -0
  97. package/dist/assets/img/examplte_logo.f86535f.svg +1 -0
  98. package/dist/assets/img/external-link.90577cc.svg +1 -0
  99. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  100. package/dist/assets/img/ghn.070f8e3.svg +17 -0
  101. package/dist/assets/img/ghtk.326eac1.svg +18 -0
  102. package/dist/assets/img/image_default.be0698b.png +0 -0
  103. package/dist/assets/img/info.ebce7ea.svg +1 -0
  104. package/dist/assets/img/loader.37000a7.svg +1 -0
  105. package/dist/assets/img/loading_static.a27f0ac.svg +10 -0
  106. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  107. package/dist/assets/img/main-service2.9b99549.png +0 -0
  108. package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
  109. package/dist/assets/img/package.8d37d0f.svg +5 -0
  110. package/dist/assets/img/package_fade.763c001.svg +1 -0
  111. package/dist/assets/img/rating--average.1ea492c.svg +12 -0
  112. package/dist/assets/img/rating--great.e3d712e.svg +16 -0
  113. package/dist/assets/img/rating--poor.2938a25.svg +12 -0
  114. package/dist/assets/img/search.f9705ff.svg +1 -0
  115. package/dist/assets/img/send.6db52a9.svg +3 -0
  116. package/dist/assets/img/shop.f7dc7d8.svg +1 -0
  117. package/dist/assets/img/shop_faded.df7845a.svg +1 -0
  118. package/dist/assets/img/stars_v2.79cf728.png +0 -0
  119. package/dist/assets/img/subiz-mono.8fbc067.svg +3 -0
  120. package/dist/assets/img/x.26fdfa3.svg +5 -0
  121. package/dist/malicious-app.js +17 -0
  122. package/dist/screenshoot.html +7 -0
  123. package/dist/screenshoot.js +11880 -0
  124. package/malicious-app.js.hash.js +17 -0
  125. package/package.json +2 -2
  126. package/src/bot.js +6 -1
  127. package/src/chatbox/Event.js +2 -0
  128. package/src/chatbox/Widget.js +3 -1
  129. package/src/lib.js +7 -2
  130. package/src/store/store.js +17 -1
@@ -86,7 +86,7 @@ textarea[disabled='disabled'] {
86
86
 
87
87
  .message-input--preform {
88
88
  justify-content: center;
89
- padding: @spacer2 @spacer3;
89
+ padding: 11px; @spacer2;
90
90
  }
91
91
 
92
92
  .btn--preform {
@@ -21,7 +21,7 @@ function _default(store) {
21
21
  if (!bot.welcome_message) return;
22
22
  let {
23
23
  error
24
- } = await store.startLightConvo(bot.id, bot.welcome_message, common.getLocale(bot, _index.default.detectLang()));
24
+ } = await store.startLightConvo(bot.id, bot.welcome_message, common.getLocale(bot, _index.default.detectLang()), true);
25
25
  if (error) return console.error(error);
26
26
  store.logBotRun(bot.id);
27
27
  return;
@@ -435,6 +435,8 @@ class Event extends _common.Com {
435
435
  }
436
436
  renderReactions() {
437
437
  if (this.props.store.isAIDevMode()) return null;
438
+ let cid = _index.default.get(this.props.event.ev, 'data.message.conversation_id', '');
439
+ if (cid.startsWith('cslight')) return null;
438
440
  let ev = _index.default.get(this.props.event, 'ev') || {};
439
441
  let pongs = _index.default.get(ev, 'data.message.pongs') || [];
440
442
  let hasLike = this.hasLike();
@@ -64,6 +64,7 @@ class Widget extends _common.Com {
64
64
  creating: true
65
65
  });
66
66
  let botid = cid.split('_')[0].slice(7);
67
+ let oldconvo = this.props.store.matchConvo(this.props.cid);
67
68
  const {
68
69
  convo,
69
70
  error
@@ -72,9 +73,11 @@ class Widget extends _common.Com {
72
73
  message: text,
73
74
  members: [{
74
75
  type: 'bot',
75
- id: botid
76
+ id: botid,
77
+ bot_version: oldconvo.bot_version
76
78
  }],
77
- initial_by: this.props.store.matchUser().id
79
+ initial_by: this.props.store.matchUser().id,
80
+ is_testing: oldconvo.is_testing
78
81
  });
79
82
  if (_creating != this._creating) return;
80
83
  if (error) {
@@ -217,7 +217,7 @@ class Widget {
217
217
  return this.store.sendConversion(formid, values, impressiontoken);
218
218
  }
219
219
  startConvo(req) {
220
- return this.store.startConvo(req);
220
+ if (!req.is_light) return this.store.startConvo(req);else return this.store.startLightConvo(req.bot_id, req.welcome_message, req.locale, req.is_testing, req.bot_version);
221
221
  }
222
222
  async showGreeting() {
223
223
  await this.domGate.entry();
@@ -288,6 +288,9 @@ class Widget {
288
288
  this.subs = _index.default.filter(this.subs, sub => sub !== cb);
289
289
  this.subs.push(cb);
290
290
  }
291
+ overrideWelcomeMessage(msg) {
292
+ this.store.overrideWelcomeMessage(msg);
293
+ }
291
294
  overrideAccount(acc) {
292
295
  this.store.overrideAcc(acc);
293
296
  }
@@ -334,6 +334,18 @@ class Store {
334
334
  createTicket(ticket) {
335
335
  return this.api.create_ticket(ticket);
336
336
  }
337
+ overrideWelcomeMessage(msg) {
338
+ _index.default.map(this.lightConvos, (convo, convoid) => {
339
+ if (convo.last_message_sent) {
340
+ convo.last_message_sent.data.message = msg;
341
+ convo.last_message_sent.data.message.conversation_id = convoid;
342
+ }
343
+ let ev = _index.default.get(convo.events, '0');
344
+ ev.data.message = msg;
345
+ ev.data.message.conversation_id = convoid;
346
+ this.pubsub.publish('events', ev);
347
+ });
348
+ }
337
349
  async overrideAcc(acc) {
338
350
  this.forceAcc = _index.default.cloneDeep(acc);
339
351
  await this.readyGate.entry();
@@ -853,7 +865,7 @@ class Store {
853
865
  delete this.lightConvos[id];
854
866
  this.kv.put('light_convos', this.lightConvos);
855
867
  }
856
- startLightConvo(botid, message, locale) {
868
+ startLightConvo(botid, message, locale, is_testing, botversion) {
857
869
  let convoid = 'cslight' + botid + '_' + this.now();
858
870
  let user = this.cache.match('user') || {};
859
871
  let old = this.lightConvos[convoid];
@@ -896,7 +908,9 @@ class Store {
896
908
  source: 'web'
897
909
  },
898
910
  traffic_source: 'direct',
899
- events: [ev]
911
+ events: [ev],
912
+ is_testing: is_testing,
913
+ bot_versio: botversion
900
914
  };
901
915
  this.lightConvos[convoid] = newconvo;
902
916
  this.kv.put('light_convos', this.lightConvos);
package/dist/127.js ADDED
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ (self["webpackChunk_subiz_widget_v4"] = self["webpackChunk_subiz_widget_v4"] || []).push([[127],{
3
+
4
+ /***/ 6127:
5
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
+
7
+ __webpack_require__.r(__webpack_exports__);
8
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
9
+ /* harmony export */ "default": () => (/* binding */ ProductAttachments)
10
+ /* harmony export */ });
11
+ /* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8150);
12
+ /* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2840);
13
+ /* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(172);
14
+
15
+
16
+
17
+ class ProductAttachments extends _common_js__WEBPACK_IMPORTED_MODULE_1__/* .Com */ .Mw {
18
+ render() {
19
+ let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(this.props.ev, 'by.type');
20
+ if (byType === 'user') return null;
21
+ let acc = this.props.store.matchAccount();
22
+ var attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(this.props.ev, 'data.message.attachments', []);
23
+ let orders = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.filter(attachments, att => att.type === 'order' && att.order).map(att => att.order);
24
+ if (orders.length === 0) return null;
25
+ let $orders = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.map(orders, (order, index) => {
26
+ calcOrderTotal(order);
27
+ let $note = null;
28
+ if (order.note) {
29
+ $note = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
30
+ class: "order_attachment__label"
31
+ }, this.props.t('note')), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
32
+ class: "order_attachment__note",
33
+ title: order.note
34
+ }, order.note));
35
+ }
36
+ let $products = null;
37
+ if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.size(order.items) > 0) {
38
+ $products = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
39
+ class: "order_attachment__label"
40
+ }, this.props.t('product')), _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.map(order.items, item => {
41
+ let product = item.product || {};
42
+ return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
43
+ class: "order_attachment__product"
44
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("img", {
45
+ class: "order_attachment__product_img",
46
+ alt: '' + _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(product, 'id'),
47
+ src: _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(product, 'image', __webpack_require__(2876))
48
+ }), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
49
+ style: "overflow: hidden !important;"
50
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
51
+ class: "order_attachment__product_name",
52
+ title: this.props.t.i18n(product.i18n_name) || product.name
53
+ }, this.props.t.i18n(product.i18n_name) || product.name), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
54
+ class: "order_attachment__product_desc"
55
+ }, getProductPropName(product, ' / ')), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
56
+ class: "order_attachment__product_desc"
57
+ }, this.props.t('qty'), " ", item.quantity, "\xA0\xB7\xA0", _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(product.price))));
58
+ }));
59
+ }
60
+ let $total = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
61
+ class: "order_attachment__footer"
62
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
63
+ class: "d-flex align-items-center justify-content-between"
64
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, this.props.t('total')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("b", {
65
+ class: "order_attachment__total"
66
+ }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order.total)))));
67
+ let phoneattr = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.find(_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order, 'user.attributes', []), attr => attr.key === 'phones') || {
68
+ key: 'phones',
69
+ text: ''
70
+ };
71
+ let phone = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order, 'shipping.address.phone', '').trim();
72
+ phone = phone || _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.trim(phoneattr.text);
73
+ if (phone) phone = this.props.t('phn') + ': ' + phone;
74
+ let $shipto = null;
75
+ if (displayOrderShippingAddress(order) || phone) {
76
+ $shipto = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
77
+ class: "order_attachment__label"
78
+ }, this.props.t('ship_to')), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, displayOrderShippingAddress(order)), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
79
+ class: "order_attachment__text_truncate"
80
+ }, phone));
81
+ }
82
+ let $beforeTax = null;
83
+ if (order._discount_before_tax) {
84
+ $beforeTax = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
85
+ class: "order_attachment__footer"
86
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
87
+ class: "d-flex align-items-center justify-content-between"
88
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
89
+ class: "order_attachment__label no_margin"
90
+ }, this.props.t('subtotal_before_tax')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order._order_value))), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
91
+ class: "d-flex align-items-center justify-content-between"
92
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
93
+ class: "order_attachment__label no_margin"
94
+ }, this.props.t('discount_before_tax')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, "-", _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order._discount_before_tax))));
95
+ }
96
+ let $subtotal = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
97
+ class: "d-flex align-items-center justify-content-between"
98
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
99
+ class: "order_attachment__label no_margin"
100
+ }, this.props.t('subtotal')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
101
+ style: ""
102
+ }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order.subtotal)));
103
+ let $tax = null;
104
+ if (order.total_tax) {
105
+ let taxname = '';
106
+ if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.size(order._taxM) === 1) {
107
+ let tax = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order._taxM, '0.tax', {});
108
+ if (tax.name && tax.percentage) taxname = `(${tax.name} ${Math.round(tax.percentage || 0) / 100}%)`;
109
+ }
110
+ $tax = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
111
+ class: "d-flex align-items-center justify-content-between"
112
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
113
+ class: "order_attachment__label no_margin"
114
+ }, this.props.t('tax'), " ", taxname), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
115
+ style: ""
116
+ }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order.total_tax)));
117
+ }
118
+ let $discount = null;
119
+ if (order.discount_type === 'percentage' && order.discount_percentage) {
120
+ $discount = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
121
+ class: "d-flex align-items-center justify-content-between"
122
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
123
+ class: "order_attachment__label no_margin"
124
+ }, this.props.t('discount_after_tax'), " (", Math.round(order.discount_percentage / 100), "%)"), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
125
+ style: ""
126
+ }, "-", _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order._computed_discount)));
127
+ }
128
+ if (order.discount_type === 'amount' && order.discount_amount) {
129
+ $discount = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
130
+ class: "d-flex align-items-center justify-content-between"
131
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
132
+ class: "order_attachment__label no_margin"
133
+ }, this.props.t('discount_after_tax')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
134
+ class: "no-shrink"
135
+ }, "-", _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order._computed_discount)));
136
+ }
137
+ let $shipping = null;
138
+ if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order, 'shipping.nominal_fee')) {
139
+ $shipping = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
140
+ class: "d-flex align-items-center justify-content-between"
141
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
142
+ class: "order_attachment__label no_margin"
143
+ }, this.props.t('shipping_fee')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
144
+ style: ""
145
+ }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order, 'shipping.nominal_fee', 0))));
146
+ }
147
+ let $adjustment = null;
148
+ if (order.adjustment) {
149
+ $adjustment = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
150
+ class: "d-flex align-items-center justify-content-between"
151
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
152
+ class: "order_attachment__label no_margin"
153
+ }, order.adjustment_description), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
154
+ class: "no-shrink"
155
+ }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order.adjustment)));
156
+ }
157
+ $subtotal = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
158
+ class: "order_attachment__footer"
159
+ }, $subtotal, $tax, $shipping, $discount, $adjustment);
160
+ if (!$shipping && !$adjustment && !$discount && !$tax) {
161
+ $subtotal = null;
162
+ }
163
+ return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
164
+ class: `order_attachment order_attachment__${byType}`
165
+ }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
166
+ class: "order_attachment__header"
167
+ }, this.props.t('order'), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("span", {
168
+ class: "order_attachment__text_muted order_attachment__text_sm"
169
+ }, getOrderDisplayName(order))), $products, $shipto, $note, $beforeTax, $subtotal, $total);
170
+ });
171
+ return $orders;
172
+ }
173
+ }
174
+ function getProductPropName(product, seperator = ' - ') {
175
+ let options = op.get(product, 'options', []);
176
+ let props = op.get(product, 'props', []);
177
+ let multiPropsOptions = op.filter(options, option => op.size(option.values) > 1);
178
+ let names = [];
179
+ op.each(multiPropsOptions, option => {
180
+ let prop = op.find(props, prop => prop.key === option.key) || {};
181
+ if (prop.value) names.push(prop.value);
182
+ });
183
+ return names.join(seperator);
184
+ }
185
+ function getOrderDisplayName(order = {}) {
186
+ return order.number || order.id || '';
187
+ }
188
+ function displayOrderShippingAddress(order, isShorten) {
189
+ let addr = op.get(order, 'shipping.address', {});
190
+ let fulladdr = [addr.address, addr.ward, addr.district, addr.province].filter(a => a).join(', ').trim();
191
+ if (isShorten) fulladdr = shortenAddr(fulladdr);
192
+ return fulladdr;
193
+ }
194
+ function shortenAddr(str) {
195
+ str = str || '';
196
+ str = str.replace(/Hà Nội/gi, 'HN');
197
+ str = str.replace(/Hồ Chí Minh/gi, 'HCM');
198
+ str = str.replace(/Thành Phố/gi, 'TP');
199
+ return str;
200
+ }
201
+ function calcOrderTotal(order) {
202
+ let subtotal = 0;
203
+ let beforeTaxDiscount = 0;
204
+ let ordervalue = 0;
205
+ op.map(order.items, item => {
206
+ if (!item.product) return 0;
207
+ let price = op.get(item, 'product.price', 0) * (item.quantity || 0);
208
+ ordervalue += price;
209
+ if (item.discount_type == 'percentage') {
210
+ if (item.discount_percentage > 0) {
211
+ beforeTaxDiscount += price * item.discount_percentage / 10000;
212
+ price = price * (1 - (item.discount_percentage || 0) / 10000);
213
+ }
214
+ } else if (item.discount_type == 'amount') {
215
+ if (item.discount_amount > 0) {
216
+ beforeTaxDiscount += item.discount_amount;
217
+ price = price - (item.discount_amount || 0);
218
+ if (price <= 0) price = 0;
219
+ }
220
+ }
221
+ item.total = price;
222
+ subtotal += price;
223
+ });
224
+ let taxM = {};
225
+ op.map(order.items, (item, i) => {
226
+ if (!item.product) return;
227
+ let tax = item.product.tax;
228
+ if (!tax) return;
229
+ if (!tax.id) return;
230
+ let taxprice = item.total * tax.percentage / 10000;
231
+ item.total_tax = taxprice;
232
+ taxM[i] = {
233
+ tax: tax,
234
+ taxprice: taxprice
235
+ };
236
+ });
237
+ let totaltax = 0;
238
+ op.map(taxM, t => totaltax += t.taxprice);
239
+ let computed_discount = 0;
240
+ if (order.discount_type == 'percentage' && order.discount_percentage > 0) {
241
+ computed_discount = (subtotal + totaltax) * order.discount_percentage / 10000;
242
+ } else if (order.discount_type == 'amount') {
243
+ computed_discount = order.discount_amount || 0;
244
+ }
245
+ let shippingfee = op.get(order, 'shipping.nominal_fee', 0);
246
+ if (shippingfee > 0) {
247
+ if (op.get(order, 'shipping.tax.id')) {
248
+ let tax = order.shipping.tax;
249
+ let taxprice = shippingfee * (tax.percentage / 10000);
250
+ taxM['ship'] = {
251
+ tax: tax,
252
+ taxprice: taxprice
253
+ };
254
+ order.shipping.total_tax = taxprice;
255
+ }
256
+ }
257
+ totaltax = 0;
258
+ op.map(taxM, t => totaltax += t.taxprice);
259
+ let total = subtotal + totaltax - computed_discount + shippingfee;
260
+ total += order.adjustment || 0;
261
+ if (total < 0) total = 0;
262
+ order.subtotal = subtotal;
263
+ order._computed_discount = computed_discount;
264
+ order._taxM = taxM;
265
+ order.total = total;
266
+ order.total_tax = totaltax;
267
+ order._discount_before_tax = beforeTaxDiscount;
268
+ order._order_value = ordervalue;
269
+ }
270
+
271
+ /***/ })
272
+
273
+ }]);