Compare commits

...
Sign in to create a new pull request.

282 commits

Author SHA1 Message Date
c94964c0b1
style(tests): fix spacing in IncoCompositionParserTest.php 2026-10-07 10:44:56 +02:00
dc836f911a
refactor(parser): normalize percentage value handling
Refactor percentage value parsing to use a dedicated method for better readability and maintainability.
Add tests to ensure legacy overflow percentages are normalized correctly.
2026-10-06 15:46:22 +02:00
e72b570823
style: fix spacing in type declarations and match formatting
Consistently format type declarations across response classes.
2026-10-06 15:04:44 +02:00
25cc3e982e
ci: update CI images and optimize composer install commands
Changed CI images to use a specific docker image and optimized composer install commands for better performance.
2026-10-06 15:02:44 +02:00
62c221f6b6
feat(health): add oracle probe and normalize health checks
Refactor health check DTOs around a common CheckResult contract and remove the\nlegacy HealthChecks aggregate object.\n\nAdd a dedicated /api/v1/health/oracle endpoint with response mapping, OpenAPI\nschema updates, and Bruno request coverage.\n\nAlign feature, unit, integration, architecture and OpenAPI tests with the new\nset-based checks representation and make Oracle health tests deterministic in CI.\n\nUpdate command documentation to the uwil:* command namespace.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-06 14:51:46 +02:00
71f6f64f7f
fix(brands): align FindBrand usecase output phpdoc type
Use the specific Arcadia find output interface in FindBrand generic annotations so static analysis resolves presenter/usecase template types correctly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-06 11:57:36 +02:00
dc6f8658e6
refactor(presenters): align show presenters on output interface assertions
Replicate EmployeeShowPresenter handling across brand, inco composition and inco sheet presenters by asserting the usecase Output interface and using explicit result matching for found/not-found variants.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-06 11:55:46 +02:00
5308320bcb
chore(commands): update command signatures to include 'uwil' prefix 2026-10-06 11:54:52 +02:00
18fb5f8ac2
refactor(find): use polymorphic outputs for not found cases
Replace not-found exceptions in Arcadia find/show flows with typed outputs (Found*/NotFoundOutput) and map not-found results in presenters/responses while preserving HTTP 404 problem details.

Adjust architecture and unit tests to cover concrete output classes, and remove obsolete Arcadia not-found exception classes and their tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-05 15:50:01 +02:00
0adbe7175b
feat(employees): remove siteId parameter in favor of siteIds in request, OpenAPI spec and Bruno 2026-09-18 11:51:15 +02:00
3c4eeb3014
fix(employees): normalize scalar siteIds query parameter to array in prepareForValidation 2026-09-18 11:40:39 +02:00
6497b109a2
fix(inco): normalize scalar brands query parameter to array in prepareForValidation 2026-09-18 11:40:22 +02:00
d55178407f
refactor(employees): use array helper for siteIds in EmployeesIndexRequest 2026-09-18 10:35:18 +02:00
04c39e2573
refactor(api): use League URI for RFC query string normalization and nested bracket support 2026-09-18 10:32:52 +02:00
2b2ca42c99
docs(bruno): align query parameters with OpenAPI specification 2026-09-18 10:07:15 +02:00
10674f3295
feat(inco): restrict inco sheets list and search to short projection and remove short query parameter 2026-09-18 10:07:04 +02:00
2b8aae51af
docs(openapi): standardize inco-sheets list and search responses to IncoShort and remove short parameter 2026-09-18 10:06:45 +02:00
5b2c0e58ce
docs(openapi): standardize array query parameter names without brackets and enable spectator validation 2026-09-17 18:15:52 +02:00
00aff9bf63
feat(api): add NormalizeQueryStringArrays middleware to support RFC and bracket query array formats 2026-09-17 18:15:52 +02:00
86584c5b94
fix(inco): resolve brand filter via REFP.ARTICLE_REF COD_MARQUE and align replicate tables 2026-09-17 18:10:19 +02:00
111170cd7a
docs(openapi): add array bracket notation to brands and siteIds query parameters 2026-09-17 17:28:51 +02:00
d63723a113
feat(inco): add description field to IncoShort projection and OpenAPI schema 2026-09-16 10:18:00 +02:00
d94f78dace
test(unit): update application and infra unit tests with Pagination VOs and GWT format 2026-09-15 12:49:03 +02:00
d96f903e1c
test(integration): adapt repository and directory integration tests to Pagination VOs 2026-09-15 12:49:01 +02:00
40519c4a2b
test(arch): update Shared architecture tests for Pagination VOs 2026-09-15 12:48:59 +02:00
16573cb30c
refactor(pagination): use PageNumber and PageSize value objects in http helpers and console commands 2026-09-15 12:48:55 +02:00
0c361c5ff7
feat(pagination): add PageNumber and PageSize value objects and update Pagination 2026-09-15 12:48:52 +02:00
e83a286e9b
test(arch): overhaul and complete architecture test suite across all layers 2026-09-14 19:13:41 +02:00
106d4467c4
feat(brands): add pagination caching, fast local resolution and resilient database fallback 2026-09-14 17:30:51 +02:00
df04ab87ac
feat(env): add MATRICULE variable to configuration files
This change introduces the MATRICULE variable in the environment configuration
to allow dynamic endpoint generation.
2026-09-01 17:29:19 +02:00
f1c3100ef5
refactor(inco): simplify base query by using subquery for family label
Improves readability and maintainability of the query logic.
2026-09-01 09:30:32 +02:00
8c13ab5236
chore(config): remove unused ARCADIA_DB_SCHEMA and prefix_schema from database configuration 2026-09-01 09:30:20 +02:00
bc6a603913
feat(brands): remove internal uuid from brand responses and query only by brandCode 2026-08-31 17:35:32 +02:00
7312289811
feat(employees): rename ArcadiaEmployeeId to SiRhMatricule and expose matricule in api responses 2026-08-31 17:29:18 +02:00
2606ac882e
feat(inco): mask internal allergen ids in api presentation responses 2026-08-31 17:23:02 +02:00
4434eb5757
feat(inco): rename identifiers to incoId/incoCompoId and resolve sellFamilly label 2026-08-31 17:16:38 +02:00
00f38b7d41
fix(employees): filter out invalid matricules and comments from Arcadia database 2026-08-31 16:32:11 +02:00
f3c59d8ba4
fix(docs): update API endpoint URL in Root.yml
Removed trailing slash from the API endpoint URL for consistency.
2026-08-31 16:27:15 +02:00
71f97b16e3
refactor(string): centralize string encoding and normalization in StringEncoder & StringHelper, normalize BrandName to titleCase 2026-08-31 15:36:16 +02:00
9dab38e722
chore(docs): update API endpoint in Root.yml and add VM Linux environment
- Removed trailing slash from API URL for consistency.
- Added VM Linux environment configuration with necessary variables.
2026-08-31 15:36:16 +02:00
Jeremy Munsch
e2e41ff6f6
chore: add tinker dependencies for development purpose 2026-08-31 12:42:34 +02:00
742da323aa
perf(brands): paginate ArcadiaBrandDirectory and BrandRepository with SQL limit/offset and cache warming 2026-08-31 12:37:16 +02:00
97a73a5e05
fix(brand): filter out comment tuples and enforce positive integer validation for ArcadiaId 2026-08-31 11:45:35 +02:00
2d7d7d5077
style(docs): format SQL query comments in README 2026-08-31 11:38:38 +02:00
ce528d377e
fix(openapi): replace invalid nullable property with OpenAPI 3.1 multi-type 2026-08-31 11:31:42 +02:00
e60327d286
docs(arcadia): add brand queries, HTTP API endpoint, and CLI usage in README 2026-08-31 11:30:41 +02:00
4302b89d88
fix(arcadiaId): update pattern to allow larger numeric IDs
Updated the regex pattern for ArcadiaId to accept larger numeric values.
2026-08-31 11:27:32 +02:00
8f073ecd40
style: phpcbf pass 2026-08-31 11:23:47 +02:00
3da09495dc
docs: update README to use 'artisan' command prefix
Replaced 'php arcadia:' with 'php artisan arcadia:' for consistency in command usage.
2026-08-31 11:18:28 +02:00
55df66a1c8
fix(oracle): support multi-schema queries and SID connection configuration 2026-08-31 11:17:16 +02:00
d1508fe22f
docs: update README with development and application management commands
Added sections for development quality commands and Arcadia application management commands.
2026-08-31 11:14:21 +02:00
Jeremy Munsch
728326d0a4
refactor: arcadia replicate migration run only in testing or local 2026-08-31 10:11:53 +02:00
54a199d4e0
refactor(string): extract transliterate to Shared\Helpers\StringHelper 2026-08-28 18:10:15 +02:00
0805017a70
fix(parser): use ICU transliterator for platform-independent ASCII slugification 2026-08-28 18:04:23 +02:00
e8280b1f1d
refactor(phpcs): update ruleset name and remove unused rules
refactor(pint): change preset to psr12 and add version

refactor(rector): simplify configuration and remove Laravel-specific sets
2026-08-28 17:52:54 +02:00
d508a0cb86
build(ci): require ext-oci8 in composer.json and add ignore-platform-req in GitLab CI 2026-08-28 17:46:26 +02:00
72a4278ca6
fix(replication): clean drop in reverse order and purge recyclebin during fresh migrations 2026-08-28 17:40:26 +02:00
b4f3c0bdb9
feat(health): dynamic schema conformity inspection from Migrator definitions and Oracle DUAL ping 2026-08-28 17:33:13 +02:00
d2c9e0807a
feat(database): update database configuration for Oracle and MySQL
- Changed DB_CONNECTION to MySQL and updated related settings.
- Added Oracle database configuration with necessary parameters.
- Introduced docker-compose for MySQL and Oracle services.
2026-08-28 17:31:18 +02:00
46ab5e4325
feat(health): add Arcadia database conformity check with diff hashing and synchronous alerting 2026-08-28 14:12:33 +02:00
197aedbc5e
refactor(health): remove toArray from HealthCheckResult DTO and encapsulate serialization in HealthCheckResponse 2026-08-27 15:19:36 +02:00
403ea2c6c2
refactor: add health check feature within cli and job. 2026-08-27 14:39:59 +02:00
34b76cb397
test(feature): align feature and openapi tests with replicated Oracle tables
- Update tests to use factory static helpers and avoid hardcoded table/connection names
- Align test data columns with real replicated Oracle schema
- Remove obsolete duplicate IncoSheetsShowTest
2026-08-26 17:29:18 +02:00
1842223ddc
refactor(database): improve replicated factories, seeders, and config injection
- AbstractTableFactory delegates connection resolution without hardcoded config keys
- Enforce mandatory connection parameter on Migrator without Infra dependencies
- Inject ArcadiaStorageConfig, AppConfig, and HmacAuthConfig into services, seeders, and health checkers
- Enhance factories and seeders with helper methods (truncate, count, query, new)
- Clean up covers annotations on database seeders integration tests
2026-08-26 17:29:13 +02:00
cec8d1ea66
refactor(infra): replace Eloquent directory adapters with direct QueryBuilder adapters and mappers
- Replace Eloquent models for replicated Oracle tables with direct QueryBuilder directory adapters
- Bind ArcadiaEmployeeDirectory, ArcadiaIncoSheetDirectory, ArcadiaIncoShortSheetDirectory, ArcadiaIncoCompositionDirectory, and ArcadiaMarqueBrandDirectory
- Remove obsolete Eloquent directory classes and models
2026-08-26 17:29:08 +02:00
cf918ccd30
feat(infra): add mappers and parsers for replicated Arcadia Oracle tables
- Add IncoStringParser, IncoIngredientParser, IncoParser, and IncoCompositionParser
- Add ArcadiaBrandMapper, EmployeeMapper, IncoCompositionMapper, IncoShortMapper, and IncoMapper
- Add complete unit test suites for all parsers and mappers
2026-08-26 17:29:05 +02:00
f7db5105ad
docs: update IncoSheets search parameters and local dev config
Updated the search URL and parameters in Search Inco Sheets.yml for consistency.
Corrected INCOSHEET_ID value in Local Dev.yml for accurate testing.
2026-08-26 16:26:50 +02:00
beec93fe4f
docs: add Digital-salarie table structure to documentation
Includes basic structure for RU_PERSONNE_SIRH table.
2026-08-26 16:26:42 +02:00
f88694110d
refactor: cleanup fake arcadia tables used for development 2026-08-26 16:25:47 +02:00
f7c7bb3db6
docs: add Oracle integration guide to README
Includes reference to SQL queries and live documentation.
2026-08-26 15:32:45 +02:00
361cf230e3
refactor: replicate and reproduce arcadia tables 2026-08-26 15:22:00 +02:00
06deb17236
chore: pint pass 2026-08-26 10:14:36 +02:00
a492e9823a
fix(queue): add explicit tries and timeout to SendClientSecurityAlertMail (F-2026-0007) 2026-08-26 10:11:59 +02:00
3582921df8
build(deps): move driftingly/rector-laravel to require-dev (F-2026-0005) 2026-08-26 10:11:56 +02:00
5ca882659d
fix(auth): point auth provider to ApiClient and remove dead UserFactory (F-2026-0006) 2026-08-26 10:11:36 +02:00
bc5303eb0a
fix(security): make nonce validation and consumption atomic via CacheRepository add (F-2026-0008) 2026-08-26 10:11:32 +02:00
6eb9be9156
fix(database): guard dropIfExists in multi-connection migrations by local/testing environment (F-2026-0004) 2026-08-26 10:11:29 +02:00
18b83b6e67
perf(directory): memoize arcadia brand lookups to eliminate N+1 queries during INCO sheet hydration (F-2026-0003) 2026-08-26 10:11:26 +02:00
861a1a8146
fix(cache): resolve all cached brands before deleting collection key in BrandCache reset (F-2026-0002) 2026-08-26 10:11:23 +02:00
dd5bcdd351
fix(security): sanitize rate limiter client IP resolution to prevent header spoofing (F-2026-0001) 2026-08-26 10:11:21 +02:00
daa8d1e0fa
refactor(cache): implement graceful degradation for BrandCache 2026-08-25 08:26:58 +02:00
0766e9dc8f
refactor(repository): make entity deletion idempotent 2026-08-25 08:26:55 +02:00
3582a3928c
refactor(pagination): clamp out-of-bounds pagination values silently 2026-08-25 08:26:50 +02:00
bdb72b65d6
docs(architecture): add ReadModel entity example in guide nouveau usecase 2026-08-24 21:46:06 +02:00
6f08526c7b
docs(architecture): update architecture overview with AggregateRoot and ReadModel 2026-08-24 21:45:10 +02:00
e31767cfd0
refactor(brand): make ArcadiaId strictly string value extending EntityId 2026-08-24 21:45:04 +02:00
55576a6971
refactor(security): unify ClientDirectory reading methods into ClientRepository 2026-08-24 21:44:56 +02:00
cb97e6f591
refactor(ddd): introduce AggregateRoot and ReadModel interfaces extending Entity 2026-08-24 21:44:51 +02:00
e10bd7741d
fix(factory): correct code range in ArcadiaBrandFactory
Updated the 'code' field to generate unique numbers between 100 and 999.
2026-08-21 17:44:30 +02:00
376324d71a
chore: add /coverage to .gitignore
This update ensures that coverage reports are ignored in version control.
2026-08-21 17:44:24 +02:00
bed0ded667
ci: update before_script to install intl extension
Added installation of the intl extension in the CI pipeline to ensure proper functionality.
2026-08-21 17:21:59 +02:00
cfa1289c9d
chore(dependencies): add ext-intl and ext-mbstring requirements
This change updates the composer.json to include the ext-intl and ext-mbstring extensions as requirements.
2026-08-21 17:21:53 +02:00
79d3bd8261
ci: install bcmath extension in before_script 2026-08-21 17:13:05 +02:00
514f098a96
chore(dependencies): update guzzlehttp packages and others
Updated guzzlehttp/guzzle, guzzlehttp/promises, guzzlehttp/psr7, and other dependencies to their latest versions for improved functionality and security.
2026-08-21 17:10:28 +02:00
e7f49ccf84
feat(tests): add DummyEntityIdA and DummyEntityIdB classes
These classes extend EntityId for testing purposes.
2026-08-21 17:10:21 +02:00
6dca27a703
ci: install bcmath extension in tests_laravel job
This change adds the installation of the bcmath extension
to the before_script of the tests_laravel job in the CI pipeline.
2026-08-21 17:04:58 +02:00
9c50fbd09b
chore: add ext-bcmath requirement in composer.json
This change ensures that the ext-bcmath extension is required for the project.
2026-08-21 17:04:54 +02:00
0e6aa52f2e
ci: install and enable pcov in tests_laravel job for code coverage 2026-08-21 16:56:21 +02:00
a395037058
ci: replace deprecated qa image with composer:2.10 and quote deploy credentials 2026-08-21 16:52:29 +02:00
4421d34a43
feat(health): implement strictly-typed health check subsystem with DB, cache, and SMTP checks 2026-08-21 16:47:14 +02:00
8e7d3e1dca
docs: update OpenAPI spec and Bruno collection for RFC 3339 UTC and health check 2026-08-21 16:47:10 +02:00
bb11d7aa78
fix(console): provide explicit escape parameter to fputcsv to prevent deprecation 2026-08-21 16:17:55 +02:00
891b21ba61
test(security): add unit tests for audit entities, presenter, and ClientConsoleResolver 2026-08-21 16:16:26 +02:00
4a3d0c46a8
docs: add 05-temps-et-base-de-donnees guide and update architecture documentation 2026-08-21 16:13:39 +02:00
5c49b2cc4f
feat(infra): attach HasUuidV7CreatedAt trait to Brand, ApiClient, and ClientAuditLog models 2026-08-21 16:12:01 +02:00
6d63e68908
feat(infra): add HasUuidV7CreatedAt trait to derive created_at from UUIDv7 2026-08-21 16:11:56 +02:00
05af05e171
refactor(database): migrate all timestamp columns to dateTime across migrations 2026-08-21 16:11:54 +02:00
37bd6cdbdd
feat(shared): implement PSR-20 Clock contract, Utc facade, and RFC3339 normalization 2026-08-21 15:45:32 +02:00
1df3a27c98 feat(config): introduce typed configuration objects, dedicated value objects and enforce global class referencing 2026-08-21 15:01:36 +02:00
0063727790 refactor(tests): fix IncoSheets directory casing 2026-08-21 14:31:14 +02:00
a82a1558bd feat(security): add arcadia:security:audit-logs CLI command with CSV export and typed audit details 2026-08-21 14:30:20 +02:00
61073f4fcd feat(security): add database audit logging and asynchronous markdown email alerts for api client actions 2026-08-21 12:07:13 +02:00
709568f1ed feat(brand): handle on-demand brand renaming with BrandRenamed event and historical preservation 2026-08-21 11:36:37 +02:00
cc368c7102 feat(brand): add dedicated BrandCache service, event invalidation, and persist brand name locally 2026-08-21 11:27:32 +02:00
dc83df4105 feat(security): add audit log listeners and tests for client secret and status events 2026-08-21 11:09:25 +02:00
0d2b0124ee docs(architecture): add global architecture documentation for Arcadia API
docs(architecture): add request lifecycle documentation for Arcadia API

docs(architecture): add execution, transactions, and domain events documentation for Arcadia API

docs(architecture): add guide for creating a new use case in Arcadia API

docs(exceptions): summarize exception handling and HTTP status codes in Arcadia API

docs(tests): outline testing strategy and conventions for Arcadia API

style(openapi): correct description formatting in OpenAPI documentation

chore: remove outdated exceptions documentation

test: remove obsolete tests documentation
2026-08-21 10:41:07 +02:00
20ae9a2307 feat(event): implement TransactionalDomainEventDispatcher with post-commit release 2026-08-21 10:28:36 +02:00
95f10be9d4 style(tests): fix namespace casing in IncoSheetTestBuilder and IncoSheetMother 2026-08-21 10:23:54 +02:00
5e4e2f5faf fix(security): lock HMAC dev bypass strictly to false in production 2026-08-21 10:14:55 +02:00
62289d2222 refactor(domain): introduce Domain Builders for IncoComposition and IncoSheet 2026-08-21 10:13:43 +02:00
fcbd2aa9c0 refactor(inmemory): simplify filtering and sorting logic
Refactor the findAll method by extracting filtering and sorting logic into dedicated private methods for better readability and maintainability.
2026-08-21 09:55:09 +02:00
fcf184dd1d refactor(presenter): remove unused BrandItem import
Cleaned up the BrandsIndexView and BuilderStepPresenter by removing unused imports.
2026-08-21 09:45:33 +02:00
abe60df95f feat(event): implement BrandCreated event and listeners
- Added BrandCreated event to encapsulate brand creation details.
- Created LogBrandCreated listener to log brand creation events.
- Updated BrandResolver to dispatch BrandCreated event upon new brand creation.
- Introduced EventServiceProvider to register event listeners.
- Added unit tests for BrandCreated event and LogBrandCreated listener.
2026-08-21 09:45:06 +02:00
9c2c109d51 feat(usecase): add Transactional interface and update use cases
- Implemented Transactional interface for use cases requiring database transactions.
- Updated CreateClient, RegenerateClientSecret, and SetClientStatus to implement Transactional.
- Modified LaravelExecutor to handle transactional use cases appropriately.
- Enhanced tests for LaravelExecutor to cover transactional behavior.
2026-08-21 09:38:29 +02:00
aca627ff78 test(presentation): add missing unit tests for API and Console presenters 2026-08-20 18:22:20 +02:00
b26baaaf86
test(infra): add integration tests for EloquentBrandRepository, EloquentIncoSheetDirectory and EloquentIncoShortSheetDirectory 2026-08-20 18:16:42 +02:00
8f933db9fa
feat(inco): migrate to IncoBrand VO, BrandResolver domain service and BrandCode filtering 2026-08-20 18:16:31 +02:00
2617d41ef3
chore(tests): run Pest tests in parallel
Updated test commands to run Pest tests in parallel for improved performance.
2026-08-20 17:47:40 +02:00
1f8f03e6d8
feat(brand): add Brand use cases, API v1 endpoints, console command, OpenAPI spec and Bruno collection 2026-08-20 17:35:47 +02:00
20ec692160
feat(infra): add Brand Eloquent models, migrations, casts, adapters and seeders 2026-08-20 17:35:42 +02:00
a42a79861d
feat(domain): add Brand entity, value objects, ports, and generator & resolver domain services 2026-08-20 17:35:38 +02:00
8cfd5fbe0f
refactor(console): scope client artisan commands under arcadia prefix 2026-08-20 17:35:31 +02:00
6f35e031fa
refactor(presentation): remove authorize method from FormRequests in favor of middleware filters 2026-08-20 17:35:26 +02:00
6be00bb21e
refactor(domain): make read-only entity constructors private and introduce hydrate static methods 2026-08-20 15:05:33 +02:00
66fc714ca0
refactor(security): update exception handling to use value objects
Refactor exception handling in ClientNameAlreadyExistsException and ClientNotFoundException
to utilize value objects directly, improving type safety and clarity.
2026-08-20 14:30:09 +02:00
4d68a97889
feat(security): derive client createdAt from UUIDv7 and add HasTimestampIdentifier interface 2026-08-20 12:53:07 +02:00
9c28cf2903
refactor(database): add timestamps to ApiClient and Employee models
Updated ApiClient and Employee models to include created_at and updated_at fields for better tracking of records.
2026-08-20 12:08:15 +02:00
f3b84c725d
refactor(migration): enhance comments for api_clients table fields
Improved clarity of comments for identifier, secret, and is_active fields.
2026-08-20 11:46:46 +02:00
f9364a8960
docs(Arcadia): add JSON examples for INCO legacy API
Added example JSON files for INCO API endpoints to provide clear references for data structure and expected values.
2026-08-20 11:46:37 +02:00
15e58526a8
refactor(security): clarify exception namespace in ClientRepository
Updated the exception namespace for better clarity and consistency.
2026-08-20 11:33:59 +02:00
15a0ff55a3
refactor(security): segregate ClientDirectory and ClientRepository ports (ISP) 2026-08-20 10:02:17 +02:00
c8a46bb9b3
fix(shared): harmonize delete exception contracts on Repository and ClientRepository (LSP) 2026-08-20 09:48:10 +02:00
2bbfc7fa08
fix(shared): prevent cross-type equality in EntityId::equals (LSP) 2026-08-20 09:45:54 +02:00
98356465d5
fix(infra): align since filter in InMemoryEmployeeDirectory with Eloquent adapter (LSP) 2026-08-20 09:45:11 +02:00
ed7ce3ec32
refactor(console): remove redundant view docblock above UsecaseBuilder 2026-08-18 18:47:18 +02:00
341b57c3bf
feat(console): migrate interactive console commands to Laravel Prompts 2026-08-18 18:46:31 +02:00
7f57f16425
refactor(console): extract private methods for input extraction in command handle methods 2026-08-18 18:26:46 +02:00
90c87899a2
refactor(console): encapsulate interactive search and autocompletion in ClientConsoleResolver 2026-08-18 18:25:08 +02:00
2d46f774b3
fix(quality): resolve PHP_CodeSniffer warnings and errors 2026-08-18 18:25:04 +02:00
bad76036f1
feat(security): add FindClient use case with Paginated search and anticipate in console commands 2026-08-18 17:45:42 +02:00
e3462241d3
feat(console): add RegenerateClientSecret command 2026-08-18 17:37:44 +02:00
d3786aaed6
feat(console): add CreateClient command and enforce unique slug for ApiClient 2026-08-18 17:31:29 +02:00
0a5603330a
feat(console): add CreateClientCommand and related classes
Implement an interactive command to create a new API client, including input validation and confirmation steps.
Add presenter and view classes to handle the output of the client creation process.
2026-08-18 17:13:55 +02:00
43758922ad
feat(console): add ToggleClientStatus command and related logic
- Implemented command to toggle client status via console.
- Introduced SetClientStatus use case for managing client activation.
- Added presenters and views for command output.
- Created tests for command functionality and edge cases.
2026-08-18 16:56:15 +02:00
2ac8578fe0
feat(console): add ListClients command and related presenters
- Implemented ListClientsCommand to list API clients with pagination.
- Created ClientRow, ListClientsPresenter, and ListClientsView for structured output.
- Added tests for ListClientsCommand to ensure correct functionality.
2026-08-18 12:50:55 +02:00
af416b1b7c
refactor(presentation): move transformation logic from views to presenters 2026-08-18 12:43:01 +02:00
a771d8a5d1
refactor(application): remove obsolete Application/Shared namespace 2026-08-18 12:09:38 +02:00
e7f5f71005
feat(arcadia): add dedicated NotFound exceptions for Employee, IncoSheet and IncoComposition 2026-08-18 12:09:35 +02:00
90eff3cc99
docs: update OpenAPI specification and Bruno collection 2026-08-18 12:09:32 +02:00
726375c00d
feat(presentation): implement HMAC authentication middleware, security providers and feature tests 2026-08-18 12:03:32 +02:00
e7904682b6
feat(infra): add ApiClient Eloquent model, repository adapter, security services, migrations, seeders and tests 2026-08-18 12:03:29 +02:00
fa86b9c4e6
feat(security): implement security bounded context entities, value objects, ports, use cases and unit tests 2026-08-18 12:03:25 +02:00
909f7abaa4
feat(shared): add security interfaces, user details contracts and UUID helper 2026-08-18 12:03:22 +02:00
5c10d51fba
feat(infra): add in-memory directory and repository doubles with unit tests and refactor usecase tests to pure black-box 2026-08-18 11:54:47 +02:00
1dcf0a8cdf
refactor(usecase): specify concrete Input and Output types in usecase docblocks and refine builder generic inference 2026-08-18 11:34:30 +02:00
1fdf7ea9cc refactor(application): move usecases under Application\Arcadia\Usecase and NotFoundException to Application\Shared\Exceptions 2026-08-17 11:18:53 +02:00
fc368cdc46 refactor(shared): reorganize DDD core building blocks into sub-namespaces (Model, Port, Event) 2026-08-17 10:31:28 +02:00
8ce012d7f7
refactor(models): update Carbon references to Illuminate\Support\Carbon
Updated property type hints in Employee, IncoCompo, and IncoSheet models to use Illuminate\Support\Carbon for consistency.
2026-08-17 09:49:52 +02:00
53a5990c3a
test(arch): make CodingStandardsTest standalone without container dependency 2026-08-17 09:44:10 +02:00
e02f5f5c2a
refactor: introduce InvalidDateFormatException for DatesHelper 2026-08-17 09:43:34 +02:00
2b7a8b4b99
test(arch): add architecture test suite for Shared layer 2026-08-17 09:43:02 +02:00
3d4302b49c
refactor: adopt PHP 8.4 array_any for filter invariants 2026-08-17 09:42:39 +02:00
59ceab8185
refactor: clean up redundant readonly property modifiers and harmonize EntityId constructors 2026-08-17 09:42:21 +02:00
0c25d663f8
refactor: add explicit types to class constants (PHP 8.3+) 2026-08-17 09:41:10 +02:00
13091c4ec6
build: require php ^8.5 and remove league/uri dependency 2026-08-17 09:32:49 +02:00
ac552a4530
refactor: adopt native PHP 8.5 \Uri\Rfc3986\Uri for request URIs and pagination links 2026-08-17 09:30:21 +02:00
7c0edb9507
test(arch): forbid Symfony framework and Laravel helpers in Application layer 2026-08-17 09:22:18 +02:00
b0cd8d25a3
test(ApiV1Middlewares): add feature tests for middlewares behavior
Includes tests for ETag handling and content negotiation.
2026-08-14 16:47:58 +02:00
0a1d56fc69
feat(middlewares): add EnsureApiV1AcceptsJson and SetApiV1Etag middlewares
Introduce new middlewares to enforce JSON acceptance and manage ETag headers for API responses.
2026-08-14 16:47:52 +02:00
8f82f86966
refactor(application): unify filter and sorter VOs between Application and Domain layers 2026-08-14 16:28:44 +02:00
2900c85b33
test(IncoSheets): add test for PaginatedShortIncoSheet instantiation
Added a test to verify the correct instantiation of PaginatedShortIncoSheet
from the IncoShortSheet domain entity.
2026-08-14 16:26:08 +02:00
64f2f1c3ca
refactor(migrations): remove unnecessary indexes from employees and inco_sheets tables
Removed 'created_at', 'updated_at', and 'brand->code' indexes to optimize migration performance.
2026-08-14 16:22:51 +02:00
78680d06bc
perf(database): add indexes for timestamps and JSON brand code in migrations 2026-08-14 16:16:13 +02:00
bfe0b0010c
feat(IncoSheets): introduce IncoShortSheet entity and IncoShortSheetDirectory with SQL select optimization and search pagination 2026-08-14 16:15:49 +02:00
cce81c1a85
style: apply code formatting and docblock fixes 2026-08-14 16:01:34 +02:00
afdde63d9f
feat(IncoSheets): support short parameter in FindAll and Search usecases 2026-08-14 16:01:31 +02:00
7383c3e01f
test(IncoSheets): update tests for short form inco sheets response
Enhance tests to verify the structure of inco sheets when the short parameter is true or numeric 1.
2026-08-14 15:57:58 +02:00
91114cb67b
feat(inco-compositions): add IncoCompositionShow feature
- Implemented IncoCompositionShowController to handle requests for inco composition details.
- Created IncoCompositionDto for response data structure.
- Added IncoCompositionShowRequest for request validation.
- Developed IncoCompositionShowResponse for formatting API responses.
- Introduced IncoCompositionShowPresenter and IncoCompositionShowView for presentation logic.
- Added tests for IncoCompositionShow feature and OpenAPI conformance.
2026-08-14 15:56:58 +02:00
f667532ff7
refactor(domain): regroup Inco entities and Value Objects under Inco/ and Inco/Composition/ 2026-08-14 15:38:10 +02:00
4d24e5c3fa
feat(IncoSheets): add search functionality for inco sheets
- Introduced IncoIdQuery value object for validating search queries.
- Implemented search method in IncoSheetDirectory and EloquentIncoSheetDirectory.
- Created IncoSheetsSearchController to handle search requests.
- Added IncoSheetsSearchRequest for validating incoming search parameters.
- Developed IncoSheetsSearchResponse for formatting search results.
- Added tests for search functionality in IncoSheetsSearchTest.
- Updated OpenAPI tests to validate search endpoint.
2026-08-14 15:06:54 +02:00
ef8de85088
chore: update dependencies for improved stability
Updated several dependencies to their latest versions to enhance stability and security.
2026-08-14 12:32:22 +02:00
dd7d1740ca
refactor(components): update nullable types to use oneOf for better clarity
This change improves the schema definitions by replacing nullable types with oneOf, allowing for clearer API documentation and validation.
2026-08-14 12:31:40 +02:00
07559b87e5
refactor(request): simplify brands filtering logic
Streamlined the filtering of brands in the IncoSheetsIndexRequest.
2026-08-14 12:18:55 +02:00
68de1fd224
refactor(dto): simplify toArray method in IncoSheetDto
Removed unnecessary comments and streamlined the mapping of allergens and additives.
2026-08-14 12:15:52 +02:00
195227a443
style(dto): update parameter formatting in DTO constructors
style(dto): simplify toArray method by removing unnecessary variable assignment
2026-08-14 12:13:11 +02:00
cbf1a4ce9b
style: update docblock for parameter formatting 2026-08-14 12:10:20 +02:00
37ecd9faa1
feat(dto): add DTOs for IncoSheet components
- Introduced AdditiveDto, AllegationsDto, AllergenDto, BrandDto, NutriscoreDto, PortionsDto, StorageConditionDto, and WeightDto.
- These DTOs facilitate structured data handling for IncoSheet components.
2026-08-14 12:07:04 +02:00
70375f8139
feat(dto): implement PaginationDto for pagination metadata
Added PaginationDto to handle pagination details and links for API responses.
Updated related response classes to utilize the new PaginationDto.
2026-08-14 12:02:13 +02:00
2cc333f1df
feat(middlewares): add TransformApiV1Response middleware
This middleware transforms API responses for version 1.
2026-08-14 11:51:33 +02:00
753456368c
style: format code for consistency and readability
Refactor code formatting for improved consistency across multiple files.
2026-08-14 11:50:26 +02:00
7658483863
feat(api): implement API response transformation middleware
- Added TransformApiV1Response middleware to handle API responses.
- Updated Employee and IncoSheets controllers to return ApiResponse.
- Refactored API routes to use new middleware for v1.
2026-08-14 11:50:12 +02:00
3c72e50adf
docs: update exception mapping table in documentation
Clarified the mapping of exceptions to HTTP status codes.
2026-08-14 11:33:45 +02:00
bbbeea6cde
test(architecture): update Application and Domain tests for readonly checks
Refactor tests to utilize enumsIn function for better maintainability.
2026-08-14 11:33:29 +02:00
382f181ced
feat(api): add IncoSheets API endpoints and local environment variables
- Introduced 'Get Inco Sheet' and 'List Inco Sheets' endpoints.
- Updated local environment variables to include INCOSHEET_ID.
2026-08-14 11:33:18 +02:00
152ee2b5a2
feat(api): add IncoSheets feature with DDD clean architecture, tests & OpenAPI spec
- Use cases: FindAllIncoSheets & FindIncoSheet (filters, pagination, short projection)
- Presentation: controllers, FormRequests with scalar validation, DTOs (camelCase)
- Ports & Adapters: IncoSheetDirectory & EloquentIncoSheetDirectory
- Tests: Pest 4 unit, integration, OpenAPI spectator conformance, dynamic arch tests
- Docs: updated Bruno collection and OpenAPI spec
2026-08-14 11:33:05 +02:00
166257810d
chore(config): update phpunit configuration for better error handling
Added failOnRisky and failOnWarning attributes to enhance test reliability.
Updated directory inclusion to specify PHP suffix for clarity.
2026-08-14 10:43:09 +02:00
11291807a3
test(architecture): add tests for naming conventions and seeder integration
Ensures that all database seeders have corresponding integration tests
and verifies naming conventions across different layers of the application.
2026-08-14 10:36:26 +02:00
1d55dff5f4
feat(seeders): add IncoSheet and IncoCompo seeders
Implement seeders for IncoSheet and IncoCompo to populate the database with initial data.
2026-08-14 10:35:21 +02:00
3080c5dcfe
test(employees): add feature tests for employee retrieval and filtering
- Implement tests for employee show and index endpoints.
- Validate responses against OpenAPI specifications.
2026-08-14 09:59:24 +02:00
53b0dd9f1e
feat(employees): implement filtering and sorting for employee retrieval
Added Filter and Sorter classes to handle employee filtering and sorting criteria. Updated FindAllEmployees use case to utilize these new classes for improved employee data retrieval.
2026-08-14 09:30:21 +02:00
86e6de84ef
chore(dependencies): update Laravel and related packages
Updated Laravel framework to v13.25.0 and adjusted dependencies accordingly.
2026-08-13 17:02:10 +02:00
6ba04fe009
feat(exceptions): add NotFoundException for entity handling
Introduces a NotFoundException to standardize error handling for missing entities.
2026-08-13 16:24:08 +02:00
61bde4baaa
docs(README): update table of contents and link paths
docs(Exceptions): refine exception mapping details

