ldc-arcadia-api/database/seeders/ArcadiaReplicateSeeder.php

507 lines
25 KiB
PHP

<?php
declare(strict_types=1);
namespace Database\Seeders;
use Database\ArcadiaReplicate\Factories\Metap\MetaUtilFactory;
use Database\ArcadiaReplicate\Factories\Refp\AdditifFactory;
use Database\ArcadiaReplicate\Factories\Refp\ArticleRefFactory;
use Database\ArcadiaReplicate\Factories\Refp\FamVenteFactory;
use Database\ArcadiaReplicate\Factories\Refp\IncoAllegationsFactory;
use Database\ArcadiaReplicate\Factories\Refp\IncoAllergeneFactory;
use Database\ArcadiaReplicate\Factories\Refp\IncoCompoFactory;
use Database\ArcadiaReplicate\Factories\Refp\IncoFactory;
use Database\ArcadiaReplicate\Factories\Refp\MarqueFactory;
use Database\ArcadiaReplicate\Factories\Refp\RuPersonneSirhFactory;
use Database\ArcadiaReplicate\Factories\Refp\ServiceConsoIncoFactory;
use Illuminate\Database\Seeder;
final class ArcadiaReplicateSeeder extends Seeder
{
/**
* Seed the replicated Arcadia Oracle meta-model database.
*/
public function run(): void
{
$this->seedMetaUtil();
$this->seedSirh();
$this->seedMarques();
$this->seedFamVente();
$this->seedAdditifs();
$this->seedAllergenesAndAllegations();
$this->seedServicesConso();
$this->seedIncoAndCompo();
}
private function seedMetaUtil(): void
{
$users = [
['COD_UTIL' => 'RA0706430', 'LIB_UTIL' => 'Responsable Qualité Groupe', 'EMAIL' => 'qualite@ldc.fr', 'GROUPE' => 65],
['COD_UTIL' => 'BM6501226', 'LIB_UTIL' => 'Chef de Produit Marketing', 'EMAIL' => 'marketing@ldc.fr', 'GROUPE' => 2],
['COD_UTIL' => 'SB6501847', 'LIB_UTIL' => 'Responsable Commercial GMS', 'EMAIL' => 'commercial@ldc.fr', 'GROUPE' => 1],
['COD_UTIL' => 'ME0101979', 'LIB_UTIL' => 'Administrateur SI Référentiels', 'EMAIL' => 'admin.si@ldc.fr', 'GROUPE' => 0],
['COD_UTIL' => 'SG6501248', 'LIB_UTIL' => 'Ingénieur R&D Nutrition', 'EMAIL' => 'rd.nutrition@ldc.fr', 'GROUPE' => 1],
['COD_UTIL' => 'JL7201944', 'LIB_UTIL' => 'Auditeur Réglementaire INCO', 'EMAIL' => 'audit.reg@ldc.fr', 'GROUPE' => 65],
];
foreach ($users as $user) {
if (! MetaUtilFactory::query()->where('COD_UTIL', $user['COD_UTIL'])->exists()) {
MetaUtilFactory::new()->create($user);
}
}
}
private function seedSirh(): void
{
$employees = [
// Salarié historique de référence pour Bruno & tests API
[
'MATRICULE_FIC' => '01155902',
'COD_PERSONNE' => '01155902',
'NOM_FIC' => 'DOE',
'NOM_PERSONNE' => 'DOE',
'PRENOM_FIC' => 'John',
'PRENOM_PERSONNE' => 'John',
'SITE_FIC' => 'LDCSER',
'ETAB_FIC' => '01',
'ETABLISSEMENT' => '01',
'STATUT_FIC' => 'CAD',
'SERVICE_FIC' => '097',
'DATE_DEB_FIC' => '2024-01-15',
'DATE_ENTREE' => '2024-01-15',
'DATE_FIN_FIC' => null,
'DF_CARRIERE' => null,
],
[
'MATRICULE_FIC' => '1234567',
'COD_PERSONNE' => '1234567',
'NOM_FIC' => 'MARTIN',
'NOM_PERSONNE' => 'MARTIN',
'PRENOM_FIC' => 'Alice',
'PRENOM_PERSONNE' => 'Alice',
'SITE_FIC' => 'LDCSER',
'ETAB_FIC' => 'LY',
'ETABLISSEMENT' => 'LY',
'STATUT_FIC' => 'CAD',
'SERVICE_FIC' => '101',
'DATE_DEB_FIC' => '2024-01-08',
'DATE_ENTREE' => '2024-01-08',
'DATE_FIN_FIC' => null,
'DF_CARRIERE' => null,
],
[
'MATRICULE_FIC' => '2345678',
'COD_PERSONNE' => '2345678',
'NOM_FIC' => 'DUPONT',
'NOM_PERSONNE' => 'DUPONT',
'PRENOM_FIC' => 'Louis',
'PRENOM_PERSONNE' => 'Louis',
'SITE_FIC' => 'SLELA',
'ETAB_FIC' => 'PA',
'ETABLISSEMENT' => 'PA',
'STATUT_FIC' => 'AMT',
'SERVICE_FIC' => '097',
'DATE_DEB_FIC' => '2023-05-15',
'DATE_ENTREE' => '2023-05-15',
'DATE_FIN_FIC' => null,
'DF_CARRIERE' => '2026-12-31',
],
[
'MATRICULE_FIC' => '3456789',
'COD_PERSONNE' => '3456789',
'NOM_FIC' => 'BERNARD',
'NOM_PERSONNE' => 'BERNARD',
'PRENOM_FIC' => 'Nora',
'PRENOM_PERSONNE' => 'Nora',
'SITE_FIC' => 'DDE',
'ETAB_FIC' => 'BO',
'ETABLISSEMENT' => 'BO',
'STATUT_FIC' => 'OUV',
'SERVICE_FIC' => '205',
'DATE_DEB_FIC' => '2022-09-01',
'DATE_ENTREE' => '2022-09-01',
'DATE_FIN_FIC' => null,
'DF_CARRIERE' => null,
],
[
'MATRICULE_FIC' => '4300710',
'COD_PERSONNE' => '4300710',
'NOM_FIC' => 'GARCIA',
'NOM_PERSONNE' => 'GARCIA',
'PRENOM_FIC' => 'Manuel',
'PRENOM_PERSONNE' => 'Manuel',
'SITE_FIC' => 'AVIGNO',
'ETAB_FIC' => 'ET29A',
'ETABLISSEMENT' => 'ET29A',
'STATUT_FIC' => 'OUV',
'SERVICE_FIC' => '25',
'DATE_DEB_FIC' => '2020-03-01',
'DATE_ENTREE' => '2020-03-01',
'DATE_FIN_FIC' => null,
'DF_CARRIERE' => null,
],
[
'MATRICULE_FIC' => '5000920',
'COD_PERSONNE' => '5000920',
'NOM_FIC' => 'LEFEBVRE',
'NOM_PERSONNE' => 'LEFEBVRE',
'PRENOM_FIC' => 'Claire',
'PRENOM_PERSONNE' => 'Claire',
'SITE_FIC' => 'SNVSER',
'ETAB_FIC' => 'ET11G',
'ETABLISSEMENT' => 'ET11G',
'STATUT_FIC' => 'AMT',
'SERVICE_FIC' => '13',
'DATE_DEB_FIC' => '2019-11-15',
'DATE_ENTREE' => '2019-11-15',
'DATE_FIN_FIC' => null,
'DF_CARRIERE' => null,
],
[
'MATRICULE_FIC' => '3900757',
'COD_PERSONNE' => '3900757',
'NOM_FIC' => 'MOREAU',
'NOM_PERSONNE' => 'MOREAU',
'PRENOM_FIC' => 'Julien',
'PRENOM_PERSONNE' => 'Julien',
'SITE_FIC' => 'EPC',
'ETAB_FIC' => 'ET15',
'ETABLISSEMENT' => 'ET15',
'STATUT_FIC' => 'AMT',
'SERVICE_FIC' => '16',
'DATE_DEB_FIC' => '2021-06-01',
'DATE_ENTREE' => '2021-06-01',
'DATE_FIN_FIC' => null,
'DF_CARRIERE' => null,
],
[
'MATRICULE_FIC' => '0109873',
'COD_PERSONNE' => '0109873',
'NOM_FIC' => 'PETIT',
'NOM_PERSONNE' => 'PETIT',
'PRENOM_FIC' => 'Thomas',
'PRENOM_PERSONNE' => 'Thomas',
'SITE_FIC' => 'LDCVOL',
'ETAB_FIC' => 'ET50',
'ETABLISSEMENT' => 'ET50',
'STATUT_FIC' => 'CAD',
'SERVICE_FIC' => '25',
'DATE_DEB_FIC' => '2018-04-10',
'DATE_ENTREE' => '2018-04-10',
'DATE_FIN_FIC' => null,
'DF_CARRIERE' => null,
],
[
'MATRICULE_FIC' => '4911791',
'COD_PERSONNE' => '4911791',
'NOM_FIC' => 'ROUX',
'NOM_PERSONNE' => 'ROUX',
'PRENOM_FIC' => 'Sophie',
'PRENOM_PERSONNE' => 'Sophie',
'SITE_FIC' => 'SNVVOL',
'ETAB_FIC' => 'ET11E',
'ETABLISSEMENT' => 'ET11E',
'STATUT_FIC' => 'OUV',
'SERVICE_FIC' => '11',
'DATE_DEB_FIC' => '2022-01-10',
'DATE_ENTREE' => '2022-01-10',
'DATE_FIN_FIC' => null,
'DF_CARRIERE' => null,
],
[
'MATRICULE_FIC' => '0812345',
'COD_PERSONNE' => '0812345',
'NOM_FIC' => 'DAVID',
'NOM_PERSONNE' => 'DAVID',
'PRENOM_FIC' => 'Camille',
'PRENOM_PERSONNE' => 'Camille',
'SITE_FIC' => 'LDCSER',
'ETAB_FIC' => '01',
'ETABLISSEMENT' => '01',
'STATUT_FIC' => 'CAD',
'SERVICE_FIC' => '097',
'DATE_DEB_FIC' => '2015-09-01',
'DATE_ENTREE' => '2015-09-01',
'DATE_FIN_FIC' => '2025-06-30',
'DF_CARRIERE' => '2025-06-30',
],
[
'MATRICULE_FIC' => '0923456',
'COD_PERSONNE' => '0923456',
'NOM_FIC' => 'BERTRAND',
'NOM_PERSONNE' => 'BERTRAND',
'PRENOM_FIC' => 'Hugo',
'PRENOM_PERSONNE' => 'Hugo',
'SITE_FIC' => 'SLELA',
'ETAB_FIC' => 'PA',
'ETABLISSEMENT' => 'PA',
'STATUT_FIC' => 'OUV',
'SERVICE_FIC' => '097',
'DATE_DEB_FIC' => '2023-10-01',
'DATE_ENTREE' => '2023-10-01',
'DATE_FIN_FIC' => null,
'DF_CARRIERE' => null,
],
[
'MATRICULE_FIC' => '0734567',
'COD_PERSONNE' => '0734567',
'NOM_FIC' => 'FOURNIER',
'NOM_PERSONNE' => 'FOURNIER',
'PRENOM_FIC' => 'Émilie',
'PRENOM_PERSONNE' => 'Émilie',
'SITE_FIC' => 'AVIGNO',
'ETAB_FIC' => 'ET29A',
'ETABLISSEMENT' => 'ET29A',
'STATUT_FIC' => 'AMT',
'SERVICE_FIC' => '25',
'DATE_DEB_FIC' => '2021-02-15',
'DATE_ENTREE' => '2021-02-15',
'DATE_FIN_FIC' => null,
'DF_CARRIERE' => null,
],
];
foreach ($employees as $emp) {
if (! RuPersonneSirhFactory::query()->where('MATRICULE_FIC', $emp['MATRICULE_FIC'])->exists()) {
RuPersonneSirhFactory::new()->create($emp);
}
}
}
private function seedMarques(): void
{
$marques = [
['COD_MARQ' => 1, 'LIB_MARQ' => 'LE GAULOIS', 'COMMENTAIRE' => 'Marque Le Gaulois (Volailles & Panés)'],
['COD_MARQ' => 2, 'LIB_MARQ' => 'MAITRE COQ', 'COMMENTAIRE' => 'Marque Maître CoQ (Volailles & Élaborés)'],
['COD_MARQ' => 3, 'LIB_MARQ' => 'LOUE', 'COMMENTAIRE' => 'Fermiers de Loué Label Rouge'],
['COD_MARQ' => 4, 'LIB_MARQ' => 'MARIE', 'COMMENTAIRE' => 'Plats cuisinés frais & surgelés Marie'],
['COD_MARQ' => 5, 'LIB_MARQ' => "TRADITION D'ASIE", 'COMMENTAIRE' => 'Spécialités traiteur asiatiques'],
['COD_MARQ' => 6, 'LIB_MARQ' => 'REGHALAL', 'COMMENTAIRE' => 'Gamme certifiée Halal'],
['COD_MARQ' => 7, 'LIB_MARQ' => 'POPROSTU', 'COMMENTAIRE' => 'Marque MDD pour la Pologne'],
['COD_MARQ' => 8, 'LIB_MARQ' => 'LA MAISON DE MAURICE', 'COMMENTAIRE' => 'Marque distributeur Export'],
['COD_MARQ' => 9, 'LIB_MARQ' => 'ALPEKER', 'COMMENTAIRE' => 'Marque Export Italie'],
['COD_MARQ' => 10, 'LIB_MARQ' => 'AQUILA', 'COMMENTAIRE' => 'Marque Export Hongrie'],
['COD_MARQ' => 11, 'LIB_MARQ' => 'POUCE AUCHAN', 'COMMENTAIRE' => 'Marque premier prix Auchan'],
['COD_MARQ' => 12, 'LIB_MARQ' => 'CARREFOUR SIMPL', 'COMMENTAIRE' => 'Marque premier prix Carrefour'],
['COD_MARQ' => 246, 'LIB_MARQ' => 'LE GAULOIS (LEGACY)', 'COMMENTAIRE' => 'Code historique 246 Le Gaulois'],
['COD_MARQ' => 466, 'LIB_MARQ' => 'LOUE (LEGACY)', 'COMMENTAIRE' => 'Code historique 466 Loué'],
['COD_MARQ' => 565, 'LIB_MARQ' => 'MARIE (LEGACY)', 'COMMENTAIRE' => 'Code historique 565 Marie'],
];
foreach ($marques as $marque) {
if (! MarqueFactory::query()->where('COD_MARQ', $marque['COD_MARQ'])->exists()) {
MarqueFactory::new()->create($marque);
}
}
}
private function seedFamVente(): void
{
$familles = [
['COD_FAMVTE' => 406, 'LIB_FAMVTE' => 'FOURNITURES EXPEDITION'],
['COD_FAMVTE' => 31, 'LIB_FAMVTE' => 'PRODUITS CUITS & PANES'],
['COD_FAMVTE' => 94, 'LIB_FAMVTE' => 'DCPE POULET NOIR'],
['COD_FAMVTE' => 306, 'LIB_FAMVTE' => 'OIE & CANARD LOUE'],
['COD_FAMVTE' => 319, 'LIB_FAMVTE' => 'DCPE CANARD GRAS ELABORE'],
['COD_FAMVTE' => 120, 'LIB_FAMVTE' => 'PLATS CUISINES FRAIS'],
['COD_FAMVTE' => 135, 'LIB_FAMVTE' => 'TRAITEUR ASIATIQUE'],
['COD_FAMVTE' => 150, 'LIB_FAMVTE' => 'CHARCUTERIE DE VOLAILLE'],
['COD_FAMVTE' => 216, 'LIB_FAMVTE' => 'PANES DU VOLAILLER <=400G'],
['COD_FAMVTE' => 99, 'LIB_FAMVTE' => 'ABATS & FOIES'],
];
foreach ($familles as $fam) {
if (! FamVenteFactory::query()->where('COD_FAMVTE', $fam['COD_FAMVTE'])->exists()) {
FamVenteFactory::new()->create($fam);
}
}
}
private function seedAdditifs(): void
{
$additifs = [
['COD_EUROPEEN' => 'E250', 'MOLECULE' => 'Nitrite de sodium', 'FONCTION' => 'Conservateur', 'RISQUE' => 2],
['COD_EUROPEEN' => 'E300', 'MOLECULE' => 'Acide ascorbique', 'FONCTION' => 'Antioxydant', 'RISQUE' => 0],
['COD_EUROPEEN' => 'E301', 'MOLECULE' => 'Ascorbate de sodium', 'FONCTION' => 'Antioxydant', 'RISQUE' => 0],
['COD_EUROPEEN' => 'E316', 'MOLECULE' => 'Érythorbate de sodium', 'FONCTION' => 'Antioxydant', 'RISQUE' => 1],
['COD_EUROPEEN' => 'E322', 'MOLECULE' => 'Lécithines', 'FONCTION' => 'Émulsifiant', 'RISQUE' => 0],
['COD_EUROPEEN' => 'E330', 'MOLECULE' => 'Acide citrique', 'FONCTION' => 'Acidifiant', 'RISQUE' => 0],
['COD_EUROPEEN' => 'E331', 'MOLECULE' => 'Citrates de sodium', 'FONCTION' => 'Régulateur d\'acidité', 'RISQUE' => 0],
['COD_EUROPEEN' => 'E392', 'MOLECULE' => 'Extrait de romarin', 'FONCTION' => 'Antioxydant', 'RISQUE' => 0],
['COD_EUROPEEN' => 'E407', 'MOLECULE' => 'Carraghénanes', 'FONCTION' => 'Gélifiant', 'RISQUE' => 1],
['COD_EUROPEEN' => 'E412', 'MOLECULE' => 'Gomme guar', 'FONCTION' => 'Épaississant', 'RISQUE' => 0],
['COD_EUROPEEN' => 'E415', 'MOLECULE' => 'Gomme xanthane', 'FONCTION' => 'Épaississant', 'RISQUE' => 0],
['COD_EUROPEEN' => 'E450', 'MOLECULE' => 'Diphosphates', 'FONCTION' => 'Stabilisant', 'RISQUE' => 1],
['COD_EUROPEEN' => 'E451', 'MOLECULE' => 'Triphosphates', 'FONCTION' => 'Stabilisant', 'RISQUE' => 1],
['COD_EUROPEEN' => 'E452', 'MOLECULE' => 'Polyphosphates', 'FONCTION' => 'Sels de fonte', 'RISQUE' => 1],
['COD_EUROPEEN' => 'E469', 'MOLECULE' => 'Carboxyméthylcellulose enzymatique', 'FONCTION' => 'Épaississant', 'RISQUE' => 1],
['COD_EUROPEEN' => 'E470a', 'MOLECULE' => 'Sels d\'acides gras', 'FONCTION' => 'Émulsifiant', 'RISQUE' => 1],
['COD_EUROPEEN' => 'E471', 'MOLECULE' => 'Mono et diglycérides d\'acides gras', 'FONCTION' => 'Émulsifiant', 'RISQUE' => 1],
['COD_EUROPEEN' => 'E472a', 'MOLECULE' => 'Esters acétiques de mono/diglycérides', 'FONCTION' => 'Émulsifiant', 'RISQUE' => 1],
['COD_EUROPEEN' => 'E472b', 'MOLECULE' => 'Esters lactiques de mono/diglycérides', 'FONCTION' => 'Émulsifiant', 'RISQUE' => 1],
];
foreach ($additifs as $additif) {
if (! AdditifFactory::query()->where('COD_EUROPEEN', $additif['COD_EUROPEEN'])->exists()) {
AdditifFactory::new()->create($additif);
}
}
}
private function seedAllergenesAndAllegations(): void
{
$allergenes = [
['ID' => 1, 'LIB' => 'Céréales contenant du gluten'],
['ID' => 2, 'LIB' => 'Crustacés et produits à base de crustacés'],
['ID' => 3, 'LIB' => 'Œufs et produits à base d\'œufs'],
['ID' => 4, 'LIB' => 'Poissons et produits à base de poissons'],
['ID' => 5, 'LIB' => 'Arachides et produits à base d\'arachides'],
['ID' => 6, 'LIB' => 'Soja et produits à base de soja'],
['ID' => 7, 'LIB' => 'Lait et produits à base de lait (y compris le lactose)'],
['ID' => 8, 'LIB' => 'Fruits à coque'],
['ID' => 9, 'LIB' => 'Céleri et produits à base de céleri'],
['ID' => 10, 'LIB' => 'Moutarde et produits à base de moutarde'],
['ID' => 11, 'LIB' => 'Graines de sésame et produits à base de graines de sésame'],
['ID' => 12, 'LIB' => 'Anhydride sulfureux et sulfites (>10mg/kg)'],
['ID' => 13, 'LIB' => 'Lupin et produits à base de lupin'],
['ID' => 14, 'LIB' => 'Mollusques et produits à base de mollusques'],
];
foreach ($allergenes as $allergene) {
if (! IncoAllergeneFactory::query()->where('ID', $allergene['ID'])->exists()) {
IncoAllergeneFactory::new()->create($allergene);
}
}
$allegations = [
['CODE' => 1, 'LIBELLE' => 'Sans conservateur'],
['CODE' => 2, 'LIBELLE' => 'Sans huile de palme'],
['CODE' => 3, 'LIBELLE' => 'Volaille 100% française'],
['CODE' => 4, 'LIBELLE' => 'Élevé en liberté 84 jours'],
['CODE' => 5, 'LIBELLE' => 'Sans arôme artificiel'],
['CODE' => 6, 'LIBELLE' => 'Certifié Halal'],
['CODE' => 7, 'LIBELLE' => 'Label Rouge'],
['CODE' => 8, 'LIBELLE' => 'Nourri sans OGM (<0.9%)'],
['CODE' => 9, 'LIBELLE' => 'Riche en protéines'],
['CODE' => 10, 'LIBELLE' => 'Viande bovine française (VBF)'],
];
foreach ($allegations as $allegation) {
if (! IncoAllegationsFactory::query()->where('CODE', $allegation['CODE'])->exists()) {
IncoAllegationsFactory::new()->create($allegation);
}
}
}
private function seedServicesConso(): void
{
$services = [
[
'ID' => 24,
'NOM' => 'Service clients - Groupe Auchan',
'ADRESSE1' => 'BP 682',
'CP' => '59650',
'VILLE' => 'Villeneuve d\'Ascq',
'TELEPHONE' => '03.59.30.59.30',
'MAIL' => 'service.conso@auchan.fr',
'MARQUE' => 11,
'LIB' => 'Service conso Pouce Auchan',
'SITE_INT' => 'www.auchan.fr',
],
[
'ID' => 28,
'NOM' => 'Service consommateurs Carrefour',
'ADRESSE1' => 'CMI - TSA 91431',
'CP' => '91300',
'VILLE' => 'Massy',
'TELEPHONE' => '06.69.39.70.00',
'MAIL' => 'service.conso@carrefour.fr',
'MARQUE' => 12,
'LIB' => 'Service conso Carrefour Simpl',
'SITE_INT' => 'www.carrefour.fr',
],
[
'ID' => 54,
'NOM' => 'Service Consommateurs LDC',
'ADRESSE1' => 'ZI Saint Laurent - BP 88',
'CP' => '72302',
'VILLE' => 'Sablé-sur-Sarthe',
'TELEPHONE' => '02.43.62.70.00',
'MAIL' => 'service.conso@ldc.fr',
'MARQUE' => 1,
'LIB' => 'Service conso Groupe LDC (Le Gaulois, Marie, Loué, Maître CoQ)',
'SITE_INT' => 'www.ldc.fr',
],
];
foreach ($services as $service) {
if (! ServiceConsoIncoFactory::query()->where('ID', $service['ID'])->exists()) {
ServiceConsoIncoFactory::new()->create($service);
}
}
}
private function seedIncoAndCompo(): void
{
// 1. Compositions nutritionnelles
$compos = [
96504 => fn () => IncoCompoFactory::new()->steaksDinde()->create(),
124503 => fn () => IncoCompoFactory::new()->pouletFermierNoir()->create(),
124504 => fn () => IncoCompoFactory::new()->pouletFermierLoue()->create(),
130101 => fn () => IncoCompoFactory::new()->cordonBleuDinde()->create(),
140205 => fn () => IncoCompoFactory::new()->lasagnesBolognaise()->create(),
150312 => fn () => IncoCompoFactory::new()->nemsPoulet()->create(),
160420 => fn () => IncoCompoFactory::new()->emincesPouletRoti()->create(),
170502 => fn () => IncoCompoFactory::new()->filetCanardSudOuest()->create(),
180640 => fn () => IncoCompoFactory::new()->aiguillettesPouletThym()->create(),
190750 => fn () => IncoCompoFactory::new()->gratinDauphinois()->create(),
];
foreach ($compos as $compoId => $creator) {
if (! IncoCompoFactory::query()->where('ID', $compoId)->exists()) {
$creator();
}
}
// 2. Fiches INCO liées
$articles = [
47789 => fn () => IncoFactory::new()->nuggetsPoulet()->withCompo(96504)->create(),
47996 => fn () => IncoFactory::new()->gesiersEtFoies()->withCompo(124503)->create(),
4 => fn () => IncoFactory::new()->pouletFermierLoue()->withCompo(124504)->create(),
51201 => fn () => IncoFactory::new()->cordonBleuDinde()->withCompo(130101)->create(),
62305 => fn () => IncoFactory::new()->lasagnesBolognaise()->withCompo(140205)->create(),
73412 => fn () => IncoFactory::new()->nemsPoulet()->withCompo(150312)->create(),
84520 => fn () => IncoFactory::new()->emincesPouletRoti()->withCompo(160420)->create(),
48102 => fn () => IncoFactory::new()->filetCanardSudOuest()->withCompo(170502)->create(),
52340 => fn () => IncoFactory::new()->aiguillettesPouletThym()->withCompo(180640)->create(),
63450 => fn () => IncoFactory::new()->gratinDauphinois()->withCompo(190750)->create(),
];
foreach ($articles as $artId => $creator) {
if (! IncoFactory::query()->where('NO_ART', $artId)->exists()) {
$creator();
}
}
// 3. Références articles (liens vers familles de vente)
$articleRefs = [
['NO_ART' => 47789, 'COD_SOC' => 1, 'COD_FAMVTE' => 216, 'LIB_CCIAL' => 'BQ NUGET PLT X10 200G SAT LG'],
['NO_ART' => 47996, 'COD_SOC' => 1, 'COD_FAMVTE' => 99, 'LIB_CCIAL' => 'ETUI GES FOIE VOL DUO 300G SV LG'],
['NO_ART' => 4, 'COD_SOC' => 1, 'COD_FAMVTE' => 306, 'LIB_CCIAL' => 'POULET FERMIER LOUE'],
['NO_ART' => 51201, 'COD_SOC' => 1, 'COD_FAMVTE' => 31, 'LIB_CCIAL' => 'CORDON BLEU DINDE'],
['NO_ART' => 62305, 'COD_SOC' => 1, 'COD_FAMVTE' => 120, 'LIB_CCIAL' => 'LASAGNES BOLOGNAISE'],
['NO_ART' => 73412, 'COD_SOC' => 1, 'COD_FAMVTE' => 135, 'LIB_CCIAL' => 'NEMS POULET'],
['NO_ART' => 84520, 'COD_SOC' => 1, 'COD_FAMVTE' => 31, 'LIB_CCIAL' => 'EMINCES POULET ROTI'],
['NO_ART' => 48102, 'COD_SOC' => 1, 'COD_FAMVTE' => 319, 'LIB_CCIAL' => 'FILET CANARD SUD OUEST'],
['NO_ART' => 52340, 'COD_SOC' => 1, 'COD_FAMVTE' => 150, 'LIB_CCIAL' => 'AIGUILLETTES POULET THYM'],
['NO_ART' => 63450, 'COD_SOC' => 1, 'COD_FAMVTE' => 120, 'LIB_CCIAL' => 'GRATIN DAUPHINOIS'],
];
foreach ($articleRefs as $artRef) {
if (! ArticleRefFactory::query()->where('NO_ART', $artRef['NO_ART'])->where('COD_SOC', $artRef['COD_SOC'])->exists()) {
ArticleRefFactory::new()->create($artRef);
}
}
}
}