Commit graph

80 commits

Author SHA1 Message Date
Jérémy Munsch
cd7d5f5fe9
feat(orders): implement default sorting for order queries
Added default sorting by date in descending order for order queries.
Updated related views and tests to reflect this change.
2026-10-29 21:16:06 +01:00
Jérémy Munsch
c8f895c759
refactor: simplify use statements and type hints
- Removed fully qualified names for better readability.
- Streamlined code by using direct class references.
2026-10-29 20:35:35 +01:00
Jérémy Munsch
c40016bba1
feat(order): implement order placement and related DTOs
- Add methods to convert OrderLine and DeliveryAddress to DTOs.
- Introduce toPlacedEvent method in Order to generate domain event.
- Enhance OrderUnit with Regate code mapping.
- Implement tests for new functionality and ensure correctness.
2026-10-29 20:35:13 +01:00
Jérémy Munsch
71e0d65f31
refactor(OrderService): simplify order creation from basket
Updated the OrderService to utilize the new fromBasket method for creating orders, enhancing code clarity and maintainability. Removed the ProductAvailabilityService as its functionality is now integrated into the ProductRepository.
2026-10-29 20:21:32 +01:00
Jérémy Munsch
e857a58d00
test(Product): add comprehensive tests for Product entity
- Implement tests for product publication status.
- Add tests for product orderability based on various conditions.
- Enhance pricing calculation tests for different discount scenarios.
- Remove outdated PricingServiceTest and refactor ProductAvailabilityServiceTest.
2026-10-29 19:48:38 +01:00
Jérémy Munsch
cfac370e2e
feat(discount): implement published discounts filtering logic
Added logic to filter published discounts, including those with null start or end dates.
2026-10-29 19:19:22 +01:00
Jérémy Munsch
08354b44b6
style(tests): format code for better readability
Improved code formatting in ChangeOrderBladeTest for consistency.
2026-10-29 19:13:31 +01:00
Jérémy Munsch
ed593c25b0
test(UpdateShopPickupExceptionsRequest): remove redundant message test and update error messages
Updated error messages for better clarity and removed unnecessary test for custom messages.
2026-10-29 19:12:21 +01:00
Jérémy Munsch
c52b13cc51
feat(order): implement soft delete handling in order changes
Added support for soft-deleted models in ChangeModelOrder and ChangeModelOrderPosition actions.
This allows for proper order adjustments even when models are soft-deleted.
2026-10-29 19:04:46 +01:00
Jérémy Munsch
0874259eba
style(FilteredProductResource): fix indentation for nutriscore line 2026-10-29 17:10:13 +01:00
Jérémy Munsch
65df9aa04e
test(SettingsController): update assertions to check forbidden access
Updated test cases to assert forbidden responses instead of successful ones for employee site settings.
2026-10-29 17:05:34 +01:00
Jérémy Munsch
584fee7e69
fix(EloquentPickupExceptionRepository): include pivot data in exception mapping
Updated the mapping function to include pivot data for pickup exceptions, ensuring accurate retrieval of associated order deadlines and replacement dates.
2026-10-29 17:02:07 +01:00
Jérémy Munsch
8e42639134
feat(order): implement change selected order functionality
Add functionality to change the order of models in the product list.
This includes new actions, requests, and UI components for user interaction.
2026-10-29 16:39:23 +01:00
Jérémy Munsch
a94d8a4b49
feat(products): add discount filtering to product index
- Implement discount filtering in product queries and views.
- Update related request and response handling for discounts.
2026-10-29 16:09:41 +01:00
Jérémy Munsch
b9999caf8d
feat(discounts): add discount logic for piece pricing
Implement discount calculations that apply to the piece (sold unit) for products invoiced by weight.
2026-10-29 15:43:37 +01:00
Jérémy Munsch
82697ed416
fix(products): respect is_old_price_displayed discount setting in product cards
- Condition strikethrough price display on showStrippedPrice in ProductCard.vue
- Add showStrippedPrice to product Zod schemas, TypeScript types, repositories and store
- Optimize showStrippedPrice in FilteredProductResource using eager-loaded validDiscount
- Add unit tests for productModelSchema and integration tests in ProductsControllerTest
2026-10-29 15:08:53 +01:00
Jérémy Munsch
0d5958aae6
fix(products): update discount logic for price display
Corrected the logic for displaying discounted prices in the product views.
2026-10-29 14:56:35 +01:00
Jérémy Munsch
020e2f8526
test(DiscountProductDto): update tests to include picture attribute
Added picture attribute to the DiscountProductDto tests to ensure proper serialization.
2026-10-28 11:57:37 +01:00
Jérémy Munsch
b8a0f16efa
fix(Crm): update customer input handling in UpdateCustomer action
Refactor input validation and data preparation for customer updates.
2026-10-27 18:57:46 +01:00
Jérémy Munsch
713c937890
fix(casts): update OrderReferenceCast to use base58 encoding
Refactor OrderReferenceCast to utilize base58 encoding for order references instead of UUID.
This change improves compatibility with the new OrderReference implementation.
2026-10-27 16:17:28 +01:00
Jérémy Munsch
5201aa3a5a
chore(jobs): disable Arcadia jobs until API is available and refresh 2026-10-27 11:21:13 +01:00
Jérémy Munsch
fa5abe7470
test(EmployeeSyncService): add logger to EmployeeSyncService instantiation
This change ensures that the logger is properly injected into the EmployeeSyncService for better logging capabilities during tests.
2026-10-27 09:59:01 +01:00
Jeremy Munsch
46e9c58ad2
refactor: battle test employee sync 2026-10-27 09:58:59 +01:00
Jérémy Munsch
3e4732bcb4
fix: Bind mocked CrmService to container in RegisterCustomerTest
Ensure that all mocked dependencies in RegisterCustomerTest are properly bound
to the Laravel service container using App::instance(). This prevents any code
that resolves dependencies via container injection from getting real service
instances instead of mocks.