docs(Tests): add comprehensive testing strategy documentation
2026-08-13 16:23:19 +02:00
58749030bf
feat(employees): add support for filtering by multiple site IDs
- Updated EmployeeFilter to accept an array of SiteId.
- Modified EloquentEmployeeDirectory to handle multiple site filters.
- Enhanced EmployeesIndexRequest to validate siteIds as an array.
- Added tests for siteIds filtering in EmployeesIndexTest and EmployeeOpenApiTest.
2026-08-13 15:30:53 +02:00
b64c1ef366
feat(employees): add filtering capabilities for employee retrieval
- Introduced EmployeeFilter value object for filtering criteria.
- Updated EmployeeDirectory and EloquentEmployeeDirectory to support filtering.
- Modified FindAllEmployees use case to accept filter input.
- Enhanced EmployeesIndexRequest to handle filter parameters.
- Added tests for filtering functionality in EmployeesIndexTest and EloquentEmployeeDirectoryTest.
2026-08-13 15:09:37 +02:00
b7f2de4f92
test(EloquentEmployeeDirectory): add integration tests for employee retrieval and date conversion
Includes tests for finding employees, handling null values, and date conversion.
2026-08-13 14:59:21 +02:00
2529118bcc
refactor(AppServiceProvider): simplify client IP retrieval logic
Removed unnecessary environment check for local client IP.
2026-08-13 14:58:02 +02:00
05ececd879
feat(RequestHelper): add pagination and URI conversion methods
Implement pagination logic and methods to convert request URLs to League URI instances.
2026-08-13 14:52:51 +02:00
8855f74bf0
chore(app): update timezone configuration to use environment variable
This change allows the timezone to be set via the APP_TIMEZONE
environment variable, enhancing configurability.
2026-08-13 14:52:21 +02:00
b2cb3d8e8e
chore(scripts): simplify dev command by removing npm build
Removed npm build command from the dev script to streamline the setup process.
2026-08-13 14:42:54 +02:00
92cf677d57
chore(scripts): update test command to enforce coverage minimum
This change ensures that the test command requires a minimum coverage of 85%.
2026-08-13 13:31:00 +02:00
6d77bc6332
test(DatesHelper): update date parsing logic and add fallback tests
Enhance date parsing in DatesHelper to correctly handle RFC3339 format.
Add tests for fallback scenarios with DateTimeImmutable.
2026-08-13 13:24:33 +02:00
e8d92e771a
test(UuidHelper): enhance UUID version checks and add fallback test 2026-08-13 13:24:21 +02:00
e833d1c75a
chore(composer): update test coverage command to output HTML report
This change modifies the test coverage command to generate an HTML report in the coverage-report directory.
2026-08-13 13:14:42 +02:00
dea8599b1e
test(UuidHelper): update UUID version checks and remove mocks
Refactor tests to directly use UUID instances instead of mocks.
2026-08-13 13:12:30 +02:00
8afc31c806
test(DatesHelper): update date regex and add instantiation test
- Fixed regex for inverted French date format.
- Added test to prevent direct instantiation of DatesHelper.
2026-08-13 13:11:55 +02:00
aaa39004bc
test(Pagination): add unit tests for Pagination value object
- Added tests for creating Pagination from explicit indexes.
- Updated tests for invalid constructor inputs and parameters.
2026-08-13 13:07:16 +02:00
289140c630
refactor(DatesHelper): make constructor private and update comment
Updated the constructor of DatesHelper to be private and modified the comment to clarify its purpose as a static class.
2026-08-13 13:07:03 +02:00
d15f30bcbf
test(UuidHelper): update unit tests for UUID version checks
Refactor test descriptions for clarity and consistency.
2026-08-13 13:06:01 +02:00
ab031e8d76
test(CodingStandards): refactor test file retrieval logic
Updated test file retrieval to use a dedicated function for improved clarity and maintainability.
2026-08-13 12:58:29 +02:00
39d394b7fb
test(Employee): add feature tests for employee endpoints
- Implement tests for retrieving employee details and listing employees.
- Validate responses against OpenAPI specifications.
2026-08-13 12:55:38 +02:00
3daeaccb4e
test(RootTest): add test for successful response on root URL
This test verifies that the root URL returns a 200 status code.
2026-08-13 12:49:33 +02:00
cc7a629193
test(UsecaseBuilder): add unit tests for UsecaseBuilder functionality
This commit introduces unit tests for the UsecaseBuilder and UsecaseExecutionBuilder, ensuring proper behavior when building and executing use cases.
2026-08-13 12:47:39 +02:00
ccba793b4c
test(EntityId): add unit tests for EntityId instantiation
Includes tests for valid UUID and handling of empty string.
2026-08-13 12:47:18 +02:00
52d0e6f0fd
test(ApiExceptionDispatcher): add integration tests for exception handling
Added integration tests for ApiExceptionDispatcher to ensure proper handling of exceptions
for various API request scenarios, including JSON acceptance and unversioned requests.
2026-08-13 12:34:44 +02:00
8e96abc88d
fix(ApiExceptionRenderer): update response for ValidationException
Changed the response status and title for ValidationException from 400 to 422 to align with HTTP standards.
2026-08-13 12:34:32 +02:00
b3f02510b5
docs: update README and add Exceptions documentation
Added a section for Exception Management in README and created a new document detailing exception handling and HTTP status codes.
2026-08-13 12:34:12 +02:00
b7c5c98128
fix(ApiExceptionRenderer): change title for ValidationException response
Update the title for the ValidationException response to accurately reflect the error type.
2026-08-13 12:26:56 +02:00
985fcedb04
test(WebExceptionRenderer): add tests for rendering exceptions
Add tests to verify the behavior of WebExceptionRenderer for NotFoundException and unhandled exceptions.
2026-08-13 12:18:22 +02:00
52d121085a
chore: exclude views directory from PHPUnit tests
This change ensures that the views directory is not included in the test coverage.
2026-08-13 12:18:07 +02:00
3ba74409ff
test(ValueObjects): add unit tests for BrandCode, EstablishmentCode, IncoCompoId, IncoId, ServiceId, and SiteId value objects
Add comprehensive unit tests to validate the behavior of various value objects.
2026-08-13 12:10:53 +02:00
742476bdcb
test(ArcadiaEmployeeId): add covers declaration for tests 2026-08-13 12:03:16 +02:00
90d7bfdf37
test(Employee): add unit tests for Employee entity 2026-08-13 12:03:09 +02:00
31b83970b5
test: remove ExampleTest.php as it is no longer needed
This test file was deleted to clean up the test suite.
2026-08-13 12:02:49 +02:00
41dbb04963
test(Architecture): ensure all Unit and Integration tests declare covers()
Added a test to verify that every Unit and Integration test file contains a covers() declaration.
2026-08-13 12:02:43 +02:00
f8b5722a78
test(ArcadiaEmployeeId): add unit tests for ArcadiaEmployeeId value object 2026-08-13 11:57:52 +02:00
0111ee2ac4
refactor(Employees): remove BaseEnum trait and clean up EmployeeSortColumn
This change simplifies the EmployeeSortColumn enum by removing the BaseEnum trait,
which is no longer needed.
2026-08-13 11:52:13 +02:00
198da8a11c
test(Pagination): add unit tests for Pagination value object 2026-08-13 11:50:16 +02:00
8c0d139ad3
docs(README): update table of contents and add testing section
docs(TEST): add testing strategy and organization document
2026-08-13 11:50:11 +02:00
84e59314a0
test(Architecture): add namespaces to architecture test files and create integration test suite
- Added namespaces to various architecture test files for consistency.
- Created a new integration test suite in phpunit.xml.
2026-08-13 11:25:08 +02:00
fed1916b24
test(UuidHelper): add unit tests for UUID version verification 2026-08-13 10:29:05 +02:00
eacfd828f0
test(DateHelper): add integration tests for date parsing and formatting
This commit introduces integration tests for the DatesHelper class,
ensuring correct functionality for date parsing, range verification,
and RFC3339 formatting.
2026-08-13 10:24:11 +02:00
57756ce6ae
test(UuidHelper): add unit tests for UUID version verification
Includes tests for checking if UUIDs are v4 or v7 and retrieving their version.
2026-08-13 10:24:05 +02:00
40c360f766
ci: add test coverage command to composer scripts
This change introduces a new command for running tests with coverage
threshold set to a minimum of 85%.
2026-08-13 10:10:15 +02:00
554e4002df
refactor(api): update Employee request handling and remove toInput method
Refactor EmployeeShowRequest and EmployeesIndexRequest to improve clarity and maintainability.
2026-08-13 09:55:27 +02:00
6c7c782a1d
feat(api): add Ping and Root API documentation files
fix(api): update sequence number for Employees folder
2026-08-13 09:35:16 +02:00
b2c11a52ad
refactor(api): restructure API routes and improve organization
- Group employee routes under a prefix for better clarity.
- Remove unnecessary blank lines and improve code formatting.
2026-08-13 09:35:09 +02:00
3208556047
fix(robots): update disallow rule for web crawlers
Ensure that all web crawlers are disallowed from accessing the site.
2026-08-12 17:42:02 +02:00
d9329aca92
feat(errors): add detailed error documentation pages
- Implemented views for error codes 400, 404, 422, 429, 500, and 503.
- Updated error handling to use numeric codes instead of enum.
- Enhanced error messages and resolution steps for better user guidance.
2026-08-12 17:40:18 +02:00
699cdf7f8e
fix(api): correct condition for API request handling
Updated the condition to include 'api' in the request check.
2026-08-12 17:32:19 +02:00
33f3aaf37f
fix(api): correct condition for JSON request handling
Ensure proper handling of requests that expect JSON responses.
2026-08-12 17:30:36 +02:00
fd284db1c2
fix(api): correct JSON rendering condition for API requests
Updated the condition to ensure JSON responses are rendered for both 'api/*' and 'api' requests.
2026-08-12 17:30:22 +02:00
04243860ce
refactor(api): simplify exception handling in app configuration
Removed custom exception handling logic and replaced it with a reference to the existing exceptions file.
2026-08-12 17:26:31 +02:00
e92b042906
feat(env): add throttle settings for web and API
Added THROTTLE_WEB and THROTTLE_API_V1 settings to the environment configuration.
2026-08-12 17:26:25 +02:00
caa4bb0919
feat(api): restore ping endpoint and add rate limit responses
Restores the /ping endpoint for health checks and adds
429 Too Many Requests response handling to improve API robustness.
2026-08-12 17:26:17 +02:00
a93fde3a3c
feat(api): implement rate limiting and error handling
- Added rate limiting for web and API requests.
- Introduced custom error handling for "Too Many Requests" response.
- Created view for "Too Many Requests" error documentation.
2026-08-12 17:25:45 +02:00
f62ea18e75
feat(api): add health check endpoint
This adds a new /ping endpoint to verify API functionality.
2026-08-12 17:12:35 +02:00
a738fed493
refactor(api): restructure root response to include versions 2026-08-12 17:11:37 +02:00
c5867c7926
refactor(layout): replace main layout with minimal layout
Updated the layout structure to use a minimal design, enhancing the overall presentation of the API status page.
2026-08-12 17:11:27 +02:00
cfea429840
style(api): update response message for root URL
Clarifies the message presented to users when accessing the API root.
2026-08-12 17:05:35 +02:00
0cd539c180
test(architecture): add rules to prevent Presenters and Views
Ensure that the Application layer does not contain Presenters or Views.
2026-08-12 17:01:09 +02:00
6712e06042
docs(README): update API description and architecture details
Added detailed architecture sections and principles of implementation to the README.
2026-08-12 17:00:48 +02:00
2526560e44
docs(responses): clarify error descriptions in OpenAPI spec
Updated descriptions for BadRequest and UnprocessableEntity responses to provide clearer context on validation errors.
2026-08-12 17:00:23 +02:00
31ae87f358
fix(exceptions): correct status code for validation errors
Updated the status code for ValidationException responses from 422 to 400 to align with HTTP standards.
2026-08-12 17:00:15 +02:00
899bb42964
refactor(api): remove ApiClient model 2026-08-12 17:00:06 +02:00
3100643eac
refactor(employees): simplify validation rules for employee requests
Removed regex patterns from validation rules for employeeId, establishment, siteId, and serviceId to streamline input handling.
2026-08-12 17:00:01 +02:00
38ca7ed069
feat(employees): introduce presenters and views for employee data
- Added EmployeeShowPresenter and EmployeeShowView for handling employee details.
- Introduced EmployeesIndexPresenter and EmployeesIndexView for paginated employee listings.
2026-08-12 16:59:50 +02:00
43a568ef5a
refactor(employees): replace native assert with Webmozart\Assert
Updated assertions in FindEmployee, FindAllEmployees, and Output classes
to use Webmozart\Assert for better type safety and consistency.
2026-08-12 16:56:13 +02:00
63d4ae17f3
refactor(middlewares): remove VerifyHmacSignature middleware
This change removes the VerifyHmacSignature middleware and its alias from the configuration.
2026-08-12 16:41:13 +02:00
e74f81b656
chore(dependencies): update dependencies and add phpstan extension
Added phpstan/phpstan-webmozart-assert to enhance type checking.
2026-08-12 16:40:32 +02:00
93d76b3c69
ci: add and configure GitLab CI pipeline 2026-08-12 15:45:30 +02:00
34169a9feb
feat(api): implement tracer bullet for employees and OpenAPI specification 2026-08-12 15:45:29 +02:00
814 changed files with 64950 additions and 73 deletions

35
.editorconfig Normal file
View file

@ -0,0 +1,35 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{php,json}]
indent_size = 4
[*.blade.php]
indent_size = 2
[*.{yml,yaml}]
indent_size = 2
[{compose,docker-compose}.{yml,yaml}]
indent_size = 2
[*.scss]
indent_size = 2
quote_type = single
[*.css]
indent_size = 2
quote_type = single
[*.vue]
indent_size = 2

93
.env.example Normal file
View file

@ -0,0 +1,93 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
# APP_MAINTENANCE_STORE=database
# PHP_CLI_SERVER_WORKERS=4
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
# DB_URL=
DB_HOST=127.0.0.1
DB_PORT=3308
DB_DATABASE=arcadia_api
DB_USERNAME=root
DB_PASSWORD=:Mysql.Docker2026
# DB_SOCKET=
# DB_CHARSET=utf8mb4
# DB_COLLATION=utf8mb4_unicode_ci
# MYSQL_ATTR_SSL_CA=
# Arcadia Database (Oracle Database 19c)
ARCADIA_DB_CONNECTION=arcadia
ARCADIA_DB_DRIVER=oracle
# ARCADIA_DB_TNS=
ARCADIA_DB_HOST=127.0.0.1
ARCADIA_DB_PORT=1521
ARCADIA_DB=XE
ARCADIA_DB_SID=XE
# ARCADIA_DB_SERVICE_NAME=
ARCADIA_DB_USERNAME=DIGITAL
ARCADIA_DB_PASSWORD=:Oracle.Docker2026
# ARCADIA_DB_CHARSET=AL32UTF8
# ARCADIA_DB_EDITION=ora$base
# ARCADIA_DB_SERVER_VERSION=19c
SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
ARCADIA_CACHE_STORE=redis
# CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_SCHEME=null
MAIL_HOST=127.0.0.1
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
HEALTH_ALERT_EMAIL="health@example.com"
SECURITY_ALERT_EMAIL="security@example.com"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"
THROTTLE_WEB=120
THROTTLE_API_V1=60
ARCADIA_AUTH_DEV_BYPASS=false

41
.env.testing Normal file
View file

@ -0,0 +1,41 @@
APP_NAME="Arcadia Api"
APP_ENV=testing
APP_KEY=base64:2ik2NRSDu8/Lxsxzdnnom3xWEglXe+cGd/7beOt/eXY=
APP_DEBUG=true
APP_URL=http://localhost
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
BCRYPT_ROUNDS=4
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=sqlite
DB_DATABASE=:memory:
ARCADIA_DB_CONNECTION=sqlite
SESSION_DRIVER=array
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
BROADCAST_CONNECTION=null
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
CACHE_STORE=array
MAIL_MAILER=array
ARCADIA_CACHE_STORE=array
SPEC_PATH=documentation/OpenApi
PULSE_ENABLED=false
TELESCOPE_ENABLED=false
NIGHTWATCH_ENABLED=false
ARCADIA_AUTH_DEV_BYPASS=true

11
.gitattributes vendored Normal file
View file

@ -0,0 +1,11 @@
* text=auto eol=lf
*.blade.php diff=html
*.css diff=css
*.html diff=html
*.md diff=markdown
*.php diff=php
/.github export-ignore
CHANGELOG.md export-ignore
.styleci.yml export-ignore

31
.gitignore vendored Normal file
View file

@ -0,0 +1,31 @@
*.log
.DS_Store
.env
.env.backup
.env.production
.phpactor.json
.phpunit.result.cache
/.codex
/.cursor/
/.idea
/.nova
/.phpunit.cache
/.vscode
/.zed
/auth.json
/node_modules
/public/build
/public/fonts-manifest.dev.json
/public/hot
/public/storage
/storage/*.key
/storage/pail
/vendor
/coverage-report
/coverage
_ide_helper.php
Homestead.json
Homestead.yaml
Thumbs.db
storage/framework/health_state.json
storage/framework/arcadia_conformity_state.json

141
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,141 @@
stages:
- install
- lint
- test
- security
- build
- deploy
include:
- project: "ldc-web/shared-ci"
ref: "main"
file: "security/composer.yml"
- project: "ldc-web/shared-ci"
ref: "main"
file: "build/composer.yml"
- project: "ldc-web/shared-ci"
ref: "main"
file: "build/docker.yml"
- project: "ldc-web/shared-ci"
ref: "main"
file: "test/test.yml"
- project: "ldc-web/shared-ci"
ref: "main"
file: "deploy/deploy.yml"
# * LINT --------------------------------------------------------------------
.php-lint-base: &php-lint-base
image: $CI_REGISTRY/ldc-web/projets/ldc-web-images-docker/uwil-ci-8.5:latest
variables:
COMPOSER_CACHE_DIR: ".composer-cache"
cache:
key:
files:
- composer.lock
prefix: "composer"
policy: pull
paths:
- .composer-cache/
- vendor/
before_script:
- composer config gitlab-token.lab.s-web.fr $CI_DEPLOY_USER $CI_DEPLOY_PASSWORD
- composer install --no-scripts --no-interaction --no-ansi --no-progress --prefer-dist --ignore-platform-req=ext-oci8
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == "develop"
parallel-lint:
<<: *php-lint-base
stage: lint
script:
- vendor/bin/parallel-lint --exclude vendor --exclude storage --exclude bootstrap --exclude node_modules .
allow_failure: false
pint:
<<: *php-lint-base
stage: lint
script:
- vendor/bin/pint --test
allow_failure: false
phpcs:
<<: *php-lint-base
stage: lint
script:
- vendor/bin/phpcs --standard=phpcs.xml --extensions=php --ignore=vendor/*,storage/*,bootstrap/*,node_modules/* --report=junit --report-file=phpcs-report.xml
artifacts:
when: on_failure
expose_as: "phpcs"
paths:
- phpcs-report.xml
reports:
junit: phpcs-report.xml
allow_failure: false
phpstan:
<<: *php-lint-base
stage: lint
variables:
PHP_MEMORY_LIMIT: "512M"
COMPOSER_CACHE_DIR: ".composer-cache"
script:
- php -d memory_limit=512M vendor/bin/phpstan --error-format=junit > phpstan-report.xml
artifacts:
when: on_failure
expose_as: "phpstan"
paths:
- phpstan-report.xml
reports:
junit: phpstan-report.xml
allow_failure: false
# * TESTS -------------------------------------------------------------------
tests_laravel:
stage: test
image: $CI_REGISTRY/ldc-web/projets/ldc-web-images-docker/uwil-ci-8.5:latest
allow_failure: false
variables:
COMPOSER_CACHE_DIR: ".composer-cache"
cache:
- key:
files:
- composer.lock
prefix: "composer"
policy: pull
paths:
- .composer-cache/
- vendor/
before_script:
- composer config gitlab-token.lab.s-web.fr $CI_DEPLOY_USER $CI_DEPLOY_PASSWORD
- composer install --no-scripts --no-interaction --no-ansi --no-progress --prefer-dist --ignore-platform-req=ext-oci8
script:
- cp .env.testing .env
- php artisan key:generate
- php artisan config:clear
- php artisan test --coverage --min=85 --colors=never --log-junit=coverage/junit.xml --coverage-cobertura=coverage/cobertura.xml --coverage-html=coverage/html
after_script:
- if [ "$CI_JOB_STATUS" == "failed" ]; then cat storage/logs/laravel.log; fi
artifacts:
when: always
expose_as: "coverage"
paths:
- coverage/html/
reports:
junit: coverage/junit.xml
coverage_report:
coverage_format: cobertura
path: coverage/cobertura.xml
coverage: '/^\s*Total:\s*([\d\.]+)%/'
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == "trunk" || $CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH == "main"
- if: $CI_COMMIT_TAG != null
# * BUILD -------------------------------------------------------------------
npm-build:
stage: build
script:
- echo "No NPM build required for API"

View file

@ -0,0 +1,57 @@
<?php
namespace {
/**
* Runs the given closure after each test in the current file.
*
* @param-closure-this \Tests\TestCase|\PHPUnit\Framework\TestCase $closure
*/
function afterEach(?Closure $closure = null): \Pest\PendingCalls\AfterEachCall {}
/**
* Runs the given closure before each test in the current file.
*
* @param-closure-this \Tests\TestCase|\PHPUnit\Framework\TestCase $closure
*/
function beforeEach(?Closure $closure = null): \Pest\PendingCalls\BeforeEachCall {}
/**
* Adds the given closure as a test. The first argument
* is the test description; the second argument is
* a closure that contains the test expectations.
*
* @param-closure-this \Tests\TestCase|\PHPUnit\Framework\TestCase $closure
*
* @return ($description is string ? TestCall : HigherOrderTapProxy|TestCall)
*/
function test(?string $description = null, ?Closure $closure = null): \Pest\Support\HigherOrderTapProxy|\Pest\PendingCalls\TestCall {}
/**
* Adds the given closure as a test. The first argument
* is the test description; the second argument is
* a closure that contains the test expectations.
*
* @param-closure-this \Tests\TestCase|\PHPUnit\Framework\TestCase $closure
*/
function it(string $description, ?Closure $closure = null): \Pest\PendingCalls\TestCall {}
}
namespace Tests {
class TestCase
{
use \Illuminate\Foundation\Testing\RefreshDatabase;
}
}
namespace Tests {
class TestCase
{
use \Illuminate\Foundation\Testing\RefreshDatabase;
}
}

129
README.md
View file

