@things-factory/operato-mms 4.0.9 → 4.0.13

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 (46) hide show
  1. package/client/menu.js +40 -2
  2. package/client/pages/catalogue-variation/product-variations.js +1 -1
  3. package/client/pages/order/logistics/lazada-order-init-batch-popup.js +1 -2
  4. package/client/pages/order/logistics/request-ro-popup.js +69 -4
  5. package/client/pages/order/logistics/shopee-order-init-batch-popup.js +1 -2
  6. package/client/pages/order/order-by-store.js +71 -3
  7. package/client/pages/reports/sales-by-platform/home.js +144 -0
  8. package/client/pages/reports/sales-by-platform/index.js +3 -0
  9. package/client/pages/reports/sales-by-platform/lazada-sales-report.js +504 -0
  10. package/client/pages/reports/sales-by-platform/shopee-sales-report.js +496 -0
  11. package/client/pages/setting/marketplace-setting.js +9 -6
  12. package/client/route.js +13 -0
  13. package/config.development.js +88 -0
  14. package/dist-server/graphql/resolvers/index.js +2 -1
  15. package/dist-server/graphql/resolvers/index.js.map +1 -1
  16. package/dist-server/graphql/resolvers/interface-with-hub/auto-add-release-order.js +3 -1
  17. package/dist-server/graphql/resolvers/interface-with-hub/auto-add-release-order.js.map +1 -1
  18. package/dist-server/graphql/resolvers/shipping-provider/index.js +6 -0
  19. package/dist-server/graphql/resolvers/shipping-provider/index.js.map +1 -0
  20. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js +32 -0
  21. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +1 -0
  22. package/dist-server/graphql/types/index.js +3 -2
  23. package/dist-server/graphql/types/index.js.map +1 -1
  24. package/dist-server/graphql/types/shipping-provider/index.js +10 -0
  25. package/dist-server/graphql/types/shipping-provider/index.js.map +1 -0
  26. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js +13 -0
  27. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js.map +1 -0
  28. package/dist-server/graphql/types/shipping-provider/shipping-provider.js +13 -0
  29. package/dist-server/graphql/types/shipping-provider/shipping-provider.js.map +1 -0
  30. package/dist-server/routers/etrax-router.js +2 -2
  31. package/dist-server/routers/etrax-router.js.map +1 -1
  32. package/package.json +61 -61
  33. package/server/graphql/resolvers/index.ts +2 -1
  34. package/server/graphql/resolvers/interface-with-hub/auto-add-release-order.ts +3 -1
  35. package/server/graphql/resolvers/shipping-provider/index.ts +5 -0
  36. package/server/graphql/resolvers/shipping-provider/shipping-providers.ts +37 -0
  37. package/server/graphql/types/index.ts +3 -2
  38. package/server/graphql/types/shipping-provider/index.ts +8 -0
  39. package/server/graphql/types/shipping-provider/shipping-provider-list.ts +7 -0
  40. package/server/graphql/types/shipping-provider/shipping-provider.ts +7 -0
  41. package/server/routers/etrax-router.ts +2 -2
  42. package/things-factory.config.js +13 -1
  43. package/translations/en.json +63 -15
  44. package/translations/ko.json +57 -9
  45. package/translations/ms.json +57 -9
  46. package/translations/zh.json +57 -9