This fix aligns the Integration test pattern with Feature tests which already
use App::instance() to bind mocks to the container.

Changes:
- Add import for Illuminate\Support\Facades\App
- Add App::instance() calls after each mock creation in all 6 test cases
- Add mockCrmService() helper method to TestCase base class for future tests

Fixes CI failures where CRM service was being called in real instead of being mocked.
2026-10-27 09:58:59 +01:00
Jérémy Munsch
8cbbefb20b
feat: flash warning message when unauthenticated guest is redirected to login 2026-10-27 09:58:55 +01:00
Jérémy Munsch
87661b2a60
refactor: migrate customer registration and mass actions to actions 2026-10-27 09:58:55 +01:00
Jérémy Munsch
17f898e3f9
feat(domain): introduce DiscountRate VO and eliminate float rounding in pricing calculations 2026-10-27 09:58:54 +01:00
Jérémy Munsch
4165bfecb5
fix(tests): use valid UUID v7 for order references in integration tests 2026-10-27 09:58:54 +01:00
Jérémy Munsch
14647576df
feat(bo/product-incos): adapt BO controller, requests, routes and views for Arcadia INCO management 2026-10-27 09:58:53 +01:00
Jérémy Munsch
50df658d58
feat(product-incos): implement actions, queries, sync job and command for Arcadia INCO sheets 2026-10-27 09:58:53 +01:00
Jérémy Munsch
3de48c14fd
feat(arcadia): add ArcadiaIncoService and DTOs to fetch and preview INCO sheets via Arcadia API 2026-10-27 09:58:53 +01:00
Jérémy Munsch
5492ffe217
refactor(orders): simplify OrderReference to wrap UuidInterface directly and remove obsolete UuidConverter 2026-10-27 09:58:51 +01:00
Jérémy Munsch
ff831beb01
test: apply Given/When/Then structure to remaining Pest tests 2026-10-27 09:58:51 +01:00
Jérémy Munsch
d29561fe64
test: annotate Pest closures using $this with \Tests\TestCase 2026-10-27 09:58:50 +01:00
Jérémy Munsch
d4db0cffc6
fix(slides): allow empty text in slide requests and indicate connected visibility in BO 2026-10-27 09:58:48 +01:00
Jérémy Munsch
3c309dc356
feat(slides): indicate visibility in BO and fix conditional slider display in FO 2026-10-27 09:58:47 +01:00
Jérémy Munsch
52588ae999
fix(ckeditor): prevent null value from being converted to string 'null' on validation returns 2026-10-27 09:58:47 +01:00
Jérémy Munsch
f84a1a7b8c
fix(orders): preserve pagination and query parameters in IndexOrdersRequest 2026-10-27 09:58:46 +01:00
Jérémy Munsch
e0c4b34ed8
feat(employees): implement deterministic 6-character code generation using SerialCaster
- Add kwaadpepper/serial-int-caster and SerialCasterServiceProvider
- Update CodeGenerationService to encode Matricule deterministically with length 6
- Update Code value object to support lengths between 6 and 10 with 53 non-ambiguous characters
- Add database migration to sanitize legacy ambiguous codes
- Recreate and update unit and integration tests for CodeGenerationService and Code value object
2026-10-27 09:58:46 +01:00
Jérémy Munsch
8b96ce90be
test(casts): add tests for EmployeeSitesCast functionality
test(casts): add tests for ShopperEstablishmentCodeCast functionality

