25/09/2023 - 12h40

recette2
cherif 2023-09-25 12:41:46 +02:00
parent 3e02c431c0
commit c4f170ec00
32 changed files with 940 additions and 476 deletions

View File

@ -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 quen est-il exactement ? <l>
Quest ce quune base de données, comment sont-elles utilisées pour améliorer nos actions et processus au quotidien ?<l>
Ce cours vous donnera un aperçu et les clés pour aller plus loin.<l><l>
En maitrisant les concepts définis dans les objectifs pédagogiques, vous pourrez :<l>
- Concevoir une base de données relationnelle, <l>
- Gérer et Administrer les contenus des bases de données.<l>";iexercice;"Ce cours vous permettra de maitriser les concepts de base pour la manipulation des base de données.<l>
En dautres termes, à la fin de ce module, lapprenant sera en mesure de :<l>
• De se connecter à une base de données de type Mysql et Postgresql<l>
• De créer et mettre à jour et supprimer une base de base de données<l>
• Créer et mettre jour et supprimer des tables de données, de les lier avec clés<l>
• Dinsérer, mettre à jour et supprimer des enregistrements.<l>
• De créer des requête SQL nécessitant la jonction entre plusieurs tables.<l>";"Dans ce module, plusieurs concepts seront abordés comme : <l>
• Une base de données<l>
• Les roles, les utilisateurs<l>
• Les clés de liaison entre les tables<l>
• Les requête SQL<l>";Pour être à laise dans ce module, lapprenant devra maitriser les concepts de base données, de modélisation dinformation.;1;iexercice;1;1;1500;5;https://img.mysy-training.com/1000formation/LOGO-FORMATION1000.png;;5;jour;;BDD, relationnel,SQL;Informatique;1;1;;;mixte;
1 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
2 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 ? <l> Qu’est ce qu’une base de données, comment sont-elles utilisées pour améliorer nos actions et processus au quotidien ?<l> Ce cours vous donnera un aperçu et les clés pour aller plus loin.<l><l> En maitrisant les concepts définis dans les objectifs pédagogiques, vous pourrez :<l> - Concevoir une base de données relationnelle, <l> - Gérer et Administrer les contenus des bases de données.<l> iexercice Ce cours vous permettra de maitriser les concepts de base pour la manipulation des base de données.<l> En d’autres termes, à la fin de ce module, l’apprenant sera en mesure de :<l> • De se connecter à une base de données de type Mysql et Postgresql<l> • De créer et mettre à jour et supprimer une base de base de données<l> • Créer et mettre jour et supprimer des tables de données, de les lier avec clés<l> • D’insérer, mettre à jour et supprimer des enregistrements.<l> • De créer des requête SQL nécessitant la jonction entre plusieurs tables.<l> Dans ce module, plusieurs concepts seront abordés comme : <l> • Une base de données<l> • Les roles, les utilisateurs<l> • Les clés de liaison entre les tables<l> • Les requête SQL<l> 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

View File

@ -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

1 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
2 client122 client_test01 raison_sociale1 email1@mysy-training.fr email-test01@mysy-training.fr 2 place du test 75001 Paris France Siret1 1010101 www.client1.fr www.client_test01.fr invoice_adresse invoice_code_postal fact@mysy.fr invoice_nom_val invoice_siret_val invoice_tva invoice_ville invoice_pays
3 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

View File

@ -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

1 nom prenom email telephone_mobile telephone profil ismanager superieur_hierarchie_email civilite adresse code_postal ville pays facebook fonction linkedin twitter
2 emp_nom01 nom_namanger1 emp_prenpm02 Prenom_Mnager1 emp_nom01@mysy.com manager_01@mysy.com 6555555 1222222 enseignant directeur non email_employe3@mysy.com M Mme emp_adresse01 582222 paris01 France em_face01 emp_fonction01 emp_link01 emp_tiwter01
3 emp_nom02 nom_namanger2 emp_prenpm03 Prenom_Mnager2 emp_nom02@mysy.com manager_02@mysy.com 6555555 1222222 enseignant administratif non email_employe3@mysy.com Neutre emp_adresse02 582223 paris02 France em_face02 emp_fonction02 emp_link02 emp_tiwter02
4 emp_nom03 emp_test01 emp_prenpm04 prenom01 emp_nom03@mysy.com testnom01@mysy.com 6555555 1222222 enseignant non email_employe3@mysy.com manager_01@mysy.com M emp_adresse03 emp_adresse01 582224 582222 paris03 paris01 France em_face03 em_face01 emp_fonction03 emp_fonction01 emp_link03 emp_link01 emp_tiwter03 emp_tiwter01
5 emp_nom04 emp_test02 emp_prenpm05 prenom02 emp_nom04@mysy.com testnom02@mysy.com 6555555 1222222 enseignant non email_employe3@mysy.com manager_01@mysy.com Mme Neutre emp_adresse04 emp_adresse02 582225 582223 paris04 paris02 France em_face04 em_face02 emp_fonction04 emp_fonction02 emp_link04 emp_link02 emp_tiwter04 emp_tiwter02

View File

