24/03/2024 - 13h

recette2
cherif 2024-03-24 13:07:13 +01:00
parent 825be48d0f
commit 57ad32b62a
7 changed files with 935 additions and 372 deletions

View File

@ -747,6 +747,8 @@ const CRM_Opportunite = (props) => {
const [p_detail_contact_email, setp_detail_contact_email] = useState();
const [p_detail_contact_telephone, setp_detail_contact_telephone] = useState();
const [p_detail_commentaire, setp_detail_commentaire] = useState();
const [p_detail_vendeur_id, setp_detail_vendeur_id] = useState('');
const [p_detail_statut, setp_detail_statut] = useState("");
@ -1828,6 +1830,11 @@ const CRM_Opportunite = (props) => {
</div>
<div className="session_caract_Dialog" > Priorité &nbsp;<br />
<nav style={{ "float": "right", "width": "80%", "marginRight": "10%", "textAlign": "right" }}>
<Rating
@ -1868,6 +1875,26 @@ const CRM_Opportunite = (props) => {
</div>
<div className="session_caract_Dialog" > Commentaire
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="dialog_opport_comment"
id="dialog_opport_comment"
type="number"
step="any"
className="disabled_style"
value={p_detail_commentaire}
onChange={(e) => {
setp_detail_commentaire(e.target.value);
setopport_changed("1");
}
}
/>
</div>
<div className="session_caract_Dialog" > Vendeur <br />

View File

@ -793,16 +793,16 @@ const DisplayPartnerSession = (props) => {
{ field: 'id', headerName: 'id', hide: true },
{ field: '_id', headerName: '_id', hide: true },
{ field: 'date', headerName: 'date', width: 100, hide: true, flex: 1 },
{ field: 'sequence_start', headerName: 'Debut', width: 100, flex: 1 },
{ field: 'sequence_end', headerName: 'Fin', width: 100, flex: 1 },
{ field: 'is_present', headerName: 'Présent', width: 100, hide: false, editable: true, type: 'boolean', },
{ field: 'sequence_start', headerName: 'Debut', width: 70, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'sequence_end', headerName: 'Fin', width: 70, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'is_present', headerName: 'Présent', width: 90, hide: false, editable: true, type: 'boolean', },
{ field: 'email', headerName: 'email', width: 250, flex: 1 },
{ field: 'nom', headerName: 'nom', width: 150, hide: false, editable: true },
{ field: 'prenom', headerName: 'prenom', width: 150, hide: false, editable: false },
{ field: 'email', headerName: 'email', minWidth: 300, flex: 1 , renderCell: (params) => <ExpandableCell_50 {...params} />,},
{ field: 'nom', headerName: 'nom', minWidth: 150, flex: 1 , hide: false, editable: true , renderCell: (params) => <ExpandableCell_50 {...params} />,},
{ field: 'prenom', headerName: 'prenom', minWidth: 150, flex: 1 ,hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: 'statut', headerName: 'Statut', width: 150, hide: false, editable: false,
field: 'statut', headerName: 'Statut', width: 100, hide: false, editable: false,
renderCell: (cellValues) => {
return (
@ -816,7 +816,28 @@ const DisplayPartnerSession = (props) => {
);
},
},
{ field: 'date_envoi', headerName: 'Envoyé le', width: 150, hide: false, editable: false },
{
field: 'date_envoi', headerName: 'Envoyé le', width: 180, hide: false, editable: false,
renderCell: (cellValues) => {
return (
<div style={{ paddingLeft: "5px", paddingRight: "10px", "display": "block", wordBreak: "break-all" }}>
{String(cellValues.row.date_envoi).substring(0, 16)}
</div>
);
},
},
{ field: 'date_emargement', headerName: 'Émargé le', width: 180, hide: true, editable: false,
renderCell: (cellValues) => {
return (
<div style={{ paddingLeft: "5px", paddingRight: "10px", "display": "block", wordBreak: "break-all" }}>
{String(cellValues.row.date_emargement).substring(0, 16)}
</div>
);
},
},
{
field: "valide", headerName: 'Valider',
@ -842,9 +863,9 @@ const DisplayPartnerSession = (props) => {
const columns_list_evaluation = [
{ field: 'id', headerName: 'id', hide: true },
{ field: '_id', headerName: '_id', hide: true },
{ field: 'email', headerName: 'email', width: 200, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} /> },
{ field: 'nom', headerName: 'nom', width: 200, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} /> },
{ field: 'prenom', headerName: 'prenom', width: 200, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} /> },
{ field: 'email', headerName: 'email', miniWidth: 300, flex:1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} /> },
{ field: 'nom', headerName: 'nom', miniWidth: 200, hide: false, flex:1, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} /> },
{ field: 'prenom', headerName: 'prenom', miniWidth: 200, hide: false, flex:1,editable: false, renderCell: (params) => <ExpandableCell_50 {...params} /> },
{
field: 'eval_status', headerName: 'Statut', width: 100, editable: false, flex: true,
valueFormatter: (params) => {
@ -8090,6 +8111,7 @@ const DisplayPartnerSession = (props) => {
form.append("token", stored_cookie);
form.append("session_id", selected_session_id);
form.append("jounree_modele_id", "");
form.append("option", Dialog_seq_choix_model_emargement);
//console.log(" form == ", form);
@ -8117,10 +8139,11 @@ const DisplayPartnerSession = (props) => {
setsequence_startDate();
setsequence_endDate();
setDialog_seq_choix_model_emargement_open(false);
alert(res.data.message);
Close_Dialog_Detail_seq_open();
}
else {
setAdd_Automatic_Sequence_Session_api("false");
@ -8401,6 +8424,28 @@ const DisplayPartnerSession = (props) => {
const [Dialog_seq_choix_model_emargement_message, setDialog_seq_choix_model_emargement_message] = React.useState(false);
const [Dialog_seq_choix_model_emargement_open, setDialog_seq_choix_model_emargement_open] = React.useState(false);
function Dialog_1_handle_change_participant_session(message) {
setDialog_seq_choix_model_emargement_message(message);
setDialog_seq_choix_model_emargement_open(true);
}
const Dialog_seq_choix_model_emargement_handleClose = () => {
//alert(" Utiliser le bouton 'fermer' ");
//setOpen(false);
};
const Dialog_seq_choix_model_emargement_handleClose_buton = () => {
setDialog_seq_choix_model_emargement_open(false);
};
const [Dialog_seq_ressource_1_selected_type_ressource, setDialog_seq_ressource_1_selected_type_ressource] = React.useState();
const [Dialog_seq_ressource_1_selected_ressource_id, setDialog_seq_ressource_1_selected_ressource_id] = React.useState();
const [Dialog_seq_ressource_1_selected_ressource_poste, setDialog_seq_ressource_1_selected_ressource_poste] = React.useState();
@ -9460,7 +9505,11 @@ const DisplayPartnerSession = (props) => {
{ "id": "1", "label": "Materiel", "value": "ressource_materielle" },
]
const New_Option_Model_Sequence = [
{ "id": "0", "label": "Calendrier de travail", "value": "0" },
{ "id": "1", "label": "La 1/2 journée", "value": "1" },
{ "id": "2", "label": "La journée", "value": "2" },
]
/* Recuperation des evaluations */
const [selectionModel_evaluation, setSelectionModel_evaluation] = React.useState([]);
@ -9759,6 +9808,7 @@ const DisplayPartnerSession = (props) => {
setDialog_FACTURATION_FORMATION_open(false);
};
const [Dialog_seq_choix_model_emargement, setDialog_seq_choix_model_emargement] = React.useState("0");
return (
<div className="displaypartnersession">
@ -9767,6 +9817,75 @@ const DisplayPartnerSession = (props) => {
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
{/* Dialgue pour le choix du modele de sequene (la journée, 1/2 journée, etc*/}
<Dialog
open={Dialog_seq_choix_model_emargement_open}
onClose={Dialog_seq_choix_model_emargement_handleClose}
className="displaypartnersession"
>
<DialogTitle> Choisir une modèle de séquence </DialogTitle>
<DialogContent className="DialogContent_width" style={{ height: "15rem" }}>
<DialogContentText>
{Dialog_seq_choix_model_emargement_message}
</DialogContentText>
<div className="session_caract_Dialog" > Source
<Autocomplete
disablePortal
name="event_dialog_modele_seq"
id="event_dialog_modele_seq"
fullWidth
options={New_Option_Model_Sequence}
onChange={(event, value) => {
if (value && value.value) {
setDialog_seq_choix_model_emargement(value.value);
}
}}
renderInput={(params) => <TextField {...params} placeholder="Choisir une option " />
}
/>
</div>
</DialogContent>
<DialogActions>
<div className="div_row">
<div className="div_row_gauche">
<Button onClick={Add_Automatic_Sequence_Session} className="bton_enreg_dialog">Crée en masse</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
<Button onClick={Dialog_seq_choix_model_emargement_handleClose_buton} className="bton_annule_dialog" >Fermer</Button>
</div>
</div>
</DialogActions>
</Dialog>
{/*** fin dialog choix modele sequence */}
<Dialog
open={Dialog_1_open}
onClose={Dialog_1_handleClose}
@ -10160,26 +10279,7 @@ const DisplayPartnerSession = (props) => {
renderInput={(params) => <TextField {...params} placeholder="Choisir une option " />
}
/>
{/*<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="event_dialog_type_ressource"
id="event_dialog_type_ressource"
select
fullWidth
value={Dialog_seq_ressource_1_selected_type_ressource}
onChange={(e) => {
setDialog_seq_ressource_1_selected_type_ressource(e.target.value);
}
}
>
<MenuItem value="ressource_humaine" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Employé &nbsp;</MenuItem>
<MenuItem value="ressource_materielle" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Materiel &nbsp;</MenuItem>
</TextField>*/}
</div>
@ -10205,32 +10305,7 @@ const DisplayPartnerSession = (props) => {
}
/>
{/* <TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="event_dialog_ressource_id"
id="event_dialog_ressource_id"
select
fullWidth
value={Dialog_seq_ressource_1_selected_ressource_id}
onChange={(e) => {
setDialog_seq_ressource_1_selected_ressource_id(e.target.value);
}
}
>
{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} nom={JSON.parse(myclient).nom}
style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} id="filtre1_value_list">
{JSON.parse(myclient).nom}&nbsp; {JSON.parse(myclient).prenom}
</MenuItem>
))}
</TextField>*/}
</div>
}
@ -10256,32 +10331,7 @@ const DisplayPartnerSession = (props) => {
renderInput={(params) => <TextField {...params} placeholder="Choisir une option " />
}
/>
{/*<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="event_dialog_ressource_id"
id="event_dialog_ressource_id"
select
fullWidth
value={Dialog_seq_ressource_1_selected_ressource_id}
onChange={(e) => {
setDialog_seq_ressource_1_selected_ressource_id(e.target.value);
}
}
>
{Getall_Training_Materiel_No_Filter_result &&
Getall_Training_Materiel_No_Filter_result.map((myclient) => (
<MenuItem key={JSON.parse(myclient)._id} value={JSON.parse(myclient)._id}
style={{ "paddingLeft": "25px", "textAlign": "left", "width": "100%" }}>
{JSON.parse(myclient).nom}&nbsp;
</MenuItem>
))}
</TextField>*/}
</div>
}
@ -13751,7 +13801,8 @@ const DisplayPartnerSession = (props) => {
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
Add_Automatic_Sequence_Session();
//Add_Automatic_Sequence_Session();
setDialog_seq_choix_model_emargement_open(true);
close();
}}> Valider </button>
@ -16494,6 +16545,7 @@ const DisplayPartnerSession = (props) => {
statut: JSON.parse(item).statut,
date_envoi: JSON.parse(item).date_envoi,
date_emargement: JSON.parse(item).date_emargement,
}
))}

View File

@ -139,6 +139,8 @@ function ESign() {
form.append("e_doc_id", selected_e_doc_id);
form.append("secret_key_signature", selected_e_doc_secret);
form.append("email_destinataire", selected_e_doc_email);
form.append('signature_img', isimgclassSelected);
setLoading(true);
axios.post(myurl, form).then(res => {
@ -248,6 +250,41 @@ function ESign() {
history.push("/");
};
const [isimgclassSelected, setisimgclassSelected] = useState(false);
const [isimgclassSelected_recid, setisimgclassSelected_recid] = useState("");
const [isimgclassSelectedfile, setisimgclassSelectedfile] = useState(false);
const [userimgclassprofil, setuserimgclassprofil] = useState();
const [userimgclassprofilchanged, setuserimgclassprofilchanged] = useState("");
const imglogoclasschangeHandler = (event) => {
let file_size = event.target.files[0].size;
//or if you like to have name and type
//console.log(event.target.files);
let file_name = event.target.files[0].name;
let file_type = event.target.files[0].type;
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
if (file_size > 1000000) {
alert("L'image ne doit pas dépasser un 1 Méga octets");
return;
}
setisimgclassSelected(event.target.files[0]);
setisimgclassSelectedfile(true);
setuserimgclassprofil(URL.createObjectURL(event.target.files[0]));
setuserimgclassprofilchanged("1");
};
const [isimgclassSaved, setisimgclassSaved] = useState("");
const [isimgclassSaved_message, setisimgclassSaved_message] = useState("");
return (
<div className="esign">
@ -386,7 +423,7 @@ function ESign() {
<DialogActions>
<div className="div_row">
<div className="div_row_gauche">
<Button onClick={get_E_Document} className="bton_enreg_dialog">Afficher Document &nbsp;</Button>
<Button onClick={get_E_Document} className="bton_enreg_dialog">Afficher</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
<Button onClick={Dialog_1_handleClose_buton} className="bton_annule_dialog" >Annuler</Button>
@ -443,16 +480,20 @@ function ESign() {
<h3> Signature Electronique </h3>
<div className="div_row">
<div style={{ width: "20%", "float": "left", minHeight: "40vh" }}>
Guide d'utilisation :
<ul>
<li>Etape 1 </li>
<li>Etape 2 </li>
</ul>
<div style={{ width: "20%", "float": "left", minHeight: "40vh", textAlign: "justify", padding: "15px" }}>
<br />
<nav style={{ "fontSize": "2rem", "marginBottom": "1rem", "fontWeight": "700" }}> Guide d'utilisation : </nav><br />
<nav>Pour vous permettre de signer électroniquement vos documents, MySy Training Technology met à disposition ce module. </nav>
<nav style={{ "fontSize": "2rem", "marginBottom": "1rem", "marginTop": "1rem", "fontWeight": "700" }}> Comment ça marche : </nav>
<nav style={{ "fontSize": "16px", "marginBottom": "0.8rem" }}> étape 1 Vous accédez au document à laide votre adresse email et de la clé douverture </nav>
<nav style={{ "fontSize": "16px", "marginBottom": "0.8rem" }}> étape 2 Apres louverture du document vous recevez par email un code de validation de la signature</nav>
<nav style={{ "fontSize": "16px", "marginBottom": "0.8rem" }}> étape 3 Signez le document à laide de votre adresse email du code de validation de la signature</nav>
<nav style={{ "fontSize": "16px", "marginBottom": "0.8rem" }}> étape 4 Vous recevez par email la version pdf le document signé</nav>
</div>
<div style={{ width: "78%", "float": "right", width:'300px', marginLeft:'auto' }}>
text d'explication
<div style={{ width: "78%", "float": "right", marginRight: "1%" }}>
{is_valide_e_document &&
<div className="div_row">
<div style={{ width: "80%", "marginLeft": "auto", "marginRight": "auto" }}>
@ -465,6 +506,58 @@ function ESign() {
</div>
<div style={{ width: "80%", "marginLeft": "auto", "marginRight": "auto" }}>
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row">
<div className="div_row_bis" style={{ "marginBottom": "10px", "marginTop": "1rem" }} >
<div className="div_row_gauche_image">
<img class="img_class_logo" src={userimgclassprofil} /><br />
</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 />
{<nav>
<label for="files_img_class" className="bton_image_class">Charger une signature</label><br />
{String(userimgclassprofilchanged) === "1" &&
<nav className="bton_supprime_image_class" onClick={(e) => {
setuserimgclassprofil("");
setuserimgclassprofilchanged("");
}}>Supprimer la signature<br /> </nav>
}
<div className="div_row_bis tips_img_class">
<li>
L'image doit etre carrée.
</li>
<li>
Les formats autorisés sont : <i>['jpg', 'jpeg', 'png', 'jpe', 'webp']</i>
</li>
<li>
La taille de l'image ne doit pas dépasser 1 mega octet
</li>
</div>
</nav>}
{isimgclassSelected && String(isimgclassSaved) === "0" && <nav className="koUpdateData"> {isimgclassSaved_message}</nav>}
</div>
</div>
</div>
</div>
</div>
<div className="div_row">
&nbsp;
</div>
<div style={{ width: "80%", "marginLeft": "auto", "marginRight": "auto" }}>
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>

View File

@ -884,6 +884,7 @@ const Materiel_Salle = (props) => {
setmateriel_data_changed("");
setmateriel_data_edit_mode("");
clean_detail_fields();
setadd_One_Materiel("");
alert(res.data.message);

View File

@ -70,6 +70,7 @@ import { TreeView } from '@mui/x-tree-view/TreeView';
import { TreeItem } from '@mui/x-tree-view/TreeItem';
import { IoMdAddCircle, IoIosRemoveCircleOutline } from "react-icons/io";
import { FcViewDetails, FcDisapprove, FcInfo } from "react-icons/fc";
import { convertNwSeToNeSw } from "google-map-react";
const Module_Editique = (props) => {
@ -226,6 +227,64 @@ const Module_Editique = (props) => {
}
const [partner_digital_signature_status, setpartner_digital_signature_status] = useState("0");
const [local_partner_digital_signature_status, setlocal_partner_digital_signature_status] = useState(false);
const [Getall_Partner_Digital_Sign_Status_api, setGetall_Partner_Digital_Sign_Status_api] = useState();
const [Getall_Partner_Digital_Sign_Status_message, setGetall_Partner_Digital_Sign_Status_message] = useState();
const [Getall_Partner_Digital_Sign_Status_result, setGetall_Partner_Digital_Sign_Status_result] = useState([]);
function Getall_Partner_Digital_Sign_Status(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/Is_Partnair_Has_Digital_Signature/";
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_Partner_Digital_Sign_Status res.data.status = " + res.data.status);
//console.log(" In Getall_Partner_Digital_Sign_Status res.data.message r_class = " + res.data.message);
setGetall_Partner_Digital_Sign_Status_api("true");
setGetall_Partner_Digital_Sign_Status_result(res.data.message);
if (JSON.parse(res.data.message).config_name && JSON.parse(res.data.message).config_value) {
if (String(JSON.parse(res.data.message).config_name) === "signature_digital" &&
String(JSON.parse(res.data.message).config_value) === "1") {
setpartner_digital_signature_status("1");
setlocal_partner_digital_signature_status(true);
}
}
}
else {
setGetall_Partner_Digital_Sign_Status_api("false");
setGetall_Partner_Digital_Sign_Status_message(res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('Not good man :( Getall_Partner_Digital_Sign_Status = ', error);
setGetall_Partner_Digital_Sign_Status_api("false");
//setmyApimyApiMessage("")
})
}
const [Action_Server_api, setAction_Server_api] = useState();
const [Action_Server_message, setAction_Server_message] = useState();
const [Action_Server_result, setAction_Server_result] = useState([]);
@ -319,6 +378,7 @@ const Module_Editique = (props) => {
useEffect(() => {
Getall_Partner_Digital_Sign_Status();
setselected_session_id(props.related_collection_recid);
Getall_Editable_Document_By_Partner_By_Collection();
Getall_Audit_Document_By_Partner_By_Collection();
@ -886,8 +946,14 @@ const Module_Editique = (props) => {
form.append("email_test", selected_convention_email_test);
form.append("email_production", selected_convention_email_destinataire_prod);
if (local_partner_digital_signature_status === true) {
form.append("request_digital_signature", "1");
} else {
form.append("request_digital_signature", "0");
}
console.log("form === ", form);
// pièce jointe
form.append("file_business_object", "");
var list_files = new FormData();
@ -958,7 +1024,6 @@ const Module_Editique = (props) => {
form.append("email_production", selected_convention_email_destinataire_prod);
console.log("form === ", form);
// pièce jointe
form.append("file_business_object", "");
var list_files = new FormData();
@ -1695,6 +1760,8 @@ const Module_Editique = (props) => {
{Dialog_1_message}
</DialogContentText>
<div className="session_caract_Dialog" > Type Document<br />
<Autocomplete
disablePortal
@ -1718,10 +1785,51 @@ const Module_Editique = (props) => {
}
/>
</div>
{String(partner_digital_signature_status) === "1" && String(selected_convention_type) === "email" && <div className="session_caract_Dialog" >
<div className="session_caract_Dialog" >
<Tooltip className="tooltip_css" id="tooltip_signat_dig" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="tooltip_signat_dig" data-tooltip-html="Utiliser la fonctionnalité de signature électronique pour ce document ">
<nav className="disabled_style" style={{ "height": '3rem', border: "none" }}
onChange={(e) => {
if (local_partner_digital_signature_status === true)
setlocal_partner_digital_signature_status(false)
else {
setlocal_partner_digital_signature_status(true);
}
}}
id="toggleSwitchNav_1" name="toggleSwitchNav_1">
<ToggleSwitch
label="Signature Digiale" id="toggleSwitch_1" name="toggleSwitch_1" checked={local_partner_digital_signature_status} style={{ height: "2rem" }} />
</nav>
</a>
</div>
</div>}
{String(partner_digital_signature_status) !== "1" && String(selected_convention_type) === "email" && <div className="session_caract_Dialog" > Signature Digiale <br />
<div className="session_caract_Dialog" >
<Tooltip className="tooltip_css" id="tooltip_signat_dig" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="tooltip_signat_dig" data-tooltip-html="Nous ne disposez pas de l'option de signature électronique ">
<nav className="disabled_style" style={{ "height": '3rem', border: "none" }}
id="toggleSwitchNav_1" name="toggleSwitchNav_1">
<ToggleSwitch
label="Activier la signature digiatale" id="toggleSwitch_1" name="toggleSwitch_1" checked={false} style={{ height: "2rem" }} />
</nav>
</a>
</div>
</div>}
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") && <div className="session_caract_Dialog" > Choisir une convention
<Autocomplete
disablePortal
@ -1758,8 +1866,8 @@ const Module_Editique = (props) => {
</div>}
{String(selected_convention_type) === "email" && <div className="session_caract_Dialog" > Type Document<br />
{/*
{String(selected_convention_type) === "email" && <div className="session_caract_Dialog" > Type Document aa<br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, width: '75%' }}
@ -1790,7 +1898,7 @@ const Module_Editique = (props) => {
</div>}
{String(selected_convention_type) === "pdf" && <div className="session_caract_Dialog" > Type Document<br />
{String(selected_convention_type) === "pdf" && <div className="session_caract_Dialog" > Type Document bb<br />
<TextField
@ -1804,13 +1912,13 @@ const Module_Editique = (props) => {
/>
</div>}
*/}
{String(selected_convention_type) === "email" && <div className="session_caract_Dialog" >
<Tooltip className="tooltip_css" id="test01" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="test01" data-tooltip-html="Pour recevoir une email de test avant de l'envoyer">
Adresse email de test <FcInfo /> <TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, width: '75%' }}
name="event_dialog_email_test_convention"
id="event_dialog_email_test_convention"
@ -1825,6 +1933,22 @@ const Module_Editique = (props) => {
/>
</a>
{String(selected_convention_type) === "email" && <label className="bton_image_class" style={{ "width": "20%", "float": "right", "height": "3rem", "paddingTop": "15px" }} onClick={(e) => {
if (selected_convention_email_test) {
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
if (!selected_convention_email_test.match(validRegex)) {
alert("L'adresse email de test est invalide.");
return;
}
Send_Stagiaire_Conventions_By_Email_Test();
} else {
alert("L'adresse email de test est invalide.");
}
}} > <FcSearch /> &nbsp; Test</label>}
</div>
}

View File

@ -138,6 +138,14 @@ const Partner_Configuration_Jours_Travail = (props) => {
]
const [lundi_is_offday, setlundi_is_offday] = React.useState(false);
const [mardi_is_offday, setmardi_is_offday] = React.useState(false);
const [mercredi_is_offday, setmercredi_is_offday] = React.useState(false);
const [jeudi_is_offday, setjeudi_is_offday] = React.useState(false);
const [vendredi_is_offday, setvendredi_is_offday] = React.useState(false);
const [samedi_is_offday, setsamedi_is_offday] = React.useState(false);
const [dimanche_is_offday, setdimanche_is_offday] = React.useState(false);
const myRef = useRef(null)
@ -700,13 +708,21 @@ const Partner_Configuration_Jours_Travail = (props) => {
'heure_debut': String(sequence_from),
'heure_fin': String(sequence_to),
}
data_lundi['tab_sequence'].push(json_lundi)
}
}
var local_lundi_is_offday = "0"
if (lundi_is_offday === true)
local_lundi_is_offday = "1"
data_lundi['is_off_day'] = String(local_lundi_is_offday)
//data_lundi['tab_sequence'].push(tab_sequence_lundi)
@ -755,64 +771,13 @@ const Partner_Configuration_Jours_Travail = (props) => {
data_mardi['tab_sequence'].push(json_mardi)
}
}
var local_mardi_is_offday = "0"
if (mardi_is_offday === true)
local_mardi_is_offday = "1"
//data_mardi['tab_sequence'].push(tab_sequence_mardi)
// console.log(" tab_sequence_mardi = ", data_mardi);
/*** début traitement des données du mardi */
var data_mardi = {}
data_mardi['jour'] = "mardi";
data_mardi['tab_sequence'] = []
var tab_sequence_mardi = []
for (let i = 1; i <= parseInt(String(nb_sequence_mardi)); i++) {
var name_racine_from = "mardi_seq_from_" + String(i);
var name_racine_to = "mardi_seq_to_" + String(i);
var local_val = {};
if (document.getElementsByName(name_racine_from)[0] && document.getElementsByName(name_racine_to)[0]) {
var sequence_from = document.getElementsByName(name_racine_from)[0].value;
var sequence_to = document.getElementsByName(name_racine_to)[0].value;
if (sequence_from === undefined || String(sequence_from) === ""
|| sequence_to === undefined || String(sequence_to) === "") {
console.log(" Les heures du mardi sont incorrectes");
return;
}
var work_sequence_from = parseInt(String(sequence_from).replaceAll(":", ''))
var work_sequence_to = parseInt(String(sequence_to).replaceAll(":", ''))
if (work_sequence_from >= work_sequence_to) {
console.log(" Les heures du mardi sont incorrectes. L'heure de fin de séquence doit être antérieure à l'heure de début de séquence");
return;
}
var json_mardi = {
'heure_debut': String(sequence_from),
'heure_fin': String(sequence_to),
}
data_mardi['tab_sequence'].push(json_mardi)
}
}
//data_mardi['tab_sequence'].push(tab_sequence_mardi)
// console.log(" tab_sequence_mardi = ", data_mardi);
data_mardi['is_off_day'] = String(local_mardi_is_offday)
/*** début traitement des données du mercredi */
@ -856,11 +821,16 @@ const Partner_Configuration_Jours_Travail = (props) => {
data_mercredi['tab_sequence'].push(json_mercredi)
}
}
var local_mercredi_is_offday = "0"
if (mercredi_is_offday === true)
local_mercredi_is_offday = "1"
data_mercredi['is_off_day'] = String(local_mercredi_is_offday)
//data_mercredi['tab_sequence'].push(tab_sequence_mercredi)
// console.log(" tab_sequence_mercredi = ", data_mercredi);
@ -907,12 +877,18 @@ const Partner_Configuration_Jours_Travail = (props) => {
data_jeudi['tab_sequence'].push(json_jeudi)
}
}
}
var local_jeudi_is_offday = "0"
if (jeudi_is_offday === true)
local_jeudi_is_offday = "1"
data_jeudi['is_off_day'] = String(local_jeudi_is_offday)
//data_jeudi['tab_sequence'].push(tab_sequence_jeudi)
// console.log(" tab_sequence_jeudi = ", data_jeudi);
@ -958,11 +934,18 @@ const Partner_Configuration_Jours_Travail = (props) => {
data_vendredi['tab_sequence'].push(json_vendredi)
}
}
}
var local_vendredi_is_offday = "0"
if (vendredi_is_offday === true)
local_vendredi_is_offday = "1"
data_vendredi['is_off_day'] = String(local_vendredi_is_offday)
//data_vendredi['tab_sequence'].push(tab_sequence_vendredi)
// console.log(" tab_sequence_vendredi = ", data_vendredi);
@ -1008,14 +991,19 @@ const Partner_Configuration_Jours_Travail = (props) => {
data_samedi['tab_sequence'].push(json_samedi)
}
}
}
var local_samedi_is_offday = "0"
if (samedi_is_offday === true)
local_samedi_is_offday = "1"
data_samedi['is_off_day'] = String(local_samedi_is_offday)
//data_samedi['tab_sequence'].push(tab_sequence_samedi)
// console.log(" tab_sequence_samedi = ", data_samedi);
console.log(" tab_sequence_samedi = ", data_samedi);
/*** début traitement des données du dimanche */
var data_dimanche = {}
@ -1058,10 +1046,15 @@ const Partner_Configuration_Jours_Travail = (props) => {
data_dimanche['tab_sequence'].push(json_dimanche)
}
}
}
var local_dimanche_is_offday = "0"
if (dimanche_is_offday === true)
local_dimanche_is_offday = "1"
data_dimanche['is_off_day'] = String(local_dimanche_is_offday)
//data_dimanche['tab_sequence'].push(tab_sequence_dimanche)
@ -1099,6 +1092,8 @@ const Partner_Configuration_Jours_Travail = (props) => {
}
// Recupération de plage de journée pour les planning
if (document.getElementsByName("planning_debut_journee")[0] && document.getElementsByName("planning_fin_journee")[0]) {
var debut_journee_value = document.getElementsByName("planning_debut_journee")[0].value;
var fin_journee_value = document.getElementsByName("planning_fin_journee")[0].value;
@ -1106,6 +1101,7 @@ const Partner_Configuration_Jours_Travail = (props) => {
if (debut_journee_value === undefined || String(debut_journee_value) === ""
|| fin_journee_value === undefined || String(fin_journee_value) === "") {
console.log(" Les heures de début et de fin de journée (planning) sont incorrectes");
alert(" Les heures de début et de fin de journée (planning) sont incorrectes");
return;
}
@ -1115,6 +1111,8 @@ const Partner_Configuration_Jours_Travail = (props) => {
if (work_debut_journee_value >= work_fin_journee_value) {
console.log(" Les heures de début et de fin de journée (planning) sont incorrectes. L'heure de fin de journée doit être antérieure à l'heure de début de journée");
alert(" Les heures de début et de fin de journée (planning) sont incorrectes. L'heure de fin de journée doit être antérieure à l'heure de début de journée");
return;
}
@ -1128,6 +1126,67 @@ const Partner_Configuration_Jours_Travail = (props) => {
}
// Recupération du decoupage de la matinée et de l'apres midi
if (document.getElementsByName("planning_debut_matinee")[0] && document.getElementsByName("planning_fin_matinee")[0]
&& document.getElementsByName("planning_debut_apres_midi")[0] && document.getElementsByName("planning_fin_apres_midi")[0]) {
var planning_debut_matinee = document.getElementsByName("planning_debut_matinee")[0].value;
var planning_fin_matinee = document.getElementsByName("planning_fin_matinee")[0].value;
var planning_debut_apres_midi = document.getElementsByName("planning_debut_apres_midi")[0].value;
var planning_fin_apres_midi = document.getElementsByName("planning_fin_apres_midi")[0].value;
if (planning_debut_matinee === undefined || String(planning_debut_matinee) === ""
|| planning_fin_matinee === undefined || String(planning_fin_matinee) === ""
|| planning_debut_apres_midi === undefined || String(planning_debut_apres_midi) === ""
|| planning_fin_apres_midi === undefined || String(planning_fin_apres_midi) === ""
) {
console.log(" La définition des horaires de 'Matinée' et 'Après Midi' sont incorrectes");
alert(" La définition des horaires de 'Matinée' et 'Après Midi' sont incorrectes");
return;
}
var work_planning_debut_matinee_value = parseInt(String(planning_debut_matinee).replaceAll(":", ''));
var work_planning_fin_matinee_value = parseInt(String(planning_fin_matinee).replaceAll(":", ''));
var work_planning_debut_apres_midi_value = parseInt(String(planning_debut_apres_midi).replaceAll(":", ''));
var work_planning_fin_apres_midi_value = parseInt(String(planning_fin_apres_midi).replaceAll(":", ''));
if (work_planning_debut_matinee_value >= work_planning_fin_matinee_value) {
console.log(" Les heures de début et de fin de 'Matinée' sont incorrectes");
alert(" Les heures de début et de fin de 'Matinée' sont incorrectes");
return;
}
if (work_planning_debut_apres_midi_value >= work_planning_fin_apres_midi_value) {
console.log(" Les heures de début et de fin de 'Après Midi' sont incorrectes");
alert(" Les heures de début et de fin de 'Après Midi' sont incorrectes");
return;
}
if (work_planning_debut_apres_midi_value <= work_planning_fin_matinee_value) {
console.log(" Vous devez mettre un temps de pause entre la Matinée et l'Après Midi ");
alert(" Vous devez mettre un temps de pause entre la Matinée et l'Après Midi");
return;
}
var json_decoupage_journee = {
'matinee_debut': String(planning_debut_matinee),
'matinee_fin': String(planning_fin_matinee),
'apres_midi_debut': String(planning_debut_apres_midi),
'apres_midi_fin': String(planning_fin_apres_midi),
}
global_partner_working_hours['decoupage_journee'] = json_decoupage_journee
}
var json_str = JSON.stringify(global_partner_working_hours)
@ -1498,6 +1557,26 @@ const Partner_Configuration_Jours_Travail = (props) => {
document.getElementById("planning_fin_journee").value = String(JSON.parse(res.data.message).debut_fin_journee.planning_fin_journee);
}
// Recup des données de decoupage d'une journée (matinée - apres midi)
if (JSON.parse(res.data.message).decoupage_journee) {
if (String(JSON.parse(res.data.message).decoupage_journee.matinee_debut)) {
document.getElementById("planning_debut_matinee").value = String(JSON.parse(res.data.message).decoupage_journee.matinee_debut);
}
if (String(JSON.parse(res.data.message).decoupage_journee.matinee_fin)) {
document.getElementById("planning_fin_matinee").value = String(JSON.parse(res.data.message).decoupage_journee.matinee_fin);
}
if (String(JSON.parse(res.data.message).decoupage_journee.apres_midi_debut)) {
document.getElementById("planning_debut_apres_midi").value = String(JSON.parse(res.data.message).decoupage_journee.apres_midi_debut);
}
if (String(JSON.parse(res.data.message).decoupage_journee.apres_midi_fin)) {
document.getElementById("planning_fin_apres_midi").value = String(JSON.parse(res.data.message).decoupage_journee.apres_midi_fin);
}
}
}
else {
setGetall_Default_Model_Journee_api("false");
@ -1520,36 +1599,67 @@ const Partner_Configuration_Jours_Travail = (props) => {
*/
var data_lundi = json_test.lundi;
var nb_sequen_lundi = json_test.lundi.tab_sequence.length;
setnb_sequence_lundi(String(nb_sequen_lundi));
if (json_test.lundi.is_off_day === "1")
setlundi_is_offday(true)
else
setlundi_is_offday(false)
var data_mardi = json_test.mardi;
var nb_sequen_mardi = json_test.mardi.tab_sequence.length;
setnb_sequence_mardi(String(nb_sequen_mardi));
if (json_test.mardi.is_off_day === "1")
setmardi_is_offday(true)
else
setmardi_is_offday(false)
var data_mercredi = json_test.mercredi;
var nb_sequen_mercredi = json_test.mercredi.tab_sequence.length;
setnb_sequence_mercredi(String(nb_sequen_mercredi));
if (json_test.mercredi.is_off_day === "1")
setmercredi_is_offday(true)
else
setmercredi_is_offday(false)
var data_jeudi = json_test.jeudi;
var nb_sequen_jeudi = json_test.jeudi.tab_sequence.length;
setnb_sequence_jeudi(String(nb_sequen_jeudi));
if (json_test.jeudi.is_off_day === "1")
setjeudi_is_offday(true)
else
setjeudi_is_offday(false)
var data_vendredi = json_test.vendredi;
var nb_sequen_vendredi = json_test.vendredi.tab_sequence.length;
setnb_sequence_vendredi(String(nb_sequen_vendredi));
if (json_test.vendredi.is_off_day === "1")
setvendredi_is_offday(true)
else
setvendredi_is_offday(false)
var data_samedi = json_test.samedi;
var nb_sequen_samedi = json_test.samedi.tab_sequence.length;
setnb_sequence_samedi(String(nb_sequen_samedi));
if (json_test.samedi.is_off_day === "1")
setsamedi_is_offday(true)
else
setsamedi_is_offday(false)
var data_dimanche = json_test.dimanche;
var nb_sequen_dimanche = json_test.dimanche.tab_sequence.length;
setnb_sequence_dimanche(String(nb_sequen_dimanche));
if (json_test.dimanche.is_off_day === "1")
setdimanche_is_offday(true)
else
setdimanche_is_offday(false)
@ -1734,6 +1844,7 @@ const Partner_Configuration_Jours_Travail = (props) => {
useEffect(() => {
Getall_Default_Model_Journee();
setdata_chanded("0");
window.scrollTo({
top: 0,
@ -1744,6 +1855,9 @@ const Partner_Configuration_Jours_Travail = (props) => {
const [gridline_id, setgridline_id] = useState("");
const [data_chanded, setdata_chanded] = useState("0");
return (
<div className="partner_configuration_jours_travail" >
{isLoading && <div className="loader-container">
@ -1801,11 +1915,13 @@ const Partner_Configuration_Jours_Travail = (props) => {
)}
</Popup>
data_chanded = {data_chanded}
{/*<Button variant="contained" className="bton_enreg" onClick={Get_working_Setup}>test affichage
</Button>*/}
</div>
<table style={{ "border": "1px solid", "width": "95%" }}>
<table style={{ "border": "1px solid", "width": "95%" }}
>
<thead >
<tr>
@ -1825,10 +1941,15 @@ const Partner_Configuration_Jours_Travail = (props) => {
<tr>
<td style={{ "border": "1px solid", "width": "10%", "paddingLeft": "10px" }} >
<div className="div_row" style={{ "textAlign": "left", "fontWeight": "bold" }}> Lundi </div>
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox />} label=" Jour Off"
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox checked={lundi_is_offday} />} label=" Jour Off"
onChange={(e) => {
if (lundi_is_offday === false)
setlundi_is_offday(true)
else
setlundi_is_offday(false)
}}
/>
</div>
<div className="div_row" style={{ "textAlign": "left" }}>
@ -1845,9 +1966,12 @@ const Partner_Configuration_Jours_Travail = (props) => {
<tr>
<td style={{ "border": "1px solid", "width": "10%", "paddingLeft": "10px" }} >
<div className="div_row" style={{ "textAlign": "left", "fontWeight": "bold" }}> Mardi </div>
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox />} label=" Jour Off"
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox checked={mardi_is_offday} />} label=" Jour Off"
onChange={(e) => {
if (mardi_is_offday === false)
setmardi_is_offday(true)
else
setmardi_is_offday(false)
}}
/>
</div>
@ -1867,9 +1991,12 @@ const Partner_Configuration_Jours_Travail = (props) => {
<tr>
<td style={{ "border": "1px solid", "width": "10%", "paddingLeft": "10px" }} >
<div className="div_row" style={{ "textAlign": "left", "fontWeight": "bold" }}> Mercredi </div>
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox />} label=" Jour Off"
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox checked={mercredi_is_offday} />} label=" Jour Off"
onChange={(e) => {
if (mercredi_is_offday === false)
setmercredi_is_offday(true)
else
setmercredi_is_offday(false)
}}
/>
</div>
@ -1889,9 +2016,12 @@ const Partner_Configuration_Jours_Travail = (props) => {
<tr>
<td style={{ "border": "1px solid", "width": "10%", "paddingLeft": "10px" }} >
<div className="div_row" style={{ "textAlign": "left", "fontWeight": "bold" }}> Jeudi </div>
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox />} label=" Jour Off"
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox checked={jeudi_is_offday} />} label=" Jour Off"
onChange={(e) => {
if (jeudi_is_offday === false)
setjeudi_is_offday(true)
else
setjeudi_is_offday(false)
}}
/>
</div>
@ -1911,9 +2041,12 @@ const Partner_Configuration_Jours_Travail = (props) => {
<tr>
<td style={{ "border": "1px solid", "width": "10%", "paddingLeft": "10px" }} >
<div className="div_row" style={{ "textAlign": "left", "fontWeight": "bold" }}> vendredi </div>
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox />} label=" Jour Off"
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox checked={vendredi_is_offday} />} label=" Jour Off"
onChange={(e) => {
if (vendredi_is_offday === false)
setvendredi_is_offday(true)
else
setvendredi_is_offday(false)
}}
/>
</div>
@ -1933,9 +2066,12 @@ const Partner_Configuration_Jours_Travail = (props) => {
<tr>
<td style={{ "border": "1px solid", "width": "10%", "paddingLeft": "10px" }} >
<div className="div_row" style={{ "textAlign": "left", "fontWeight": "bold" }}> Samedi </div>
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox />} label=" Jour Off"
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox checked={samedi_is_offday} />} label=" Jour Off"
onChange={(e) => {
if (samedi_is_offday === false)
setsamedi_is_offday(true)
else
setsamedi_is_offday(false)
}}
/>
</div>
@ -1955,9 +2091,12 @@ const Partner_Configuration_Jours_Travail = (props) => {
<tr>
<td style={{ "border": "1px solid", "width": "10%", "paddingLeft": "10px" }} >
<div className="div_row" style={{ "textAlign": "left", "fontWeight": "bold" }}> Dimanche </div>
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox />} label=" Jour Off"
<div className="div_row" style={{ "textAlign": "left", "paddingLeft": "10px" }}> <FormControlLabel control={<Checkbox checked={dimanche_is_offday} />} label=" Jour Off"
onChange={(e) => {
if (dimanche_is_offday === false)
setdimanche_is_offday(true)
else
setdimanche_is_offday(false)
}}
/>
</div>
@ -1982,6 +2121,123 @@ const Partner_Configuration_Jours_Travail = (props) => {
<div className="div_row" > &nbsp;</div>
<div className="div_row" onChange={(event, value) => {
setdata_chanded("1");
}}>
<table style={{ "border": "1px solid", "width": "95%" }}>
<thead >
<tr>
<td colspan="4" style={{ "background": "#EAECEE", "textAlign": "center" }}>
Découpage horaires journée (matinée & après midi)
</td>
</tr>
</thead>
<tbody>
<tr>
<td style={{ "border": "1px solid", "width": "10%" }} >
<div className="div_row" style={{ "textAlign": "left" }}>
<Button > Matinée</Button>
</div>
</td>
<td style={{ "border": "1px solid", "width": "50%" }}>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name="planning_debut_matinee"
id="planning_debut_matinee"
type="time"
label="Du (hh:mm) "
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
/>
</td>
<td style={{ "border": "1px solid", "width": "50%" }}>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name="planning_fin_matinee"
id="planning_fin_matinee"
type="time"
label="Au (hh:mm) "
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
/>
</td>
</tr>
<tr>
<td style={{ "border": "1px solid", "width": "10%" }} >
<div className="div_row" style={{ "textAlign": "left" }}>
<Button > Après Midi</Button>
</div>
</td>
<td style={{ "border": "1px solid", "width": "50%" }}>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name="planning_debut_apres_midi"
id="planning_debut_apres_midi"
type="time"
label="Du (hh:mm) "
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
/>
</td>
<td style={{ "border": "1px solid", "width": "50%" }}>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name="planning_fin_apres_midi"
id="planning_fin_apres_midi"
type="time"
label="Au (hh:mm) "
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
/>
</td>
</tr>
</tbody>
</table>
</div>
<div className="div_row" > &nbsp;</div>
<div className="div_row">
<table style={{ "border": "1px solid", "width": "95%" }}>
@ -2048,6 +2304,8 @@ const Partner_Configuration_Jours_Travail = (props) => {
</table>
</div>
<div className="div_row" > &nbsp;</div>
<div className="div_row">

View File

@ -1488,6 +1488,7 @@ const Partner_Configuration_Technique = (props) => {
{ "id": "partner_smtp", "label": "partner_smtp", "value": "partner_smtp" },
{ "id": "partner_jour_heure", "label": "partner_jour_heure", "value": "partner_jour_heure" },
{ "id": "partner_devise", "label": "partner_devise", "value": "partner_devise" },
{ "id": "signature_digital", "label": "signature_digital", "value": "signature_digital" },
{ "id": "", "label": "", "value": "" },
]
@ -2462,6 +2463,11 @@ const Partner_Configuration_Technique = (props) => {
value={New_Config_Point.filter((data) => (data).label === String(p_detail_config_point))[0].label}
options={New_Config_Point}
onChange={(event, value) => {
if (value && value.value && value.value === "signature_digital") {
alert(" Vos droits d'accès ne vous permettent pas modifier la configuration : 'signature_digital'");
return;
}
if (value && value.value) {
setp_detail_config_point(value.value);
setConfig_data_changed("1");
@ -2516,10 +2522,12 @@ const Partner_Configuration_Technique = (props) => {
className="disabled_style"
value={p_detail_config_valeur}
onChange={(e) => {
if (String(p_detail_config_point) !== "signature_digital") {
setp_detail_config_valeur(e.target.value);
setConfig_data_changed("1");
}
}
}
/>
</div>}