recette2
cherif 2024-08-30 16:03:40 +02:00
parent 35bc46c538
commit c42967c630
6 changed files with 790 additions and 111 deletions

View File

@ -54,6 +54,9 @@ const AddParnerClient = (props) => {
const [p_client_type_id, setp_client_type_id] = useState(""); const [p_client_type_id, setp_client_type_id] = useState("");
const [p_client_type_label, setp_client_type_label] = useState(""); const [p_client_type_label, setp_client_type_label] = useState("");
const [p_client_type_financeur, setp_client_type_financeur] = useState("");
const [p_client_type_pouvoir_public, setp_client_type_pouvoir_public] = useState("");
const [p_client_raison_sociale, setclient_raison_sociale] = useState(""); const [p_client_raison_sociale, setclient_raison_sociale] = useState("");
const [p_client_is_company, setp_client_is_company] = useState(""); const [p_client_is_company, setp_client_is_company] = useState("");
@ -630,6 +633,8 @@ const AddParnerClient = (props) => {
Get_List_Client_Type(); Get_List_Client_Type();
Getall_Partner_Paiement_Condition(); Getall_Partner_Paiement_Condition();
Get_List_Of_All_PJ(props.client_id); Get_List_Of_All_PJ(props.client_id);
Get_List_Type_Financeur();
Get_List_Type_Pouvoir_Public();
if (String(props.new_customer) !== "1") { if (String(props.new_customer) !== "1") {
setformedit_mode("0"); setformedit_mode("0");
@ -656,7 +661,7 @@ const AddParnerClient = (props) => {
const [has_client_invoice_email, sethas_client_invoice_email] = useState(); const [has_client_invoice_email, sethas_client_invoice_email] = useState();
const [fillfield_api, setfillfield_api] = useState(""); const [fillfield_api, setfillfield_api] = useState("");
const [fillfield_result, setfillfield_result] = useState(""); const [fillfield_result, setfillfield_result] = useState("");
const [fillfield_message, setfillfield_message] = useState(""); const [fillfield_message, setfillfield_message] = useState("");
@ -763,6 +768,22 @@ const AddParnerClient = (props) => {
else else
setclient_tva(""); setclient_tva("");
if (mylocalclient.type_financeur_id)
setp_client_type_financeur(mylocalclient.type_financeur_id);
else
setp_client_type_financeur("");
if (mylocalclient.type_pouvoir_public_id)
setp_client_type_pouvoir_public(mylocalclient.type_pouvoir_public_id);
else
setp_client_type_pouvoir_public("");
if (mylocalclient.website) if (mylocalclient.website)
setclient_website(mylocalclient.website); setclient_website(mylocalclient.website);
else else
@ -776,7 +797,7 @@ const AddParnerClient = (props) => {
// Remplissage des doonées de facturation // Remplissage des doonées de facturation
if (mylocalclient.invoice_email) if (mylocalclient.invoice_email)
setclient_invoice_email(mylocalclient.invoice_email); setclient_invoice_email(mylocalclient.invoice_email);
else{ else {
setclient_invoice_email(""); setclient_invoice_email("");
sethas_client_invoice_email("0"); sethas_client_invoice_email("0");
} }
@ -804,7 +825,7 @@ const AddParnerClient = (props) => {
if (mylocalclient.invoice_condition_paiement_id) if (mylocalclient.invoice_condition_paiement_id)
setp_client_invoice_paiement_condition_id(mylocalclient.invoice_condition_paiement_id); setp_client_invoice_paiement_condition_id(mylocalclient.invoice_condition_paiement_id);
else{ else {
setp_client_invoice_paiement_condition_id(""); setp_client_invoice_paiement_condition_id("");
sethas_client_invoice_email("0"); sethas_client_invoice_email("0");
} }
@ -1161,6 +1182,14 @@ const AddParnerClient = (props) => {
document.getElementsByName("client_type_id")[0].value = ""; document.getElementsByName("client_type_id")[0].value = "";
} }
if (document.getElementsByName("client_type_financeur_id") && document.getElementsByName("client_type_financeur_id")[0]) {
document.getElementsByName("client_type_financeur_id")[0].value = "";
}
if (document.getElementsByName("client_type_pouvoir_public_id") && document.getElementsByName("client_type_pouvoir_public_id")[0]) {
document.getElementsByName("client_type_pouvoir_public_id")[0].value = "";
}
if (document.getElementsByName("client_tva")) { if (document.getElementsByName("client_tva")) {
@ -1227,6 +1256,19 @@ const AddParnerClient = (props) => {
document.getElementsByName("client_type_id")[0].style.backgroundColor = "#ECEFF1"; document.getElementsByName("client_type_id")[0].style.backgroundColor = "#ECEFF1";
} }
if (document.getElementsByName("client_type_financeur_id") && document.getElementsByName("client_type_financeur_id")[0]) {
document.getElementsByName("client_type_financeur_id")[0].disabled = true;
document.getElementsByName("client_type_financeur_id")[0].style.backgroundColor = "#ECEFF1";
}
if (document.getElementsByName("client_type_pouvoir_public_id") && document.getElementsByName("client_type_pouvoir_public_id")[0]) {
document.getElementsByName("client_type_pouvoir_public_id")[0].disabled = true;
document.getElementsByName("client_type_pouvoir_public_id")[0].style.backgroundColor = "#ECEFF1";
}
if (document.getElementsByName("client_tva") && document.getElementsByName("client_tva")[0]) { if (document.getElementsByName("client_tva") && document.getElementsByName("client_tva")[0]) {
document.getElementsByName("client_tva")[0].disabled = true; document.getElementsByName("client_tva")[0].disabled = true;
document.getElementsByName("client_tva")[0].style.backgroundColor = "#ECEFF1"; document.getElementsByName("client_tva")[0].style.backgroundColor = "#ECEFF1";
@ -1297,6 +1339,19 @@ const AddParnerClient = (props) => {
document.getElementsByName("client_type_id")[0].style.backgroundColor = "#FFFFFF"; document.getElementsByName("client_type_id")[0].style.backgroundColor = "#FFFFFF";
} }
if (document.getElementsByName("client_type_financeur_id") && document.getElementsByName("client_type_financeur_id")[0]) {
document.getElementsByName("client_type_financeur_id")[0].disabled = false;
document.getElementsByName("client_type_financeur_id")[0].style.backgroundColor = "#FFFFFF";
}
if (document.getElementsByName("client_type_pouvoir_public_id") && document.getElementsByName("client_type_pouvoir_public_id")[0]) {
document.getElementsByName("client_type_pouvoir_public_id")[0].disabled = false;
document.getElementsByName("client_type_pouvoir_public_id")[0].style.backgroundColor = "#FFFFFF";
}
if (document.getElementsByName("client_tva")) { if (document.getElementsByName("client_tva")) {
document.getElementsByName("client_tva")[0].disabled = false; document.getElementsByName("client_tva")[0].disabled = false;
document.getElementsByName("client_tva")[0].style.backgroundColor = "#FFFFFF"; document.getElementsByName("client_tva")[0].style.backgroundColor = "#FFFFFF";
@ -1587,6 +1642,9 @@ const AddParnerClient = (props) => {
form.append("is_client", "0"); form.append("is_client", "0");
form.append("invoice_automatique", p_detail_facturation_automatique); form.append("invoice_automatique", p_detail_facturation_automatique);
form.append("type_financeur_id", p_client_type_financeur);
form.append("type_pouvoir_public_id", p_client_type_pouvoir_public);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Partner_Client/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Partner_Client/";
@ -1757,6 +1815,11 @@ const AddParnerClient = (props) => {
form.append("is_client", "0"); form.append("is_client", "0");
form.append("type_financeur_id", p_client_type_financeur);
form.append("type_pouvoir_public_id", p_client_type_pouvoir_public);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_Partner_Client/"; var myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_Partner_Client/";
axios.post(myurl, form).then(res => { axios.post(myurl, form).then(res => {
@ -1813,23 +1876,23 @@ const AddParnerClient = (props) => {
form.append("email", p_client_email); form.append("email", p_client_email);
form.append("nom", p_client_nom); form.append("nom", p_client_nom);
// Données de facturation // Données de facturation
var client_invoice_email = p_client_invoice_email var client_invoice_email = p_client_invoice_email
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/; var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
if (String(client_invoice_email) === "" || !client_invoice_email.match(validRegex) ) { if (String(client_invoice_email) === "" || !client_invoice_email.match(validRegex)) {
alert("L'adresse email de facturation est invalide."); alert("L'adresse email de facturation est invalide.");
return; return;
} }
if( String(p_client_invoice_paiement_condition_id).trim() === ""){ if (String(p_client_invoice_paiement_condition_id).trim() === "") {
alert(" Vous devez choisir une condition de paiement"); alert(" Vous devez choisir une condition de paiement");
return; return;
} }
form.append("invoice_email", client_invoice_email); form.append("invoice_email", client_invoice_email);
var client_invoice_nom = p_client_invoice_nom; var client_invoice_nom = p_client_invoice_nom;
@ -1838,21 +1901,21 @@ const AddParnerClient = (props) => {
var client_invoice_siret = p_client_invoice_siret; var client_invoice_siret = p_client_invoice_siret;
form.append("invoice_siret", client_invoice_siret); form.append("invoice_siret", client_invoice_siret);
var client_invoice_tva = p_client_invoice_tva; var client_invoice_tva = p_client_invoice_tva;
form.append("invoice_tva", client_invoice_tva); form.append("invoice_tva", client_invoice_tva);
form.append("invoice_condition_paiement_id", p_client_invoice_paiement_condition_id); form.append("invoice_condition_paiement_id", p_client_invoice_paiement_condition_id);
var client_invoice_adresse = p_client_invoice_adresse; var client_invoice_adresse = p_client_invoice_adresse;
form.append("invoice_adresse", client_invoice_adresse); form.append("invoice_adresse", client_invoice_adresse);
var client_invoice_ville = p_client_invoice_ville; var client_invoice_ville = p_client_invoice_ville;
@ -1861,7 +1924,7 @@ const AddParnerClient = (props) => {
var client_invoice_code_postal = p_client_invoice_code_postal; var client_invoice_code_postal = p_client_invoice_code_postal;
form.append("invoice_code_postal", client_invoice_code_postal); form.append("invoice_code_postal", client_invoice_code_postal);
@ -1889,7 +1952,7 @@ const AddParnerClient = (props) => {
alert(" Les données de facturation ont été mises à jour.") alert(" Les données de facturation ont été mises à jour.")
Disable_invoice_fields(); Disable_invoice_fields();
sethas_client_invoice_email(""); sethas_client_invoice_email("");
alert(res.data.message); alert(res.data.message);
} }
@ -2704,7 +2767,7 @@ const AddParnerClient = (props) => {
} }
if (file_1_name && file_1_name.name) { if (file_1_name && file_1_name.name) {
console.log(" ### Traitement de : ", file_1_name.name);
const formData = new FormData(); const formData = new FormData();
formData.append('File', file_1_name); formData.append('File', file_1_name);
@ -2880,8 +2943,142 @@ const AddParnerClient = (props) => {
// -- end gestion pièces jointes // -- end gestion pièces jointes
const [New_Get_List_Type_Financeur_result, setNew_Get_List_Type_Financeur_result] = useState([]);
const [Get_List_Type_Financeur_api, setGet_List_Type_Financeur_api] = useState();
const [Get_List_Type_Financeur_message, setGet_List_Type_Financeur_message] = useState();
const [Get_List_Type_Financeur_result, setGet_List_Type_Financeur_result] = useState();
function Get_List_Type_Financeur() {
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_List_Type_Organisme_Financement/";
axios.post(myurl, form).then(res => {
if (String(res.data.status) === "true") {
//console.log(" In Get_List_Type_Financeur res.data.status = " + res.data.status);
//console.log(" In Get_List_Type_Financeur res.data.message r_class = " + res.data.message);
setGet_List_Type_Financeur_api("true");
setGet_List_Type_Financeur_result(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var _id = JSON.parse(x)._id;
var code = JSON.parse(x).code;
var description = JSON.parse(x).description;
//---
var node = {
"_id": _id,
"code": code,
"description": description,
"label": code,
};
//console.log(" --- node = ", node);
new_data2.push(node);
});
var node = {
"_id": "",
"code": "",
"description": "",
"label": "",
};
//console.log(" --- node = ", node);
new_data2.push(node);
if (new_data2.length > 0)
setNew_Get_List_Type_Financeur_result(new_data2);
}
else {
setGet_List_Type_Financeur_api("false");
setGet_List_Type_Financeur_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
console.warn('Not good man :( Get_List_Type_Financeur = ', error);
setGet_List_Type_Financeur_api("false");
alert(" Impossible de recuperer Get_List_Type_Financeur");
//setmyApimyApiMessage("")
})
}
const [New_Get_List_Type_Pouvoir_Public_result, setNew_Get_List_Type_Pouvoir_Public_result] = useState([]);
const [Get_List_Type_Pouvoir_Public_api, setGet_List_Type_Pouvoir_Public_api] = useState();
const [Get_List_Type_Pouvoir_Public_message, setGet_List_Type_Pouvoir_Public_message] = useState();
const [Get_List_Type_Pouvoir_Public_result, setGet_List_Type_Pouvoir_Public_result] = useState();
function Get_List_Type_Pouvoir_Public() {
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_List_Type_Pouvoir_Public/";
axios.post(myurl, form).then(res => {
if (String(res.data.status) === "true") {
//console.log(" In Get_List_Type_Pouvoir_Public res.data.status = " + res.data.status);
//console.log(" In Get_List_Type_Pouvoir_Public res.data.message r_class = " + res.data.message);
setGet_List_Type_Pouvoir_Public_api("true");
setGet_List_Type_Pouvoir_Public_result(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var _id = JSON.parse(x)._id;
var code = JSON.parse(x).code;
var description = JSON.parse(x).description;
//---
var node = {
"_id": _id,
"code": code,
"description": description,
"label": code + " - " + description,
};
//console.log(" --- node = ", node);
new_data2.push(node);
});
var node = {
"_id": "",
"code": "",
"description": "",
"label": "",
};
//console.log(" --- node = ", node);
new_data2.push(node);
if (new_data2.length > 0)
setNew_Get_List_Type_Pouvoir_Public_result(new_data2);
}
else {
setGet_List_Type_Pouvoir_Public_api("false");
setGet_List_Type_Pouvoir_Public_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
console.warn('Not good man :( Get_List_Type_Pouvoir_Public = ', error);
setGet_List_Type_Pouvoir_Public_api("false");
alert(" Impossible de recuperer Get_List_Type_Pouvoir_Public");
//setmyApimyApiMessage("")
})
}
return ( return (
<div className="add_partner_client"> <div className="add_partner_client">
@ -2910,7 +3107,7 @@ const AddParnerClient = (props) => {
}, },
}} }}
/>&nbsp;Société &nbsp;&nbsp; &nbsp;&nbsp; />&nbsp;Société &nbsp;
<Radio <Radio
checked={p_client_is_company === '0'} checked={p_client_is_company === '0'}
@ -2923,6 +3120,17 @@ const AddParnerClient = (props) => {
inputProps={{ 'aria-label': 'B' }} inputProps={{ 'aria-label': 'B' }}
/> &nbsp; Particulier /> &nbsp; Particulier
<Radio
checked={p_client_is_company === '2'}
onChange={(e) => {
DataEditMode();
setp_client_is_company('2');
}}
value="2"
name="radio-buttons"
inputProps={{ 'aria-label': 'C' }}
/> &nbsp; P. Public
</nav> </nav>
</div> </div>
@ -2971,6 +3179,8 @@ const AddParnerClient = (props) => {
if (value && value._id) { if (value && value._id) {
setp_client_type_id(value._id); setp_client_type_id(value._id);
} else {
setp_client_type_id("");
} }
}} }}
//value={p_one_detail_client_rattachement_nom} //value={p_one_detail_client_rattachement_nom}
@ -2983,39 +3193,71 @@ const AddParnerClient = (props) => {
/> />
{/* <TextField
required
name="client_type_id"
id="client_type_id"
select
//label="Raison sociale"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_client_type_id}
onChange={(e) => {
setp_client_type_id(e.target.value);
}}
>
<MenuItem key="" value="" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>
&nbsp;
</MenuItem>
{Get_List_Client_Type_result &&
Get_List_Client_Type_result.map((myclass) => (
<MenuItem key={JSON.parse(myclass)._id} value={JSON.parse(myclass)._id} style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>
{JSON.parse(myclass).code}
</MenuItem>
))}
</TextField>*/}
</div> </div>
{p_client_is_financeur === true && <div className="session_caract"> Type Financeur <br />
<Autocomplete
disablePortal
name="client_type_financeur_id"
id="client_type_financeur_id"
className="disabled_style"
options={New_Get_List_Type_Financeur_result}
onChange={(event, value) => {
if (value && value._id) {
setp_client_type_financeur(value._id);
} else {
setp_client_type_financeur("");
}
}}
//value={p_one_detail_client_rattachement_nom}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
</div>}
{p_client_is_company && String(p_client_is_company) === "2" && <div className="session_caract"> Type P. Public <br />
<Autocomplete
disablePortal
name="client_type_pouvoir_public_id"
id="client_type_pouvoir_public_id"
className="disabled_style"
options={New_Get_List_Type_Pouvoir_Public_result}
onChange={(event, value) => {
if (value && value._id) {
setp_client_type_pouvoir_public(value._id);
} else {
setp_client_type_pouvoir_public("");
}
}}
//value={p_one_detail_client_rattachement_nom}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
</div>}
<div className="session_caract"> N° Siret <br /> <div className="session_caract"> N° Siret <br />
<TextField <TextField
required required
@ -3292,10 +3534,10 @@ const AddParnerClient = (props) => {
<Button variant="outlined" onClick={submenu_donnee_client} className="detail_submenu client_menu" id='submenu_donnee_client' name='submenu_donnee_client'>Données Principales</Button> <Button variant="outlined" onClick={submenu_donnee_client} className="detail_submenu client_menu" id='submenu_donnee_client' name='submenu_donnee_client'>Données Principales</Button>
<Button variant="outlined" onClick={submenu_donnee_facturation} className="detail_submenu client_menu" id='submenu_donnee_facturation' name='submenu_donnee_facturation'>Données Facturation &nbsp; <Button variant="outlined" onClick={submenu_donnee_facturation} className="detail_submenu client_menu" id='submenu_donnee_facturation' name='submenu_donnee_facturation'>Données Facturation &nbsp;
{has_client_invoice_email && String(has_client_invoice_email) === "0" && <nav> {has_client_invoice_email && String(has_client_invoice_email) === "0" && <nav>
<Tooltip className="tooltip_css" id="warn_invoice_data" style={{ "fontSize": "10px" }} /> <Tooltip className="tooltip_css" id="warn_invoice_data" style={{ "fontSize": "10px" }} />
<a data-tooltip-id="warn_invoice_data" data-tooltip-html="Les données de facturation sont incompletes "> <a data-tooltip-id="warn_invoice_data" data-tooltip-html="Les données de facturation sont incompletes ">
<WarningAmberIcon style={{ color: 'red', fontSize:"12px" }} /> <WarningAmberIcon style={{ color: 'red', fontSize: "12px" }} />
</a> </a>
</nav>} </nav>}
@ -3304,7 +3546,7 @@ const AddParnerClient = (props) => {
{client_has_communication_contact && String(client_has_communication_contact) === "0" && <nav> {client_has_communication_contact && String(client_has_communication_contact) === "0" && <nav>
<Tooltip className="tooltip_css" id="warn_com_contact" style={{ "fontSize": "10px" }} /> <Tooltip className="tooltip_css" id="warn_com_contact" style={{ "fontSize": "10px" }} />
<a data-tooltip-id="warn_com_contact" data-tooltip-html="Aucun contact de communication "> <a data-tooltip-id="warn_com_contact" data-tooltip-html="Aucun contact de communication ">
<WarningAmberIcon style={{ color: 'red', fontSize:"12px" }} /> <WarningAmberIcon style={{ color: 'red', fontSize: "12px" }} />
</a> </a>
</nav>} </nav>}
@ -3341,7 +3583,8 @@ const AddParnerClient = (props) => {
}, },
}} }}
/>&nbsp;Société &nbsp;&nbsp; &nbsp;&nbsp; />&nbsp;Société &nbsp;
<Radio <Radio
checked={p_client_is_company === '0'} checked={p_client_is_company === '0'}
@ -3354,6 +3597,18 @@ const AddParnerClient = (props) => {
inputProps={{ 'aria-label': 'B' }} inputProps={{ 'aria-label': 'B' }}
/> &nbsp; Particulier /> &nbsp; Particulier
<Radio
checked={p_client_is_company === '2'}
onChange={(e) => {
DataEditMode();
setp_client_is_company('2');
}}
value="2"
name="radio-buttons"
inputProps={{ 'aria-label': 'C' }}
/> &nbsp; P. Public
</nav> </nav>
</div> </div>
@ -3406,6 +3661,39 @@ const AddParnerClient = (props) => {
/> />
</div>} </div>}
{String(formedit_mode) !== "1" && p_client_is_financeur === true &&
New_Get_List_Type_Financeur_result && New_Get_List_Type_Financeur_result.length > 1 && <div className="session_caract"> Type Financeur<br />
<TextField
required
name="client_type_financeur_id"
id="client_type_financeur_id"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={New_Get_List_Type_Financeur_result.filter((data) => (data)._id === String(p_client_type_financeur))[0].label}
/>
</div>}
{String(formedit_mode) !== "1" && p_client_is_company && String(p_client_is_company) === "2" &&
New_Get_List_Type_Pouvoir_Public_result && New_Get_List_Type_Pouvoir_Public_result.length > 1 && <div className="session_caract"> Type P. Public <br />
<TextField
required
name="client_type_pouvoir_public_id"
id="client_type_pouvoir_public_id"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={New_Get_List_Type_Pouvoir_Public_result.filter((data) => (data)._id === String(p_client_type_pouvoir_public))[0].code}
/>
</div>}
{New_Get_List_Client_Type_result && New_Get_List_Client_Type_result.length > 1 && {New_Get_List_Client_Type_result && New_Get_List_Client_Type_result.length > 1 &&
String(formedit_mode) === "1" && <div className="session_caract"> Type client <br /> String(formedit_mode) === "1" && <div className="session_caract"> Type client <br />
@ -3433,34 +3721,66 @@ const AddParnerClient = (props) => {
/> />
} }
/> />
{/*<TextField
required
name="client_type_id"
id="client_type_id"
select
//label="Raison sociale"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_client_type_id}
onChange={(e) => { </div>}
setp_client_type_id(e.target.value);
}}
>
{Get_List_Client_Type_result && {p_client_is_financeur === true && New_Get_List_Type_Financeur_result && New_Get_List_Type_Financeur_result.length > 1 &&
Get_List_Client_Type_result.map((myclass) => ( String(formedit_mode) === "1" && <div className="session_caract"> Type Financeur <br />
<MenuItem key={JSON.parse(myclass)._id} value={JSON.parse(myclass)._id} style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}> <Autocomplete
{JSON.parse(myclass).code} disablePortal
name="client_type_financeur_id"
id="client_type_financeur_id"
className="disabled_style"
options={New_Get_List_Type_Financeur_result}
value={New_Get_List_Type_Financeur_result.filter((data) => (data)._id === String(p_client_type_financeur))[0].label}
</MenuItem> onChange={(event, value) => {
))} if (value && value._id) {
setp_client_type_financeur(value._id);
DataUpdated();
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
</div>}
{p_client_is_company && String(p_client_is_company) === "2" && New_Get_List_Type_Pouvoir_Public_result && New_Get_List_Type_Pouvoir_Public_result.length > 1 &&
String(formedit_mode) === "1" && <div className="session_caract"> Type P. Public <br />
<Autocomplete
disablePortal
name="client_type_pouvoir_public_id"
id="client_type_pouvoir_public_id"
className="disabled_style"
options={New_Get_List_Type_Pouvoir_Public_result}
value={New_Get_List_Type_Pouvoir_Public_result.filter((data) => (data)._id === String(p_client_type_pouvoir_public))[0].label}
onChange={(event, value) => {
if (value && value._id) {
setp_client_type_pouvoir_public(value._id);
DataUpdated();
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
</TextField>*/}
</div>} </div>}

View File

@ -7253,32 +7253,6 @@ const Employes = (props) => {
<DialogContent className="DialogContent_width"> <DialogContent className="DialogContent_width">
<div className="session_caract_Dialog" > <b>Type de contrat </b> <div className="session_caract_Dialog" > <b>Type de contrat </b>
{/*p_employe_contrat_type_contrat && <Autocomplete
disablePortal
name="event_dialog_code_groupe_prix"
id="event_dialog_code_groupe_prix"
fullWidth
//className="disabled_style enable_style"
options={New_Getall_Employee_Type_Contrat_result}
value={New_Getall_Employee_Type_Contrat_result.filter((data) => (data).code === String(p_employe_contrat_type_contrat))[0].label}
onChange={(event, value) => {
if (value && value.code) {
setp_employe_contrat_type_contrat(value.code);
setdialog_contrat_data_changed("1");
var result2 = Getall_Employee_Type_Contrat_result.filter((val) => JSON.parse(val).code === String(value.code));
settype_contrat_qte(JSON.parse(result2[0]).quantitatif);
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps = {{...params.inputProps, style: { fontSize: 12, height:"1.4rem" }}}
/>
}
/>*/}
<TextField <TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }} sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}

View File

@ -254,9 +254,15 @@ const Mon_Tableau_De_Bord = (props) => {
submenu_color_management("rapport_rh"); submenu_color_management("rapport_rh");
} }
function submenu_bpf() {
setsubmenu("bpf");
submenu_color_management("bpf");
}
function submenu_color_management(current_menu) { function submenu_color_management(current_menu) {
const list_sous_menu = ["montbd", "rapport_activite", "rapport_financier", "rapport_rh"] const list_sous_menu = ["montbd", "rapport_activite", "rapport_financier", "rapport_rh", "bpf"]
for (let i = 0; i < list_sous_menu.length; i++) { for (let i = 0; i < list_sous_menu.length; i++) {
@ -1041,8 +1047,67 @@ const Mon_Tableau_De_Bord = (props) => {
} }
/********* GESTION BPF */
const [Getall_Qry_BPF_PAVE_Data_result_JSON, setGetall_Qry_BPF_PAVE_Data_result_JSON] = useState();
const [Getall_Qry_BPF_PAVE_Data_api, setGetall_Qry_BPF_PAVE_Data_api] = useState();
const [Getall_Qry_BPF_PAVE_Data_message, setGetall_Qry_BPF_PAVE_Data_message] = useState();
const [Getall_Qry_BPF_PAVE_Data_result, setGetall_Qry_BPF_PAVE_Data_result] = useState([]);
function Getall_Qry_BPF_PAVE_Data(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
var date_from = "";
if (p_filter_date_from) {
date_from = p_filter_date_from;
}
var date_to = "";
if (p_filter_date_to) {
date_to = p_filter_date_to;
}
form.append("token", stored_cookie);
form.append("periode_start_date", date_from);
form.append("periode_end_date", date_to);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Qery_Generate_BPF_From_partner_invoice_header/";
//console.log(" ### form = ", form);
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_Qry_BPF_PAVE_Data res.data.status = " + res.data.status);
// console.log(" In Getall_Qry_BPF_PAVE_Data res.data.message r_class = " + res.data.message);
setGetall_Qry_BPF_PAVE_Data_result_JSON(JSON.parse(res.data.message));
setGetall_Qry_BPF_PAVE_Data_api("true");
setGetall_Qry_BPF_PAVE_Data_result(res.data.message);
}
else {
setGetall_Qry_BPF_PAVE_Data_api("false");
setGetall_Qry_BPF_PAVE_Data_message(res.data.message);
alert(res.data.message)
}
}).catch((error) => {
setLoading(false);
console.warn('Not good man :( Getall_Qry_BPF_PAVE_Data = ', error);
setGetall_Qry_BPF_PAVE_Data_api("false");
alert("Impossible de récuperer les données demandées")
//setmyApimyApiMessage("")
})
}
/****** FIN GESTION BPF */
return ( return (
<div className="mon_tableau_de_bord"> <div className="mon_tableau_de_bord">
{isLoading && <div className="loader-container"> {isLoading && <div className="loader-container">
@ -1055,6 +1120,7 @@ const Mon_Tableau_De_Bord = (props) => {
<Button variant="outlined" onClick={submenu_rapport_activite} className="detail_class_submenu" id='rapport_activite' name='rapport_activite' >Rapport Activite </Button> <Button variant="outlined" onClick={submenu_rapport_activite} className="detail_class_submenu" id='rapport_activite' name='rapport_activite' >Rapport Activite </Button>
<Button variant="outlined" onClick={submenu_rapport_financier} className="detail_class_submenu" id='rapport_financier' name='rapport_financier' >Rapports Financiers </Button> <Button variant="outlined" onClick={submenu_rapport_financier} className="detail_class_submenu" id='rapport_financier' name='rapport_financier' >Rapports Financiers </Button>
<Button variant="outlined" onClick={submenu_rapport_rh} className="detail_class_submenu" id='rapport_rh' name='rapport_rh' >Ressources Humaine </Button> <Button variant="outlined" onClick={submenu_rapport_rh} className="detail_class_submenu" id='rapport_rh' name='rapport_rh' >Ressources Humaine </Button>
<Button variant="outlined" onClick={submenu_bpf} className="detail_class_submenu" id='bpf' name='bpf' > Bilan Péd. Fin. (BPF) </Button>
</div> </div>
@ -1162,6 +1228,12 @@ const Mon_Tableau_De_Bord = (props) => {
Getall_Qry_RH_Task_Cost_Data(); Getall_Qry_RH_Task_Cost_Data();
} }
// Recuperation des rapports ressources humaines
if (String(submenu) === "bpf") {
Getall_Qry_BPF_PAVE_Data();
}
}}> Afficher }}> Afficher
</Button><br /> </Button><br />
@ -1881,6 +1953,311 @@ const Mon_Tableau_De_Bord = (props) => {
</div>} </div>}
{String(submenu) === String("bpf") && <div style={{ "border": "None" }}>
<h3> Bilan Pédagogique et Financier (BPF) </h3>
<div className="titre1"> C. Bilan financier hors taxes : Origine des produits de l'organisme </div>
<div className="div_row">
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '70%', "float": "left" }}>
Produits provenant :
</div>
<div style={{ "width": '25%', "float": "right", textAlign: "right", paddingRight: "25px" }}>
&nbsp;
</div>
</div>
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '70%', "float": "left", "fontWeight": "600" }}>
- des entreprises pour la formation de leurs salariés :
</div>
<div style={{ "width": '25%', "float": "right", textAlign: "right", paddingRight: "15px", "fontWeight": "600" }}>
{Getall_Qry_BPF_PAVE_Data_result_JSON && Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_c1_entreprise && <nav>
{Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_c1_entreprise[0].bpf_c1_entreprise}
</nav>}
</div>
</div>
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '70%', "float": "left" }}>
- des organismes gestionnaires des fonds de la formation professionnelle pour des actions dispensées dans le cadre :
</div>
<div style={{ "width": '25%', "float": "right", textAlign: "right", paddingRight: "25px" }}>
&nbsp;
</div>
</div>
<br />
{Getall_Qry_BPF_PAVE_Data_result_JSON && Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_c2_type_apprenant &&
Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_c2_type_apprenant.length > 0 && Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_c2_type_apprenant.map((my_bpf_c2_data) => (
<div className="div_row">
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '70%', "float": "left", "paddingLeft": "3rem", "fontWeight": "600" }}>
<nav>
{my_bpf_c2_data.Type_Apprenant_Desc}
</nav>
</div>
<div style={{ "width": '25%', "float": "right", textAlign: "right", paddingRight: "25px", "fontWeight": "600" }}>
<nav>
{my_bpf_c2_data.TotalAmount_HT}
</nav>
</div>
</div>
</div>))}
<br />
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '70%', "float": "left", "fontWeight": "600" }}>
- Total des produits provenant des organismes gestionnaires des fonds de la formation :
</div>
<div style={{ "width": '25%', "float": "right", textAlign: "right", paddingRight: "15px", "fontWeight": "600" }}>
{Getall_Qry_BPF_PAVE_Data_result_JSON && Getall_Qry_BPF_PAVE_Data_result_JSON.total_bpf_c_type_apprenant && <nav>
{Getall_Qry_BPF_PAVE_Data_result_JSON.total_bpf_c_type_apprenant}
</nav>}
</div>
</div>
<br />
<br />
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '70%', "float": "left" }}>
Des pouvoirs publics :
</div>
<div style={{ "width": '25%', "float": "right", textAlign: "right", paddingRight: "25px" }}>
&nbsp;
</div>
</div>
{Getall_Qry_BPF_PAVE_Data_result_JSON && Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_c3_c8_type_pouvoir_public &&
Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_c3_c8_type_pouvoir_public.length > 0 && Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_c3_c8_type_pouvoir_public.map((my_bpf_c3_c8_data) => (
<div className="div_row">
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '70%', "float": "left", "paddingLeft": "3rem", "fontWeight": "600" }}>
<nav>
{my_bpf_c3_c8_data.Type_pouvoir_public_desc}
</nav>
</div>
<div style={{ "width": '25%', "float": "right", textAlign: "right", paddingRight: "25px", "fontWeight": "600" }}>
<nav>
{my_bpf_c3_c8_data.TotalAmount_HT}
</nav>
</div>
</div>
</div>))}
<br />
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '70%', "float": "left", "fontWeight": "600" }}>
- de contrats conclus avec des personnes à titre individuel et à leurs frais :
</div>
<div style={{ "width": '25%', "float": "right", textAlign: "right", paddingRight: "15px", "fontWeight": "600" }}>
{Getall_Qry_BPF_PAVE_Data_result_JSON && Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_c9_is_company_particulier && <nav>
{Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_c9_is_company_particulier[0].TotalAmount_HT}
</nav>}
</div>
</div>
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '70%', "float": "left" }}>
TOTAL DES PRODUITS RÉALISÉS AU TITRE DE LA FORMATION PROFESSIONNELLE :
</div>
<div style={{ "width": '25%', "float": "right", textAlign: "right", paddingRight: "25px" }}>
ttttt
</div>
</div>
</div>
<hr className="hr_break" />
<div className="titre1"> D. Bilan financier hors taxes : Charges de l'organisme </div>
<div style={{ "width": '100%', "float": "left" }}>
Ces données peuvent vous être transmises par votre comptable si vous en avez un, ce qui vous fera gagner un temps précieux.
Ne pas oublier les charge indirectes (ex : bouteilles d'eau achetées pour les apprenants, d'autres achats ponctuels, notes de frais de vos formateurs, etc)
</div>
<hr className="hr_break" />
<div className="titre1"> E. Personnes dispensant des heures de formation </div>
<div className="div_row">
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '50%', "float": "left", "paddingLeft": "3rem", "fontWeight": "600" }}>
<nav>
&nbsp;
</nav>
</div>
<div style={{ "width": '23%', "float": "right", textAlign: "right", paddingRight: "25px", "fontWeight": "600" }}>
<nav>
Nombre d'heures
</nav>
</div>
<div style={{ "width": '23%', "float": "right", textAlign: "right", paddingRight: "25px", "fontWeight": "600" }}>
<nav>
Nombre apprenants
</nav>
</div>
</div>
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '50%', "float": "left" }}>
Personnes de votre organisme dispensant des heures de formation
</div>
<div style={{ "width": '23%', "float": "right", textAlign: "right", paddingRight: "25px" }}>
{Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_e1_nb_formateurs_internee}
</div>
<div style={{ "width": '23%', "float": "right", textAlign: "right", paddingRight: "25px" }}>
{Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_e1_nb_heures_formateurs_internes}
</div>
</div>
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '50%', "float": "left" }}>
Personnes extérieures à votre organisme dispensant des heures de formation dans le cadre de contrats de sous-traitance
</div>
<div style={{ "width": '23%', "float": "right", textAlign: "right", paddingRight: "25px" }}>
{Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_e2_nb_formateurs_externes}
</div>
<div style={{ "width": '23%', "float": "right", textAlign: "right", paddingRight: "25px" }}>
{Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_e2_nb_heures_formateurs_externes}
</div>
</div>
</div>
<hr className="hr_break" />
<div className="titre1"> F. Type de stagiaires de l'organisme </div>
<div className="div_row">
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '50%', "float": "left", "paddingLeft": "3rem", "fontWeight": "600" }}>
<nav>
&nbsp;
</nav>
</div>
<div style={{ "width": '23%', "float": "right", textAlign: "right", paddingRight: "25px", "fontWeight": "600" }}>
<nav>
Nombre d'heures
</nav>
</div>
<div style={{ "width": '23%', "float": "right", textAlign: "right", paddingRight: "25px", "fontWeight": "600" }}>
<nav>
Nombre apprenants
</nav>
</div>
</div>
</div>
{Getall_Qry_BPF_PAVE_Data_result_JSON && Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_f_class_niveau_formation &&
Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_f_class_niveau_formation.length > 0 && Getall_Qry_BPF_PAVE_Data_result_JSON.bpf_f_class_niveau_formation.map((my_bpf_f_data) => (
<div className="div_row">
<div style={{ "width": '100%', "float": "left" }}>
<div style={{ "width": '50%', "float": "left", "paddingLeft": "3rem", "fontWeight": "600" }}>
<nav>
{my_bpf_f_data.Class_Level_Desc}
</nav>
</div>
<div style={{ "width": '23%', "float": "right", textAlign: "right", paddingRight: "25px", "fontWeight": "600" }}>
<nav>
{my_bpf_f_data.Nb_Apprenant_By_Class_Level}
</nav>
</div>
<div style={{ "width": '23%', "float": "right", textAlign: "right", paddingRight: "25px", "fontWeight": "600" }}>
<nav>
{my_bpf_f_data.total_nb_heure_formation_by_level}
</nav>
</div>
</div>
</div>))}
<hr className="hr_break" />
<div className="div_row">
<nav style={{ width: "5rem", float: "right", "marginRight": "1rem" }}> Imprimer </nav>
</div>
</div>}
{String(submenu) === String("montbd") && <div style={{ "border": "None" }}> {String(submenu) === String("montbd") && <div style={{ "border": "None" }}>
<h3> Mon tableau de bord </h3> <h3> Mon tableau de bord </h3>
@ -2087,7 +2464,7 @@ const Mon_Tableau_De_Bord = (props) => {
</div>} </div>}
</div> </div>
</div> </div >
) )
} }

