10/03/26 - 20h

branche_01062025
Cherif 2026-03-10 19:08:51 +01:00
parent 6cde7925a4
commit fcc4a4a458
12 changed files with 16416 additions and 140 deletions

View File

@ -113,6 +113,8 @@ const AddClassManual = (props) => {
const [mytrainingdurationunit, setmytrainingdurationunit] = useState("heure");
const [mytrainingdirectinscription, setmytrainingdirectinscription] = useState("");
const [mycpf, setmycpf] = useState("0");
const [mycpf_label, setmycpf_label] = useState("Non");
@ -1489,7 +1491,7 @@ const AddClassManual = (props) => {
current_pack: props.currentpack, local_sub_menu: 'affichage', price: "",
period: "", new_pack: ""
}
});
});
window.location.reload();
} else if (String(result['status']) === "false") {
// alert(result['message']);
@ -2112,6 +2114,12 @@ const AddClassManual = (props) => {
}
if (mylocaltraining.inscription_direct) {
setmytrainingdirectinscription(mylocaltraining.inscription_direct);
} else {
setmytrainingdirectinscription("");
}
if (mylocaltraining.recyclage_alert) {
setp_detail_recyclage_alert(mylocaltraining.recyclage_alert);
} else {
@ -2548,6 +2556,8 @@ const AddClassManual = (props) => {
formData.append('recyclage_periodicite', p_detail_recyclage_periodicite);
formData.append('recyclage_alert', p_detail_recyclage_alert);
formData.append('inscription_direct', mytrainingdirectinscription);
formData.append('note', mynote);
formData.append('published', mypublier);
@ -3478,6 +3488,23 @@ const AddClassManual = (props) => {
];
const inscription_direct = [
{
value: '1',
label: 'Oui',
},
{
value: '0',
label: 'Non',
},
{
value: '',
label: '',
},
];
const New_Option_is_Ftion_Initiale = [
{ "id": "1", "label": "Oui", "value": "1" },
{ "id": "0", "label": "Non", "value": "0" },
@ -8435,7 +8462,7 @@ const AddClassManual = (props) => {
id="is_ftion_initiale"
className="disabled_style"
options={New_Option_is_Ftion_Initiale}
value= {New_Option_is_Ftion_Initiale.filter((data) => (data).value === String(is_ftion_initiale))[0].label}
value={New_Option_is_Ftion_Initiale.filter((data) => (data).value === String(is_ftion_initiale))[0].label}
disabled={!Boolean(props.check_user_acces_right("formation", "write"))}
onChange={(event, value) => {
if (value && value.value) {
@ -8724,6 +8751,34 @@ const AddClassManual = (props) => {
/>
</div>
<div className="training_caract">
{inscription_direct && inscription_direct.length > 0 && <Autocomplete
disablePortal
name="inscription_direct"
id="inscription_direct"
className="disabled_style"
disabled={!Boolean(props.check_user_acces_right("formation", "write"))}
options={inscription_direct}
// value={mytrainingdirectinscription}
value={inscription_direct.filter((data) => (data).value === String(mytrainingdirectinscription))[0].label}
onChange={(event, value) => {
if (value && value.value) {
setmytrainingdirectinscription(value.value);
setdatamodification("1");
} else {
setmytrainingdirectinscription("");
setdatamodification("1");
}
}}
renderInput={(params) => <TextField {...params} label="Inscription directe" />
}
/>}
</div>
</div>
</div>
</div>
@ -9628,8 +9683,8 @@ const AddClassManual = (props) => {
height: 300,
menubar: true,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks',
],
@ -9688,8 +9743,8 @@ const AddClassManual = (props) => {
height: 300,
menubar: true,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks',
],
@ -9750,8 +9805,8 @@ const AddClassManual = (props) => {
height: 300,
menubar: true,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks',
],
@ -9786,8 +9841,8 @@ const AddClassManual = (props) => {
height: 300,
menubar: true,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks',
],
@ -9823,8 +9878,8 @@ const AddClassManual = (props) => {
height: 300,
menubar: true,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks',
],
@ -9861,8 +9916,8 @@ const AddClassManual = (props) => {
height: 300,
menubar: true,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks',
],
@ -9921,8 +9976,8 @@ const AddClassManual = (props) => {
height: 300,
menubar: true,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks',
],
@ -9957,8 +10012,8 @@ const AddClassManual = (props) => {
height: 300,
menubar: true,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks',
],
@ -9993,8 +10048,8 @@ const AddClassManual = (props) => {
height: 300,
menubar: true,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks',
],
@ -10052,8 +10107,8 @@ const AddClassManual = (props) => {
height: 300,
menubar: true,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks',
],
@ -10111,8 +10166,8 @@ const AddClassManual = (props) => {
height: 300,
menubar: true,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks',
],

View File

@ -75,6 +75,10 @@ const DisplayDetailClassAction = (props) => {
const stored_partner = cookie_part.tokenmysypart;
const stored_user = cookie.tokenmysych;
const [mytrainingdirectinscription, setmytrainingdirectinscription] = useState("");
// Cette fonction verifier si le token de l'evaluation est valide
//si $action != 'information' et 'inscription', alors la valeur est forcement celle d'un token.
const [tokenEval_api, settokenEval_api] = useState();
@ -165,9 +169,9 @@ const DisplayDetailClassAction = (props) => {
funclocaltoken();
window.scrollTo({
top: 0,
behavior: "smooth",
});
top: 0,
behavior: "smooth",
});
document.getElementsByName('mytitle')[0].focus();
}, []);
@ -273,7 +277,7 @@ const DisplayDetailClassAction = (props) => {
axios.post(myurl, form).then(res => {
if (String(res.data.status) !== String("false")) {
//console.log(" In Display res.data.status = " + res.data.status);
//console.log(" In Display res.data.message = " + res.data.message);
console.log(" In Display res.data.message = " + res.data.message);
if (res.data.message.length > 0) {
setmyApiResponse("True");
@ -336,13 +340,18 @@ const DisplayDetailClassAction = (props) => {
setmyApiResponse("False");
}
//console.log(" In displaydetailclass res.data.status = " + res.data.status);
//console.log(" In displaydetailclass res.data.message = " + res.data.message);
// console.log(" In displaydetailclass res.data.message = " + res.data.message);
setResult(res.data.message);
setDetailTraining(JSON.parse(res.data.message));
if (JSON.parse(res.data.message).note) {
setratingvalue(JSON.parse(res.data.message).note);
}
if (JSON.parse(res.data.message).inscription_direct) {
setmytrainingdirectinscription(JSON.parse(res.data.message).inscription_direct);
}
}
else {
//console.log(" In Erreur res.data.status = " + res.data.status);
@ -538,7 +547,6 @@ const DisplayDetailClassAction = (props) => {
<div className="div_mobile">
<h1 className="h1_transparent">{`${DetailTraining["title"]}`}</h1>
<div className="left_box">
<div className="hilightsoustitre" > A voir aussi</div>
@ -613,19 +621,21 @@ const DisplayDetailClassAction = (props) => {
</div>
</div>}
{(String(action).toLocaleLowerCase() === "inscription" || String(action).toLocaleLowerCase() === "information")
&& String(action).toLocaleLowerCase() !== "evaluation"
&& <div className="description detail_element" name='section_info'>
<Inscription_Information internal_url={classId} action={action} trainig_price={DetailTraining["price"]} />
&& <div className="description detail_element" name='section_info'>
<Inscription_Information internal_url={classId} action={action} trainig_price={DetailTraining["price"]}
mytrainingdirectinscription = {mytrainingdirectinscription} />
</div>
}
{String(action).toLocaleLowerCase() !== "inscription" && String(action).toLocaleLowerCase() !== "information" && String(tokenEval_api) === "true"
&& <div className="description detail_element" name='section_info'>
Zone evaluation : <button> fermer</button>
<br />
<Inscription_Information internal_url={classId} action={"evaluation"} eval_token={action} trainig_price={DetailTraining["price"]}/>
<br />
<Inscription_Information internal_url={classId} action={"evaluation"} eval_token={action} trainig_price={DetailTraining["price"]}
mytrainingdirectinscription = {mytrainingdirectinscription} />
</div>
}

View File

@ -28500,7 +28500,7 @@ const DisplayPartnerPromotion = (props) => {
SessionendDate={new Date(moment(SessionendDate, "DD/MM/YYYY"))} selected_session_invoiced_statut={selected_session_invoiced_statut}
session_class_id={session_selected_class_id}
check_user_acces_right={props.check_user_acces_right}
origin={"session"}
origin={"promotion"}
/>
</div>}
@ -28514,7 +28514,7 @@ const DisplayPartnerPromotion = (props) => {
session_class_id={session_selected_class_id}
selected_session_invoiced_statut={selected_session_invoiced_statut}
check_user_acces_right={props.check_user_acces_right}
origin={"session"} />
origin={"promotion"} />
</div>}
@ -28528,7 +28528,7 @@ const DisplayPartnerPromotion = (props) => {
jury_cell_editable={false}
jury_id={""}
check_user_acces_right={props.check_user_acces_right}
origin={"session"} />
origin={"promotion"} />
</div>}

View File

@ -16481,7 +16481,7 @@ const DisplayPartnerPromotion_ARG = (props) => {
options={New_GetListePreinscrit_insc_result}
multiple
multiple
onChange={(event, newValue) => {
setVal([
...fixedVal,

View File

@ -120,7 +120,7 @@ const Groupe_Apprenant = (props) => {
return (
<nav>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop:'5px' }}>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop: '5px' }}>
{expanded ? value : value.slice(0, 50)}&nbsp;
{value.length > 50 && (
@ -136,7 +136,7 @@ const Groupe_Apprenant = (props) => {
)}
</div>}
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop:'5px' }}>
{value && <div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all", paddingTop: '5px' }}>
&nbsp;
</div>
}
@ -1500,6 +1500,8 @@ const Groupe_Apprenant = (props) => {
function Ajout_1_grp_apprenant() {
Getall_Partner_Class_Reduice_Fields();
Getall_Partner_Session_Reduice_Fields();
clear_DetailFieds();
@ -3600,14 +3602,14 @@ const Groupe_Apprenant = (props) => {
},
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#dfe8f2",
color: "#0a2a4d",
fontSize: '14px',
fontFamily:'DM Sans',
backgroundColor: "#dfe8f2",
color: "#0a2a4d",
fontSize: '14px',
fontFamily: 'DM Sans',
},
'& .line--statut--selected': {
backgroundColor: '#e9f7f1',
backgroundColor: '#e9f7f1',
color: '#0a2a4d',
},
'& .line--statut--pair': {
@ -4220,7 +4222,7 @@ const Groupe_Apprenant = (props) => {
{String(props.check_user_acces_right("stagiaire", "write")) === "1" && String(add_one_grp_apprenant) === "1" && String(display_grp_apprenant) !== "1" && <div className="div_row session_data">
<nav style={{ "border": "None", "fontSize": "18px", "fontWeight": "600", "paddingTop": "10px", "paddingLeft": "5px", fontFamily:'DM Sans' }}> Ajouter un nouveau groupe </nav>
<nav style={{ "border": "None", "fontSize": "18px", "fontWeight": "600", "paddingTop": "10px", "paddingLeft": "5px", fontFamily: 'DM Sans' }}> Nouveau groupe </nav>
<div>
@ -4646,9 +4648,9 @@ const Groupe_Apprenant = (props) => {
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#dfe8f2",
color: "#0a2a4d",
fontSize: '14px',
fontFamily:'DM Sans',
color: "#0a2a4d",
fontSize: '14px',
fontFamily: 'DM Sans',
},
'& .line--statut--selected': {

View File

@ -130,7 +130,7 @@ function Inscription_Information(props) {
var nom = leads_nom;
// console.log(" ## leads_nom ==", leads_nom)
// console.log(" ## leads_nom ==", leads_nom)
if (String(nom).trim().length <= 0) {
document.getElementsByName("nom")[0].style.borderColor = "red";
@ -181,7 +181,7 @@ function Inscription_Information(props) {
var modefinancement = leads_modefinance;
if (String(modefinancement).trim().length <= 0) {
if (String(modefinancement).trim().length <= 0 && props.mytrainingdirectinscription !== "1") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir une mode de financement");
setalert_type("error")
@ -190,7 +190,7 @@ function Inscription_Information(props) {
var opco = leads_opco;
if (String(opco).trim().length <= 0) {
if (String(opco).trim().length <= 0 && props.mytrainingdirectinscription !== "1") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un centre Opco");
setalert_type("error")
@ -225,8 +225,14 @@ function Inscription_Information(props) {
formData.append('class_internal_url', props.internal_url);
formData.append('price', props.trainig_price);
/* Ceci est une preinscription faite par un end user, depuis le font, donc on force le 'status' à 0 (0 = préinscription)*/
formData.append('status', '0');
if (props.mytrainingdirectinscription !== "1") {
/* Ceci est une preinscription faite par un end user, depuis le font, donc on force le 'status' à 0 (0 = préinscription)*/
formData.append('status', '0');
}
else if (props.mytrainingdirectinscription === "1") {
/* Ceci est une inscription direct faite par un end user, depuis le font, donc on force le 'status' à 1 (1 = Inscription OK)*/
formData.append('status', '1');
}
/*
Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire
@ -746,7 +752,7 @@ function Inscription_Information(props) {
formData.append('is_company', is_company);
// console.log(" ### formData = ", formData);
// console.log(" ### formData = ", formData);
fetch(
url,
@ -1161,7 +1167,7 @@ function Inscription_Information(props) {
</div>}
<div className="select-container">
<div className="titre1_aide_finance" style={{ fontFamily: 'DM Sans' }}> Je m'inscris </div>
<div className="titre1_aide_finance" style={{ fontFamily: 'DM Sans' }}> Je m'inscris</div>
<div className="div_row" style={{ "width": "100%" }}>
<div className="choisir_session" style={{ paddingTop: "30px" }}>
Choisir une session &nbsp;
@ -1547,73 +1553,34 @@ function Inscription_Information(props) {
{/* -- end champs specifiques ** /}
</> */}
<div style={{ "width": "10%" }}> &nbsp;</div>
<div className="titre1_aide_finance" style={{ fontFamily: 'DM Sans' }}> Nous vous aidons à financer la formation</div>
&nbsp;
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }}>
<div className="select-container" style={{ "marginBottom": "1rem" }}>
<div className="field_gauche" style={{ paddingTop: "15px", fontFamily: 'DM Sans' }}>
Choisir le mode financement &nbsp;
</div>
<div className="field_droite">
{modefinancement && modefinancement.length > 0 &&
<Autocomplete
disablePortal
name="detail_choix_session"
id="detail_choix_session"
// value={New_Getall_Partner_Paiement_Condition_result.filter((data) => (data).label === String(p_client_invoice_paiement_condition_code))[0].label}
options={modefinancement}
className="disabled_style"
onChange={(event, value) => {
if (value && value.value) {
setmonfinancement(value.value);
setleads_modefinance(value.value);
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>}
</div>
</div>
</Box>
<div style={{ "width": "100%" }}> &nbsp;</div>
{monfinancement && String(monfinancement) !== "perso" &&
{props.mytrainingdirectinscription !== "1" && <>
<div style={{ "width": "10%" }}> &nbsp; </div>
<div className="titre1_aide_finance" style={{ fontFamily: 'DM Sans' }}> Nous vous aidons à financer la formation</div>
&nbsp;
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }}>
&nbsp;
<div className="select-container">
<div className="field_gauche">
Choisir votre centre de rattachement
<div className="select-container" style={{ "marginBottom": "1rem" }}>
<div className="field_gauche" style={{ paddingTop: "15px", fontFamily: 'DM Sans' }}>
Choisir le mode financement &nbsp;
</div>
<div className="field_droite">
{New_GetListOpco_result && New_GetListOpco_result.length > 0 &&
{modefinancement && modefinancement.length > 0 &&
<Autocomplete
disablePortal
name="detail_choix_session"
id="detail_choix_session"
// value={New_Getall_Partner_Paiement_Condition_result.filter((data) => (data).label === String(p_client_invoice_paiement_condition_code))[0].label}
options={New_GetListOpco_result}
options={modefinancement}
className="disabled_style"
onChange={(event, value) => {
if (value && value.idcc_code) {
setmyopco(value.idcc_code)
setleads_opco(value.idcc_code)
} else {
setmyopco("inconnu")
setleads_opco("inconnu")
}
if (value && value.value) {
setmonfinancement(value.value);
setleads_modefinance(value.value);
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
@ -1624,29 +1591,79 @@ function Inscription_Information(props) {
/>}
</div>
<div className="okUpdateData"><i> Laisser "vide" si vous ne le connaissez pas. </i>
</div>
</div>
</Box>}
</Box>
<div style={{ "width": "100%" }}> &nbsp;</div>
{monfinancement && String(monfinancement) !== "perso" &&
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }}>
&nbsp;
<div className="select-container">
<div className="field_gauche">
Choisir votre centre de rattachement
</div>
<div className="field_droite">
{New_GetListOpco_result && New_GetListOpco_result.length > 0 &&
<Autocomplete
disablePortal
name="detail_choix_session"
id="detail_choix_session"
// value={New_Getall_Partner_Paiement_Condition_result.filter((data) => (data).label === String(p_client_invoice_paiement_condition_code))[0].label}
options={New_GetListOpco_result}
className="disabled_style"
onChange={(event, value) => {
if (value && value.idcc_code) {
setmyopco(value.idcc_code)
setleads_opco(value.idcc_code)
} else {
setmyopco("inconnu")
setleads_opco("inconnu")
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>}
</div>
<div className="okUpdateData"><i> Laisser "vide" si vous ne le connaissez pas. </i>
</div>
</div>
</Box>}
</>}
</Box>}
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center", width: '100%', marginTop: '10px' }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', }}>
<Button variant="contained" className="bton_enreg"
{props.mytrainingdirectinscription !== "1" && <Button variant="contained" className="bton_enreg"
onClick={(e) => {
RecordData();
}}
>Se pré-inscrire &nbsp; &nbsp; {<SendIcon />}
</Button>
</Button>}
{props.mytrainingdirectinscription === "1" && <Button variant="contained" className="bton_enreg"
onClick={(e) => {
RecordData();
}}
>S'inscrire &nbsp; &nbsp; {<SendIcon />}
</Button>}
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', float: 'right' }}>
@ -1999,9 +2016,7 @@ function Inscription_Information(props) {
height: 300,
menubar: false,
plugins: [
'advlist autolink lists link image charmap print preview anchor',
'searchreplace visualblocks code fullscreen',
'insertdatetime media table paste code help wordcount'
'advlist',
],
toolbar: false,
content_style: 'body { font-family:DM Sans,sans-serif; font-size:14px; }'
@ -2222,9 +2237,7 @@ function Inscription_Information(props) {
height: 400,
menubar: false,
plugins: [
'advlist autolink lists link image charmap print preview anchor',
'searchreplace visualblocks code fullscreen',
'insertdatetime media table paste code help wordcount'
'advlist '
],
toolbar: false,
content_style: 'body { font-family:DM Sans,sans-serif; font-size:14px; }'

View File

@ -1024,7 +1024,7 @@ const Module_Selection_Apprenants = (props) => {
</div>
}
----zzzz
{p_filtre2_value && String(p_filtre1_value) === "user_group" &&
<div className="div_row" style={{ "marginBottom": "5px" }}>
<div className="div_row_gauche texte_area_filter">

View File

@ -764,8 +764,6 @@ const Module_Session_Planification = (props) => {
setDelete_Sequence_Session_Data_api("true");
setDelete_Sequence_Session_Data_result(res.data.message);
Getall_Sequence_Of_Session(selected_session_id);
setDialog_seq_ressource_1_selected_type_ressource("");
setDialog_seq_ressource_1_selected_ressource_id("");
setDialog_seq_ressource_1_selected_ressource_poste("");
@ -781,6 +779,8 @@ const Module_Session_Planification = (props) => {
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("success");
Getall_Sequence_Of_Session(selected_session_id);
}
else {
setDelete_Sequence_Session_Data_api("false");
@ -1206,7 +1206,14 @@ const Module_Session_Planification = (props) => {
form.append("ue_id", p_detail_sequence_ue_id);
form.append("ue_planif_line_id", p_detail_sequence_ue_planif_line_id);
//console.log(" form == ", form);
var tab_grp_apprenant_ids = []
for (var i = 0; i < val_grp_apprenant.length; i++) {
tab_grp_apprenant_ids.push(val_grp_apprenant[i]._id)
}
form.append("tab_grp_apprenant_ids", tab_grp_apprenant_ids);
// console.log(" form == ", form);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Session_Sequence_Return_New_Seq_Data/";
@ -1565,6 +1572,14 @@ const Module_Session_Planification = (props) => {
var local_session_ue_titre = JSON.parse(x).ue_titre;
var local_session_ue_code = JSON.parse(x).ue_code;
var local_tab_grp_apprenant_ids = []
if (JSON.parse(x).tab_grp_apprenant_ids) {
setval_grp_apprenant(JSON.parse(x).tab_grp_apprenant_ids);
local_tab_grp_apprenant_ids = JSON.parse(x).tab_grp_apprenant_ids
} else {
setval_grp_apprenant([]);
}
var local_session_grp_apprenant_id = JSON.parse(x).grp_apprenant_id;
var local_session_ue_planif_line_id = JSON.parse(x).unite_enseignement_planif_id;
@ -1602,6 +1617,7 @@ const Module_Session_Planification = (props) => {
"local_grp_apprenant_id": local_session_grp_apprenant_id,
"local_ue_planif_line_id": local_session_ue_planif_line_id,
"tab_grp_apprenant_ids": local_tab_grp_apprenant_ids,
};
new_data2.push(node);
@ -1633,6 +1649,146 @@ const Module_Session_Planification = (props) => {
}
const [Getall_Sequence_Of_Session_With_Filter_result_planning_view, setGetall_Sequence_Of_Session_With_Filter_result_planning_view] = useState([]);
const [Getall_Sequence_Of_Session_With_Filter_api, setGetall_Sequence_Of_Session_With_Filter_api] = useState();
const [Getall_Sequence_Of_Session_With_Filter_message, setGetall_Sequence_Of_Session_With_Filter_message] = useState();
const [Getall_Sequence_Of_Session_With_Filter_result, setGetall_Sequence_Of_Session_With_Filter_result] = useState([]);
function Getall_Sequence_Of_Session_With_Filter(local_session_id, local_grp_apprenant_id, local_unite_enseignement_planif_id) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("session_id", local_session_id);
form.append("grp_apprenant_id", local_grp_apprenant_id);
form.append("unite_enseignement_planif_id", local_unite_enseignement_planif_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Session_Sequence_List_With_Filter/";
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_Sequence_Of_Session_With_Filter res.data.status = " + res.data.status);
// console.log(" In Getall_Sequence_Of_Session_With_Filter res.data.message r_class = " + res.data.message);
setGetall_Sequence_Of_Session_With_Filter_api("true");
setGetall_Sequence_Of_Session_With_Filter_result(res.data.message);
setGetall_Sequence_Of_Session_result(res.data.message);
//console.log(" ##NB_Sequence = ", res.data.message.length);
setnb_sequence(res.data.message.length);
//props.setnb_sequence(res.data.message.length);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//console.log(" ### new_data XXX = ", x);
//---
var localid = JSON.parse(x)._id; // on donne volontairement a l'id la valeur de '_id'
var local_id = JSON.parse(x)._id;
var local_title = JSON.parse(x).sequence_title;
var local_start = new Date(moment(JSON.parse(x).sequence_start, "DD/MM/YYYY hh:mm"))
var local_end = new Date(moment(JSON.parse(x).sequence_end, "DD/MM/YYYY hh:mm"))
var local_volume_theorique = JSON.parse(x).volume_theorique;
var local_agenda = JSON.parse(x).agenda;
var local_objectif = JSON.parse(x).objectif;
var local_session_id = JSON.parse(x).session_id;
var local_session_comment = JSON.parse(x).commentaire;
var local_session_type = JSON.parse(x).type;
var local_session_ue_id = JSON.parse(x).ue_id;
var local_session_ue_titre = JSON.parse(x).ue_titre;
var local_session_ue_code = JSON.parse(x).ue_code;
var local_tab_grp_apprenant_ids = []
if (JSON.parse(x).tab_grp_apprenant_ids) {
setval_grp_apprenant(JSON.parse(x).tab_grp_apprenant_ids);
local_tab_grp_apprenant_ids = JSON.parse(x).tab_grp_apprenant_ids
} else {
setval_grp_apprenant([]);
}
var local_session_grp_apprenant_id = JSON.parse(x).grp_apprenant_id;
var local_session_ue_planif_line_id = JSON.parse(x).unite_enseignement_planif_id;
var local_session_color = JSON.parse(x).grp_apprenant_color;
var local_session_grp_code = JSON.parse(x).grp_apprenant_code;
var local_mode_animation = JSON.parse(x).mode_animation;
// Si il n'y pas de relief avec le groupe d'apprenant, on va introduire un relief avec la notion de présentiel et distantiel
if (local_session_color === "" && local_mode_animation === "1") {
// sequence en distantiel, on va mettre un code couleur
local_session_color = "#4ea860"
}
//---
var node = {
"_id": local_id,
"id": localid,
"title": local_title,
"start": local_start,
"end": local_end,
"grp_code": local_session_grp_code,
"color": local_session_color,
"local_volume_theorique": local_volume_theorique,
"local_agenda": local_agenda,
"local_mode_animation": local_mode_animation,
"local_objectif": local_objectif,
"local_comment": local_session_comment,
"local_type": local_session_type,
"local_ue_id": local_session_ue_id,
"local_ue_titre": local_session_ue_titre,
"local_ue_code": local_session_ue_code,
"local_grp_apprenant_id": local_session_grp_apprenant_id,
"local_ue_planif_line_id": local_session_ue_planif_line_id,
"tab_grp_apprenant_ids": local_tab_grp_apprenant_ids,
};
new_data2.push(node);
});
if (new_data2.length > 0) {
setGetall_Sequence_Of_Session_With_Filter_result_planning_view(new_data2);
setGetall_Sequence_Of_Session_result_planning_view(new_data2);
// console.log(" ### new_data2 Getall_Sequence_Of_Session_With_Filter = ", new_data2);
}
}
else {
setGetall_Sequence_Of_Session_With_Filter_api("false");
setGetall_Sequence_Of_Session_With_Filter_message(res.data.message);
// alert(res.data.message);
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
setLoading(false);
console.warn('Not good man :( Getall_Sequence_Of_Session_With_Filter = ', error);
setGetall_Sequence_Of_Session_With_Filter_api("false");
alert("Impossible de récuperer la liste des séquences")
//setmyApimyApiMessage("")
})
}
const [New_Getall_Partner_Modele_Planning_result_planning_view, setNew_Getall_Partner_Modele_Planning_result_planning_view] = useState([]);
const [Getall_Partner_Modele_Planning_api, setGetall_Partner_Modele_Planning_api] = useState();
@ -1909,7 +2065,8 @@ const Module_Session_Planification = (props) => {
const Dialog_DIALOG_AGENDA_handleClose_buton = () => {
setNew_Get_List_Given_UE_Planif_lines_result([])
setNew_Get_List_Given_UE_Planif_lines_result([]);
setval_grp_apprenant([]);
var node = {
@ -2032,6 +2189,12 @@ const Module_Session_Planification = (props) => {
form.append("sequence_end", new_end_date);
form.append("_id", local_selected_sequence_id);
var tab_grp_apprenant_ids = []
for (var i = 0; i < val_grp_apprenant.length; i++) {
tab_grp_apprenant_ids.push(val_grp_apprenant[i]._id)
}
form.append("tab_grp_apprenant_ids", tab_grp_apprenant_ids);
// console.log(" form == ", form);
@ -2418,7 +2581,7 @@ const Module_Session_Planification = (props) => {
setGetall_List_Sequence_Ressource_result([]);
setselectionModel_sequence([]);
// console.log(" ### arg.event.extendedProps = ", arg.event.extendedProps);
// console.log(" ### arg.event.extendedProps = ", arg.event.extendedProps);
//console.log(" ### arg.event.extendedProps.local_type = ", arg.event.extendedProps.local_type);
@ -2450,6 +2613,13 @@ const Module_Session_Planification = (props) => {
setp_detail_event_type("");
if (arg.event.extendedProps.tab_grp_apprenant_ids) {
setval_grp_apprenant(arg.event.extendedProps.tab_grp_apprenant_ids);
}
else
val_grp_apprenant([]);
if (arg.event.extendedProps.local_ue_id) {
setp_detail_sequence_ue_id(arg.event.extendedProps.local_ue_id);
Get_List_Given_UE_Planif_lines(arg.event.extendedProps.local_ue_id);
@ -2691,6 +2861,12 @@ const Module_Session_Planification = (props) => {
form.append("ue_planif_line_id", p_detail_sequence_ue_planif_line_id);
var tab_grp_apprenant_ids = []
for (var i = 0; i < val_grp_apprenant.length; i++) {
tab_grp_apprenant_ids.push(val_grp_apprenant[i]._id)
}
form.append("tab_grp_apprenant_ids", tab_grp_apprenant_ids);
form.append("_id", selected_sequence_id);
@ -2944,6 +3120,8 @@ const Module_Session_Planification = (props) => {
setGetall_List_Sequence_Ressource_result([]);
setselectionModel_sequence([]);
setDialog_DIALOG_AGENDA_open(true);
setval_grp_apprenant([]);
}
};
@ -3005,7 +3183,6 @@ const Module_Session_Planification = (props) => {
//---
var node = {
"_id": "",
"id": "",
"label": "",
"code": "",
"nom": "",
@ -3718,6 +3895,10 @@ const Module_Session_Planification = (props) => {
const [position_h_choix_planning, setposition_h_choix_planning] = useState('700');
const fixedVal_grp_apprenant = [];
const [val_grp_apprenant, setval_grp_apprenant] = useState([...fixedVal_grp_apprenant]);
return (
<div className="modulesessionplanification">
@ -4512,6 +4693,8 @@ const Module_Session_Planification = (props) => {
</div>
</nav>
<div className="session_caract_Dialog" > Titre
@ -6158,7 +6341,7 @@ const Module_Session_Planification = (props) => {
<div className="session_caract_Dialog" style={{ width: '50%' }}> Groupe apprenants
{/*<div className="session_caract_Dialog" style={{ width: '50%' }}> Groupe apprenants
{New_Getall_Partner_Groupe_Inscrit_result && New_Getall_Partner_Groupe_Inscrit_result.length > 0 && <Autocomplete
disablePortal
@ -6182,6 +6365,44 @@ const Module_Session_Planification = (props) => {
}
/>}
</div>*/}
<div className="session_caract_Dialog" style={{ width: '50%' }}> Groupe apprenants
{New_Getall_Partner_Groupe_Inscrit_result && New_Getall_Partner_Groupe_Inscrit_result.length > 0 && <Autocomplete
disablePortal
name="event_dialog_grp_apprenant"
id="event_dialog_grp_apprenant"
fullWidth
// value={New_Getall_Partner_Groupe_Inscrit_result.filter((data) => (data)._id === String(p_detail_sequence_groupe_apprenant_id))[0].label}
options={New_Getall_Partner_Groupe_Inscrit_result}
/* onChange={(event, value) => {
if (value && value._id) {
setp_detail_sequence_groupe_apprenant_id(value._id);
} else {
setp_detail_sequence_groupe_apprenant_id("");
}
}}*/
multiple
onChange={(event, newValue) => {
setval_grp_apprenant([
...fixedVal_grp_apprenant,
...newValue.filter((i) => fixedVal_grp_apprenant.indexOf(i) === -1),
]);
console.log(" ### val_grp_apprenant = ", val_grp_apprenant)
}}
value={val_grp_apprenant}
renderInput={(params) => <TextField {...params} placeholder="Choisir une option " />
}
/>}
</div>
</nav>
@ -6486,6 +6707,30 @@ const Module_Session_Planification = (props) => {
<nav className="mode_affichage" onClick={func_display_list_view}> <CiBoxList /> Liste </nav>
</div>
{props.origin && props.origin === "promotion" && <div style={{ "textAlign": "right", "float": "right", "width": "100%", "marginRight": '20px' }} >
Filtre :
{New_Getall_Partner_Groupe_Inscrit_result && New_Getall_Partner_Groupe_Inscrit_result.length > 0 && <Autocomplete
disablePortal
name="event_dialog_grp_apprenant"
id="event_dialog_grp_apprenant"
//fullWidth
// value={New_Getall_Partner_Groupe_Inscrit_result.filter((data) => (data)._id === String(p_detail_sequence_groupe_apprenant_id))[0].label}
options={New_Getall_Partner_Groupe_Inscrit_result}
onChange={(event, value) => {
if (value && value._id) {
Getall_Sequence_Of_Session_With_Filter(selected_session_id, value._id, "");
} else {
Getall_Sequence_Of_Session_With_Filter(selected_session_id, "", "");
}
}}
renderInput={(params) => <TextField {...params} placeholder="Choisir une option " />
}
/>}
</div>}
{display_view && String(display_view) === "list" && <div style={{ "border": "None" }}>
@ -6737,7 +6982,7 @@ const Module_Session_Planification = (props) => {
&nbsp;
<div style={{ "width": "98%", "marginLeft": "5px", padding: '10px' }} >
zzzz
<FullCalendar
height={550}
locales={allLocales}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -146,7 +146,7 @@ const New_C_Detail_Formation_2025 = (props) => {
})
}
const [mytrainingdirectinscription, setmytrainingpreinscription] = useState("");
useEffect(() => {
async function funclocaltoken() {
@ -550,6 +550,14 @@ const New_C_Detail_Formation_2025 = (props) => {
}
if (JSON.parse(res.data.message).inscription_direct) {
setmytrainingpreinscription(JSON.parse(res.data.message).inscription_direct);
} else {
setmytrainingpreinscription("");
}
if (JSON.parse(res.data.message).isdatadock) {
setisdatadock(JSON.parse(res.data.message).isdatadock);
}
@ -1776,13 +1784,15 @@ const New_C_Detail_Formation_2025 = (props) => {
{String(inscritpion) === "2" && <div>
<Inscription internal_url={DetailTraining["internal_url"]} action="information"
Close_info_form={Close_info_form} trainig_price={class_sales_price} inscritpion={inscritpion} />
Close_info_form={Close_info_form} trainig_price={class_sales_price} inscritpion={inscritpion}
mytrainingdirectinscription={mytrainingdirectinscription} />
</div>
}
{String(inscritpion) === "1" && <div className="description detail_element">
<Inscription internal_url={DetailTraining["internal_url"]} action="inscription"
Close_info_form={Close_inscrip_form} trainig_price={class_sales_price} inscritpion={inscritpion} />
Close_info_form={Close_inscrip_form} trainig_price={class_sales_price} inscritpion={inscritpion}
mytrainingdirectinscription={mytrainingdirectinscription} />
</div>
@ -2238,17 +2248,20 @@ const New_C_Detail_Formation_2025 = (props) => {
<div style={{ width: '100%', float: 'left', background: "#F4F4FB" }}>
<div className="block_central" >
<div className="block_central_gauche" ref={myRef_informe} id="myRef_informe">
{String(inscritpion) === "1" && <div className="description detail_element">
<Inscription internal_url={DetailTraining["internal_url"]} action="inscription"
Close_info_form={Close_info_form} trainig_price={class_sales_price} inscritpion={inscritpion} />
Close_info_form={Close_info_form} trainig_price={class_sales_price} inscritpion={inscritpion}
mytrainingdirectinscription={mytrainingdirectinscription} />
</div>
}
{String(inscritpion) === "2" && <div className="description detail_element">
<Inscription internal_url={DetailTraining["internal_url"]} action="information"
Close_info_form={Close_inscrip_form} trainig_price={class_sales_price} inscritpion={inscritpion} />
Close_info_form={Close_inscrip_form} trainig_price={class_sales_price} inscritpion={inscritpion}
mytrainingdirectinscription={mytrainingdirectinscription}/>
</div>
@ -2258,15 +2271,15 @@ const New_C_Detail_Formation_2025 = (props) => {
&& String(action).toLocaleLowerCase() !== "evaluation"
&& <div className="description detail_element" name='section_info'>
<Inscription internal_url={classId} action={action} trainig_price={class_sales_price} inscritpion={inscritpion} />
<Inscription internal_url={classId} action={action} trainig_price={class_sales_price} inscritpion={inscritpion}
mytrainingdirectinscription={mytrainingdirectinscription} />
</div>
}
{String(action).toLocaleLowerCase() !== "inscription" && String(action).toLocaleLowerCase() !== "information" && String(tokenEval_api) === "true"
&& <div className="description detail_element" name='section_info'>
<Inscription internal_url={classId} action={"evaluation"} eval_token={action} inscritpion={inscritpion} />
<Inscription internal_url={classId} action={"evaluation"} eval_token={action} inscritpion={inscritpion}
mytrainingdirectinscription={mytrainingdirectinscription} />
</div>
}