diff --git a/src/components/Employes.js b/src/components/Employes.js
index 4529977..2cce498 100644
--- a/src/components/Employes.js
+++ b/src/components/Employes.js
@@ -555,6 +555,7 @@ const Employes = (props) => {
Get_List_RH_Profils();
Get_Employee_Related_Target_Collection_Data();
+ Get_Partner_Object_Specific_Fields("ressource_humaine");
window.scrollTo({
top: 0,
@@ -716,6 +717,7 @@ const Employes = (props) => {
const [employee_data_changed, setemployee_data_changed] = useState("");
const [employee_data_edit_mode, setemployee_data_edit_mode] = useState("");
+
const [GetAttendee_api, setGetAttendee_api] = useState();
const [GetAttendee_message, setGetAttendee_message] = useState();
const [GetAttendee_result, setGetAttendee_result] = useState();
@@ -852,6 +854,41 @@ const Employes = (props) => {
setp_detail_resp_hierarchie_prenom("");
}
+ /*
+ * Update 22/10/2023 :
+ Gestion des champs spécifiques. ils commencent tous par 'my_'
+ */
+
+
+ for (let i = 0; i < rows_champs_specifics.length; i++) {
+
+ var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
+
+ if (mylocal_employe.hasOwnProperty(field_name)) {
+ var local_valeur = mylocal_employe[String(field_name)]
+
+ if (document.getElementById(String(field_name)))
+ document.getElementById(String(field_name)).value = local_valeur;
+
+ var new_val = { 'field_name': field_name, 'field_value': local_valeur }
+ var johnIndex = findIndexByProperty(spec_field_updated_values, 'field_name', field_name);
+
+ if (johnIndex > -1) {
+ spec_field_updated_values[johnIndex] = new_val;
+
+ } else {
+ spec_field_updated_values.push(new_val);
+ }
+
+ } else {
+
+ }
+ }
+
+ setspec_field_updated_values_hooks(spec_field_updated_values);
+ /*
+ * end Update 22/10/2023 :
+ */
@@ -1328,6 +1365,16 @@ const Employes = (props) => {
document.getElementsByName("detail_resp_hierarchie_id")[0].style.backgroundColor = "#ECEFF1";
}
+ // Pour les champs spécifiques
+ for (let i = 0; i < rows_champs_specifics.length; i++) {
+
+ var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
+ if (document.getElementsByName(String(field_name))[0]) {
+ document.getElementsByName(String(field_name))[0].disabled = true;
+ document.getElementsByName(String(field_name))[0].style.backgroundColor = "#ECEFF1";
+ }
+ }
+
}
function Enable_Employee_DetailFields() {
@@ -1392,7 +1439,15 @@ const Employes = (props) => {
document.getElementsByName("detail_resp_hierarchie_id")[0].disabled = false;
document.getElementsByName("detail_resp_hierarchie_id")[0].style.backgroundColor = "#FFFFFF";
+ // Pour les champs spécifiques
+ for (let i = 0; i < rows_champs_specifics.length; i++) {
+ var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
+ if (document.getElementsByName(String(field_name))[0]) {
+ document.getElementsByName(String(field_name))[0].disabled = false;
+ document.getElementsByName(String(field_name))[0].style.backgroundColor = "#FFFFFF";
+ }
+ }
}
@@ -1512,7 +1567,15 @@ const Employes = (props) => {
form.append("_id", selected_id);
- //console.log(" form == ", form);
+
+ /*
+ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenaire
+ */
+ for (let i = 0; i < spec_field_updated_values_hooks.length; i++) {
+ form.append(String(spec_field_updated_values_hooks[i].field_name), String(spec_field_updated_values_hooks[i].field_value));
+ }
+
+
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_Ressource_Humaine/";
@@ -2888,9 +2951,6 @@ const Employes = (props) => {
local_read = true;
-
-
-
if (JSON.parse(x).module_name === module_nom && module_acces === "read") {
return '{"_id": "' + local_id + '", "module_name": "' + module_nom + '", "valide": "1", "locked": "0", "id": "' + localid + '", "read": ' + new_value + ', "write": ' + local_write + '}';
}
@@ -3327,7 +3387,7 @@ const Employes = (props) => {
//console.log(" ## result['status'] = ", result['status'])
if (String(result['status']) === String("true")) {
- console.log('Message :', result['message']);
+ //console.log('Message :', result['message']);
setGet_List_Of_All_PJ_result(result['message']);
setGet_List_Of_All_PJ_api("true");
@@ -3359,6 +3419,142 @@ const Employes = (props) => {
// -- end gestion pièces jointes
+
+ // Gestion champs specifiques
+
+ /*
+ *** ALGORITHME
+ 1 - Récuperer la liste des champs specifiques de la collection concernée - Array : list_nom_champs_spec
+ 2 - Récupérer les caracteristiques de champs champs spécifique : "id, nom, label, type valeur, etc"
+ - avec un champ 'value' à vide. Mettre dans le tableau JSON, 'spec_champs_valeur'
+
+ 3 - Créer une nouvelle table qui permettra de gerer les hook : const [rows_champs_specifics, setrows_champs_specifics] = useState([]);
+ 4 - Afficher en html les elements 'rows_champs_specifics'
+ 5 - Gerer la modification avec la fonction 'change_champs_spec_handle'
+ 6 - On recuperer les valeur lors du click d'enregistrement.
+
+ */
+
+
+ const list_nom_champs_spec = []
+ const [spec_champs_valeur, setspec_champs_valeur] = useState([]);
+
+ //const spec_champs_valeur = ""
+
+ const [Get_Partner_Object_Specific_Fields_api, setGet_Partner_Object_Specific_Fields_api] = useState();
+ const [Get_Partner_Object_Specific_Fields_message, setGet_Partner_Object_Specific_Fields_message] = useState();
+ const [Get_Partner_Object_Specific_Fields_result, setGet_Partner_Object_Specific_Fields_result] = useState();
+ function Get_Partner_Object_Specific_Fields(local_collection_obj_metier) {
+
+ var form = new FormData();
+ const stored_cookie = getCookie('tokenmysypart');
+ form.append("token", stored_cookie);
+ form.append("object_name", local_collection_obj_metier);
+
+ var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_list_specific_field_partner_by_object/";
+
+ axios.post(myurl, form).then(res => {
+
+ if (String(res.data.status) === String("true")) {
+ //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);
+
+ setGet_Partner_Object_Specific_Fields_api("true");
+ setGet_Partner_Object_Specific_Fields_result(res.data.message);
+
+
+ setrows_champs_specifics(res.data.message);
+
+
+ }
+ else {
+ setGet_Partner_Object_Specific_Fields_api("false");
+ setGet_Partner_Object_Specific_Fields_message(res.data.message);
+ alert(res.data.message)
+ }
+
+ }).catch((error) => {
+ console.warn('Not good man :( Get_Partner_Object_Specific_Fields = ', error);
+ setGet_Partner_Object_Specific_Fields_api("false");
+ alert(" Impossible de recuperer la liste des collection et champs personnalisables");
+ //setmyApimyApiMessage("")
+ })
+ }
+
+
+
+
+
+
+ const [rows_champs_specifics, setrows_champs_specifics] = useState([]);
+ const [display_champs_specifics, setdisplay_champs_specifics] = useState("0");
+
+ function afficher_champs_spec() {
+
+ setdisplay_champs_specifics("1");
+ //setrows_champs_specifics(spec_champs_valeur);
+
+ }
+
+ function findIndexByProperty(data, key, value) {
+ for (var i = 0; i < data.length; i++) {
+
+ if (data[i][key] == value) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+
+ function findValueByProperty(data, key, value) {
+ for (var i = 0; i < data.length; i++) {
+ if (data[i][key] == value) {
+
+ var tmp_val = JSON.parse(data[i]);
+
+ return tmp_val.field_value
+
+ }
+ }
+ return "";
+ }
+
+
+ const spec_field_updated_values = []
+ const [spec_field_updated_values_hooks, setspec_field_updated_values_hooks] = useState([]);
+
+
+ function change_champs_spec_handle() {
+
+ for (let i = 0; i < rows_champs_specifics.length; i++) {
+
+ var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
+
+ if (document.getElementsByName(String(field_name))[0]) {
+
+ var field_value = document.getElementsByName(String(field_name))[0].value;
+ var new_val = { 'field_name': field_name, 'field_value': field_value }
+
+ var johnIndex = findIndexByProperty(spec_field_updated_values, 'field_name', field_name);
+ if (johnIndex > -1) {
+ spec_field_updated_values[johnIndex] = new_val;
+
+ } else {
+ spec_field_updated_values.push(new_val);
+ }
+ }
+
+ }
+
+ //setrows_champs_specifics(spec_champs_valeur);
+
+ console.log(" OUTT spec_field_updated_values = ", spec_field_updated_values);
+ setspec_field_updated_values_hooks(spec_field_updated_values)
+ }
+ // -- end champs specifiques
+
+
return (
}
+
+
+
+ Vos champs spécifiques
+
+ {rows_champs_specifics &&
+ rows_champs_specifics.map((champ_spec) => (
+
+
{JSON.parse(champ_spec).field_label}
+
+ {
+ change_champs_spec_handle(e.target.value);
+ setEmployee_data_changed("1");
+ }}
+ //onChange={change_champs_spec_handle}
+
+
+ />
+
+ ))}
+
+
+
+
+
diff --git a/src/components/Partner_Commande.js b/src/components/Partner_Commande.js
index 5de4721..32ae349 100644
--- a/src/components/Partner_Commande.js
+++ b/src/components/Partner_Commande.js
@@ -39,6 +39,7 @@ import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle';
import { TransitionProps } from '@mui/material/transitions';
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
+import { Global } from "recharts";
const Partner_Commande = (props) => {
@@ -525,6 +526,7 @@ const Partner_Commande = (props) => {
}
+
useEffect(() => {
Get_List_Partner_Clients();
@@ -1190,7 +1192,7 @@ const Partner_Commande = (props) => {
if (mylocalclient) {
- if (mylocalclient.email){
+ if (mylocalclient.email) {
setp_detail_header_email_client(mylocalclient.email);
//console.log(" ### mylocalclient.email = ", mylocalclient.email);
}
@@ -2024,31 +2026,31 @@ const Partner_Commande = (props) => {
// Controle des champs obligatoires
- if( !p_add_line_item || String(p_add_line_item).length < 2){
+ if (!p_add_line_item || String(p_add_line_item).length < 2) {
alert(" Vous devez choisir un article ");
return;
}
console.log(" ### p_add_line_item = ", p_add_line_item);
- if (!p_add_line_item_qty || parseFloat(String(p_add_line_item_qty)) <= 0){
+ if (!p_add_line_item_qty || parseFloat(String(p_add_line_item_qty)) <= 0) {
alert(" La quantité choisie est incorrecte ");
return;
}
- if (!p_add_line_item_price || parseFloat(String(p_add_line_item_price)) < 0){
+ if (!p_add_line_item_price || parseFloat(String(p_add_line_item_price)) < 0) {
alert(" Le prix unitaire est incorrecte ");
return;
}
- if( String(p_add_line_item_type_reduction) === "percent" &&
- ( parseFloat(String(p_add_line_item_reduction_value)) < 0 || parseFloat(String(p_add_line_item_reduction_value)) > 100 ) ){
+ if (String(p_add_line_item_type_reduction) === "percent" &&
+ (parseFloat(String(p_add_line_item_reduction_value)) < 0 || parseFloat(String(p_add_line_item_reduction_value)) > 100)) {
alert(" Pour une reduction de type 'pourcentage', la valeur doit être comprise entre 0 et 100 ");
return;
}
- if( String(p_add_line_item_type_reduction) === "fixe" &&
- ( parseFloat(String(p_add_line_item_reduction_value)) < 0 || parseFloat(String(p_add_line_item_reduction_value)) > parseFloat(String(p_add_line_item_price)) ) ){
+ if (String(p_add_line_item_type_reduction) === "fixe" &&
+ (parseFloat(String(p_add_line_item_reduction_value)) < 0 || parseFloat(String(p_add_line_item_reduction_value)) > parseFloat(String(p_add_line_item_price)))) {
alert(" Pour une reduction de type 'fixe', la valeur ne doit pas excéder le prix unitaire de l'article ");
return;
}
@@ -2094,7 +2096,7 @@ const Partner_Commande = (props) => {
const Update_Dialog_Detail_Article_open = () => {
Add_Update_One_Order_Line_Data();
-
+
};
@@ -2184,12 +2186,12 @@ const Partner_Commande = (props) => {
- if( !p_add_cmd_header_client_id || String(p_add_cmd_header_client_id).length < 2 ){
+ if (!p_add_cmd_header_client_id || String(p_add_cmd_header_client_id).length < 2) {
alert(" Vous devez choisir un client");
return;
}
//console.log("### form = ", form);
-
+
var myurl = ""
@@ -2813,6 +2815,8 @@ const Partner_Commande = (props) => {
const [isLoading, setLoading] = useState();
+
+
return (
@@ -2820,6 +2824,7 @@ const Partner_Commande = (props) => {
}
+