@ -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;LAromathé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 lusage des huiles essentielles. <l> Faire le lien entre la composition biochimique dune huile essentielle et ses actions sur lorganisme.<l> Intégrer les bases indispensables de biochimie, danatomie et de physiologie humaine. <l> Évaluer une situation dexclusion réclamant une prise en charge médicale. <l> Analyser une situation et les attentes dun consultant pour définir une stratégie daccompagnement adaptée avec des huiles essentielles dans les domaines relevant de sa compétence. <l> Établir une formule parfaitement adaptée à une personne et un problème. <l> Être capable de fabriquer un baume, une crème, une composition huileuse. ;Modules de 3 jours par mois en présentiel. <l> Entrainement à distance avec documents, vidéos et quiz en ligne <l> Evaluation à chaque module sur le programme du module précédent;Le niveau BAC est recommandé mais pas obligatoire. <l>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 :<l> Groupe de discussion sur messagerie whatsapp. <l> Evaluations pour vérifier l'atteinte des objectifs pédagogiques. <l> Evaluation, finale des compétences <l> 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 <l> • Aux particuliers en reconversion professionnelle dans le domaine de la santé et du bien-être <l> • Aux particuliers pour une utilisation familiale ou en démarche personnelle. <l> Inclusion des personnes handicapées.;mixte;
MYSY_Test_OP;PRATICIEN EN OLFACTOTHERAPIE;sante_nat;"Les huiles essentielles au service de notre équilibre psycho-émotionnel.<l>
Les informations olfactives sont en priorité traitées dans le cerveau par le système limbique qui gère aussi la mémoire émotionnelle.<l>
Ainsi une simple odeur peut faire remonter des émotions en lien avec un vécu plus ou moins traumatique, permettant de comprendre quels besoins nont pas été entendus et qui causent des souffrances plus ou moins conscientes.<l>
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 lusage des huiles essentielles. <l> Évaluer une situation dexclusion réclamant une prise en charge différente. <l> Analyser une situation et les attentes dun consultant pour définir une stratégie daccompagnement adaptée avec des huiles essentielles dans les domaines relevant de sa compétence. <l> Proposer une HE parfaitement adaptée à une personne en demande daccompagnement psycho-émotionnel. ;Modules de 3 jours par mois en présentiel. <l> Entrainement à distance avec documents, vidéos et quiz en ligne ;Aucun prérequis nest 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 :<l> Groupe de discussion sur messagerie whatsapp. <l> Entrainements à la consultation avec clients volontaires. <l> Evaluation, finale des compétences <l> Rédaction d'un travail personnel de synthèse.<l> 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 nest demandé, cette formation est ouverte à toute personne motivée à travailler sur elle pour pouvoir mieux accompagner lAutre.<l>
Elle est tout particulièrement conseillée aux sophrologues, praticiens en hypnose, aux psychothérapeutes et praticiens en relation daide désirant acquérir un outil complémentaire qui décuplera lefficacité de leurs propres techniques.";mixte;
MYSY_Test_AR;PRATICIEN EN AROMATHERAPIE INTEGRATIVE;sante_nat;LAromathé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 lusage des huiles essentielles. <l> Faire le lien entre la composition biochimique dune huile essentielle et ses actions sur lorganisme.<l> Intégrer les bases indispensables de biochimie, danatomie et de physiologie humaine. <l> Évaluer une situation dexclusion réclamant une prise en charge médicale. <l> Analyser une situation et les attentes dun consultant pour définir une stratégie daccompagnement adaptée avec des huiles essentielles dans les domaines relevant de sa compétence. <l> Établir une formule parfaitement adaptée à une personne et un problème. <l> Être capable de fabriquer un baume, une crème, une composition huileuse. ;Modules de 3 jours par mois en présentiel. <l> Entrainement à distance avec documents, vidéos et quiz en ligne <l> 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. <l> Groupe de discussion sur messagerie whatsapp. <l> Evaluations pour vérifier l'atteinte des objectifs pédagogiques. <l> Evaluation, finale des compétences <l> Rédaction d'un travail de synthèse avec sujet au choix.;AROMATHERAPIE, HUILES ESSENTIELLES, AROMA;dev_perso;1;1;;;mixte;
1 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
2 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. <l> Faire le lien entre la composition biochimique d’une huile essentielle et ses actions sur l’organisme.<l> Intégrer les bases indispensables de biochimie, d’anatomie et de physiologie humaine. <l> Évaluer une situation d’exclusion réclamant une prise en charge médicale. <l> 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. <l> Établir une formule parfaitement adaptée à une personne et un problème. <l> Être capable de fabriquer un baume, une crème, une composition huileuse. Modules de 3 jours par mois en présentiel. <l> Entrainement à distance avec documents, vidéos et quiz en ligne <l> Evaluation à chaque module sur le programme du module précédent Le niveau BAC est recommandé mais pas obligatoire. <l>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 :<l> Groupe de discussion sur messagerie whatsapp. <l> Evaluations pour vérifier l'atteinte des objectifs pédagogiques. <l> Evaluation, finale des compétences <l> 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 <l> • Aux particuliers en reconversion professionnelle dans le domaine de la santé et du bien-être <l> • Aux particuliers pour une utilisation familiale ou en démarche personnelle. <l> Inclusion des personnes handicapées. mixte
3 MYSY_Test_OP PRATICIEN EN OLFACTOTHERAPIE sante_nat Les huiles essentielles au service de notre équilibre psycho-émotionnel​.<l> Les informations olfactives sont en priorité traitées dans le cerveau par le système limbique qui gère aussi la mémoire émotionnelle.<l> 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> 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. <l> Évaluer une situation d’exclusion réclamant une prise en charge différente. <l> 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. <l> Proposer une HE parfaitement adaptée à une personne en demande d’accompagnement psycho-émotionnel. Modules de 3 jours par mois en présentiel. <l> 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 :<l> Groupe de discussion sur messagerie whatsapp. <l> Entrainements à la consultation avec clients volontaires. <l> Evaluation, finale des compétences <l> Rédaction d'un travail personnel de synthèse.<l> 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.<l> 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
4 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. <l> Faire le lien entre la composition biochimique d’une huile essentielle et ses actions sur l’organisme.<l> Intégrer les bases indispensables de biochimie, d’anatomie et de physiologie humaine. <l> Évaluer une situation d’exclusion réclamant une prise en charge médicale. <l> 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. <l> Établir une formule parfaitement adaptée à une personne et un problème. <l> Être capable de fabriquer un baume, une crème, une composition huileuse. Modules de 3 jours par mois en présentiel. <l> Entrainement à distance avec documents, vidéos et quiz en ligne <l> 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. <l> Groupe de discussion sur messagerie whatsapp. <l> Evaluations pour vérifier l'atteinte des objectifs pédagogiques. <l> Evaluation, finale des compétences <l> Rédaction d'un travail de synthèse avec sujet au choix. AROMATHERAPIE, HUILES ESSENTIELLES, AROMA dev_perso 1 1 mixte

View File

