@fleetbase/storefront-engine 0.3.3 → 0.3.5

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 (74) hide show
  1. package/.php-cs-fixer.php +2 -0
  2. package/addon/components/modals/create-first-store.hbs +1 -1
  3. package/addon/components/modals/create-network.hbs +1 -1
  4. package/addon/components/modals/create-store.hbs +1 -1
  5. package/addon/components/modals/manage-addons.hbs +1 -1
  6. package/addon/components/modals/store-form.hbs +2 -2
  7. package/addon/components/storefront-order-summary.hbs +73 -0
  8. package/addon/components/storefront-order-summary.js +3 -0
  9. package/addon/components/widget/orders.js +1 -1
  10. package/addon/controllers/networks/index/network/index.js +5 -1
  11. package/addon/controllers/products/index/category/edit.js +1 -1
  12. package/addon/controllers/products/index/category/new.js +4 -5
  13. package/addon/controllers/settings/index.js +5 -1
  14. package/addon/engine.js +4 -0
  15. package/addon/templates/networks/index/network/index.hbs +1 -1
  16. package/addon/templates/products/index/category/new.hbs +10 -5
  17. package/addon/templates/settings/index.hbs +14 -4
  18. package/app/components/storefront-order-summary.js +1 -0
  19. package/composer.json +6 -4
  20. package/extension.json +1 -1
  21. package/package.json +3 -3
  22. package/server/migrations/2023_05_03_025307_create_carts_table.php +1 -2
  23. package/server/migrations/2023_05_03_025307_create_checkouts_table.php +1 -2
  24. package/server/migrations/2023_05_03_025307_create_gateways_table.php +1 -2
  25. package/server/migrations/2023_05_03_025307_create_network_stores_table.php +1 -2
  26. package/server/migrations/2023_05_03_025307_create_networks_table.php +1 -2
  27. package/server/migrations/2023_05_03_025307_create_notification_channels_table.php +1 -2
  28. package/server/migrations/2023_05_03_025307_create_payment_methods_table.php +1 -2
  29. package/server/migrations/2023_05_03_025307_create_product_addon_categories_table.php +1 -2
  30. package/server/migrations/2023_05_03_025307_create_product_addons_table.php +1 -2
  31. package/server/migrations/2023_05_03_025307_create_product_hours_table.php +1 -2
  32. package/server/migrations/2023_05_03_025307_create_product_store_locations_table.php +1 -2
  33. package/server/migrations/2023_05_03_025307_create_product_variant_options_table.php +1 -2
  34. package/server/migrations/2023_05_03_025307_create_product_variants_table.php +1 -2
  35. package/server/migrations/2023_05_03_025307_create_products_table.php +1 -2
  36. package/server/migrations/2023_05_03_025307_create_reviews_table.php +1 -2
  37. package/server/migrations/2023_05_03_025307_create_store_hours_table.php +1 -2
  38. package/server/migrations/2023_05_03_025307_create_store_locations_table.php +1 -2
  39. package/server/migrations/2023_05_03_025307_create_stores_table.php +1 -2
  40. package/server/migrations/2023_05_03_025307_create_votes_table.php +1 -2
  41. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_carts_table.php +3 -4
  42. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_checkouts_table.php +3 -4
  43. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_gateways_table.php +3 -4
  44. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_network_stores_table.php +3 -4
  45. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_networks_table.php +3 -4
  46. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_notification_channels_table.php +3 -4
  47. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_payment_methods_table.php +3 -4
  48. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_addon_categories_table.php +3 -4
  49. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_addons_table.php +3 -4
  50. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_hours_table.php +1 -2
  51. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_store_locations_table.php +1 -2
  52. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_variant_options_table.php +1 -2
  53. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_variants_table.php +1 -2
  54. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_products_table.php +3 -4
  55. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_reviews_table.php +3 -4
  56. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_store_hours_table.php +1 -2
  57. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_store_locations_table.php +3 -4
  58. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_stores_table.php +3 -4
  59. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_votes_table.php +3 -4
  60. package/server/seeders/OrderConfigSeeder.php +23 -0
  61. package/server/src/Expansions/EntityExpansion.php +2 -1
  62. package/server/src/Http/Controllers/v1/CartController.php +0 -12
  63. package/server/src/Http/Controllers/v1/CheckoutController.php +37 -38
  64. package/server/src/Http/Controllers/v1/ServiceQuoteController.php +7 -9
  65. package/server/src/Http/Resources/Network.php +1 -0
  66. package/server/src/Http/Resources/Store.php +1 -0
  67. package/server/src/Models/Cart.php +3 -11
  68. package/server/src/Models/Product.php +2 -5
  69. package/server/src/Observers/CompanyObserver.php +20 -0
  70. package/server/src/Observers/NetworkObserver.php +1 -1
  71. package/server/src/Providers/StorefrontServiceProvider.php +1 -0
  72. package/server/src/Support/Storefront.php +249 -0
  73. package/translations/en-us.yaml +2 -0
  74. package/server/src/Support/OrderConfig.php +0 -14
