16/11/2023 - 21h

recette2
cherif 2023-11-16 21:18:01 +01:00
parent f446859380
commit 200a14ea23
6 changed files with 3596 additions and 112 deletions

View File

@ -132,22 +132,7 @@ const DisplayPartnerSession = (props) => {
{
field: 'etape', headerName: 'Etape', hide: false, width: datagrid_columns_size_model2,
valueFormatter: (params) => {
if (String(params.value) === "0")
return "Projet";
else if (String(params.value) === "1")
return "En Planif.";
else if (String(params.value) === "2")
return "Planifiée";
else if (String(params.value) === "3")
return "Terminée";
else if (String(params.value) === "4")
return "Facturée";
else if (String(params.value) === "-1")
return "Annulée";
else
return "???";
},
},
{ 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, },
@ -917,12 +902,51 @@ const DisplayPartnerSession = (props) => {
})
}
const [Getall_Parter_OR_Default_Session_Steps_api, setGetall_Parter_OR_Default_Session_Steps_api] = useState();
const [Getall_Parter_OR_Default_Session_Steps_message, setGetall_Parter_OR_Default_Session_Steps_message] = useState();
const [Getall_Parter_OR_Default_Session_Steps_result, setGetall_Parter_OR_Default_Session_Steps_result] = useState();
function Getall_Parter_OR_Default_Session_Steps(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Partner_Or_Default_session_step/";
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_Parter_OR_Default_Session_Steps res.data.status = " + res.data.status);
//console.log(" In Getall_Parter_OR_Default_Session_Steps res.data.message r_class = " + res.data.message);
setGetall_Parter_OR_Default_Session_Steps_api("true");
setGetall_Parter_OR_Default_Session_Steps_result(res.data.message);
setRows(res.data.message);
}
else {
setGetall_Parter_OR_Default_Session_Steps_api("false");
setGetall_Parter_OR_Default_Session_Steps_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
console.warn('Not good man :( Getall_Parter_OR_Default_Session_Steps = ', error);
setGetall_Parter_OR_Default_Session_Steps_api("false");
alert(" Impossible de recuperer la liste des étapes de session");
//setmyApimyApiMessage("")
})
}
useEffect(() => {
Get_Partner_Object_Specific_Fields_stagiaire();
Getall_Training_Employee_No_Filter();
Getall_Parter_OR_Default_Session_Steps();
GetCurrentPartnerClass();
Getall_TrainingSession();
GetAttestation_Certif();
@ -1002,7 +1026,7 @@ const DisplayPartnerSession = (props) => {
async function submenu_detail_session() {
setsubmenu("detail_session");
await sleep(5);
//await sleep(5);
if (!edit_session_form) {
desableSessionFields();
}
@ -1129,13 +1153,12 @@ const DisplayPartnerSession = (props) => {
const hiddenFileInput_session = React.useRef(null);
const [addOneSession, setaddOneSession] = useState();
const [addOneSession, setaddOneSession] = useState("");
function submenu_add_one_session() {
setaddOneSession("1");
setEdite_session("0");
submenu_detail_session();
setselectionModel_preinsc([]);
setSelectionModel_insc([]);
setnb_stagiaire_Preinscrit("0");
@ -1145,7 +1168,7 @@ const DisplayPartnerSession = (props) => {
// Pour les champs spécifiques
submenu_detail_session();
for (let i = 0; i < rows_champs_specifics.length; i++) {
@ -1156,12 +1179,12 @@ const DisplayPartnerSession = (props) => {
if (document.getElementsByName(String(field_name))) {
//console.log("document.getElementsByName(String(field_name)) DONNE = ",document.getElementsByName(String(field_name)) );
document.getElementsByName(String(field_name)).disabled = false;
document.getElementsByName(String(field_name)).backgroundColor = "#FFFFFF";
}
}
console.log("4");
if (document.getElementById('detail_session')) {
//myRef.current.scrollIntoView({ behavior: "smooth" });
@ -2325,16 +2348,21 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
// Pour les champs spécifiques
for (let i = 0; i < rows_champs_specifics.length; i++) {
var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
var field_type = JSON.parse(rows_champs_specifics[i]).field_type;
var field_label = JSON.parse(rows_champs_specifics[i]).field_label;
var is_mandatory = JSON.parse(rows_champs_specifics[i]).is_mandatory;
console.log(" #### addOneSession = ", addOneSession);
if (String(addOneSession) !== "1") {
for (let i = 0; i < rows_champs_specifics.length; i++) {
if (document.getElementsByName(String(field_name))[0]) {
document.getElementsByName(String(field_name))[0].disabled = true;
document.getElementsByName(String(field_name))[0].style.backgroundColor = "#ECEFF1";
var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
var field_type = JSON.parse(rows_champs_specifics[i]).field_type;
var field_label = JSON.parse(rows_champs_specifics[i]).field_label;
var is_mandatory = JSON.parse(rows_champs_specifics[i]).is_mandatory;
if (document.getElementsByName(String(field_name))[0]) {
document.getElementsByName(String(field_name))[0].disabled = true;
document.getElementsByName(String(field_name))[0].style.backgroundColor = "#ECEFF1";
}
}
}
@ -3206,18 +3234,9 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
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");
setp_session_etape_label(mylocaltraining.session_etape);
} else {
@ -5867,7 +5886,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
</div>
<div className="div_row_dialog">
<div className="div_row_gauche_dialog_session" style={{ "textAlign": 'left' }}>
Etape
Etape
</div>
{rowss && String(session_selected_row_id).length > 0 && <div className="div_row_droite_dialog_session" style={{ "textAlign": 'right' }}>
{JSON.parse(rowss[session_selected_row_id]).etape}
@ -5930,7 +5949,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
<div className="div_row_dialog">
<div className="div_row_gauche_dialog_session" style={{ "textAlign": 'left' }}>
Prix
Prix
</div>
{rowss && String(session_selected_row_id).length > 0 && <div className="div_row_droite_dialog_session" style={{ "textAlign": 'right' }}>
{JSON.parse(rowss[session_selected_row_id]).prix_session}
@ -5940,7 +5959,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
<div className="div_row_dialog">
<div className="div_row_gauche_dialog_session" style={{ "textAlign": 'left' }}>
Nb participants
Nb participants
</div>
{rowss && String(session_selected_row_id).length > 0 && <div className="div_row_droite_dialog_session" style={{ "textAlign": 'right' }}>
{JSON.parse(rowss[session_selected_row_id]).nb_participant}
@ -5949,7 +5968,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
<div className="div_row_dialog">
<div className="div_row_gauche_dialog_session" style={{ "textAlign": 'left' }}>
Taux Remplissage
Taux Remplissage
</div>
{rowss && String(session_selected_row_id).length > 0 && <div className="div_row_droite_dialog_session" style={{ "textAlign": 'right' }}>
{JSON.parse(rowss[session_selected_row_id]).taux_remplissage}
@ -6809,12 +6828,14 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
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>
{Getall_Parter_OR_Default_Session_Steps_result &&
Getall_Parter_OR_Default_Session_Steps_result.map((step) => (
<MenuItem key={JSON.parse(step)._id} value={JSON.parse(step).session_step_name}
style={{ "paddingLeft": "5px", "textAlign": "left", "height": "2rem", "width": '100%' }}>
{JSON.parse(step).session_step_name}&nbsp;
</MenuItem>
))}
</TextField>
</div>}
@ -6847,9 +6868,11 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
id="sessiondatedebut"
selected={SessionstartDate}
onChange={(date) => {
setSessionstartDate(date);
setsessionChanged(true);
IssessionChanged();
if (edit_session_form) {
setSessionstartDate(date);
setsessionChanged(true);
IssessionChanged();
}
}
}
showTimeSelect={false}
@ -6868,9 +6891,11 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
id="sessiondatefin"
selected={SessionendDate}
onChange={(date) => {
setSessionendDate(date);
setsessionChanged(true);
IssessionChanged();
if (edit_session_form) {
setSessionendDate(date);
setsessionChanged(true);
IssessionChanged();
}
}
}
showTimeSelect={false}
@ -6888,9 +6913,11 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
id="sessiondatedebutinscription"
selected={SessionstartDateInscription}
onChange={(date) => {
setSessionstartDateInscription(date);
setsessionChanged(true);
IssessionChanged();
if (edit_session_form) {
setSessionstartDateInscription(date);
setsessionChanged(true);
IssessionChanged();
}
}
}
@ -6911,9 +6938,11 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
id="sessiondatefininscription"
selected={SessionendDateInscription}
onChange={(date) => {
setSessionendDateInscription(date);
setsessionChanged(true);
IssessionChanged();
if (edit_session_form) {
setSessionendDateInscription(date);
setsessionChanged(true);
IssessionChanged();
}
}
}
showTimeSelect={false}
@ -7503,12 +7532,14 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
value={p_one_session_etape}
onChange={(e) => setp_one_session_etape(e.target.value)}
>
<MenuItem value="0" style={{ "paddingLeft": "5px", "textAlign": "left", "width": '100%' }}>Projet &nbsp;&nbsp;</MenuItem>
<MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left", "width": '100%' }}>Planification &nbsp;</MenuItem>
<MenuItem value="2" style={{ "paddingLeft": "5px", "textAlign": "left", "width": '100%' }}>Planifiée &nbsp;</MenuItem>
<MenuItem value="3" style={{ "paddingLeft": "5px", "textAlign": "left", "width": '100%' }}>Terminée &nbsp;</MenuItem>
<MenuItem value="4" style={{ "paddingLeft": "5px", "textAlign": "left", "width": '100%' }}>Facturée &nbsp;</MenuItem>
<MenuItem value="-1" style={{ "paddingLeft": "5px", "textAlign": "left", "width": '100%' }}>Annulée &nbsp;</MenuItem>
{Getall_Parter_OR_Default_Session_Steps_result &&
Getall_Parter_OR_Default_Session_Steps_result.map((step) => (
<MenuItem key={JSON.parse(step)._id} value={JSON.parse(step).session_step_name}
style={{ "paddingLeft": "5px", "textAlign": "left", "height": "2rem", "width": '100%' }}>
{JSON.parse(step).session_step_name}&nbsp;
</MenuItem>
))}
</TextField>
</div>

View File

@ -1558,12 +1558,49 @@ function GestionAdministrative(props) {
}*/
const [Getall_Parter_OR_Default_Session_Steps_api, setGetall_Parter_OR_Default_Session_Steps_api] = useState();
const [Getall_Parter_OR_Default_Session_Steps_message, setGetall_Parter_OR_Default_Session_Steps_message] = useState();
const [Getall_Parter_OR_Default_Session_Steps_result, setGetall_Parter_OR_Default_Session_Steps_result] = useState();
function Getall_Parter_OR_Default_Session_Steps(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Partner_Or_Default_session_step/";
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_Parter_OR_Default_Session_Steps res.data.status = " + res.data.status);
//console.log(" In Getall_Parter_OR_Default_Session_Steps res.data.message r_class = " + res.data.message);
setGetall_Parter_OR_Default_Session_Steps_api("true");
setGetall_Parter_OR_Default_Session_Steps_result(res.data.message);
setRows(res.data.message);
}
else {
setGetall_Parter_OR_Default_Session_Steps_api("false");
setGetall_Parter_OR_Default_Session_Steps_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
console.warn('Not good man :( Getall_Parter_OR_Default_Session_Steps = ', error);
setGetall_Parter_OR_Default_Session_Steps_api("false");
alert(" Impossible de recuperer la liste des étapes de session");
//setmyApimyApiMessage("")
})
}
useEffect(() => {
Get_Partner_Object_Specific_Fields_session();
Get_Partner_Object_Specific_Fields_stagiaire();
Getall_Parter_OR_Default_Session_Steps();
Getall_Training_Employee_No_Filter();
GetCurrentClass();
GetCurrentClass_trainingsession();
@ -1925,20 +1962,9 @@ function GestionAdministrative(props) {
if (p_session_etape) {
session_etape = p_session_etape;
setp_session_etape_label(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"
@ -2149,7 +2175,7 @@ function GestionAdministrative(props) {
const [p_detail_is_bpf, setp_detail_is_bpf] = useState();
const [p_detail_is_bpf_label, setp_detail_is_bpf_label] = useState();
const [p_formateur_id, setp_formateur_id] = useState("");
const [p_formateur_label, setp_formateur_label] = useState("");
@ -2531,22 +2557,11 @@ function GestionAdministrative(props) {
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");
setp_session_etape_label(mylocaltraining.session_etape);
} else {
setp_session_etape_label("Projet");
setp_session_etape("0");
setp_session_etape_label("");
setp_session_etape("");
}
@ -6871,7 +6886,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
IssessionChanged();
}}
/>
</div>
@ -6894,7 +6909,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
IssessionChanged();
}}
>
<MenuItem value="intra" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Intra &nbsp;&nbsp;</MenuItem>
<MenuItem value="extra" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Extra &nbsp;</MenuItem>
@ -6940,7 +6955,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
}}
>
<MenuItem value="1" style={{ "paddingLeft": "5px", "textAlign": "left" }}>Oui &nbsp;&nbsp;</MenuItem>
@ -7028,12 +7043,14 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
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>
{Getall_Parter_OR_Default_Session_Steps_result &&
Getall_Parter_OR_Default_Session_Steps_result.map((step) => (
<MenuItem key={JSON.parse(step)._id} value={JSON.parse(step).session_step_name}
style={{ "paddingLeft": "5px", "textAlign": "left", "height": "2rem", "width": '100%' }}>
{JSON.parse(step).session_step_name}&nbsp;
</MenuItem>
))}
</TextField>
</div>}

View File

@ -38,7 +38,7 @@ import {
FcList, FcGraduationCap, FcMultipleDevices, FcCurrencyExchange,
FcMoneyTransfer, FcFeedback, FcKey, FcVideoCall, FcSettings,
FcBusinesswoman, FcServices, FcCollect, FcCandleSticks, FcKindle,
FcFlowChart, FcReading, FcFinePrint, FcCancel,FcCalendar,
FcFlowChart, FcReading, FcFinePrint, FcCancel, FcCalendar,
} from "react-icons/fc";
import { BsTools } from "react-icons/bs";
@ -53,7 +53,7 @@ import Factures_Client from "./Partner_Facture";
import Configuration_Technique from "./Partner_Config_Technique";
import Config_Champs_Personnalise from "./Config_Champs_Personnalise";
import Module_Agenda from "./Module_Agenda";
import Partner_Configuration_Session_Steps from "./Partner_Config_Session_Steps";
import Dialog from '@mui/material/Dialog';
import DialogActions from '@mui/material/DialogActions';
@ -307,7 +307,7 @@ const Partner = (props) => {
var list_menu = ['creation', 'infopartner', 'statistique', 'abonnement', 'affichage', 'ordervalide',
'mes_sessions', 'setuplms', 'facture', 'pricing', 'mes_clients', 'mes_devis', 'mes_cmd',
'mes_stagiaires', 'mes_employes', 'mon_materiel', 'config_document', 'factures_client', "config_technique",
"config_champ_specific", "module_agenda"]
"config_champ_specific", "module_agenda", "config_session_steps"]
if (action && list_menu.includes(action)) {
@ -408,6 +408,19 @@ const Partner = (props) => {
}
}
function config_session_steps_func(event) {
var security_retval = check_user_acces_right("config_document", "read");
if (security_retval === 1) {
setmenu("config_session_steps");
setapiexcelimportmessage();
setformation_file_name();
history.push("/Partner/config_session_steps");
} else {
Dialog_1_handle_acces_insuffisant("Vos droits ne sont pas suffisants pour acceder à la gestion des documents");
}
}
function mes_factures_client_func(event) {
//var security_retval = check_user_acces_right("facture_client", "read");
//if (security_retval === 1) {
@ -1125,6 +1138,12 @@ const Partner = (props) => {
{String(menu) === "config_technique" && <div className="sousmenu_selected" onClick={config_technique_func}> &nbsp;&nbsp; <FcFinePrint className="icone_menu" />&nbsp;TECHNIQUE</div>}
</div>
<div>
<hr className="my_hr" />
{String(menu) !== "config_session_steps" && <div className="sousmenu" onClick={config_session_steps_func}>&nbsp;&nbsp;<FcFinePrint className="icone_menu" />&nbsp;SESSION ETAPE</div>}
{String(menu) === "config_session_steps" && <div className="sousmenu_selected" onClick={config_session_steps_func}> &nbsp;&nbsp; <FcFinePrint className="icone_menu" />&nbsp;SESSION ETAPE</div>}
</div>
<hr className="my_hr" />
</div>
@ -1283,7 +1302,7 @@ const Partner = (props) => {
</div>
<div className="parter_div_droite_bas">
<div className="titre1_bis"> Création manuelle d'une formation </div>
<TrainingForm mytrainingclass={{ 'ref': '', 'dist': 'Oui', 'plus_produit': '0' }} ispending={partnerstatus}
currentpack={String(partnerPackService).toUpperCase()} />
</div>
@ -1392,6 +1411,14 @@ const Partner = (props) => {
</div>
}
{String(menu) === "config_session_steps" && <div className="div_droite">
<Partner_Configuration_Session_Steps />
</div>
}
{String(menu) === "config_champ_specific" && <div className="div_droite">
<Config_Champs_Personnalise />
@ -1400,8 +1427,8 @@ const Partner = (props) => {
{String(menu) === "module_agenda" && <div className="div_droite">
<Module_Agenda conntected_employee_id={conntected_employee_id} read_access={check_user_acces_right("module_agenda", "read")} write_access={check_user_acces_right("module_agenda", "write")}/>
<Module_Agenda conntected_employee_id={conntected_employee_id} read_access={check_user_acces_right("module_agenda", "read")} write_access={check_user_acces_right("module_agenda", "write")} />
</div>
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -84,4 +84,5 @@
@import "./components/partner_configuration_technique";
@import "./components/config_champs_personnalise";
@import "./components/module_agenda.scss";
@import "./components/partner_configuration_session_step";