spree_cm_commissioner 2.14.2 → 2.14.4
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.
- checksums.yaml +4 -4
- data/.env.example +4 -6
- data/Gemfile.lock +1 -1
- data/app/controllers/concerns/spree_cm_commissioner/content_cachable.rb +76 -70
- data/app/controllers/spree/admin/api_caches_controller.rb +26 -0
- data/app/controllers/spree/admin/base_controller_decorator.rb +0 -14
- data/app/controllers/spree/admin/guests_controller.rb +43 -4
- data/app/factory/spree_cm_commissioner/order_telegram_message_factory.rb +26 -5
- data/app/jobs/spree_cm_commissioner/audit_events/cleanup_expired_job.rb +18 -0
- data/app/models/concerns/spree_cm_commissioner/vendor_preference.rb +1 -1
- data/app/models/spree_cm_commissioner/audit_event.rb +5 -0
- data/app/overrides/spree/admin/menus/index/clear_cache_button.html.erb.deface +4 -0
- data/app/overrides/spree/admin/payment_methods/index/clear_cache_button.html.erb.deface +6 -0
- data/app/overrides/spree/admin/products/edit/clear_cache_button.html.erb.deface +1 -1
- data/app/overrides/spree/admin/taxons/edit/clear_cache_button.html.erb.deface +1 -4
- data/app/overrides/spree/admin/vendors/edit/clear_cache_button.html.erb.deface +5 -0
- data/app/serializers/spree/api/v2/base_serializer_decorator.rb +24 -0
- data/app/services/spree_cm_commissioner/api_caches/invalidate.rb +39 -87
- data/app/services/spree_cm_commissioner/api_caches/invalidate_all.rb +61 -0
- data/app/services/spree_cm_commissioner/audit_events/cleanup_expired.rb +58 -0
- data/app/services/spree_cm_commissioner/audit_logger.rb +1 -1
- data/app/services/spree_cm_commissioner/guests/build_dynamic_field_attributes.rb +34 -0
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_seat_layout.rb +45 -128
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/seat_layout.rb +36 -148
- data/app/services/spree_cm_commissioner/inventory_items/reset.rb +103 -35
- data/app/services/spree_cm_commissioner/order/guests/update.rb +2 -24
- data/app/services/spree_cm_commissioner/rates_availabilities/bulk_update.rb +14 -8
- data/app/services/spree_cm_commissioner/seat_layouts/grid.rb +56 -0
- data/app/views/spree/admin/guests/_dynamic_fields.html.erb +67 -0
- data/app/views/spree/admin/guests/_form.html.erb +2 -0
- data/app/views/spree/admin/homepage_background/index.html.erb +1 -1
- data/app/views/spree/admin/homepage_section/edit.html.erb +0 -1
- data/app/views/spree/admin/homepage_section/index.html.erb +1 -1
- data/app/views/spree/admin/inventory_items/_details.html.erb +16 -0
- data/app/views/spree/admin/rates_availabilities/_script.html.erb +49 -7
- data/app/views/spree/admin/rates_availabilities/index.html.erb +4 -0
- data/app/views/spree/admin/shared/_api_cache_button.html.erb +5 -0
- data/config/locales/en.yml +25 -1
- data/config/locales/km.yml +25 -1
- data/config/routes.rb +5 -1
- data/lib/spree_cm_commissioner/version.rb +1 -1
- metadata +13 -1
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
selected: t('rates_availabilities.bulk.selected'),
|
|
7
7
|
saving: t('rates_availabilities.bulk.saving'),
|
|
8
8
|
done: t('rates_availabilities.bulk.done'),
|
|
9
|
+
busy: t('rates_availabilities.bulk.busy'),
|
|
10
|
+
useBaseStockConfirm: t('rates_availabilities.bulk.use_base_stock_confirm'),
|
|
9
11
|
failed: t('rates_availabilities.modal.failed')
|
|
10
12
|
}.to_json) %>;
|
|
11
13
|
|
|
@@ -228,7 +230,8 @@
|
|
|
228
230
|
// close each rate on its own, and they'd stay closed after the date is reopened from its stock cell alone. A
|
|
229
231
|
// price cell closed only by its date or the base rate (ra-closed-day alone) is in neither: it has no closing
|
|
230
232
|
// of its own to reopen, and closing it would add one that shows only once those reopen.
|
|
231
|
-
// `datePrices` have their own price for the date, which Use Base price clears.
|
|
233
|
+
// `datePrices` have their own price for the date, which Use Base price clears. `dateStock` is what Use Base
|
|
234
|
+
// stock recounts: Base stock has nothing to fall back to.
|
|
232
235
|
groups() {
|
|
233
236
|
const cells = this.cells();
|
|
234
237
|
const ofType = (type) => cells.filter((cell) => cell.dataset.cell === type);
|
|
@@ -247,7 +250,8 @@
|
|
|
247
250
|
prices: prices,
|
|
248
251
|
open: dated.filter((cell) => !isClosed(cell) && closesOnItsOwn(cell)),
|
|
249
252
|
closed: dated.filter(isClosed),
|
|
250
|
-
datePrices: prices.filter((cell) => cell.classList.contains('ra-date-price'))
|
|
253
|
+
datePrices: prices.filter((cell) => cell.classList.contains('ra-date-price')),
|
|
254
|
+
dateStock: stock.filter((cell) => cell.dataset.date)
|
|
251
255
|
};
|
|
252
256
|
}
|
|
253
257
|
|
|
@@ -341,8 +345,9 @@
|
|
|
341
345
|
this.load();
|
|
342
346
|
}
|
|
343
347
|
|
|
344
|
-
// A newer request wins, as answers can arrive out of order while the search is typed.
|
|
345
|
-
|
|
348
|
+
// A newer request wins, as answers can arrive out of order while the search is typed. `notice` ({ text, level })
|
|
349
|
+
// goes above the reloaded list: the bulk bar, where a save reports, is under the modal.
|
|
350
|
+
load(notice = null) {
|
|
346
351
|
const content = this.sharedModal.content;
|
|
347
352
|
const seq = ++this.seq;
|
|
348
353
|
const current = () => seq === this.seq && this.isShown;
|
|
@@ -359,6 +364,14 @@
|
|
|
359
364
|
content.innerHTML = html;
|
|
360
365
|
// Sync icons are popovers on stock managements, which nothing initializes in fetched HTML.
|
|
361
366
|
content.querySelectorAll('[data-toggle="popover"]').forEach((el) => { el.title = el.dataset.content; });
|
|
367
|
+
const body = content.querySelector('.modal-body');
|
|
368
|
+
if (notice && body) {
|
|
369
|
+
const alert = document.createElement('div');
|
|
370
|
+
alert.className = 'alert alert-' + notice.level + ' py-2 small';
|
|
371
|
+
alert.setAttribute('role', 'status');
|
|
372
|
+
alert.textContent = notice.text;
|
|
373
|
+
body.prepend(alert);
|
|
374
|
+
}
|
|
362
375
|
const search = content.querySelector('[data-ra-list-search]');
|
|
363
376
|
if (searching && search) {
|
|
364
377
|
search.focus();
|
|
@@ -424,6 +437,8 @@
|
|
|
424
437
|
content.querySelector('[data-ra-bulk-count]').textContent = '· ' + groups[config.group].length;
|
|
425
438
|
const useBase = content.querySelector('[data-ra-use-base]');
|
|
426
439
|
if (useBase) useBase.hidden = !groups.datePrices.length;
|
|
440
|
+
const useBaseStock = content.querySelector('[data-ra-use-base-stock]');
|
|
441
|
+
if (useBaseStock) useBaseStock.hidden = !groups.dateStock.length;
|
|
427
442
|
setTimeout(() => { const input = content.querySelector('input'); if (input) input.focus(); }, 300);
|
|
428
443
|
}
|
|
429
444
|
|
|
@@ -438,11 +453,35 @@
|
|
|
438
453
|
this.update('use_base_price', {}, this.cellSelection.groups().datePrices.map(cellData));
|
|
439
454
|
}
|
|
440
455
|
|
|
456
|
+
// Recounting a date undoes the stock set on it, so this is Set stock's way back to Base, as Use Base price is
|
|
457
|
+
// for prices.
|
|
458
|
+
useBaseStock() {
|
|
459
|
+
const cells = this.cellSelection.groups().dateStock;
|
|
460
|
+
if (!window.confirm(T.useBaseStockConfirm.replace('%{count}', cells.length))) return;
|
|
461
|
+
this.sharedModal.hide();
|
|
462
|
+
this.update('reset_stock', {}, cells.map(cellData));
|
|
463
|
+
}
|
|
464
|
+
|
|
441
465
|
recount(button) {
|
|
442
466
|
if (!window.confirm(button.dataset.raConfirm)) return;
|
|
443
467
|
this.update('reset_stock', {}, [{ type: 'stock', variant_id: button.dataset.variantId, rate_plan_id: null, date: button.dataset.date }]);
|
|
444
468
|
}
|
|
445
469
|
|
|
470
|
+
// Every row of the open stock details: one stock cell per variant and date it was opened for, as its price
|
|
471
|
+
// cells list the same rows but reset_stock only takes stock cells.
|
|
472
|
+
recountAll(button) {
|
|
473
|
+
if (!window.confirm(button.dataset.raConfirm)) return;
|
|
474
|
+
const rows = new Map(this.cellListModal.request.cells.map((cell) => [cell.variant_id + '|' + cell.date, cell]));
|
|
475
|
+
const cells = [...rows.values()].map((cell) => ({ type: 'stock', variant_id: cell.variant_id, rate_plan_id: null, date: cell.date }));
|
|
476
|
+
this.update('reset_stock', {}, cells);
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
// In the bar, and above an open list modal, which covers the bar.
|
|
480
|
+
report(text, level) {
|
|
481
|
+
this.message(text, level === 'danger');
|
|
482
|
+
if (this.cellListModal.isShown) this.cellListModal.load({ text: text, level: level });
|
|
483
|
+
}
|
|
484
|
+
|
|
446
485
|
// `cells` defaults to the selection. Reloads the grid, and an open list modal, as their counts change.
|
|
447
486
|
update(action, values, cells = this.cellSelection.groups().all.map(cellData)) {
|
|
448
487
|
this.bar.classList.add('ra-busy');
|
|
@@ -454,11 +493,12 @@
|
|
|
454
493
|
}).then((response) => response.json().then((body) => {
|
|
455
494
|
if (!response.ok) throw new Error(body.error);
|
|
456
495
|
return this.monthTables.reload().then(() => {
|
|
457
|
-
|
|
458
|
-
this.
|
|
496
|
+
const done = T.done.replace('%{updated}', body.updated).replace('%{skipped}', body.skipped);
|
|
497
|
+
if (body.busy) this.report(done + '. ' + T.busy.replace('%{count}', body.busy), 'warning');
|
|
498
|
+
else this.report(done, 'success');
|
|
459
499
|
});
|
|
460
500
|
})).catch((error) => {
|
|
461
|
-
this.
|
|
501
|
+
this.report(error.message, 'danger');
|
|
462
502
|
}).finally(() => {
|
|
463
503
|
this.bar.classList.remove('ra-busy');
|
|
464
504
|
});
|
|
@@ -593,10 +633,12 @@
|
|
|
593
633
|
['[data-ra-select-date]', (el, event) => this.cellSelection.selectDate(el, event.shiftKey)],
|
|
594
634
|
['[data-ra-bulk]', (el) => this.bulkEditBar.start(el.dataset.raBulk)],
|
|
595
635
|
['[data-ra-use-base]', () => this.bulkEditBar.useBasePrice()],
|
|
636
|
+
['[data-ra-use-base-stock]', () => this.bulkEditBar.useBaseStock()],
|
|
596
637
|
['[data-ra-list]', (el) => this.cellListModal.open(this.monthTables.root.dataset[el.dataset.raList + 'Url'])],
|
|
597
638
|
['[data-ra-list-filter]', (el) => this.cellListModal.setFilter(el.dataset.raListFilter)],
|
|
598
639
|
['[data-ra-list-page]', (el) => this.cellListModal.setPage(el)],
|
|
599
640
|
['[data-ra-recount]', (el) => this.bulkEditBar.recount(el)],
|
|
641
|
+
['[data-ra-recount-all]', (el) => this.bulkEditBar.recountAll(el)],
|
|
600
642
|
['[data-ra-modal-url]', (el) => this.ratePlanForms.open(el.dataset.raModalUrl)],
|
|
601
643
|
['[data-ra-move]', (el) => this.ratePlanForms.moveItem(el)],
|
|
602
644
|
['[data-ra-delete-url]', (el) => this.ratePlanForms.destroy(el)]
|
|
@@ -102,6 +102,10 @@
|
|
|
102
102
|
<small class="text-muted"><%= t('rates_availabilities.bulk.stock_hint') %></small>
|
|
103
103
|
</div>
|
|
104
104
|
<div class="modal-footer">
|
|
105
|
+
<%# Only while dated stock is selected (BulkEditBar#openForm); recounts those dates, undoing the stock set on them. %>
|
|
106
|
+
<button type="button" class="mr-auto btn btn-outline-secondary" data-ra-use-base-stock hidden title="<%= t('rates_availabilities.bulk.use_base_stock_hint') %>">
|
|
107
|
+
<%= t('rates_availabilities.bulk.use_base_stock') %>
|
|
108
|
+
</button>
|
|
105
109
|
<button type="button" class="btn btn-outline-secondary" data-ra-dismiss><%= t('rates_availabilities.rate_plan_form.cancel') %></button>
|
|
106
110
|
<button type="submit" class="btn btn-primary"><%= t('rates_availabilities.rate_plan_form.save') %></button>
|
|
107
111
|
</div>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<%# locals: model (an ApiCaches::Invalidate::SUPPORTED_MODELS key), id (one record), tenant_id (with
|
|
2
|
+
no id, clears every record of model on that tenant's API; neither clears the BookMe+ storefront). %>
|
|
3
|
+
<% id ||= nil %>
|
|
4
|
+
<% tenant_id ||= nil %>
|
|
5
|
+
<%= button_link_to Spree.t(:clear_cache), clear_admin_api_caches_path(model: model, id: id, tenant_id: tenant_id), method: :post, class: 'btn btn-outline-primary' %>
|
data/config/locales/en.yml
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
|
|
3
3
|
en:
|
|
4
4
|
views:
|
|
5
|
+
admin:
|
|
6
|
+
guests:
|
|
7
|
+
dynamic_fields:
|
|
8
|
+
title: "Custom fields"
|
|
9
|
+
stages:
|
|
10
|
+
pre_registration: "Before registration"
|
|
11
|
+
post_registration: "After registration"
|
|
12
|
+
during_check_in: "During check-in"
|
|
13
|
+
"yes": "Yes"
|
|
14
|
+
"no": "No"
|
|
5
15
|
manage_team:
|
|
6
16
|
add:
|
|
7
17
|
user_not_found: "User not found"
|
|
@@ -265,6 +275,7 @@ en:
|
|
|
265
275
|
riel: "៛"
|
|
266
276
|
|
|
267
277
|
spree:
|
|
278
|
+
clear_cache_requested: "Clearing cache. Changes appear in the app within about a minute."
|
|
268
279
|
default_inventory: "Default Inventory"
|
|
269
280
|
title: "Title"
|
|
270
281
|
confirm_clone_customer_notification: "Are you sure you want to clone \"%{title}\"?"
|
|
@@ -1220,6 +1231,10 @@ en:
|
|
|
1220
1231
|
convert:
|
|
1221
1232
|
hold_expired: "Your reservation expired before payment completed. Please try booking again."
|
|
1222
1233
|
|
|
1234
|
+
inventory_item:
|
|
1235
|
+
reset:
|
|
1236
|
+
busy: "Stock changed while it was being recounted, as someone is booking it. Try again in a moment."
|
|
1237
|
+
|
|
1223
1238
|
# Displayed as-is on stock-status badges pushed to Firestore (see
|
|
1224
1239
|
# SpreeCmCommissioner::Products::PublishStockStatusToFirestore) — not read via I18n at request
|
|
1225
1240
|
# time, so every locale we publish for must have an entry here.
|
|
@@ -1636,7 +1651,12 @@ en:
|
|
|
1636
1651
|
close: "Close sale"
|
|
1637
1652
|
reopen: "Reopen sale"
|
|
1638
1653
|
reset_stock: "Recount stock"
|
|
1639
|
-
reset_stock_confirm: "Recount stock? Available and on-hold are recalculated from
|
|
1654
|
+
reset_stock_confirm: "Recount stock? Available and on-hold are recalculated from Base stock and orders, which undoes stock set on the date."
|
|
1655
|
+
recount_limit: "Recount up to %{max} dates at a time"
|
|
1656
|
+
busy: "%{count} were being booked and were left as they were; try them again in a moment."
|
|
1657
|
+
use_base_stock: "Use Base stock"
|
|
1658
|
+
use_base_stock_hint: "Recount the selected dates from Base stock and orders, undoing the stock set on them"
|
|
1659
|
+
use_base_stock_confirm: "Recount %{count} selected dates from Base stock and orders? Stock set on them is undone."
|
|
1640
1660
|
deselect: "Deselect all"
|
|
1641
1661
|
selected: "%{count} selected"
|
|
1642
1662
|
saving: "Saving…"
|
|
@@ -1720,6 +1740,10 @@ en:
|
|
|
1720
1740
|
title: "Stock details"
|
|
1721
1741
|
date: "Date"
|
|
1722
1742
|
none: "No inventory for the selected dates."
|
|
1743
|
+
recount_all: "Recount all"
|
|
1744
|
+
recount_all_hint: "Recalculates from Base stock and orders: fixes drifted counts and undoes stock set on these dates."
|
|
1745
|
+
recount_all_confirm: "Recount all %{count} rows? Available and on-hold are recalculated from Base stock and orders, which undoes stock set on those dates."
|
|
1746
|
+
recount_all_limit: "Select up to %{max} rows to recount them all at once"
|
|
1723
1747
|
bookings:
|
|
1724
1748
|
title: "Bookings"
|
|
1725
1749
|
open: "Bookings"
|
data/config/locales/km.yml
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
|
|
4
4
|
km:
|
|
5
5
|
views:
|
|
6
|
+
admin:
|
|
7
|
+
guests:
|
|
8
|
+
dynamic_fields:
|
|
9
|
+
title: "ព័ត៌មានបន្ថែម"
|
|
10
|
+
stages:
|
|
11
|
+
pre_registration: "មុនចុះឈ្មោះ"
|
|
12
|
+
post_registration: "ក្រោយចុះឈ្មោះ"
|
|
13
|
+
during_check_in: "ពេលចូលរួម"
|
|
14
|
+
"yes": "បាទ/ចាស"
|
|
15
|
+
"no": "ទេ"
|
|
6
16
|
manage_team:
|
|
7
17
|
add:
|
|
8
18
|
user_not_found: "រកមិនឃើញអ្នកប្រើប្រាស់"
|
|
@@ -222,6 +232,7 @@ km:
|
|
|
222
232
|
riel: "៛"
|
|
223
233
|
|
|
224
234
|
spree:
|
|
235
|
+
clear_cache_requested: "កំពុងសម្អាតឃ្លាំងទិន្នន័យ។ ការផ្លាស់ប្តូរនឹងបង្ហាញក្នុងកម្មវិធីក្នុងរយៈពេលប្រហែលមួយនាទី។"
|
|
225
236
|
default_inventory: "ស្តុកលំនាំដើម"
|
|
226
237
|
title: "ចំណងជើង"
|
|
227
238
|
confirm_clone_customer_notification: "តើអ្នកប្រាកដថាចង់ចម្លង \"%{title}\" មែនទេ?"
|
|
@@ -740,6 +751,10 @@ km:
|
|
|
740
751
|
convert:
|
|
741
752
|
hold_expired: "ការកក់របស់អ្នកបានផុតកំណត់មុនពេលទូទាត់ប្រាក់បានបញ្ចប់។ សូមព្យាយាមកក់ម្តងទៀត។"
|
|
742
753
|
|
|
754
|
+
inventory_item:
|
|
755
|
+
reset:
|
|
756
|
+
busy: "ស្តុកបានផ្លាស់ប្តូរពេលកំពុងរាប់ឡើងវិញ ព្រោះមានអ្នកកំពុងកក់។ សូមព្យាយាមម្តងទៀតបន្តិចទៀត។"
|
|
757
|
+
|
|
743
758
|
stock_status:
|
|
744
759
|
pending_hold: "តម្រូវការខ្ពស់"
|
|
745
760
|
sold_out: "លក់អស់"
|
|
@@ -1176,7 +1191,12 @@ km:
|
|
|
1176
1191
|
close: "បិទការលក់"
|
|
1177
1192
|
reopen: "បើកការលក់ឡើងវិញ"
|
|
1178
1193
|
reset_stock: "រាប់ស្តុកឡើងវិញ"
|
|
1179
|
-
reset_stock_confirm: "រាប់ស្តុកឡើងវិញ? ចំនួននៅសល់ និងកំពុងរក្សាទុកនឹងត្រូវគណនាឡើងវិញពីស្តុកមូលដ្ឋាន
|
|
1194
|
+
reset_stock_confirm: "រាប់ស្តុកឡើងវិញ? ចំនួននៅសល់ និងកំពុងរក្សាទុកនឹងត្រូវគណនាឡើងវិញពីស្តុកមូលដ្ឋាន និងការកម្ម៉ង់ ដែលលុបស្តុកដែលបានកំណត់លើថ្ងៃនោះ។"
|
|
1195
|
+
recount_limit: "អាចរាប់ស្តុកឡើងវិញបានយ៉ាងច្រើន %{max} ថ្ងៃក្នុងមួយលើក"
|
|
1196
|
+
busy: "%{count} កំពុងត្រូវបានកក់ ហើយមិនត្រូវបានប្តូរទេ។ សូមព្យាយាមម្តងទៀតបន្តិចទៀត។"
|
|
1197
|
+
use_base_stock: "ប្រើស្តុកមូលដ្ឋាន"
|
|
1198
|
+
use_base_stock_hint: "រាប់ស្តុកថ្ងៃដែលបានជ្រើសឡើងវិញពីស្តុកមូលដ្ឋាន និងការកម្ម៉ង់ ដោយលុបស្តុកដែលបានកំណត់លើថ្ងៃទាំងនោះ"
|
|
1199
|
+
use_base_stock_confirm: "រាប់ស្តុក %{count} ថ្ងៃដែលបានជ្រើសឡើងវិញពីស្តុកមូលដ្ឋាន និងការកម្ម៉ង់? ស្តុកដែលបានកំណត់លើថ្ងៃទាំងនោះនឹងត្រូវលុប។"
|
|
1180
1200
|
deselect: "ដកការជ្រើសទាំងអស់"
|
|
1181
1201
|
selected: "បានជ្រើស %{count}"
|
|
1182
1202
|
saving: "កំពុងរក្សាទុក…"
|
|
@@ -1260,6 +1280,10 @@ km:
|
|
|
1260
1280
|
title: "ព័ត៌មានលម្អិតស្តុក"
|
|
1261
1281
|
date: "ថ្ងៃ"
|
|
1262
1282
|
none: "គ្មានស្តុកសម្រាប់ថ្ងៃដែលបានជ្រើសទេ។"
|
|
1283
|
+
recount_all: "រាប់ទាំងអស់ឡើងវិញ"
|
|
1284
|
+
recount_all_hint: "គណនាឡើងវិញពីស្តុកមូលដ្ឋាន និងការកម្ម៉ង់៖ កែចំនួនដែលខុស និងលុបស្តុកដែលបានកំណត់លើថ្ងៃទាំងនេះ។"
|
|
1285
|
+
recount_all_confirm: "រាប់ស្តុកទាំង %{count} ជួរឡើងវិញ? ចំនួននៅសល់ និងកំពុងរក្សាទុកនឹងត្រូវគណនាឡើងវិញពីស្តុកមូលដ្ឋាន និងការកម្ម៉ង់ ដែលលុបស្តុកដែលបានកំណត់លើថ្ងៃទាំងនោះ។"
|
|
1286
|
+
recount_all_limit: "ជ្រើសមិនលើស %{max} ជួរ ដើម្បីរាប់ទាំងអស់ឡើងវិញក្នុងមួយលើក"
|
|
1263
1287
|
bookings:
|
|
1264
1288
|
title: "ការកក់"
|
|
1265
1289
|
open: "ការកក់"
|
data/config/routes.rb
CHANGED
|
@@ -20,7 +20,11 @@ Spree::Core::Engine.add_routes do
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
namespace :admin do
|
|
23
|
-
|
|
23
|
+
resources :api_caches, only: [] do
|
|
24
|
+
collection do
|
|
25
|
+
post :clear
|
|
26
|
+
end
|
|
27
|
+
end
|
|
24
28
|
|
|
25
29
|
get '/system', to: redirect('/admin/system/waiting_room')
|
|
26
30
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_cm_commissioner
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.14.
|
|
4
|
+
version: 2.14.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- You
|
|
@@ -824,6 +824,7 @@ files:
|
|
|
824
824
|
- app/controllers/concerns/spree_cm_commissioner/turnstile_protectable.rb
|
|
825
825
|
- app/controllers/concerns/spree_cm_commissioner/waiting_room_authorization.rb
|
|
826
826
|
- app/controllers/spree/admin/account_deletions_controller.rb
|
|
827
|
+
- app/controllers/spree/admin/api_caches_controller.rb
|
|
827
828
|
- app/controllers/spree/admin/base_controller_decorator.rb
|
|
828
829
|
- app/controllers/spree/admin/base_import_orders_controller.rb
|
|
829
830
|
- app/controllers/spree/admin/blazer_queries_controller.rb
|
|
@@ -1370,6 +1371,7 @@ files:
|
|
|
1370
1371
|
- app/jobs/spree_cm_commissioner/application_unique_job.rb
|
|
1371
1372
|
- app/jobs/spree_cm_commissioner/async_operation_job.rb
|
|
1372
1373
|
- app/jobs/spree_cm_commissioner/audit_event_job.rb
|
|
1374
|
+
- app/jobs/spree_cm_commissioner/audit_events/cleanup_expired_job.rb
|
|
1373
1375
|
- app/jobs/spree_cm_commissioner/cancel_import_order_job.rb
|
|
1374
1376
|
- app/jobs/spree_cm_commissioner/chatrace_order_creator_job.rb
|
|
1375
1377
|
- app/jobs/spree_cm_commissioner/completion_steps/regenerate_for_line_items_job.rb
|
|
@@ -1872,6 +1874,7 @@ files:
|
|
|
1872
1874
|
- app/overrides/spree/admin/cms_pages/index/cms_pages_tabs.html.erb.deface
|
|
1873
1875
|
- app/overrides/spree/admin/menu_items/_form/badge_field.html.erb.deface
|
|
1874
1876
|
- app/overrides/spree/admin/menus/edit/add_import_sprite_button.html.erb.deface
|
|
1877
|
+
- app/overrides/spree/admin/menus/index/clear_cache_button.html.erb.deface
|
|
1875
1878
|
- app/overrides/spree/admin/oauth_applications/_form/tenant_fields.html.erb.deface
|
|
1876
1879
|
- app/overrides/spree/admin/option_types/_form/attr_type.html.erb.deface
|
|
1877
1880
|
- app/overrides/spree/admin/option_types/_form/checkbox.html.erb.deface
|
|
@@ -1896,6 +1899,7 @@ files:
|
|
|
1896
1899
|
- app/overrides/spree/admin/orders/index/line_items_row.html.erb.deface
|
|
1897
1900
|
- app/overrides/spree/admin/orders/index/row_actions.html.erb.deface
|
|
1898
1901
|
- app/overrides/spree/admin/payment_methods/_form/display_on_field.html.erb.deface
|
|
1902
|
+
- app/overrides/spree/admin/payment_methods/index/clear_cache_button.html.erb.deface
|
|
1899
1903
|
- app/overrides/spree/admin/payment_methods/index/pagination.html.erb.deface
|
|
1900
1904
|
- app/overrides/spree/admin/payment_methods/index/preserve_tab_in_search.html.erb.deface
|
|
1901
1905
|
- app/overrides/spree/admin/payments/_form/amount_text_field.html.erb.deface
|
|
@@ -2038,6 +2042,7 @@ files:
|
|
|
2038
2042
|
- app/overrides/spree/admin/vendors/_form/star_rating.html.erb.deface
|
|
2039
2043
|
- app/overrides/spree/admin/vendors/_form/term_of_use.html.erb.deface
|
|
2040
2044
|
- app/overrides/spree/admin/vendors/_form/vendor_min_max_price.html.erb.deface
|
|
2045
|
+
- app/overrides/spree/admin/vendors/edit/clear_cache_button.html.erb.deface
|
|
2041
2046
|
- app/overrides/spree/admin/vendors/edit/vendor_tabs.html.erb.deface
|
|
2042
2047
|
- app/overrides/spree/admin/vendors/index/index.html.erb.deface
|
|
2043
2048
|
- app/overrides/spree/admin/webhooks_subscribers/_form/api_key.html.erb.deface
|
|
@@ -2088,6 +2093,7 @@ files:
|
|
|
2088
2093
|
- app/serializables/spree_cm_commissioner/pie_chart_event_aggregator.rb
|
|
2089
2094
|
- app/serializers/.gitkeep
|
|
2090
2095
|
- app/serializers/concerns/spree_cm_commissioner/api/v2/resource_serializer_concern_decorator.rb
|
|
2096
|
+
- app/serializers/spree/api/v2/base_serializer_decorator.rb
|
|
2091
2097
|
- app/serializers/spree/api/v2/platform/create_date_specific_item_adjustment_serializer.rb
|
|
2092
2098
|
- app/serializers/spree/api/v2/platform/create_guest_adjustment_serializer.rb
|
|
2093
2099
|
- app/serializers/spree/api/v2/platform/create_line_item_adjustment_serializer.rb
|
|
@@ -2314,7 +2320,9 @@ files:
|
|
|
2314
2320
|
- app/services/spree_cm_commissioner/agency_users/create.rb
|
|
2315
2321
|
- app/services/spree_cm_commissioner/agency_users/destroy.rb
|
|
2316
2322
|
- app/services/spree_cm_commissioner/api_caches/invalidate.rb
|
|
2323
|
+
- app/services/spree_cm_commissioner/api_caches/invalidate_all.rb
|
|
2317
2324
|
- app/services/spree_cm_commissioner/assign_product_to_section/update.rb
|
|
2325
|
+
- app/services/spree_cm_commissioner/audit_events/cleanup_expired.rb
|
|
2318
2326
|
- app/services/spree_cm_commissioner/audit_logger.rb
|
|
2319
2327
|
- app/services/spree_cm_commissioner/calculate_distance.rb
|
|
2320
2328
|
- app/services/spree_cm_commissioner/cart/add_guest.rb
|
|
@@ -2361,6 +2369,7 @@ files:
|
|
|
2361
2369
|
- app/services/spree_cm_commissioner/google_wallets/hotel_class_creator.rb
|
|
2362
2370
|
- app/services/spree_cm_commissioner/google_wallets/hotel_class_updater.rb
|
|
2363
2371
|
- app/services/spree_cm_commissioner/google_wallets/hotel_object_builder.rb
|
|
2372
|
+
- app/services/spree_cm_commissioner/guests/build_dynamic_field_attributes.rb
|
|
2364
2373
|
- app/services/spree_cm_commissioner/guests/claim_invite_guest_service.rb
|
|
2365
2374
|
- app/services/spree_cm_commissioner/guests/create.rb
|
|
2366
2375
|
- app/services/spree_cm_commissioner/guests/finalize.rb
|
|
@@ -2638,6 +2647,7 @@ files:
|
|
|
2638
2647
|
- app/services/spree_cm_commissioner/routes/create.rb
|
|
2639
2648
|
- app/services/spree_cm_commissioner/routes/update.rb
|
|
2640
2649
|
- app/services/spree_cm_commissioner/rsa_service.rb
|
|
2650
|
+
- app/services/spree_cm_commissioner/seat_layouts/grid.rb
|
|
2641
2651
|
- app/services/spree_cm_commissioner/seat_layouts/sanitize_svg.rb
|
|
2642
2652
|
- app/services/spree_cm_commissioner/seat_layouts/update.rb
|
|
2643
2653
|
- app/services/spree_cm_commissioner/seats/apply_locks.rb
|
|
@@ -2807,6 +2817,7 @@ files:
|
|
|
2807
2817
|
- app/views/spree/admin/guest_qr_codes/_guest_qr_codes_print_template.html.erb
|
|
2808
2818
|
- app/views/spree/admin/guest_qr_codes/index.html.erb
|
|
2809
2819
|
- app/views/spree/admin/guests/_check_in_status.html.erb
|
|
2820
|
+
- app/views/spree/admin/guests/_dynamic_fields.html.erb
|
|
2810
2821
|
- app/views/spree/admin/guests/_form.html.erb
|
|
2811
2822
|
- app/views/spree/admin/guests/_table.html.erb
|
|
2812
2823
|
- app/views/spree/admin/guests/edit.html.erb
|
|
@@ -2967,6 +2978,7 @@ files:
|
|
|
2967
2978
|
- app/views/spree/admin/service_fee_rules/edit.html.erb
|
|
2968
2979
|
- app/views/spree/admin/service_fee_rules/index.html.erb
|
|
2969
2980
|
- app/views/spree/admin/service_fee_rules/new.html.erb
|
|
2981
|
+
- app/views/spree/admin/shared/_api_cache_button.html.erb
|
|
2970
2982
|
- app/views/spree/admin/shared/_availability_percentage.html.erb
|
|
2971
2983
|
- app/views/spree/admin/shared/_cms_pages_tabs.html.erb
|
|
2972
2984
|
- app/views/spree/admin/shared/_customer_notification_tabs.html.erb
|