diff --git a/public/sample/template_import.csv b/public/sample/template_import.csv deleted file mode 100644 index 78266c8..0000000 --- a/public/sample/template_import.csv +++ /dev/null @@ -1,18 +0,0 @@ -external_code;titre;domaine;description;formateur;objectif;programme;prerequis;cpf;institut_formation;distantiel;presentiel;prix;note;img_url;url;duree;duree_unite;plus_produit;mots_cle;metier;certif;publie;zone_diffusion;pourqui;support;img_banner_detail_class -MYSY_Demo_001;Gestion des Base des Données;Informatique;"Le terme « bases de données » est utilisé à tout va, dans les métiers. Mais qu’en est-il exactement ? -Qu’est ce qu’une base de données, comment sont-elles utilisées pour améliorer nos actions et processus au quotidien ? -Ce cours vous donnera un aperçu et les clés pour aller plus loin. - -En maitrisant les concepts définis dans les objectifs pédagogiques, vous pourrez : -- Concevoir une base de données relationnelle, -- Gérer et Administrer les contenus des bases de données.";iexercice;"Ce cours vous permettra de maitriser les concepts de base pour la manipulation des base de données. -En d’autres termes, à la fin de ce module, l’apprenant sera en mesure de : -• De se connecter à une base de données de type Mysql et Postgresql -• De créer et mettre à jour et supprimer une base de base de données -• Créer et mettre jour et supprimer des tables de données, de les lier avec clés -• D’insérer, mettre à jour et supprimer des enregistrements. -• De créer des requête SQL nécessitant la jonction entre plusieurs tables.";"Dans ce module, plusieurs concepts seront abordés comme : -• Une base de données -• Les roles, les utilisateurs -• Les clés de liaison entre les tables -• Les requête SQL";Pour être à l’aise dans ce module, l’apprenant devra maitriser les concepts de base données, de modélisation d’information.;1;iexercice;1;1;1500;5;https://img.mysy-training.com/1000formation/LOGO-FORMATION1000.png;;5;jour;;BDD, relationnel,SQL;Informatique;1;1;;;mixte; diff --git a/public/sample/template_import_client.csv b/public/sample/template_import_client.csv index 00e8187..6970f92 100644 --- a/public/sample/template_import_client.csv +++ b/public/sample/template_import_client.csv @@ -1,2 +1,3 @@ nom;raison_sociale;email;adresse;code_postal;ville;pays;siret;telephone;tva;website;invoice_adresse;invoice_code_postal;invoice_email;invoice_nom;invoice_siret;invoice_tva;invoice_ville;invoice_pays -client122;raison_sociale1;email1@mysy-training.fr;2 place du test;75001;Paris;France;Siret1;1010101;;www.client1.fr;invoice_adresse;invoice_code_postal;fact@mysy.fr;invoice_nom_val;invoice_siret_val;invoice_tva;invoice_ville;invoice_pays +client_test01;raison_sociale1;email-test01@mysy-training.fr;2 place du test;75001;Paris;France;Siret1;1010101;;www.client_test01.fr;invoice_adresse;invoice_code_postal;fact@mysy.fr;invoice_nom_val;invoice_siret_val;invoice_tva;invoice_ville;invoice_pays +client_test02;raison_sociale1;email_test02@mysy-training.fr;2 place du test;75001;Paris;France;Siret1;1010101;;www.client-test02.fr;invoice_adresse;invoice_code_postal;fact@mysy.fr;invoice_nom_val;invoice_siret_val;invoice_tva;invoice_ville;invoice_pays diff --git a/public/sample/template_import_employes.csv b/public/sample/template_import_employes.csv index 9f246cd..aa72c3e 100644 --- a/public/sample/template_import_employes.csv +++ b/public/sample/template_import_employes.csv @@ -1,5 +1,5 @@ nom;prenom;email;telephone_mobile;telephone;profil;ismanager;superieur_hierarchie_email;civilite;adresse;code_postal;ville;pays;facebook;fonction;linkedin;twitter -emp_nom01;emp_prenpm02;emp_nom01@mysy.com;6555555;1222222;enseignant;non;email_employe3@mysy.com;M;emp_adresse01;582222;paris01;France;em_face01;emp_fonction01;emp_link01;emp_tiwter01 -emp_nom02;emp_prenpm03;emp_nom02@mysy.com;6555555;1222222;enseignant;non;email_employe3@mysy.com;Neutre;emp_adresse02;582223;paris02;France;em_face02;emp_fonction02;emp_link02;emp_tiwter02 -emp_nom03;emp_prenpm04;emp_nom03@mysy.com;6555555;1222222;enseignant;non;email_employe3@mysy.com;;emp_adresse03;582224;paris03;France;em_face03;emp_fonction03;emp_link03;emp_tiwter03 -emp_nom04;emp_prenpm05;emp_nom04@mysy.com;6555555;1222222;enseignant;non;email_employe3@mysy.com;Mme;emp_adresse04;582225;paris04;France;em_face04;emp_fonction04;emp_link04;emp_tiwter04 +nom_namanger1;Prenom_Mnager1;manager_01@mysy.com;6555555;1222222;directeur;non;;Mme;emp_adresse01;582222;paris01;France;;;; +nom_namanger2;Prenom_Mnager2;manager_02@mysy.com;6555555;1222222;administratif;non;;Neutre;emp_adresse02;582223;paris02;France;;;; +emp_test01;prenom01;testnom01@mysy.com;6555555;1222222;enseignant;non;manager_01@mysy.com;M;emp_adresse01;582222;paris01;France;em_face01;emp_fonction01;emp_link01;emp_tiwter01 +emp_test02;prenom02;testnom02@mysy.com;6555555;1222222;enseignant;non;manager_01@mysy.com;Neutre;emp_adresse02;582223;paris02;France;em_face02;emp_fonction02;emp_link02;emp_tiwter02 diff --git a/public/sample/template_import_formations.csv b/public/sample/template_import_formations.csv new file mode 100644 index 0000000..91863e5 --- /dev/null +++ b/public/sample/template_import_formations.csv @@ -0,0 +1,8 @@ +external_code;titre;domaine;description;formateur;objectif;programme;prerequis;cpf;institut_formation;distantiel;presentiel;prix;note;img_url;url;duree;duree_unite;plus_produit;mots_cle;metier;certif;publie;zone_diffusion;pourqui;support;img_banner_detail_class +MYSY_Test_AP;PRATICIEN EN AROMATHERAPIE INTEGRATIVE;sante_nat;L’Aromathérapie Intégrative© est un enseignement scientifique qui ne se limite pas à connaître les propriétés des huiles essentielles pour supprimer des symptômes, mais qui intègre leur utilisation dans une stratégie thérapeutique globale de santé, fondée sur une bonne compréhension de l'anatomie, de la physiologie et de la biochimie, afin d’être capable de proposer des solutions individualisées et efficaces.;ÉCOLE FRANCAISE D'AROMATHERAPIE INTEGRATIVE (EFAI);Intégrer les règles de sécurité pour utiliser et conseiller l’usage des huiles essentielles. Faire le lien entre la composition biochimique d’une huile essentielle et ses actions sur l’organisme. Intégrer les bases indispensables de biochimie, d’anatomie et de physiologie humaine. Évaluer une situation d’exclusion réclamant une prise en charge médicale. Analyser une situation et les attentes d’un consultant pour définir une stratégie d’accompagnement adaptée avec des huiles essentielles dans les domaines relevant de sa compétence. Établir une formule parfaitement adaptée à une personne et un problème. Être capable de fabriquer un baume, une crème, une composition huileuse. ;Modules de 3 jours par mois en présentiel. Entrainement à distance avec documents, vidéos et quiz en ligne Evaluation à chaque module sur le programme du module précédent;Le niveau BAC est recommandé mais pas obligatoire. Solide motivation.;0;ÉCOLE FRANCAISE D'AROMATHERAPIE INTEGRATIVE (EFAI);0;1;2590;5;https://img.mysy-training.com/ecole_aroma/img/logo_ecole_arome_vert.jpg;;21;jour;Mode hybride avec présentiel ( théorie, pratique, supports papier) et distanciel asynchrone : vidéos et quiz d'entrainement sur une plateforme dédiée : Groupe de discussion sur messagerie whatsapp. Evaluations pour vérifier l'atteinte des objectifs pédagogiques. Evaluation, finale des compétences Rédaction d'un travail de synthèse avec sujet au choix, à présenter devant un jury extérieur à l'école.;AROMATHERAPIE, HUILES ESSENTIELLES, AROMA;dev_perso;1;1;;• Aux professionnels du bien-être et de la santé qui désirent acquérir un outil complémentaire • Aux particuliers en reconversion professionnelle dans le domaine de la santé et du bien-être • Aux particuliers pour une utilisation familiale ou en démarche personnelle. Inclusion des personnes handicapées.;mixte; +MYSY_Test_OP;PRATICIEN EN OLFACTOTHERAPIE;sante_nat;"Les huiles essentielles au service de notre équilibre psycho-émotionnel​. +Les informations olfactives sont en priorité traitées dans le cerveau par le système limbique qui gère aussi la mémoire émotionnelle. +Ainsi une simple odeur peut faire remonter des émotions en lien avec un vécu plus ou moins traumatique, permettant de comprendre quels besoins n’ont pas été entendus et qui causent des souffrances plus ou moins conscientes. +L'olfactothérapie invite à se mettre en chemin pour évoluer vers un plus grand respect de Soi et plus de sérénité́ dans la Vie.";ÉCOLE FRANCAISE D'AROMATHERAPIE INTEGRATIVE (EFAI);Maîtriser les règles de sécurité pour utiliser et conseiller l’usage des huiles essentielles. Évaluer une situation d’exclusion réclamant une prise en charge différente. Analyser une situation et les attentes d’un consultant pour définir une stratégie d’accompagnement adaptée avec des huiles essentielles dans les domaines relevant de sa compétence. Proposer une HE parfaitement adaptée à une personne en demande d’accompagnement psycho-émotionnel. ;Modules de 3 jours par mois en présentiel. Entrainement à distance avec documents, vidéos et quiz en ligne ;Aucun prérequis n’est demandé excepté la motivation de partir à la découverte de Soi et de l'Autre.;0;ÉCOLE FRANCAISE D'AROMATHERAPIE INTEGRATIVE (EFAI);0;1;2590;5;https://img.mysy-training.com/ecole_aroma/img/logo_ecole_arome_vert.jpg;;21;jour;Mode hybride avec présentiel ( théorie, expérimentation, supports papier) et distanciel asynchrone : vidéos et quiz d'entrainement sur une plateforme dédiée : Groupe de discussion sur messagerie whatsapp. Entrainements à la consultation avec clients volontaires. Evaluation, finale des compétences Rédaction d'un travail personnel de synthèse. Compte-rendus de 21 séances à rendre dans les mois qui suivent la formation pour obtenir la certification.;OLFACTOTHERAPIE, HUILES ESSENTIELLES;dev_perso;1;1;;"Aucun prérequis n’est demandé, cette formation est ouverte à toute personne motivée à travailler sur elle pour pouvoir mieux accompagner l’Autre. +Elle est tout particulièrement conseillée aux sophrologues, praticiens en hypnose, aux psychothérapeutes et praticiens en relation d’aide désirant acquérir un outil complémentaire qui décuplera l’efficacité de leurs propres techniques.";mixte; +MYSY_Test_AR;PRATICIEN EN AROMATHERAPIE INTEGRATIVE;sante_nat;L’Aromathérapie Intégrative© est un enseignement scientifique qui ne se limite pas à connaître les propriétés des huiles essentielles pour supprimer des symptômes, mais qui intègre leur utilisation dans une stratégie thérapeutique globale de santé, fondée sur une bonne compréhension de l'anatomie, de la physiologie et de la biochimie, afin d’être capable de proposer des solutions individualisées et efficaces.;ÉCOLE FRANCAISE D'AROMATHERAPIE INTEGRATIVE (EFAI);Intégrer les règles de sécurité pour utiliser et conseiller l’usage des huiles essentielles. Faire le lien entre la composition biochimique d’une huile essentielle et ses actions sur l’organisme. Intégrer les bases indispensables de biochimie, d’anatomie et de physiologie humaine. Évaluer une situation d’exclusion réclamant une prise en charge médicale. Analyser une situation et les attentes d’un consultant pour définir une stratégie d’accompagnement adaptée avec des huiles essentielles dans les domaines relevant de sa compétence. Établir une formule parfaitement adaptée à une personne et un problème. Être capable de fabriquer un baume, une crème, une composition huileuse. ;Modules de 3 jours par mois en présentiel. Entrainement à distance avec documents, vidéos et quiz en ligne Evaluation à chaque module sur le programme du module précédent;Le niveau BAC est recommandé mais pas obligatoire. Solide motivation.;0;ÉCOLE FRANCAISE D'AROMATHERAPIE INTEGRATIVE (EFAI);0;1;1650;5;https://img.mysy-training.com/ecole_aroma/img/logo_ecole_arome_vert.jpg;;12;jour;Mode hybride avec présentiel ( théorie, pratique, supports papier) et distanciel asynchrone : vidéos et quiz d'entrainement sur une plateforme dédiée. Groupe de discussion sur messagerie whatsapp. Evaluations pour vérifier l'atteinte des objectifs pédagogiques. Evaluation, finale des compétences Rédaction d'un travail de synthèse avec sujet au choix.;AROMATHERAPIE, HUILES ESSENTIELLES, AROMA;dev_perso;1;1;;;mixte; diff --git a/public/sample/template_import_old.csv b/public/sample/template_import_old.csv deleted file mode 100644 index a2bebee..0000000 --- a/public/sample/template_import_old.csv +++ /dev/null @@ -1,66 +0,0 @@ -external_code;titre;domaine;description;formateur;objectif;programme;prerequis;cpf;institut_formation;distantiel;presentiel;prix;note;img_url;url;duree;plus_produit;mots_cle;metier;certif;publie;zone_diffusion;pourqui;support;img_banner_detail_class -MYSY_0001;TECHNIQUE DE VENTE;vente;"En B to B (business to business), le commercial se positionne plus souvent en tant qu'apporteur de solutions qu'en simple vendeur de produits ou de services. -Ce positionnement change profondément la nature de l'acte commercial qui compte alors au moins 3 étapes et peut impliquer plusieurs interlocuteurs dans le processus de décision : - -• Entretien 1 : prise de connaissance mutuelle, recueil d'informations, phase de rédaction de proposition -• Entretien 2 : présentation et défense de la proposition - -Chaque entretien de vente a ses propres objectifs et le commercial B to B doit s'y préparer pour éviter de griller les étapes et donc ses chances d'emporter la signature. ";MySy Training;"• Utiliser des outils numériques pour augmenter ses ventes en magasin comme à distance -• Utiliser des outils d'analyse connectés pour identifier sa cible et analyser son marché -• Rendre le client acteur de la vente et de la promotion des produits et des services";"MODULE 1 : LA COMPREHENSION BASIQUE DU PROCESSUS DE VENTE -• Vente en B2B ou B2C : modalités applicables par le vendeur et dispositions diverses -• Qu’est-ce-que la règle des 4 C dans l’univers de la vente ? -• Parlons de l’omnicanalité et de son impact dans l’organisation commerciale - -MODULE 2 : LA PROSPECTION ET LA DECOUVERTE CLIENT -• Les 4 étapes indispensables de la prospection client -• 6 étapes clés pour une prospection commerciale digitale efficace -• L’art du Storytelling ou comment raconter une histoire qui fait vendre ! -";Aucun prérequis nécessaire pour suivre la formation techniques de vente;1;MySy Training;1;0;1400;5;https://img.mysy-training.com/MYSY-LOGO-BLUE.png;;2;;;vente;1;;;"Toute personne souhaitant entreprendre une carrière commerciale -Employés d'un service administratif -Vendeurs sédentaires -Techniciens";mixte;https://img.mysy-training.com/MYSY-LOGO-BLUE.png -MYSY_0002;LES FONDAMENTAUX DU MANAGEMENT;management;"Dans un contexte qui bouge sans cesse, arriver à gérer et maintenir les équipes est devenu un réel défi. -Pour vivre pleinement l'expérience du manager, des clés, techniques et méthodes ont été mise en place. -Grace à cette formation vous apprendrez et maitriserais les outils nécessaires à votre épanouissement. -Grâce à cette formation, soyez prêts à relever vos premiers défis en tant que Manager grâce à un programme complet qui vous permettra de vous approprier votre rôle, et de fédérer vos équipes pour atteindre vos objectifs !";MySy Training;"• Appréhender les enjeux du management -• Comprendre et maitriser les rôles et responsabilités du manager -• Acquérir les techniques et outils de base du management pour conduire, animer et suivre une équipe";"INTRODUCTION : -Qu’est-ce que le management ? -Les dimensions et axes du management d'aujourd'hui. -Le management dans les entreprises - -LEADERSHIP ET MANAGEMENT : -Un leader doit-il être exemplaire -Devenir un maître plutôt qu’un contrôlant -Qu'est-ce que le LEADERSHIP - -GESTION DES EQUIPES : -6 clefs d’une cohésion d’équipe -Quel est le style de management le plus efficace -Comment fidéliser vos équipes dans le temp - -DEVELOPPER UNE INTELLIGENCE RELATIONNELLE : -Établir un rapport d'égal à égal pour vous affirmer avec tact -Cultiver un regard positif -S’affirmer sainement, adopter une attitude constructive -";;1;MySy Training;1;0;1300;4;https://img.mysy-training.com/MYSY-LOGO-BLUE.png;;3;"La formation est fondée sur une alternance de présentation de contenu théorique, de mises en pratique (exercices, jeux de rôle) et d’échanges commentés (en binôme et collectifs). -La formation est conçue pour favoriser le développement des compétences professionnelles, axée la recherche collective de bonnes pratiques.";;management;1;1;;"Cette formation technique de vente s'adresse à : -• Manager en poste, -• Toute personne souhaitant aspirant à devenir manager";mixte;https://img.mysy-training.com/MYSY-LOGO-BLUE.png -MYSY_0003;AgilePM Foundation;IT;"La formation AgilePM Foundation est conçue pour les personnes qui ont besoin d’un niveau de compréhension général d’Agile Project Management. -La formation AgilePM Foundation a pour but de s’assurer qu’un candidat comprend la philosophie, les principes, les processus, les personnes, les produits et les techniques de la gestion de projet Agile. ";MySy Training;"A la fin de la formation, le participant doit, entre autre, être capable de : -• Comprendre les bases de la philosophie et des principes Agile -• Comprendre le cycle de vie d’un projet Agile, incluant les configurations alternatives -• Comprendre les produits de projets Agile ainsi que leur utilité -• Comprendre les techniques utilisés ainsi que leurs bénéfices et limites -• Comprendre les rôles et responsabilités au sein d’un projet Agile";"bases de la philosophie et des principes Agile -cycle de vie d’un projet Agile, incluant les configurations alternatives -produits de projets Agile ainsi que leur utilité -techniques utilisés ainsi que leurs bénéfices et limites -les rôles et responsabilités au sein d’un projet Agile";;1;MySy Training;1;1;1150;4;https://img.mysy-training.com/MYSY-LOGO-BLUE.png;;;"1. Nous garantissons une expérience d’apprentissage complète. Notre formation comprend une lecture préparatoire, le manuel (pour les formations en présentiel), des exercices et études de cas et l’examen officiel. -2. Nous avons un taux de réussite de 99% à l’examen AgilePM Foundation ! -3. Profitez de nos 20 années d’expérience dans la formation et le conseil sur les Bonnes Pratiques en Management. -4. Nous mettons notre expertise à votre service : les formateurs QRP sont sélectionnés parmi notre réseau de spécialistes. Nos formateurs sont accrédités sur plusieurs bonnes pratiques afin de pouvoir établir des liens entre elles. -";"agile;management;agil";IT;1;1;;"• Chef de projet -• Membre de l’équipe agile qui cherche à devenir chef de projet Agile";mixte;https://img.mysy-training.com/MYSY-LOGO-BLUE.png diff --git a/public/sample/template_import_session_formation.csv b/public/sample/template_import_session_formation.csv index ce82c17..3428bc3 100644 --- a/public/sample/template_import_session_formation.csv +++ b/public/sample/template_import_session_formation.csv @@ -1,5 +1,7 @@ formation_code_externe;code_session;date_debut;date_fin;nb_participant;adresse;code_postal;ville;date_debut_inscription;date_fin_inscription;formateur;distanciel;presentiel;prix_session;session_status;lms_class_code;session_etape -MYSY_Test_AP;KANA1;11/10/2023;13/10/2023;20;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;NBE;1;0;750;1;Apprentissage des Kana;0 -MYSY_Test_AP;KANA2;14/11/2023;16/11/2023;15;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;NBE;1;0;750;1;Apprentissage des Kana;0 -MYSY_Test_AP;KANA3;21/11/2023;23/11/2023;10;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;NBE;1;0;750;1;Perfectionnement;0 -MYSY_Test_AP;KANA4;28/11/2023;30/11/2023;15;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;NBE;1;0;750;1;Perfectionnement;0 +MYSY_Test_AP;AP_01;11/10/2023;13/10/2023;20;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;MySy_Trainer;1;0;750;1;;0 +MYSY_Test_AP;AP_02;14/11/2023;16/11/2023;15;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;MySy_Trainer;1;0;750;1;;0 +MYSY_Test_OP;OP_01;21/11/2023;23/11/2023;10;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;MySy_Trainer;1;0;750;1;;0 +MYSY_Test_OP;OP_02;28/11/2023;30/11/2023;15;2 passage de la Providence;75020;Paris;01/09/2023;30/09/2023;MySy_Trainer;1;0;750;1;;0 +MYSY_Test_AR;AR_01;01/03/2024;11/03/2024;5;;;;18/09/2023;29/02/2024;;1;0;;1;;0 +MYSY_Test_AR;AR_02;02/12/2023;10/12/2023;9;;;;18/09/2023;01/12/2023;;1;0;;1;;0 diff --git a/public/sample/template_import_session_formation_old.csv b/public/sample/template_import_session_formation_old.csv deleted file mode 100644 index 19502ec..0000000 --- a/public/sample/template_import_session_formation_old.csv +++ /dev/null @@ -1,3 +0,0 @@ -code_session;date_debut;date_fin;nb_participant;adresse;code_postal;ville;session_status;date_debut_inscription;date_fin_inscription;formateur;distanciel;presentiel;prix_session -MYSY_1000forma2_s1;01/03/2023;17/03/2023;10;;75000;paris;1;03/01/2023;28/02/2023;MySy Training;1;0;1300 -MYSY_1000forma2_s2;05/04/2023;07/04/2023;10;;75000;paris;1;03/01/2023;04/04/2023;MySy Training;0;1;1300 diff --git a/public/sample/template_import_stagiaires.csv b/public/sample/template_import_stagiaires.csv index 3944826..18198b5 100644 --- a/public/sample/template_import_stagiaires.csv +++ b/public/sample/template_import_stagiaires.csv @@ -1,4 +1,7 @@ formation_code_externe;code_session;client_rattachement_email;client_rattachement_nom;prenom;nom;employeur;telephone;email;adresse;code_postal;ville;pays;modefinancement;opco;status;prix -MYSY_Test_AP;AR01;;;part 2;part nom2;employeur 2;10101;line1@mysy.fr;adresse01;code_postal01;ville01;pays01;modefinancement;opco;0;150 -MYSY_Test_AP;AR01;;;part 3;part nom3;employeur 3;10101;line2@mysy.fr;adresse02;code_postal02;ville02;pays02;modefinancement;;1;180 -MYSY_Test_AP;AR01;;;part 4;part nom4;employeur 4;10101;line3@mysy.fr;adresse03;code_postal03;ville03;pays03;modefinancement;;0;110 +MYSY_Test_AP;AP_01;;;part 2;part nom2;employeur 2;10101;AP_01_line1@mysy.fr;adresse01;code_postal01;ville01;pays01;modefinancement;opco;0;150 +MYSY_Test_AP;AP_01;;;part 3;part nom3;employeur 3;10101;AP_01_line2@mysy.fr;adresse02;code_postal02;ville02;pays02;modefinancement;;1;180 +MYSY_Test_OP;OP_02;;;part 4;part nom4;employeur 4;10101;OP_02_line3@mysy.fr;adresse03;code_postal03;ville03;pays03;modefinancement;;0;110 +MYSY_Test_OP;OP_02;;;part 5;part nom5;employeur 5;10102;OP_02_line4@mysy.fr;adresse04;code_postal04;ville04;pays04;modefinancement;;0;1200 +MYSY_Test_AR;AR_01;;;part 6;part nom6;employeur 6;10103;AR_01_line5@mysy.fr;adresse05;code_postal05;ville05;pays05;modefinancement;;1;800 +MYSY_Test_AR;AR_02;;;part 7;part nom7;employeur 7;10104;AR_02_line6@mysy.fr;adresse06;code_postal06;ville06;pays06;modefinancement;;0;154 diff --git a/public/sample/template_import_stagiaires_many_sessions.csv b/public/sample/template_import_stagiaires_many_sessions.csv deleted file mode 100644 index a85c53b..0000000 --- a/public/sample/template_import_stagiaires_many_sessions.csv +++ /dev/null @@ -1,4 +0,0 @@ -formation_code_externe;code_session;client_rattachement_email;client_rattachement_nom;prenom;nom;employeur;telephone;email;adresse;code_postal;ville;pays;modefinancement;opco;status;prix -MYSY_Test_AP;AP01;;;part 2;part nom2;employeur 2;10101;line1@mysy.fr;adresse01;code_postal01;ville01;pays01;modefinancement;opco;0;150 -MYSY_Test_AR;AR02;;;part 3;part nom3;employeur 3;10101;line2@mysy.fr;adresse02;code_postal02;ville02;pays02;modefinancement;;1;180 -MYSY_Test_AP;AP02;;;part 4;part nom4;employeur 4;10101;line3@mysy.fr;adresse03;code_postal03;ville03;pays03;modefinancement;;0;110 diff --git a/public/sample/template_import_stagiaires_old.csv b/public/sample/template_import_stagiaires_old.csv deleted file mode 100644 index d3a6a53..0000000 --- a/public/sample/template_import_stagiaires_old.csv +++ /dev/null @@ -1,7 +0,0 @@ -prenom;nom;employeur;telephone;email;modefinancement;opco;status;prix -part 1;part nom1;employeur 1;10101;billardman1@yahoo.fr;modefinancement;opco;1;120 -part 2;part nom2;employeur 2;10101;billardman01@hotmail.com;modefinancement;opco;0;120 -part 3;part nom3;employeur 3;10101;mysy1000formation@gmail.com;modefinancement;;1;120 -part 4;part nom4;employeur 4;10101;mysytraining@gmail.com;modefinancement;;0;120 -part 5;part nom5;employeur 5;10101;mysy5discovery@gmail.com;modefinancement;;1;120 -part 6;part nom6;employeur 6;10101;billardman1@gmail.com;modefinancement;;0;120 diff --git a/src/components/AddClassManual.js b/src/components/AddClassManual.js index 6de1f00..087d812 100644 --- a/src/components/AddClassManual.js +++ b/src/components/AddClassManual.js @@ -24,7 +24,8 @@ import parse from 'html-react-parser'; import 'react-tooltip/dist/react-tooltip.css' import { Tooltip } from 'react-tooltip' - +import Popup from 'reactjs-popup'; +import 'reactjs-popup/dist/index.css'; import GestionAdministrative from "./GestionAdministrative"; const AddClassManual = (props) => { @@ -209,10 +210,7 @@ const AddClassManual = (props) => { function DeleteClass(event) { - const confirmBox = window.confirm("Voulez-vous vraiment supprimer cette formation"); - if (confirmBox === false) { - return; - } + var code = document.getElementsByName("external_code")[0].value; @@ -224,11 +222,11 @@ const AddClassManual = (props) => { var formData = new FormData(); const stored_cookie = getCookie('tokenmysypart'); formData.append("token", stored_cookie); - formData.append("internal_url", props.mytrainingclass['ref']); + formData.append("class_internal_url", props.mytrainingclass['ref']); - var myurl = process.env.REACT_APP_API_URL + "myclass/api/disable_class/"; + var myurl = process.env.REACT_APP_API_URL + "myclass/api/delete_Class_by_internal_url/"; fetch( myurl, @@ -243,32 +241,49 @@ const AddClassManual = (props) => { setimportmessage(result['message']); setmyApiResponse(result['status']); - //alert(result['status']+" -- "+myApiResponse+' mess = '+result['message']); - document.getElementsByName("external_code")[0].value = ""; - document.getElementsByName("title")[0].value = ""; - //document.getElementsByName("objectif")[0].value = ""; - //document.getElementsByName("programme")[0].value = ""; - //document.getElementsByName("prerequis")[0].value = ""; + if (String(result['status']) === "true") { + //alert(result['status']+" -- "+myApiResponse+' mess = '+result['message']); + document.getElementsByName("external_code")[0].value = ""; + document.getElementsByName("title")[0].value = ""; + + //document.getElementsByName("objectif")[0].value = ""; + //document.getElementsByName("programme")[0].value = ""; + //document.getElementsByName("prerequis")[0].value = ""; - //document.getElementsByName("description2")[0].value = ""; - document.getElementsByName("trainer")[0].value = ""; - document.getElementsByName("distentiel")[0].value = ""; - document.getElementsByName("price")[0].value = ""; - document.getElementsByName("domaine")[0].value = ""; - document.getElementsByName("duree")[0].value = ""; - //document.getElementsByName("mots_cle")[0].value = ""; - //document.getElementsByName("plus_produit")[0].value = ""; - document.getElementsByName("url")[0].value = ""; - document.getElementsByName("class_inscription_url")[0].value = ""; - document.getElementsByName("metier")[0].value = ""; + //document.getElementsByName("description2")[0].value = ""; + document.getElementsByName("trainer")[0].value = ""; + document.getElementsByName("distentiel")[0].value = ""; + document.getElementsByName("price")[0].value = ""; + document.getElementsByName("domaine")[0].value = ""; + document.getElementsByName("duree")[0].value = ""; + //document.getElementsByName("mots_cle")[0].value = ""; + //document.getElementsByName("plus_produit")[0].value = ""; + document.getElementsByName("url")[0].value = ""; + document.getElementsByName("class_inscription_url")[0].value = ""; + document.getElementsByName("metier")[0].value = ""; - document.getElementsByName("note")[0].value = ""; + document.getElementsByName("note")[0].value = ""; - //document.getElementsByName("objectif")[0].value = ""; - //document.getElementsByName("programme")[0].value = ""; - //document.getElementsByName("prerequis")[0].value = ""; + //document.getElementsByName("objectif")[0].value = ""; + //document.getElementsByName("programme")[0].value = ""; + //document.getElementsByName("prerequis")[0].value = ""; + alert(" La formation a été correctement supprimée."); + history.push({ + pathname: "/Partner/", + state: { + current_pack: props.currentpack, local_sub_menu: 'affichage', price: "", + period: "", new_pack: "" + } + }); + window.location.reload(); + } else if (String(result['status']) === "false") { + alert(result['message']); + } else if (String(result['status']) === String("Err_Connexion")) { + alert('Erreur: ' + result['message']); + history.push("/Connexion"); + } @@ -734,7 +749,7 @@ const AddClassManual = (props) => { //alert(result['status'] + " -- " + myApiResponse + ' mess = ' + result['message']); if (String(result['status']) === "true") { - alert(" La formation a été correctement ajoutée. Vous allez être redirigé vers la liste des formations."); + alert(" La formation a été correctement ajoutée / mise à jour. Vous allez être redirigé vers la liste des formations."); history.push({ pathname: "/Partner/", state: { @@ -1528,7 +1543,53 @@ const AddClassManual = (props) => { {String(datamodification) !== String("1") && String(editor_tochange) !== String("1") &&
- + + } className="bton_suppr2"> SUPPRIMER LA FORMATION + + } + modal + nested + position="center center" + > + {close => ( +
+ +
MySy Information
+
+ {' '} + + En confirmant cette opération, la formation sera définitivement supprimée.
+ Avant, assurez-vous de n'avoir aucune session rattachée à la formation. + +
+
+
+ + +
+
+ +
+
+
+ )} +
} @@ -1826,8 +1887,8 @@ const AddClassManual = (props) => { -   - {
-
+


{/*isimgclassSelected && */} diff --git a/src/components/AddPartnerClient.js b/src/components/AddPartnerClient.js index 33b8aef..318d2d5 100644 --- a/src/components/AddPartnerClient.js +++ b/src/components/AddPartnerClient.js @@ -34,6 +34,9 @@ import fileDownload from 'js-file-download' import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5"; import { AiOutlineUserAdd } from "react-icons/ai"; import PartnerClientActivite from "./PartnerClient_Activite"; +import Popup from 'reactjs-popup'; +import 'reactjs-popup/dist/index.css'; + const AddParnerClient = (props) => { const history = useHistory(); @@ -1110,23 +1113,6 @@ const AddParnerClient = (props) => { } - function confirm_add_user() { - confirmAlert({ - title: '', - message: 'Confirmez la creation du client', - buttons: [ - { - label: 'Oui', - onClick: () => Add_New_PartnerClient() - }, - { - label: 'Non', - onClick: () => { return } - } - ] - }); - } - const [Add_New_PartnerClient_api, setAdd_New_PartnerClient_api] = useState(""); @@ -1226,6 +1212,7 @@ const AddParnerClient = (props) => { Disable_fields(); alert(res.data.message); props.Get_List_Partner_Clients(); + props.father_scroll_to_top(); props.close_detail_client(); @@ -2163,7 +2150,53 @@ const AddParnerClient = (props) => {
- + Enregistrer   + + } + modal + nested + position="center center" + > + {close => ( +
+ +
MySy Information
+
+ {' '} + + Confirmez la création du client.
+ +
+
+
+ + +
+
+ +
+
+
+ )} +
+ +
@@ -2570,7 +2603,7 @@ const AddParnerClient = (props) => { />
- { String(formedit_mode_contact) === "1" &&
+ {String(formedit_mode_contact) === "1" &&
{
} - { String(formedit_mode_contact) !== "1" &&
+ {String(formedit_mode_contact) !== "1" &&
{ InputLabelProps={{ shrink: true, }} - + disabled={false} className="disabled_style" value={p_contact_civilite} onChange={(e) => setp_contact_civilite(e.target.value)} /> - +
} diff --git a/src/components/Config_Document.js b/src/components/Config_Document.js index 1ddfd65..e0a43f5 100644 --- a/src/components/Config_Document.js +++ b/src/components/Config_Document.js @@ -63,11 +63,11 @@ const Config_Documents = (props) => { const columns = [ { field: '_id', headerName: '_id', hide: true }, { field: 'id', headerName: 'id', hide: true }, - { field: 'nom', headerName: 'nom', hideable: false, flex:1}, - { field: 'ref_interne', headerName: 'ref_interne', hideable: false, flex:1}, + { field: 'nom', headerName: 'nom', hideable: false, flex: 1 }, + { field: 'ref_interne', headerName: 'ref_interne', hideable: false, flex: 1 }, { field: 'type_doc', headerName: 'type_doc', width: 150, hideable: false, }, { field: 'cible', headerName: 'cible', width: 150, hide: false, editable: false }, - { field: 'sujet', headerName: 'sujet', hide: false, editable: false, flex:1 }, + { field: 'sujet', headerName: 'sujet', hide: false, editable: false, flex: 1 }, /*{ @@ -116,13 +116,13 @@ const Config_Documents = (props) => {
{' '} - En confirmant cette opération, l'employé sera définitivement supprimé.
+ En confirmant cette opération, le document sera définitivement supprimé.
@@ -132,7 +132,7 @@ const Config_Documents = (props) => {
-
Choisir un champ
+
Choisir un champ
{ return "???"; }, }, - { field: 'class_external_code', headerName: 'Code Formation', align: "center", hideable: true, flex: 1, hide: true, }, + { field: 'class_external_code', headerName: 'Code Formation', align: "center", hideable: true, flex: 1, hide: false, }, { field: 'date_debut', headerName: 'Debut', hide: false, width: datagrid_columns_size_model2, }, { field: 'date_fin', headerName: 'Fin', hideable: false, width: datagrid_columns_size_model2, }, { @@ -5336,7 +5336,7 @@ const DisplayPartnerSession = (props) => { } {edit_session_form && selected_session_id && - }
diff --git a/src/components/DisplayPartnerStagiaires.js b/src/components/DisplayPartnerStagiaires.js index 227b6aa..ad58f48 100644 --- a/src/components/DisplayPartnerStagiaires.js +++ b/src/components/DisplayPartnerStagiaires.js @@ -228,8 +228,6 @@ const DisplayPartnerStagiaires = (props) => { function handleClick_delete(event, cellValues) { // Recuperation du motif du refus : - - var nom = cellValues.row.nom; var email = cellValues.row.email; var prenom = cellValues.row.prenom; @@ -1594,22 +1592,23 @@ const DisplayPartnerStagiaires = (props) => { const [addOneParticipant, setaddOneParticipant] = useState(); const status_inscription = [ - { - value: '1', - label: 'Inscription', - }, + { value: '0', label: 'PréInscription', }, { - value: '-1', - label: 'Annulation', + value: '1', + label: 'Inscription', }, { value: '2', label: 'En Cours', }, + { + value: '-1', + label: 'Annulation', + }, ]; @@ -2776,6 +2775,7 @@ const DisplayPartnerStagiaires = (props) => { Nom   Code Session    Titre Formation   + Lié au Client (nom client)   @@ -2856,6 +2856,7 @@ const DisplayPartnerStagiaires = (props) => { Nom   Code Session    Titre Formation   + Lié au Client (nom client)   @@ -2936,6 +2937,7 @@ const DisplayPartnerStagiaires = (props) => { Nom   Code Session    Titre Formation   + Lié au Client (nom client)   @@ -3012,6 +3014,7 @@ const DisplayPartnerStagiaires = (props) => { Nom   Code Session    Titre Formation   + Lié au Client (nom client)   diff --git a/src/components/DisplayPartnerTrainingsPagination.js b/src/components/DisplayPartnerTrainingsPagination.js index eb50891..b724d57 100644 --- a/src/components/DisplayPartnerTrainingsPagination.js +++ b/src/components/DisplayPartnerTrainingsPagination.js @@ -1393,10 +1393,10 @@ const DistplayPartnerTraningsPage = (props) => { value={actionmass_ftion_val} onChange={actionmass_ftion} > - Action    - Publier   - Dépublier   - Désactiver   + Action    + Publier   + Dépublier   + {/*Désactiver  */} diff --git a/src/components/Employes.js b/src/components/Employes.js index 2297483..586abe6 100644 --- a/src/components/Employes.js +++ b/src/components/Employes.js @@ -68,10 +68,10 @@ const Employes = (props) => { { field: '_id', headerName: '_id', hide: true }, { field: 'id', headerName: 'id', hide: true }, { field: 'email', headerName: 'email', flex: 1, hideable: false, }, - { field: 'nom', headerName: 'nom', flex: 1, hide: false, }, - { field: 'prenom', headerName: 'prenom', flex: 1, hide: false, }, + { field: 'nom', headerName: 'nom', flex: 1, hide: false, }, + { field: 'prenom', headerName: 'prenom', flex: 1, hide: false, }, { - field: 'ismanager', headerName: 'Manager', width: 150, hide: false, + field: 'ismanager', headerName: 'Manager', width: 150, hide: false, valueFormatter: (params) => { if (String(params.value) === "0") return "Non"; @@ -82,9 +82,9 @@ const Employes = (props) => { return String(params.value); }, }, - { field: 'telephone_mobile', headerName: 'Mobile', width: 150, hide: false, }, + { field: 'telephone_mobile', headerName: 'Mobile', width: 150, hide: false, }, { - field: 'civilite', headerName: 'Civilité', width: 150, hide: false, + field: 'civilite', headerName: 'Civilité', width: 150, hide: false, valueFormatter: (params) => { if (String(params.value) === "0") return "Mme"; @@ -96,8 +96,8 @@ const Employes = (props) => { return String(params.value); }, }, - { field: 'profil', headerName: 'profil', width: 150, hide: false, }, - { field: 'fonction', headerName: 'Fonction', width: 150, hide: false, }, + { field: 'profil', headerName: 'profil', width: 150, hide: false, }, + { field: 'fonction', headerName: 'Fonction', width: 150, hide: false, }, /* { field: "Detail", headerName: 'Voir detail', @@ -184,10 +184,10 @@ const Employes = (props) => { { field: '_id', headerName: '_id', hide: true }, { field: 'id', headerName: 'id', hide: true }, { field: 'poste', headerName: 'Poste', flex: 1, hideable: false, }, - { field: 'date_du', headerName: 'Du', width: 150, hide: false, }, - { field: 'date_au', headerName: 'Au', width: 150, hide: false, }, - { field: 'related_target_collection_object', headerName: 'Cible', flex: 1, hide: false, }, - { field: 'related_target_collection_id_nom', headerName: 'Cible Nom', flex: 1, hide: false, }, + { field: 'date_du', headerName: 'Du', width: 150, hide: false, }, + { field: 'date_au', headerName: 'Au', width: 150, hide: false, }, + { field: 'related_target_collection_object', headerName: 'Cible', flex: 1, hide: false, }, + { field: 'related_target_collection_id_nom', headerName: 'Cible Nom', flex: 1, hide: false, }, { field: 'target_related_collection', headerName: 'Type', hide: true }, { field: 'target_related_collection_id', headerName: 'Type ID', hide: true }, { @@ -312,7 +312,7 @@ const Employes = (props) => { function handleClick_edit_employee_From_Line(selected_row_id) { submenu_detail_employe(); - + setEmployee_data_changed(); var line = JSON.parse(rowss[selected_row_id]); //console.log("### line = ", line); @@ -322,6 +322,7 @@ const Employes = (props) => { var employe_email = line.email; setselected_employe_email(employe_email); + setAffectation_data_changed(); //console.log(" ### employe_id = ", employe_id); Display_Detail_Employe(employe_id); @@ -405,8 +406,8 @@ const Employes = (props) => { const [p_detail_twitter, setp_detail_twitter] = useState(); const [p_detail_ismanager, setp_detail_ismanager] = useState(); const [p_detail_ismanager_label, setp_detail_ismanager_label] = useState(); - const [p_detail_resp_hierarchie_nom, setp_detail_resp_hierarchie_nom] = useState(); - const [p_detail_resp_hierarchie_prenom, setp_detail_resp_hierarchie_prenom] = useState(); + const [p_detail_resp_hierarchie_nom, setp_detail_resp_hierarchie_nom] = useState(""); + const [p_detail_resp_hierarchie_prenom, setp_detail_resp_hierarchie_prenom] = useState(""); const [p_one_detail_nom, setp_one_detail_nom] = useState(); @@ -465,27 +466,24 @@ const Employes = (props) => { if (res.data.message.length > 0) { var mylocal_employe = JSON.parse(res.data.message); - - - document.getElementsByName("detail_nom")[0].value = ""; if (mylocal_employe.nom) setp_detail_nom(mylocal_employe.nom); - document.getElementsByName("detail_prenom")[0].value = ""; + if (mylocal_employe.prenom) setp_detail_prenom(mylocal_employe.prenom); - document.getElementsByName("detail_mail")[0].value = ""; + if (mylocal_employe.email) { setp_detail_mail(mylocal_employe.email); } - document.getElementsByName("detail_tel_mobile")[0].value = ""; + if (mylocal_employe.telephone_mobile) { setp_detail_tel_mobile(mylocal_employe.telephone_mobile); } - document.getElementsByName("detail_civilite")[0].value = ""; + if (mylocal_employe.civilite) { setp_detail_civilite(mylocal_employe.civilite); @@ -502,59 +500,53 @@ const Employes = (props) => { } - document.getElementsByName("detail_tel")[0].value = ""; if (mylocal_employe.telephone) { setp_detail_tel(mylocal_employe.telephone); } - document.getElementsByName("detail_adresse")[0].value = ""; if (mylocal_employe.adr_adresse) { setp_detail_adresse(mylocal_employe.adr_adresse); } - document.getElementsByName("detail_code_postal")[0].value = ""; if (mylocal_employe.adr_code_postal) { setp_detail_code_postal(mylocal_employe.adr_code_postal); } - document.getElementsByName("detail_ville")[0].value = ""; if (mylocal_employe.adr_ville) { setp_detail_ville(mylocal_employe.adr_ville); } - document.getElementsByName("detail_pays")[0].value = ""; if (mylocal_employe.adr_pays) { setp_detail_pays(mylocal_employe.adr_pays); } - document.getElementsByName("detail_linkedin")[0].value = ""; if (mylocal_employe.linkedin) { setp_detail_linkedIn(mylocal_employe.linkedin); } - document.getElementsByName("detail_facebook")[0].value = ""; + if (mylocal_employe.facebook) { setp_detail_facebook(mylocal_employe.facebook); } - document.getElementsByName("detail_twitter")[0].value = ""; + if (mylocal_employe.twitter) { setp_detail_twitter(mylocal_employe.twitter); } - document.getElementsByName("detail_profil")[0].value = ""; + if (mylocal_employe.ville) { setp_detail_profil(mylocal_employe.profil); } - document.getElementsByName("detail_fonction")[0].value = ""; + if (mylocal_employe.fonction) { setp_detail_fonction(mylocal_employe.fonction); } - document.getElementsByName("detail_ismanager")[0].value = ""; + if (mylocal_employe.ismanager) { setp_detail_ismanager(mylocal_employe.ismanager); if (String(mylocal_employe.ismanager) === "1") @@ -563,11 +555,14 @@ const Employes = (props) => { setp_detail_ismanager_label("Non"); } - document.getElementsByName("detail_resp_hierarchie_id")[0].value = ""; - if (mylocal_employe.superieur_hierarchie_id) { + + if (mylocal_employe.superieur_hierarchie_id && String(mylocal_employe.superieur_hierarchie_id).length > 2 ) { setp_detail_resp_hierarchie_id(mylocal_employe.superieur_hierarchie_id); setp_detail_resp_hierarchie_nom(mylocal_employe.superieur_hierarchie_nom); setp_detail_resp_hierarchie_prenom(mylocal_employe.superieur_hierarchie_prenom); + }else{ + setp_detail_resp_hierarchie_nom(""); + setp_detail_resp_hierarchie_prenom(""); } @@ -1224,8 +1219,8 @@ const Employes = (props) => { var myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_Ressource_Humaine/"; axios.post(myurl, form).then(res => { - console.log(" In Update_One_Employee_Data res.data.status = " + res.data.status); - console.log(" In Update_One_Employee_Data res.data.message r_class = " + res.data.message); + //console.log(" In Update_One_Employee_Data res.data.status = " + res.data.status); + //console.log(" In Update_One_Employee_Data res.data.message r_class = " + res.data.message); if (String(res.data.status) === String("true")) { setUpdate_One_Employee_Data_api("true"); @@ -1239,7 +1234,8 @@ const Employes = (props) => { Get_Employee_Data(selected_id); alert(" La mise à jour été correctement faite."); - myRef_head.current.scrollIntoView({ behavior: "smooth" }); + if (myRef_head.current) + myRef_head.current.scrollIntoView({ behavior: "smooth" }); } else { @@ -1781,8 +1777,8 @@ const Employes = (props) => { setemployee_data_edit_mode(""); alert(res.data.message); - - myRef_head.current.scrollIntoView({ behavior: "smooth" }); + if (myRef_head.current) + myRef_head.current.scrollIntoView({ behavior: "smooth" }); } else { @@ -2837,11 +2833,11 @@ const Employes = (props) => {
- +
 
{String(submenu) === "detail_employe" && String(add_One_Employee) !== "1" &&
- +
@@ -3383,7 +3379,7 @@ const Employes = (props) => { {String(submenu) === "detail_employe" && String(add_One_Employee) === "1" &&
- +
@@ -3795,7 +3791,7 @@ const Employes = (props) => { {String(submenu) === "affectation" &&
- +
@@ -4136,7 +4132,7 @@ const Employes = (props) => {  
{String(Affectation_data_changed) === "1" && String(edite_affectation_form) === "1" &&
- /!\ Pensez à enregistrer les modifications + /!\ Pensez à enregistrer les modifications bb
} @@ -4351,7 +4347,7 @@ const Employes = (props) => { {String(submenu) === "droit_acces" &&
- +
diff --git a/src/components/GestionAdministrative.js b/src/components/GestionAdministrative.js index 5a2430b..44da1cd 100644 --- a/src/components/GestionAdministrative.js +++ b/src/components/GestionAdministrative.js @@ -1791,6 +1791,26 @@ function GestionAdministrative(props) { setp_detail_session_ondemande_label("Non"); + var session_etape = "0" + + if (p_session_etape) { + session_etape = p_session_etape; + } + + if (String(session_etape) === "0") + setp_session_etape_label("Projet"); + else if (String(session_etape) === "1") + setp_session_etape_label("Planification"); + else if (String(session_etape) === "2") + setp_session_etape_label("Planifiée"); + else if (String(session_etape) === "3") + setp_session_etape_label("Terminée"); + else if (String(session_etape) === "4") + setp_session_etape_label("Facturée"); + else if (String(session_etape) === "-1") + setp_session_etape_label("Annulée"); + + var presentiel = "0" if (p_detail_presentiel) { presentiel = p_detail_presentiel; @@ -1865,6 +1885,7 @@ function GestionAdministrative(props) { const stored_cookie = getCookie('tokenmysypart'); form.append("token", stored_cookie); form.append("session_id", selected_session_id); + form.append("session_etape", p_session_etape); form.append("class_internal_url", internal_url); form.append("date_debut", format(SessionstartDate, 'dd/MM/yyyy kk:mm:ss')); form.append("date_fin", format(SessionendDate, 'dd/MM/yyyy kk:mm:ss')); @@ -1946,6 +1967,8 @@ function GestionAdministrative(props) { const [p_detail_session_ondemande, setp_detail_session_ondemande] = useState(); const [p_detail_session_ondemande_label, setp_detail_session_ondemande_label] = useState(); + const [p_session_etape, setp_session_etape] = useState(); + const [p_session_etape_label, setp_session_etape_label] = useState(); const [p_detail_one_presentiel, setp_detail_one_presentiel] = useState(); const [p_detail_presentiel, setp_detail_presentiel] = useState(); @@ -2286,6 +2309,25 @@ function GestionAdministrative(props) { setp_detail_session_ondemande_label("Non"); } + if (mylocaltraining.session_etape) { + setp_session_etape(mylocaltraining.session_etape); + if (String(mylocaltraining.session_etape) === "0") + setp_session_etape_label("Projet"); + else if (String(mylocaltraining.session_etape) === "1") + setp_session_etape_label("Planification"); + else if (String(mylocaltraining.session_etape) === "2") + setp_session_etape_label("Planifiée"); + else if (String(mylocaltraining.session_etape) === "3") + setp_session_etape_label("Terminée"); + else if (String(mylocaltraining.session_etape) === "4") + setp_session_etape_label("Facturée"); + else if (String(mylocaltraining.session_etape) === "-1") + setp_session_etape_label("Annulée"); + + } else { + setp_session_etape_label("Projet"); + setp_session_etape("0"); + } @@ -2478,9 +2520,13 @@ function GestionAdministrative(props) { document.getElementsByName("code_session")[0].disabled = true; document.getElementsByName("code_session")[0].style.backgroundColor = "#ECEFF1"; + document.getElementsByName("session_etape")[0].disabled = true; + document.getElementsByName("session_etape")[0].style.backgroundColor = "#ECEFF1"; + document.getElementsByName("sessiondatedebut")[0].disabled = true; document.getElementsByName("sessiondatedebut")[0].style.backgroundColor = "#ECEFF1"; + document.getElementsByName("sessiondatefin")[0].disabled = true; document.getElementsByName("sessiondatefin")[0].style.backgroundColor = "#ECEFF1"; @@ -2537,6 +2583,9 @@ function GestionAdministrative(props) { document.getElementsByName("sessiondatefin")[0].disabled = false; document.getElementsByName("sessiondatefin")[0].style.backgroundColor = "#FFFFFF"; + document.getElementsByName("session_etape")[0].disabled = false; + document.getElementsByName("session_etape")[0].style.backgroundColor = "#FFFFFF"; + document.getElementsByName("adresse")[0].disabled = false; document.getElementsByName("adresse")[0].style.backgroundColor = "#FFFFFF"; @@ -2578,6 +2627,7 @@ function GestionAdministrative(props) { function clearSessionFields() { document.getElementsByName("code_session")[0].value = ""; + document.getElementsByName("session_etape")[0].value = ""; document.getElementsByName("sessiondatedebut")[0].value = ""; document.getElementsByName("sessiondatefin")[0].value = ""; if (document.getElementsByName("adresse")[0]) @@ -2616,6 +2666,8 @@ function GestionAdministrative(props) { setSessionstartDate(); seturlpreview_certif(); setfield_contenu_ftion(); + setp_session_etape(); + setp_session_etape_label(); } @@ -4403,18 +4455,6 @@ function GestionAdministrative(props) { } - const status_inscription = [ - { - value: '1', - label: 'Inscription', - }, - { - value: '0', - label: 'PréInscription', - }, - - ]; - const [myinscript_status, setmyinscript_status] = useState(""); @@ -4477,7 +4517,7 @@ function GestionAdministrative(props) { const [isimgclassSelected_recid, setisimgclassSelected_recid] = useState(""); const [isimgclassSelectedfile, setisimgclassSelectedfile] = useState(false); - + const myRef_detail_inscrit = useRef(null) @@ -4908,6 +4948,28 @@ function GestionAdministrative(props) { const [isLoading, setLoading] = useState(); + const status_inscription = [ + + { + value: '0', + label: 'PréInscription', + }, + { + value: '1', + label: 'Inscription', + }, + { + value: '2', + label: 'En Cours', + }, + { + value: '-1', + label: 'Annulation', + }, + + ]; + + return (
@@ -4940,16 +5002,16 @@ function GestionAdministrative(props) {
- {isLoading &&
-
-
} + {isLoading &&
+
+
}

Gestion Administrative de : {classtitle}

isLoading = {isLoading}
- +
@@ -5538,6 +5600,50 @@ function GestionAdministrative(props) {
} + {!fields1desabled &&
Etape
+ { + setp_session_etape(e.target.value); + IssessionChanged(); + }} + > + Projet    + Planification   + Planifiée   + Terminée   + Facturée   + Annulée   + +
} + + {fields1desabled &&
Etape *
+ + + +
} +
Date Debut @@ -5991,7 +6097,7 @@ function GestionAdministrative(props) { -
+
diff --git a/src/components/Materiels.js b/src/components/Materiels.js index debfcdb..af16e24 100644 --- a/src/components/Materiels.js +++ b/src/components/Materiels.js @@ -68,11 +68,11 @@ const Materiels = (props) => { { field: '_id', headerName: '_id', hide: true }, { field: 'id', headerName: 'id', hide: true }, { field: 'ref_interne', headerName: 'Ref. Interne', flex: 1, hideable: false, }, - { field: 'nom', headerName: 'Nom', flex: 1, hide: false, }, - { field: 'famille', headerName: 'Famille', flex: 1, hide: false, }, - { field: 'marque', headerName: 'Marque', flex: 1, hide: false, }, - { field: 'type', headerName: 'Type', width: 150, hide: false, }, - { field: 'fournisseur', headerName: 'Fournisseur', flex: 1, hide: false, }, + { field: 'nom', headerName: 'Nom', flex: 1, hide: false, }, + { field: 'famille', headerName: 'Famille', flex: 1, hide: false, }, + { field: 'marque', headerName: 'Marque', flex: 1, hide: false, }, + { field: 'type', headerName: 'Type', width: 150, hide: false, }, + { field: 'fournisseur', headerName: 'Fournisseur', flex: 1, hide: false, }, { field: "delete", headerName: 'Supprimer', renderCell: (cellValues) => { @@ -141,9 +141,9 @@ const Materiels = (props) => { { field: 'id', headerName: 'id', hide: true }, { field: 'poste', headerName: 'Poste', flex: 1, hideable: false, }, { field: 'date_du', headerName: 'Du', width: 150, hide: false, }, - { field: 'date_au', headerName: 'Au', width: 150, hide: false, }, - { field: 'related_target_collection_object', headerName: 'Cible', flex: 1, hide: false, }, - { field: 'related_target_collection_id_nom', headerName: 'Cible Nom', flex: 1, hide: false, }, + { field: 'date_au', headerName: 'Au', width: 150, hide: false, }, + { field: 'related_target_collection_object', headerName: 'Cible', flex: 1, hide: false, }, + { field: 'related_target_collection_id_nom', headerName: 'Cible Nom', flex: 1, hide: false, }, { field: 'target_related_collection', headerName: 'Type', hide: true }, { field: 'target_related_collection_id', headerName: 'Type ID', hide: true }, { @@ -867,44 +867,43 @@ const Materiels = (props) => { if (res.data.message.length > 0) { var mylocal_materiel = JSON.parse(res.data.message); - document.getElementsByName("detail_ref_interne")[0].value = ""; + if (mylocal_materiel.ref_interne) setp_detail_ref_interne(mylocal_materiel.ref_interne); - document.getElementsByName("detail_nom")[0].value = ""; + if (mylocal_materiel.nom) setp_detail_nom(mylocal_materiel.nom); - document.getElementsByName("detail_description")[0].value = ""; + if (mylocal_materiel.description) setp_detail_description(mylocal_materiel.description); - document.getElementsByName("detail_detail")[0].value = ""; if (mylocal_materiel.detail) setp_detail_detail(mylocal_materiel.detail); - document.getElementsByName("detail_famille")[0].value = ""; + if (mylocal_materiel.famille) setp_detail_famille(mylocal_materiel.famille); - document.getElementsByName("detail_marque")[0].value = ""; + if (mylocal_materiel.marque) setp_detail_marque(mylocal_materiel.marque); - document.getElementsByName("detail_type")[0].value = ""; + if (mylocal_materiel.type) setp_detail_type(mylocal_materiel.type); - document.getElementsByName("detail_prix_achat")[0].value = ""; + if (mylocal_materiel.prix_achat) setp_detail_prix_achat(mylocal_materiel.prix_achat); - document.getElementsByName("detail_fournisseur")[0].value = ""; + if (mylocal_materiel.fournisseur) setp_detail_fournisseur(mylocal_materiel.fournisseur); - document.getElementsByName("detail_qty_stock")[0].value = ""; + if (mylocal_materiel.qty_stock) setp_detail_qty_stock(mylocal_materiel.qty_stock); @@ -949,11 +948,13 @@ const Materiels = (props) => { //console.log(" ### employe_id = ", employe_id); Display_Detail_Material_Data(materiel_id); + + + Getall_Materiel_Affectation(materiel_id); if (myRef.current) { myRef.current.scrollIntoView({ behavior: "smooth" }); } - Getall_Materiel_Affectation(materiel_id); } @@ -1256,9 +1257,9 @@ const Materiels = (props) => { setmateriel_data_changed(""); setmateriel_data_edit_mode(""); Getall_Training_Materiel(selected_id); - alert(" La mise à jour été correctement faite."); - setsubmenu("detail_materiel"); + + setsubmenu(""); setadd_One_Materiel(""); //Get_Materiel_Data(selected_id); Display_Detail_Material_Data(selected_id); @@ -1266,6 +1267,8 @@ const Materiels = (props) => { if (myRef_head) myRef_head.current.scrollIntoView({ behavior: "smooth" }); + alert(" La mise à jour été correctement faite."); + } else { setUpdate_One_Materiel_Data_api("false"); @@ -2435,6 +2438,7 @@ const Materiels = (props) => { {String(liste_sessions_file_change_api) === String("true") && } {String(liste_sessions_file_change_api) === String("false") && } + {/* { /> Télécharger un fichier modèle + */}
+ +
 
+ + {String(submenu) === "detail_materiel" && String(add_One_Materiel) !== "1" &&
- +
@@ -2773,7 +2782,7 @@ const Materiels = (props) => { {String(submenu) === "detail_materiel" && String(add_One_Materiel) === "1" &&
- +
@@ -3027,7 +3036,7 @@ const Materiels = (props) => { {String(submenu) === "affectation" &&
- +
@@ -3579,7 +3588,7 @@ const Materiels = (props) => {
}
} - +
 
); diff --git a/src/components/Partner.js b/src/components/Partner.js index 217e424..4180d4d 100644 --- a/src/components/Partner.js +++ b/src/components/Partner.js @@ -936,7 +936,7 @@ const Partner = (props) => { - Télécharger un fichier modèle + Télécharger un fichier modèle
@@ -974,7 +974,7 @@ const Partner = (props) => { {String(partnerstatus) !== String("0") &&
- Import excel d'une formation Télécharger un fichier modèle + Import excel d'une formation Télécharger un fichier modèle
diff --git a/src/components/Partner_Client.js b/src/components/Partner_Client.js index 5bb9c6e..8ad9842 100644 --- a/src/components/Partner_Client.js +++ b/src/components/Partner_Client.js @@ -55,6 +55,9 @@ import InputAdornment from '@mui/material/InputAdornment'; import { AiFillCloseCircle } from "react-icons/ai"; import { CiTrash } from "react-icons/ci"; import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md"; +import Popup from 'reactjs-popup'; +import 'reactjs-popup/dist/index.css'; + const Partner_Client = (props) => { @@ -64,6 +67,7 @@ const Partner_Client = (props) => { const [selectionModel, setSelectionModel] = React.useState([]); const columns_clients = [ { field: 'id', headerName: 'id', hide: true }, + { field: '_id', headerName: '_id', hide: true }, { field: 'email', headerName: 'email', width: 100, hideable: false, flex: 1 }, { field: 'nom', headerName: 'nom', width: 100, hide: false, editable: true, flex: 1 }, @@ -87,11 +91,59 @@ const Partner_Client = (props) => { renderCell: (cellValues) => { return ( -
{ - handleClick_supprimer(event, cellValues); - }}> - -
+ { + // handleClick_delete(event, cellValues); + }} + > + + + } + modal + nested + position="center center" + > + {close => ( +
+ +
MySy Information
+
+ {' '} + + En confirmant cette opération, le client sera définitivement supprimé.
+ Avant, assurez-vous de n'avoir aucun stagiaire, un devis ou commande rattaché au client. + +
+
+
+ + +
+
+ +
+
+
+ )} +
+ + ); } @@ -102,6 +154,8 @@ const Partner_Client = (props) => { const [rowSelectionModel, setRowSelectionModel] = React.useState([]); + const myRef_add_client = useRef(null) + const myRef_head = useRef(null) const [Edite_Client, setEdite_Client] = useState(""); const [Client_email, setClient_email] = useState(""); @@ -109,19 +163,74 @@ const Partner_Client = (props) => { var clientmail = String(cellValues.row.email); setClient_email(clientmail); setEdite_Client("1"); + window.scrollTo({ + top: 600, + left: 0, + behavior: "smooth", + }); } function handleClick_add_new_client(event, cellValues) { setEdite_Client("2"); + window.scrollTo({ + top: 600, + left: 0, + behavior: "smooth", + }); } function handleClick_supprimer(event, cellValues) { var clientmail = String(cellValues.row.email); - alert(" en cours de dev"); + var client_id = String(cellValues.row._id); + Delete_Client_Data(client_id); } + + const [Delete_Client_Data_api, setDelete_Client_Data_api] = useState(); + const [Delete_Client_Data_message, setDelete_Client_Data_message] = useState(); + const [Delete_Client_Data_result, setDelete_Client_Data_result] = useState(); + function Delete_Client_Data(local_client_id) { + + var form = new FormData(); + const stored_cookie = getCookie('tokenmysypart'); + + form.append("token", stored_cookie); + form.append("_id", local_client_id); + + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Delete_Given_Partner_Client/"; + + axios.post(myurl, form).then(res => { + //console.log(" In Delete_Client_Data res.data.status = " + res.data.status); + //console.log(" In Delete_Client_Data res.data.message r_class = " + res.data.message); + + if (String(res.data.status) === String("true")) { + setDelete_Client_Data_api("true"); + setDelete_Client_Data_result(res.data.message); + Get_List_Partner_Clients(); + setSelectionModel([]); + setEdite_Client(); + alert(res.data.message); + } + else if (String(res.data.status) === String("Err_Connexion")) { + alert(res.data.message); + history.push("/Connexion"); + } + else { + setDelete_Client_Data_api("false"); + setDelete_Client_Data_message(res.data.message); + alert(res.data.message); + } + + }).catch((error) => { + console.warn('Not good man :( Delete_Client_Data = ', error); + setDelete_Client_Data_api("false"); + alert(" Impossible de supprimer le client"); + }) + } + const [Get_List_Partner_Clients_api, setGet_List_Partner_Clients_api] = useState(); const [Get_List_Partner_Clients_message, setGet_List_Partner_Clients_message] = useState(); const [Get_List_Partner_Clients_result, setGet_List_Partner_Clients_result] = useState(); @@ -172,6 +281,11 @@ const Partner_Client = (props) => { useEffect(() => { //menu_info(); Get_List_Partner_Clients(); + window.scrollTo({ + top: 0, + left: 0, + behavior: "smooth", + }); }, []); @@ -288,7 +402,7 @@ const Partner_Client = (props) => { if (myRef_detail_client.current) { myRef_detail_client.current.scrollIntoView({ behavior: "smooth" }); } - + } } @@ -309,6 +423,14 @@ const Partner_Client = (props) => { } + function father_scroll_to_top() { + window.scrollTo({ + top: 0, + left: 0, + behavior: "smooth", + }); + } + const myRef_detail_client = useRef(null) return ( @@ -463,7 +585,7 @@ const Partner_Client = (props) => { {
-
@@ -505,6 +627,7 @@ const Partner_Client = (props) => { id: index, email: JSON.parse(item).email, nom: JSON.parse(item).nom, + _id: JSON.parse(item)._id, } ))} @@ -525,6 +648,9 @@ const Partner_Client = (props) => { setSelectionModel(newSelectionModel); if (newSelectionModel.length === 1) handleClick_edit_session_From_Line(newSelectionModel); + else{ + setEdite_Client(); + } }} selectionModel={selectionModel} @@ -574,20 +700,21 @@ const Partner_Client = (props) => {
+ {String(Edite_Client) === "1" &&
Detail client : {Client_email}
- +
} {String(Edite_Client) === "2" &&
Detail client : {Client_email}
- +
&nbs;
+ Get_List_Partner_Clients={Get_List_Partner_Clients} father_scroll_to_top={father_scroll_to_top} />
} diff --git a/src/components/Partner_Commande.js b/src/components/Partner_Commande.js index 7b4a1d3..748cd01 100644 --- a/src/components/Partner_Commande.js +++ b/src/components/Partner_Commande.js @@ -68,10 +68,10 @@ const Partner_Commande = (props) => { const columns = [ { field: '_id', headerName: '_id', hide: true }, { field: 'id', headerName: 'id', hide: true }, - { field: 'order_header_ref_interne', headerName: 'Reference', width: 100, hide: false, editable: true }, - { field: 'order_header_type', headerName: 'Type', width: 100, hide: false, editable: true }, + { field: 'order_header_ref_interne', headerName: 'Reference', width: 100, hide: false, editable: false }, + { field: 'order_header_type', headerName: 'Type', width: 100, hide: false, editable: false }, { - field: 'order_header_status', headerName: 'Statut', width: 100, hide: false, editable: true, + field: 'order_header_status', headerName: 'Statut', width: 100, hide: false, editable: false, valueFormatter: (params) => { if (String(params.value) === "-1") return "Annulé"; @@ -88,12 +88,12 @@ const Partner_Commande = (props) => { }, }, - { field: 'order_header_client_id', headerName: 'Client_Id', width: 150, hide: true }, + { field: 'order_header_client_id', headerName: 'Client_Id', width: 150, hide: true, editable: false }, { field: 'order_header_client_nom', headerName: 'Nom Client', width: 150, hideable: false, flex: 1 }, - { field: 'order_header_vendeur_id', headerName: 'Vendeur Id', width: 150, hide: true }, - { field: 'order_header_vendeur_nom_prenom', headerName: 'Vendeur', width: 150, hideable: false, flex: 1 }, - { field: 'order_header_date_cmd', headerName: 'Date', width: 150, hide: false, editable: true }, - { field: 'order_header_date_expiration', headerName: 'Date Expiration', width: 150, hide: false, editable: true }, + { field: 'order_header_vendeur_id', headerName: 'Vendeur Id', width: 150, hide: true, editable: false }, + { field: 'order_header_vendeur_nom_prenom', headerName: 'Vendeur', width: 150, hideable: false, flex: 1, editable: false }, + { field: 'order_header_date_cmd', headerName: 'Date', width: 150, hide: false, editable: false }, + { field: 'order_header_date_expiration', headerName: 'Date Expiration', width: 150, hide: false, editable: false }, /* { @@ -188,11 +188,11 @@ const Partner_Commande = (props) => { { field: 'order_line_qty', headerName: 'Qte', width: 100, hide: false, editable: false }, { field: 'order_line_prix_unitaire', headerName: 'Prix Unit.', width: 100, hide: false, editable: false }, - { field: 'order_header_id', headerName: 'Id_Entete', hide: true }, - { field: 'order_header_ref_interne', headerName: 'Ref_Interne', hide: true }, + { field: 'order_header_id', headerName: 'Id_Entete', hide: true, editable: false }, + { field: 'order_header_ref_interne', headerName: 'Ref_Interne', hide: true, editable: false }, { field: 'order_line_type', headerName: 'Type', width: 100, hide: false, editable: false }, { - field: 'order_line_status', headerName: 'Statut', width: 150, hide: false, editable: true, + field: 'order_line_status', headerName: 'Statut', width: 150, hide: false, editable: false, valueFormatter: (params) => { if (String(params.value) === "-1") return "Annulé"; @@ -2513,171 +2513,190 @@ const Partner_Commande = (props) => { Edition d'un ligne de commande / devis +
Article + { + setp_add_line_item(e.target.value); + setp_add_line_item_internal_url(e.target.value); + const div1 = document.getElementById("mysy_item_class"); + const mysy_item_class_title = div1.getAttribute('mysy_item_class_title'); + setp_add_line_item_title(mysy_item_class_title); + //console.log(" Selected title = ", mysy_item_class_title); + } + } + > + {GetCurrentPartnerClass_result && + GetCurrentPartnerClass_result.map((myclass) => ( + + {JSON.parse(myclass).title} - { - setp_add_line_item(e.target.value); - setp_add_line_item_internal_url(e.target.value); - const div1 = document.getElementById("mysy_item_class"); - const mysy_item_class_title = div1.getAttribute('mysy_item_class_title'); - setp_add_line_item_title(mysy_item_class_title); - //console.log(" Selected title = ", mysy_item_class_title); - } - } - > - {GetCurrentPartnerClass_result && - GetCurrentPartnerClass_result.map((myclass) => ( - - {JSON.parse(myclass).title} + + ))} + - - ))} - +
+
Quantité + + { + setp_add_line_item_qty(e.target.value); + Recalcul_Item_Amounts(); + } + } + /> + +
+ +
Prix Unitaire + { + setp_add_line_item_price(e.target.value); + Recalcul_Item_Amounts(); + } + } + /> +
+ +
Type reduction + { + setp_add_line_item_type_reduction(e.target.value); + //console.log(" ## e.target.value = ", e.target.value); + setp_add_line_item_reduction_value("0"); + setp_add_line_item_reduction_total_amount('0'); + setp_add_line_item_reduction_value('0'); + setp_add_line_item_total_amount_ht('0'); + + } + } + + > + Montant   + Pourcentage   + + +
+ +
Reduction + { + setp_add_line_item_reduction_value(e.target.value); + Recalcul_Item_Amounts(); + + } + } + /> + +
+ +
Total Reduction + { - setp_add_line_item_qty(e.target.value); - Recalcul_Item_Amounts(); - } - } - /> - { - setp_add_line_item_price(e.target.value); - Recalcul_Item_Amounts(); - } - } - /> + /> - { - setp_add_line_item_type_reduction(e.target.value); - console.log(" ## e.target.value = ", e.target.value); - setp_add_line_item_reduction_value("0"); - setp_add_line_item_reduction_total_amount('0'); - setp_add_line_item_reduction_value('0'); - setp_add_line_item_total_amount_ht('0'); +
- } - } +
Commentaire + - Montant   - Pourcentage   + name="ref_article_comment" + id="ref_article_comment" + autoFocus + fullWidth - + value={p_add_line_item_comment} + onChange={(e) => { + setp_add_line_item_comment(e.target.value); - { - setp_add_line_item_reduction_value(e.target.value); - Recalcul_Item_Amounts(); + } + } + //label="Commentaire" + //variant="standard" + multiline + minRows={2} + maxRows={2} + rows={2} - } - } - /> + /> +
- Total HT + { + setp_add_line_item_total_amount_ht(e.target.value); + } + } + /> +
- /> + {/*
Total HT - - { - setp_add_line_item_comment(e.target.value); - - } - } - label="Commentaire" - //variant="standard" - multiline - minRows={2} - maxRows={2} - rows={2} - - /> - - { - setp_add_line_item_total_amount_ht(e.target.value); - - } - } - /> - - -
Total HT
{ className="disabled_style_Dialog" value={p_add_line_item_total_amount_ht} /> -
+
*/} @@ -2724,7 +2743,7 @@ const Partner_Commande = (props) => { Nouvelle Commande -
Client +
Client {
-
Description
+
Description
{ />
-
Ref. externe
+
Ref. externe
{ />
-
Vendeur
+
Vendeur
{
-
Conditions Paiement
+
Conditions Paiement
{
-
Type
+
Type
{
-
Emplacement
+
Emplacement
{
-
Commentaire
+
Commentaire
{ -
@@ -3746,7 +3764,7 @@ const Partner_Commande = (props) => { />
} - {String(order_data_edit_mode) === "1" &&
Vendeur
+ {String(order_data_edit_mode) === "1" &&
Vendeur t
{ {Getall_Training_Employee_No_Filter_result && Getall_Training_Employee_No_Filter_result.map((myclient) => ( + style={{ "paddingLeft": "5px", "textAlign": "left","height":"2rem" }}> {JSON.parse(myclient).nom}  {JSON.parse(myclient).prenom} @@ -4186,13 +4204,13 @@ const Partner_Commande = (props) => {
- - {String(selected_order_header_type) === "devis" && } - - + + {String(selected_order_header_type) === "devis" && } + + Supprimer } + trigger={} modal nested @@ -4235,7 +4253,7 @@ const Partner_Commande = (props) => { )} -

+

@@ -4283,7 +4301,9 @@ const Partner_Commande = (props) => {
- +