@ -1,93 +1,76 @@
# Arcadia Api
# Arcadia API
**Arcadia API** est une API de référence conçue selon les principes de la **Clean Architecture**, du **Domain-Driven Design (DDD)** et de l'**Architecture Hexagonale (Ports & Adapters)**.
---
## Getting started
## 📚 Documentation pour les Développeurs
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
L'ensemble de la documentation technique et des guides pratiques est organisé dans le dossier [`documentation/`](documentation/) :
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
### 🏛️ Architecture & Fonctionnement
- **[01 - Architecture Globale](documentation/Architecture/01-architecture-globale.md)** : Vue d'ensemble des couches (`Domain`, `Application`, `Presentation`, `Infra`, `Shared`), responsabilités et règles de dépendances strictes.
- **[02 - Cycle de Vie d'une Requête (Bullet Tracer)](documentation/Architecture/02-cycle-de-vie-requete.md)** : Traçage pas-à-pas d'une requête HTTP depuis la route jusqu'à la sérialisation JSON.
- **[03 - Exécution, Transactions & Événements](documentation/Architecture/03-execution-et-transactions.md)** : `UsecaseBuilder`, `LaravelExecutor`, exécution transactionnelle et dispatch sécurisé post-commit (`TransactionalDomainEventDispatcher`).
- **[04 - Guide Nouveau Cas d'Usage](documentation/Architecture/04-guide-nouveau-usecase.md)** : Checklist pas-à-pas pour créer une nouvelle fonctionnalité de bout en bout.
- **[05 - Temps, Horloge PSR-20 & Base de Données](documentation/Architecture/05-temps-et-base-de-donnees.md)** : Contrat PSR-20 `Clock`, Façade `Utc`, tests avec `FrozenClock`, standardisation `DATETIME` et dérivation `created_at` depuis UUIDv7.
## Add your files
### 📐 Conventions & Standards
- **[Conventions de Tests](documentation/Conventions/tests.md)** : Principes F.I.R.S.T., structure GWT, pyramide de tests, **Test Data Builders** et **Object Mothers**.
- **[Gestion des Exceptions](documentation/Conventions/exceptions.md)** : Matrice de correspondance entre exceptions applicatives/domaine et codes HTTP RFC 7807 (400, 404, 409, 422, 429, 500).
* [Create](https://docs.gitlab.com/user/project/repository/web_editor/#create-a-file) or [upload](https://docs.gitlab.com/user/project/repository/web_editor/#upload-a-file) files
* [Add files using the command line](https://docs.gitlab.com/topics/git/add_files/#add-files-to-a-git-repository) or push an existing Git repository with the following command:
### 🗄️ Métamodèle & Intégration Oracle
- **[Métamodèle Arcadia & Intégration Oracle](documentation/Arcadia/README.md)** : Guide d'intégration, requêtes SQL de référence et pointage vers la documentation vivante (`database/arcadia-replicate/`).
```
cd existing_repo
git remote add origin https://lab.s-web.fr/arcadia/arcadia-api.git
git branch -M main
git push -uf origin main
---
## 🚀 Commandes Utiles
### Développement & Qualité de Code
```bash
# Lancer la suite de tests Pest
composer test
# Lancer l'analyse statique PHPStan (Niveau 10)
vendor/bin/phpstan analyse
# Vérifier le formattage du code PSR-12 (Pint)
vendor/bin/pint --test
# Verifier les conventions et regles de lint (PHP Code Sniffer)
vendor/bin/phpcs
# Corriger automatiquement les conventiosn (PHP Code Beautifier)
vendor/bin/phpcbf
```
## Integrate with your tools
### Gestion de l'Application Arcadia
* [Set up project integrations](https://lab.s-web.fr/arcadia/arcadia-api/-/settings/integrations)
## Collaborate with your team
```bash
# Vérifier l'état de l'application
php artisan uwil:health
* [Invite team members and collaborators](https://docs.gitlab.com/user/project/members/)
* [Create a new merge request](https://docs.gitlab.com/user/project/merge_requests/creating_merge_requests/)
* [Automatically close issues from merge requests](https://docs.gitlab.com/user/project/issues/managing_issues/#closing-issues-automatically)
* [Enable merge request approvals](https://docs.gitlab.com/user/project/merge_requests/approvals/)
* [Set auto-merge](https://docs.gitlab.com/user/project/merge_requests/auto_merge/)
# List all Arcadia brands
php artisan uwil:arcadia:brand:list
## Test and Deploy
# List all Arcadia clients
php artisan uwil:arcadia:client:list
Use the built-in continuous integration in GitLab.
# Create a new Arcadia client (interactive wizard)
php artisan uwil:arcadia:client:create
* [Get started with GitLab CI/CD](https://docs.gitlab.com/ci/quick_start/)
* [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/user/application_security/sast/)
* [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/topics/autodevops/requirements/)
* [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/user/clusters/agent/)
* [Set up protected environments](https://docs.gitlab.com/ci/environments/protected_environments/)
# Regenerate the secret of an API client
php artisan uwil:arcadia:client:regenerate-secret
***
# Toggle the status of an API client
php artisan uwil:arcadia:client:toggle-status
# Editing this README
# Check schema and query conformity of the replicated Arcadia Oracle database
php artisan uwil:arcadia:database:check-conformity
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
# Display or export security audit events since a specified date
php artisan uwil:arcadia:security:audit-logs
## Suggestions for a good README
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
## Name
Choose a self-explaining name for your project.
## Description
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
## Badges
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
## Visuals
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
## Installation
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
## Usage
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
## Support
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
## Roadmap
If you have ideas for releases in the future, it is a good idea to list them in the README.
## Contributing
State if you are open to contributions and what your requirements are for accepting them.
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
## Authors and acknowledgment
Show your appreciation to those who have contributed to the project.
## License
For open source projects, say how it is licensed.
## Project status
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
```

18
artisan Executable file
View file

@ -0,0 +1,18 @@
#!/usr/bin/env php
<?php
use Illuminate\Foundation\Application;
use Symfony\Component\Console\Input\ArgvInput;
define('LARAVEL_START', microtime(true));
// Register the Composer autoloader...
require __DIR__.'/vendor/autoload.php';
// Bootstrap Laravel and handle the command...
/** @var Application $app */
$app = require_once __DIR__.'/bootstrap/app.php';
$status = $app->handleCommand(new ArgvInput);
exit($status);

25
bootstrap/app.php Normal file
View file

@ -0,0 +1,25 @@
<?php
declare(strict_types=1);
use Illuminate\Foundation\Application;
use Illuminate\Support\Env;
$app = Application::configure(Env::get('APP_BASE_PATH', dirname(__DIR__)))
->withRouting(
web: __DIR__ . '/../routes/web.php',
api: __DIR__ . '/../routes/api.php',
commands: __DIR__ . '/../routes/console.php',
health: '/up',
)
->withCommands([
__DIR__ . '/../src/Presentation/Console/Commands',
])
->withMiddleware(require __DIR__ . '/middlewares.php')
->withExceptions(require __DIR__ . '/exceptions.php')
->withSchedule(require __DIR__ . '/schedule.php')
->create();
$app->useAppPath($app->basePath('src/Presentation'));
return $app;

2
bootstrap/cache/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
*
!.gitignore

35
bootstrap/exceptions.php Normal file
View file

@ -0,0 +1,35 @@
<?php
declare(strict_types=1);
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Http\Request;
use Presentation\Api\Exceptions\ApiExceptionDispatcher;
use Presentation\Web\Exceptions\WebExceptionRenderer;
use Sentry\State\HubInterface;
return function (Exceptions $exceptions): void {
$exceptions->reportable(function (\Throwable $e): void {
if (app()->bound(HubInterface::class)) {
resolve(HubInterface::class)->captureException($e);
}
});
$exceptions->render(function (\Throwable $e, Request $request) {
$apiDispatcher = resolve(ApiExceptionDispatcher::class);
if ($apiResponse = $apiDispatcher->render($e, $request)) {
return $apiResponse;
}
$webRenderer = resolve(WebExceptionRenderer::class);
if ($webResponse = $webRenderer->render($e, $request)) {
return $webResponse;
}
return null;
});
$exceptions->shouldRenderJsonWhen(
fn (Request $request) => $request->is('api/*', 'api'),
);
};

35
bootstrap/middlewares.php Normal file
View file

@ -0,0 +1,35 @@
<?php
declare(strict_types=1);
use Illuminate\Foundation\Configuration\Middleware;
use Presentation\Api\V1\Http\Middlewares\EnsureApiV1AcceptsJson;
use Presentation\Api\V1\Http\Middlewares\NormalizeQueryStringArrays;
use Presentation\Api\V1\Http\Middlewares\SetApiV1Etag;
use Presentation\Api\V1\Http\Middlewares\TransformApiV1Response;
use Presentation\Api\V1\Http\Middlewares\VerifyHmacSignature;
return function (Middleware $middleware): void {
$middleware->prepend(NormalizeQueryStringArrays::class);
$middleware->alias([
'auth.hmac' => VerifyHmacSignature::class,
]);
$middleware->web(append: [
'throttle:web',
]);
$middleware->api(append: []);
$middleware->group('api.v1', [
EnsureApiV1AcceptsJson::class,
'throttle:api.v1',
SetApiV1Etag::class,
TransformApiV1Response::class,
]);
$middleware->preventRequestsDuringMaintenance(except: [
'errors/*',
]);
};

17
bootstrap/providers.php Normal file
View file

@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
use Infra\Providers\AppServiceProvider;
use Infra\Providers\ConfigServiceProvider;
use Infra\Providers\DomainServiceProvider;
use Infra\Providers\EventServiceProvider;
use Infra\Providers\SecurityServiceProvider;
return [
ConfigServiceProvider::class,
AppServiceProvider::class,
DomainServiceProvider::class,
EventServiceProvider::class,
SecurityServiceProvider::class,
];

17
bootstrap/schedule.php Normal file
View file

@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
use Illuminate\Console\Scheduling\Schedule;
use Infra\Jobs\CheckArcadiaDatabaseConformityJob;
use Infra\Jobs\HealthCheckJob;
return function (Schedule $schedule): void {
$schedule->job(new HealthCheckJob())
->everyTenMinutes()
->withoutOverlapping(15);
$schedule->job(new CheckArcadiaDatabaseConformityJob())
->hourly()
->withoutOverlapping(10);
};

125
composer.json Normal file
View file

@ -0,0 +1,125 @@
{
"$schema": "https://getcomposer.org/schema.json",
"name": "uwil/arcadia-api",
"description": "Arcadia Api in order to abstract corporate metamodel to a proper and stable implemented api",
"type": "project",
"license": "MIT",
"require": {
"php": "^8.5",
"ext-bcmath": "*",
"ext-intl": "*",
"ext-mbstring": "*",
"ext-oci8": "*",
"laravel/framework": "^13.24",
"laravel/sanctum": "^4.0",
"league/uri-interfaces": "^7.8",
"psr/clock": "^1.0",
"sentry/sentry-laravel": "^4.27",
"webmozart/assert": "^2.4",
"yajra/laravel-oci8": "^13.11"
},
"require-dev": {
"ace-of-aces/intellipest": "^1.0",
"barryvdh/laravel-ide-helper": "^3.7",
"driftingly/rector-laravel": "^2.5",
"fakerphp/faker": "^1.23",
"hotmeteor/spectator": "^3.0",
"larastan/larastan": "^3.10",
"laravel/pail": "^1.2.5",
"laravel/pint": "^1.30",
"laravel/tinker": "^3.0",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"nunomaduro/mock-final-classes": "^1.2",
"pestphp/pest": "^4.7",
"pestphp/pest-plugin-faker": "^4.0",
"pestphp/pest-plugin-laravel": "^4.1",
"pestphp/pest-plugin-type-coverage": "^4.0",
"php-parallel-lint/php-parallel-lint": "^1.4",
"phpstan/phpstan-webmozart-assert": "^2.0",
"phpunit/phpunit": "^12.5.12",
"slevomat/coding-standard": "^8.31"
},
"autoload": {
"psr-4": {
"Application\\": "src/Application/",
"Domain\\": "src/Domain/",
"Infra\\": "src/Infra/",
"Presentation\\": "src/Presentation/",
"Shared\\": "src/Shared/"
}
},
"autoload-dev": {
"psr-4": {
"Database\\ArcadiaReplicate\\": "database/arcadia-replicate/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/",
"Tests\\": "tests/"
}
},
"scripts": {
"setup": [
"composer install",
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\"",
"@php artisan key:generate",
"@php artisan migrate --force"
],
"dev": [
"Composer\\Config::disableProcessTimeout",
"npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1 --timeout=0\" \"php artisan pail --timeout=0\""
],
"test": [
"@php artisan config:clear --ansi @no_additional_args",
"vendor/bin/pest --coverage --min=85 --parallel"
],
"test:coverage": [
"@php artisan config:clear --ansi @no_additional_args",
"vendor/bin/pest --coverage --coverage-html coverage-report --min=85 --parallel"
],
"lint": [
"vendor/bin/parallel-lint --exclude vendor --exclude storage --exclude bootstrap --exclude node_modules .",
"vendor/bin/phpcs --standard=phpcs.xml --extensions=php --ignore=vendor/*,storage/*,bootstrap/*,node_modules/*",
"vendor/bin/phpstan analyse",
"vendor/bin/pint --test"
],
"analyse": "vendor/bin/phpstan analyse",
"format": "vendor/bin/pint",
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-update-cmd": [
"@php artisan vendor:publish --tag=laravel-assets --ansi --force"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi",
"@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
"@php artisan migrate --graceful --ansi"
],
"pre-package-uninstall": [
"Illuminate\\Foundation\\ComposerScripts::prePackageUninstall"
]
},
"extra": {
"laravel": {
"dont-discover": [
"laravel/pao"
]
}
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true,
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true,
"pestphp/pest-plugin": true,
"php-http/discovery": true
}
},
"minimum-stability": "stable",
"prefer-stable": true
}

11999
composer.lock generated Normal file

File diff suppressed because it is too large Load diff

128
config/app.php Normal file
View file

@ -0,0 +1,128 @@
<?php
declare(strict_types=1);
return [
/*
|--------------------------------------------------------------------------
| Application Name
|--------------------------------------------------------------------------
|
| This value is the name of your application, which will be used when the
| framework needs to place the application's name in a notification or
| other UI elements where an application name needs to be displayed.
|
*/
'name' => env('APP_NAME', 'Laravel'),
/*
|--------------------------------------------------------------------------
| Application Environment
|--------------------------------------------------------------------------
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
| services the application utilizes. Set this in your ".env" file.
|
*/
'env' => env('APP_ENV', 'production'),
/*
|--------------------------------------------------------------------------
| Application Debug Mode
|--------------------------------------------------------------------------
|
| When your application is in debug mode, detailed error messages with
| stack traces will be shown on every error that occurs within your
| application. If disabled, a simple generic error page is shown.
|
*/
'debug' => (bool) env('APP_DEBUG', false),
/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| This URL is used by the console to properly generate URLs when using
| the Artisan command line tool. You should set this to the root of
| the application so that it's available within Artisan commands.
|
*/
'url' => env('APP_URL', 'http://localhost'),
/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. The timezone
| is set to "UTC" by default as it is suitable for most use cases.
|
*/
'timezone' => env('APP_TIMEZONE', 'UTC'),
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by Laravel's translation / localization methods. This option can be
| set to any locale for which you plan to have translation strings.
|
*/
'locale' => env('APP_LOCALE', 'en'),
'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),
'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'),
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is utilized by Laravel's encryption services and should be set
| to a random, 32 character string to ensure that all encrypted values
| are secure. You should do this prior to deploying the application.
|
*/
'cipher' => 'AES-256-CBC',
'key' => env('APP_KEY'),
'previous_keys' => [
...array_filter(
explode(',', (string) env('APP_PREVIOUS_KEYS', ''))
),
],
/*
|--------------------------------------------------------------------------
| Maintenance Mode Driver
|--------------------------------------------------------------------------
|
| These configuration options determine the driver used to determine and
| manage Laravel's "maintenance mode" status. The "cache" driver will
| allow maintenance mode to be controlled across multiple machines.
|
| Supported drivers: "file", "cache"
|
*/
'maintenance' => [
'driver' => env('APP_MAINTENANCE_DRIVER', 'file'),
'store' => env('APP_MAINTENANCE_STORE', 'database'),
],
];

142
config/auth.php Normal file
View file

@ -0,0 +1,142 @@
<?php
declare(strict_types=1);
use Infra\Database\Models\ApiClient;
return [
/*
|--------------------------------------------------------------------------
| Authentication Defaults
|--------------------------------------------------------------------------
|
| This option defines the default authentication "guard" and password
| reset "broker" for your application. You may change these values
| as required, but they're a perfect start for most applications.
|
*/
'defaults' => [
'guard' => env('AUTH_GUARD', 'web'),
'passwords' => env('AUTH_PASSWORD_BROKER', 'users'),
],
/*
|--------------------------------------------------------------------------
| Authentication Guards
|--------------------------------------------------------------------------
|
| Next, you may define every authentication guard for your application.
| Of course, a great default configuration has been defined for you
| which utilizes session storage plus the Eloquent user provider.
|
| All authentication guards have a user provider, which defines how the
| users are actually retrieved out of your database or other storage
| system used by the application. Typically, Eloquent is utilized.
|
| Supported: "session"
|
*/
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
],
/*
|--------------------------------------------------------------------------
| User Providers
|--------------------------------------------------------------------------
|
| All authentication guards have a user provider, which defines how the
| users are actually retrieved out of your database or other storage
| system used by the application. Typically, Eloquent is utilized.
|
| If you have multiple user tables or models you may configure multiple
| providers to represent the model / table. These providers may then
| be assigned to any extra authentication guards you have defined.
|
| Supported: "database", "eloquent"
|
*/
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => env('AUTH_MODEL', ApiClient::class),
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
/*
|--------------------------------------------------------------------------
| Resetting Passwords
|--------------------------------------------------------------------------
|
| These configuration options specify the behavior of Laravel's password
| reset functionality, including the table utilized for token storage
| and the user provider that is invoked to actually retrieve users.
|
| The expiry time is the number of minutes that each reset token will be
| considered valid. This security feature keeps tokens short-lived so
| they have less time to be guessed. You may change this as needed.
|
| The throttle setting is the number of seconds a user must wait before
| generating more password reset tokens. This prevents the user from
| quickly generating a very large amount of password reset tokens.
|
*/
'passwords' => [
'users' => [
'provider' => 'users',
'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'),
'expire' => 60,
'throttle' => 60,
],
],
/*
|--------------------------------------------------------------------------
| Password Confirmation Timeout
|--------------------------------------------------------------------------
|
| Here you may define the number of seconds before a password confirmation
| window expires and users are asked to re-enter their password via the
| confirmation screen. By default, the timeout lasts for three hours.
|
*/
'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800),
/*
|--------------------------------------------------------------------------
| HMAC Authentication Options
|--------------------------------------------------------------------------
|
| allow_dev_bypass: When enabled in local or testing environments, allows
| requests without HMAC signatures to proceed using a default dev client.
|
*/
'hmac' => [
'allow_dev_bypass' => (bool) env('ARCADIA_AUTH_DEV_BYPASS', false),
'dev_client' => [
'id' => env('ARCADIA_DEV_CLIENT_ID', '01915ec0-0000-7000-8000-000000000001'),
'name' => env('ARCADIA_DEV_CLIENT_NAME', 'Arcadia Dev Test Client'),
'identifier' => env('ARCADIA_DEV_CLIENT_IDENTIFIER', 'arcadia_id_00000000000000000000000000000001'),
'secret' => env(
'ARCADIA_DEV_CLIENT_SECRET',
'arcadia_sec_00000000000000000000000000000000000000000000000000000000000000000000000000000000000001'
),
],
],
];

140
config/cache.php Normal file
View file

@ -0,0 +1,140 @@
<?php
declare(strict_types=1);
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Default Cache Store
|--------------------------------------------------------------------------
|
| This option controls the default cache store that will be used by the
| framework. This connection is utilized if another isn't explicitly
| specified when running a cache operation inside the application.
|
*/
'default' => env('CACHE_STORE', 'database'),
'arcadia_store' => env('ARCADIA_CACHE_STORE', env('CACHE_STORE', 'database')),
/*
|--------------------------------------------------------------------------
| Cache Stores
|--------------------------------------------------------------------------
|
| Here you may define all of the cache "stores" for your application as
| well as their drivers. You may even define multiple stores for the
| same cache driver to group types of items stored in your caches.
|
| Supported drivers: "array", "database", "file", "memcached",
| "redis", "dynamodb", "storage", "octane",
| "session", "failover", "null"
|
*/
'stores' => [
'array' => [
'driver' => 'array',
'serialize' => false,
],
'database' => [
'driver' => 'database',
'connection' => env('DB_CACHE_CONNECTION'),
'table' => env('DB_CACHE_TABLE', 'cache'),
'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'),
'lock_table' => env('DB_CACHE_LOCK_TABLE'),
],
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
'lock_path' => storage_path('framework/cache/data'),
],
'storage' => [
'driver' => 'storage',
'disk' => env('CACHE_STORAGE_DISK'),
'path' => env('CACHE_STORAGE_PATH', 'framework/cache/data'),
],
'memcached' => [
'driver' => 'memcached',
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
'sasl' => [
env('MEMCACHED_USERNAME'),
env('MEMCACHED_PASSWORD'),
],
'options' => [
// Memcached::OPT_CONNECT_TIMEOUT => 2000,
],
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
],
'redis' => [
'driver' => 'redis',
'connection' => env('REDIS_CACHE_CONNECTION', 'cache'),
'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'),
],
'dynamodb' => [
'driver' => 'dynamodb',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
'endpoint' => env('DYNAMODB_ENDPOINT'),
],
'octane' => [
'driver' => 'octane',
],
'failover' => [
'driver' => 'failover',
'stores' => [
'database',
'array',
],
],
],
/*
|--------------------------------------------------------------------------
| Cache Key Prefix
|--------------------------------------------------------------------------
|
| When utilizing the APC, database, memcached, Redis, and DynamoDB cache
| stores, there might be other applications using the same cache. For
| that reason, you may prefix every cache key to avoid collisions.
|
*/
'prefix' => env('CACHE_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')) . '-cache-'),
/*
|--------------------------------------------------------------------------
| Serializable Classes
|--------------------------------------------------------------------------
|
| This value determines the classes that can be unserialized from cache
| storage. By default, no PHP classes will be unserialized from your
| cache to prevent gadget chain attacks if your APP_KEY is leaked.
|
*/
'serializable_classes' => false,
];

205
config/database.php Normal file
View file

@ -0,0 +1,205 @@
<?php
declare(strict_types=1);
use Illuminate\Support\Str;
use Pdo\Mysql;
return [
/*
|--------------------------------------------------------------------------
| Default Database Connection Name
|--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for database operations. This is
| the connection which will be utilized unless another connection
| is explicitly specified when you execute a query / statement.
|
*/
'default' => env('DB_CONNECTION', 'sqlite'),
'arcadia_meta_model' => env('ARCADIA_DB_CONNECTION', 'arcadia'),
/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
|
| Below are all of the database connections defined for your application.
| An example configuration is provided for each database system which
| is supported by Laravel. You're free to add / remove connections.
|
*/
'connections' => [
'arcadia' => [
'driver' => env('ARCADIA_DB_DRIVER', 'oracle'),
'tns' => env('ARCADIA_DB_TNS', ''),
'host' => env('ARCADIA_DB_HOST', '127.0.0.1'),
'port' => env('ARCADIA_DB_PORT', '1521'),
'database' => env('ARCADIA_DB', env('ARCADIA_DB_SID', '')),
'sid' => env('ARCADIA_DB_SID', ''),
'service_name' => env('ARCADIA_DB_SERVICE_NAME', ''),
'username' => env('ARCADIA_DB_USERNAME', ''),
'password' => env('ARCADIA_DB_PASSWORD', ''),
'charset' => env('ARCADIA_DB_CHARSET', 'AL32UTF8'),
'prefix' => '',
'edition' => env('ARCADIA_DB_EDITION', 'ora$base'),
'server_version' => env('ARCADIA_DB_SERVER_VERSION', '19c'),
'max_name_len' => (int) env('ARCADIA_DB_MAX_NAME_LEN', 128),
],
'sqlite' => [
'driver' => 'sqlite',
'url' => env('DB_URL'),
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
'busy_timeout' => null,
'journal_mode' => null,
'synchronous' => null,
'transaction_mode' => 'DEFERRED',
],
'mysql' => [
'driver' => 'mysql',
'url' => env('DB_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
Mysql::ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
'mariadb' => [
'driver' => 'mariadb',
'url' => env('DB_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
Mysql::ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
'pgsql' => [
'driver' => 'pgsql',
'url' => env('DB_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => env('DB_CHARSET', 'utf8'),
'prefix' => '',
'prefix_indexes' => true,
'search_path' => 'public',
'sslmode' => env('DB_SSLMODE', 'prefer'),
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DB_URL'),
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => env('DB_CHARSET', 'utf8'),
'prefix' => '',
'prefix_indexes' => true,
// 'encrypt' => env('DB_ENCRYPT', 'yes'),
// 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'),
],
],
/*
|--------------------------------------------------------------------------
| Migration Repository Table
|--------------------------------------------------------------------------
|
| This table keeps track of all the migrations that have already run for
| your application. Using this information, we can determine which of
| the migrations on disk haven't actually been run on the database.
|
*/
'migrations' => [
'table' => 'migrations',
'update_date_on_publish' => true,
],
/*
|--------------------------------------------------------------------------
| Redis Databases
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store that also
| provides a richer body of commands than a typical key-value system
| such as Memcached. You may define your connection settings here.
|
*/
'redis' => [
'client' => env('REDIS_CLIENT', 'phpredis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
'prefix' => env('REDIS_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')) . '-database-'),
'persistent' => env('REDIS_PERSISTENT', false),
],
'default' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'username' => env('REDIS_USERNAME'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_DB', '0'),
'max_retries' => env('REDIS_MAX_RETRIES', 3),
'backoff_algorithm' => env('REDIS_BACKOFF_ALGORITHM', 'decorrelated_jitter'),
'backoff_base' => env('REDIS_BACKOFF_BASE', 100),
'backoff_cap' => env('REDIS_BACKOFF_CAP', 1000),
],
'cache' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'username' => env('REDIS_USERNAME'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_CACHE_DB', '1'),
'max_retries' => env('REDIS_MAX_RETRIES', 3),
'backoff_algorithm' => env('REDIS_BACKOFF_ALGORITHM', 'decorrelated_jitter'),
'backoff_base' => env('REDIS_BACKOFF_BASE', 100),
'backoff_cap' => env('REDIS_BACKOFF_CAP', 1000),
],
],
];

82
config/filesystems.php Normal file
View file

@ -0,0 +1,82 @@
<?php
declare(strict_types=1);
return [
/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
|
| Here you may specify the default filesystem disk that should be used
| by the framework. The "local" disk, as well as a variety of cloud
| based disks are available to your application for file storage.
|
*/
'default' => env('FILESYSTEM_DISK', 'local'),
/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
|
| Below you may configure as many filesystem disks as necessary, and you
| may even configure multiple disks for the same driver. Examples for
| most supported storage drivers are configured here for reference.
|
| Supported drivers: "local", "ftp", "sftp", "s3"
|
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app/private'),
'serve' => true,
'throw' => false,
'report' => false,
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => rtrim(env('APP_URL', 'http://localhost'), '/') . '/storage',
'visibility' => 'public',
'throw' => false,
'report' => false,
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
'throw' => false,
'report' => false,
],
],
/*
|--------------------------------------------------------------------------
| Symbolic Links
|--------------------------------------------------------------------------
|
| Here you may configure the symbolic links that will be created when the
| `storage:link` Artisan command is executed. The array keys should be
| the locations of the links and the values should be their targets.
|
*/
'links' => [
public_path('storage') => storage_path('app/public'),
],
];

379
config/ide-helper.php Normal file
View file

@ -0,0 +1,379 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Client\Factory;
use Illuminate\Http\Client\PendingRequest;
use Illuminate\Session\Store;
return [
/*
|--------------------------------------------------------------------------
| Filename
|--------------------------------------------------------------------------
|
| The default filename.
|
*/
'filename' => '_ide_helper.php',
/*
|--------------------------------------------------------------------------
| Models filename
|--------------------------------------------------------------------------
|
| The default filename for the models helper file.
|
*/
'models_filename' => '_ide_helper_models.php',
/*
|--------------------------------------------------------------------------
| PhpStorm meta filename
|--------------------------------------------------------------------------
|
| PhpStorm also supports the directory `.phpstorm.meta.php/` with arbitrary
| files in it, should you need additional files for your project; e.g.
| `.phpstorm.meta.php/laravel_ide_Helper.php'.
|
*/
'meta_filename' => '.phpstorm.meta.php',
/*
|--------------------------------------------------------------------------
| Fluent helpers
|--------------------------------------------------------------------------
|
| Set to true to generate commonly used Fluent methods.
|
*/
'include_fluent' => false,
/*
|--------------------------------------------------------------------------
| Write model query methods
|--------------------------------------------------------------------------
|
| Set to false to disable generated docs for the 'query()', 'newQuery()' and 'newModelQuery()' methods.
|
*/
'write_query_methods' => false,
/*
|--------------------------------------------------------------------------
| Write model magic methods
|--------------------------------------------------------------------------
|
| Set to false to disable write magic methods of model.
|
*/
'write_model_magic_where' => false,
/*
|--------------------------------------------------------------------------
| Write model external Eloquent builder methods
|--------------------------------------------------------------------------
|
| Set to false to disable write external Eloquent builder methods.
|
*/
'write_model_external_builder_methods' => false,
/*
|--------------------------------------------------------------------------
| Write model relation count and exists properties
|--------------------------------------------------------------------------
|
| Set to false to disable writing of relation count and exists properties
| to model DocBlocks.
|
*/
'write_model_relation_count_properties' => false,
'write_model_relation_exists_properties' => false,
/*
|--------------------------------------------------------------------------
| Write Eloquent model mixins
|--------------------------------------------------------------------------
|
| This will add the necessary DocBlock mixins to the model class
| contained in the Laravel framework. This helps the IDE with
| auto-completion.
|
| Please be aware that this setting changes a file within the /vendor directory.
|
*/
'write_eloquent_model_mixins' => false,
/*
|--------------------------------------------------------------------------
| Helper files to include
|--------------------------------------------------------------------------
|
| Include helper files. By default not included, but can be toggled with the
| -- helpers (-H) option. Extra helper files can be included.
|
*/
'include_helpers' => false,
'helper_files' => [
base_path() . '/vendor/laravel/framework/src/Illuminate/Support/helpers.php',
base_path() . '/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php',
],
/*
|--------------------------------------------------------------------------
| Model locations to include
|--------------------------------------------------------------------------
|
| Define in which directories the ide-helper:models command should look
| for models.
|
| glob patterns are supported to easier reach models in sub-directories,
| e.g. `app/Services/* /Models` (without the space).
|
*/
'model_locations' => [
'src/Infra/Database/Models',
],
/*
|--------------------------------------------------------------------------
| Models to ignore
|--------------------------------------------------------------------------
|
| Define which models should be ignored.
|
*/
'ignored_models' => [],
/*
|--------------------------------------------------------------------------
| Models hooks
|--------------------------------------------------------------------------
|
| Define which hook classes you want to run for models to add custom information.
|
| Hooks should implement Barryvdh\LaravelIdeHelper\Contracts\ModelHookInterface.
|
*/
'model_hooks' => [
// App\Support\IdeHelper\MyModelHook::class
],
/*
|--------------------------------------------------------------------------
| Extra classes
|--------------------------------------------------------------------------
|
| These implementations are not really extended, but called with magic functions.
|
*/
'extra' => [
'Eloquent' => [Builder::class, \Illuminate\Database\Query\Builder::class],
'Session' => [Store::class],
],
'magic' => [],
/*
|--------------------------------------------------------------------------
| Interface implementations
|--------------------------------------------------------------------------
|
| These interfaces will be replaced with the implementing class. Some interfaces
| are detected by the helpers, others can be listed below.
|
*/
'interfaces' => [
// App\MyInterface::class => App\MyImplementation::class,
],
/*
|--------------------------------------------------------------------------
| Support for camel cased models
|--------------------------------------------------------------------------
|
| There are some Laravel packages (such as Eloquence) that allow for accessing
| Eloquent model properties via camel case, instead of snake case.
|
| Enabling this option will support these packages by saving all model
| properties as camel case, instead of snake case.
|
| For example, normally you would see this:
|
| * @property \Illuminate\Support\Carbon $created_at
| * @property \Illuminate\Support\Carbon $updated_at
|
| With this enabled, the properties will be this:
|
| * @property \Illuminate\Support\Carbon $createdAt
| * @property \Illuminate\Support\Carbon $updatedAt
|
| Note, it is currently an all-or-nothing option.
|
*/
'model_camel_case_properties' => false,
/*
|--------------------------------------------------------------------------
| Property casts
|--------------------------------------------------------------------------
|
| Cast the given "real type" to the given "type".
|
*/
'type_overrides' => [
'integer' => 'int',
'boolean' => 'bool',
],
/*
|--------------------------------------------------------------------------
| Include DocBlocks from classes
|--------------------------------------------------------------------------
|
| Include DocBlocks from classes to allow additional code inspection for
| magic methods and properties.
|
*/
'include_class_docblocks' => false,
/*
|--------------------------------------------------------------------------
| Force FQN usage
|--------------------------------------------------------------------------
|
| Use the fully qualified (class) name in DocBlocks,
| even if the class exists in the same namespace
| or there is an import (use className) of the class.
|
*/
'force_fqn' => false,
/*
|--------------------------------------------------------------------------
| Use generics syntax
|--------------------------------------------------------------------------
|
| Use generics syntax within DocBlocks,
| e.g. `Collection<User>` instead of `Collection|User[]`.
|
*/
'use_generics_annotations' => true,
/*
|--------------------------------------------------------------------------
| Default return types for macros
|--------------------------------------------------------------------------
|
| Define default return types for macros without explicit return types.
| e.g. `\Illuminate\Database\Query\Builder::class => 'static'`,
| `\Illuminate\Support\Str::class => 'string'`
|
*/
'macro_default_return_types' => [
Factory::class => PendingRequest::class,
],
/*
|--------------------------------------------------------------------------
| Additional relation types
|--------------------------------------------------------------------------
|
| Sometimes it's needed to create custom relation types. The key of the array
| is the relationship method name. The value of the array is the fully-qualified
| class name of the relationship, e.g. `'relationName' => RelationShipClass::class`.
|
*/
'additional_relation_types' => [],
/*
|--------------------------------------------------------------------------
| Additional relation return types
|--------------------------------------------------------------------------
|
| When using custom relation types its possible for the class name to not contain
| the proper return type of the relation. The key of the array is the relationship
| method name. The value of the array is the return type of the relation ('many'
| or 'morphTo').
| e.g. `'relationName' => 'many'`.
|
*/
'additional_relation_return_types' => [],
/*
|--------------------------------------------------------------------------
| Enforce nullable Eloquent relationships on not null columns
|--------------------------------------------------------------------------
|
| When set to true (default), this option enforces nullable Eloquent relationships.
| However, in cases where the application logic ensures the presence of related
| records it may be desirable to set this option to false to avoid unwanted null warnings.
|
| Default: true
| A not null column with no foreign key constraint will have a "nullable" relationship.
| * @property int $not_null_column_with_no_foreign_key_constraint
| * @property-read BelongsToVariation|null $notNullColumnWithNoForeignKeyConstraint
|
| Option: false
| A not null column with no foreign key constraint will have a "not nullable" relationship.
| * @property int $not_null_column_with_no_foreign_key_constraint
| * @property-read BelongsToVariation $notNullColumnWithNoForeignKeyConstraint
|
*/
'enforce_nullable_relationships' => true,
/*
|--------------------------------------------------------------------------
| Make soft deletable relations nullable
|--------------------------------------------------------------------------
|
| When set to true (default), relationships to models using SoftDeletes trait
| will be marked as nullable. This is because soft-deleted records are excluded
| from queries by default, meaning even non-nullable foreign keys can return
| null when the related model is soft-deleted.
|
| Default: true
| A relationship to a soft-deletable model will include |null in the type:
| * @property-read Team|null $team
|
| Option: false
| A relationship to a soft-deletable model will NOT include |null (unless
| nullable for other reasons such as nullable foreign key column):
| * @property-read Team $team
|
*/
'soft_deletes_force_nullable' => true,
/*
|--------------------------------------------------------------------------
| Run artisan commands after migrations to generate model helpers
|--------------------------------------------------------------------------
|
| The specified commands should run after migrations are finished running.
|
*/
'post_migrate' => [
// 'ide-helper:models --nowrite',
],
];

134
config/logging.php Normal file
View file

@ -0,0 +1,134 @@
<?php
declare(strict_types=1);
use Monolog\Handler\NullHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;
use Monolog\Processor\PsrLogMessageProcessor;
return [
/*
|--------------------------------------------------------------------------
| Default Log Channel
|--------------------------------------------------------------------------
|
| This option defines the default log channel that is utilized to write
| messages to your logs. The value provided here should match one of
| the channels present in the list of "channels" configured below.
|
*/
'default' => env('LOG_CHANNEL', 'stack'),
/*
|--------------------------------------------------------------------------
| Deprecations Log Channel
|--------------------------------------------------------------------------
|
| This option controls the log channel that should be used to log warnings
| regarding deprecated PHP and library features. This allows you to get
| your application ready for upcoming major versions of dependencies.
|
*/
'deprecations' => [
'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'),
'trace' => env('LOG_DEPRECATIONS_TRACE', false),
],
/*
|--------------------------------------------------------------------------
| Log Channels
|--------------------------------------------------------------------------
|
| Here you may configure the log channels for your application. Laravel
| utilizes the Monolog PHP logging library, which includes a variety
| of powerful log handlers and formatters that you're free to use.
|
| Available drivers: "single", "daily", "slack", "syslog",
| "errorlog", "monolog", "custom", "stack"
|
*/
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => explode(',', (string) env('LOG_STACK', 'single')),
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'replace_placeholders' => true,
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => env('LOG_DAILY_DAYS', 14),
'replace_placeholders' => true,
],
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => env('LOG_SLACK_USERNAME', env('APP_NAME', 'Laravel')),
'emoji' => env('LOG_SLACK_EMOJI', ':boom:'),
'level' => env('LOG_LEVEL', 'critical'),
'replace_placeholders' => true,
],
'papertrail' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class),
'handler_with' => [
'host' => env('PAPERTRAIL_URL'),
'port' => env('PAPERTRAIL_PORT'),
'connectionString' => 'tls://' . env('PAPERTRAIL_URL') . ':' . env('PAPERTRAIL_PORT'),
],
'processors' => [PsrLogMessageProcessor::class],
],
'stderr' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => StreamHandler::class,
'handler_with' => [
'stream' => 'php://stderr',
],
'formatter' => env('LOG_STDERR_FORMATTER'),
'processors' => [PsrLogMessageProcessor::class],
],
'syslog' => [
'driver' => 'syslog',
'level' => env('LOG_LEVEL', 'debug'),
'facility' => env('LOG_SYSLOG_FACILITY', LOG_USER),
'replace_placeholders' => true,
],
'errorlog' => [
'driver' => 'errorlog',
'level' => env('LOG_LEVEL', 'debug'),
'replace_placeholders' => true,
],
'null' => [
'driver' => 'monolog',
'handler' => NullHandler::class,
],
'emergency' => [
'path' => storage_path('logs/laravel.log'),
],
],
];

142
config/mail.php Normal file
View file

@ -0,0 +1,142 @@
<?php
declare(strict_types=1);
return [
/*
|--------------------------------------------------------------------------
| Default Mailer
|--------------------------------------------------------------------------
|
| This option controls the default mailer that is used to send all email
| messages unless another mailer is explicitly specified when sending
| the message. All additional mailers can be configured within the
| "mailers" array. Examples of each type of mailer are provided.
|
*/
'default' => env('MAIL_MAILER', 'log'),
/*
|--------------------------------------------------------------------------
| Mailer Configurations
|--------------------------------------------------------------------------
|
| Here you may configure all of the mailers used by your application plus
| their respective settings. Several examples have been configured for
| you and you are free to add your own as your application requires.
|
| Laravel supports a variety of mail "transport" drivers that can be used
| when delivering an email. You may specify which one you're using for
| your mailers below. You may also add additional mailers if needed.
|
| Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2",
| "postmark", "resend", "log", "array",
| "failover", "roundrobin"
|
*/
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'scheme' => env('MAIL_SCHEME'),
'url' => env('MAIL_URL'),
'host' => env('MAIL_HOST', '127.0.0.1'),
'port' => env('MAIL_PORT', 2525),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url((string) env('APP_URL', 'http://localhost'), PHP_URL_HOST)),
],
'ses' => [
'transport' => 'ses',
],
'postmark' => [
'transport' => 'postmark',
// 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'),
// 'client' => [
// 'timeout' => 5,
// ],
],
'resend' => [
'transport' => 'resend',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'),
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
'failover' => [
'transport' => 'failover',
'mailers' => [
'smtp',
'log',
],
'retry_after' => 60,
],
'roundrobin' => [
'transport' => 'roundrobin',
'mailers' => [
'ses',
'postmark',
],
'retry_after' => 60,
],
],
/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all emails sent by your application to be sent from
| the same address. Here you may specify a name and address that is
| used globally for all emails that are sent by your application.
|
*/
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', env('APP_NAME', 'Laravel')),
],
/*
|--------------------------------------------------------------------------
| Health Alerts Recipient
|--------------------------------------------------------------------------
|
| The email address that receives administrative and critical health alerts.
|
*/
'health_recipient' => env('HEALTH_ALERT_EMAIL', 'health@example.com'),
/*
|--------------------------------------------------------------------------
| Security Alerts Recipient
|--------------------------------------------------------------------------
|
| The email address that receives administrative and critical security alerts.
|
*/
'security_recipient' => env('SECURITY_ALERT_EMAIL', 'security@example.com'),
];