View File

@ -40,7 +40,7 @@ import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css'; import 'reactjs-popup/dist/index.css';
import Link from '@mui/material/Link'; import Link from '@mui/material/Link';
import { PiDotsThree } from "react-icons/pi"; import { PiDotsThree } from "react-icons/pi";
import { FcOrganization, FcBusinessman } from "react-icons/fc"; import { FcOrganization, FcBusinessman, FcDepartment } from "react-icons/fc";
import Autocomplete from '@mui/material/Autocomplete'; import Autocomplete from '@mui/material/Autocomplete';
const Partner_Client = (props) => { const Partner_Client = (props) => {
@ -655,10 +655,13 @@ const Partner_Client = (props) => {
</div> </div>
{Get_List_Partner_Clients_result && selected_id && {Get_List_Partner_Clients_result && selected_id &&
String(selected_id).length > 0 && <div className="div_row_droite_dialog_session" style={{ "textAlign": 'right' }}> String(selected_id).length > 0 && <div className="div_row_droite_dialog_session" style={{ "textAlign": 'right' }}>
{String(JSON.parse(Get_List_Partner_Clients_result[gridline_id]).is_company) === "1" && <nav> <FcOrganization /> Société </nav>} {String(JSON.parse(Get_List_Partner_Clients_result[gridline_id]).is_company) === "1" && <nav> <FcOrganization /> Société </nav>}
{String(JSON.parse(Get_List_Partner_Clients_result[gridline_id]).is_company) === "0" && <nav> <FcBusinessman /> Particulier </nav>} {String(JSON.parse(Get_List_Partner_Clients_result[gridline_id]).is_company) === "0" && <nav> <FcBusinessman /> Particulier </nav>}
{String(JSON.parse(Get_List_Partner_Clients_result[gridline_id]).is_company) === "2" && <nav> <FcDepartment /> P. Public </nav>}
{String(JSON.parse(Get_List_Partner_Clients_result[gridline_id]).is_company) !== "0" && {String(JSON.parse(Get_List_Partner_Clients_result[gridline_id]).is_company) !== "0" &&
String(JSON.parse(Get_List_Partner_Clients_result[gridline_id]).is_company) !== "1" && String(JSON.parse(Get_List_Partner_Clients_result[gridline_id]).is_company) !== "1" &&
String(JSON.parse(Get_List_Partner_Clients_result[gridline_id]).is_company) !== "2" &&
""} ""}
</div>} </div>}

View File

@ -1913,6 +1913,11 @@ const Partner_Configuration_Technique = (props) => {
{ "id": "recyclage_warning", "label": "recyclage_warning", "value": "recyclage_warning" }, { "id": "recyclage_warning", "label": "recyclage_warning", "value": "recyclage_warning" },
{ "id": "recyclage_warning_lead_time", "label": "recyclage_warning_lead_time", "value": "recyclage_warning_lead_time" }, { "id": "recyclage_warning_lead_time", "label": "recyclage_warning_lead_time", "value": "recyclage_warning_lead_time" },
{ "id": "nb_heure_par_jour", "label": "nb_heure_par_jour", "value": "nb_heure_par_jour" },
{ "id": "nb_heure_par_semaine", "label": "nb_heure_par_semaine", "value": "nb_heure_par_semaine" },
{ "id": "nb_heure_par_annee", "label": "nb_heure_par_annee", "value": "nb_heure_par_annee" },
{ "id": "", "label": "", "value": "" }, { "id": "", "label": "", "value": "" },
] ]

View File

@ -112,7 +112,7 @@
text-align: center; text-align: center;
margin-bottom: 0.8rem; margin-bottom: 0.8rem;
color: white; color: white;
cursor: pointer; cursor: unset;
font-style: italic; font-style: italic;
background-color: gray; background-color: gray;
font-weight: normal; font-weight: normal;
@ -712,7 +712,7 @@
text-align: center; text-align: center;
margin-bottom: 0.8rem; margin-bottom: 0.8rem;
color: white; color: white;
cursor: pointer; cursor: unset;
font-style: italic; font-style: italic;
background-color: gray; background-color: gray;
font-weight: normal; font-weight: normal;
@ -1368,7 +1368,7 @@
text-align: center; text-align: center;
margin-bottom: 0.8rem; margin-bottom: 0.8rem;
color: white; color: white;
cursor: pointer; cursor: unset;
font-style: italic; font-style: italic;
background-color: gray; background-color: gray;
font-weight: normal; font-weight: normal;
@ -1762,7 +1762,7 @@
text-align: center; text-align: center;
margin-bottom: 0.8rem; margin-bottom: 0.8rem;
color: white; color: white;
cursor: pointer; cursor: unset;
font-style: italic; font-style: italic;
background-color: gray; background-color: gray;
font-weight: normal; font-weight: normal;
@ -1911,7 +1911,7 @@
text-align: center; text-align: center;
margin-bottom: 0.8rem; margin-bottom: 0.8rem;
color: white; color: white;
cursor: pointer; cursor: unset;
font-style: italic; font-style: italic;
background-color: gray; background-color: gray;
font-weight: normal; font-weight: normal;
@ -2383,7 +2383,7 @@
text-align: center; text-align: center;
margin-bottom: 0.8rem; margin-bottom: 0.8rem;
color: white; color: white;
cursor: pointer; cursor: unset;
font-style: italic; font-style: italic;
background-color: gray; background-color: gray;
font-weight: normal; font-weight: normal;