14/12/2023 - 16h16

recette2
cherif 2023-12-14 16:16:27 +01:00
parent 3801817487
commit 59b5dba3ee
7 changed files with 506 additions and 102 deletions

View File

@ -228,7 +228,7 @@ const AddClassManual = (props) => {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/delete_Class_by_internal_url/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/delete_Class_by_internal_url/";
setLoading(true);
fetch( fetch(
myurl, myurl,
{ {
@ -238,6 +238,7 @@ const AddClassManual = (props) => {
) )
.then((response) => response.json()) .then((response) => response.json())
.then((result) => { .then((result) => {
setLoading(false);
//console.log('Success:', result['message'], "result['status'] = ", result['status']); //console.log('Success:', result['message'], "result['status'] = ", result['status']);
setimportmessage(result['message']); setimportmessage(result['message']);
setmyApiResponse(result['status']); setmyApiResponse(result['status']);
@ -291,6 +292,7 @@ const AddClassManual = (props) => {
}) })
.catch((error) => { .catch((error) => {
setLoading(false);
console.error('Error:', error); console.error('Error:', error);
setmyApiResponse("false"); setmyApiResponse("false");
}); });
@ -313,7 +315,10 @@ const AddClassManual = (props) => {
axios.post(myurl, form).then(res => { axios.post(myurl, form).then(res => {
setLoading(true);
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
setLoading(false);
//console.log(" In Getall_Training_Employee_No_Filter res.data.status = " + res.data.status); //console.log(" In Getall_Training_Employee_No_Filter res.data.status = " + res.data.status);
//console.log(" In Getall_Training_Employee_No_Filter res.data.message r_class = " + res.data.message); //console.log(" In Getall_Training_Employee_No_Filter res.data.message r_class = " + res.data.message);
setGetall_Training_Employee_No_Filter_api("true"); setGetall_Training_Employee_No_Filter_api("true");
@ -326,6 +331,7 @@ const AddClassManual = (props) => {
} }
}).catch((error) => { }).catch((error) => {
setLoading(false);
console.warn('Not good man :( Getall_Training_Employee_No_Filter = ', error); console.warn('Not good man :( Getall_Training_Employee_No_Filter = ', error);
setGetall_Training_Employee_No_Filter_api("false"); setGetall_Training_Employee_No_Filter_api("false");
alert(" Impossible de recuperer la liste des employés"); alert(" Impossible de recuperer la liste des employés");
@ -338,6 +344,7 @@ const AddClassManual = (props) => {
Get_Partner_Object_Specific_Fields("myclass"); Get_Partner_Object_Specific_Fields("myclass");
Getall_Training_Employee_No_Filter(); Getall_Training_Employee_No_Filter();
Get_List_Niveau_Formation();
setfield_description(""); setfield_description("");
setfield_objectif(""); setfield_objectif("");
@ -406,8 +413,10 @@ const AddClassManual = (props) => {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_partner_class/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_partner_class/";
setLoading(true);
axios.post(myurl, form).then(res => { axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
setLoading(false);
//console.log(" In get_partner_class res.data.status = " + res.data.status); //console.log(" In get_partner_class res.data.status = " + res.data.status);
//console.log(" In get_partner_class res.data.message r_class = " + res.data.message); //console.log(" In get_partner_class res.data.message r_class = " + res.data.message);
setmyApiResponse("True"); setmyApiResponse("True");
@ -499,10 +508,10 @@ const AddClassManual = (props) => {
setmycertif("0"); setmycertif("0");
if (mylocaltraining.class_level) { if (mylocaltraining.class_level) {
document.getElementsByName("class_level")[0].value = mylocaltraining.class_level; setp_class_level(mylocaltraining.class_level);
} }
else else
document.getElementsByName("class_level")[0].value = "2"; setp_class_level("2");
if (mylocaltraining.price) if (mylocaltraining.price)
@ -627,6 +636,7 @@ const AddClassManual = (props) => {
}).catch((error) => { }).catch((error) => {
setLoading(false);
console.warn('Not good man :( mysearchtext = '); console.warn('Not good man :( mysearchtext = ');
setmyApiResponse("False"); setmyApiResponse("False");
//setmyApimyApiMessage("") //setmyApimyApiMessage("")
@ -681,7 +691,7 @@ const AddClassManual = (props) => {
var distentiel = document.getElementsByName("distentiel")[0].value; var distentiel = document.getElementsByName("distentiel")[0].value;
var domaine = document.getElementsByName("domaine")[0].value; var domaine = document.getElementsByName("domaine")[0].value;
var mypublier = document.getElementsByName("published")[0].value; var mypublier = document.getElementsByName("published")[0].value;
var niveau_ftion = document.getElementsByName("class_level")[0].value; var niveau_ftion = p_class_level;
var price = document.getElementsByName("price")[0].value; var price = document.getElementsByName("price")[0].value;
var duree = document.getElementsByName("duree")[0].value; var duree = document.getElementsByName("duree")[0].value;
var url = document.getElementsByName("url")[0].value; var url = document.getElementsByName("url")[0].value;
@ -936,7 +946,7 @@ const AddClassManual = (props) => {
function Get_List_Metiers() { function Get_List_Metiers() {
var form = new FormData(); var form = new FormData();
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_List_metier_formation/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_List_metier_formation/";
setLoading(true);
fetch(myurl, fetch(myurl,
{ {
method: 'POST', method: 'POST',
@ -944,6 +954,7 @@ const AddClassManual = (props) => {
}) })
.then((data) => data.json()) .then((data) => data.json())
.then((data) => { .then((data) => {
setLoading(false);
//console.log(' IN Get_List_Metiers Success:', data['message'], "data['status'] = ", data['status']); //console.log(' IN Get_List_Metiers Success:', data['message'], "data['status'] = ", data['status']);
if (String(data['status']) === String("true")) { if (String(data['status']) === String("true")) {
@ -957,6 +968,7 @@ const AddClassManual = (props) => {
} }
}).catch((error) => { }).catch((error) => {
setLoading(false);
console.error('Error Get_List_Metiers :', error); console.error('Error Get_List_Metiers :', error);
setGet_List_Metiers_api("false"); setGet_List_Metiers_api("false");
}); });
@ -1074,7 +1086,7 @@ const AddClassManual = (props) => {
form.append("token", stored_cookie); form.append("token", stored_cookie);
form.append("class_external_code", class_external_code); form.append("class_external_code", class_external_code);
form.append("type", "partner"); form.append("type", "partner");
setLoading(true);
fetch( fetch(
process.env.REACT_APP_API_URL + "myclass/api/DeleteRecodedClassImage/", process.env.REACT_APP_API_URL + "myclass/api/DeleteRecodedClassImage/",
{ {
@ -1083,6 +1095,7 @@ const AddClassManual = (props) => {
} }
).then((response) => response.json()) ).then((response) => response.json())
.then((result) => { .then((result) => {
setLoading(false);
//console.log(' removeRecodedClassImage : status:', result['status']); //console.log(' removeRecodedClassImage : status:', result['status']);
//console.log('removeRecodedClassImage : Success:', result['message']); //console.log('removeRecodedClassImage : Success:', result['message']);
@ -1107,6 +1120,7 @@ const AddClassManual = (props) => {
}) })
.catch((error) => { .catch((error) => {
setLoading(false);
console.error('Error:'); console.error('Error:');
setisimgclassSelected(true); setisimgclassSelected(true);
setisimgclassdeleted("0"); setisimgclassdeleted("0");
@ -1134,6 +1148,7 @@ const AddClassManual = (props) => {
formData.append("class_external_code", class_external_code); formData.append("class_external_code", class_external_code);
formData.append("type", "partner"); formData.append("type", "partner");
setLoading(true);
fetch( fetch(
process.env.REACT_APP_API_URL + "myclass/api/recordClassImage/", process.env.REACT_APP_API_URL + "myclass/api/recordClassImage/",
{ {
@ -1142,6 +1157,7 @@ const AddClassManual = (props) => {
} }
).then((response) => response.json()) ).then((response) => response.json())
.then((result) => { .then((result) => {
setLoading(false);
//console.log('status:', result['status']); //console.log('status:', result['status']);
//console.log('Success:', result['message']); //console.log('Success:', result['message']);
setisimgclassSelected(false); setisimgclassSelected(false);
@ -1157,6 +1173,7 @@ const AddClassManual = (props) => {
}) })
.catch((error) => { .catch((error) => {
setLoading(false);
console.error('Error:'); console.error('Error:');
setisimgclassSelected(true); setisimgclassSelected(true);
setisimgclassSaved("0"); setisimgclassSaved("0");
@ -1185,10 +1202,11 @@ const AddClassManual = (props) => {
form.append("type", "partner"); form.append("type", "partner");
form.append("class_external_code", class_external_code); form.append("class_external_code", class_external_code);
setLoading(true);
axios.post(myurl, form).then(res => { axios.post(myurl, form).then(res => {
if (res.data.status != "False") { if (res.data.status != "False") {
setLoading(false);
//console.log(" getClassImage : In test res.data.status = " + res.data.status); //console.log(" getClassImage : In test res.data.status = " + res.data.status);
//console.log(" getClassImage: res.data.message.img = " + res.data.message); //console.log(" getClassImage: res.data.message.img = " + res.data.message);
@ -1210,6 +1228,7 @@ const AddClassManual = (props) => {
//alert("4"); //alert("4");
} }
}).catch((error) => { }).catch((error) => {
setLoading(false);
console.warn('getClassImage ee: Not good man :( getClassImage = '); console.warn('getClassImage ee: Not good man :( getClassImage = ');
setisclassimage("False"); setisclassimage("False");
setuserimgclassprofil(""); setuserimgclassprofil("");
@ -1348,10 +1367,11 @@ const AddClassManual = (props) => {
form.append("object_name", local_collection_obj_metier); form.append("object_name", local_collection_obj_metier);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Partner_Object_Specific_Valide_Displayed_Fields/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Partner_Object_Specific_Valide_Displayed_Fields/";
setLoading(true);
axios.post(myurl, form).then(res => { axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
setLoading(false);
//console.log(" In Get_Partner_Object_Specific_Fields res.data.status = " + res.data.status); //console.log(" In Get_Partner_Object_Specific_Fields res.data.status = " + res.data.status);
//console.log(" In Get_Partner_Object_Specific_Fields res.data.message r_class = " + res.data.message); //console.log(" In Get_Partner_Object_Specific_Fields res.data.message r_class = " + res.data.message);
@ -1370,6 +1390,7 @@ const AddClassManual = (props) => {
} }
}).catch((error) => { }).catch((error) => {
setLoading(false);
console.warn('Not good man :( Get_Partner_Object_Specific_Fields = ', error); console.warn('Not good man :( Get_Partner_Object_Specific_Fields = ', error);
setGet_Partner_Object_Specific_Fields_api("false"); setGet_Partner_Object_Specific_Fields_api("false");
alert(" Impossible de recuperer la liste des collection et champs personnalisables"); alert(" Impossible de recuperer la liste des collection et champs personnalisables");
@ -1378,6 +1399,49 @@ const AddClassManual = (props) => {
} }
const [Get_List_Niveau_Formation_api, setGet_List_Niveau_Formation_api] = useState();
const [Get_List_Niveau_Formation_message, setGet_List_Niveau_Formation_message] = useState();
const [Get_List_Niveau_Formation_result, setGet_List_Niveau_Formation_result] = useState([]);
function Get_List_Niveau_Formation() {
var form = new FormData();
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Class_Niveau_Formation/";
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
setLoading(true);
fetch(myurl,
{
method: 'POST',
body: form,
})
.then((data) => data.json())
.then((data) => {
setLoading(false);
//console.log(' IN Get_List_Niveau_Formation Success:', data['message'], "data['status'] = ", data['status']);
if (String(data['status']) === String("true")) {
setGet_List_Niveau_Formation_api("true");
setGet_List_Niveau_Formation_result(data['message']);
}
else {
setGet_List_Niveau_Formation_api("false");
setGet_List_Niveau_Formation_message(data['message']);
alert(data['message'])
}
}).catch((error) => {
setLoading(false);
console.error('Error Get_List_Niveau_Formation :', error);
setGet_List_Niveau_Formation_api("false");
alert(" Impossible de récupérer la liste des niveaux de formation");
});
}
//const [rows_champs_specifics, setrows_champs_specifics] = useState([]); //const [rows_champs_specifics, setrows_champs_specifics] = useState([]);
// Cas spécifique de cette page. // Cas spécifique de cette page.
@ -1457,6 +1521,8 @@ const AddClassManual = (props) => {
const [p_formateur_id, setp_formateur_id] = useState(""); const [p_formateur_id, setp_formateur_id] = useState("");
const [p_formateur_label, setp_formateur_label] = useState(""); const [p_formateur_label, setp_formateur_label] = useState("");
const [p_class_level, setp_class_level] = useState("");
return ( return (
<div className="addclassmanual"> <div className="addclassmanual">
@ -1623,14 +1689,31 @@ const AddClassManual = (props) => {
<TextField <TextField
name="class_level" name="class_level"
label="Niveau (2 à 8)" label="Niveau (2 à 8)"
type="number" select
inputProps={{ min: "2", max: "8", step: "1" }} inputProps={{ min: "2", max: "8", step: "1" }}
InputLabelProps={{ InputLabelProps={{
shrink: true, shrink: true,
}} }}
disabled={false} disabled={false}
className="disabled_style" className="disabled_style"
/> value={p_class_level}
onChange={(e) => {
setp_class_level(e.target.value);
DataUpdated();
}
}
>
{Get_List_Niveau_Formation_result &&
Get_List_Niveau_Formation_result.map((niveau) => (
<MenuItem key={JSON.parse(niveau).code} value={JSON.parse(niveau).code}
style={{ "paddingLeft": "5px", "textAlign": "left", "height": "2rem", "width": '100%' }}>
{JSON.parse(niveau).description}&nbsp;
</MenuItem>
))}
</TextField>
</div> </div>

View File

@ -1,42 +1,28 @@
import React, { useRef, useState, useEffect } from "react"; import React, { useRef, useState, useEffect } from "react";
import Box from '@mui/material/Box';
import TextField from '@mui/material/TextField'; import TextField from '@mui/material/TextField';
import MenuItem from '@mui/material/MenuItem'; import MenuItem from '@mui/material/MenuItem';
import { confirmAlert } from 'react-confirm-alert'; // Import
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import Button from '@mui/material/Button'; import Button from '@mui/material/Button';
import axios from "axios"; import axios from "axios";
import DeleteIcon from '@mui/icons-material/Delete'; import DeleteIcon from '@mui/icons-material/Delete';
import { getCookie, setCookie } from 'react-use-cookie'; import { getCookie, setCookie } from 'react-use-cookie';
import { Alert } from "@mui/material";
import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai"; import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai";
import profileimg from "../mysy_img/MYSY-profil-2.png";
import Abonnement from "./Abonnement";
import { ConstructionOutlined, PropaneSharp } from "@mui/icons-material";
import { useHistory } from "react-router-dom"; import { useHistory } from "react-router-dom";
import CheckOut from "./CheckOut";
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css"; import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
import { RichTextEditor } from '@mantine/rte';
import { Editor } from '@tinymce/tinymce-react';
import { IoArrowUndoCircle } from "react-icons/io5";
import { GrUserAdmin, GrOrderedList } from "react-icons/gr"; import { GrUserAdmin, GrOrderedList } from "react-icons/gr";
import parse from 'html-react-parser';
import 'react-tooltip/dist/react-tooltip.css' import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip' import { Tooltip } from 'react-tooltip'
import { CiEdit, CiTrash } from "react-icons/ci";
import GestionAdministrative from "./GestionAdministrative";
import { IoMdAddCircle, IoIosRemoveCircleOutline } from "react-icons/io";
import { Fab } from "@material-ui/core";
import { ConsoleView } from "react-device-detect";
import fileDownload from 'js-file-download'
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5"; import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
import { AiOutlineUserAdd } from "react-icons/ai"; import { AiOutlineUserAdd } from "react-icons/ai";
import PartnerClientActivite from "./PartnerClient_Activite"; import PartnerClientActivite from "./PartnerClient_Activite";
import Popup from 'reactjs-popup'; import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css'; import 'reactjs-popup/dist/index.css';
import ToggleSwitch from "./ToggleSwitch";
const AddParnerClient = (props) => { const AddParnerClient = (props) => {
const history = useHistory(); const history = useHistory();
@ -380,6 +366,7 @@ const AddParnerClient = (props) => {
const [addcontact, setaddcontact] = useState("0"); const [addcontact, setaddcontact] = useState("0");
function Add_Contact() { function Add_Contact() {
setis_contact_include_com(false);
setdatamodification_contact("0"); setdatamodification_contact("0");
setformedit_mode_contact("1"); setformedit_mode_contact("1");
clean_contact_set_values(); clean_contact_set_values();
@ -396,6 +383,7 @@ const AddParnerClient = (props) => {
setdatamodification_invoice("0"); setdatamodification_invoice("0");
setformedit_mode_contact("0"); setformedit_mode_contact("0");
setcurrent_contact_recid(""); setcurrent_contact_recid("");
setis_contact_include_com(false);
} }
const [Get_List_Client_Type_api, setGet_List_Client_Type_api] = useState(); const [Get_List_Client_Type_api, setGet_List_Client_Type_api] = useState();
@ -413,8 +401,8 @@ const AddParnerClient = (props) => {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Client_Type_List/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Client_Type_List/";
axios.post(myurl, form).then(res => { axios.post(myurl, form).then(res => {
console.log(" In Get_List_Client_Type res.data.status = " + res.data.status); //console.log(" In Get_List_Client_Type res.data.status = " + res.data.status);
console.log(" In Get_List_Client_Type res.data.message r_class = " + res.data.message); //console.log(" In Get_List_Client_Type res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
setGet_List_Client_Type_api("true"); setGet_List_Client_Type_api("true");
@ -536,7 +524,7 @@ const AddParnerClient = (props) => {
setp_client_type_id(mylocalclient.client_type_id); setp_client_type_id(mylocalclient.client_type_id);
setp_client_type_label(mylocalclient.client_type_code); setp_client_type_label(mylocalclient.client_type_code);
}else{ } else {
setp_client_type_id(""); setp_client_type_id("");
setp_client_type_label(""); setp_client_type_label("");
} }
@ -1695,6 +1683,7 @@ const AddParnerClient = (props) => {
function retour_liste_contact() { function retour_liste_contact() {
setaddcontact("0"); setaddcontact("0");
setdatamodification_contact('0');
} }
@ -1866,6 +1855,12 @@ const AddParnerClient = (props) => {
} }
form.append("adr_pays", contact_pays); form.append("adr_pays", contact_pays);
var include_com = "0"
if (is_contact_include_com) {
include_com = "1";
}
form.append("include_com", include_com);
var contact_telephone = "" var contact_telephone = ""
if (document.getElementsByName("contact_telephone")) { if (document.getElementsByName("contact_telephone")) {
@ -1890,7 +1885,8 @@ const AddParnerClient = (props) => {
Get_List_Contact_Of_client_Part(); Get_List_Contact_Of_client_Part();
setaddcontact("0"); setaddcontact("0");
setdatamodification_contact("") setdatamodification_contact("");
setis_contact_include_com(false)
alert(res.data.message); alert(res.data.message);
@ -1947,8 +1943,8 @@ const AddParnerClient = (props) => {
axios.post(myurl, form).then(res => { axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
console.log(" In Display_Part_Client_Contact res.data.status = " + res.data.status); //console.log(" In Display_Part_Client_Contact res.data.status = " + res.data.status);
console.log(" In Display_Part_Client_Contact res.data.message = " + res.data.message); //console.log(" In Display_Part_Client_Contact res.data.message = " + res.data.message);
setDisplay_Part_Client_Contact_api("true"); setDisplay_Part_Client_Contact_api("true");
setDisplay_Part_Client_Contact_result(res.data.message); setDisplay_Part_Client_Contact_result(res.data.message);
Get_List_Contact_Of_client_Part(); Get_List_Contact_Of_client_Part();
@ -1976,6 +1972,15 @@ const AddParnerClient = (props) => {
setp_contact_prenom(""); setp_contact_prenom("");
setis_contact_include_com(false);
if (mylocalclient_contact.include_com){
if (String(mylocalclient_contact.include_com) === "1")
setis_contact_include_com(true);
}
if (mylocalclient_contact.siret) if (mylocalclient_contact.siret)
setcontact_siret(mylocalclient_contact.siret); setcontact_siret(mylocalclient_contact.siret);
else else
@ -2068,6 +2073,65 @@ const AddParnerClient = (props) => {
} }
const [Delete_Part_Client_Contact_api, setDelete_Part_Client_Contact_api] = useState("");
const [Delete_Part_Client_Contact_result, setDelete_Part_Client_Contact_result] = useState("");
const [Delete_Part_Client_Contact_message, setDelete_Part_Client_Contact_message] = useState("");
function Delete_Part_Client_Contact(event) {
var form = new FormData();
var contactmail = event.currentTarget.getAttribute('contactmail');
var contact_id = event.currentTarget.getAttribute('contact_id');
setelected_contact_id(contact_id);
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("_id", contact_id);
form.append("related_collection", "partner_client");
form.append("related_collection_owner_id", props.client_id);
//console.log(" ### contactmail = ", contactmail);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Delete_Given_Contact/";
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
//console.log(" In Delete_Part_Client_Contact res.data.status = " + res.data.status);
//console.log(" In Delete_Part_Client_Contact res.data.message = " + res.data.message);
setDelete_Part_Client_Contact_api("true");
setDelete_Part_Client_Contact_result(res.data.message);
Get_List_Contact_Of_client_Part();
}
else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
history.push("/Connexion");
return;
}
else {
setDelete_Part_Client_Contact_api("false");
setDelete_Part_Client_Contact_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
console.warn('Not good man :( Delete_Part_Client_Contact = ', error);
setDelete_Part_Client_Contact_result("false");
setDelete_Part_Client_Contact_message(" Impossible de recuperer les detail du contact")
alert(" Impossible de supprimer le contact");
})
}
const [is_contact_include_com, setis_contact_include_com] = useState(false);
return ( return (
<div className="add_partner_client"> <div className="add_partner_client">
@ -2403,7 +2467,7 @@ const AddParnerClient = (props) => {
onChange={(e) => { onChange={(e) => {
setp_client_type_id(e.target.value); setp_client_type_id(e.target.value);
}} }}
> >
@ -2722,11 +2786,84 @@ const AddParnerClient = (props) => {
{Get_List_Contact_Of_client_Part_result && String(Get_List_Contact_Of_client_Part_api) === "true" && {Get_List_Contact_Of_client_Part_result && String(Get_List_Contact_Of_client_Part_api) === "true" &&
Get_List_Contact_Of_client_Part_result.map((client) => ( Get_List_Contact_Of_client_Part_result.map((client) => (
<div contactmail={String(JSON.parse(client).email)} contact_id={String(JSON.parse(client)._id)} onClick={Display_Part_Client_Contact}> <div >
{(JSON.parse(client).nom || JSON.parse(client).prenom) && <nav className="grid_title"> {String(JSON.parse(client).prenom)} &nbsp; {String(JSON.parse(client).nom)} <hr /> </nav>} {(JSON.parse(client).nom || JSON.parse(client).prenom) &&
{JSON.parse(client).fonction && <nav> {String(JSON.parse(client).fonction)} </nav>} <nav style={{ "width": "100%", "float": "left" }}>
{JSON.parse(client).email && <nav> {String(JSON.parse(client).email)} </nav>} <nav className="grid_title" style={{ "width": "75%", "float": "left" }} contactmail={String(JSON.parse(client).email)} contact_id={String(JSON.parse(client)._id)} onClick={Display_Part_Client_Contact}>
{JSON.parse(client).telephone && <nav> {String(JSON.parse(client).telephone)} </nav>} {String(JSON.parse(client).prenom)} &nbsp; {String(JSON.parse(client).nom)}
</nav>
<nav style={{ "width": "10%", "float": "left" }}>
<CiEdit style={{ "border": "1px solid", "cursor": "pointer" }} contactmail={String(JSON.parse(client).email)} contact_id={String(JSON.parse(client)._id)} onClick={Display_Part_Client_Contact} /> &nbsp; &nbsp;
</nav>
<Popup
trigger={
<nav style={{ "width": "10%", "float": "right", "cursor": "pointer" }}>
<CiTrash style={{ "color": "red", "border": "1px solid" }} />
</nav>
}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, le contact sera <i><font color="red"> définitivement supprimé</font></i>. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
Delete_Part_Client_Contact(event);
close();
}}
contactmail={String(JSON.parse(client).email)} contact_id={String(JSON.parse(client)._id)}
> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
</nav>
}
<div className="div_row" style={{ "border": "None", "marginTop": "2px", "marginBottom": "2px" }}>
<hr className="hr_break" style={{ "marginTop": "2px", "marginBottom": "2px" }} />
</div>
<nav style={{ "fontSize": '12px', fontWeight: "600", letterSpacing: "2px", color: "#616161", "marginTop": "1rem" }} >
{JSON.parse(client).fonction && <nav> {String(JSON.parse(client).fonction)} </nav>}
{JSON.parse(client).email && <nav> {String(JSON.parse(client).email)} </nav>}
{JSON.parse(client).telephone && <nav> {String(JSON.parse(client).telephone)} </nav>}
</nav>
</div> </div>
@ -2975,6 +3112,31 @@ const AddParnerClient = (props) => {
/> />
</div> </div>
<div className="div_row" style={{ "border": "None" }}>
<hr className="hr_break" />
</div>
<Tooltip id="tooltip_com" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="tooltip_com" data-tooltip-content="Si oui, ce contact recevra tous les emails échangés">
<div className="session_caract" style={{ "float": "right", "fontSize": "12px", 'fontWeight': 'bolder', }}>
<nav onChange={(e) => {
DataUpdated_Contact_Data();
setformedit_mode_contact("1");
//console.log("is_contact_include_com == ", is_contact_include_com);
if (is_contact_include_com === true)
setis_contact_include_com(false)
else
setis_contact_include_com(true)
}}
id="toggleSwitchNav" name="toggleSwitchNav">
<ToggleSwitch
label="Inclure / Exclure de la communication ? " id="toggleSwitch" name="toggleSwitch" checked={is_contact_include_com} style={{ height: "2rem" }} />
</nav>
</div>
</a>
<div className="div_row" style={{ "border": "None" }}> <div className="div_row" style={{ "border": "None" }}>
&nbsp; &nbsp;
</div> </div>

View File

@ -318,6 +318,10 @@ const Employes = (props) => {
{ field: 'date_fin', headerName: 'Au', width: 150, hide: false, }, { field: 'date_fin', headerName: 'Au', width: 150, hide: false, },
{ field: 'type_contrat', headerName: 'Type Contrat', flex: 1, hide: false, width: 150, }, { field: 'type_contrat', headerName: 'Type Contrat', flex: 1, hide: false, width: 150, },
{ field: 'type_employe', headerName: 'Type Employé', flex: 1, hide: false, width: 150, }, { field: 'type_employe', headerName: 'Type Employé', flex: 1, hide: false, width: 150, },
{ field: 'qte', headerName: 'Quanité', flex: 1, hide: true, width: 150, },
{ field: 'cout', headerName: 'Prix', flex: 1, hide: true, width: 150, },
{ field: 'comment', headerName: 'Commentaire', flex: 1, hide: true, width: 150, },
{ {
field: "delete", headerName: 'Supprimer', field: "delete", headerName: 'Supprimer',
@ -515,14 +519,14 @@ const Employes = (props) => {
form.append("rh_id", local_employe_id); form.append("rh_id", local_employe_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Employee_Contrat/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Employee_Contrat/";
setLoading(true);
axios.post(myurl, form).then(res => { axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) { if (String(res.data.status) === String("true")) {
setLoading(false);
//console.log(" In Getall_Employee_Contrat res.data.status = " + res.data.status); //console.log(" In Getall_Employee_Contrat res.data.status = " + res.data.status);
//console.log(" In Getall_Employee_Contrat res.data.message r_class = " + res.data.message); //console.log(" In Getall_Employee_Contrat res.data.message r_class = " + res.data.message);
setGetall_Employee_Contrat_api("true"); setGetall_Employee_Contrat_api("true");
@ -536,6 +540,7 @@ const Employes = (props) => {
} }
}).catch((error) => { }).catch((error) => {
setLoading(false);
console.warn('Not good man :( Getall_Employee_Contrat = ', error); console.warn('Not good man :( Getall_Employee_Contrat = ', error);
setGetall_Employee_Contrat_api("false"); setGetall_Employee_Contrat_api("false");
alert(" Impossible de recuperer les contrat de l'employé"); alert(" Impossible de recuperer les contrat de l'employé");
@ -545,6 +550,47 @@ const Employes = (props) => {
const [Getall_Employee_Type_Contrat_api, setGetall_Employee_Type_Contrat_api] = useState();
const [Getall_Employee_Type_Contrat_message, setGetall_Employee_Type_Contrat_message] = useState();
const [Getall_Employee_Type_Contrat_result, setGetall_Employee_Type_Contrat_result] = useState([]);
function Getall_Employee_Type_Contrat() {
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_Type_Contrat_List/";
setLoading(true);
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
setLoading(false);
//console.log(" In Getall_Employee_Type_Contrat res.data.status = " + res.data.status);
//console.log(" In Getall_Employee_Type_Contrat res.data.message r_class = " + res.data.message);
setGetall_Employee_Type_Contrat_api("true");
setGetall_Employee_Type_Contrat_result(res.data.message);
}
else {
setGetall_Employee_Type_Contrat_api("false");
setGetall_Employee_Type_Contrat_message(res.data.message);
alert(res.data.message)
}
}).catch((error) => {
setLoading(false);
console.warn('Not good man :( Getall_Employee_Type_Contrat = ', error);
setGetall_Employee_Type_Contrat_api("false");
alert(" Impossible de recuperer les contrat de l'employé");
//setmyApimyApiMessage("")
})
}
function clean_all_filters() { function clean_all_filters() {
setp_filtre1(); setp_filtre1();
setp_filtre1_value(); setp_filtre1_value();
@ -705,6 +751,9 @@ const Employes = (props) => {
//console.log(" ### employe_id = ", employe_id); //console.log(" ### employe_id = ", employe_id);
Display_Detail_Employe(employe_id); Display_Detail_Employe(employe_id);
Get_List_Managers();
Get_List_RH_Profils();
Get_Employee_Related_Target_Collection_Data();
if (document.getElementById('myRef')) { if (document.getElementById('myRef')) {
var divh = document.getElementById('myRef').offsetTop; var divh = document.getElementById('myRef').offsetTop;
@ -2142,11 +2191,22 @@ const Employes = (props) => {
const [Employee_data_changed, setEmployee_data_changed] = useState(); const [Employee_data_changed, setEmployee_data_changed] = useState();
const [add_One_Employee, setadd_One_Employee] = useState(); const [add_One_Employee, setadd_One_Employee] = useState();
const myRef_new_employee = useRef(null)
function submenu_add_one_employee() { function submenu_add_one_employee() {
setdisplay_detail_employe(); setdisplay_detail_employe();
setadd_One_Employee("1"); setadd_One_Employee("1");
setsubmenu("detail_employe"); setsubmenu("detail_employe");
if (document.getElementById('myRef_new_employee')) {
var divh = document.getElementById('myRef_new_employee').offsetTop;
window.scrollTo({
top: divh,
behavior: "smooth",
});
}
} }
function Annule_add_one_Employee() { function Annule_add_one_Employee() {
@ -3795,10 +3855,12 @@ const Employes = (props) => {
const Dialog_employe_contrat_handleClose_buton = () => { const Dialog_employe_contrat_handleClose_buton = () => {
setp_employe_contrat_type_contrat(); setp_employe_contrat_type_contrat("");
setp_employe_contrat_type_employe(); setp_employe_contrat_type_employe("");
setp_employe_contrat_cout(); setp_employe_contrat_cout("");
setp_employe_contrat_groupe_prix_achat_id(); setp_employe_contrat_comment("");
setp_employe_contrat_groupe_prix_achat_id("");
setp_employe_contrat_quantite("");
setp_employe_contrat_date_debut(new Date().toLocaleDateString('fr-FR')); setp_employe_contrat_date_debut(new Date().toLocaleDateString('fr-FR'));
setp_employe_contrat_date_fin(date_today_90j.toLocaleDateString('fr-FR')); setp_employe_contrat_date_fin(date_today_90j.toLocaleDateString('fr-FR'));
setselected_contrat_id(""); setselected_contrat_id("");
@ -3874,8 +3936,10 @@ const Employes = (props) => {
const [p_employe_contrat_type_employe, setp_employe_contrat_type_employe] = useState(""); const [p_employe_contrat_type_employe, setp_employe_contrat_type_employe] = useState("");
const [p_employe_contrat_cout, setp_employe_contrat_cout] = useState(""); const [p_employe_contrat_cout, setp_employe_contrat_cout] = useState("");
const [p_employe_contrat_groupe_prix_achat_id, setp_employe_contrat_groupe_prix_achat_id] = useState(""); const [p_employe_contrat_groupe_prix_achat_id, setp_employe_contrat_groupe_prix_achat_id] = useState("");
const [p_employe_contrat_quantite, setp_employe_contrat_quantite] = useState("");
const [p_employe_contrat_date_debut, setp_employe_contrat_date_debut] = useState(new Date().toLocaleDateString('fr-FR')); const [p_employe_contrat_date_debut, setp_employe_contrat_date_debut] = useState(new Date().toLocaleDateString('fr-FR'));
const [p_employe_contrat_date_fin, setp_employe_contrat_date_fin] = useState(date_today_90j.toLocaleDateString('fr-FR')); const [p_employe_contrat_date_fin, setp_employe_contrat_date_fin] = useState(date_today_90j.toLocaleDateString('fr-FR'));
const [p_employe_contrat_comment, setp_employe_contrat_comment] = useState("");
const [Get_Partner_Purchase_Prices_api, setGet_Partner_Purchase_Prices_api] = useState(); const [Get_Partner_Purchase_Prices_api, setGet_Partner_Purchase_Prices_api] = useState();
const [Get_Partner_Purchase_Prices_message, setGet_Partner_Purchase_Prices_message] = useState(); const [Get_Partner_Purchase_Prices_message, setGet_Partner_Purchase_Prices_message] = useState();
@ -3930,10 +3994,21 @@ const Employes = (props) => {
setp_employe_contrat_type_contrat(line.type_contrat); setp_employe_contrat_type_contrat(line.type_contrat);
setp_employe_contrat_type_employe(line.type_employe); setp_employe_contrat_type_employe(line.type_employe);
setp_employe_contrat_cout(line.cout); setp_employe_contrat_cout(line.cout);
setp_employe_contrat_comment(line.comment);
setp_employe_contrat_groupe_prix_achat_id(line.groupe_prix_achat_id); setp_employe_contrat_groupe_prix_achat_id(line.groupe_prix_achat_id);
setp_employe_contrat_quantite(line.qte);
if (String(line.qte) !== "")
settype_contrat_qte("1");
setp_employe_contrat_date_debut(line.date_debut); setp_employe_contrat_date_debut(line.date_debut);
setp_employe_contrat_date_fin(line.date_fin); setp_employe_contrat_date_fin(line.date_fin);
Getall_Employee_Type_Contrat();
setDialog_employe_contrat_open(true); setDialog_employe_contrat_open(true);
} }
@ -3949,6 +4024,9 @@ const Employes = (props) => {
const stored_cookie = getCookie('tokenmysypart'); const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie); form.append("token", stored_cookie);
if (String(p_employe_contrat_comment).length > 255) {
alert(" Le commentaire du contrat ne doit pas depasser 255 caractères")
}
var myurl = ""; var myurl = "";
@ -3962,7 +4040,9 @@ const Employes = (props) => {
form.append("type_contrat", p_employe_contrat_type_contrat); form.append("type_contrat", p_employe_contrat_type_contrat);
form.append("type_employe", p_employe_contrat_type_employe); form.append("type_employe", p_employe_contrat_type_employe);
form.append("cout", p_employe_contrat_cout); form.append("cout", p_employe_contrat_cout);
form.append("quantite", p_employe_contrat_quantite);
form.append("groupe_prix_achat_id", p_employe_contrat_groupe_prix_achat_id); form.append("groupe_prix_achat_id", p_employe_contrat_groupe_prix_achat_id);
form.append("comment", p_employe_contrat_comment);
@ -3976,7 +4056,9 @@ const Employes = (props) => {
form.append("type_contrat", p_employe_contrat_type_contrat); form.append("type_contrat", p_employe_contrat_type_contrat);
form.append("type_employe", p_employe_contrat_type_employe); form.append("type_employe", p_employe_contrat_type_employe);
form.append("cout", p_employe_contrat_cout); form.append("cout", p_employe_contrat_cout);
form.append("quantite", p_employe_contrat_quantite);
form.append("groupe_prix_achat_id", p_employe_contrat_groupe_prix_achat_id); form.append("groupe_prix_achat_id", p_employe_contrat_groupe_prix_achat_id);
form.append("comment", p_employe_contrat_comment);
} }
setLoading(true); setLoading(true);
@ -4019,6 +4101,7 @@ const Employes = (props) => {
} }
const myRef_contrat = useRef(null) const myRef_contrat = useRef(null)
const [type_contrat_qte, settype_contrat_qte] = useState();
return ( return (
<div className="employes"> <div className="employes">
@ -4232,12 +4315,20 @@ const Employes = (props) => {
onChange={(e) => { onChange={(e) => {
setp_employe_contrat_type_contrat(e.target.value); setp_employe_contrat_type_contrat(e.target.value);
setdialog_contrat_data_changed("1"); setdialog_contrat_data_changed("1");
var result2 = Getall_Employee_Type_Contrat_result.filter((val) => JSON.parse(val).code === String(e.target.value));
settype_contrat_qte(JSON.parse(result2[0]).quantitatif);
} }
} }
> >
<MenuItem value="cdi" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >CDI &nbsp;</MenuItem> {Getall_Employee_Type_Contrat_result &&
<MenuItem value="cdd" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >CDD &nbsp;</MenuItem> Getall_Employee_Type_Contrat_result.map((step) => (
<MenuItem value="autre" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Autre &nbsp;</MenuItem> <MenuItem key={JSON.parse(step).code} value={JSON.parse(step).code}
style={{ "paddingLeft": "5px", "textAlign": "left", "height": "2rem", "width": '100%' }}>
{JSON.parse(step).description}&nbsp;
</MenuItem>
))}
</TextField> </TextField>
</div> </div>
@ -4314,47 +4405,79 @@ const Employes = (props) => {
</div> </div>
<div className="session_caract_Dialog" > Groupe de Prix d'Achat <Tooltip id="tooltip_id_1" />
<TextField <a data-tooltip-id="tooltip_id_1" data-tooltip-content="Si vous souhaitez lier le tarif à un groupe de prix déjà existant ">
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }} <div className="session_caract_Dialog" > Groupe de Prix d'Achat
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="event_dialog_grp_fournisseur" name="event_dialog_grp_fournisseur"
id="event_dialog_grp_fournisseur" id="event_dialog_grp_fournisseur"
fullWidth fullWidth
select select
value={p_employe_contrat_groupe_prix_achat_id} value={p_employe_contrat_groupe_prix_achat_id}
onChange={(e) => { onChange={(e) => {
setp_employe_contrat_groupe_prix_achat_id(e.target.value); setp_employe_contrat_groupe_prix_achat_id(e.target.value);
setdialog_contrat_data_changed("1"); setdialog_contrat_data_changed("1");
} }
} }
> >
{Get_Partner_Purchase_Prices_result && {Get_Partner_Purchase_Prices_result &&
Get_Partner_Purchase_Prices_result.map((myclient) => ( Get_Partner_Purchase_Prices_result.map((myclient) => (
<MenuItem key={JSON.parse(myclient)._id} value={JSON.parse(myclient)._id} <MenuItem key={JSON.parse(myclient)._id} value={JSON.parse(myclient)._id}
style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}> style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>
{JSON.parse(myclient).code_groupe_prix}&nbsp; {JSON.parse(myclient).code_groupe_prix}&nbsp;
</MenuItem> </MenuItem>
))} ))}
<MenuItem key="" value="" <MenuItem key="" value=""
style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}> style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>
Autre Autre
</MenuItem> </MenuItem>
</TextField> </TextField>
</div>
</a>
{String(type_contrat_qte) === "1" && <div className="session_caract_Dialog" > Quantité
<Tooltip id="tooltip_id_2" />
<a data-tooltip-id="tooltip_id_2" data-tooltip-content=" Il s'agit d'un contrat en quantités comme : Le nombre le copies à corriger ">
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="event_dialog_qte"
id="event_dialog_qte"
type="number"
step="any"
fullWidth
value={p_employe_contrat_quantite}
onChange={(e) => {
setp_employe_contrat_quantite(e.target.value);
setdialog_contrat_data_changed("1");
}
}
/>
</a>
</div> </div>
}
{String(p_employe_contrat_groupe_prix_achat_id) === "" && <div className="session_caract_Dialog" > Prix {String(p_employe_contrat_groupe_prix_achat_id) === "" && <div className="session_caract_Dialog" > Prix
<Tooltip id="tooltip_id_3" />
<a data-tooltip-id="tooltip_id_3" data-tooltip-content=" Il s'agit du montant de rémunération (HT) du contrat ">
<TextField <TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }} sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="event_dialog_fournisseur" name="event_dialog_price"
id="event_dialog_fournisseur" id="event_dialog_qte"
type="number" type="number"
step="any" step="any"
fullWidth fullWidth
@ -4366,8 +4489,31 @@ const Employes = (props) => {
} }
} }
/> />
</a>
</div> </div>
} }
<div className="session_caract_Dialog" > Commentaire
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="event_dialog_price"
id="event_dialog_qte"
type="text"
fullWidth
value={p_employe_contrat_cout}
onChange={(e) => {
if (String(e.target.value).length <= 255) {
setp_employe_contrat_cout(e.target.value);
setdialog_contrat_data_changed("1");
}
}
}
/>
</div>
{String(dialog_contrat_data_changed) === "1" && <div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center", "width": "100%" }}> {String(dialog_contrat_data_changed) === "1" && <div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center", "width": "100%" }}>
/!\ Pensez à enregistrer les modifications /!\ Pensez à enregistrer les modifications
@ -5723,7 +5869,7 @@ const Employes = (props) => {
</div>} </div>}
<nav id="myRef_new_employee" ref={myRef_new_employee}> &nbsp;</nav>
{String(submenu) === "detail_employe" && String(add_One_Employee) === "1" && <div className="div_row"> {String(submenu) === "detail_employe" && String(add_One_Employee) === "1" && <div className="div_row">
<div className="div_row"> <div className="div_row">
<Button variant="outlined" onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button> <Button variant="outlined" onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
@ -7024,6 +7170,10 @@ const Employes = (props) => {
date_fin: JSON.parse(item).date_fin, date_fin: JSON.parse(item).date_fin,
type_contrat: JSON.parse(item).type_contrat, type_contrat: JSON.parse(item).type_contrat,
type_employe: JSON.parse(item).type_employe, type_employe: JSON.parse(item).type_employe,
qte: JSON.parse(item).quantite,
cout: JSON.parse(item).cout,
comment: JSON.parse(item).comment,
} }
))} ))}
@ -7058,14 +7208,18 @@ const Employes = (props) => {
<div className="div_row_gauche div_row_gauche_etendu" style={{ "textAlign": "left", "paddingLeft": "5px" }}> <div className="div_row_gauche div_row_gauche_etendu" style={{ "textAlign": "left", "paddingLeft": "5px" }}>
<Button variant="outlined" onClick={() => { <Button variant="outlined" onClick={() => {
setp_employe_contrat_type_contrat(); setp_employe_contrat_type_contrat("");
setp_employe_contrat_type_employe(); setp_employe_contrat_type_employe("");
setp_employe_contrat_cout(); setp_employe_contrat_cout("");
setp_employe_contrat_groupe_prix_achat_id(); setp_employe_contrat_comment("");
setp_employe_contrat_groupe_prix_achat_id("");
setp_employe_contrat_quantite("");
setp_employe_contrat_date_debut(new Date().toLocaleDateString('fr-FR')); setp_employe_contrat_date_debut(new Date().toLocaleDateString('fr-FR'));
setp_employe_contrat_date_fin(date_today_90j.toLocaleDateString('fr-FR')); setp_employe_contrat_date_fin(date_today_90j.toLocaleDateString('fr-FR'));
setselected_contrat_id(""); setselected_contrat_id("");
Getall_Employee_Type_Contrat();
setDialog_employe_contrat_open(true); setDialog_employe_contrat_open(true);

View File

@ -10,7 +10,7 @@ import { Button, } from "reactstrap";
import axios from "axios"; import axios from "axios";
import TextField from '@mui/material/TextField'; import TextField from '@mui/material/TextField';
import MenuItem from '@mui/material/MenuItem'; import MenuItem from '@mui/material/MenuItem';
import { AiOutlineEdit } from "react-icons/ai";
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc"; import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
import { DataGrid, GridToolbar, frFR, GridCellParams } from '@mui/x-data-grid'; import { DataGrid, GridToolbar, frFR, GridCellParams } from '@mui/x-data-grid';
import { AiFillFolderOpen, AiFillMinusSquare } from "react-icons/ai"; import { AiFillFolderOpen, AiFillMinusSquare } from "react-icons/ai";
@ -19,19 +19,18 @@ import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css'; import 'reactjs-popup/dist/index.css';
import DatePicker from "react-datepicker"; import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css"; import "react-datepicker/dist/react-datepicker.css";
import setHours from "date-fns/setHours";
import setMinutes from "date-fns/setMinutes";
import ToggleSwitch from "./ToggleSwitch"; import ToggleSwitch from "./ToggleSwitch";
import { format } from 'date-fns' import { format } from 'date-fns'
import moment from "moment"; import moment from "moment";
import fileDownload from 'js-file-download' import fileDownload from 'js-file-download'
import { ConsoleView } from "react-device-detect";
import { confirmAlert } from 'react-confirm-alert'; import { confirmAlert } from 'react-confirm-alert';
import SendIcon from '@mui/icons-material/Send';
import { FcViewDetails, FcDisapprove } from "react-icons/fc"; import { FcViewDetails, FcDisapprove } from "react-icons/fc";
import parse from 'html-react-parser' import parse from 'html-react-parser'
import { Editor } from '@tinymce/tinymce-react'; import { Editor } from '@tinymce/tinymce-react';
import { FcAddImage } from "react-icons/fc";
import add_plus from "../mysy_img/plus.png"; import add_plus from "../mysy_img/plus.png";
import gif_new from "../mysy_img/new_icon_gif.gif"; import gif_new from "../mysy_img/new_icon_gif.gif";
import excel_icone from "../mysy_img/excel_icone.png"; import excel_icone from "../mysy_img/excel_icone.png";

View File

@ -276,7 +276,9 @@ const Partner_Client = (props) => {
function close_detail_client() { function close_detail_client() {
setSelectionModel([]);
setselected_id("");
setgridline_id("");
setEdite_Client("0"); setEdite_Client("0");
} }
@ -618,7 +620,7 @@ const Partner_Client = (props) => {
</div> </div>
<div className="div_row" style={{paddingRight: '10px' }}> <div className="div_row" style={{ paddingRight: '10px' }}>
<div style={{ height: 550, width: '100%', paddingRight: '1px' }}> <div style={{ height: 550, width: '100%', paddingRight: '1px' }}>
&nbsp; &nbsp;
@ -638,7 +640,7 @@ const Partner_Client = (props) => {
color: "black", color: "black",
fontSize: 14 fontSize: 14
}, },
'& .line--statut--selected': { '& .line--statut--selected': {
backgroundColor: '#FBF2EF', backgroundColor: '#FBF2EF',
color: 'black', color: 'black',
@ -702,10 +704,10 @@ const Partner_Client = (props) => {
if (String(params.row.id) === String(gridline_id)) { if (String(params.row.id) === String(gridline_id)) {
return 'line--statut--selected'; return 'line--statut--selected';
} }
else if( parseInt(String(params.row.id)) % 2 === 0){ else if (parseInt(String(params.row.id)) % 2 === 0) {
return 'line--statut--pair'; return 'line--statut--pair';
} }
else if( parseInt(String(params.row.id)) % 2 !== 0){ else if (parseInt(String(params.row.id)) % 2 !== 0) {
return 'line--statut--impair'; return 'line--statut--impair';
} }
}} }}

View File

@ -14,7 +14,7 @@
@media only screen and (max-width: 600px) { @media only screen and (max-width: 600px) {
.div_row { .div_row {
float: left; float: left;
//border:0px solid black; //border:0px solid black;
@ -189,7 +189,7 @@
} }
@media only screen and (min-width: 601px) and (max-width: 991px) { @media only screen and (min-width: 601px) and (max-width: 991px) {
.div_row { .div_row {
float: left; float: left;
//border:0px solid black; //border:0px solid black;
@ -364,7 +364,7 @@
} }
@media only screen and (min-width: 992px) and (max-width: 1199px) { @media only screen and (min-width: 992px) and (max-width: 1199px) {
.div_row { .div_row {
float: left; float: left;
//border:0px solid black; //border:0px solid black;
@ -630,7 +630,7 @@
margin: 5px !important; margin: 5px !important;
margin-bottom: 1rem !important; margin-bottom: 1rem !important;
} }
.bton_suppr { .bton_suppr {
background: transparent; background: transparent;
color: red; color: red;
@ -713,6 +713,14 @@
} }
} }
// end media
.hr_break {
border: 5px solid grey;
}
.switch{
max-height: 1.5rem !important;
}
.contact_grid { .contact_grid {
margin-right: 10px !important; margin-right: 10px !important;

View File

@ -192,7 +192,6 @@
border: none !important; border: none !important;
background: none !important; background: none !important;
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%); box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%);
cursor: pointer;
vertical-align: middle; vertical-align: middle;
padding: 10px; padding: 10px;
text-align: left; text-align: left;
@ -460,7 +459,6 @@
border: none !important; border: none !important;
background: none !important; background: none !important;
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%); box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%);
cursor: pointer;
vertical-align: middle; vertical-align: middle;
padding: 10px; padding: 10px;
text-align: left; text-align: left;
@ -726,7 +724,6 @@
border: none !important; border: none !important;
background: none !important; background: none !important;
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%); box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%);
cursor: pointer;
vertical-align: middle; vertical-align: middle;
padding: 10px; padding: 10px;
text-align: left; text-align: left;
@ -1014,7 +1011,6 @@
border: none !important; border: none !important;
background: none !important; background: none !important;
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%); box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%);
cursor: pointer;
vertical-align: middle; vertical-align: middle;
padding: 10px; padding: 10px;
text-align: left; text-align: left;