131
config/queue.php Normal file
View file

@ -0,0 +1,131 @@
<?php
declare(strict_types=1);
return [
/*
|--------------------------------------------------------------------------
| Default Queue Connection Name
|--------------------------------------------------------------------------
|
| Laravel's queue supports a variety of backends via a single, unified
| API, giving you convenient access to each backend using identical
| syntax for each. The default queue connection is defined below.
|
*/
'default' => env('QUEUE_CONNECTION', 'database'),
/*
|--------------------------------------------------------------------------
| Queue Connections
|--------------------------------------------------------------------------
|
| Here you may configure the connection options for every queue backend
| used by your application. An example configuration is provided for
| each backend supported by Laravel. You're also free to add more.
|
| Drivers: "sync", "database", "beanstalkd", "sqs", "redis",
| "deferred", "background", "failover", "null"
|
*/
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'connection' => env('DB_QUEUE_CONNECTION'),
'table' => env('DB_QUEUE_TABLE', 'jobs'),
'queue' => env('DB_QUEUE', 'default'),
'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90),
'after_commit' => false,
],
'beanstalkd' => [
'driver' => 'beanstalkd',
'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'),
'queue' => env('BEANSTALKD_QUEUE', 'default'),
'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90),
'block_for' => 0,
'after_commit' => false,
],
'sqs' => [
'driver' => 'sqs',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'default'),
'suffix' => env('SQS_SUFFIX'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'after_commit' => false,
],
'redis' => [
'driver' => 'redis',
'connection' => env('REDIS_QUEUE_CONNECTION', 'default'),
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90),
'block_for' => null,
'after_commit' => false,
],
'deferred' => [
'driver' => 'deferred',
],
'background' => [
'driver' => 'background',
],
'failover' => [
'driver' => 'failover',
'connections' => [
'database',
'deferred',
],
],
],
/*
|--------------------------------------------------------------------------
| Job Batching
|--------------------------------------------------------------------------
|
| The following options configure the database and table that store job
| batching information. These options can be updated to any database
| connection and table which has been defined by your application.
|
*/
'batching' => [
'database' => env('DB_CONNECTION', 'sqlite'),
'table' => 'job_batches',
],
/*
|--------------------------------------------------------------------------
| Failed Queue Jobs
|--------------------------------------------------------------------------
|
| These options configure the behavior of failed queue job logging so you
| can control how and where failed jobs are stored. Laravel ships with
| support for storing failed jobs in a simple file or in a database.
|
| Supported drivers: "database-uuids", "dynamodb", "file", "null"
|
*/
'failed' => [
'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
'database' => env('DB_CONNECTION', 'sqlite'),
'table' => 'failed_jobs',
],
];

89
config/sanctum.php Normal file
View file

@ -0,0 +1,89 @@
<?php
declare(strict_types=1);
use Illuminate\Cookie\Middleware\EncryptCookies;
use Illuminate\Foundation\Http\Middleware\ValidateCsrfToken;
use Laravel\Sanctum\Http\Middleware\AuthenticateSession;
use Laravel\Sanctum\Sanctum;
return [
/*
|--------------------------------------------------------------------------
| Stateful Domains
|--------------------------------------------------------------------------
|
| Requests from the following domains / hosts will receive stateful API
| authentication cookies. Typically, these should include your local
| and production domains which access your API via a frontend SPA.
|
*/
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s',
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
Sanctum::currentApplicationUrlWithPort(),
// Sanctum::currentRequestHost(),
))),
/*
|--------------------------------------------------------------------------
| Sanctum Guards
|--------------------------------------------------------------------------
|
| This array contains the authentication guards that will be checked when
| Sanctum is trying to authenticate a request. If none of these guards
| are able to authenticate the request, Sanctum will use the bearer
| token that's present on an incoming request for authentication.
|
*/
'guard' => ['web'],
/*
|--------------------------------------------------------------------------
| Expiration Minutes
|--------------------------------------------------------------------------
|
| This value controls the number of minutes until an issued token will be
| considered expired. This will override any values set in the token's
| "expires_at" attribute, but first-party sessions are not affected.
|
*/
'expiration' => null,
/*
|--------------------------------------------------------------------------
| Token Prefix
|--------------------------------------------------------------------------
|
| Sanctum can prefix new tokens in order to take advantage of numerous
| security scanning initiatives maintained by open source platforms
| that notify developers if they commit tokens into repositories.
|
| See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning
|
*/
'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''),
/*
|--------------------------------------------------------------------------
| Sanctum Middleware
|--------------------------------------------------------------------------
|
| When authenticating your first-party SPA with Sanctum you may need to
| customize some of the middleware Sanctum uses while processing the
| request. You may change the middleware listed below as required.
|
*/
'middleware' => [
'authenticate_session' => AuthenticateSession::class,
'encrypt_cookies' => EncryptCookies::class,
'validate_csrf_token' => ValidateCsrfToken::class,
],
];

40
config/services.php Normal file
View file

@ -0,0 +1,40 @@
<?php
declare(strict_types=1);
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third party services such
| as Mailgun, Postmark, AWS and more. This file provides the de facto
| location for this type of information, allowing packages to have
| a conventional file to locate the various service credentials.
|
*/
'postmark' => [
'key' => env('POSTMARK_API_KEY'),
],
'resend' => [
'key' => env('RESEND_API_KEY'),
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
'slack' => [
'notifications' => [
'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'),
'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'),
],
],
];

235
config/session.php Normal file
View file

@ -0,0 +1,235 @@
<?php
declare(strict_types=1);
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Default Session Driver
|--------------------------------------------------------------------------
|
| This option determines the default session driver that is utilized for
| incoming requests. Laravel supports a variety of storage options to
| persist session data. Database storage is a great default choice.
|
| Supported: "file", "cookie", "database", "memcached",
| "redis", "dynamodb", "array"
|
*/
'driver' => env('SESSION_DRIVER', 'database'),
/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| Here you may specify the number of minutes that you wish the session
| to be allowed to remain idle before it expires. If you want them
| to expire immediately when the browser is closed then you may
| indicate that via the expire_on_close configuration option.
|
*/
'lifetime' => (int) env('SESSION_LIFETIME', 120),
'expire_on_close' => env('SESSION_EXPIRE_ON_CLOSE', false),
/*
|--------------------------------------------------------------------------
| Session Encryption
|--------------------------------------------------------------------------
|
| This option allows you to easily specify that all of your session data
| should be encrypted before it's stored. All encryption is performed
| automatically by Laravel and you may use the session like normal.
|
*/
'encrypt' => env('SESSION_ENCRYPT', false),
/*
|--------------------------------------------------------------------------
| Session File Location
|--------------------------------------------------------------------------
|
| When utilizing the "file" session driver, the session files are placed
| on disk. The default storage location is defined here; however, you
| are free to provide another location where they should be stored.
|
*/
'files' => storage_path('framework/sessions'),
/*
|--------------------------------------------------------------------------
| Session Database Connection
|--------------------------------------------------------------------------
|
| When using the "database" or "redis" session drivers, you may specify a
| connection that should be used to manage these sessions. This should
| correspond to a connection in your database configuration options.
|
*/
'connection' => env('SESSION_CONNECTION'),
/*
|--------------------------------------------------------------------------
| Session Database Table
|--------------------------------------------------------------------------
|
| When using the "database" session driver, you may specify the table to
| be used to store sessions. Of course, a sensible default is defined
| for you; however, you're welcome to change this to another table.
|
*/
'table' => env('SESSION_TABLE', 'sessions'),
/*
|--------------------------------------------------------------------------
| Session Cache Store
|--------------------------------------------------------------------------
|
| When using one of the framework's cache driven session backends, you may
| define the cache store which should be used to store the session data
| between requests. This must match one of your defined cache stores.
|
| Affects: "dynamodb", "memcached", "redis"
|
*/
'store' => env('SESSION_STORE'),
/*
|--------------------------------------------------------------------------
| Session Sweeping Lottery
|--------------------------------------------------------------------------
|
| Some session drivers must manually sweep their storage location to get
| rid of old sessions from storage. Here are the chances that it will
| happen on a given request. By default, the odds are 2 out of 100.
|
*/
'lottery' => [2, 100],
/*
|--------------------------------------------------------------------------
| Session Cookie Name
|--------------------------------------------------------------------------
|
| Here you may change the name of the session cookie that is created by
| the framework. Typically, you should not need to change this value
| since doing so does not grant a meaningful security improvement.
|
*/
'cookie' => env(
'SESSION_COOKIE',
Str::slug((string) env('APP_NAME', 'laravel')) . '-session'
),
/*
|--------------------------------------------------------------------------
| Session Cookie Path
|--------------------------------------------------------------------------
|
| The session cookie path determines the path for which the cookie will
| be regarded as available. Typically, this will be the root path of
| your application, but you're free to change this when necessary.
|
*/
'path' => env('SESSION_PATH', '/'),
/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| This value determines the domain and subdomains the session cookie is
| available to. By default, the cookie will be available to the root
| domain without subdomains. Typically, this shouldn't be changed.
|
*/
'domain' => env('SESSION_DOMAIN'),
/*
|--------------------------------------------------------------------------
| HTTPS Only Cookies
|--------------------------------------------------------------------------
|
| By setting this option to true, session cookies will only be sent back
| to the server if the browser has a HTTPS connection. This will keep
| the cookie from being sent to you when it can't be done securely.
|
*/
'secure' => env('SESSION_SECURE_COOKIE'),
/*
|--------------------------------------------------------------------------
| HTTP Access Only
|--------------------------------------------------------------------------
|
| Setting this value to true will prevent JavaScript from accessing the
| value of the cookie and the cookie will only be accessible through
| the HTTP protocol. It's unlikely you should disable this option.
|
*/
'http_only' => env('SESSION_HTTP_ONLY', true),
/*
|--------------------------------------------------------------------------
| Same-Site Cookies
|--------------------------------------------------------------------------
|
| This option determines how your cookies behave when cross-site requests
| take place, and can be used to mitigate CSRF attacks. By default, we
| will set this value to "lax" to permit secure cross-site requests.
|
| See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value
|
| Supported: "lax", "strict", "none", null
|
*/
'same_site' => env('SESSION_SAME_SITE', 'lax'),
/*
|--------------------------------------------------------------------------
| Partitioned Cookies
|--------------------------------------------------------------------------
|
| Setting this value to true will tie the cookie to the top-level site for
| a cross-site context. Partitioned cookies are accepted by the browser
| when flagged "secure" and the Same-Site attribute is set to "none".
|
*/
'partitioned' => env('SESSION_PARTITIONED_COOKIE', false),
/*
|--------------------------------------------------------------------------
| Session Serialization
|--------------------------------------------------------------------------
|
| This value controls the serialization strategy for session data, which
| is JSON by default. Setting this to "php" allows the storage of PHP
| objects in the session but can make an application vulnerable to
| "gadget chain" serialization attacks if the APP_KEY is leaked.
|
| Supported: "json", "php"
|
*/
'serialization' => 'json',
];

83
config/spectator.php Normal file
View file

@ -0,0 +1,83 @@
<?php
declare(strict_types=1);
return [
/*
|--------------------------------------------------------------------------
| Default Spec Source
|--------------------------------------------------------------------------
|
| Here you may specify the default spec source that should be used
| by the framework.
|
*/
'default' => env('SPEC_SOURCE', 'local'),
/*
|--------------------------------------------------------------------------
| Sources
|--------------------------------------------------------------------------
|
| Here you may configure as many sources as you wish, and you
| may even configure multiple source of the same type. Defaults have
| been setup for each driver as an example of the required options.
|
*/
'sources' => [
'local' => [
'source' => 'local',
'base_path' => env('SPEC_PATH'),
],
'remote' => [
'source' => 'remote',
'base_path' => env('SPEC_PATH'),
'params' => env('SPEC_URL_PARAMS', ''),
],
'github' => [
'source' => 'github',
'base_path' => env('SPEC_GITHUB_PATH'),
'repo' => env('SPEC_GITHUB_REPO'),
'token' => env('SPEC_GITHUB_TOKEN'),
],
],
/*
|--------------------------------------------------------------------------
| Paths
|--------------------------------------------------------------------------
|
| Configure path defaults, like prefixes.
|
*/
'path_prefix' => 'api/v1',
/*
|--------------------------------------------------------------------------
| Error Format
|--------------------------------------------------------------------------
|
| Controls the format of schema validation error messages in test output.
| Use 'text' (default) for human-readable coloured terminal output, or
| 'json' for machine-readable output suited to CI log parsers and LLMs.
|
| You can also call Spectator::useJsonErrors() / useTextErrors() per-test.
|
*/
'error_format' => env('SPECTATOR_ERROR_FORMAT', 'text'),
/*
|--------------------------------------------------------------------------
|
| Specify the groups that spectator's middleware should be prepended to.
|
*/
'middleware_groups' => ['api'],
];

10
config/throttles.php Normal file
View file

@ -0,0 +1,10 @@
<?php
declare(strict_types=1);
return [
'web' => (int) env('THROTTLE_WEB', 120),
'api' => [
'v1' => (int) env('THROTTLE_API_V1', 60),
],
];

38
config/view.php Normal file
View file

@ -0,0 +1,38 @@
<?php
declare(strict_types=1);
return [
/*
|--------------------------------------------------------------------------
| View Storage Paths
|--------------------------------------------------------------------------
|
| Most templating systems load templates from disk. Here you may specify
| an array of paths that should be checked for your views. Of course
| the usual Laravel view path has already been registered for you.
|
*/
'paths' => [
base_path('src/Presentation/Web/resources/views'),
],
/*
|--------------------------------------------------------------------------
| Compiled View Path
|--------------------------------------------------------------------------
|
| This option determines where all the compiled Blade templates will be
| stored for your application. Typically, this is within the storage
| directory. However, as usual, you are free to change this value.
|
*/
'compiled' => env(
'VIEW_COMPILED_PATH',
realpath(storage_path('framework/views'))
),
];

1
database/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
*.sqlite*

View file

@ -0,0 +1,123 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories;
use Illuminate\Database\Query\Builder;
use Illuminate\Support\Facades\DB;
use Infra\Config\ArcadiaStorageConfig;
abstract class AbstractTableFactory implements TableFactory
{
/** @var list<callable(array<string, mixed>): array<string, mixed>|array<string, mixed>> */
protected array $states = [];
protected string $connection;
public function __construct(?string $connection = null)
{
$this->connection = $connection ?? static::connectionName();
}
public static function connectionName(): string
{
return resolve(ArcadiaStorageConfig::class)->databaseConnection;
}
public static function tableName(?string $connection = null): string
{
return static::table()::table($connection ?? static::connectionName());
}
public static function query(?string $connection = null): Builder
{
$connName = $connection ?? static::connectionName();
return DB::connection($connName)
->table(static::tableName($connName));
}
public static function count(?string $connection = null): int
{
return static::query($connection)->count();
}
public static function truncate(?string $connection = null): void
{
static::query($connection)->delete();
}
public static function deleteAll(?string $connection = null): void
{
static::truncate($connection);
}
public static function new(?string $connection = null): static
{
return new static($connection);
}
/**
* @param callable(array<string, mixed>): array<string, mixed>|array<string, mixed> $state
*/
public function state(callable | array $state): static
{
$clone = clone $this;
$clone->states[] = $state;
return $clone;
}
/**
* Génère le tableau de données avec les states et surcharges appliqués.
*
* @param array<string, mixed> $attributes
* @return array<string, mixed>
*/
public function raw(array $attributes = []): array
{
$data = $this->definition();
foreach ($this->states as $state) {
$stateData = is_callable($state) ? $state($data) : $state;
$data = array_merge($data, $stateData);
}
return array_merge($data, $attributes);
}
/**
* Insère un enregistrement dans la base Oracle répliquée et retourne le tableau inséré.
*
* @param array<string, mixed> $attributes
* @return array<string, mixed>
*/
public function create(array $attributes = []): array
{
$data = $this->raw($attributes);
DB::connection($this->connection)
->table(static::tableName($this->connection))
->insert($data);
return $data;
}
/**
* Insère N enregistrements dans la table.
*
* @param array<string, mixed> $attributes
* @return list<array<string, mixed>>
*/
public function createMany(int $count, array $attributes = []): array
{
$rows = [];
for ($i = 0; $i < $count; $i++) {
$rows[] = $this->create($attributes);
}
return $rows;
}
}

View file

@ -0,0 +1,54 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories\Metap;
use Database\ArcadiaReplicate\Factories\AbstractTableFactory;
use Database\ArcadiaReplicate\Tables\Metap\MetaUtilTable;
final class MetaUtilFactory extends AbstractTableFactory
{
public static function table(): string
{
return MetaUtilTable::class;
}
/**
* @return array<string, mixed>
*/
public function definition(): array
{
$code = strtoupper(fake()->unique()->lexify('??????'));
return [
'COD_UTIL' => $code,
'LIB_UTIL' => fake()->name(),
'UVERSION' => 1,
'EMAIL' => fake()->unique()->safeEmail(),
'COD_LANGUE' => 1,
'COD_SOCIETE' => 1,
'GROUPE' => 1,
'CONNEXION_AUTORISEE' => 1,
'NUM_SERV' => 10,
'NIVEAU' => 1,
'NB_SESSION' => 1,
'IS_PERS_EXT' => 0,
'COD_SUPERIEUR' => null,
'COD_STATUT' => 1,
'IS_CHEF_PROJET_RD' => 0,
'IS_CQ' => 0,
'IS_ACHETEUR_ECHANTILLON' => 0,
'COD_PERSONNE' => $code,
'VISU_FONCTION' => 'O',
'COORD_ENV' => 1,
'ENVOI_LDAP' => 1,
'DAT_CRE' => now()->toDateString(),
'DAT_MAJ' => now()->toDateString(),
'DATE_DER_CONN' => now()->toDateString(),
'GESTION_TT_SOC' => 1,
'GESTION_TT_SIT' => 1,
'MDP' => 'secret',
];
}
}

View file

@ -0,0 +1,39 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories\Refp;
use Database\ArcadiaReplicate\Factories\AbstractTableFactory;
use Database\ArcadiaReplicate\Tables\Refp\AdditifTable;
final class AdditifFactory extends AbstractTableFactory
{
public static function table(): string
{
return AdditifTable::class;
}
/**
* @return array<string, mixed>
*/
public function definition(): array
{
$code = 'E' . fake()->unique()->numberBetween(100, 999);
return [
'COD_EUROPEEN' => $code,
'MOLECULE' => fake()->word(),
'CARAC_GEN' => fake()->sentence(),
'RISQUE' => fake()->numberBetween(0, 3),
'COMMENTAIRE' => null,
'FONCTION' => 'Conservateur',
'UVERSION' => 1,
'DAT_CRE' => now()->toDateString(),
'DAT_MAJ' => now()->toDateString(),
'BLACKLIST_LDC' => 0,
'VARIANTE' => null,
'CHAINE_EXCLUS' => null,
];
}
}

View file

