@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.
- package/.php-cs-fixer.php +2 -0
- package/addon/components/modals/create-first-store.hbs +1 -1
- package/addon/components/modals/create-network.hbs +1 -1
- package/addon/components/modals/create-store.hbs +1 -1
- package/addon/components/modals/manage-addons.hbs +1 -1
- package/addon/components/modals/store-form.hbs +2 -2
- package/addon/components/storefront-order-summary.hbs +73 -0
- package/addon/components/storefront-order-summary.js +3 -0
- package/addon/components/widget/orders.js +1 -1
- package/addon/controllers/networks/index/network/index.js +5 -1
- package/addon/controllers/products/index/category/edit.js +1 -1
- package/addon/controllers/products/index/category/new.js +4 -5
- package/addon/controllers/settings/index.js +5 -1
- package/addon/engine.js +4 -0
- package/addon/templates/networks/index/network/index.hbs +1 -1
- package/addon/templates/products/index/category/new.hbs +10 -5
- package/addon/templates/settings/index.hbs +14 -4
- package/app/components/storefront-order-summary.js +1 -0
- package/composer.json +6 -4
- package/extension.json +1 -1
- package/package.json +3 -3
- package/server/migrations/2023_05_03_025307_create_carts_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_checkouts_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_gateways_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_network_stores_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_networks_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_notification_channels_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_payment_methods_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_product_addon_categories_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_product_addons_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_product_hours_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_product_store_locations_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_product_variant_options_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_product_variants_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_products_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_reviews_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_store_hours_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_store_locations_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_stores_table.php +1 -2
- package/server/migrations/2023_05_03_025307_create_votes_table.php +1 -2
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_carts_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_checkouts_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_gateways_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_network_stores_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_networks_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_notification_channels_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_payment_methods_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_addon_categories_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_addons_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_hours_table.php +1 -2
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_store_locations_table.php +1 -2
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_variant_options_table.php +1 -2
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_variants_table.php +1 -2
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_products_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_reviews_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_store_hours_table.php +1 -2
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_store_locations_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_stores_table.php +3 -4
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_votes_table.php +3 -4
- package/server/seeders/OrderConfigSeeder.php +23 -0
- package/server/src/Expansions/EntityExpansion.php +2 -1
- package/server/src/Http/Controllers/v1/CartController.php +0 -12
- package/server/src/Http/Controllers/v1/CheckoutController.php +37 -38
- package/server/src/Http/Controllers/v1/ServiceQuoteController.php +7 -9
- package/server/src/Http/Resources/Network.php +1 -0
- package/server/src/Http/Resources/Store.php +1 -0
- package/server/src/Models/Cart.php +3 -11
- package/server/src/Models/Product.php +2 -5
- package/server/src/Observers/CompanyObserver.php +20 -0
- package/server/src/Observers/NetworkObserver.php +1 -1
- package/server/src/Providers/StorefrontServiceProvider.php +1 -0
- package/server/src/Support/Storefront.php +249 -0
- package/translations/en-us.yaml +2 -0
- 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
|
}
|
package/translations/en-us.yaml
CHANGED