test(casts): add tests for ShopperServiceCodeCast functionality

test(casts): add tests for ShopperSiteCodeCast functionality

test(dto): update ProductDtoTest to include additional fields

test(dto): update SettingDtoTest to remove arcadiaSites assertions

test(events): update AnOrderHasBeenPlacedTest to use value objects

test(entities): update OrderTest to use value objects for employee details

test(value-objects): update EmployeeUpsertDataTest to use value objects

test(pagination): update PaginationTest to access value properties

test(services): update AppCustomerAuthServiceTest to use CrmHashcode

test(services): update CrmServiceTest to use CrmHashcode for customer retrieval
2026-10-27 09:58:45 +01:00
Jérémy Munsch
55ea4b55f3
refactor(tests): update logout method to use Auth facade
Improves clarity by using the Auth facade for logout.
2026-10-27 09:58:45 +01:00
Jérémy Munsch
3398aacc86
refactor(casts): update exception handling to use fully qualified class names
Refactored exception handling in various cast classes to use fully qualified class names for InvalidArgumentException and UnexpectedValueException.
2026-10-27 09:58:45 +01:00
Jérémy Munsch
3b3997d547
feat(employees): automated sync with Arcadia API, BO settings, Shopper value objects, and pagination migration
- Implement automated synchronization of employees via Arcadia API (EmployeeSyncService, SynchronizeEmployeesWithArcadiaApi, FetchAndUpsertArcadiaEmployees)
- Add Back-Office application settings for employee sites (Setting singleton, GetSettingsQuery, UpdateSettings, SettingsController, EmployeeSitesInputComponent.vue)
- Strongly type Employee attributes using Domain Value Objects (ShopperEstablishmentCode, ShopperSiteCode, ShopperServiceCode) and Eloquent Casts
- Migrate pagination from Domain to Shared\Pagination namespace across queries and inputs
- Remove legacy and dead CSV employee import/export code
- Restore Domain\Ports\Services\CsvGenerator interface for Regate order generation
- Add comprehensive Pest unit, integration, and feature test coverage
2026-10-27 09:58:44 +01:00
Jérémy Munsch
9ebf712170
refactor(cqs): complete Fo/PageController, BO FormRequest input mappings, and decouple Directories 2026-10-27 09:58:44 +01:00
Jérémy Munsch
aad9586ca9
refactor(tunnel): migrate Fo\TunnelController to CQS pattern 2026-10-27 09:58:43 +01:00
Jérémy Munsch
35feddfb3d
refactor(dashboard): migrate Bo\DashboardController to CQS pattern 2026-10-27 09:58:43 +01:00
Jérémy Munsch
d912d4b096
refactor(orders): migrate Bo\OrdersController and Fo\OrderController to CQS pattern 2026-10-27 09:58:43 +01:00
Jérémy Munsch
8dd54f8824
fix(bo): fix MissingAttributeException in GetProductFormDataQuery 2026-10-27 09:58:42 +01:00
Jérémy Munsch
2ae317aad6
refactor(employees): migrate Bo EmployeesController to CQS pattern
- Add ImportEmployees Action and ImportEmployeesInput
- Add GetEmployeeImportColumnsQuery
- Encapsulate toImportEmployeesInput in ImportRequest
- Use Executor in Bo\EmployeesController
- Add feature tests for Bo\EmployeesController
2026-10-27 09:58:42 +01:00
Jérémy Munsch
70600ea623
refactor(products): migrate BO and FO ProductsControllers to CQS pattern
- Refactor Bo\ProductsController to use ActionExecutor and Queries
- Refactor Fo\Pages\ProductsController and Fo\Ajax\ProductsController to CQS
- Add Actions: CreateProduct, UpdateProduct, DeleteProduct with Inputs
- Add Queries: GetBoPaginatedProductsQuery, GetProductFormDataQuery, GetFoProductIndexPageQuery, GetFoFilteredProductsQuery
- Add DTOs: ProductFormDataDto and enrich ProductDto
- Encapsulate Action/Query inputs conversion in FormRequests
- Remove obsolete ProductDirectory and EloquentProductDirectory
- Add tests for Fo\Ajax\ProductsController
2026-10-27 09:58:42 +01:00