@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories\Refp;
use Database\ArcadiaReplicate\Factories\AbstractTableFactory;
use Database\ArcadiaReplicate\Tables\Refp\ArticleRefTable;
final class ArticleRefFactory extends AbstractTableFactory
{
public static function table(): string
{
return ArticleRefTable::class;
}
/**
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'NO_ART' => fake()->unique()->numberBetween(10000, 99999),
'COD_SOC' => 1,
'COD_FAMVTE' => 31,
'COD_MARQUE' => 1,
'LIB_CCIAL' => fake()->words(3, true),
'IS_A_SUPPRIMER' => false,
];
}
}

View file

@ -0,0 +1,42 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories\Refp;
use Database\ArcadiaReplicate\Factories\AbstractTableFactory;
use Database\ArcadiaReplicate\Tables\Refp\FamVenteTable;
final class FamVenteFactory extends AbstractTableFactory
{
public static function table(): string
{
return FamVenteTable::class;
}
/**
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'COD_FAMVTE' => fake()->unique()->numberBetween(1, 999),
'LIB_FAMVTE' => fake()->randomElement([
'VOLAILLE CRUE',
'VOLAILLE ELABOREE',
'TRAITEUR FRAIS',
'CHARCUTERIE',
]),
'COD_FAMGEST' => 1,
'NO_ORDRE' => 1,
'TOT' => 1,
'EXCLUSION_STAT' => 0,
'COD_FAMRGPT' => 1,
'EXCLU_TRANSP' => 0,
'COD_FAMCOMPTA' => 1,
'UVERSION' => 1,
'COD_TVA' => 1,
'UTILISABLE' => 1,
];
}
}

View file

@ -0,0 +1,33 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories\Refp;
use Database\ArcadiaReplicate\Factories\AbstractTableFactory;
use Database\ArcadiaReplicate\Tables\Refp\IncoAllegationsTable;
final class IncoAllegationsFactory extends AbstractTableFactory
{
public static function table(): string
{
return IncoAllegationsTable::class;
}
/**
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'CODE' => fake()->unique()->numberBetween(1, 9999),
'LIBELLE' => fake()->randomElement([
'Riche en protéines',
'Sans conservateur',
'Faible en matières grasses',
'100% origine France',
]),
'UVERSION' => 1,
];
}
}

View file

@ -0,0 +1,37 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories\Refp;
use Database\ArcadiaReplicate\Factories\AbstractTableFactory;
use Database\ArcadiaReplicate\Tables\Refp\IncoAllergeneTable;
final class IncoAllergeneFactory extends AbstractTableFactory
{
public static function table(): string
{
return IncoAllergeneTable::class;
}
/**
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'ID' => fake()->unique()->numberBetween(1, 9999),
'LIB' => fake()->randomElement([
'Gluten',
'Lait',
'Œufs',
'Arachides',
'Soja',
'Fruits à coque',
'Moutarde',
'Graines de sésame',
]),
'UVERSION' => 1,
];
}
}

View file

@ -0,0 +1,277 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories\Refp;
use Database\ArcadiaReplicate\Factories\AbstractTableFactory;
use Database\ArcadiaReplicate\Tables\Refp\IncoCompoTable;
final class IncoCompoFactory extends AbstractTableFactory
{
public static function table(): string
{
return IncoCompoTable::class;
}
/**
* @return array<string, mixed>
*/
public function definition(): array
{
$id = fake()->unique()->numberBetween(10000, 99999);
return [
'ID' => $id,
'ID_INCO' => $id,
'NUMERO' => (string) $id,
'NOM' => 'BQ 2 STEAKS DINDE S/ATM LG OCB',
'UVERSION' => 1,
'TAILLE_REF' => 100.0,
'VAL_ENERG_KJ_R' => 522,
'VAL_ENERG_KCAL_R' => 124,
'MAT_GRASS_R' => 4.6,
'AGS_R' => 1.5,
'GLUCIDES_R' => 0.7,
'SUCRE_R' => 0.0,
'FIB_ALIM_R' => 0.0,
'PROTEINE_R' => 20.0,
'SEL_R' => 0.18,
'TAILLE_PORT' => 100.0,
'VAL_ENERG_KJ_P' => 522,
'VAL_ENERG_KCAL_P' => 124,
'MAT_GRASS_P' => 4.6,
'AGS_P' => 1.5,
'GLUCIDES_P' => 0.7,
'SUCRE_P' => 0.0,
'FIB_ALIM_P' => 0.0,
'PROTEINE_P' => 20.0,
'SEL_P' => 0.18,
'POURCENT_APPORT_REF_E14_P' => 6.0,
'POURCENT_APPORT_REF_KJO_P' => 6.0,
'POURCENT_APPORT_REF_FAT_P' => 7.0,
'POURCENT_APPORT_REF_FATSAT_P' => 8.0,
'POURCENT_APPORT_REF_CHOVAL_P' => 0.0,
'POURCENT_APPORT_REF_SUGAR_P' => 0.0,
'POURCENT_APPORT_REF_PRO_P' => 40.0,
'POURCENT_APPORT_REF_SALTEQ_P' => 3.0,
'APPORT_PORT' => 'Apport de référence pour un adulte type (8400Kj-2000Kcal)',
'MAT_GRASS_R_PREC' => null,
'AGS_R_PREC' => null,
'GLUCIDES_R_PREC' => null,
'SUCRE_R_PREC' => null,
'FIB_ALIM_R_PREC' => null,
'PROTEINE_R_PREC' => null,
'SEL_R_PREC' => null,
'P_SUR_L' => '4.35',
'COMPOSANTE_P' => 5,
'COMPOSANTE_N' => 2,
'FRUITS_R' => 0.0,
'SODIUM_P' => 0.07,
'SODIUM_R' => 0.07,
'SCORE_NUTRI' => -3,
'CLASSEMENT' => 'A',
'FRUITS_COQUE_SECH_R' => 0.0,
'POURCENT_FRUITS' => 0.0,
'SOURCE' => 1,
'SCORE_NUTRI_2022' => -5,
'NUTRI_SCORE_2022' => 'A',
'FNL_FRAIS' => 0.0,
'VIANDE_ROUGE' => 0,
'POURCENT_FNL_FRAIS' => 0.0,
];
}
public function steaksDinde(): self
{
return $this->state([
'ID' => 96504,
'ID_INCO' => 47789,
'NOM' => 'NUGGETS DE POULET DU VOLAILLER LE GAULOIS',
'VAL_ENERG_KJ_R' => 890,
'VAL_ENERG_KCAL_R' => 212,
'MAT_GRASS_R' => 9.5,
'AGS_R' => 1.8,
'GLUCIDES_R' => 16.0,
'SUCRE_R' => 0.8,
'FIB_ALIM_R' => 1.5,
'PROTEINE_R' => 15.0,
'SEL_R' => 1.10,
'CLASSEMENT' => 'B',
'NUTRI_SCORE_2022' => 'B',
]);
}
public function pouletFermierNoir(): self
{
return $this->state([
'ID' => 124503,
'ID_INCO' => 47996,
'NOM' => 'GESIERS ET FOIES CONFITS LE GAULOIS',
'VAL_ENERG_KJ_R' => 710,
'VAL_ENERG_KCAL_R' => 170,
'MAT_GRASS_R' => 8.5,
'AGS_R' => 2.8,
'GLUCIDES_R' => 0.5,
'SUCRE_R' => 0.2,
'PROTEINE_R' => 23.0,
'SEL_R' => 1.30,
'CLASSEMENT' => 'B',
'NUTRI_SCORE_2022' => 'B',
]);
}
public function pouletFermierLoue(): self
{
return $this->state([
'ID' => 124504,
'ID_INCO' => 4,
'NOM' => 'POULET FERMIER DE LOUE LABEL ROUGE',
'VAL_ENERG_KJ_R' => 620,
'VAL_ENERG_KCAL_R' => 148,
'MAT_GRASS_R' => 6.8,
'AGS_R' => 1.9,
'GLUCIDES_R' => 0.0,
'SUCRE_R' => 0.0,
'PROTEINE_R' => 21.5,
'SEL_R' => 0.15,
'CLASSEMENT' => 'A',
'NUTRI_SCORE_2022' => 'A',
]);
}
public function cordonBleuDinde(): self
{
return $this->state([
'ID' => 130101,
'ID_INCO' => 51201,
'NOM' => 'CORDON BLEU DE DINDE MAITRE COQ',
'VAL_ENERG_KJ_R' => 1010,
'VAL_ENERG_KCAL_R' => 242,
'MAT_GRASS_R' => 12.5,
'AGS_R' => 4.2,
'GLUCIDES_R' => 18.0,
'SUCRE_R' => 1.2,
'PROTEINE_R' => 14.0,
'SEL_R' => 1.45,
'CLASSEMENT' => 'D',
'NUTRI_SCORE_2022' => 'D',
]);
}
public function lasagnesBolognaise(): self
{
return $this->state([
'ID' => 140205,
'ID_INCO' => 62305,
'NOM' => 'LASAGNES A LA BOLOGNAISE PUR BOEUF MARIE',
'VAL_ENERG_KJ_R' => 590,
'VAL_ENERG_KCAL_R' => 141,
'MAT_GRASS_R' => 5.8,
'AGS_R' => 2.5,
'GLUCIDES_R' => 13.5,
'SUCRE_R' => 2.4,
'FIB_ALIM_R' => 1.2,
'PROTEINE_R' => 8.2,
'SEL_R' => 0.78,
'CLASSEMENT' => 'B',
'NUTRI_SCORE_2022' => 'B',
]);
}
public function nemsPoulet(): self
{
return $this->state([
'ID' => 150312,
'ID_INCO' => 73412,
'NOM' => 'NEMS AU POULET TRADITION D ASIE',
'VAL_ENERG_KJ_R' => 845,
'VAL_ENERG_KCAL_R' => 202,
'MAT_GRASS_R' => 8.2,
'AGS_R' => 1.6,
'GLUCIDES_R' => 23.0,
'SUCRE_R' => 2.1,
'PROTEINE_R' => 8.5,
'SEL_R' => 1.25,
'CLASSEMENT' => 'C',
'NUTRI_SCORE_2022' => 'C',
]);
}
public function emincesPouletRoti(): self
{
return $this->state([
'ID' => 160420,
'ID_INCO' => 84520,
'NOM' => 'EMINCES DE POULET ROTI REGHALAL',
'VAL_ENERG_KJ_R' => 480,
'VAL_ENERG_KCAL_R' => 114,
'MAT_GRASS_R' => 2.1,
'AGS_R' => 0.6,
'GLUCIDES_R' => 0.8,
'SUCRE_R' => 0.5,
'PROTEINE_R' => 23.0,
'SEL_R' => 1.40,
'CLASSEMENT' => 'A',
'NUTRI_SCORE_2022' => 'A',
]);
}
public function filetCanardSudOuest(): self
{
return $this->state([
'ID' => 170502,
'ID_INCO' => 48102,
'NOM' => 'MAGRET DE CANARD DU SUD OUEST LE GAULOIS',
'VAL_ENERG_KJ_R' => 790,
'VAL_ENERG_KCAL_R' => 189,
'MAT_GRASS_R' => 11.0,
'AGS_R' => 3.8,
'GLUCIDES_R' => 0.0,
'SUCRE_R' => 0.0,
'PROTEINE_R' => 22.5,
'SEL_R' => 0.12,
'CLASSEMENT' => 'A',
'NUTRI_SCORE_2022' => 'A',
]);
}
public function aiguillettesPouletThym(): self
{
return $this->state([
'ID' => 180640,
'ID_INCO' => 52340,
'NOM' => 'AIGUILLETTES DE POULET MARINES THYM CITRON MAITRE COQ',
'VAL_ENERG_KJ_R' => 495,
'VAL_ENERG_KCAL_R' => 118,
'MAT_GRASS_R' => 2.8,
'AGS_R' => 0.5,
'GLUCIDES_R' => 0.9,
'SUCRE_R' => 0.4,
'PROTEINE_R' => 22.0,
'SEL_R' => 0.95,
'CLASSEMENT' => 'A',
'NUTRI_SCORE_2022' => 'A',
]);
}
public function gratinDauphinois(): self
{
return $this->state([
'ID' => 190750,
'ID_INCO' => 63450,
'NOM' => 'GRATIN DAUPHINOIS A LA CREME FRAICHE MARIE',
'VAL_ENERG_KJ_R' => 680,
'VAL_ENERG_KCAL_R' => 163,
'MAT_GRASS_R' => 9.8,
'AGS_R' => 6.2,
'GLUCIDES_R' => 14.2,
'SUCRE_R' => 1.8,
'FIB_ALIM_R' => 1.6,
'PROTEINE_R' => 3.8,
'SEL_R' => 0.85,
'CLASSEMENT' => 'C',
'NUTRI_SCORE_2022' => 'C',
]);
}
}

View file

@ -0,0 +1,282 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories\Refp;
use Database\ArcadiaReplicate\Factories\AbstractTableFactory;
use Database\ArcadiaReplicate\Tables\Refp\IncoTable;
final class IncoFactory extends AbstractTableFactory
{
public static function table(): string
{
return IncoTable::class;
}
/**
* @return array<string, mixed>
*/
public function definition(): array
{
$noArt = fake()->unique()->numberBetween(10000, 99999);
return [
'NO_ART' => $noArt,
'DENOM_LEG' => 'Viande de poulet traitée en salaison, panée et cuite',
'DESCRIPTIF' => 'De la volaille délicatement panée en format nuggets pour '
. 'apprécier pleinement la saveur de la viande.',
'ASTUCES' => 'Pour plus de croustillance, cuisson au Air Fryer pendant 6 minutes à 200°C.',
'CONSEIL_PREPA' => 'Au four chaud pendant 10 minutes à 210°C (th. 7) '
. 'ou à la poêle pendant 10 minutes sans ajout de matière grasse.',
'ARG_VENTE' => 'Une volaille 100% française, du blé 100% français '
. 'et une recette sans conservateur et sans colorant.',
'ALLEGATIONS' => 'sans conservateur, sans huile de palme',
'ALLEGAT_SANTE' => null,
'ALLEGAT_NUTRIT' => null,
'LST_ING' => 'Viande de poulet traitée en salaison : 70% (viande de poulet : 51%, eau, '
. 'farine de BLÉ, fibre de BLÉ, sel, arômes naturels), '
. 'panure : 30% (farine de BLÉ, eau, sel, levure, épices). '
. 'Huile de tournesol. Peut contenir des traces de lait.',
'NB_PORTION' => '10',
'LST_ALLERGENE' => '1:Gluten;7:Lait',
'NUTRISCORE_ON_PACK' => 'B',
'PDS_NET_UVC' => 200.0,
'PDS_BRUT_UVC' => 211.0,
'CONDIT_CONSERV' => 'A conserver entre 0°C et +4°C',
'LST_ADDITIF' => null,
'PROD_SAISON' => 0,
'REF_COMPO' => null,
'EXPLOITANT' => 1,
'PMC' => 2.33,
'ACTIVE' => 1,
'UVERSION' => 1,
'DAT_CRE' => '2024-01-15',
'DAT_MAJ' => '2024-06-20',
];
}
public function withCompo(int $compoId): self
{
return $this->state([
'REF_COMPO' => $compoId,
]);
}
public function nuggetsPoulet(): self
{
return $this->state([
'NO_ART' => 47789,
'DENOM_LEG' => 'Viande de poulet traitée en salaison, panée et cuite',
'DESCRIPTIF' => 'Nuggets de poulet du volailler LE GAULOIS',
'ASTUCES' => 'Pour plus de croustillance, cuisson au Air Fryer pendant 6 minutes à 200°C.',
'CONSEIL_PREPA' => 'Au four chaud pendant 10 minutes à 210°C ou à la poêle pendant 10 minutes sans ajout de matière grasse.',
'ARG_VENTE' => 'Une volaille 100% française, du blé 100% français et une recette sans conservateur.',
'ALLEGATIONS' => 'sans conservateur, sans huile de palme, volaille 100% française',
'LST_ING' => 'Viande de poulet traitée en salaison : 70% (viande de poulet : 51%, eau, '
. 'farine de BLÉ, fibre de BLÉ, sel, arômes naturels), '
. 'panure : 30% (farine de BLÉ, eau, sel, levure, épices). Huile de tournesol. Traces éventuelles de lait.',
'NB_PORTION' => '10',
'PDS_NET_UVC' => 300.0,
'PDS_BRUT_UVC' => 320.0,
'NUTRISCORE_ON_PACK' => 'B',
'LST_ALLERGENE' => '1:Gluten;7:Lait',
'LST_ADDITIF' => 'E300:Acide ascorbique;E450:Diphosphates',
]);
}
public function gesiersEtFoies(): self
{
return $this->state([
'NO_ART' => 47996,
'DENOM_LEG' => 'Gésiers et foies de volaille traités en salaison, confits dans la graisse de volaille',
'DESCRIPTIF' => 'Assortiment de gésiers et de foies confits Le Gaulois',
'ASTUCES' => 'Idéal pour agrémenter vos salades périgourdines tièdes.',
'CONSEIL_PREPA' => '10 minutes à la poêle à feu doux pour des salades variées et gourmandes.',
'ARG_VENTE' => 'Des abats nobles confits lentement dans la pure tradition volaillère.',
'ALLEGATIONS' => 'sans colorant, sans arôme artificiel',
'LST_ING' => 'Gésiers de poulet et de dinde (82%), graisse de canard (6%), sel, arômes naturels, '
. 'conservateur : nitrite de sodium (E250), antioxydant : érythorbate de sodium (E316). '
. 'Foies de poulet (89%), graisse de canard (6%), sel, extrait de romarin (E392).',
'NB_PORTION' => '3/4',
'PDS_NET_UVC' => 255.0,
'PDS_BRUT_UVC' => 285.0,
'NUTRISCORE_ON_PACK' => 'B',
'LST_ADDITIF' => 'E250:Nitrite de sodium;E316:Érythorbate de sodium;E392:Extrait de romarin',
]);
}
public function pouletFermierLoue(): self
{
return $this->state([
'NO_ART' => 4,
'DENOM_LEG' => 'Poulet fermier blanc Label Rouge élevé en liberté',
'DESCRIPTIF' => 'Poulet fermier de Loué Label Rouge',
'ASTUCES' => 'Arroser régulièrement avec le jus de cuisson pour une peau croustillante.',
'CONSEIL_PREPA' => 'Au four traditionnel préchauffé à 200°C (th. 6/7) pendant 1h30 pour une volaille de 1,4 kg.',
'ARG_VENTE' => 'Élevé en plein air pendant 84 jours minimum. Alimentation 100% végétaux, minéraux et vitamines.',
'ALLEGATIONS' => 'Label Rouge, élevé en liberté 84 jours, nourri sans OGM',
'LST_ING' => 'Poulet entier prêt à cuire sans abats (100% poulet fermier de Loué).',
'NB_PORTION' => '4/5',
'PDS_NET_UVC' => 1400.0,
'PDS_BRUT_UVC' => 1420.0,
'NUTRISCORE_ON_PACK' => 'A',
'LST_ALLERGENE' => null,
'LST_ADDITIF' => null,
]);
}
public function cordonBleuDinde(): self
{
return $this->state([
'NO_ART' => 51201,
'DENOM_LEG' => 'Préparation de viande de dinde traitée en salaison, '
. 'garnie de fromage fondu et de jambon de dinde, panée et cuite',
'DESCRIPTIF' => 'Le véritable Cordon Bleu de dinde Maître CoQ',
'ASTUCES' => 'Pour un fromage bien coulant, laissez reposer 1 minute après cuisson.',
'CONSEIL_PREPA' => 'A la poêle 12 minutes à feu doux avec une noisette de beurre, ou au four 15 minutes à 180°C.',
'ARG_VENTE' => 'Une recette généreuse avec un cœur fondant au fromage et de la volaille française.',
'ALLEGATIONS' => 'volaille française, sans huile de palme',
'LST_ING' => 'Viande de dinde (45%), panure (farine de BLÉ, eau, levure, sel, épices), '
. 'fromage fondu (15% - FROMAGE, eau, BEURRE, amidons modifiés, LACTOSÉRUM, sels de fonte : E331, E452), '
. 'jambon de dinde (10% - viande de dinde, eau, sel, dextrose, arômes naturels, conservateur : E250). '
. 'Huile de tournesol. Traces éventuelles d\'œufs, céleri, moutarde.',
'NB_PORTION' => '2',
'PDS_NET_UVC' => 200.0,
'PDS_BRUT_UVC' => 220.0,
'NUTRISCORE_ON_PACK' => 'D',
'LST_ALLERGENE' => '1:Gluten;7:Lait;3:Œufs;9:Céleri;10:Moutarde',
'LST_ADDITIF' => 'E250:Nitrite de sodium;E331:Citrates de sodium;E452:Polyphosphates',
]);
}
public function lasagnesBolognaise(): self
{
return $this->state([
'NO_ART' => 62305,
'DENOM_LEG' => 'Lasagnes fraîches à la viande de bœuf cuisinée à la tomate et béchamel onctueuse',
'DESCRIPTIF' => 'Lasagnes à la Bolognaise pur bœuf Marie',
'ASTUCES' => 'Gratinez au four traditionnel avec une pincée d\'emmental râpé supplémentaire.',
'CONSEIL_PREPA' => 'Au four micro-ondes 7 minutes à 800W ou au four traditionnel 25 minutes à 180°C.',
'ARG_VENTE' => 'De la viande bovine 100% française, des pâtes fraîches maison et une sauce mijotée au vin blanc.',
'ALLEGATIONS' => 'Viande bovine française, sans conservateur, sans colorant',
'LST_ING' => 'Sauce bolognaise (45% - pulpe de tomates, viande de bœuf VBF : 18%, eau, oignons, carottes, '
. 'vin blanc, CÉLERI, huile d\'olive, ail, thym, laurier, sel, poivre), '
. 'pâtes fraîches (25% - semoule de BLÉ dur, eau, ŒUFS frais), '
. 'sauce béchamel (25% - eau, LAIT demi-écrémé, farine de BLÉ, BEURRE, crème fraîche, muscade, sel), '
. 'EMMENTAL râpé (5%). Traces éventuelles de poisson, crustacés.',
'NB_PORTION' => '1',
'PDS_NET_UVC' => 350.0,
'PDS_BRUT_UVC' => 380.0,
'NUTRISCORE_ON_PACK' => 'B',
'LST_ALLERGENE' => '1:Gluten;3:Œufs;7:Lait;9:Céleri',
'LST_ADDITIF' => null,
]);
}
public function nemsPoulet(): self
{
return $this->state([
'NO_ART' => 73412,
'DENOM_LEG' => 'Pâtés impériaux au poulet et légumes avec sauce Nuoc Mâm',
'DESCRIPTIF' => 'Nems croustillants au poulet Tradition d\'Asie',
'ASTUCES' => 'Dégustez enveloppés dans une feuille de salade avec quelques feuilles de menthe fraîche.',
'CONSEIL_PREPA' => 'Au four préchauffé à 210°C pendant 12 minutes en retournant à mi-cuisson.',
'ARG_VENTE' => 'Galette de riz ultra croustillante, farce parfumée aux champignons noirs et vermicelles.',
'ALLEGATIONS' => 'Recette authentique asiatique, sans arôme artificiel',
'LST_ING' => 'Farce : 65% (viande de poulet : 30%, vermicelles de pois réhydratés, carottes, oignons, '
. 'champignons noirs réhydratés, germes de haricot mungo, sauce SOJA [eau, graines de SOJA, sel, farine de BLÉ], '
. 'huile de SÉSAME, sucre, sel, poivre), galette de riz : 35% (eau, farine de riz, huile de tournesol, sel). '
. 'Sauce Nuoc Mâm : eau, sucre, sauce POISSON (extrait de POISSON, sel), vinaigre d\'alcool.',
'NB_PORTION' => '4',
'PDS_NET_UVC' => 280.0,
'PDS_BRUT_UVC' => 310.0,
'NUTRISCORE_ON_PACK' => 'C',
'LST_ALLERGENE' => '1:Gluten;4:Poissons;6:Soja;11:Graines de sésame',
'LST_ADDITIF' => null,
]);
}
public function emincesPouletRoti(): self
{
return $this->state([
'NO_ART' => 84520,
'DENOM_LEG' => 'Émincés de filets de poulet traités en salaison, cuits et rôtis au four - Certifié Halal',
'DESCRIPTIF' => 'Émincés de poulet rôti Réghalal',
'ASTUCES' => 'Prêts à l\'emploi dans vos wraps, sandwichs, salades césar ou fajitas.',
'CONSEIL_PREPA' => 'A consommer froid ou réchauffé 2 minutes à la poêle sans matière grasse.',
'ARG_VENTE' => '100% filet de poulet, doré au four, certifié Halal par un organisme certificateur indépendant.',
'ALLEGATIONS' => 'Certifié Halal, 100% filet, riche en protéines, sans colorant',
'LST_ING' => 'Filet de poulet Halal : 92%, eau, sel, dextrose, arôme naturel, fécule de pomme de terre, '
. 'antioxydant : ascorbate de sodium (E301). Traces éventuelles de lait, gluten, œuf.',
'NB_PORTION' => '2/3',
'PDS_NET_UVC' => 150.0,
'PDS_BRUT_UVC' => 165.0,
'NUTRISCORE_ON_PACK' => 'A',
'LST_ALLERGENE' => '1:Gluten;3:Œufs;7:Lait',
'LST_ADDITIF' => 'E301:Ascorbate de sodium',
]);
}
public function filetCanardSudOuest(): self
{
return $this->state([
'NO_ART' => 48102,
'DENOM_LEG' => 'Magret de canard à rôtir du Sud-Ouest IGP',
'DESCRIPTIF' => 'Magret de canard du Sud-Ouest Le Gaulois',
'ASTUCES' => 'Quadrillez la peau en surface avant cuisson sans entamer la chair.',
'CONSEIL_PREPA' => 'Cuire côté peau 8 minutes à feu moyen, vider l\'excédent de graisse, puis cuire côté chair 5 minutes.',
'ARG_VENTE' => 'Canard fermier élevé, gavé et préparé dans le Sud-Ouest (IGP Canard à foie gras du Sud-Ouest).',
'ALLEGATIONS' => 'IGP Sud-Ouest, 100% canard français, sans additif',
'LST_ING' => 'Magret de canard avec peau (100% canard du Sud-Ouest).',
'NB_PORTION' => '2',
'PDS_NET_UVC' => 350.0,
'PDS_BRUT_UVC' => 370.0,
'NUTRISCORE_ON_PACK' => 'A',
'LST_ALLERGENE' => null,
'LST_ADDITIF' => null,
]);
}
public function aiguillettesPouletThym(): self
{
return $this->state([
'NO_ART' => 52340,
'DENOM_LEG' => 'Aiguillettes de poulet marinées aux herbes de Provence et au citron',
'DESCRIPTIF' => 'Aiguillettes de poulet mariné thym & citron Maître CoQ',
'ASTUCES' => 'Parfaites pour des brochettes estivales ou des sautés au wok.',
'CONSEIL_PREPA' => 'A la poêle 6 minutes à feu vif en remuant régulièrement.',
'ARG_VENTE' => 'Une marinade fraîche et savoureuse sur des découpes tendres de volaille française.',
'ALLEGATIONS' => 'Volaille française, marinade sans huile de palme, arômes 100% naturels',
'LST_ING' => 'Aiguillettes de poulet (88%), marinade : 12% (eau, huile de colza, jus de citron concentré : 2%, '
. 'sel, thym : 0.8%, romarin, origan, ail déshydraté, arômes naturels, épaississant : gomme guar [E412]).',
'NB_PORTION' => '2',
'PDS_NET_UVC' => 240.0,
'PDS_BRUT_UVC' => 260.0,
'NUTRISCORE_ON_PACK' => 'A',
'LST_ALLERGENE' => null,
'LST_ADDITIF' => 'E412:Gomme guar',
]);
}
public function gratinDauphinois(): self
{
return $this->state([
'NO_ART' => 63450,
'DENOM_LEG' => 'Gratin dauphinois traditionnel aux pommes de terre fraîches, crème et emmental',
'DESCRIPTIF' => 'Gratin Dauphinois à la crème fraîche Marie',
'ASTUCES' => 'Laissez gratiner jusqu\'à obtention d\'une belle croûte dorée.',
'CONSEIL_PREPA' => 'Au four préchauffé à 190°C pendant 20 minutes.',
'ARG_VENTE' => 'Pommes de terre d\'origine France, crème fraîche normande et cuisson lente au four.',
'ALLEGATIONS' => 'Pommes de terre françaises, crème fraîche d\'Isigny, sans conservateur',
'LST_ING' => 'Pommes de terre fraîches : 55%, CRÈME fraîche pasteurisée : 22%, LAIT demi-écrémé, '
. 'EMMENTAL français râpé : 6%, BEURRE, ail, sel, poivre noir, muscade. Traces éventuelles de gluten, œuf, céleri.',
'NB_PORTION' => '2',
'PDS_NET_UVC' => 400.0,
'PDS_BRUT_UVC' => 430.0,
'NUTRISCORE_ON_PACK' => 'C',
'LST_ALLERGENE' => '7:Lait;1:Gluten;3:Œufs;9:Céleri',
'LST_ADDITIF' => null,
]);
}
}

View file

@ -0,0 +1,56 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories\Refp;
use Database\ArcadiaReplicate\Factories\AbstractTableFactory;
use Database\ArcadiaReplicate\Tables\Refp\MarqueTable;
final class MarqueFactory extends AbstractTableFactory
{
public static function table(): string
{
return MarqueTable::class;
}
/**
* @return array<string, mixed>
*/
public function definition(): array
{
$code = fake()->unique()->numberBetween(100, 999);
$brand = fake()->randomElement(['LE GAULOIS', 'LOUE', 'MARIE', 'ID HALAL', 'POPROSTU', 'ALPEKER', 'AQUILA']);
return [
'COD_MARQ' => $code,
'LIB_MARQ' => $brand,
'COD_RGPT_MARQ' => 3,
'COMMENTAIRE' => 'Marque du groupe LDC',
'NO_ORDRE' => $code,
'UVERSION' => 1,
'TYPE_MARQUE' => 1,
'SOCIETE' => 25,
'ECO_EMBALLAGE' => 1,
'INDIC_TRACA_SANS_INTERNET' => 0,
'UVERSION_PUB' => 1,
'MARQUE_PROPRE' => 1,
'IS_ANALYSEPC' => 0,
'IS_BOI' => 0,
'GLN_SOC' => 3012345678901,
'A_EPURER' => 0,
'UTILISABLE' => 1,
'DATE_CREATION' => now()->toDateString(),
'MARQUE_GEREE_SPEC' => 0,
'NUTRISCORE' => 1,
'IS_PASSERELLE' => 0,
'TYPE_MARQUE_STATS' => 4,
'RGPT_STATS' => $code,
'COD_REF_SITE_PSRL' => null,
'PSRL_RGPT' => null,
'IS_CHARTE_NUTRI' => 1,
'IS_MARQ_ENGAGEE_NS' => 1,
'ENVOI_MAGELLAN' => 0,
];
}
}