@@ -4,6 +4,8 @@ namespace Fleetbase\Storefront\Support;
4
4
 
5
5
  use Fleetbase\FleetOps\Models\Contact;
6
6
  use Fleetbase\FleetOps\Models\Order;
7
+ use Fleetbase\FleetOps\Models\OrderConfig;
8
+ use Fleetbase\Models\Company;
7
9
  use Fleetbase\Models\User;
8
10
  use Fleetbase\Storefront\Models\Gateway;
9
11
  use Fleetbase\Storefront\Models\Network;
@@ -200,4 +202,251 @@ class Storefront
200
202
 
201
203
  return $stripeCustomer;
202
204
  }
205
+
206
+ /**
207
+ * Creates or retrieves an existing storefront configuration for a given company.
208
+ *
209
+ * This method checks if a storefront configuration (OrderConfig) already exists for the given company.
210
+ * If it exists, the method returns the existing configuration. Otherwise, it creates a new configuration with
211
+ * predefined settings for a storefront order process. The configuration includes various stages like 'created',
212
+ * 'started', 'canceled', 'completed', etc., each defined with specific attributes like key, code, color, logic,
213
+ * events, status, actions, details, and more. These stages help manage the order lifecycle in a storefront context.
214
+ *
215
+ * @param Company $company the company for which the storefront configuration is being created or retrieved
216
+ *
217
+ * @return OrderConfig the storefront order configuration associated with the specified company
218
+ */
219
+ public static function createStorefrontConfig(Company $company): OrderConfig
220
+ {
221
+ return OrderConfig::firstOrCreate(
222
+ [
223
+ 'company_uuid' => $company->uuid,
224
+ 'key' => 'storefront',
225
+ 'namespace' => 'system:order-config:storefront',
226
+ ],
227
+ [
228
+ 'name' => 'Storefront',
229
+ 'key' => 'storefront',
230
+ 'namespace' => 'system:order-config:storefront',
231
+ 'description' => 'Storefront order configuration for hyperlocal delivery and pickup',
232
+ 'core_service' => 1,
233
+ 'status' => 'private',
234
+ 'version' => '0.0.1',
235
+ 'tags' => ['storefront', 'ecommerce', 'hyperlocal'],
236
+ 'entities' => [],
237
+ 'meta' => [],
238
+ 'flow' => [
239
+ 'created' => [
240
+ 'key' => 'created',
241
+ 'code' => 'created',
242
+ 'color' => '#1f2937',
243
+ 'logic' => [],
244
+ 'events' => [],
245
+ 'status' => 'Order Created',
246
+ 'actions' => [],
247
+ 'details' => 'New order was created.',
248
+ 'options' => [],
249
+ 'complete' => false,
250
+ 'entities' => [],
251
+ 'sequence' => 0,
252
+ 'activities' => ['dispatched'],
253
+ 'internalId' => Str::uuid(),
254
+ 'pod_method' => 'scan',
255
+ 'require_pod' => false,
256
+ ],
257
+ 'started' => [
258
+ 'key' => 'started',
259
+ 'code' => 'started',
260
+ 'color' => '#1f2937',
261
+ 'logic' => [],
262
+ 'events' => [],
263
+ 'status' => 'Order Started',
264
+ 'actions' => [],
265
+ 'details' => 'Order has been started',
266
+ 'options' => [],
267
+ 'complete' => false,
268
+ 'entities' => [],
269
+ 'sequence' => 0,
270
+ 'activities' => ['canceled', 'preparing'],
271
+ 'internalId' => Str::uuid(),
272
+ 'pod_method' => 'scan',
273
+ 'require_pod' => false,
274
+ ],
275
+ 'canceled' => [
276
+ 'key' => 'canceled',
277
+ 'code' => 'canceled',
278
+ 'color' => '#1f2937',
279
+ 'logic' => [],
280
+ 'events' => ['order.canceled'],
281
+ 'status' => 'Order canceled',
282
+ 'actions' => [],
283
+ 'details' => 'Order could not be accepted',
284
+ 'options' => [],
285
+ 'complete' => false,
286
+ 'entities' => [],
287
+ 'sequence' => 0,
288
+ 'activities' => [],
289
+ 'internalId' => Str::uuid(),
290
+ 'pod_method' => 'scan',
291
+ 'require_pod' => false,
292
+ ],
293
+ 'completed' => [
294
+ 'key' => 'completed',
295
+ 'code' => 'completed',
296
+ 'color' => '#1f2937',
297
+ 'logic' => [],
298
+ 'events' => [],
299
+ 'status' => 'Order completed',
300
+ 'actions' => [],
301
+ 'details' => 'Driver has completed the order',
302
+ 'options' => [],
303
+ 'complete' => true,
304
+ 'entities' => [],
305
+ 'sequence' => 0,
306
+ 'activities' => [],
307
+ 'internalId' => Str::uuid(),
308
+ 'pod_method' => 'scan',
309
+ 'require_pod' => false,
310
+ ],
311
+ 'picked_up' => [
312
+ 'key' => 'completed',
313
+ 'code' => 'picked_up',
314
+ 'color' => '#1f2937',
315
+ 'logic' => [],
316
+ 'events' => [],
317
+ 'status' => 'Order picked up',
318
+ 'actions' => [],
319
+ 'details' => 'Order has been picked up by customer',
320
+ 'options' => [],
321
+ 'complete' => true,
322
+ 'entities' => [],
323
+ 'sequence' => 0,
324
+ 'activities' => [],
325
+ 'internalId' => Str::uuid(),
326
+ 'pod_method' => 'scan',
327
+ 'require_pod' => false,
328
+ ],
329
+ 'preparing' => [
330
+ 'key' => 'preparing',
331
+ 'code' => 'preparing',
332
+ 'color' => '#1f2937',
333
+ 'logic' => [],
334
+ 'events' => [],
335
+ 'status' => 'Order is being prepared',
336
+ 'actions' => [],
337
+ 'details' => 'Order has been received by {storefront.name} and is being prepared',
338
+ 'options' => [],
339
+ 'complete' => false,
340
+ 'entities' => [],
341
+ 'sequence' => 0,
342
+ 'activities' => ['driver_enroute_to_store', 'pickup_ready'],
343
+ 'internalId' => Str::uuid(),
344
+ 'pod_method' => 'scan',
345
+ 'require_pod' => false,
346
+ ],
347
+ 'dispatched' => [
348
+ 'key' => 'dispatched',
349
+ 'code' => 'dispatched',
350
+ 'color' => '#1f2937',
351
+ 'logic' => [],
352
+ 'events' => [],
353
+ 'status' => 'Order Dispatched',
354
+ 'actions' => [],
355
+ 'details' => 'Order has been dispatched.',
356
+ 'options' => [],
357
+ 'complete' => false,
358
+ 'entities' => [],
359
+ 'sequence' => 0,
360
+ 'activities' => ['started'],
361
+ 'internalId' => Str::uuid(),
362
+ 'pod_method' => 'scan',
363
+ 'require_pod' => false,
364
+ ],
365
+ 'pickup_ready' => [
366
+ 'key' => 'ready',
367
+ 'code' => 'pickup_ready',
368
+ 'color' => '#1f2937',
369
+ 'logic' => [
370
+ [
371
+ 'type' => 'if',
372
+ 'conditions' => [
373
+ [
374
+ 'field' => 'meta.is_pickup',
375
+ 'value' => 'true',
376
+ 'operator' => 'equal',
377
+ ],
378
+ ],
379
+ ],
380
+ ],
381
+ 'events' => [],
382
+ 'status' => 'Order is ready for pickup',
383
+ 'actions' => [],
384
+ 'details' => 'Order is ready to be picked up by customer',
385
+ 'options' => [],
386
+ 'complete' => false,
387
+ 'entities' => [],
388
+ 'sequence' => 0,
389
+ 'activities' => ['picked_up'],
390
+ 'internalId' => Str::uuid(),
391
+ 'pod_method' => 'scan',
392
+ 'require_pod' => false,
393
+ ],
394
+ 'driver_enroute' => [
395
+ 'key' => 'driver_enroute',
396
+ 'code' => 'driver_enroute',
397
+ 'color' => '#1f2937',
398
+ 'logic' => [],
399
+ 'events' => [],
400
+ 'status' => 'Driver en-route',
401
+ 'actions' => [],
402
+ 'details' => 'Driver is on the way to the customer',
403
+ 'options' => [],
404
+ 'complete' => false,
405
+ 'entities' => [],
406
+ 'sequence' => 0,
407
+ 'activities' => ['completed'],
408
+ 'internalId' => Str::uuid(),
409
+ 'pod_method' => 'scan',
410
+ 'require_pod' => false,
411
+ ],
412
+ 'driver_picked_up' => [
413
+ 'key' => 'driver_picked_up',
414
+ 'code' => 'driver_picked_up',
415
+ 'color' => '#1f2937',
416
+ 'logic' => [],
417
+ 'events' => [],
418
+ 'status' => 'Driver picked up',
419
+ 'actions' => [],
420
+ 'details' => 'Driver has picked up order',
421
+ 'options' => [],
422
+ 'complete' => false,
423
+ 'entities' => [],
424
+ 'sequence' => 0,
425
+ 'activities' => ['driver_enroute'],
426
+ 'internalId' => Str::uuid(),
427
+ 'pod_method' => 'scan',
428
+ 'require_pod' => false,
429
+ ],
430
+ 'driver_enroute_to_store' => [
431
+ 'key' => 'driver_enroute',
432
+ 'code' => 'driver_enroute_to_store',
433
+ 'color' => '#1f2937',
434
+ 'logic' => [],
435
+ 'events' => [],
436
+ 'status' => 'Driver en-route',
437
+ 'actions' => [],
438
+ 'details' => 'Driver en-route to store',
439
+ 'options' => [],
440
+ 'complete' => false,
441
+ 'entities' => [],
442
+ 'sequence' => 0,
443
+ 'activities' => ['driver_picked_up'],
444
+ 'internalId' => Str::uuid(),
445
+ 'pod_method' => 'scan',
446
+ 'require_pod' => false,
447
+ ],
448
+ ],
449
+ ]
450
+ );
451
+ }
203
452
  }
@@ -77,6 +77,8 @@ storefront:
77
77
  settings: Settings
78
78
  launch-app: Launch App
79
79
  component:
80
+ storefront-order-summary:
81
+ order-summary-title: Storefront Order Summary
80
82
  modals:
81
83
  add-store-hours:
82
84
  start-time: Start time
@@ -1,14 +0,0 @@
1
- <?php
2
-
3
- namespace Fleetbase\Storefront\Support;
4
-
5
- class OrderConfig
6
- {
7
- /**
8
- * Provides default order configs for Storefront.
9
- */
10
- public function get(): ?array
11
- {
12
- return config('storefront.api.types.order', []);
13
- }
14
- }