@ -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. <l>
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 :<l>
<g>• Entretien 1 :</g> prise de connaissance mutuelle, recueil d'informations, phase de rédaction de proposition <l>
<g>• Entretien 2 : </g>présentation et défense de la proposition<l>
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. <l>";MySy Training;"• Utiliser des outils numériques pour augmenter ses ventes en magasin comme à distance <l>
• Utiliser des outils d'analyse connectés pour identifier sa cible et analyser son marché<l>
• Rendre le client acteur de la vente et de la promotion des produits et des services<l>";"<g>MODULE 1 : LA COMPREHENSION BASIQUE DU PROCESSUS DE VENTE </g> <l>
• Vente en B2B ou B2C : modalités applicables par le vendeur et dispositions diverses<l>
• Quest-ce-que la règle des 4 C dans lunivers de la vente ?<l>
• Parlons de lomnicanalité et de son impact dans lorganisation commerciale<l>
<g>MODULE 2 : LA PROSPECTION ET LA DECOUVERTE CLIENT</g><l>
• Les 4 étapes indispensables de la prospection client <l>
• 6 étapes clés pour une prospection commerciale digitale efficace<l>
• Lart du Storytelling ou comment raconter une histoire qui fait vendre ! <l>
";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. <l>
Pour vivre pleinement l'expérience du manager, des clés, techniques et méthodes ont été mise en place. <l>
Grace à cette formation vous apprendrez et maitriserais les outils nécessaires à votre épanouissement.<l>
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 !<l>";MySy Training;"• Appréhender les enjeux du management <l>
• Comprendre et maitriser les rôles et responsabilités du manager<l>
• Acquérir les techniques et outils de base du management pour conduire, animer et suivre une équipe<l>";"<g>INTRODUCTION : </g><l>
Quest-ce que le management ?<l>
Les dimensions et axes du management d'aujourd'hui.<l>
Le management dans les entreprises<l>
<g>LEADERSHIP ET MANAGEMENT :</g><l>
Un leader doit-il être exemplaire<l>
Devenir un maître plutôt quun contrôlant<l>
Qu'est-ce que le LEADERSHIP<l>
<g>GESTION DES EQUIPES :</g><l>
6 clefs dune cohésion déquipe<l>
Quel est le style de management le plus efficace<l>
Comment fidéliser vos équipes dans le temp<l>
<g>DEVELOPPER UNE INTELLIGENCE RELATIONNELLE :</g><l>
Établir un rapport d'égal à égal pour vous affirmer avec tact<l>
Cultiver un regard positif<l>
Saffirmer sainement, adopter une attitude constructive<l>
";;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).<l>
La formation est conçue pour favoriser le développement des compétences professionnelles, axée la recherche collective de bonnes pratiques.<l>";;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 dun niveau de compréhension général <g>dAgile Project Management. </g> <l>
La formation AgilePM Foundation a pour but de sassurer quun candidat comprend la philosophie, les principes, les processus, les personnes, les produits et les techniques de la gestion de projet Agile. <l>";MySy Training;"A la fin de la formation, le participant doit, entre autre, être capable de :<l>
• Comprendre les bases de la philosophie et des principes Agile<l>
• Comprendre le cycle de vie dun projet Agile, incluant les configurations alternatives<l>
• Comprendre les produits de projets Agile ainsi que leur utilité<l>
• Comprendre les techniques utilisés ainsi que leurs bénéfices et limites<l>
• Comprendre les rôles et responsabilités au sein dun projet Agile<l>";"bases de la philosophie et des principes Agile<l>
cycle de vie dun projet Agile, incluant les configurations alternatives<l>
produits de projets Agile ainsi que leur utilité<l>
techniques utilisés ainsi que leurs bénéfices et limites<l>
les rôles et responsabilités au sein dun projet Agile<l>";;1;MySy Training;1;1;1150;4;https://img.mysy-training.com/MYSY-LOGO-BLUE.png;;;"1. Nous garantissons une expérience dapprentissage complète. Notre formation comprend une lecture préparatoire, le manuel (pour les formations en présentiel), des exercices et études de cas et lexamen officiel.<l>
2. Nous avons un taux de réussite de 99% à lexamen AgilePM Foundation !<l>
3. Profitez de nos 20 années dexpérience dans la formation et le conseil sur les Bonnes Pratiques en Management.<l>
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.<l>
";"agile;management;agil";IT;1;1;;"• Chef de projet<l>
• Membre de léquipe agile qui cherche à devenir chef de projet Agile<l>";mixte;https://img.mysy-training.com/MYSY-LOGO-BLUE.png
1 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
2 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. <l> 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 :<l> <g>• Entretien 1 :</g> prise de connaissance mutuelle, recueil d'informations, phase de rédaction de proposition <l> <g>• Entretien 2 : </g>présentation et défense de la proposition<l> 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. <l> MySy Training • Utiliser des outils numériques pour augmenter ses ventes en magasin comme à distance <l> • Utiliser des outils d'analyse connectés pour identifier sa cible et analyser son marché<l> • Rendre le client acteur de la vente et de la promotion des produits et des services<l> <g>MODULE 1 : LA COMPREHENSION BASIQUE DU PROCESSUS DE VENTE </g> <l> • Vente en B2B ou B2C : modalités applicables par le vendeur et dispositions diverses<l> • Qu’est-ce-que la règle des 4 C dans l’univers de la vente ?<l> • Parlons de l’omnicanalité et de son impact dans l’organisation commerciale<l> <g>MODULE 2 : LA PROSPECTION ET LA DECOUVERTE CLIENT</g><l> • Les 4 étapes indispensables de la prospection client <l> • 6 étapes clés pour une prospection commerciale digitale efficace<l> • L’art du Storytelling ou comment raconter une histoire qui fait vendre ! <l> 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
3 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. <l> Pour vivre pleinement l'expérience du manager, des clés, techniques et méthodes ont été mise en place. <l> Grace à cette formation vous apprendrez et maitriserais les outils nécessaires à votre épanouissement.<l> 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 !<l> MySy Training • Appréhender les enjeux du management <l> • Comprendre et maitriser les rôles et responsabilités du manager<l> • Acquérir les techniques et outils de base du management pour conduire, animer et suivre une équipe<l> <g>INTRODUCTION : </g><l> Qu’est-ce que le management ?<l> Les dimensions et axes du management d'aujourd'hui.<l> Le management dans les entreprises<l> <g>LEADERSHIP ET MANAGEMENT :</g><l> Un leader doit-il être exemplaire<l> Devenir un maître plutôt qu’un contrôlant<l> Qu'est-ce que le LEADERSHIP<l> <g>GESTION DES EQUIPES :</g><l> 6 clefs d’une cohésion d’équipe<l> Quel est le style de management le plus efficace<l> Comment fidéliser vos équipes dans le temp<l> <g>DEVELOPPER UNE INTELLIGENCE RELATIONNELLE :</g><l> Établir un rapport d'égal à égal pour vous affirmer avec tact<l> Cultiver un regard positif<l> S’affirmer sainement, adopter une attitude constructive<l> 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).<l> La formation est conçue pour favoriser le développement des compétences professionnelles, axée la recherche collective de bonnes pratiques.<l> 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
4 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 <g>d’Agile Project Management. </g> <l> 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. <l> MySy Training A la fin de la formation, le participant doit, entre autre, être capable de :<l> • Comprendre les bases de la philosophie et des principes Agile<l> • Comprendre le cycle de vie d’un projet Agile, incluant les configurations alternatives<l> • Comprendre les produits de projets Agile ainsi que leur utilité<l> • Comprendre les techniques utilisés ainsi que leurs bénéfices et limites<l> • Comprendre les rôles et responsabilités au sein d’un projet Agile<l> bases de la philosophie et des principes Agile<l> cycle de vie d’un projet Agile, incluant les configurations alternatives<l> produits de projets Agile ainsi que leur utilité<l> techniques utilisés ainsi que leurs bénéfices et limites<l> les rôles et responsabilités au sein d’un projet Agile<l> 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.<l> 2. Nous avons un taux de réussite de 99% à l’examen AgilePM Foundation !<l> 3. Profitez de nos 20 années d’expérience dans la formation et le conseil sur les Bonnes Pratiques en Management.<l> 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.<l> agile;management;agil IT 1 1 • Chef de projet<l> • Membre de l’équipe agile qui cherche à devenir chef de projet Agile<l> mixte https://img.mysy-training.com/MYSY-LOGO-BLUE.png

View File

@ -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

1 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
2 MYSY_Test_AP KANA1 AP_01 11/10/2023 13/10/2023 20 2 passage de la Providence 75020 Paris 01/09/2023 30/09/2023 NBE MySy_Trainer 1 0 750 1 Apprentissage des Kana 0
3 MYSY_Test_AP KANA2 AP_02 14/11/2023 16/11/2023 15 2 passage de la Providence 75020 Paris 01/09/2023 30/09/2023 NBE MySy_Trainer 1 0 750 1 Apprentissage des Kana 0
4 MYSY_Test_AP MYSY_Test_OP KANA3 OP_01 21/11/2023 23/11/2023 10 2 passage de la Providence 75020 Paris 01/09/2023 30/09/2023 NBE MySy_Trainer 1 0 750 1 Perfectionnement 0
5 MYSY_Test_AP MYSY_Test_OP KANA4 OP_02 28/11/2023 30/11/2023 15 2 passage de la Providence 75020 Paris 01/09/2023 30/09/2023 NBE MySy_Trainer 1 0 750 1 Perfectionnement 0
6 MYSY_Test_AR AR_01 01/03/2024 11/03/2024 5 18/09/2023 29/02/2024 1 0 1 0
7 MYSY_Test_AR AR_02 02/12/2023 10/12/2023 9 18/09/2023 01/12/2023 1 0 1 0

View File

@ -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
1 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
2 MYSY_1000forma2_s1 01/03/2023 17/03/2023 10 75000 paris 1 03/01/2023 28/02/2023 MySy Training 1 0 1300
3 MYSY_1000forma2_s2 05/04/2023 07/04/2023 10 75000 paris 1 03/01/2023 04/04/2023 MySy Training 0 1 1300

View File

@ -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

1 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
2 MYSY_Test_AP AR01 AP_01 part 2 part nom2 employeur 2 10101 line1@mysy.fr AP_01_line1@mysy.fr adresse01 code_postal01 ville01 pays01 modefinancement opco 0 150
3 MYSY_Test_AP AR01 AP_01 part 3 part nom3 employeur 3 10101 line2@mysy.fr AP_01_line2@mysy.fr adresse02 code_postal02 ville02 pays02 modefinancement 1 180
4 MYSY_Test_AP MYSY_Test_OP AR01 OP_02 part 4 part nom4 employeur 4 10101 line3@mysy.fr OP_02_line3@mysy.fr adresse03 code_postal03 ville03 pays03 modefinancement 0 110
5 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
6 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
7 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