View file

@ -0,0 +1,68 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories\Refp;
use Database\ArcadiaReplicate\Factories\AbstractTableFactory;
use Database\ArcadiaReplicate\Tables\Refp\RuPersonneSirhTable;
final class RuPersonneSirhFactory extends AbstractTableFactory
{
public static function table(): string
{
return RuPersonneSirhTable::class;
}
/**
* @return array<string, mixed>
*/
public function definition(): array
{
$matricule = (string) fake()->unique()->numberBetween(1000000, 9999999);
$lastName = strtoupper(fake()->lastName());
$firstName = fake()->firstName();
$site = fake()->randomElement(['AVIGNO', 'SNVSER', 'EPC', 'LDCVOL', 'SNVVOL', 'LDCSER']);
$etab = fake()->randomElement(['ET29A', 'ET11G', 'ET15', 'ET50', 'ET11E', '01']);
$statut = fake()->randomElement(['OUV', 'AMT', 'CAD']);
return [
'MATRICULE_FIC' => $matricule,
'COD_PERSONNE' => $matricule,
'COD_SOC_GRP' => 40,
'COD_SIT_GRP' => 43,
'NOM_FIC' => $lastName,
'COD_UNITE_PROD' => 1,
'NOM_PERSONNE' => $lastName,
'PRENOM_FIC' => $firstName,
'DATE_DEB_FIC' => '2024-01-15',
'PRENOM_PERSONNE' => $firstName,
'COD_SOCIETE' => 1,
'DATE_FIN_FIC' => null,
'SOC_FIC' => 'S29',
'NUM_SERV' => 3,
'COD_INTRA_FIC' => null,
'ETAB_FIC' => $etab,
'DATE_EFFET_FIC' => '2024-01-15',
'COD_STATUT' => 1,
'SERVICE_FIC' => '25',
'SITE_FIC' => $site,
'TYP_CONTRAT_FIC' => 'CDI',
'STATUT_FIC' => $statut,
'DF_CARRIERE' => null,
'ETABLISSEMENT' => $etab,
'DATE_ENTREE' => '2024-01-15',
'UVERSION' => 1,
'MATRICULE_RESP_HIERAR' => null,
'SECT_ANALYTIQUE' => null,
'MUTATION_DEP' => 0,
'MUTATION_ARR' => 0,
'SITE_PRECEDENT' => null,
'SERVICE_PRECEDENT' => null,
'DAT_MAJ' => now()->toDateTimeString(),
'DAT_CRE' => now()->toDateTimeString(),
'SUPPRESSION_FORCEE' => 0,
'DATE_PRESENCE_FICHIER' => now()->toDateString(),
];
}
}

View file

@ -0,0 +1,40 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories\Refp;
use Database\ArcadiaReplicate\Factories\AbstractTableFactory;
use Database\ArcadiaReplicate\Tables\Refp\ServiceConsoIncoTable;
final class ServiceConsoIncoFactory extends AbstractTableFactory
{
public static function table(): string
{
return ServiceConsoIncoTable::class;
}
/**
* @return array<string, mixed>
*/
public function definition(): array
{
$id = fake()->unique()->numberBetween(1, 999);
return [
'ID' => $id,
'NOM' => 'Service clients - Groupe Auchan',
'ADRESSE1' => 'BP 682',
'ADRESSE2' => null,
'CP' => '59650',
'VILLE' => 'Villeneuve d\'Ascq',
'TELEPHONE' => '03.59.30.59.30',
'MAIL' => 'service.conso@auchan.fr',
'FAX' => null,
'MARQUE' => 210,
'UVERSION' => 1,
'LIB' => 'Service conso Pouce Auchan',
'SITE_INT' => 'www.auchan.fr',
];
}
}

View file

@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Factories;
interface TableFactory
{
/**
* Class table name for the factory.
*
* @return class-string<\Database\ArcadiaReplicate\TableOrView>
*/
public static function table(): string;
/**
* Definition for the table factory.
*
* @return array<string, mixed>
*/
public function definition(): array;
}

View file

@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate;
use Illuminate\Database\Connection;
use Illuminate\Support\Facades\DB;
use Infra\Config\ArcadiaStorageConfig;
trait IdentifiesTableOrView
{
/**
* Nom complet qualifié de la table (ex: 'REFP.INCO' sous Oracle, 'INCO' sous SQLite/MySQL).
*/
public static function table(Connection | string | null $connection = null): string
{
if ($connection instanceof Connection) {
$driver = $connection->getDriverName();
} else {
$connectionName = $connection ?? resolve(ArcadiaStorageConfig::class)->databaseConnection;
$driver = DB::connection($connectionName)->getDriverName();
}
if ($driver === 'oracle') {
return static::schemaName() . '.' . static::name();
}
return static::name();
}
}

View file

@ -0,0 +1,191 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate;
use Database\ArcadiaReplicate\Tables\Metap\MetaUtilTable;
use Database\ArcadiaReplicate\Tables\Refp\AdditifTable;
use Database\ArcadiaReplicate\Tables\Refp\ArticleAssoProduitsTable;
use Database\ArcadiaReplicate\Tables\Refp\ArticleRefTable;
use Database\ArcadiaReplicate\Tables\Refp\ArtRayonTable;
use Database\ArcadiaReplicate\Tables\Refp\AssoCommunesCpTable;
use Database\ArcadiaReplicate\Tables\Refp\AssoIncoZoneVersioCcialTable;
use Database\ArcadiaReplicate\Tables\Refp\AssoIncoZoneVersioMktTable;
use Database\ArcadiaReplicate\Tables\Refp\AssoIncoZoneVersioQualTable;
use Database\ArcadiaReplicate\Tables\Refp\CalibreOeufsTable;
use Database\ArcadiaReplicate\Tables\Refp\FamRgptTable;
use Database\ArcadiaReplicate\Tables\Refp\FamVenteTable;
use Database\ArcadiaReplicate\Tables\Refp\GroupementQualTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoAllegationsTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoAllergeneTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoAssoAllergeneTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoAssoTraceTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoBriqueGpcTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoCompoTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoDoaTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoInterprofessionTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoNeaTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoOrigininfoTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoSitProdTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoSuiviEnvoiTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoTable;
use Database\ArcadiaReplicate\Tables\Refp\IncoVersionTable;
use Database\ArcadiaReplicate\Tables\Refp\InseeCommunesTable;
use Database\ArcadiaReplicate\Tables\Refp\MarqueTable;
use Database\ArcadiaReplicate\Tables\Refp\MediaAssoArticleTable;
use Database\ArcadiaReplicate\Tables\Refp\MutTable;
use Database\ArcadiaReplicate\Tables\Refp\NdpTable;
use Database\ArcadiaReplicate\Tables\Refp\OrgCertifTable;
use Database\ArcadiaReplicate\Tables\Refp\PaletteIncoTable;
use Database\ArcadiaReplicate\Tables\Refp\RuPersonneSirhTable;
use Database\ArcadiaReplicate\Tables\Refp\ServiceConsoIncoTable;
use Database\ArcadiaReplicate\Tables\Refp\SiteProdGrpTable;
use Database\ArcadiaReplicate\Tables\Refp\SocieteInvTable;
use Database\ArcadiaReplicate\Tables\Refp\SousFamTable;
use Database\ArcadiaReplicate\Tables\Refp\TypeConditTable;
use Database\ArcadiaReplicate\Tables\Refp\TypeConservationTable;
use Database\ArcadiaReplicate\Tables\Refp\TypEmbTable;
use Database\ArcadiaReplicate\Tables\Refp\UtilisableTable;
use Database\ArcadiaReplicate\Views\Gcp\DunIncoInfView;
use Database\ArcadiaReplicate\Views\Gcp\IncoLangView;
use Database\ArcadiaReplicate\Views\Gcp\VIncoArtSiteView;
use Database\ArcadiaReplicate\Views\Refp\ArticleRefGencodView;
use Database\ArcadiaReplicate\Views\Refp\DunIncoNosocView;
use Database\ArcadiaReplicate\Views\Refp\DunIncoView;
use Database\ArcadiaReplicate\Views\Refp\EpurerFamVenteView;
use Database\ArcadiaReplicate\Views\Refp\IncoArticleView;
use Database\ArcadiaReplicate\Views\Refp\IncoCompoNutriscoreView;
use Database\ArcadiaReplicate\Views\Refp\IncoSocRefIncoView;
use Database\ArcadiaReplicate\Views\Refp\SitProdIncoView;
use Database\ArcadiaReplicate\Views\Refp\SocDlcIncoView;
use Database\ArcadiaReplicate\Views\Refp\VisuelExportGenfiView;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
final class Migrator
{
/** @var list<class-string<TableOrView>> */
public const DEFINITIONS = [
DunIncoInfView::class,
IncoLangView::class,
VIncoArtSiteView::class,
MetaUtilTable::class,
ArticleRefTable::class,
AssoIncoZoneVersioCcialTable::class,
AssoIncoZoneVersioMktTable::class,
AssoIncoZoneVersioQualTable::class,
IncoTable::class,
IncoCompoTable::class,
IncoOrigininfoTable::class,
IncoVersionTable::class,
RuPersonneSirhTable::class,
AdditifTable::class,
ArticleAssoProduitsTable::class,
ArticleRefGencodView::class,
ArtRayonTable::class,
AssoCommunesCpTable::class,
CalibreOeufsTable::class,
DunIncoView::class,
DunIncoNosocView::class,
EpurerFamVenteView::class,
FamRgptTable::class,
FamVenteTable::class,
GroupementQualTable::class,
IncoAllegationsTable::class,
IncoAllergeneTable::class,
IncoArticleView::class,
IncoAssoAllergeneTable::class,
IncoAssoTraceTable::class,
IncoBriqueGpcTable::class,
IncoCompoNutriscoreView::class,
IncoDoaTable::class,
IncoInterprofessionTable::class,
IncoNeaTable::class,
IncoSitProdTable::class,
IncoSocRefIncoView::class,
IncoSuiviEnvoiTable::class,
InseeCommunesTable::class,
MarqueTable::class,
MediaAssoArticleTable::class,
MutTable::class,
NdpTable::class,
OrgCertifTable::class,
PaletteIncoTable::class,
ServiceConsoIncoTable::class,
SiteProdGrpTable::class,
SitProdIncoView::class,
SocDlcIncoView::class,
SocieteInvTable::class,
SousFamTable::class,
TypeConditTable::class,
TypeConservationTable::class,
TypEmbTable::class,
UtilisableTable::class,
VisuelExportGenfiView::class,
];
public function __construct(private readonly string $connection)
{
}
public function up(): void
{
$conn = DB::connection($this->connection);
/** @var list<string> */
$schemas = [];
foreach (self::DEFINITIONS as $definition) {
$schemas[$definition::schemaName()] = $definition::schemaName();
}
if ($conn->getDriverName() === 'oracle') {
foreach ($schemas as $schemaUser) {
try {
$conn->statement("CREATE USER {$schemaUser} IDENTIFIED BY {$schemaUser} DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS");
} catch (\Throwable $e) {
unset($e);
}
}
}
if (app()->environment('local', 'testing')) {
$this->down();
}
$schema = Schema::connection($this->connection);
foreach (self::DEFINITIONS as $definition) {
$definition::up($schema);
}
}
public function down(): void
{
$schema = Schema::connection($this->connection);
foreach (array_reverse(self::DEFINITIONS) as $definition) {
$definition::down($schema);
}
$conn = DB::connection($this->connection);
if ($conn->getDriverName() === 'oracle') {
try {
$conn->statement('PURGE RECYCLEBIN');
} catch (\Throwable $e) {
unset($e);
}
}
}
public static function runUp(string $connection): void
{
(new self($connection))->up();
}
public static function runDown(string $connection): void
{
(new self($connection))->down();
}
}

View file

@ -0,0 +1,46 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate;
use Illuminate\Database\Schema\Builder;
use Illuminate\Database\Connection;
interface TableOrView
{
/**
* Nom du schéma propriétaire Oracle (ex: 'REFP', 'METAP', 'GCP').
*/
public static function schemaName(): string;
/**
* Nom physique de la table ou vue (ex: 'INCO', 'INCO_COMPO', 'META_UTIL').
*/
public static function name(): string;
/**
* Indique s'il s'agit d'une vue ou d'une table réelle.
*/
public static function isView(): bool;
/**
* Description métier du rôle de l'objet dans le SI Arcadia.
*/
public static function description(): string;
/**
* Nom complet qualifié de la table (ex: 'REFP.INCO' sous Oracle, 'INCO' sous SQLite/MySQL).
*/
public static function table(?Connection $connection = null): string;
/**
* Création de la structure miroir (colonnes, clés, types et commentaires).
*/
public static function up(Builder $schema): void;
/**
* Suppression de la table ou vue.
*/
public static function down(Builder $schema): void;
}

View file