@@ -0,0 +1,496 @@
1
+ import '@things-factory/form-ui'
2
+ import '@things-factory/grist-ui'
3
+
4
+ import gql from 'graphql-tag'
5
+ import { css, html } from 'lit-element'
6
+ import { connect } from 'pwa-helpers/connect-mixin.js'
7
+
8
+ import { i18next, localize } from '@things-factory/i18n-base'
9
+ import { client, PageView, store } from '@things-factory/shell'
10
+ import { ScrollbarStyles } from '@things-factory/styles'
11
+ import { isMobileDevice } from '@things-factory/utils'
12
+
13
+ class ShopeeSalesReport extends connect(store)(localize(i18next)(PageView)) {
14
+ static get styles() {
15
+ return [
16
+ ScrollbarStyles,
17
+ css`
18
+ :host {
19
+ display: flex;
20
+ flex-direction: column;
21
+
22
+ overflow: hidden;
23
+ }
24
+
25
+ search-form {
26
+ overflow: visible;
27
+ }
28
+ data-grist {
29
+ overflow-y: auto;
30
+ flex: 1;
31
+ }
32
+ `
33
+ ]
34
+ }
35
+
36
+ static get properties() {
37
+ return {
38
+ _searchFields: Array,
39
+ _config: Object
40
+ }
41
+ }
42
+
43
+ get context() {
44
+ return {
45
+ title: i18next.t('title.shopee_sales_report'),
46
+ exportable: {
47
+ name: i18next.t('title.shopee_sales_report'),
48
+ data: this._exportableData.bind(this)
49
+ }
50
+ }
51
+ }
52
+
53
+ get _searchForm() {
54
+ return this.shadowRoot.querySelector('search-form')
55
+ }
56
+
57
+ get _dataGrist() {
58
+ return this.shadowRoot.querySelector('data-grist')
59
+ }
60
+
61
+ get _toDateInput() {
62
+ return this._searchForm.shadowRoot.querySelector('input[name=toDate]')
63
+ }
64
+
65
+ render() {
66
+ return html`
67
+ <search-form id="search-form" .fields=${this._searchFields} @submit=${e => this._dataGrist.fetch()}></search-form>
68
+ <data-grist
69
+ .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
70
+ .config=${this._config}
71
+ .fetchHandler="${this.fetchHandler.bind(this)}"
72
+ ></data-grist>
73
+ `
74
+ }
75
+
76
+ async pageInitialized() {
77
+ this._searchFields = [
78
+ {
79
+ label: i18next.t('field.store'),
80
+ name: 'marketplaceStoreId',
81
+ type: 'select',
82
+ options: [{ value: '' }],
83
+ props: { searchOper: 'eq' }
84
+ },
85
+ {
86
+ label: i18next.t('field.from_date'),
87
+ name: 'fromDate',
88
+ type: 'date',
89
+ props: {
90
+ searchOper: 'eq',
91
+ max: new Date().toISOString().split('T')[0]
92
+ },
93
+ value: (() => {
94
+ let date = new Date()
95
+ date.setMonth(date.getMonth() - 1)
96
+ return date.toISOString().split('T')[0]
97
+ })(),
98
+ handlers: { change: this._modifyDateRange.bind(this) }
99
+ },
100
+ {
101
+ label: i18next.t('field.to_date'),
102
+ name: 'toDate',
103
+ type: 'date',
104
+ props: {
105
+ searchOper: 'eq',
106
+ min: (() => {
107
+ let date = new Date()
108
+ date.setMonth(date.getMonth() - 1)
109
+ return date.toISOString().split('T')[0]
110
+ })(),
111
+ max: new Date().toISOString().split('T')[0]
112
+ },
113
+ value: new Date().toISOString().split('T')[0]
114
+ }
115
+ ]
116
+
117
+ this._config = {
118
+ rows: { appendable: false },
119
+ pagination: { limit: 50, pages: [50, 100, 200, 500, 1000] },
120
+ columns: [
121
+ { type: 'gutter', gutterName: 'sequence' },
122
+ {
123
+ type: 'string',
124
+ name: 'marketplaceStore',
125
+ header: i18next.t('field.store_name'),
126
+ sortable: true,
127
+ imex: { header: i18next.t('field.store_name'), key: 'marketplaceStore', width: 50, type: 'string' },
128
+ width: 200
129
+ },
130
+ {
131
+ type: 'string',
132
+ name: 'fulfilmentCenter',
133
+ header: i18next.t('field.fulfilment_center'),
134
+ sortable: false,
135
+ imex: { header: i18next.t('field.fulfilment_center'), key: 'fulfilmentCenter', width: 50, type: 'string' },
136
+ width: 200
137
+ },
138
+ {
139
+ type: 'string',
140
+ name: 'orderNo',
141
+ header: i18next.t('field.order_no'),
142
+ sortable: true,
143
+ imex: { header: i18next.t('field.order_no'), key: 'orderNo', width: 50, type: 'string' },
144
+ width: 200
145
+ },
146
+ {
147
+ type: 'string',
148
+ name: 'buyerUsername',
149
+ header: i18next.t('field.buyer_username'),
150
+ sortable: false,
151
+ imex: { header: i18next.t('field.buyer_username'), key: 'buyerUsername', width: 30, type: 'string' },
152
+ width: 200
153
+ },
154
+ {
155
+ type: 'datetime',
156
+ name: 'orderCreatedAt',
157
+ header: i18next.t('field.order_created_date'),
158
+ sortable: false,
159
+ imex: { header: i18next.t('field.order_created_date'), key: 'orderCreatedAt', width: 30, type: 'string' },
160
+ width: 200
161
+ },
162
+ {
163
+ type: 'datetime',
164
+ name: 'payTime',
165
+ header: i18next.t('field.pay_time'),
166
+ sortable: false,
167
+ imex: { header: i18next.t('field.pay_time'), key: 'payTime', width: 20, type: 'string' },
168
+ width: 150
169
+ },
170
+ {
171
+ type: 'string',
172
+ name: 'sku',
173
+ header: i18next.t('field.sku'),
174
+ sortable: false,
175
+ imex: { header: i18next.t('field.sku'), key: 'sku', width: 80, type: 'string' },
176
+ width: 200
177
+ },
178
+ {
179
+ type: 'string',
180
+ name: 'variationId',
181
+ header: i18next.t('field.variation_id'),
182
+ sortable: false,
183
+ imex: { header: i18next.t('field.variation_id'), key: 'variationId', width: 80, type: 'string' },
184
+ width: 200
185
+ },
186
+ {
187
+ type: 'string',
188
+ name: 'variationName',
189
+ header: i18next.t('field.variation_name'),
190
+ sortable: false,
191
+ imex: { header: i18next.t('field.variation_name'), key: 'variationName', width: 160, type: 'string' },
192
+ width: 400
193
+ },
194
+ {
195
+ type: 'integer',
196
+ name: 'qty',
197
+ header: i18next.t('field.qty'),
198
+ sortable: false,
199
+ imex: { header: i18next.t('field.qty'), key: 'qty', width: 20, type: 'integer' },
200
+ width: 150
201
+ },
202
+ {
203
+ type: 'float',
204
+ name: 'originalPrice',
205
+ header: i18next.t('field.original_price'),
206
+ sortable: false,
207
+ imex: {
208
+ header: i18next.t('field.original_price'),
209
+ key: 'originalPrice',
210
+ width: 30,
211
+ type: 'float'
212
+ },
213
+ width: 200
214
+ },
215
+ {
216
+ type: 'string',
217
+ name: 'promotionId',
218
+ header: i18next.t('field.promotion_id'),
219
+ sortable: false,
220
+ imex: { header: i18next.t('field.promotion_id'), key: 'promotionId', width: 30, type: 'string' },
221
+ width: 200
222
+ },
223
+ {
224
+ type: 'float',
225
+ name: 'refundAmount',
226
+ header: i18next.t('field.refund_amount'),
227
+ sortable: false,
228
+ imex: { header: i18next.t('field.refund_amount'), key: 'refundAmount', width: 30, type: 'float' },
229
+ width: 200
230
+ },
231
+ {
232
+ type: 'float',
233
+ name: 'productDiscount',
234
+ header: i18next.t('field.product_discount'),
235
+ sortable: false,
236
+ imex: { header: i18next.t('field.product_discount'), key: 'productDiscount', width: 30, type: 'float' },
237
+ width: 200
238
+ },
239
+ {
240
+ type: 'float',
241
+ name: 'voucherAmount',
242
+ header: i18next.t('field.voucher_amt'),
243
+ sortable: false,
244
+ imex: { header: i18next.t('field.voucher_amt'), key: 'voucherAmount', width: 30, type: 'float' },
245
+ width: 200
246
+ },
247
+ {
248
+ type: 'float',
249
+ name: 'shippingFee',
250
+ header: i18next.t('field.shipping_fee'),
251
+ sortable: false,
252
+ imex: { header: i18next.t('field.shipping_fee'), key: 'shippingFee', width: 30, type: 'float' },
253
+ width: 200
254
+ },
255
+ {
256
+ type: 'float',
257
+ name: 'shippingRebate',
258
+ header: i18next.t('field.shipping_rebate'),
259
+ sortable: false,
260
+ imex: { header: i18next.t('field.shipping_rebate'), key: 'shippingRebate', width: 30, type: 'float' },
261
+ width: 200
262
+ },
263
+ {
264
+ type: 'float',
265
+ name: 'actualShippingFee',
266
+ header: i18next.t('field.actual_shipping_fee'),
267
+ sortable: false,
268
+ imex: {
269
+ header: i18next.t('field.actual_shipping_fee'),
270
+ key: 'actualShippingFee',
271
+ width: 30,
272
+ type: 'float'
273
+ },
274
+ width: 200
275
+ },
276
+ {
277
+ type: 'string',
278
+ name: 'shippingProvider',
279
+ header: i18next.t('field.shipping_provider'),
280
+ sortable: false,
281
+ imex: { header: i18next.t('field.shipping_provider'), key: 'shippingProvider', width: 30, type: 'string' },
282
+ width: 200
283
+ },
284
+ {
285
+ type: 'string',
286
+ name: 'shippingMode',
287
+ header: i18next.t('field.shipping_mode'),
288
+ sortable: false,
289
+ imex: { header: i18next.t('field.shipping_mode'), key: 'shippingMode', width: 30, type: 'string' },
290
+ width: 200
291
+ },
292
+ {
293
+ type: 'float',
294
+ name: 'commissionFee',
295
+ header: i18next.t('field.comission_fee'),
296
+ sortable: false,
297
+ imex: { header: i18next.t('field.comission_fee'), key: 'commissionFee', width: 30, type: 'float' },
298
+ width: 200
299
+ },
300
+ {
301
+ type: 'float',
302
+ name: 'serviceFee',
303
+ header: i18next.t('field.service_fee'),
304
+ sortable: false,
305
+ imex: { header: i18next.t('field.voucher_amt'), key: 'serviceFee', width: 30, type: 'float' },
306
+ width: 200
307
+ },
308
+ {
309
+ type: 'float',
310
+ name: 'transactionFee',
311
+ header: i18next.t('field.transaction_fee'),
312
+ sortable: false,
313
+ imex: { header: i18next.t('field.transaction_fee'), key: 'transactionFee', width: 30, type: 'float' },
314
+ width: 200
315
+ },
316
+ {
317
+ type: 'float',
318
+ name: 'totalRealeasedAmount',
319
+ header: i18next.t('field.total_released_amt'),
320
+ sortable: false,
321
+ imex: {
322
+ header: i18next.t('field.total_released_amt'),
323
+ key: 'totalRealeasedAmount',
324
+ width: 30,
325
+ type: 'float'
326
+ },
327
+ width: 200
328
+ },
329
+ {
330
+ type: 'string',
331
+ name: 'voucherCode',
332
+ header: i18next.t('field.voucher_code'),
333
+ sortable: false,
334
+ imex: { header: i18next.t('field.voucher_code'), key: 'voucherCode', width: 30, type: 'string' },
335
+ width: 200
336
+ },
337
+ {
338
+ type: 'string',
339
+ name: 'status',
340
+ header: i18next.t('field.status'),
341
+ sortable: false,
342
+ imex: { header: i18next.t('field.status'), key: 'status', width: 30, type: 'string' },
343
+ width: 200
344
+ }
345
+ ]
346
+ }
347
+ }
348
+
349
+ async fetchHandler({ page, limit, sorters = [{ name: 'marketplaceStore' }, { name: 'orderNo' }] }) {
350
+ let filters = [...this._searchForm.queryFilters, { name: 'platform', operator: 'eq', value: 'shopee' }]
351
+
352
+ const pagination = { page, limit }
353
+ const sortings = sorters
354
+
355
+ const response = await client.query({
356
+ query: gql`
357
+ query marketplaceSalesReports($filters: [Filter], $pagination: Pagination, $sortings: [Sorting]) {
358
+ marketplaceSalesReports(filters: $filters, pagination: $pagination, sortings: $sortings) {
359
+ items {
360
+ fulfilmentCenter
361
+ voucherAmount
362
+ shippingRebate
363
+ commissionFee
364
+ serviceFee
365
+ transactionFee
366
+ totalRealeasedAmount
367
+ voucherCode
368
+ shippingMode
369
+ orderNo
370
+ orderCreatedAt
371
+ buyerUsername
372
+ payTime
373
+ totalAmount
374
+ refundAmount
375
+ shippingProvider
376
+ storeName
377
+ storeDescription
378
+ promotionId
379
+ originalPrice
380
+ paidPrice
381
+ sku
382
+ qty
383
+ variationId
384
+ variationName
385
+ productName
386
+ productSku
387
+ productDiscount
388
+ paymentFee
389
+ shippingFee
390
+ actualShippingFee
391
+ marketplaceShippingFeeVoucher
392
+ sellerShippingFeeVoucher
393
+ status
394
+ }
395
+ total
396
+ }
397
+ }
398
+ `,
399
+ variables: { filters, pagination, sortings }
400
+ })
401
+
402
+ if (!response.errors) {
403
+ return {
404
+ total: response.data.marketplaceSalesReports.total,
405
+ records: response.data.marketplaceSalesReports.items.map(item => {
406
+ return {
407
+ ...item,
408
+ marketplaceOrderItem: item.variationSku,
409
+ marketplaceStore: `${item.storeName} ${item.storeDescription ? `(${item.storeDescription})` : ''}`,
410
+ refundAmount: this._getRoundedValue(item.refundAmount),
411
+ originalPrice: this._getRoundedValue(item.originalPrice),
412
+ productDiscount: this._getRoundedValue(item.productDiscount),
413
+ shippingFee: this._getRoundedValue(item.shippingFee),
414
+ actualShippingFee: this._getRoundedValue(item.actualShippingFee)
415
+ }
416
+ })
417
+ }
418
+ }
419
+ }
420
+
421
+ stateChanged(state) {
422
+ if (state.mms && state.mms.stores && state.mms.stores.length) {
423
+ const _shopeeStores = state.mms.stores.filter(store => store.platform.toLowerCase() == 'shopee')
424
+ this._updateSearchFields(_shopeeStores)
425
+ this._dataGrist?.fetch()
426
+ }
427
+ }
428
+
429
+ _updateSearchFields(stores) {
430
+ if (!this._searchFields?.length) return
431
+
432
+ this._searchFields = this._searchFields.map(searchField => {
433
+ if (searchField.name === 'marketplaceStoreId') {
434
+ searchField.options = [
435
+ { value: '' },
436
+ ...stores.map(store => {
437
+ return {
438
+ name: `${store.name} ${store.description ? `(${store.description})` : ''}`,
439
+ value: store.id
440
+ }
441
+ })
442
+ ]
443
+ }
444
+
445
+ return searchField
446
+ })
447
+ }
448
+
449
+ async _exportableData() {
450
+ const headerSetting = this._config.columns
451
+ .filter(column => column.type !== 'gutter' && column.imex !== undefined)
452
+ .map(column => {
453
+ return column.imex
454
+ })
455
+
456
+ // const data = (await this.fetchHandler({ page: 1, limit: 999999 })).records
457
+ const data = (await this.fetchHandler({ page: 1, limit: 999999 })).records.map(item => {
458
+ return {
459
+ ...this._config.columns
460
+ .filter(column => column.type !== 'gutter' && column.imex !== undefined)
461
+ .reduce((record, column) => {
462
+ record[column.imex.key] = column.imex.key
463
+ .split('.')
464
+ .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
465
+
466
+ if (column.type === 'datetime' && record[column.imex.key]) {
467
+ record[column.imex.key] = new Date(Number(record[column.imex.key])).toLocaleString()
468
+ }
469
+ return record
470
+ }, {})
471
+ }
472
+ })
473
+
474
+ return { header: headerSetting, data: data }
475
+ }
476
+
477
+ _modifyDateRange(e) {
478
+ const fromDate = e.currentTarget.value
479
+
480
+ if (this._toDateInput.value < fromDate) this._toDateInput.value = fromDate
481
+
482
+ let min = new Date(fromDate)
483
+ let today = new Date()
484
+ today.setHours(0, 0, 0, 0)
485
+
486
+ min = min.toISOString().split('T')[0]
487
+
488
+ this._toDateInput.min = min
489
+ }
490
+
491
+ _getRoundedValue(value = 0) {
492
+ return Math.round((value + Number.EPSILON) * 100) / 100
493
+ }
494
+ }
495
+
496
+ customElements.define('shopee-sales-report', ShopeeSalesReport)
@@ -1,11 +1,13 @@
1
- import { css, html } from 'lit-element'
2
- import { i18next } from '@things-factory/i18n-base'
3
- import { connect } from 'pwa-helpers/connect-mixin.js'
4
- import { client, store, PageView } from '@things-factory/shell'
5
- import gql from 'graphql-tag'
6
1
  import '../../components/stock-allocation-ratio'