View File

@ -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
1 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
2 MYSY_Test_AP AP01 part 2 part nom2 employeur 2 10101 line1@mysy.fr adresse01 code_postal01 ville01 pays01 modefinancement opco 0 150
3 MYSY_Test_AR AR02 part 3 part nom3 employeur 3 10101 line2@mysy.fr adresse02 code_postal02 ville02 pays02 modefinancement 1 180
4 MYSY_Test_AP AP02 part 4 part nom4 employeur 4 10101 line3@mysy.fr adresse03 code_postal03 ville03 pays03 modefinancement 0 110

View File

@ -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
1 prenom nom employeur telephone email modefinancement opco status prix
2 part 1 part nom1 employeur 1 10101 billardman1@yahoo.fr modefinancement opco 1 120
3 part 2 part nom2 employeur 2 10101 billardman01@hotmail.com modefinancement opco 0 120
4 part 3 part nom3 employeur 3 10101 mysy1000formation@gmail.com modefinancement 1 120
5 part 4 part nom4 employeur 4 10101 mysytraining@gmail.com modefinancement 0 120
6 part 5 part nom5 employeur 5 10101 mysy5discovery@gmail.com modefinancement 1 120
7 part 6 part nom6 employeur 6 10101 billardman1@gmail.com modefinancement 0 120

View File