@ -0,0 +1,82 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Metap;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : METAP.META_UTIL
* Type : TABLE
* Description : Réplication miroir pour META_UTIL
*/
final class MetaUtilTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'METAP';
}
public static function name(): string
{
return 'META_UTIL';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE METAP.META_UTIL du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->string('COD_UTIL', 36)->primary()->comment('Oracle: VARCHAR2(0, 0) [PK]');
$table->text('LIB_UTIL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->text('EMAIL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('COD_LANGUE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_SOCIETE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('GROUPE')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->boolean('CONNEXION_AUTORISEE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('NUM_SERV')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('NIVEAU')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('NB_SESSION')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->boolean('IS_PERS_EXT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('COD_SUPERIEUR', 36)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('COD_STATUT')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->smallInteger('IS_CHEF_PROJET_RD')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('IS_CQ')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_ACHETEUR_ECHANTILLON')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('COD_PERSONNE', 32)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('VISU_FONCTION', 4)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('COORD_ENV')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ENVOI_LDAP')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->date('DAT_CRE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DAT_MAJ')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DATE_DER_CONN')->nullable()->comment('Oracle: DATE(0, 0)');
$table->boolean('GESTION_TT_SOC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('GESTION_TT_SIT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('MDP')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,67 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.ADDITIF
* Type : TABLE
* Description : Réplication miroir pour ADDITIF
*/
final class AdditifTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'ADDITIF';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.ADDITIF du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->string('COD_EUROPEEN', 40)->primary()->comment('Oracle: VARCHAR2(0, 0) [PK]');
$table->text('MOLECULE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CARAC_GEN')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('RISQUE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->text('COMMENTAIRE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('FONCTION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->date('DAT_CRE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DAT_MAJ')->nullable()->comment('Oracle: DATE(0, 0)');
$table->boolean('BLACKLIST_LDC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('VARIANTE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CHAINE_EXCLUS')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.ART_RAYON
* Type : TABLE
* Description : Réplication miroir pour ART_RAYON
*/
final class ArtRayonTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'ART_RAYON';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.ART_RAYON du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->smallInteger('COD_RAYON')->primary()->comment('Oracle: NUMBER(3, 0) [PK]');
$table->text('LIB_RAYON')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DAT_CRE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DAT_MAJ')->nullable()->comment('Oracle: DATE(0, 0)');
$table->smallInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(3, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,64 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.ARTICLE_ASSO_PRODUITS
* Type : TABLE
* Description : Réplication miroir pour ARTICLE_ASSO_PRODUITS
*/
final class ArticleAssoProduitsTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'ARTICLE_ASSO_PRODUITS';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.ARTICLE_ASSO_PRODUITS du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('ID')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->smallInteger('CODE_SITE')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->unsignedBigInteger('NO_ART')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('CODE_PRODUIT')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->integer('CODE_SOCIETE')->nullable()->comment('Oracle: NUMBER(7, 0)');
$table->string('SEM_CALCULE', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->string('VARIANTE', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('SOURCE')->nullable()->comment('Oracle: NUMBER(3, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,465 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.ARTICLE_REF
* Type : TABLE
* Description : Réplication miroir pour ARTICLE_REF
*/
final class ArticleRefTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'ARTICLE_REF';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.ARTICLE_REF du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('NO_ART')->comment('Oracle: NUMBER(0, 0) [PK]');
$table->string('LIB_CCIAL', 140)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('NO_SORTE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('COD_FAMVTE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->decimal('POIDS_MINI', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('POIDS_MAXI', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('PRIX_MATIERE', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->smallInteger('FRAIS_CONGELE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('UNITE_CDE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->string('COD_GENCOD_SYMB', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('COD_COMPOSTAGE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('UNITE_FACT')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('COD_TVA')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('UTILISABLE_SITE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('UTILISABLE_GROUPE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->decimal('FRAIS', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->boolean('COD_POID_CST_UVC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('COD_COURS_SEMAINE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->decimal('TARE', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->string('COD_GENCOD_ADM', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DATE_CREATION')->nullable()->comment('Oracle: DATE(0, 0)');
$table->decimal('PVC_MINI', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('COEFF_SORTE', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->integer('SPCB')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->bigInteger('COD_TYP_CONDIT_PRI')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_TYP_CONDIT_PUB')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_MARQUE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_FAMFAB')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_CALIBRE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('DLC_CCIAL')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->decimal('COD_POIDS_MINI_BARQ', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('POIDS_MOY_CALCULE', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->smallInteger('DUREE_VIE')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->boolean('GESTION_DLC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('PROLOGATION_DLC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ECO_EMBALLAGE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('PREIMPR_GENCOD')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ACH_EXT_HACHURAGE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->decimal('POIDS_CST_UVC', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->string('MATRICULE_CREATEUR', 36)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('GEST_PAYS_ORIGINE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('BON_FAB_ATELIER')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('COD_ART_ASSOCIE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('COD_CIRCUIT')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->boolean('COLIS_POIDS_CST')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('COM_PRIVE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('COM_PUBLIC')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DATE_OUV_SITE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DATE_FERM_GRP')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DATE_FERM_SITE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DATE_REACT_INGRED')->nullable()->comment('Oracle: DATE(0, 0)');
$table->smallInteger('DTS')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->string('COD_GENCOD_POIDS', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('LIB_COMPOSTAGE', 120)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('LIB_PRODUCTION', 140)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('PR_SANS_AGENCE_TPS', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('PV_CONSEILLE', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->smallInteger('SITE_PROD')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->bigInteger('COD_SOUSFAM')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('TYP_CALIBRE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_SOC')->comment('Oracle: NUMBER(0, 0) [PK]');
$table->string('COD_NDP', 100)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('PRIX_CESSION', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->text('COD_ING')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DATE_VALIDATION')->nullable()->comment('Oracle: DATE(0, 0)');
$table->decimal('POIDS_MAXI_BARQ', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->smallInteger('DLT')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->boolean('COTIS_CIFOG')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->decimal('NEG_PRIX_REVIENT', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->unsignedBigInteger('COD_FAMRIST')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->smallInteger('COD_ETIQ_ING')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->bigInteger('SITE_DISTRIB')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->decimal('POIDS_MINI_COLIS_CST', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('POIDS_MAXI_COLIS_CST', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->date('DATE_MAJ')->nullable()->comment('Oracle: DATE(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('UVERSION_PUB')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->string('ETAT', 8)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('PVC_PRIX_ROND', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->date('DATE_REACT_FOUR')->nullable()->comment('Oracle: DATE(0, 0)');
$table->string('GENCOD_SYMB_PRIV', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('GENCOD_POIDS_PRIV', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('GENCOD_ADMIN_PRIV', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('VOL_PRODUIT', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->date('DATE_REACT_TARE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->decimal('LONGUEUR_PRODUIT', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('LARGUEUR_PRODUIT', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('HAUTEUR_PRODUIT', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->boolean('CONT_ECO_RD')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->decimal('COUT_PRODUCTION', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->text('DESC_PRODUIT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('TYPE_DEMANDE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->string('CHEF_PRODUIT', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('NOM_CLIENT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('QUANTITE_ESTIME_HEBDO')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->date('DELAI_REPONSE_SOUHAITE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DATE_COM_PRODUIT')->nullable()->comment('Oracle: DATE(0, 0)');
$table->text('COLISAGE_SOUHAITE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('TARE_PRIVE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->bigInteger('COD_ART_ASSO_COMP')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->boolean('IS_ING_PROD')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('NUM_RECETTE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('NUM_ETUDE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->string('ATELIER', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('BLOCAGE_TV', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('PROP_COMPO_PROD')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('TAXE_INAO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->decimal('COD_CONTRIB_EXCEP', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->bigInteger('EAN_REMPLACE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('TYPE_IFLS')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->string('COD_IFLS', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DJ_CDE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->text('LIB_CAISSE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('COD_EANCOM', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('PAYS_FAB', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('LIEU_FONCTION_CDEA', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('TMINI_STK', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('TMAXI_STK', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->date('DATE_MAJ_PRIVEE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->boolean('SUIVI_MARKETING')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('COLISAGE', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('BLOCTV_COL')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->date('DATE_MAJ_PR')->nullable()->comment('Oracle: DATE(0, 0)');
$table->decimal('POIDS_MOY_SAISI', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->string('ANCIEN_NO_ART', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('CNUF')->nullable()->comment('Oracle: NUMBER(15, 0)');
$table->smallInteger('CODE_TAXE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->text('TYPE_CARTON')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('ART_COMISSIONNE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('IS_STOCK')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('CALIBRE_DEF')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->string('POURCENTAGE_FRGPT', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('LISTE_FAMRGPT', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ORDRE_REPERTOIRE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_EXPORT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_SUIVI_STOCK_TV')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('NIVEAU_ELABORATION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('GESTION_OEUF')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->boolean('SOUMIS_ECO_EMBALLAGE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('NB_ETIQUETTE_POPEC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('NB_PIECE_BAC')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->string('COD_LIEU_STOCKAGE', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_POSTE_MANUEL')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_POSTE_AUTO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->integer('NB_BQ_COMP_MANUEL')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('NB_BQ_COMP_AUTO')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->boolean('ACREG_TYPE_REF')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->integer('ACREG_GROUPE_UNITE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->string('ACREG_MAQUETTE_UB', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ACREG_MAQUETTE_UEA', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('ACREG_CHARCTRAIT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('ACREG_GAMME_PROXI')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('ACREG_CALIBRE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->integer('ACREG_ARTICLE_ASSORT')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->smallInteger('ACREG_CALIBRE_MIN')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('ACREG_CALIBRE_MAX')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->unsignedBigInteger('NIVEAU_ELABORATION_COMPTA')->nullable()->comment('Oracle: NUMBER(22, 0)');
$table->unsignedBigInteger('ARTICLE_PRESTATION')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->smallInteger('POIDS_PORTION')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('NB_PORTION')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->unsignedBigInteger('ACREG_ART_RGPT_TARIF')->nullable()->comment('Oracle: NUMBER(30, 0)');
$table->decimal('POURCENT_PORTION_COMESTIBLE', 5, 2)->nullable()->comment('Oracle: NUMBER(5, 2)');
$table->unsignedBigInteger('ARTICLE_STOCK')->nullable()->comment('Oracle: NUMBER(22, 0)');
$table->smallInteger('SEGMENTATION_SECONDAIRE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->string('CHEF_PRODUIT_MKT', 36)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LIB_CONSO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('COD_GAMME')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('COD_RGPT_GAMME')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->text('MESSAGE_BL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('MESSAGE_FACTURE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('REG_TYPREPA_LOT', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('REG_TYPREPA_ACQUISITION', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('REG_METH_PREPA', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('REG_TYPREPA_UB', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('REG_ROULEAU_UB', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('REG_LIB_ETIQ_UB', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('REG_ROULEAU_COLIS', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('SITE_PROD_EE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->smallInteger('UNITE_INDIVISIBLE')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->boolean('SAISIE_KILO_INTERDITE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('UE_AUTORISE_CDE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_A_SUPPRIMER')->comment('Oracle: NUMBER(1, 0)');
$table->text('LISTE_LANGUES')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LISTE_DES_ETRG')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('PCB_MINI')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('TYPE_UNITE_MAXIMUM')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('QTE_MAXIMUM_COMM')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->integer('CODE_PRODUIT')->nullable()->comment('Oracle: NUMBER(7, 0)');
$table->integer('PCB_MAX')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->text('DUN14_MAX')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('CODECARTON_MAX')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->string('COD_COMPOSITION', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('COD_RECH', 128)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LISTE_FAMILLE_GAMME')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LISTE_GAMME')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('ORDRE_CADENCIER')->nullable()->comment('Oracle: NUMBER(16, 0)');
$table->text('LST_REG_FAM_GAM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('CONTR_EE', 9, 6)->nullable()->comment('Oracle: NUMBER(9, 6)');
$table->smallInteger('COD_FAM_BUDGET')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('COD_GAM_FAM_BUDGET')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('COD_GAM_COOP')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('COD_ENQUETE_INSEE')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('COD_FESTIF')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('COD_FAM_DECL_CA_CLIENT')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('KIT_BOX')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('GEST_STAT_KIT_BOX')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('MODE_TARIF_KIT_BOX')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->integer('STANDARD_D_AVANCE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('GERE_EN_PROD')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('COD_PRODUIT_PCB_MAX')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->string('COD_PROD_CLI', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('UNITE_FACT_PRIVE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->string('FABRICATION', 12)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('QTE_MIN_CDE')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->boolean('CONTROLE_STOCK_COMMANDE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('DELAI_PREPA_JOUR')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->text('LIBELLE_TARIF')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('SITE_REF_ECO_EMB')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->boolean('IS_HALLAL')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ZV')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('ZV_1')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ZV_2')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ZV_3')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ZV_4')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ZV_5')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('A_EPURER')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('CLS_CAD_1')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->integer('CLS_CAD_2')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->smallInteger('CLS_CAD_3')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->decimal('PRIX_PLAFOND', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->string('COD_NDP_SUISSE', 56)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('LONGUEUR_PRODUIT_PUB', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('LARGEUR_PRODUIT_PUB', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('HAUTEUR_PRODUIT_PUB', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('VOLUME_PRODUIT_PUB', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->smallInteger('COMPLEMENT_TARIF')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->string('COLISAGE_SPECIFIQUE', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('COD_GENERIQUE_FM')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->smallInteger('UC')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->integer('COD_SOCIETE_RESP_PV')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->unsignedBigInteger('ORD_TRI_TARIF')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->smallInteger('COULEUR')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('IS_ARTICLE_CG')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('MESSAGE_BL_PUBLIC')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('MESSAGE_FACTURE_PUBLIC')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('COD_MSG_ETQ_COLIS')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('COD_MSG_ETQ_PIECE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->decimal('PRIX_PLAFOND_BLOQUANT', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->boolean('ARTICLE_FICTIF')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('GENCOD_RGPT')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->string('CODE_MAQUETTE', 20)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('MODE_PRODUCTION')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('NB_JOURS_RRII')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('SAISIE_DLC_SORTIE_CALIBREUSE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('TYPE_PRODUCTION')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('AFFICHAGE_CONSULTATION')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('DEPLACEMENT_BRAS_JET_ENCRE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('CALIBRE_OEUFS')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->text('COD_SECTION_ANA_PRIV')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('ACREG_COD_TVA_ACHAT')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->integer('ACREG_COD_FAM_COMPTA_ACHAT')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->smallInteger('NOUVEAU')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->bigInteger('NO_ART_OPT')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('COD_COMM_TARIF')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('ART_EXOGENE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->text('NO_ART_EXO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('CELLULE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->string('ORI_PROD_INCO', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('COD_FAM_ADEPALE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->unsignedBigInteger('NO_ART_SOURCE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->boolean('CLASSE_PRODUIT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_PROD_TYPE_C3')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->unsignedBigInteger('SITE_REF_INCO')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->boolean('COMPO_PILOTEE_INCO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->integer('FAM_COMPTA_ACH')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->integer('FAM_COMPTA_VTE')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->text('COD_SECTION_ANA_FIL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_ART_MAG')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->unsignedBigInteger('PLAN_ANA_CMPTA')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->boolean('IS_PDT_BIO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('LIB_FACT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LIB_FACT_NEUTRE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('REG_ETIQ_DESSOUS', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('SITE_ANALYTIQUE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->text('INTERPROFESSION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('INTERPROFESSION_STAT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('SECTION_ANALYTIQUE_ACHAT', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('SOMME_POURC_RGPT')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->boolean('IS_VEGETAL')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('COD_ESP_FOURN')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('ENVOI_TRACABILITE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('COD_RAYON')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->decimal('SPCB_KG', 8, 3)->nullable()->comment('Oracle: NUMBER(8, 3)');
$table->integer('TAXE_CVO')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->boolean('COMMODITE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('COM_FACTURATION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('ANTERIORITE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('SOC_REF')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->boolean('TAXE_SIO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('SANS_ANTIBIO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('OGM_SPECIFIQUE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('NB_UC_FM')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('PREV_VTE_VOLUME')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('PREV_VTE_VOLATILITE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('SAISONNALITE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->integer('ACREG_TYPACHAT')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->smallInteger('COD_FAMILLE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->integer('ACREG_SOUSFAM_ADV')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->smallInteger('COD_TYPE_FAMILLE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('COD_TYPE_PROD')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('ACREG_TYP_ART')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('CODE_PREFIXE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('COD_REFGESTION_VOLAILLE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('COD_REFGESTION_TRAITEUR')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('COD_REFGESTION_AMONT')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->integer('UNITE_CDE_PF2ART')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('UNITE_FACT_PF2ART')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('INVENTAIRE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->string('ACREG_GROUP_UNITE_PF2ART', 128)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('ACREG_UNITE_PIVOT')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->string('ACREG_LIB_ABREGE', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ACREG_LIB_COURT', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ACREG_COD_RECHERCHE', 128)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('ACREG_NB_UPIVOT', 9, 3)->nullable()->comment('Oracle: NUMBER(9, 3)');
$table->decimal('ACREG_NB_UELEM', 12, 6)->nullable()->comment('Oracle: NUMBER(12, 6)');
$table->integer('ACREG_NB_UAPPROV')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->decimal('ACREG_NB_USUPPL1', 9, 3)->nullable()->comment('Oracle: NUMBER(9, 3)');
$table->integer('ACREG_UCDE1')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('ACREG_UCDE2')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('ACREG_UCDE3')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('ACREG_UFACT')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('ACREG_GESTIONMINIMAXI')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->decimal('ACREG_QTEMINIMUM', 19, 3)->nullable()->comment('Oracle: NUMBER(19, 3)');
$table->decimal('ACREG_QTEMAXIMUM', 19, 3)->nullable()->comment('Oracle: NUMBER(19, 3)');
$table->integer('ACREG_NBDLCMINI')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->boolean('ACREG_AFFIC_CADENCIER')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->decimal('ACREG_SEULMINI', 4, 2)->nullable()->comment('Oracle: NUMBER(4, 2)');
$table->decimal('ACREG_SEULMAXI', 4, 2)->nullable()->comment('Oracle: NUMBER(4, 2)');
$table->integer('ACREG_NOFOUR_COMMANDE')->nullable()->comment('Oracle: NUMBER(7, 0)');
$table->unsignedBigInteger('ACREG_SITE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->string('ACREG_LIEU', 20)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('ACREG_NOQUAI')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->string('ACREG_NOMETHODE', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('ACREG_MOD_REMISE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->integer('ACREG_NOREFTARIF')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->smallInteger('ACREG_NOREFFAMTARIF')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('ACREG_NOREFFAMTARIF2')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('ACREG_NOREFFAMTARIF3')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->boolean('ACREG_ESTAMPILLE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('ACREG_LIBELLE_ETIQ', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('ACREG_BLOCAGES')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->date('ACREG_DATEDEB_BLOCAGE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('ACREG_DATEFIN_BLOCAGE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->boolean('ACREG_GESTIONSTOCK')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ACREG_SUIVI_INV')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('ACREG_UVALO')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('ACREG_UPRIN_COMPTAGE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('ACREG_UPRIN_SAISIE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('ACREG_USECOND_SAISIE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('ACREG_TERTIAIRE_SAISIE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->integer('ACREG_NOURAZ')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->boolean('ACREG_MODE_CHIFFRAGE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ACREG_TYPPRIX')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->unsignedBigInteger('ACREG_SITESECONDAIRE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->string('ACREG_LIEUSECONDAIRE', 20)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('SITE_VALO', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('ACREG_SUIVI_LOT_EXPE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ACREG_SUIVI_LOT_RECEPT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ACREG_SUIVI_LOT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->integer('ACREG_TYPE_LOT')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('ACREG_NBJ_DISPO')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->boolean('ACREG_SUIVI_EMPLACEMENT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->unsignedBigInteger('ACREG_TYPE_PROD_EMPLACEMENT')->nullable()->comment('Oracle: NUMBER(16, 0)');
$table->string('ACREG_TYPE_UNITE_EMPLACEMENT', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('ACREG_UNITE_EMPLACEMENT')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->decimal('ACREG_QUANTITE_EMPLACEMENT', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->string('ACREG_ACHETEUR', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ACREG_PLAN_APPROV', 36)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('ACREG_TYPE_DATE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('ACREG_DESTINATION', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ACREG_LIEU2', 20)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('ACREG_BLOCAGE_AUTOSTOCK')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('ACREG_JOUR_CLIENT', 120)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ACREG_DELAIREAPPRO', 120)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('ACREG_SITE_AFFECT')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->text('ACREG_LIBDESI')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('ACREG_AFFIC_CADENCIER_VTE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('EDITION_INVENTAIRE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('OVO_CODE_ALIMENTATION')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('OVO_CODE_TYPE_MP')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('OVO_CODE_PLUS_PRODUIT')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('OVO_CODE_SITE_PRODUCTION')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('TYPE_MARCHANDISE_TRANSPORT')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('TYPE_SOUS_MARCHAN_TRANSP')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->integer('CODE_COPIE_GPAO')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->string('REG_TYPREPA_SUP_UB', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('CRITERE_CONSERV')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('DECLARATION_REP')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('IS_NOTION_FRAIS')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('NBRE_JRS_ANTICIPATION_CDE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('AO_EGALIM_RHD')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('COD_FAMTARIF_CESSION')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->string('COLISAGE_PREVISIONNEL', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ART_SITE_PREVISIONNEL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CODE_PRODIAA')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_PRESTA_SERVICE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('GAMME_TACO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('ACREG_CODE_CONCATE', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('ACREG_MODE_APPLI_REM')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->primary(['NO_ART', 'COD_SOC']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,59 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.ASSO_COMMUNES_CP
* Type : TABLE
* Description : Réplication miroir pour ASSO_COMMUNES_CP
*/
final class AssoCommunesCpTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'ASSO_COMMUNES_CP';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.ASSO_COMMUNES_CP du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->string('NUM_COMMUNES', 20)->comment('Oracle: VARCHAR2(0, 0) [PK]');
$table->string('CP', 191)->comment('Oracle: VARCHAR2(0, 0) [PK]');
$table->unsignedBigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->primary(['NUM_COMMUNES', 'CP']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,61 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.ASSO_INCO_ZONE_VERSIO_CCIAL
* Type : TABLE
* Description : Réplication miroir pour ASSO_INCO_ZONE_VERSIO_CCIAL
*/
final class AssoIncoZoneVersioCcialTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'ASSO_INCO_ZONE_VERSIO_CCIAL';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.ASSO_INCO_ZONE_VERSIO_CCIAL du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->dateTime('DAT_CRE')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->dateTime('DAT_MAJ')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('NO_ART')->comment('Oracle: NUMBER(6, 0) [PK]');
$table->string('NOM_ZONE_MM', 191)->comment('Oracle: VARCHAR2(0, 0) [PK]');
$table->primary(['NOM_ZONE_MM', 'NO_ART']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,61 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.ASSO_INCO_ZONE_VERSIO_MKT
* Type : TABLE
* Description : Réplication miroir pour ASSO_INCO_ZONE_VERSIO_MKT
*/
final class AssoIncoZoneVersioMktTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'ASSO_INCO_ZONE_VERSIO_MKT';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.ASSO_INCO_ZONE_VERSIO_MKT du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->dateTime('DAT_CRE')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->dateTime('DAT_MAJ')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('NO_ART')->comment('Oracle: NUMBER(6, 0) [PK]');
$table->string('NOM_ZONE_MM', 191)->comment('Oracle: VARCHAR2(0, 0) [PK]');
$table->primary(['NOM_ZONE_MM', 'NO_ART']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,61 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.ASSO_INCO_ZONE_VERSIO_QUAL
* Type : TABLE
* Description : Réplication miroir pour ASSO_INCO_ZONE_VERSIO_QUAL
*/
final class AssoIncoZoneVersioQualTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'ASSO_INCO_ZONE_VERSIO_QUAL';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.ASSO_INCO_ZONE_VERSIO_QUAL du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->dateTime('DAT_CRE')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->dateTime('DAT_MAJ')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('NO_ART')->comment('Oracle: NUMBER(6, 0) [PK]');
$table->string('NOM_ZONE_MM', 191)->comment('Oracle: VARCHAR2(0, 0) [PK]');
$table->primary(['NOM_ZONE_MM', 'NO_ART']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,58 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.CALIBRE_OEUFS
* Type : TABLE
* Description : Réplication miroir pour CALIBRE_OEUFS
*/
final class CalibreOeufsTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'CALIBRE_OEUFS';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.CALIBRE_OEUFS du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->smallInteger('CODE_CALIBRE')->primary()->comment('Oracle: NUMBER(3, 0) [PK]');
$table->string('LIBELLE_CALIBRE', 120)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(6, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,63 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.FAM_RGPT
* Type : TABLE
* Description : Réplication miroir pour FAM_RGPT
*/
final class FamRgptTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'FAM_RGPT';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.FAM_RGPT du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('COD_FAMRGPT')->primary()->comment('Oracle: NUMBER(0, 0) [PK]');
$table->text('LIB_FAMRGPT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('COD_FAMANA')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->integer('NO_ORDRE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->unsignedBigInteger('SECT_ANA_SITE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('SECT_ANA_INTERFILIALE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->boolean('CARAC_ELEVAGE')->nullable()->comment('Oracle: NUMBER(1, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,115 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.FAM_VENTE
* Type : TABLE
* Description : Réplication miroir pour FAM_VENTE
*/
final class FamVenteTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'FAM_VENTE';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.FAM_VENTE du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('COD_FAMVTE')->primary()->comment('Oracle: NUMBER(0, 0) [PK]');
$table->text('LIB_FAMVTE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('COD_FAMGEST')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->integer('NO_ORDRE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->smallInteger('TOT')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->boolean('EXCLUSION_STAT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('COD_FAMRGPT')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->boolean('EXCLU_TRANSP')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('COD_FAMCOMPTA')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->text('COMMENTAIRE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('COD_TVA')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->decimal('COD_CONTRIBUTION', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->text('TEXTE_CMP')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('CODE_TAXE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->string('COD_FAMECOEMB', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_MIXTE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('COMPTE_COMPTA', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('SECT_ANA_SITE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('SECT_ANA_INTERFILIALE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->string('COMPTE_COMPTA_SOCEXPORT', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('PREFIXE_ANA_VENTE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->boolean('IS_PRESTATION')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('NIVEAU_STATS')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('UTILISABLE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('CHARTE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->text('OPA_CONCERNEES')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('SOUCHE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ORIGINE_VOLAILLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('AGE_ABATTAGE_MOYEN')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('DENSITE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('OBJECTIF_POIDS')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ALIMENTATION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ELEVAGE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('CONTROLE_FILIERE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->unsignedBigInteger('REF_FICHE_RD')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->string('REF_PREP_VIANDE', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('REF_FICHE_FABRICATION', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('A_EPURER')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('POLE_ACTIVITE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->unsignedBigInteger('SEC_ANA_OEUF')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('SECT_ANA_SITE_TRT')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('SECT_ANA_INTERFILIALE_TRT')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->string('COMPTE_COMPTA_TRT', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('COMPTE_COMPTA_SOCEXPORT_TRT', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('COD_FAMCOMPTA_TRT')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->integer('FAM_COMPTA_ACH_TRT')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->integer('FAM_COMPTA_ACH_VOL')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->integer('FAM_COMPTA_VTE_TRT')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->integer('FAM_COMPTA_VTE_VOL')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->boolean('CARAC_ELEVAGE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('CONSEILS_CONSO_CUIT_A_COEUR')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->integer('TAXE_CVO')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->text('NOM_FONCT_INCO_ART')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('COD_TAXE_SIO')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('COD_SFAMILLE_COMM')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->boolean('MENTION_A_AFFICHER')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('IS_NOTION_FRAIS')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('REGROUP_SS_TOT')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->boolean('IS_PRESTA_SERVICE')->nullable()->comment('Oracle: NUMBER(1, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,63 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.GROUPEMENT_QUAL
* Type : TABLE
* Description : Réplication miroir pour GROUPEMENT_QUAL
*/
final class GroupementQualTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'GROUPEMENT_QUAL';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.GROUPEMENT_QUAL du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('ID')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->text('NOM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ADRESSE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('CP', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('VILLE', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('TELEPHONE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CONTACT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,58 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_ALLEGATIONS
* Type : TABLE
* Description : Réplication miroir pour INCO_ALLEGATIONS
*/
final class IncoAllegationsTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_ALLEGATIONS';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_ALLEGATIONS du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('CODE')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->text('LIBELLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,58 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_ALLERGENE
* Type : TABLE
* Description : Réplication miroir pour INCO_ALLERGENE
*/
final class IncoAllergeneTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_ALLERGENE';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_ALLERGENE du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('ID')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->text('LIB')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_ASSO_ALLERGENE
* Type : TABLE
* Description : Réplication miroir pour INCO_ASSO_ALLERGENE
*/
final class IncoAssoAllergeneTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_ASSO_ALLERGENE';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_ASSO_ALLERGENE du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('ID')->comment('Oracle: NUMBER(10, 0) [PK]');
$table->bigInteger('COD_SITE_GRP')->comment('Oracle: NUMBER(0, 0) [PK]');
$table->text('LST_ALLERGENE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->primary(['ID', 'COD_SITE_GRP']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_ASSO_TRACE
* Type : TABLE
* Description : Réplication miroir pour INCO_ASSO_TRACE
*/
final class IncoAssoTraceTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_ASSO_TRACE';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_ASSO_TRACE du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('ID')->comment('Oracle: NUMBER(10, 0) [PK]');
$table->bigInteger('COD_SITE_GRP')->comment('Oracle: NUMBER(0, 0) [PK]');
$table->text('TRACES_RCT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->primary(['ID', 'COD_SITE_GRP']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_BRIQUE_GPC
* Type : TABLE
* Description : Réplication miroir pour INCO_BRIQUE_GPC
*/
final class IncoBriqueGpcTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_BRIQUE_GPC';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_BRIQUE_GPC du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->string('CODE_BRIQUE', 32)->primary()->comment('Oracle: VARCHAR2(0, 0) [PK]');
$table->text('LIB_BRIQUE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->date('DAT_CRE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DAT_MAJ')->nullable()->comment('Oracle: DATE(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,237 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_COMPO
* Type : TABLE
* Description : Réplication miroir pour INCO_COMPO
*/
final class IncoCompoTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_COMPO';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_COMPO du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('ID')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->unsignedBigInteger('ID_INCO')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->string('NUMERO', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('NOM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->decimal('TAILLE_REF', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->integer('VAL_ENERG_KJ_R')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->integer('VAL_ENERG_KCAL_R')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->decimal('MAT_GRASS_R', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('AGS_R', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('GLUCIDES_R', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('SUCRE_R', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('FIB_ALIM_R', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('PROTEINE_R', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('SEL_R', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('TAILLE_PORT', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->integer('VAL_ENERG_KJ_P')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->integer('VAL_ENERG_KCAL_P')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->decimal('MAT_GRASS_P', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('AGS_P', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('GLUCIDES_P', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('SUCRE_P', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('FIB_ALIM_P', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('PROTEINE_P', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('SEL_P', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('POURCENT_APPORT_REF_E14_P', 8, 3)->nullable()->comment('Oracle: NUMBER(8, 3)');
$table->decimal('POURCENT_APPORT_REF_KJO_P', 8, 3)->nullable()->comment('Oracle: NUMBER(8, 3)');
$table->decimal('POURCENT_APPORT_REF_FAT_P', 8, 3)->nullable()->comment('Oracle: NUMBER(8, 3)');
$table->decimal('POURCENT_APPORT_REF_FATSAT_P', 8, 3)->nullable()->comment('Oracle: NUMBER(8, 3)');
$table->decimal('POURCENT_APPORT_REF_CHOVAL_P', 8, 3)->nullable()->comment('Oracle: NUMBER(8, 3)');
$table->decimal('POURCENT_APPORT_REF_SUGAR_P', 8, 3)->nullable()->comment('Oracle: NUMBER(8, 3)');
$table->decimal('POURCENT_APPORT_REF_PRO_P', 8, 3)->nullable()->comment('Oracle: NUMBER(8, 3)');
$table->decimal('POURCENT_APPORT_REF_SALTEQ_P', 8, 3)->nullable()->comment('Oracle: NUMBER(8, 3)');
$table->text('APPORT_PORT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('MAT_GRASS_R_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('AGS_R_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('GLUCIDES_R_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('SUCRE_R_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('FIB_ALIM_R_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('PROTEINE_R_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('SEL_R_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('P_SUR_L', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('COMPOSANTE_P')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('COMPOSANTE_N')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->decimal('FRUITS_R', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('SODIUM_P', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('SODIUM_R', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->smallInteger('SCORE_NUTRI')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->string('CLASSEMENT', 4)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('FRUITS_COQUE_SECH_R', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('POURCENT_FRUITS', 6, 3)->nullable()->comment('Oracle: NUMBER(6, 3)');
$table->boolean('SOURCE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->decimal('NUT_AAE', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_BIOT', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_CA', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_CARNITINE', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_CASN', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_CHOCAL', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_CHOL', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_CHOLN', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_CLD', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_CR', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_CU', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_F16D0', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_F18D2CN6', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_F18D3N3', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_F20D4', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_F20D5N3', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_F22D6N3', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FAMSCIS', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FAPUCIS', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FAPULC', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FAPUN3', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FAPUN6', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FD', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FE', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FIBSOL', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FOLDFE', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FRUFB', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_G_HC', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_GALFB', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_GLUS', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_ID', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_INOTL', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_K', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_LACS', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_MALTDEX', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_MG', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_MN', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_MO', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_NIA', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_NITRA', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_NUCLEOTIDE', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_OLSAC', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_P', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_PANTAC', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_POLYL', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_RIBF', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_S6', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_SE', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_STARCH', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_SUCS', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_TAU', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_THIA', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_VITA', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_VITB12', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_VITB6', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_VITC', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_VITD', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_VITE', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_VITK', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_WHEY', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_ZN', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_AGT', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FFORMIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FACETIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FPROPIONIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FBUTYRIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FVALERIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FCAPROIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FENATIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FCAPRYLIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FPELARGONIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FCAPRIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FUNDECYLIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FLAURIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FTRIDECYLIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FMYRISTIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FPENTADECYLIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FMARGARIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FSTEARIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FNONADYLIQUE', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FARACHIDIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FHENEICOSYLIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FBEHENIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FTRICOSILIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FLIGNOCERIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FHYENIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FCEROTIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FCARBOCERIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FMONTANIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FNONACOSYLIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FMELISSIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FHENTRIACONTYLIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FLACEROIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FPSYLLIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FGEDDIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FCEROPLASTIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FHEXTRIACONTYLIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FHEPTATRIACONTYLIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FOCTATRIACONTYLIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FPALM', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FOLEIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_F11EICO', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FERUCIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FNERVONIQ', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FAPUN9', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_F18D', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_F19D', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_FRUS', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->decimal('NUT_MALS', 10, 3)->nullable()->comment('Oracle: NUMBER(10, 3)');
$table->boolean('MAT_GRASS_P_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('AGS_P_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('GLUCIDES_P_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('SUCRE_P_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('FIB_ALIM_P_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('PROTEINE_P_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('SEL_P_PREC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('COMPOSANTE_N_2022')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('COMPOSANTE_P_2022')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('POINTS_AGS')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('POINTS_ENERGIE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('POINTS_FIBRES')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('POINTS_FNL_FRAIS')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('POINTS_PROTEINES')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('POINTS_SEL')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('POINTS_SUCRES')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('SCORE_NUTRI_2022')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->decimal('FNL_FRAIS', 6, 2)->nullable()->comment('Oracle: NUMBER(6, 2)');
$table->boolean('VIANDE_ROUGE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('NUTRI_SCORE_2022', 4)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('POURCENT_FNL_FRAIS', 6, 2)->nullable()->comment('Oracle: NUMBER(6, 2)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,64 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_DOA
* Type : TABLE
* Description : Réplication miroir pour INCO_DOA
*/
final class IncoDoaTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_DOA';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_DOA du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('CLE_SEQ')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->unsignedBigInteger('NO_ART')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('ORI_BIO')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->string('PAYS_PROV', 12)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('PAYS_TRAN', 12)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->string('NE', 12)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ELEVE', 12)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ABATTU', 12)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,61 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_INTERPROFESSION
* Type : TABLE
* Description : Réplication miroir pour INCO_INTERPROFESSION
*/
final class IncoInterprofessionTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_INTERPROFESSION';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_INTERPROFESSION du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('CODE')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->text('LIBELLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->boolean('DONNEE_STAT_ARTICLE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('SIGNE_QUALITE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ALLEGATION_MKT')->nullable()->comment('Oracle: NUMBER(1, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,63 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_NEA
* Type : TABLE
* Description : Réplication miroir pour INCO_NEA
*/
final class IncoNeaTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_NEA';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_NEA du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('CLE_SEQ')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->unsignedBigInteger('NO_ART')->nullable()->comment('Oracle: NUMBER(15, 0)');
$table->string('NE', 12)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ELEVE', 12)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ABATTU', 12)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DAT_CRE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DAT_MAJ')->nullable()->comment('Oracle: DATE(0, 0)');
$table->unsignedBigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(10, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,62 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_ORIGININFO
* Type : TABLE
* Description : Réplication miroir pour INCO_ORIGININFO
*/
final class IncoOrigininfoTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_ORIGININFO';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_ORIGININFO du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->date('DAT_CRE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DAT_MAJ')->nullable()->comment('Oracle: DATE(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->unsignedBigInteger('CLE_SEQ')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->integer('NO_ART')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->unsignedBigInteger('MATIERE_PREMIERE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->text('PAYS_ORIGINE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_SIT_PROD
* Type : TABLE
* Description : Réplication miroir pour INCO_SIT_PROD
*/
final class IncoSitProdTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_SIT_PROD';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_SIT_PROD du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->integer('NO_ART')->comment('Oracle: NUMBER(9, 0) [PK]');
$table->unsignedBigInteger('COD_SITE_GRP')->comment('Oracle: NUMBER(10, 0) [PK]');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->boolean('SITE_REF_DATA_INCO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->primary(['NO_ART', 'COD_SITE_GRP']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,66 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_SUIVI_ENVOI
* Type : TABLE
* Description : Réplication miroir pour INCO_SUIVI_ENVOI
*/
final class IncoSuiviEnvoiTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_SUIVI_ENVOI';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_SUIVI_ENVOI du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('ID')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->unsignedBigInteger('ID_GESTION_ENVOI')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('ID_INCO')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->date('DATE_ENV_DEMANDE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DATE_ENV_REELLE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->string('COD_UTIL', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('MOTIF')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->text('NOM_FIC_GEN')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('ENVOI_ANO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->binary('PHOTO')->nullable()->comment('Oracle: BLOB(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,227 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO
* Type : TABLE
* Description : Réplication miroir pour INCO
*/
final class IncoTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->date('DAT_CRE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DAT_MAJ')->nullable()->comment('Oracle: DATE(0, 0)');
$table->bigInteger('NO_ART')->primary()->comment('Oracle: NUMBER(0, 0) [PK]');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->text('MENTION_COMPL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('EXPLOITANT')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->string('AGEMINI', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('POURCENT_CEREAL_MINI', 6, 3)->nullable()->comment('Oracle: NUMBER(6, 3)');
$table->unsignedBigInteger('ORG_CERTIF')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('GRPMT_QUAL')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->text('COMM_VOL_FERM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('PROD_BIO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('NUM_AGR')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DATE_LANC')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DATE_APPLI')->nullable()->comment('Oracle: DATE(0, 0)');
$table->text('CONSEIL_PREPA')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ASTUCES')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ARG_VENTE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('NB_PORTION', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('TYP_PORTION')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->decimal('PMC', 10, 4)->nullable()->comment('Oracle: NUMBER(10, 4)');
$table->text('CIBLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('COMM_MKT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('STATUT_MKT')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->string('UTIL_MKT', 36)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DATE_STATUT_MKT')->nullable()->comment('Oracle: DATE(0, 0)');
$table->smallInteger('STATUT_CMCL')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->string('UTIL_CMCL', 36)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DATE_STATUT_CMCL')->nullable()->comment('Oracle: DATE(0, 0)');
$table->smallInteger('STATUT_QUAL')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->string('UTIL_QUAL', 36)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DATE_STATUT_QUAL')->nullable()->comment('Oracle: DATE(0, 0)');
$table->text('REF_RCT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('DENOM_LEG')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LST_ING')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LST_ALLERGENE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('TRACES_RCT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('TRACES_SIT_PROD')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('COMM_COMPO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('SUIVI_MODIF')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('GRAM_ENT_MATERN', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('GRAM_PLAT_MATERN', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('GRAM_ENT_ELEM', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('GRAM_PLAT_ELEM', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('GRAM_ENT_ADO', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('GRAM_PLAT_ADO', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('FREQ_UTIL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('SIGLE_ALLERG')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ALLEGAT_SANTE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ALLEGAT_NUTRIT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ALLEGAT_AUTRE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('POIDS_MOYEN_UNI', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('TYPE_STOCK')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('IONISATION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('AGE_ABATT_MOY')->nullable()->comment('Oracle: NUMBER(7, 0)');
$table->text('ELEVAGE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CRIT_MICROBIO_J0')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('DENOM_COMM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('OGM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('RESIDU_CONTAMIN')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ALIMENTATION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CRIT_MICROBIO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CRIT_MICROBIO_DLC')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('PROD_SAISON')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->decimal('PDS_NET_UVC', 11, 3)->nullable()->comment('Oracle: NUMBER(11, 3)');
$table->decimal('PDS_BRUT_UVC', 11, 3)->nullable()->comment('Oracle: NUMBER(11, 3)');
$table->text('ORI_MAT_PREM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('PAYS_TRANSFO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('TYPE_PAL')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('ID_SERV_CONSO')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->text('ALLEGATIONS')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('NO_HOMOLOGATION', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('DESCRIPTIF')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('PMC_MINI', 10, 4)->nullable()->comment('Oracle: NUMBER(10, 4)');
$table->decimal('PMC_MAXI', 10, 4)->nullable()->comment('Oracle: NUMBER(10, 4)');
$table->text('CAP1_CARAC')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CAP2_CARAC')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CAP3_CARAC')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CAP4_CARAC')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('PMC_EURO_KG')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('PMC_EURO_UVC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('CAP1_AVANTAGE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CAP2_AVANTAGE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CAP3_AVANTAGE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CAP4_AVANTAGE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CAP1_PREUVE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CAP2_PREUVE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CAP3_PREUVE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CAP4_PREUVE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LIST_CERTIF')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LIST_COD_EMBAL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LIST_NUM_AGREMENT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('DEMARCHE_QUAL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('COMM_ORIG')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('FICHE_MERE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('ETIQ_DONNEES_INCO')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->integer('SOC_REF_INCO')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->bigInteger('COD_INCO_REF_ART')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->boolean('ACTIVE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('CALIBRE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('GRAM_ENT_AGEES')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('GRAM_PLAT_AGEES')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('GRAM_ENT_CARCERAL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('GRAM_PLAT_CARCERAL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('COMMENTAIRE_PROCESS')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('INTERPROFESSION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ALIM_ELEVAGE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('TARE_SUPPL')->nullable()->comment('Oracle: NUMBER(7, 0)');
$table->integer('REF_COMPO')->nullable()->comment('Oracle: NUMBER(8, 0)');
$table->boolean('FICH_REF_COMPO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('COMM_REF_COMPO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('COMM_TARE_SUPPL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('SANS_OGM')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('EXTRA_FRAICHEUR')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('DATE_JOUR_PONTE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('VIP')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('INNOVATION')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->date('DATE_INNOVATION')->nullable()->comment('Oracle: DATE(0, 0)');
$table->boolean('IS_TRANS_LDC_FOOD')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('ALLEGATION_MKT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('CONDI_SS_AP')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->string('BRIQUE_GPC', 32)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('NUTRI_A_ART', 4)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('COMM_NUTRI', 4)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LIBELLE_ARTICLE_INCO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CONSEIL_PREPA_1')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CONSEIL_PREPA_2')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('ART_COMM_ACTIF')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->unsignedBigInteger('VERSION')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->date('DATEVERSION')->nullable()->comment('Oracle: DATE(0, 0)');
$table->text('LST_ADDITIF')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('NB_ADDITIF_BLACKLIST')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('NB_ADDITIF_TROUVE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->text('PAYS_ORIGINE_PROV_ING1')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_CALCUL_GEMRCN')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ISNOTPLEINAIR')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ISGENETICALMODIFIED')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('AROME_ARTIF')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ANTIBIO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('COLOR_ARTIF')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('EX_GOUT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('NITRITE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('SEL_AJOUTE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('NB_PORTION_QUAL')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->decimal('VIAND_POISS', 6, 3)->nullable()->comment('Oracle: NUMBER(6, 3)');
$table->decimal('SAUCE', 6, 3)->nullable()->comment('Oracle: NUMBER(6, 3)');
$table->decimal('GARNITURE', 6, 3)->nullable()->comment('Oracle: NUMBER(6, 3)');
$table->smallInteger('NB_UVC')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->boolean('L_ALLEG_NUTRITION')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('LST_MUT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('NB_MUT_TROUVE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('NB_MUT_SHORT_LIST')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('AROME_NATUREL')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('COLORANT_NATUREL')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('NUTRISCORE_ON_PACK')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CONDIT_CONSERV')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LST_COL_DEVALID_QUAL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('UPDATE_VERSION')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('LST_ADDITIF_BLACKLISTES')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LST_MUT_SHORTLIST')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_PAM')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->decimal('AW', 6, 2)->nullable()->comment('Oracle: NUMBER(6, 2)');
$table->decimal('PH', 4, 2)->nullable()->comment('Oracle: NUMBER(4, 2)');
$table->boolean('RESIDU_PESTICIDE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('PESTICIDE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('REGLEMENTATION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('VISUEL_SUGG_PRESENTATION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CRIT_ORGANO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CRIT_PHYSICO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('AFF_DVT_FT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('LIBELLE_FACTURE_ARTICLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('IDENTIFICATION_SITE')->nullable()->comment('Oracle: NUMBER(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,63 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_VERSION
* Type : TABLE
* Description : Réplication miroir pour INCO_VERSION
*/
final class IncoVersionTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_VERSION';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INCO_VERSION du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->date('DAT_CRE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DAT_MAJ')->nullable()->comment('Oracle: DATE(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->bigInteger('NO_ART')->comment('Oracle: NUMBER(0, 0) [PK]');
$table->unsignedBigInteger('NO_VERSION')->comment('Oracle: NUMBER(10, 0) [PK]');
$table->text('COMMENTAIRE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('COD_UTIL', 36)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->primary(['NO_ART', 'NO_VERSION']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,71 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INSEE_COMMUNES
* Type : TABLE
* Description : Réplication miroir pour INSEE_COMMUNES
*/
final class InseeCommunesTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INSEE_COMMUNES';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.INSEE_COMMUNES du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->smallInteger('CODE_CDC')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->boolean('CHEF_LIEU')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('CODE_REGION')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->string('CODE_DEPARTEMENT', 16)->comment('Oracle: VARCHAR2(0, 0) [PK]');
$table->string('CODE_COMMUNE', 20)->comment('Oracle: VARCHAR2(0, 0) [PK]');
$table->smallInteger('AR')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('CT')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('TNCC')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->string('ARTMAJ', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('NCC')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ARTMIN', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('NCCENR')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('NUM_COMMUNE', 20)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->string('CANTON_VILLE', 20)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->primary(['CODE_DEPARTEMENT', 'CODE_COMMUNE']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,83 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.MARQUE
* Type : TABLE
* Description : Réplication miroir pour MARQUE
*/
final class MarqueTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'MARQUE';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.MARQUE du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('COD_MARQ')->primary()->comment('Oracle: NUMBER(0, 0) [PK]');
$table->text('LIB_MARQ')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('COD_RGPT_MARQ')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->text('COMMENTAIRE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('NO_ORDRE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('TYPE_MARQUE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('SOCIETE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->boolean('ECO_EMBALLAGE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('INDIC_TRACA_SANS_INTERNET')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('UVERSION_PUB')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->boolean('MARQUE_PROPRE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_ANALYSEPC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_BOI')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->unsignedBigInteger('GLN_SOC')->nullable()->comment('Oracle: NUMBER(13, 0)');
$table->boolean('A_EPURER')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('UTILISABLE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->date('DATE_CREATION')->nullable()->comment('Oracle: DATE(0, 0)');
$table->boolean('MARQUE_GEREE_SPEC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('NUTRISCORE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_PASSERELLE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->integer('TYPE_MARQUE_STATS')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('RGPT_STATS')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->text('COD_REF_SITE_PSRL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('PSRL_RGPT')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->boolean('IS_CHARTE_NUTRI')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_MARQ_ENGAGEE_NS')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ENVOI_MAGELLAN')->nullable()->comment('Oracle: NUMBER(1, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,62 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.MEDIA_ASSO_ARTICLE
* Type : TABLE
* Description : Réplication miroir pour MEDIA_ASSO_ARTICLE
*/
final class MediaAssoArticleTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'MEDIA_ASSO_ARTICLE';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.MEDIA_ASSO_ARTICLE du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('CODE_VISUEL')->comment('Oracle: NUMBER(10, 0) [PK]');
$table->unsignedBigInteger('NO_ART')->comment('Oracle: NUMBER(10, 0) [PK]');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->date('DATE_TRANSMIS')->nullable()->comment('Oracle: DATE(0, 0)');
$table->string('NOM_VISUEL_HD_GS1', 108)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('NOM_VISUEL_1500_1500_GS1', 108)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->primary(['CODE_VISUEL', 'NO_ART']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,63 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.MUT
* Type : TABLE
* Description : Réplication miroir pour MUT
*/
final class MutTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'MUT';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.MUT du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('ID_MUT')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->text('LIBELLE_MUT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('VARIANTE_NOM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('VARIANTE_EXCLUSION_NOM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('SHORT_LISTE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->date('DAT_CRE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DAT_MAJ')->nullable()->comment('Oracle: DATE(0, 0)');
$table->unsignedBigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(10, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,65 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.NDP
* Type : TABLE
* Description : Réplication miroir pour NDP
*/
final class NdpTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'NDP';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.NDP du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->string('COD_NDP', 100)->primary()->comment('Oracle: VARCHAR2(0, 0) [PK]');
$table->text('LIB_NDP')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->text('LIB2_NDP')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LIB3_NDP')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LIB4_NDP')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('TAUX_REST_MC', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->boolean('COD_UTE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->integer('CHAPITRE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->boolean('IS_ACTIF')->nullable()->comment('Oracle: NUMBER(1, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,63 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.ORG_CERTIF
* Type : TABLE
* Description : Réplication miroir pour ORG_CERTIF
*/
final class OrgCertifTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'ORG_CERTIF';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.ORG_CERTIF du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('ID')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->text('NOM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ADRESSE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('CP', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('VILLE', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('TELEPHONE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CONTACT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,62 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.PALETTE_INCO
* Type : TABLE
* Description : Réplication miroir pour PALETTE_INCO
*/
final class PaletteIncoTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'PALETTE_INCO';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.PALETTE_INCO du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->integer('ID')->primary()->comment('Oracle: NUMBER(5, 0) [PK]');
$table->text('LIBELLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('LONGUEUR')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('LARGEUR')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('HAUTEUR')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->decimal('POIDS', 8, 3)->nullable()->comment('Oracle: NUMBER(8, 3)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,91 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.RU_PERSONNE_SIRH
* Type : TABLE
* Description : Réplication miroir pour RU_PERSONNE_SIRH
*/
final class RuPersonneSirhTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'RU_PERSONNE_SIRH';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.RU_PERSONNE_SIRH du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->string('MATRICULE_FIC', 60)->primary()->comment('Oracle: VARCHAR2(0, 0) [PK]');
$table->string('COD_PERSONNE', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('COD_SOC_GRP')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->integer('COD_SIT_GRP')->nullable()->comment('Oracle: NUMBER(7, 0)');
$table->text('NOM_FIC')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('COD_UNITE_PROD')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->text('NOM_PERSONNE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('PRENOM_FIC')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DATE_DEB_FIC')->nullable()->comment('Oracle: DATE(0, 0)');
$table->text('PRENOM_PERSONNE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('COD_SOCIETE')->nullable()->comment('Oracle: NUMBER(25, 0)');
$table->date('DATE_FIN_FIC')->nullable()->comment('Oracle: DATE(0, 0)');
$table->string('SOC_FIC', 48)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('NUM_SERV')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->string('COD_INTRA_FIC', 60)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ETAB_FIC', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DATE_EFFET_FIC')->nullable()->comment('Oracle: DATE(0, 0)');
$table->unsignedBigInteger('COD_STATUT')->nullable()->comment('Oracle: NUMBER(12, 0)');
$table->string('SERVICE_FIC', 28)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('SITE_FIC', 60)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('TYP_CONTRAT_FIC', 60)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('STATUT_FIC', 60)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DF_CARRIERE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->string('ETABLISSEMENT', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->date('DATE_ENTREE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->string('MATRICULE_RESP_HIERAR', 60)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('SECT_ANALYTIQUE')->nullable()->comment('Oracle: NUMBER(20, 0)');
$table->boolean('MUTATION_DEP')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('MUTATION_ARR')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('SITE_PRECEDENT', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('SERVICE_PRECEDENT', 20)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->dateTime('DAT_MAJ')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->dateTime('DAT_CRE')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->boolean('SUPPRESSION_FORCEE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->date('DATE_PRESENCE_FICHIER')->nullable()->comment('Oracle: DATE(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,68 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.SERVICE_CONSO_INCO
* Type : TABLE
* Description : Réplication miroir pour SERVICE_CONSO_INCO
*/
final class ServiceConsoIncoTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'SERVICE_CONSO_INCO';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.SERVICE_CONSO_INCO du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('ID')->primary()->comment('Oracle: NUMBER(10, 0) [PK]');
$table->text('NOM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ADRESSE1')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ADRESSE2')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('CP', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('VILLE', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('TELEPHONE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('MAIL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('FAX', 120)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('MARQUE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->text('LIB')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('SITE_INT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,130 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.SITE_PROD_GRP
* Type : TABLE
* Description : Réplication miroir pour SITE_PROD_GRP
*/
final class SiteProdGrpTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'SITE_PROD_GRP';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.SITE_PROD_GRP du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('COD_SITE_GRP')->primary()->comment('Oracle: NUMBER(0, 0) [PK]');
$table->text('NOM_SITE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->string('EST_SANITAIRE', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('COD_SOCIETE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->unsignedBigInteger('COD_SITE_LOGISTIQUE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->integer('COD_CNUF')->nullable()->comment('Oracle: NUMBER(9, 0)');
$table->smallInteger('TYPE_SITE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('SAMEDI_TRAVAILLE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('TRANSM_COMM_ARCADIA')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->integer('NO_FOURNISSEUR')->nullable()->comment('Oracle: NUMBER(7, 0)');
$table->integer('COD_SERVEUR_FICHIER')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->string('COD_PERSONNE', 32)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ADRESSE_1')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ADRESSE_2')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('CODE_POSTAL', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('VILLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('TELEPHONE', 120)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('FAX', 120)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LIBELLE_COMPTABLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('CODE_DLUO_AUTO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('NBREMOISAUTODLUO')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->unsignedBigInteger('COD_LFEDI_CDE_PAR')->nullable()->comment('Oracle: NUMBER(13, 0)');
$table->unsignedBigInteger('COD_LFE_EDI_LIVRE_A')->nullable()->comment('Oracle: NUMBER(13, 0)');
$table->string('PREFIXE_INTEGCPT', 60)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('LIB_ABREG_EDI', 20)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('NUM_ORDRE_ANALYTIQUE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->boolean('IS_SITE_INV')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_SITE_CDE_PERS')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('FILIERE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('ARCADIA_KIDS')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('SITE_SOC_COSWIN', 20)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('AUTORISE_GESTPAL_AUTO')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->decimal('LATIT', 17, 7)->nullable()->comment('Oracle: NUMBER(17, 7)');
$table->decimal('LONGIT', 17, 7)->nullable()->comment('Oracle: NUMBER(17, 7)');
$table->decimal('LATIT_MERCAT', 17, 7)->nullable()->comment('Oracle: NUMBER(17, 7)');
$table->decimal('LONGIT_MERCAT', 17, 7)->nullable()->comment('Oracle: NUMBER(17, 7)');
$table->smallInteger('SIT_ANALYTIQUE')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->text('COD_EMBAL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('CERTIFICATION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('NUM_AGREMENT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('SIT_STOCK_DEPORT')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->string('ZV_PLATEF', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_GEST_SIT_ANA_ARTSITE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_SIT_ACH_MP')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('SYNCHRO_SAV')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('CODE_INSEE', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('SITPRODGRP_QUALITE_GEO')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('COD_SOC_REG_CTRL')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->boolean('ART_GEST_ROUTAGES')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ABATTOIR_GRP')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('POLE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('SRDI')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_SITE_PRIMAIRE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->date('DATE_AGREMENT')->nullable()->comment('Oracle: DATE(0, 0)');
$table->boolean('SITE_GERE_SPEC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('COD_PAYS', 20)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('NB_JOURS_REPETITION_PROMO')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('NB_JOURS_ALERTE_PROMO')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->text('MAILS_ALERTE_PROMO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('SITE_PHYSIQUE')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->boolean('EXPORT_LISTE_PERSONNEL')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('UTILISABLE_VENUS')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('INTERFACE_CANOP')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->integer('NV_NO_FOURNISSEUR')->nullable()->comment('Oracle: NUMBER(7, 0)');
$table->date('DATE_NV_FOURNISSEUR')->nullable()->comment('Oracle: DATE(0, 0)');
$table->string('NUM_SIRET', 56)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('STOCKEUR_INTERNE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ACTIF')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->date('DATE_INACTIVATION')->nullable()->comment('Oracle: DATE(0, 0)');
$table->dateTime('DAT_MAJ')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->dateTime('DAT_CRE')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->smallInteger('IS_FABRICATION')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('SITE_STOCKAGE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ENV_FM')->nullable()->comment('Oracle: NUMBER(1, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,124 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.SOCIETE_INV
* Type : TABLE
* Description : Réplication miroir pour SOCIETE_INV
*/
final class SocieteInvTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'SOCIETE_INV';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.SOCIETE_INV du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('ID_SOCIETE')->primary()->comment('Oracle: NUMBER(0, 0) [PK]');
$table->bigInteger('ID_POLE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->text('NOM_SOCIETE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ADRESSE_1')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ADRESSE_2')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('CP', 28)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('VILLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('TEL', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('MAIL')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('GEST_INVEST')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->bigInteger('SUIVI_KIDS')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->string('CODE_INTRAGROUPE', 32)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->binary('LOGO_A')->nullable()->comment('Oracle: BLOB(0, 0)');
$table->binary('LOGO_B')->nullable()->comment('Oracle: BLOB(0, 0)');
$table->text('INFO_LOGO_A')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('INFO_LOGO_B')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('FAX', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_ACTIVE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('POLE_GEOGRAPHIQUE', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('POLE_COMMERCIAL', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('RESEAU', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('POLE_ACTIVITE', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('COD_PAYS', 20)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('TYP_FACTURANTE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('COD_SOC_FAC')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->integer('SIT_PREP_PRINCIPAL')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->string('ID_TVA', 100)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('CAPITAL', 20, 6)->nullable()->comment('Oracle: NUMBER(20, 6)');
$table->string('NUM_SIRET', 100)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->decimal('LONGITUDE', 11, 6)->nullable()->comment('Oracle: NUMBER(11, 6)');
$table->decimal('LATITUDE', 11, 6)->nullable()->comment('Oracle: NUMBER(11, 6)');
$table->decimal('LONG_MERCATOR', 20, 6)->nullable()->comment('Oracle: NUMBER(20, 6)');
$table->decimal('LAT_MERCATOR', 20, 6)->nullable()->comment('Oracle: NUMBER(20, 6)');
$table->smallInteger('QUALITE_GEO')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->string('CODE_INSEE', 20)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('ETAT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('ECLAT_BL')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('REGATE_COMMUN')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('COD_POLE_COMMIS')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->text('COD_POLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->dateTime('DATE_CREATION')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->dateTime('DATE_FERMETURE')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->dateTime('DATE_ENTREE_CONSO')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->dateTime('DATE_SORTIE_CONSO')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
$table->unsignedBigInteger('GLN')->nullable()->comment('Oracle: NUMBER(15, 0)');
$table->bigInteger('PREMIER_MOIS_COMPTABLE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->date('DAT_CRE')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DAT_MAJ')->nullable()->comment('Oracle: DATE(0, 0)');
$table->text('MAIL_ALERTE_INFO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('ID_CHEF_INFORMATIQUE', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('ID_ZONE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->unsignedBigInteger('NBR_TOTAL_ACTIONS')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('NBR_ACTION_DETENUES')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->boolean('METHODE_CONSOLIDATION')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('APP_AU_GROUPE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('DEVISE_SOC', 12)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('INTEG_NUM_SIRET', 36)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ENREG_REG_COMM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('FORM_JURIDIQUE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->text('RCS')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('DAT_CLOTURE', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('DENOM_JURIDIQUE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('SITE_PROD_AUTO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('ACTIVE_STAT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_UTIL_CLIENT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('IS_TVA_DEBIT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('ENTETE_FAC_SOC')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('GLN_GDSN', 64)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,63 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.SOUS_FAM
* Type : TABLE
* Description : Réplication miroir pour SOUS_FAM
*/
final class SousFamTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'SOUS_FAM';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.SOUS_FAM du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('COD_SOUSFAM')->primary()->comment('Oracle: NUMBER(0, 0) [PK]');
$table->text('LIB_SOUSFAM')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('NO_ORDRE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->boolean('UTILISABLE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('A_EPURER')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('NON_UTILISABLE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->unsignedBigInteger('COD_RGPT_SOUS_FAM')->nullable()->comment('Oracle: NUMBER(10, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,65 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.TYP_EMB
* Type : TABLE
* Description : Réplication miroir pour TYP_EMB
*/
final class TypEmbTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'TYP_EMB';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.TYP_EMB du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->smallInteger('CODE')->primary()->comment('Oracle: NUMBER(3, 0) [PK]');
$table->text('LIBELLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('COMMENTAIRE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('UTILISABLE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('CODE_CONDIT')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->integer('UVERSION')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->boolean('VRAC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('TYPE_EMBALLAGE_GENFI', 40)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('TRIMAN_L1')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('TRIMAN_L2')->nullable()->comment('Oracle: NUMBER(10, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.TYPE_CONDIT
* Type : TABLE
* Description : Réplication miroir pour TYPE_CONDIT
*/
final class TypeConditTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'TYPE_CONDIT';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.TYPE_CONDIT du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('COD_CONDIT')->primary()->comment('Oracle: NUMBER(0, 0) [PK]');
$table->text('LIB_CONDIT')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->boolean('VRAC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('LIB_INCO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,65 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.TYPE_CONSERVATION
* Type : TABLE
* Description : Réplication miroir pour TYPE_CONSERVATION
*/
final class TypeConservationTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'TYPE_CONSERVATION';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.TYPE_CONSERVATION du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('COD_CONSERVATION')->primary()->comment('Oracle: NUMBER(0, 0) [PK]');
$table->text('LIB_CONSERVATION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('FAM_CONSERVATION')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('TYPE_PROD_ESPADON')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->text('LIB_STD_ETIQUETTE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('LIB_INCO')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('STOREHANDTMPMINI')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('STOREHANDTMPMAXI')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('COD_TYPE_TEMP')->nullable()->comment('Oracle: NUMBER(2, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,59 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Tables\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.UTILISABLE
* Type : TABLE
* Description : Réplication miroir pour UTILISABLE
*/
final class UtilisableTable implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'UTILISABLE';
}
public static function isView(): bool
{
return false;
}
public static function description(): string
{
return 'Objet miroir TABLE REFP.UTILISABLE du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('COD_UTILISABLE')->primary()->comment('Oracle: NUMBER(0, 0) [PK]');
$table->text('LIB_UTILISABLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('ETAT_UTIL')->nullable()->comment('Oracle: NUMBER(4, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,82 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Views\Gcp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : GCP.DUN_INCO_INF
* Type : VIEW
* Description : Réplication miroir pour DUN_INCO_INF
*/
final class DunIncoInfView implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'GCP';
}
public static function name(): string
{
return 'DUN_INCO_INF';
}
public static function isView(): bool
{
return true;
}
public static function description(): string
{
return 'Objet miroir VIEW GCP.DUN_INCO_INF du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('NO_ART')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_PCB')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_SOCIETE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->integer('LONGUEUR_PAL')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('LARGEUR_PAL')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->bigInteger('HAUTEUR_PAL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('TARE_PAL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('NB_COUCHE_PALETTE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('NB_COLIS_COUCHE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->bigInteger('NB_COLIS_PALETTE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('NB_UVC_PALETTE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('HAUTEUR_PAL_CHARG')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_NET_PAL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_BRUT_PAL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_BRUT_PAL_SUPPL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('HAUTEUR_PAL_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('NB_COUCHE_PALETTE_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('NB_COLIS_COUCHE_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('NB_COLIS_PALETTE_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('NB_UVC_PALETTE_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('HAUTEUR_PAL_CHARG_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_NET_PAL_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_BRUT_PAL_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->boolean('IS_STANDARD')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('DUN14')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('DUN_PALETTE', 56)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Views\Gcp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : GCP.INCO_LANG
* Type : VIEW
* Description : Réplication miroir pour INCO_LANG
*/
final class IncoLangView implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'GCP';
}
public static function name(): string
{
return 'INCO_LANG';
}
public static function isView(): bool
{
return true;
}
public static function description(): string
{
return 'Objet miroir VIEW GCP.INCO_LANG du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('NO_ART')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_LANG')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('IS_TRAD')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->dateTime('DAT_MAJ')->nullable()->comment('Oracle: TIMESTAMP(6)(6, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,63 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Views\Gcp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : GCP.V_INCO_ART_SITE
* Type : VIEW
* Description : Réplication miroir pour V_INCO_ART_SITE
*/
final class VIncoArtSiteView implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'GCP';
}
public static function name(): string
{
return 'V_INCO_ART_SITE';
}
public static function isView(): bool
{
return true;
}
public static function description(): string
{
return 'Objet miroir VIEW GCP.V_INCO_ART_SITE du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->unsignedBigInteger('ID_SOCIETE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('NO_ART')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->smallInteger('NIVEAU')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->unsignedBigInteger('COD_SITE_GRP')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->date('DATE_DEBUT_EFFET')->nullable()->comment('Oracle: DATE(0, 0)');
$table->date('DATE_FIN_EFFET')->nullable()->comment('Oracle: DATE(0, 0)');
$table->smallInteger('COD_ATELIER')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,64 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Views\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.ARTICLE_REF_GENCOD
* Type : VIEW
* Description : Réplication miroir pour ARTICLE_REF_GENCOD
*/
final class ArticleRefGencodView implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'ARTICLE_REF_GENCOD';
}
public static function isView(): bool
{
return true;
}
public static function description(): string
{
return 'Objet miroir VIEW REFP.ARTICLE_REF_GENCOD du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('NO_ART')->comment('Oracle: NUMBER(0, 0) [PK]');
$table->string('LIB_CCIAL', 140)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('GENCOD_POIDS_PRIV', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('GENCOD_ADMIN_PRIV', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('GENCOD_SYMB_PRIV', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('SOCIETE')->comment('Oracle: NUMBER(0, 0) [PK]');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->text('COM_FACTURATION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->primary(['NO_ART', 'SOCIETE']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,93 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Views\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.DUN_INCO_NOSOC
* Type : VIEW
* Description : Réplication miroir pour DUN_INCO_NOSOC
*/
final class DunIncoNosocView implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'DUN_INCO_NOSOC';
}
public static function isView(): bool
{
return true;
}
public static function description(): string
{
return 'Objet miroir VIEW REFP.DUN_INCO_NOSOC du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('NO_ART')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->text('DUN14')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('DUN_PALETTE', 56)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_STANDARD')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('TYPE_CARTON')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('SOCIETE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->decimal('LONGUEUR_COL', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('LARGEUR_COL', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('HAUTEUR_COL', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->bigInteger('PDS_NET_COL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('TARE_COL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_BRUT_COL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->integer('LONGUEUR_PAL')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('LARGEUR_PAL')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->decimal('HAUTEUR_PAL', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->bigInteger('TARE_PAL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_NET_PAL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_BRUT_PAL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('NB_COLIS_COUCHE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('NB_COUCHE_PALETTE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->integer('NB_COLIS_PALETTE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->bigInteger('NB_UVC_PALETTE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('HAUTEUR_PAL_CHARG')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_PCB')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('IS_SOC_SRDI')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('FICHE_MERE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_MARQUE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->unsignedBigInteger('VERSION')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->boolean('ACTIVE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('COD_GENCOD_ADM', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('COD_GENCOD_SYMB', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('COD_GENCOD_POIDS', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('EXPLOITANT')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('COD_FAMVTE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->bigInteger('COD_SOUSFAM')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->unsignedBigInteger('SITE_REF_INCO')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->bigInteger('SOC_REF_INCO')->nullable()->comment('Oracle: NUMBER(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,91 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Views\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.DUN_INCO
* Type : VIEW
* Description : Réplication miroir pour DUN_INCO
*/
final class DunIncoView implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'DUN_INCO';
}
public static function isView(): bool
{
return true;
}
public static function description(): string
{
return 'Objet miroir VIEW REFP.DUN_INCO du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('NO_ART')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->text('DUN14')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('DUN_PALETTE', 56)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_STANDARD')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('TYPE_CARTON')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_SOCIETE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->decimal('LONGUEUR_COL', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('LARGEUR_COL', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('HAUTEUR_COL', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->bigInteger('PDS_NET_COL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('TARE_COL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_BRUT_COL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->integer('LONGUEUR_PAL')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('LARGEUR_PAL')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->decimal('HAUTEUR_PAL', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->bigInteger('TARE_PAL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_NET_PAL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_BRUT_PAL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('NB_COLIS_COUCHE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('NB_COUCHE_PALETTE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->integer('NB_COLIS_PALETTE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->bigInteger('NB_UVC_PALETTE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('HAUTEUR_PAL_CHARG')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_PCB')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_BRUT_COL_SUPPL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('PDS_BRUT_PAL_SUPPL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('NB_COLIS_COUCHE_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('NB_COUCHE_PALETTE_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('NB_COLIS_PALETTE_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->integer('HAUTEUR_PAL_VIDE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->bigInteger('TARE_COL_SUPPL')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('HAUTEUR_PAL_CHARG_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('HAUTEUR_PAL_DUN')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->unsignedBigInteger('CONTENANT_INCO')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->bigInteger('SOC_REF_INCO')->nullable()->comment('Oracle: NUMBER(0, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,115 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Views\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.EPURER_FAM_VENTE
* Type : VIEW
* Description : Réplication miroir pour EPURER_FAM_VENTE
*/
final class EpurerFamVenteView implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'EPURER_FAM_VENTE';
}
public static function isView(): bool
{
return true;
}
public static function description(): string
{
return 'Objet miroir VIEW REFP.EPURER_FAM_VENTE du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('COD_FAMVTE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->text('LIB_FAMVTE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('COD_FAMGEST')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->integer('NO_ORDRE')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->smallInteger('TOT')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->boolean('EXCLUSION_STAT')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('COD_FAMRGPT')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->boolean('EXCLU_TRANSP')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('COD_FAMCOMPTA')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->text('COMMENTAIRE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('COD_TVA')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->decimal('COD_CONTRIBUTION', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->text('TEXTE_CMP')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('CODE_TAXE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->string('COD_FAMECOEMB', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_MIXTE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->string('COMPTE_COMPTA', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('SECT_ANA_SITE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('SECT_ANA_INTERFILIALE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->string('COMPTE_COMPTA_SOCEXPORT', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('PREFIXE_ANA_VENTE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->boolean('IS_PRESTATION')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('NIVEAU_STATS')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->boolean('UTILISABLE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('CHARTE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->text('OPA_CONCERNEES')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('SOUCHE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ORIGINE_VOLAILLE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('AGE_ABATTAGE_MOYEN')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('DENSITE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('OBJECTIF_POIDS')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ALIMENTATION')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->text('ELEVAGE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('CONTROLE_FILIERE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->unsignedBigInteger('REF_FICHE_RD')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->string('REF_PREP_VIANDE', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('REF_FICHE_FABRICATION', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('A_EPURER')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('POLE_ACTIVITE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->unsignedBigInteger('SEC_ANA_OEUF')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('SECT_ANA_SITE_TRT')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->unsignedBigInteger('SECT_ANA_INTERFILIALE_TRT')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->string('COMPTE_COMPTA_TRT', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('COMPTE_COMPTA_SOCEXPORT_TRT', 24)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('COD_FAMCOMPTA_TRT')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->integer('FAM_COMPTA_ACH_TRT')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->integer('FAM_COMPTA_ACH_VOL')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->integer('FAM_COMPTA_VTE_TRT')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->integer('FAM_COMPTA_VTE_VOL')->nullable()->comment('Oracle: NUMBER(6, 0)');
$table->boolean('CARAC_ELEVAGE')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->boolean('CONSEILS_CONSO_CUIT_A_COEUR')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->integer('TAXE_CVO')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->text('NOM_FONCT_INCO_ART')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->integer('COD_TAXE_SIO')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->integer('COD_SFAMILLE_COMM')->nullable()->comment('Oracle: NUMBER(5, 0)');
$table->boolean('MENTION_A_AFFICHER')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->smallInteger('IS_NOTION_FRAIS')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('REGROUP_SS_TOT')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->boolean('IS_PRESTA_SERVICE')->nullable()->comment('Oracle: NUMBER(1, 0)');
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

View file

@ -0,0 +1,91 @@
<?php
declare(strict_types=1);
namespace Database\ArcadiaReplicate\Views\Refp;
use Database\ArcadiaReplicate\IdentifiesTableOrView;
use Database\ArcadiaReplicate\TableOrView;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Schema\Builder;
/**
* Schéma Oracle : REFP.INCO_ARTICLE
* Type : VIEW
* Description : Réplication miroir pour INCO_ARTICLE
*/
final class IncoArticleView implements TableOrView
{
use IdentifiesTableOrView;
public static function schemaName(): string
{
return 'REFP';
}
public static function name(): string
{
return 'INCO_ARTICLE';
}
public static function isView(): bool
{
return true;
}
public static function description(): string
{
return 'Objet miroir VIEW REFP.INCO_ARTICLE du métamodèle Arcadia.';
}
public static function up(Builder $schema): void
{
if (app()->environment('local', 'testing')) {
$schema->dropIfExists(self::table($schema->getConnection()));
}
$schema->create(self::table($schema->getConnection()), function (Blueprint $table): void {
$table->bigInteger('NO_ART')->comment('Oracle: NUMBER(0, 0) [PK]');
$table->string('LIB_CCIAL', 140)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('COD_SOC_IA')->comment('Oracle: NUMBER(0, 0) [PK]');
$table->smallInteger('DLC_CCIAL')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('DTS')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('DUREE_VIE')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->string('ORI_PROD_INCO', 80)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('TARE_PRIVE')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->decimal('POIDS_MINI', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('POIDS_MAXI', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->bigInteger('UVERSION')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->decimal('POIDS_MOY_CALCULE', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('LONGUEUR_PRODUIT', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('LARGUEUR_PRODUIT', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->decimal('HAUTEUR_PRODUIT', 16, 6)->nullable()->comment('Oracle: NUMBER(16, 6)');
$table->bigInteger('POIDS_MOY_UNI')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_TYP_CONDIT_PUB')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->string('COD_NDP', 100)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->smallInteger('COD_FAMVTE')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->string('COD_GENCOD_ADM', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->string('COD_GENCOD_SYMB', 52)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->boolean('IS_HALLAL')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->text('LIB_CAISSE')->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->bigInteger('COD_MARQUE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->boolean('COD_POID_CST_UVC')->nullable()->comment('Oracle: NUMBER(1, 0)');
$table->bigInteger('COD_SOUSFAM')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('FRAIS_CONGELE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->smallInteger('UTILISABLE_GROUPE')->nullable()->comment('Oracle: NUMBER(2, 0)');
$table->string('LIB_COMPOSTAGE', 120)->nullable()->comment('Oracle: VARCHAR2(0, 0)');
$table->unsignedBigInteger('SITE_REF_INCO')->nullable()->comment('Oracle: NUMBER(10, 0)');
$table->bigInteger('COD_ART_ASSO_COMP')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->bigInteger('COD_ART_ASSOCIE')->nullable()->comment('Oracle: NUMBER(0, 0)');
$table->smallInteger('DLC_RM')->nullable()->comment('Oracle: NUMBER(4, 0)');
$table->smallInteger('TYPE_PRODUCTION')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->smallInteger('CALIBRE_OEUFS')->nullable()->comment('Oracle: NUMBER(3, 0)');
$table->primary(['NO_ART', 'COD_SOC_IA']);
});
}
public static function down(Builder $schema): void
{
$schema->dropIfExists(self::table($schema->getConnection()));
}
}

Some files were not shown because too many files have changed in this diff Show more