recette2
cherif 2024-03-04 16:52:52 +01:00
parent 559e1a1f72
commit 803b3efe4a
1 changed files with 541 additions and 267 deletions

View File

@ -477,7 +477,8 @@ const CRM_Opportunite = (props) => {
"description": "",
"rang": ""
};
new_data2.push(node);
local_opport_chanel.push(node);
if (new_data2.length > 0) {
setNew_Getall_Partner_CRM_Opport_Step_result(new_data2);
@ -525,6 +526,13 @@ const CRM_Opportunite = (props) => {
Getall_Partner_CRM_Opport_Step();
Getall_Partner_CRM_Opportunite();
Get_List_Partner_Clients();
window.scrollTo({
top: 0,
behavior: "smooth",
});
}, []);
@ -557,15 +565,15 @@ const CRM_Opportunite = (props) => {
const [p_detail_probabilite_gain, setp_detail_probabilite_gain] = useState("");
const [p_detail_priorite, setp_detail_priorite] = useState();
const [p_detail_partner_client_id, setp_detail_partner_client_id] = useState();
const [p_detail_contact_civilite, setp_detail_contact_civilite] = useState();
const [p_detail_partner_client_id, setp_detail_partner_client_id] = useState("");
const [p_detail_contact_civilite, setp_detail_contact_civilite] = useState("");
const [p_detail_contact_nom, setp_detail_contact_nom] = useState();
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();
const [p_detail_statut, setp_detail_statut] = useState("");
const [p_detail_date_fermeture, setp_detail_date_fermeture] = useState();
function clear_detail_fields() {
@ -604,10 +612,10 @@ const CRM_Opportunite = (props) => {
}
const [Update_Crm_Opportunite_api, setUpdate_Crm_Opportunite_api] = useState();
const [Update_Crm_Opportunite_message, setUpdate_Crm_Opportunite_message] = useState();
const [Update_Crm_Opportunite_result, setUpdate_Crm_Opportunite_result] = useState();
function Update_Crm_Opportunite() {
const [Add_Update_Crm_Opportunite_api, setAdd_Update_Crm_Opportunite_api] = useState();
const [Add_Update_Crm_Opportunite_message, setAdd_Update_Crm_Opportunite_message] = useState();
const [Add_Update_Crm_Opportunite_result, setAdd_Update_Crm_Opportunite_result] = useState();
function Add_Update_Crm_Opportunite() {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
@ -618,7 +626,7 @@ const CRM_Opportunite = (props) => {
form.append("description", p_detail_description);
form.append("statut", p_detail_statut);
form.append("opport_id", selected_id);
if (p_detail_revenu_cible)
form.append("revenu_cible", p_detail_revenu_cible);
@ -683,17 +691,26 @@ const CRM_Opportunite = (props) => {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_CRM_Opportunite/";
var myurl = "";
if (selected_id && String(selected_id).length > 2) {
form.append("opport_id", selected_id);
myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_CRM_Opportunite/";
} else {
myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_CRM_Opportunite/";
}
console.log(" #### myurl = ", myurl)
setLoading(true);
axios.post(myurl, form).then(res => {
//console.log(" In Update_Crm_Opportunite res.data.status = " + res.data.status);
//console.log(" In Update_Crm_Opportunite res.data.message r_class = " + res.data.message);
//console.log(" In Add_Update_Crm_Opportunite res.data.status = " + res.data.status);
//console.log(" In Add_Update_Crm_Opportunite res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setUpdate_Crm_Opportunite_api("true");
setUpdate_Crm_Opportunite_result(res.data.message);
setAdd_Update_Crm_Opportunite_api("true");
setAdd_Update_Crm_Opportunite_result(res.data.message);
Getall_Partner_CRM_Opport_Step();
Getall_Partner_CRM_Opportunite();
@ -713,24 +730,24 @@ const CRM_Opportunite = (props) => {
}
else {
setUpdate_Crm_Opportunite_api("false");
setUpdate_Crm_Opportunite_message(res.data.message);
setAdd_Update_Crm_Opportunite_api("false");
setAdd_Update_Crm_Opportunite_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('UpdateStagiaireData : Not good man :( Update_Crm_Opportunite = ' + error);
setUpdate_Crm_Opportunite_api("false");
console.warn('UpdateStagiaireData : Not good man :( Add_Update_Crm_Opportunite = ' + error);
setAdd_Update_Crm_Opportunite_api("false");
alert(" Impossible de mettre à jour l'opportunité");
})
}
const [Update_Crm_Opportunite_Status_api, setUpdate_Crm_Opportunite_Status_api] = useState();
const [Update_Crm_Opportunite_Status_message, setUpdate_Crm_Opportunite_Status_message] = useState();
const [Update_Crm_Opportunite_Status_result, setUpdate_Crm_Opportunite_Status_result] = useState();
function Update_Crm_Opportunite_Status(local_opport_id, new_status) {
const [Add_Update_Crm_Opportunite_Status_api, setAdd_Update_Crm_Opportunite_Status_api] = useState();
const [Add_Update_Crm_Opportunite_Status_message, setAdd_Update_Crm_Opportunite_Status_message] = useState();
const [Add_Update_Crm_Opportunite_Status_result, setAdd_Update_Crm_Opportunite_Status_result] = useState();
function Add_Update_Crm_Opportunite_Status(local_opport_id, new_status) {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
@ -741,17 +758,17 @@ const CRM_Opportunite = (props) => {
form.append("opport_id", local_opport_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_CRM_Opportunite/";
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_Crm_Opportunite/";
setLoading(true);
axios.post(myurl, form).then(res => {
//console.log(" In Update_Crm_Opportunite_Status res.data.status = " + res.data.status);
//console.log(" In Update_Crm_Opportunite_Status res.data.message r_class = " + res.data.message);
//console.log(" In Add_Update_Crm_Opportunite_Status res.data.status = " + res.data.status);
//console.log(" In Add_Update_Crm_Opportunite_Status res.data.message r_class = " + res.data.message);
//setLoading(false);
if (String(res.data.status) === String("true")) {
setUpdate_Crm_Opportunite_Status_api("true");
setUpdate_Crm_Opportunite_Status_result(res.data.message);
setAdd_Update_Crm_Opportunite_Status_api("true");
setAdd_Update_Crm_Opportunite_Status_result(res.data.message);
Getall_Partner_CRM_Opport_Step();
Getall_Partner_CRM_Opportunite();
@ -764,15 +781,15 @@ const CRM_Opportunite = (props) => {
}
else {
setUpdate_Crm_Opportunite_Status_api("false");
setUpdate_Crm_Opportunite_Status_message(res.data.message);
setAdd_Update_Crm_Opportunite_Status_api("false");
setAdd_Update_Crm_Opportunite_Status_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
//setLoading(false);
console.warn('UpdateStagiaireData : Not good man :( Update_Crm_Opportunite_Status = ' + error);
setUpdate_Crm_Opportunite_Status_api("false");
console.warn('UpdateStagiaireData : Not good man :( Add_Update_Crm_Opportunite_Status = ' + error);
setAdd_Update_Crm_Opportunite_Status_api("false");
alert(" Impossible de mettre à jour l'opportunité");
})
@ -797,6 +814,85 @@ const CRM_Opportunite = (props) => {
}
const [New_Get_List_Partner_Clients_result, setNew_Get_List_Partner_Clients_result] = useState([]);
const [Get_List_Partner_Clients_api, setGet_List_Partner_Clients_api] = useState();
const [Get_List_Partner_Clients_message, setGet_List_Partner_Clients_message] = useState();
const [Get_List_Partner_Clients_result, setGet_List_Partner_Clients_result] = useState();
function Get_List_Partner_Clients(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Partner_List_Partner_Client/";
axios.post(myurl, form).then(res => {
//console.log(" In Get_List_Partner_Clients res.data.status = " + res.data.status);
//console.log(" In Get_List_Partner_Clients res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) {
setGet_List_Partner_Clients_api("true");
setGet_List_Partner_Clients_result(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var localid = JSON.parse(x).id;
var local_id = JSON.parse(x)._id;
var local_nom = JSON.parse(x).nom;
var local_raison_sociale = JSON.parse(x).raison_sociale;
var local_cond_paiement_id = JSON.parse(x).invoice_condition_paiement_id;
//---
var node = {
"_id": local_id,
"id": localid,
"label": local_nom,
"nom": local_nom,
"raison_sociale": local_raison_sociale,
"invoice_condition_paiement_id": local_cond_paiement_id,
};
new_data2.push(node);
});
if (new_data2.length > 0)
setNew_Get_List_Partner_Clients_result(new_data2);
var node = {
"_id": "",
"id": "",
"label": "",
"nom": "",
"raison_sociale": "",
"invoice_condition_paiement_id": "",
};
new_data2.push(node);
}
else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
history.push("/Connexion");
}
else {
setGet_List_Partner_Clients_api("false");
setGet_List_Partner_Clients_message(res.data.message);
alert('Erreur: ' + res.data.message);
}
}).catch((error) => {
console.warn('Not good man :( Get_List_Partner_Clients = ', error);
setGet_List_Partner_Clients_api("false");
alert('Erreur: Impossible de recuperer la liste des clients');
//setmyApimyApiMessage("")
})
}
const [Get_Given_Opportunite_Data_api, setGet_Given_Opportunite_Data_api] = useState();
const [Get_Given_Opportunite_Data_message, setGet_Given_Opportunite_Data_message] = useState();
const [Get_Given_Opportunite_Data_result, setGet_Given_Opportunite_Data_result] = useState();
@ -983,7 +1079,7 @@ const CRM_Opportunite = (props) => {
});
setTaskStatus(newTasks);
Update_Crm_Opportunite_Status(id, status);
Add_Update_Crm_Opportunite_Status(id, status);
},
[tasks]
@ -1011,6 +1107,24 @@ const CRM_Opportunite = (props) => {
{ "id": "", "label": "", "value": "" },
]
const New_Option_Civilite = [
{
value: 'M',
label: 'M',
},
{
value: 'Mme',
label: 'Mme',
},
{
value: 'Neutre',
label: 'Neutre',
},
{
value: '',
label: '',
},
];
const [opport_changed, setopport_changed] = useState("0");
@ -1024,6 +1138,14 @@ const CRM_Opportunite = (props) => {
}
function submenu_add_one_crm_opport() {
Getall_Partner_CRM_Opport_Step();
Getall_Partner_CRM_Opportunite();
clear_detail_fields();
setselected_id("");
setDialog_OPPORTUNITE_open(true);
}
return (
<div className="crm_opportunite">
@ -1085,10 +1207,148 @@ const CRM_Opportunite = (props) => {
</div>
<div className="session_caract_Dialog" > Client
{New_Get_List_Partner_Clients_result && New_Get_List_Partner_Clients_result.length > 0 &&
<Autocomplete
disablePortal
id="dialog_opport_ref_client"
Name="dialog_opport_ref_client"
className="disabled_style"
options={New_Get_List_Partner_Clients_result}
value={New_Get_List_Partner_Clients_result.filter((data) => (data)._id === String(p_detail_partner_client_id))[0].label}
onChange={(event, value) => {
if (value && value._id) {
setp_detail_partner_client_id(value._id);
setp_detail_contact_civilite("");
setp_detail_contact_nom("");
setp_detail_contact_email("");
setp_detail_contact_telephone("")
} else {
setp_detail_partner_client_id("");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>}
</div>
{String(p_detail_partner_client_id).length < 2 &&
<div className="session_caract_Dialog" > Civilité
<Autocomplete
disablePortal
name="dialog_opport_nom_contact"
id="dialog_opport_nom_contact"
className="disabled_style"
options={New_Option_Civilite}
value={New_Option_Civilite.filter((data) => (data).value === String(p_detail_contact_civilite))[0].label}
onChange={(event, value) => {
if (value && value.value) {
setp_detail_contact_civilite(value.value);
setopport_changed("1");
} else {
setp_detail_contact_civilite("");
setopport_changed("1");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
</div>
}
{String(p_detail_partner_client_id).length < 2 &&
<div className="session_caract_Dialog" > Nom Contact
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="dialog_opport_nom_contact"
id="dialog_opport_nom_contact"
className="disabled_style"
value={p_detail_contact_nom}
onChange={(e) => {
setp_detail_contact_nom(e.target.value);
setopport_changed("1");
}
}
/>
</div>
}
{String(p_detail_partner_client_id).length < 2 &&
<div className="session_caract_Dialog" > Email Contact
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="dialog_opport_nom_contact"
id="dialog_opport_nom_contact"
className="disabled_style"
value={p_detail_contact_email}
onChange={(e) => {
setp_detail_contact_email(e.target.value);
setopport_changed("1");
}
}
/>
</div>
}
{String(p_detail_partner_client_id).length < 2 &&
<div className="session_caract_Dialog" > Téléphone Contact
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="dialog_opport_nom_contact"
id="dialog_opport_nom_contact"
className="disabled_style"
value={p_detail_contact_telephone}
onChange={(e) => {
setp_detail_contact_telephone(e.target.value);
setopport_changed("1");
}
}
/>
</div>
}
<div className="session_caract_Dialog" > Statut<br />
{New_Option_Status && New_Option_Status.length > 0 &&
p_detail_statut && String(p_detail_statut).length > 2 && <Autocomplete
<Autocomplete
disablePortal
name="dialog_opport_status"
id="dialog_opport_status"
@ -1226,16 +1486,26 @@ const CRM_Opportunite = (props) => {
<DialogActions>
<div className="div_row">
<div className="div_row_gauche">
<Button onClick={(e) => {
Update_Crm_Opportunite();
{selected_id && String(selected_id).length > 2 && <Button onClick={(e) => {
Add_Update_Crm_Opportunite();
Dialog_OPPORTUNITE_handleClose_buton();
}}
className="bton_enreg_dialog">Mettre à jour </Button>
className="bton_enreg_dialog">Mettre à jour </Button>}
{String(selected_id).length < 2 && <Button onClick={(e) => {
Add_Update_Crm_Opportunite();
Dialog_OPPORTUNITE_handleClose_buton();
}}
className="bton_enreg_dialog">Ajouter </Button>}
</div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
<Button onClick={Dialog_OPPORTUNITE_handleClose_buton} className="bton_annule_dialog" >Fermer</Button>
</div>
@ -1254,7 +1524,8 @@ const CRM_Opportunite = (props) => {
</div>
{String(display_view) === "list" && <div className="div_row">
{
String(display_view) === "list" && <div className="div_row">
<div className="session_data">
<div style={{ "border": "None" }}>
@ -1460,11 +1731,13 @@ const CRM_Opportunite = (props) => {
<div className="div_row"> &nbsp;</div>
</div>}
</div>
}
<div className="div_row" ref={myRef} id="myRef"> &nbsp; </div>
{String(display_view) !== "list" && <div className="div_row"> &nbsp; Affichage Kanban
{
String(display_view) !== "list" && <div className="div_row"> &nbsp; Affichage Kanban
<DndProvider backend={HTML5Backend}>
<section style={classes.board}>
{Opportunite_chanel.map(channel => (
@ -1522,7 +1795,7 @@ const CRM_Opportunite = (props) => {
}
<Button variant="outlined" onClick={"submenu_add_one_materiel"}
<Button variant="outlined" onClick={submenu_add_one_crm_opport}
className="detail_class_submenu bton_add_session"
id='menu_import_participant' name='menu_import_participant'>Ajout 1 Opportunités &nbsp;
<IoAddCircleOutline style={{ "fontSize": "x-large", "color": "green" }} />
@ -1540,7 +1813,8 @@ const CRM_Opportunite = (props) => {
</div>
<div className="div_row"> &nbsp;</div>
</div>}
</div>
}
</div >
);
}