7
2
  import '../../components/marketplace-order-max-weight'
8
3
 
4
+ import gql from 'graphql-tag'
5
+ import { css, html } from 'lit-element'
6
+ import { connect } from 'pwa-helpers/connect-mixin.js'
7
+
8
+ import { i18next } from '@things-factory/i18n-base'
9
+ import { client, PageView, store } from '@things-factory/shell'
10
+
9
11
  class MarketplaceSetting extends connect(store)(PageView) {
10
12
  static get styles() {
11
13
  return [
@@ -149,6 +151,7 @@ class MarketplaceSetting extends connect(store)(PageView) {
149
151
  storeName
150
152
  platform
151
153
  description
154
+ status
152
155
  }
153
156
  category
154
157
  value
@@ -161,7 +164,7 @@ class MarketplaceSetting extends connect(store)(PageView) {
161
164
  variables: { filters, sortings }
162
165
  })
163
166
 
164
- return response.data.marketplaceSettings.items || []
167
+ return response.data.marketplaceSettings.items.filter(item => item.marketplaceStore.status == 'ACTIVE') || []
165
168
  }
166
169
 
167
170
  showToast(message) {
package/client/route.js CHANGED
@@ -93,5 +93,18 @@ export default function route(page) {
93
93
  case 'mms-report-custom':
94
94
  import('./pages/reports/custom')
95
95
  return page
96
+
97
+ // title to be revised
98
+ case 'mms-report-sales-by-platform-home':
99
+ import('./pages/reports/sales-by-platform/home')
100
+ return page
101
+
102
+ case 'lazada-sales-report':
103
+ import('./pages/reports/sales-by-platform/lazada-sales-report')
104
+ return page
105
+
106
+ case 'shopee-sales-report':
107
+ import('./pages/reports/sales-by-platform/shopee-sales-report')
108
+ return page
96
109
  }
97
110
  }
@@ -0,0 +1,88 @@
1
+ module.exports = {
2
+ domainType: 'company',
3
+ ormconfig: {
4
+ name: 'default',
5
+ type: 'sqlite',
6
+ database: 'db.sqlite',
7
+ synchronize: false,
8
+ logging: true,
9
+ logger: 'debug'
10
+ // name: 'default',
11
+ // type: 'postgres',
12
+ // database: 'postgres',
13
+ // username: 'postgres',
14
+ // password: 'abcd1234',
15
+ // host: 'localhost',
16
+ // port: 15432,
17
+ // synchronize: true,
18
+ // logging: true
19
+ },
20
+ oauth2: {
21
+ platforms: [
22
+ {
23
+ name: 'Operato Hub',
24
+ apiURL: 'http://operato-m.localhost:3000/api'
25
+ }
26
+ ]
27
+ },
28
+ useVirtualHostBasedDomain: false,
29
+ port: 5000,
30
+ uploads: 'uploads',
31
+ attachmentsPath: 'attachments',
32
+ SECRET: '0xD58F835B69D207A76CC5F84a70a1D0d4C79dfC95',
33
+ logger: {
34
+ file: {
35
+ filename: 'logs/application-%DATE%.log',
36
+ datePattern: 'YYYY-MM-DD-HH',
37
+ zippedArchive: true,
38
+ maxSize: '200m',
39
+ maxFiles: '1m',
40
+ level: 'info'
41
+ }
42
+ },
43
+ fulfillmentIntegrationOperato: {
44
+ host: 'operatohub.com',
45
+ platform: 'operato',
46
+ application: 'Operato MMS',
47
+ appKey: '480d19cbfb0655357878119559d47333',
48
+ appSecret: 'dc5078bc17d50a18ef6fc3188934bbbd',
49
+ callback: 'https://www.myoperato.com/callback-operato'
50
+ },
51
+ marketplaceIntegrationShopee: {
52
+ platform: 'shopee',
53
+ isUAT: false,
54
+ application: 'Operato MMS',
55
+ partnerId: 846025,
56
+ partnerKey: 'd34cfd85a603f196a0d74ebe08043280c1a27788bb36bdffd61e7e0bb1c90b64'
57
+ },
58
+ marketplaceIntegrationLazada: {
59
+ platform: 'lazada',
60
+ application: 'operato-mms',
61
+ appKey: '120961',
62
+ appSecret: 'HB3RTNEXHlVSlBr9SmWF8AjbSUT7a825',
63
+ callback: 'https://myoperato.com/lazada-callback'
64
+ },
65
+ notification: {
66
+ fcm: {
67
+ serviceAccount: {
68
+ project_id: 'operato',
69
+ private_key:
70
+ '-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYNOfyNjPMSeG9\nzU1qs0cpVK5cVfadcUaw5g+hkQZMOMlAA7uqW2eX4vkayj7MzbYUayH+sei8044Q\nJIyl6f26dNX1VT3UgTmSmCS0v48EBEZHCgusrUGFjduLRN6OS6uvrXW1xKA18k9q\nai1C2EHCXF2AE4PTvf239RC1UIOnVePcMtT7rMTdHRO4s8OKVuSDbzIt8k1cV3Zt\nES0YsJlkELqBisYpV//2/ZSILTt39J9JzrVef03X9kkoo9p+YnNyy6tWsfQPfgJO\nybiRGBNxiyJ/E2pxRo/WqU0go9OzYJlGaSUrUx09heNiRD1b0MAOmyPDJz/6AaTk\nkU/A+kLzAgMBAAECggEADQ5s2gtR53VSujk1V/Xe8e0Di99DwaWUj5w6YhcK7/wX\nPdQRN4Fw6RLeLjL7xeG/rCNSwzm6hKSrQJL5zLnWW7XbMdyQRk6jdmnVAEv3zACi\nFH9+eFK3e+Q214XfgWz/v4p/FZdRLCYni5VBNHcwyWxLLS/V1ynzB3KM1sDiTRmI\npcT7+uTtwrKgJq64sXtFE2pYrFxDdCiyqzkhv/2ed4YIowAjpKBbbcCDKeVxVkoz\nC1P4PAzs9EeUuKSWYrWaUjN17lqtRlYeT1ylR1PIJuWqd4cKfgoEgz+lHwRPDCEX\nAYbk3nofiJIPBhSfCHrXS755wK48mY8vMwFdfCPJeQKBgQDsz4tjYTHdat5A25n5\nekwMxZwFQ5OvMV4eulwZUDMypTAYSz1iB6sDlgwKDm5omZIfuneqCEIvrqxV/kx3\n5wV/DANHO3hYxdp/NV7rM23xmqlaKZhHQbDono1Fm/LP6DEmJiD7N2eFKsXYcPpR\nSAIdCv0X3zkDQ4zRi51yJlCXzQKBgQDpufJBxCoXngiQJ2j14lWVAeOOdQ6zh5Ip\nBcDwF0X67cNSN3Wl40bS4yLFdolhEAyj5m0WPuYYXpjzhHhZ0W3V3ItdBkrmwIvy\nWOWu26qN0ZbwxVS2qVpHuj6iHWJKHuDZZUkFtJg3BeeBSOUHSA8TvjnA0xd83xeb\n8ZJasWoFvwKBgQDFs/gQ/gIdcq0exLfluh5nw0qgcmyHpNWJHdjqITS9IX/nqFkU\n0IYLtmdStf2jQiLmbkydHcvz9wZVvLqml67VBHhwLcwpgPULoskd34/4V0Dvzy4c\nv1Esw8H5zVqIDLeLu+VpFjZMzQrjyl6RIWbyTExEc84rVWfpQYAu3qIGOQKBgAFr\nXatEk7TdAtRNSPflTfu/rTAaSeKROjQBkvBiU8x4US1YpOBDBxUUyAtG8wKh5FHC\nfnsaGq+fM3KXJVv2R6J62mXQOfg4xyDLpWlwcBK4aSBBMoiBcsjouqSlZQlqMpdf\nZBgixqHe6U8BsFJg/6ZxC0y+e3AIss4Bo4/lb+1lAoGAFOexvaBh21K6W3inmRW4\nLlkVYJaBJ20OwokXg5aXjBiHxqmk7VLAuFbkpb5LOKH2xPILRQ0OEkn51yVymS3T\n9lLpHOFTQXt5tF2/F7NW7kaQJNlLr/h5jPi3O9XHeFmuaN2z150ZB6zzgjeGKzr8\ni+1fgTsRfDtNw8xkSH9qL1Y=\n-----END PRIVATE KEY-----\n',
71
+ client_email: 'firebase-adminsdk-xmm2e@operato.iam.gserviceaccount.com'
72
+ },
73
+ appConfig: {
74
+ apiKey: 'AIzaSyDdTM2BTLHSt2LNS0G5QB8G0i4KBXFiG7U',
75
+ projectId: 'operato',
76
+ messagingSenderId: 79537064975,
77
+ appId: '1:79537064975:web:32f53119e9c8c6ee2a277a'
78
+ },
79
+ serverKey:
80
+ 'AAAAEoTHTA8:APA91bGwt-4HT82Dfwf_VwbQaKT0_qHd0Y3tuW41udjWz5Lz0Ko0mEMD6WbHHSILvQpa6yuoGGKCMsrU7VW2qWRrUm3CYpyG9oSwshNm1tIhljAnOuUfwHCoawbVLwf9qlWpHt4dwCoc'
81
+ },
82
+ vapidKey: {
83
+ subject: 'mailto:heartyoh@hatiolab.com',
84
+ publicKey: 'BAkVkITsCXBIsYL1yeaBmx5_dn57we-ZXMjirPPHzC2dan82cdEnAio_53PQ-1_w3ykWCBPrrFAWQ_d9N4cFF0o',
85
+ privateKey: '4pmlt3Wk019u7nqU3Q_oGZE6LbUDjjf8DpmAcn9-iss'
86
+ }
87
+ }
88
+ }
@@ -22,6 +22,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
22
22
  exports.mutations = exports.queries = void 0;
23
23
  const InterfaceWithHub = __importStar(require("./interface-with-hub"));
24
24
  const WarehouseProduct = __importStar(require("./warehouse-product"));
25
- exports.queries = [InterfaceWithHub.Query];
25
+ const ShippingProviders = __importStar(require("./shipping-provider"));
26
+ exports.queries = [InterfaceWithHub.Query, ShippingProviders.Query];
26
27
  exports.mutations = [InterfaceWithHub.Mutation, WarehouseProduct.Mutation];
27
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/graphql/resolvers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,uEAAwD;AACxD,sEAAuD;AAE1C,QAAA,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;AAElC,QAAA,SAAS,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/graphql/resolvers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,uEAAwD;AACxD,sEAAuD;AACvD,uEAAwD;AAE3C,QAAA,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAA;AAE3D,QAAA,SAAS,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA"}
@@ -17,7 +17,9 @@ exports.autoAddReleaseOrderResolver = {
17
17
  .leftJoinAndSelect('MO.marketplaceStore', 'MPS')
18
18
  .where('MO.domain = :domainId', { domainId: domain.id })
19
19
  .andWhere('MO.releaseOrderId IS NULL')
20
- .andWhere('MO.status IN (:...status)', { status: ['ready_to_ship', 'unfulfilled', 'packed'] })
20
+ .andWhere('MO.status IN (:...status)', {
21
+ status: ['ready_to_ship', 'unfulfilled', 'packed', 'processing']
22
+ })
21
23
  .andWhere('MPS.status = :marketplaceStatus', { marketplaceStatus: 'ACTIVE' })
22
24
  .getMany();
23
25
  var fulfilmentCenter = await integration_fulfillment_1.FulfillmentAPI.getFulfillmentCenter(warehouseId);
@@ -1 +1 @@
1
- {"version":3,"file":"auto-add-release-order.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/interface-with-hub/auto-add-release-order.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-add-release-order.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/interface-with-hub/auto-add-release-order.ts"],"names":[],"mappings":"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"}