@ -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") && <div className="parter_div_filtrer_row_droite" >
<Button variant="contained" onClick={DeleteClass} startIcon={<DeleteIcon />} className="bton_suppr2"> SUPPRIMER LA FORMATION </Button>
<Popup
trigger={
<Button variant="contained" startIcon={<DeleteIcon />} className="bton_suppr2"> SUPPRIMER LA FORMATION </Button>
}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, la formation sera <i><font color="red"> définitivement supprimée</font></i>. <br />
Avant, assurez-vous de n'avoir aucune session rattachée à la formation.
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
DeleteClass(event);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup"
onClick={() => {
console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
</div>
}
@ -1826,8 +1887,8 @@ const AddClassManual = (props) => {
</div>
&nbsp;
<Box
&nbsp;
<Box
component="form"
sx={{
'& .MuiTextField-root': { m: 1, width: '25ch' },
@ -1947,7 +2008,7 @@ const AddClassManual = (props) => {
</div>
<div className="div_row_droite_image">
<input type="file" id="files_img_class" accept="image/*" onChange={imglogoclasschangeHandler} style={{ opacity: "0", zIndex: "-1", maxWidth: "5px", maxHeight: "0px" }} /> <br/>
<input type="file" id="files_img_class" accept="image/*" onChange={imglogoclasschangeHandler} style={{ opacity: "0", zIndex: "-1", maxWidth: "5px", maxHeight: "0px" }} /> <br />
<label for="files_img_class" className="bton_image_class">Charger une image</label><br />
<nav className="bton_supprime_image_class" onClick={removeRecodedClassImage}>Supprimer l'image</nav><br />
{/*isimgclassSelected && <Button variant="outlined" onClick={sendClassImage} className="bton_image_class">Enregistrer image</Button>*/}

View File

@ -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) => {
<div className="div_row">
<div className="div_row_gauche">
<Button variant="contained" color="success" className="bton_enreg " onClick={confirm_add_user}>Enregistrer &nbsp; <AiTwotoneSave /> </Button>
<Popup
trigger={
<Button variant="contained" color="success" className="bton_enreg " >Enregistrer &nbsp; <AiTwotoneSave /> </Button>
}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
Confirmez la création du client. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
Add_New_PartnerClient();
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
</div>
<div className="div_row_droite" style={{ "textAlign": "right" }}>
<Button variant="contained" color="success" className="bton_annule" onClick={close_detail_client}>Fermer</Button>
@ -2570,7 +2603,7 @@ const AddParnerClient = (props) => {
/>
</div>
{ String(formedit_mode_contact) === "1" && <div className="training_caract">
{String(formedit_mode_contact) === "1" && <div className="training_caract">
<TextField
required
name="contact_civilite"
@ -2593,7 +2626,7 @@ const AddParnerClient = (props) => {
</TextField>
</div>}
{ String(formedit_mode_contact) !== "1" && <div className="training_caract">
{String(formedit_mode_contact) !== "1" && <div className="training_caract">
<TextField
required
name="contact_civilite"

View File

@ -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) => {
<div className="gest_content">
{' '}
En confirmant cette opération, l'employé sera <i><font color="red"> définitivement supprimé</font></i>. <br />
En confirmant cette opération, le document sera <i><font color="red"> définitivement supprimé</font></i>. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
//handleClick_delete(event, cellValues);
handleClick_delete(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
@ -132,7 +132,7 @@ const Config_Documents = (props) => {
<button
className="gest_bton_popup"
onClick={() => {
//console.log('modal closed ');
console.log('modal closed ');
close();
}}
>
@ -190,6 +190,68 @@ const Config_Documents = (props) => {
}
function handleClick_delete(event, cellValues) {
// Recuperation du motif du refus :
var local_ref_interne = cellValues.row.ref_interne;
var local_id = cellValues.row._id;
Delete_Partner_Document_Data(local_id, local_ref_interne);
}
const [Delete_Partner_Document_Data_api, setDelete_Partner_Document_Data_api] = useState();
const [Delete_Partner_Document_Data_message, setDelete_Partner_Document_Data_message] = useState();
const [Delete_Partner_Document_Data_result, setDelete_Partner_Document_Data_result] = useState();
function Delete_Partner_Document_Data(local_id, local_ref_interne) {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("ref_interne", local_ref_interne);
form.append("_id", local_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Delete_Partner_Document/";
axios.post(myurl, form).then(res => {
//console.log(" In Delete_Partner_Document_Data res.data.status = " + res.data.status);
//console.log(" In Delete_Partner_Document_Data res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) {
setDelete_Partner_Document_Data_api("true");
setDelete_Partner_Document_Data_result(res.data.message);
Getall_Partner_Document_No_filter();
myRef_head.current.scrollIntoView({ behavior: "smooth" });
setpartner_document_data_edit_mode();
setpartner_document_data_changed();
clear_detail_fields();
setsubmenu();
setdisplay_partner_document();
setdisplay_detail_document();
setSelectionModel([]);
alert(" Le document a été correctement supprimé.")
}
else {
setDelete_Partner_Document_Data_api("false");
setDelete_Partner_Document_Data_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
console.warn('Delete_Partner_Document_Data : Not good man :( mysearchtext = ' + error);
setDelete_Partner_Document_Data_api("false");
alert(" Impossible de supprimer le document");
})
}
const [selected_id, setselected_id] = useState();
@ -208,7 +270,7 @@ const Config_Documents = (props) => {
setselected_template_ref_interne(line.ref_interne);
console.log(" ### line.ref_interne = ", line.ref_interne);
//console.log(" ### line.ref_interne = ", line.ref_interne);
Get_Partner_Document_Data(document_id);
if (myRef.current) {
@ -1930,7 +1992,7 @@ const Config_Documents = (props) => {
</div>
<div className="div_row_droite" style={{ "textAlign": "left" }}>
<div className="div_row"> Choisir un champ <br />
<div className="div_row"> Choisir un champ <br />
<TextField
name="one_champ_table"
id="one_champ_table"

View File

@ -147,7 +147,7 @@ const DisplayPartnerSession = (props) => {
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) => {
</Button>}
{edit_session_form && selected_session_id &&
<Button variant="contained" className="bton_enreg" onClick={CreateSessionFormation}>Enregistrer les modifications aa
<Button variant="contained" className="bton_enreg" onClick={CreateSessionFormation}>Enregistrer les modifications
</Button>}
</div>

View File

@ -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) => {
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom &nbsp;</MenuItem>
<MenuItem value="code_session" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Code Session &nbsp;&nbsp;</MenuItem>
<MenuItem value="class_title" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Titre Formation &nbsp;</MenuItem>
<MenuItem value="client_nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Lié au Client (nom client) &nbsp;</MenuItem>
</TextField>
@ -2856,6 +2856,7 @@ const DisplayPartnerStagiaires = (props) => {
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom &nbsp;</MenuItem>
<MenuItem value="code_session" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Code Session &nbsp;&nbsp;</MenuItem>
<MenuItem value="class_title" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Titre Formation &nbsp;</MenuItem>
<MenuItem value="client_nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Lié au Client (nom client) &nbsp;</MenuItem>
</TextField>
@ -2936,6 +2937,7 @@ const DisplayPartnerStagiaires = (props) => {
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom &nbsp;</MenuItem>
<MenuItem value="code_session" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Code Session &nbsp;&nbsp;</MenuItem>
<MenuItem value="class_title" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Titre Formation &nbsp;</MenuItem>
<MenuItem value="client_nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Lié au Client (nom client) &nbsp;</MenuItem>
</TextField>
@ -3012,6 +3014,7 @@ const DisplayPartnerStagiaires = (props) => {
<MenuItem value="nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Nom &nbsp;</MenuItem>
<MenuItem value="code_session" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Code Session &nbsp;&nbsp;</MenuItem>
<MenuItem value="class_title" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Titre Formation &nbsp;</MenuItem>
<MenuItem value="client_nom" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Lié au Client (nom client) &nbsp;</MenuItem>
</TextField>

View File

@ -1393,10 +1393,10 @@ const DistplayPartnerTraningsPage = (props) => {
value={actionmass_ftion_val}
onChange={actionmass_ftion}
>
<MenuItem value="" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Action &nbsp;&nbsp;</MenuItem>
<MenuItem value="publier" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Publier &nbsp;</MenuItem>
<MenuItem value="depublier" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Dépublier &nbsp;</MenuItem>
<MenuItem value="desactiver" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Désactiver &nbsp;</MenuItem>
<MenuItem value="" style={{ "paddingLeft": "5px", "textAlign": "left", "width":"100%" }}>Action &nbsp;&nbsp;</MenuItem>
<MenuItem value="publier" style={{ "paddingLeft": "5px", "textAlign": "left", "width":"100%" }}>Publier &nbsp;</MenuItem>
<MenuItem value="depublier" style={{ "paddingLeft": "5px", "textAlign": "left", "width":"100%" }}>Dépublier &nbsp;</MenuItem>
{/*<MenuItem value="desactiver" style={{ "paddingLeft": "5px", "textAlign": "left", "width":"100%" }}>Désactiver &nbsp;</MenuItem>*/}
</TextField>

View File

@ -68,8 +68,8 @@ 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,
valueFormatter: (params) => {
@ -82,7 +82,7 @@ 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,
valueFormatter: (params) => {
@ -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) => {
</div>
<div className="div_row" ref={myRef}> &nbsp; </div>
{String(submenu) === "detail_employe" && String(add_One_Employee) !== "1" && <div className="div_row">
<div className="div_row">
<Button variant="outlined" ref={myRef} onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
<Button variant="outlined" onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'acces </Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
</div>
@ -3383,7 +3379,7 @@ const Employes = (props) => {
{String(submenu) === "detail_employe" && String(add_One_Employee) === "1" && <div className="div_row">
<div className="div_row">
<Button variant="outlined" ref={myRef} onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
<Button variant="outlined" onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'acces </Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
</div>
@ -3795,7 +3791,7 @@ const Employes = (props) => {
{String(submenu) === "affectation" && <div className="div_row">
<div className="div_row">
<Button variant="outlined" ref={myRef} onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
<Button variant="outlined" onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'acces </Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
</div>
@ -4136,7 +4132,7 @@ const Employes = (props) => {
&nbsp;
</div>
{String(Affectation_data_changed) === "1" && String(edite_affectation_form) === "1" && <div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
/!\ Pensez à enregistrer les modifications
/!\ Pensez à enregistrer les modifications bb
</div>}
@ -4351,7 +4347,7 @@ const Employes = (props) => {
{String(submenu) === "droit_acces" && <div className="div_row">
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Droit Acces </nav>
<div className="div_row">
<Button variant="outlined" ref={myRef} onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
<Button variant="outlined" onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'acces </Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
</div>

View File

@ -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("");
@ -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 (
<div className='gestionadministrative'>
@ -4940,9 +5002,9 @@ function GestionAdministrative(props) {
<div className="div_mobile">
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
<div className="zone_data">
@ -5538,6 +5600,50 @@ function GestionAdministrative(props) {
</div>
}
{!fields1desabled && <div className="session_caract">Etape <br />
<TextField
name="session_etape"
id="session_etape"
select
InputLabelProps={{
shrink: true,
}}
inputProps={{ min: "0", max: "1", step: "1" }}
disabled={false}
className="disabled_style enable_style"
value={p_session_etape}
onChange={(e) => {
setp_session_etape(e.target.value);
IssessionChanged();
}}
>
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Projet &nbsp;&nbsp;</MenuItem>
<MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Planification &nbsp;</MenuItem>
<MenuItem value="2" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Planifiée &nbsp;</MenuItem>
<MenuItem value="3" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Terminée &nbsp;</MenuItem>
<MenuItem value="4" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Facturée &nbsp;</MenuItem>
<MenuItem value="-1" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Annulée &nbsp;</MenuItem>
</TextField>
</div>}
{fields1desabled && <div className="session_caract">Etape *<br />
<TextField
name="session_etape"
id="session_etape"
text
InputLabelProps={{
shrink: true,
}}
inputProps={{ min: "0", max: "1", step: "1" }}
disabled={false}
className="disabled_style enable_style"
value={p_session_etape_label}
/>
</div>}
<div className="session_caract">
Date Debut
@ -5991,7 +6097,7 @@ function GestionAdministrative(props) {
<div style={{ "textAlign": "left", "float": "left", "width": "100%" }} id="participant_menu_tab" ref={myRef_detail_inscrit}>
<div style={{ "textAlign": "left", "float": "left", "width": "100%" }} id="participant_menu_tab" ref={myRef_detail_inscrit}>
<Button variant="outlined" onClick={submenu_preinscrit} className="detail_class_submenu" id='menu_preinscrit' name='menu_preinscrit'>Preinscription ({String(nb_stagiaire_Preinscrit)})</Button>
<Button variant="outlined" onClick={submenu_inscrit} className="detail_class_submenu" id='menu_inscrit' name='menu_inscrit'>Inscription ({String(nb_stagiaire_Inscrit)})</Button>
<Button variant="outlined" onClick={submenu_emargement} className="detail_class_submenu" id='menu_emarge' name='menu_emarge'>Liste émargement</Button>

View File

@ -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") && <nav className="okUpdateData"> Le materiel ont été correctement importé</nav>}
{String(liste_sessions_file_change_api) === String("false") && <nav className="koUpdateData"> {liste_sessions_file_change_message} </nav>}
{/*
<input type="file"
accept=".csv"
ref={hiddenFileInput_session}
@ -2444,16 +2448,21 @@ const Materiels = (props) => {
/>
<a href='/sample/template_import_employes.csv' download>Télécharger un fichier modèle</a>
*/}
</div>
</div>
<div className="div_row"> &nbsp;</div>
</div>
{String(submenu) === "detail_materiel" && String(add_One_Materiel) !== "1" && <div className="div_row">
<div className="div_row">
<Button variant="outlined" ref={myRef} onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
<Button variant="outlined" onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
</div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Détail Materiel </nav>
@ -2773,7 +2782,7 @@ const Materiels = (props) => {
{String(submenu) === "detail_materiel" && String(add_One_Materiel) === "1" && <div className="div_row">
<div className="div_row">
<Button variant="outlined" ref={myRef} onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
<Button variant="outlined" onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
</div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Ajouter un nouveau materiel </nav>
@ -3027,7 +3036,7 @@ const Materiels = (props) => {
{String(submenu) === "affectation" && <div className="div_row">
<div className="div_row">
<Button variant="outlined" ref={myRef} onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
<Button variant="outlined" onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
</div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Affectation </nav>
@ -3579,7 +3588,7 @@ const Materiels = (props) => {
</div>}
</div>}
<div ref={myRef}> &nbsp;</div>
</div >
);

View File

@ -936,7 +936,7 @@ const Partner = (props) => {
<a href='/sample/template_import.csv' download>Télécharger un fichier modèle</a>
<a href='/sample/template_import_formations.csv' download>Télécharger un fichier modèle</a>
<br />
@ -974,7 +974,7 @@ const Partner = (props) => {
{String(partnerstatus) !== String("0") && <div className="parter_div_filtrer_row_gauche">
Import excel d'une formation <a href='/sample/template_import.csv' download>Télécharger un fichier modèle</a>
Import excel d'une formation <a href='/sample/template_import_formations.csv' download>Télécharger un fichier modèle</a>
<br />

View File

@ -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 (
<div style={{ "marginLeft": "auto", "marginRight": "auto", "cursor": "pointer" }} onClick={(event) => {
handleClick_supprimer(event, cellValues);
}}>
<FcDeleteDatabase style={{ "fontSize": "x-large" }} />
</div>
<Popup
trigger={<Button
onClick={(event) => {
// handleClick_delete(event, cellValues);
}}
>
<CiTrash />
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, le client sera <i><font color="red"> définitivement supprimé</font></i>. <br />
Avant, assurez-vous de n'avoir aucun stagiaire, un devis ou commande rattaché au client.
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
handleClick_supprimer(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
);
}
@ -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",
});
}, []);
@ -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) => {
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<Button variant="contained" className="bton_enreg" onClick={Get_List_Partner_Clients}>Rechercher
<Button variant="contained" className="bton_enreg" onClick={Get_List_Partner_Clients} ref={myRef_head}>Rechercher
</Button>
</div>
@ -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) => {
</div>
{String(Edite_Client) === "1" && <div className="div_row">
<div className="titre1"> Detail client : {Client_email}</div>
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} />
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} father_scroll_to_top={father_scroll_to_top} />
</div>}
{String(Edite_Client) === "2" && <div className="div_row">
<div className="titre1"> Detail client : {Client_email}</div>
<div ref={myRef_add_client}> &nbs;</div>
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} new_customer="1"
Get_List_Partner_Clients={Get_List_Partner_Clients} />
Get_List_Partner_Clients={Get_List_Partner_Clients} father_scroll_to_top={father_scroll_to_top} />
</div>}

View File

@ -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
</DialogContentText>
<div className="session_caract_Dialog" > Article
<TextField
autoFocus
margin="dense"
id="ref_article"
//label="Article"
select
fullWidth
//variant="standard"
value={p_add_line_item}
onChange={(e) => {
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) => (
<MenuItem key={JSON.parse(myclass).internal_url} value={JSON.parse(myclass).internal_url} style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}
id="mysy_item_class"
mysy_item_class_title={JSON.parse(myclass).title}>
{JSON.parse(myclass).title}
<TextField
autoFocus
margin="dense"
id="ref_article"
label="Article"
select
fullWidth
//variant="standard"
value={p_add_line_item}
onChange={(e) => {
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) => (
<MenuItem key={JSON.parse(myclass).internal_url} value={JSON.parse(myclass).internal_url} style={{ "paddingLeft": "5px", "textAlign": "left", }}
id="mysy_item_class"
mysy_item_class_title={JSON.parse(myclass).title}>
{JSON.parse(myclass).title}
</MenuItem>
))}
</TextField>
</MenuItem>
))}
</TextField>
</div>
<div className="session_caract_Dialog" > Quantité
<TextField
autoFocus
margin="dense"
id="ref_article_qty"
//label="Quantité"
type="number"
fullWidth
//variant="standard"
value={p_add_line_item_qty}
onChange={(e) => {
setp_add_line_item_qty(e.target.value);
Recalcul_Item_Amounts();
}
}
/>
</div>
<div className="session_caract_Dialog" > Prix Unitaire
<TextField
autoFocus
margin="dense"
id="ref_article_unit_price"
//label="Prix Unitaire"
type="number"
fullWidth
//variant="standard"
value={p_add_line_item_price}
onChange={(e) => {
setp_add_line_item_price(e.target.value);
Recalcul_Item_Amounts();
}
}
/>
</div>
<div className="session_caract_Dialog" > Type reduction
<TextField
autoFocus
margin="dense"
id="ref_article_type_reduction"
//label="Type reduction"
select
fullWidth
//variant="standard"
value={p_add_line_item_type_reduction}
onChange={(e) => {
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');
}
}
>
<MenuItem value="fixe" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Montant &nbsp;</MenuItem>
<MenuItem value="percent" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Pourcentage &nbsp;</MenuItem>
</TextField>
</div>
<div className="session_caract_Dialog" > Reduction
<TextField
autoFocus
margin="dense"
id="ref_article_reduction_value"
//label="Reduction"
type="number"
fullWidth
//variant="standard"
value={p_add_line_item_reduction_value}
onChange={(e) => {
setp_add_line_item_reduction_value(e.target.value);
Recalcul_Item_Amounts();
}
}
/>
</div>
<div className="session_caract_Dialog" > Total Reduction
<TextField
autoFocus
margin="dense"
id="ref_article_reduction_total_amount"
//label="Total Reduction"
type="text"
fullWidth
//variant="standard"
value={p_add_line_item_reduction_total_amount}
<TextField
autoFocus
margin="dense"
id="ref_article_qty"
label="Quantité"
type="number"
fullWidth
//variant="standard"
value={p_add_line_item_qty}
onChange={(e) => {
setp_add_line_item_qty(e.target.value);
Recalcul_Item_Amounts();
}
}
/>
<TextField
autoFocus
margin="dense"
id="ref_article_unit_price"
label="Prix Unitaire"
type="number"
fullWidth
//variant="standard"
value={p_add_line_item_price}
onChange={(e) => {
setp_add_line_item_price(e.target.value);
Recalcul_Item_Amounts();
}
}
/>
/>
<TextField
autoFocus
margin="dense"
id="ref_article_type_reduction"
label="Type reduction"
select
fullWidth
//variant="standard"
value={p_add_line_item_type_reduction}
onChange={(e) => {
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');
</div>
}
}
<div className="session_caract_Dialog_comment_2_lines" > Commentaire
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
>
<MenuItem value="fixe" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Montant &nbsp;</MenuItem>
<MenuItem value="percent" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Pourcentage &nbsp;</MenuItem>
name="ref_article_comment"
id="ref_article_comment"
autoFocus
fullWidth
</TextField>
value={p_add_line_item_comment}
onChange={(e) => {
setp_add_line_item_comment(e.target.value);
<TextField
autoFocus
margin="dense"
id="ref_article_reduction_value"
label="Reduction"
type="number"
fullWidth
//variant="standard"
value={p_add_line_item_reduction_value}
onChange={(e) => {
setp_add_line_item_reduction_value(e.target.value);
Recalcul_Item_Amounts();
}
}
//label="Commentaire"
//variant="standard"
multiline
minRows={2}
maxRows={2}
rows={2}
}
}
/>
/>
</div>
<TextField
autoFocus
margin="dense"
id="ref_article_reduction_total_amount"
label="Total Reduction"
type="text"
fullWidth
//variant="standard"
value={p_add_line_item_reduction_total_amount}
<div className="session_caract_Dialog" > Total HT
<TextField
autoFocus
margin="dense"
id="ref_article_total_amount_ht"
//label="Total HT"
type="text"
fullWidth
//variant="standard"
disabled={true}
value={p_add_line_item_total_amount_ht}
onChange={(e) => {
setp_add_line_item_total_amount_ht(e.target.value);
}
}
/>
</div>
/>
{/* <div className="session_caract" style={{ "width": "100%", "height": "5rem" }}> Total HT
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
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);
}
}
label="Commentaire"
//variant="standard"
multiline
minRows={2}
maxRows={2}
rows={2}
/>
<TextField
autoFocus
margin="dense"
id="ref_article_total_amount_ht"
label="Total HT"
type="text"
fullWidth
//variant="standard"
value={p_add_line_item_total_amount_ht}
onChange={(e) => {
setp_add_line_item_total_amount_ht(e.target.value);
}
}
/>
<div className="session_caract"> Total HT<br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -2692,7 +2711,7 @@ const Partner_Commande = (props) => {
className="disabled_style_Dialog"
value={p_add_line_item_total_amount_ht}
/>
</div>
</div>*/}
@ -2724,7 +2743,7 @@ const Partner_Commande = (props) => {
<DialogTitle>Nouvelle Commande</DialogTitle>
<DialogContent>
<div className="session_caract" style={{ "width": "100%", "height": "5rem" }}> Client
<div className="session_caract_Dialog" > Client
<TextField
autoFocus
margin="dense"
@ -2802,7 +2821,7 @@ const Partner_Commande = (props) => {
</div>
</div>
<div className="session_caract" style={{ "width": "100%", "height": "5rem" }}> Description <br />
<div className="session_caract_Dialog" > Description <br />
<TextField
autoFocus
margin="dense"
@ -2820,7 +2839,7 @@ const Partner_Commande = (props) => {
/>
</div>
<div className="session_caract" style={{ "width": "100%", "height": "5rem" }}> Ref. externe <br />
<div className="session_caract_Dialog" > Ref. externe <br />
<TextField
autoFocus
margin="dense"
@ -2838,7 +2857,7 @@ const Partner_Commande = (props) => {
/>
</div>
<div className="session_caract" style={{ "width": "100%", "height": "5rem" }}> Vendeur <br />
<div className="session_caract_Dialog" > Vendeur <br />
<TextField
autoFocus
@ -2866,7 +2885,7 @@ const Partner_Commande = (props) => {
</TextField>
</div>
<div className="session_caract" style={{ "width": "100%", "height": "5rem" }}> Conditions Paiement <br />
<div className="session_caract_Dialog" > Conditions Paiement <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
@ -2886,7 +2905,7 @@ const Partner_Commande = (props) => {
</div>
<div className="session_caract" style={{ "width": "100%", "height": "5rem" }}> Type <br />
<div className="session_caract_Dialog" > Type <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
@ -2901,7 +2920,7 @@ const Partner_Commande = (props) => {
</div>
<div className="session_caract" style={{ "width": "100%", "height": "5rem" }}> Emplacement <br />
<div className="session_caract_Dialog" > Emplacement <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="order_header_location_type"
@ -2925,7 +2944,7 @@ const Partner_Commande = (props) => {
</TextField>
</div>
<div className="session_caract" style={{ "width": "100%", "height": "5rem" }}> Commentaire <br />
<div className="session_caract_Dialog_comment_2_lines" > Commentaire <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="order_commentaire"
@ -3402,7 +3421,6 @@ const Partner_Commande = (props) => {
<Button variant="outlined" onClick={order_header_submenu_detail} className="detail_class_submenu" id='order_header_detail' name='order_header_detail'>Menu Total </Button>
<Button variant="outlined" onClick={order_header_submenu_facturation} className="detail_class_submenu" id='order_header_facturation' name='order_header_facturation'>Menu Facturation </Button>
</div>
<div style={{ "width": "100%", "float": "left" }}>
<div style={{ "width": "75%", "float": "left" }}>
@ -3746,7 +3764,7 @@ const Partner_Commande = (props) => {
/>
</div>}
{String(order_data_edit_mode) === "1" && <div className="session_caract"> Vendeur<br />
{String(order_data_edit_mode) === "1" && <div className="session_caract"> Vendeur t<br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -3769,7 +3787,7 @@ const Partner_Commande = (props) => {
{Getall_Training_Employee_No_Filter_result &&
Getall_Training_Employee_No_Filter_result.map((myclient) => (
<MenuItem key={JSON.parse(myclient)._id} value={JSON.parse(myclient)._id}
style={{ "paddingLeft": "5px", "textAlign": "left", }}>
style={{ "paddingLeft": "5px", "textAlign": "left","height":"2rem" }}>
{JSON.parse(myclient).nom}&nbsp; {JSON.parse(myclient).prenom}
</MenuItem>
@ -4186,13 +4204,13 @@ const Partner_Commande = (props) => {
</div>
<div style={{ "width": "23%", "float": "left", "textAlign": "right", "paddingTop": "2rem" }}>
<Button variant="outlined" onClick={Confirm_Order_Data} className="detail_class_submenu bton_add_session"> Confirmer </Button>
{String(selected_order_header_type) === "devis" && <Button variant="outlined" onClick={Convert_Quotation_To_Order_Data} className="detail_class_submenu bton_add_session"> Convertir en Cmd </Button>}
<Button variant="outlined" onClick={Cancel_Order_Data} className="detail_class_submenu bton_add_session"> Annuler </Button>
<Button variant="outlined" onClick={Confirm_Order_Data} className="detail_class_submenu bton_add_sous_menu"> Confirmer </Button>
{String(selected_order_header_type) === "devis" && <Button variant="outlined" onClick={Convert_Quotation_To_Order_Data} className="detail_class_submenu bton_add_sous_menu"> Convertir en Cmd </Button>}
<Button variant="outlined" onClick={Cancel_Order_Data} className="detail_class_submenu bton_add_sous_menu"> Annuler </Button>
<Popup
trigger={<Button variant="outlined" className="detail_class_submenu bton_add_session"> Supprimer </Button>}
trigger={<Button variant="outlined" className="detail_class_submenu bton_add_sous_menu"> Supprimer </Button>}
modal
nested
@ -4235,7 +4253,7 @@ const Partner_Commande = (props) => {
)}
</Popup>
<br /> <br/>
<br /> <br />
<Button variant="outlined" onClick={Compute_Order_Header_Price} className="detail_class_submenu" id='order_header_main' name='order_header_main'>Mettre a jour prix</Button>
<Button variant="outlined" onClick={print_order_pdf} className="detail_class_submenu" id='order_header_main' name='order_header_main'>Imprimer pdf</Button>
<Button variant="outlined" onClick={Send_Order_By_Email} className="detail_class_submenu" id='order_header_main' name='order_header_main'>envoyer par mail</Button>
@ -4283,7 +4301,9 @@ const Partner_Commande = (props) => {
<div className="session_data" >
<div style={{ "border": "None" }}>
<nav onClick={Ajouter_une_ligne_article} style={{ "fontSize": "18px", "fontWeight": '600', "marginLeft": "10px", "marginTop": "10px" }}> <Button> Ajouter une ligne </Button> </nav>
<nav onClick={Ajouter_une_ligne_article} style={{ "fontSize": "18px", "fontWeight": '600', "marginLeft": "10px", "marginTop": "10px" }}> <Button> Ajouter une ligne
&nbsp;
</Button> <img src={add_plus} alt="ajout commande" className="icon_plus_line" /> </nav>
<div style={{ height: 550, width: '100%', paddingRight: '1px' }}>
&nbsp;
<Box

View File

@ -1356,7 +1356,7 @@
.bton_add_session {
background: #c8cfd5;
color: black;
width: 40%;
width: 50%;
}
.bton_import_excel {
@ -1830,7 +1830,7 @@
.bton_add_session {
background: #c8cfd5;
color: black;
width: 20% !important;
width: 30% !important;
}
.bton_import_excel {
@ -2123,7 +2123,7 @@
// end media
.css-1v4ccyo {
height: 3.5rem !important;
height: 4rem !important;
}
option {
@ -2171,6 +2171,7 @@
.css-1x5jdmq {
height: 3rem !important;
font-size: small;
}
.select_option_css {

View File

@ -2185,6 +2185,7 @@
.css-1x5jdmq {
height: 3rem !important;
font-size: small;
}
.select_option_css {

View File

@ -2249,6 +2249,7 @@
.css-1x5jdmq {
height: 3rem !important;
font-size: small;
}
.select_option_css {

View File

@ -2216,6 +2216,7 @@
.css-1x5jdmq {
height: 3rem !important;
font-size: small;
}
.select_option_css {

View File

@ -1204,8 +1204,8 @@
}
.preview_certif:hover {
transform: scale(1.8);
margin-left: 0.5rem;
transform: scale(1.5);
margin-left: 0.2rem;
}
.hr_break {
@ -1535,8 +1535,8 @@
}
.preview_certif:hover {
transform: scale(1.5);
margin-left: 1rem;
transform: scale(1.2);
margin-left: 0.2rem;
}
@ -1912,6 +1912,7 @@
.css-1x5jdmq {
height: 3rem !important;
font-size: small;
}
.select_option_css {

View File

@ -2216,6 +2216,7 @@
.css-1x5jdmq {
height: 3rem !important;
font-size: small;
}
.select_option_css {

View File

@ -1089,7 +1089,7 @@
.css-1x5jdmq {
height: 3rem !important;
font-size: medium !important;
font-size: small !important;
padding: 0px !important;
padding-left: 5px !important;
padding-right: 5px !important;

View File

@ -195,6 +195,16 @@
float: left;
text-align: left;
font-size: small;
margin-bottom: 1rem !important;
}
.session_caract_comment_2_lines {
width: 100%;
padding: 5px;
float: left;
text-align: left;
font-size: small;
margin-bottom: 1rem !important;
}
.session_style {
@ -234,12 +244,23 @@
width: 6%;
}
.icon_plus_line {
width: 3%;
}
.bton_add_session {
background: #c8cfd5;
color: black;
width: 100%;
}
.bton_add_sous_menu {
background: #c8cfd5;
color: black;
width: 100%;
}
.bton_import_excel {
background: #c8cfd5;
color: black;
@ -737,6 +758,16 @@
float: left;
text-align: left;
font-size: small;
margin-bottom: 1rem !important;
}
.session_caract_comment_2_lines {
width: 50%;
padding: 5px;
float: left;
text-align: left;
font-size: small;
margin-bottom: 1rem !important;
}
.session_style {
@ -782,12 +813,23 @@
width: 6%;
}
.icon_plus_line {
width: 4%;
}
.bton_add_session {
background: #c8cfd5;
color: black;
width: 50%;
}
.bton_add_sous_menu {
background: #c8cfd5;
color: black;
width: 100%;
}
.bton_import_excel {
background: #c8cfd5;
color: black;
@ -1309,8 +1351,20 @@
float: left;
text-align: left;
font-size: small;
margin-bottom: 1rem !important;
}
.session_caract_comment_2_lines {
width: 33%;
padding: 5px;
float: left;
text-align: left;
font-size: small;
margin-bottom: 1rem !important;
}
.session_style {
//background-color: #ECEFF1;
font-size: small !important;
@ -1353,12 +1407,23 @@
width: 8%;
}
.icon_plus_line {
width: 3%;
}
.bton_add_session {
background: #c8cfd5;
color: black;
width: 40%;
}
.bton_add_sous_menu {
background: #c8cfd5;
color: black;
width: 100%;
}
.bton_import_excel {
background: #c8cfd5;
color: black;
@ -1718,6 +1783,17 @@
float: left;
text-align: left;
font-size: small;
margin-bottom: 1rem !important;
}
.session_caract_Dialog_comment_2_lines {
width: 100%;
padding: 5px;
float: left;
text-align: left;
font-size: small;
margin-bottom: 1rem !important;
}
@ -1772,12 +1848,24 @@
}
.session_caract {
width: 33%;
padding: 5px;
float: left;
text-align: left;
font-size: small;
margin-bottom: 1rem !important;
}
.session_caract_comment_2_lines {
width: 33%;
padding: 5px;
float: left;
text-align: left;
font-size: small;
margin-bottom: 1rem !important;
}
.session_style {
@ -1835,10 +1923,20 @@
width: 8%;
}
.icon_plus_line {
width: 2%;
}
.bton_add_session {
background: #c8cfd5;
color: black;
width: 20% !important;
width: 25% !important;
}
.bton_add_sous_menu {
background: #c8cfd5;
color: black;
width: 25% !important;
}
.bton_import_excel {
@ -2156,8 +2254,28 @@
// end media
.session_caract_Dialog {
width: 100%;
padding: 5px;
float: left;
text-align: left;
font-size: small;
margin-bottom: 1rem !important;
}
.session_caract_Dialog_comment_2_lines {
width: 100%;
padding: 5px;
float: left;
text-align: left;
font-size: small;
margin-bottom: 1rem !important;
}
.css-1v4ccyo {
height: 3.5rem !important;
height: 4rem !important;
}
option {
@ -2212,7 +2330,7 @@
}
.MuiSelect-select{
height: 3rem !important;
//height: 3rem !important;
}
@ -2232,6 +2350,7 @@
.css-1x5jdmq {
height: 3rem !important;
font-size: small;
}
.select_option_css {

View File

@ -247,6 +247,7 @@
.css-qiwgdb {
padding: 6px !important;
font-size: small;
}
.preview_certif {
@ -790,6 +791,7 @@
.css-qiwgdb {
padding: 6px !important;
font-size: small;
}
.preview_certif {
@ -1361,6 +1363,7 @@
.css-qiwgdb {
padding: 6px !important;
font-size: small;
}
.preview_certif {
@ -1933,6 +1936,7 @@
.css-qiwgdb {
padding: 6px !important;
font-size: small;
}
@ -2185,6 +2189,7 @@
.css-1x5jdmq {
height: 3rem !important;
font-size: small;
}
.select_option_css {

View File

@ -2216,6 +2216,7 @@
.css-1x5jdmq {
height: 3rem !important;
font-size: small;
}
.select_option_css {