6/06/2024 - 17h30

recette2
cherif 2024-06-16 17:38:58 +02:00
parent 8204a82588
commit a691d4e43a
2 changed files with 500 additions and 18 deletions

View File

@ -78,6 +78,7 @@ import multiMonthPlugin from '@fullcalendar/multimonth'
import Module_Session_Planification from "./Module_Session_Planification";
import Module_Session_Evaluation from "./Module_Session_Evaluation";
import AccountTreeIcon from '@mui/icons-material/AccountTree';
const DisplayPartnerSession = (props) => {
@ -705,7 +706,7 @@ const DisplayPartnerSession = (props) => {
renderCell: (params) => <ExpandableCell_50 {...params} />,
},
{ field: 'prenom', headerName: 'prenom', minWidth: 150, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'email', headerName: 'email', minWidth: 150, flex: 1, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'email', headerName: 'email', minWidth: 150, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'client_rattachement_nom', headerName: 'Client', minWidth: 150, flex: 1, maxWidth: 200, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'client_rattachement_id', headerName: 'Client_id', Width: 0, hide: true, editable: false, },
@ -739,8 +740,37 @@ const DisplayPartnerSession = (props) => {
return "Non";
},
},
{ field: 'invoiced_ref', headerName: 'Num Fact.', minWidth: 100, flex: 1, maxWidth: 150, flex: 1, editable: false, hide: true, },
{ field: 'invoiced_date', headerName: 'Date Fact.', minWidth: 100, flex: 1, maxWidth: 150, flex: 1, editable: false, hide: true, },
{ field: 'invoiced_ref', headerName: 'Num Fact.', minWidth: 100, flex: 1, maxWidth: 150, flex: 1, editable: false, hide: false, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'invoiced_date', headerName: 'Date Fact.', minWidth: 100, flex: 1, maxWidth: 150, flex: 1, editable: false, hide: true, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: "split_invoice", headerName: 'Eclat. Fact',
renderCell: (cellValues) => {
return (
<Button
onClick={(event) => {
setselected_inscription_id(cellValues.row._id);
setp_detail_invoice_split_type("percent");
setp_detail_invoice_split_client_rattachement_id(cellValues.row.client_rattachement_id);
setp_detail_invoice_split_facture_client_rattachement_id(cellValues.row.client_facture);
setp_detail_invoice_split_inscrit_nom(cellValues.row.nom);
setp_detail_invoice_split_inscrit_prenom(cellValues.row.prenom);
setp_detail_invoice_split_changed("");
Get_Inscription_Split_Invoice(cellValues.row._id);
setDialog_SPLIT_INVOICE_open(true);
}}
>
<AccountTreeIcon />
</Button>
);
}
},
{
@ -789,7 +819,7 @@ const DisplayPartnerSession = (props) => {
}
},
{
field: "Imprimer", headerName: 'Imprimer detail',
field: "Imprimer", headerName: 'Imprimer detail', hide: true,
renderCell: (cellValues) => {
return (
@ -3289,16 +3319,14 @@ const DisplayPartnerSession = (props) => {
form.append("token", stored_cookie);
form.append("session_id", selected_session_id);
form.append("tab_inscription_ids", tab_my_inscription_ids);
form.append("courrier_template_id", "64fde469da3a50338b92fb83");
form.append("email_test", "");
form.append("email_production", "");
form.append("tab_files", "");
//console.log(" #### form = ", form);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Prepare_and_Send_Facture_From_Session_By_Inscription_Id/";
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Invoice_Inscrption_With_Split_Session_By_Inscription_Id/";
setLoading(true);
axios.post(myurl, form).then(res => {
@ -8817,11 +8845,11 @@ const DisplayPartnerSession = (props) => {
});
}
const New_Option_Emargement_Masse = [
{ "id": "demande emargement", "label": "Envoyer demande émargement", "value": "demande emargement" },
{ "id": "emarg_qr_code", "label": "Emargement QR CODE", "value": "emarg_qr_code" },
{ "id": "emarg_qr_code", "label": "Emargement QR CODE", "value": "emarg_qr_code" },
]
@ -8865,15 +8893,15 @@ const DisplayPartnerSession = (props) => {
}
else if (String(actionmass_emarg_val) === "emarg_qr_code") {
var tab_emargement = [];
for (var i = 0; i < liste_formation.length; i++) {
var line = JSON.parse(rowss_emarg[liste_formation[i]]);
var line = JSON.parse(rowss_emarg[liste_formation[i]]);
tab_emargement.push(line._id)
}
Export_QR_CODE_Emargement(tab_emargement);
}
@ -10050,7 +10078,7 @@ const DisplayPartnerSession = (props) => {
{ "id": "", "label": "", "value": "" },
{ "id": "1", "label": "", "value": "1" }, // Cette ligne pour couvrir l'ajout d'une ligne de filter. C'est fait expres.
]
const New_Option_Inscription = [
{ "id": "confirmation", "label": "Renvoyer une confirmation", "value": "confirmation" },
@ -10735,6 +10763,224 @@ const DisplayPartnerSession = (props) => {
setLoading(false);
}
const [Dialog_SPLIT_INVOICE_open, setDialog_SPLIT_INVOICE_open] = React.useState(false);
const Dialog_SPLIT_INVOICE_handleClose = () => {
};
const Dialog_SPLIT_INVOICE_handleClose_buton = () => {
setDialog_SPLIT_INVOICE_open(false);
setp_detail_invoice_split_type("percent");
setp_detail_invoice_split_client_rattachement_id("");
setp_detail_invoice_split_client_rattachement_value("");
setp_detail_invoice_split_facture_client_rattachement_id("");
setp_detail_invoice_split_facture_client_rattachement_value("");
setp_detail_invoice_split_inscrit_prenom("");
setp_detail_invoice_split_inscrit_nom("");
setp_detail_invoice_split_changed("");
};
const [Add_Update_Split_Invoice_api, setAdd_Update_Split_Invoice_api] = useState();
const [Add_Update_Split_Invoice_message, setAdd_Update_Split_Invoice_message] = useState();
const [Add_Update_Split_Invoice_result, setAdd_Update_Split_Invoice_result] = useState([]);
function Add_Update_Split_Invoice() {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("inscription_id", selected_inscription_id);
form.append("split_type", p_detail_invoice_split_type);
var tab_split = []
var node1 = {}
node1['partner_client'] = String(p_detail_invoice_split_client_rattachement_id);
node1['invoice_part'] = String(p_detail_invoice_split_client_rattachement_value);
var node2 = {}
node2['partner_client'] = String(p_detail_invoice_split_facture_client_rattachement_id);
node2['invoice_part'] = String(p_detail_invoice_split_facture_client_rattachement_value);
tab_split.push(node1);
tab_split.push(node2);
var tab_split_json_str = JSON.stringify(tab_split);
form.append("tab_split", tab_split_json_str);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_Inscription_Split_Invoice/";
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In UpdateStagiaireData res.data.status = " + res.data.status);
//console.log(" In UpdateStagiaireData res.data.message r_class = " + res.data.message);
setAdd_Update_Split_Invoice_api("true");
setAdd_Update_Split_Invoice_result(res.data.message);
alert(res.data.message);
Dialog_SPLIT_INVOICE_handleClose_buton();
} else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
history.push("/Connexion");
}
else {
setAdd_Update_Split_Invoice_api("false");
setAdd_Update_Split_Invoice_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('Add_Update_Split_Invoice : Not good man :( mysearchtext = ' + error);
setAdd_Update_Split_Invoice_api("false");
alert(" Impossible de mette à jour le partage de facture ");
})
}
const [Get_Inscription_Split_Invoice_api, setGet_Inscription_Split_Invoice_api] = useState();
const [Get_Inscription_Split_Invoice_message, setGet_Inscription_Split_Invoice_message] = useState();
const [Get_Inscription_Split_Invoice_result, setGet_Inscription_Split_Invoice_result] = useState([]);
function Get_Inscription_Split_Invoice(local_inscription_id) {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("inscription_id", local_inscription_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Inscription_Split_Invoice/";
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In UpdateStagiaireData res.data.status = " + res.data.status);
//console.log(" In UpdateStagiaireData res.data.message r_class = " + res.data.message);
setGet_Inscription_Split_Invoice_api("true");
setGet_Inscription_Split_Invoice_result(res.data.message);
const new_data = res.data.message.map((x) => {
//---
if (JSON.parse(x).invoice_split) {
var localid = JSON.parse(x).id;
var local_id = JSON.parse(x)._id;
var local_invoice_split = JSON.parse(x).invoice_split;
var local_tab_split = JSON.parse(x).invoice_split.tab_split;
setp_detail_invoice_split_type(JSON.parse(x).invoice_split.split_type);
if (local_tab_split.length >= 2) {
setp_detail_invoice_split_client_rattachement_id(local_tab_split[0].partner_client);
setp_detail_invoice_split_client_rattachement_value(local_tab_split[0].invoice_part);
setp_detail_invoice_split_facture_client_rattachement_id(local_tab_split[1].partner_client);
setp_detail_invoice_split_facture_client_rattachement_value(local_tab_split[1].invoice_part);
}
}
});
} else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
history.push("/Connexion");
}
else {
setGet_Inscription_Split_Invoice_api("false");
setGet_Inscription_Split_Invoice_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('Get_Inscription_Split_Invoice : Not good man :( mysearchtext = ' + error);
setGet_Inscription_Split_Invoice_api("false");
alert(" Impossible de récuperer le partage de facture ");
})
}
const [Delete_Inscription_Split_Invoice_api, setDelete_Inscription_Split_Invoice_api] = useState();
const [Delete_Inscription_Split_Invoice_message, setDelete_Inscription_Split_Invoice_message] = useState();
const [Delete_Inscription_Split_Invoice_result, setDelete_Inscription_Split_Invoice_result] = useState([]);
function Delete_Inscription_Split_Invoice() {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("inscription_id", selected_inscription_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Delete_Inscription_Split_Invoice/";
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In UpdateStagiaireData res.data.status = " + res.data.status);
//console.log(" In UpdateStagiaireData res.data.message r_class = " + res.data.message);
setDelete_Inscription_Split_Invoice_api("true");
setDelete_Inscription_Split_Invoice_result(res.data.message);
alert(res.data.message);
Dialog_SPLIT_INVOICE_handleClose_buton();
} else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
history.push("/Connexion");
}
else {
setDelete_Inscription_Split_Invoice_api("false");
setDelete_Inscription_Split_Invoice_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('Delete_Inscription_Split_Invoice : Not good man :( mysearchtext = ' + error);
setDelete_Inscription_Split_Invoice_api("false");
alert(" Impossible de supprimer le partage de facture ");
})
}
const [p_detail_invoice_split_inscrit_nom, setp_detail_invoice_split_inscrit_nom] = useState("");
const [p_detail_invoice_split_inscrit_prenom, setp_detail_invoice_split_inscrit_prenom] = useState("");
const [p_detail_invoice_split_type, setp_detail_invoice_split_type] = useState("percent");
const [p_detail_invoice_split_changed, setp_detail_invoice_split_changed] = useState("");
const [p_detail_invoice_split_client_rattachement_id, setp_detail_invoice_split_client_rattachement_id] = useState("");
const [p_detail_invoice_split_client_rattachement_value, setp_detail_invoice_split_client_rattachement_value] = useState("");
const [p_detail_invoice_split_facture_client_rattachement_id, setp_detail_invoice_split_facture_client_rattachement_id] = useState("");
const [p_detail_invoice_split_facture_client_rattachement_value, setp_detail_invoice_split_facture_client_rattachement_value] = useState("");
const New_Option_Type_split_invoice = [
{ "id": "percent", "label": "Pourcentage", "value": "percent" },
{ "id": "fixe", "label": "Montant", "value": "fixe" },
{ "id": "", "label": "", "value": "" },
]
return (
<div className="displaypartnersession">
@ -10743,6 +10989,244 @@ const DisplayPartnerSession = (props) => {
</div>}
{ /******** Dialog de Split Facture */}
<Dialog
open={Dialog_SPLIT_INVOICE_open}
onClose={Dialog_SPLIT_INVOICE_handleClose}
className="displaypartnersession"
>
<DialogTitle>MySy Information</DialogTitle>
<DialogContent className="DialogContent_width" style={{ "minHeight": "25rem" }}>
<DialogContentText>
Répartition Facture pour {p_detail_invoice_split_inscrit_prenom} &nbsp; {p_detail_invoice_split_inscrit_nom}
</DialogContentText>
{New_Option_Type_split_invoice && New_Option_Type_split_invoice.length > 0 &&
p_detail_invoice_split_type && <div className="session_caract_Dialog" > Type de partage
<Autocomplete
disablePortal
name="event_dialog_split_type"
id="event_dialog_split_type"
fullWidth
//className="disabled_style enable_style"
options={New_Option_Type_split_invoice}
value={New_Option_Type_split_invoice.filter((data) => (data).id === String(p_detail_invoice_split_type))[0].label}
onChange={(event, value) => {
setp_detail_invoice_split_changed("1");
if (value && value.id) {
setp_detail_invoice_split_type(value.id);
} else {
setp_detail_invoice_split_type("");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
</div>}
{p_detail_invoice_split_type && (String(p_detail_invoice_split_type) === "percent"
|| String(p_detail_invoice_split_type) === "fixe") && <div>
<div className="session_caract_Dialog" > {New_Get_List_Partner_Clients_result && New_Get_List_Partner_Clients_result.length > 0 && <nav>
{New_Get_List_Partner_Clients_result.filter((data) => (data)._id === String(p_detail_invoice_split_client_rattachement_id))[0].label}
</nav>}
<TextField
autoFocus
margin="dense"
id="invoice_split_client_rattachement"
name="invoice_split_client_rattachement"
fullWidth
type="number"
step="any"
value={p_detail_invoice_split_client_rattachement_value}
onChange={(e) => {
setp_detail_invoice_split_client_rattachement_value(e.target.value);
setp_detail_invoice_split_changed("1");
}
}
/>
</div>
<div className="session_caract_Dialog" > {New_Get_List_Partner_Clients_result && New_Get_List_Partner_Clients_result.length > 0 && <nav>
{New_Get_List_Partner_Clients_result.filter((data) => (data)._id === String(p_detail_invoice_split_facture_client_rattachement_id))[0].label}
</nav>}
<TextField
autoFocus
margin="dense"
id="invoice_split_client_rattachement"
name="invoice_split_client_rattachement"
fullWidth
type="number"
step="any"
value={p_detail_invoice_split_facture_client_rattachement_value}
onChange={(e) => {
setp_detail_invoice_split_facture_client_rattachement_value(e.target.value);
setp_detail_invoice_split_changed("1");
}
}
/>
</div>
{String(p_detail_invoice_split_changed) === "1" && <div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
/!\ Pensez à enregistrer les modifications
</div>}
</div>
}
</DialogContent>
{p_detail_invoice_split_type && (String(p_detail_invoice_split_type) === "percent"
|| String(p_detail_invoice_split_type) === "fixe") && <div>
<DialogActions>
<div className="div_row">
<div className="div_row_gauche">
<Popup
trigger={
<Button
className="bton_enreg_dialog"> Mettre à jour </Button>
}
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">
{' '}
<font> Confirmer la mise à jour du partage de facture
</font>
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
Add_Update_Split_Invoice();
close();
}}> 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>
</div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
<Button onClick={Dialog_SPLIT_INVOICE_handleClose_buton} className="bton_annule_dialog" >Fermer</Button>
</div>
</div>
</DialogActions>
<DialogActions>
<div className="div_row">
<div style={{ "textAlign": 'center' }}>
<Popup
trigger={
<Button onClick={Delete_Inscription_Split_Invoice} className="bton_supprime_dialog" >Supprimer le partage de facture</Button>
}
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">
{' '}
<font> Confirmer la mise à jour du partage de facture
</font>
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
Delete_Inscription_Split_Invoice();
close();
}}> 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>
</div>
</div>
</DialogActions>
</div>}
</Dialog>
{ /******** End Dialog de Split Facture */}
{/**** Dialogue pour EVENT SEMAINE TYPE */}
<Dialog
@ -18526,7 +19010,7 @@ const DisplayPartnerSession = (props) => {
options={New_Option_Emargement_Masse}
onChange={(event, value) => {
if (value && value.value) {
if ( String(value.value) === "demande emargement" || String(value.value) === "emarg_qr_code") {
if (String(value.value) === "demande emargement" || String(value.value) === "emarg_qr_code") {
setactionmass_emarg_val(value.value);

View File

@ -1277,8 +1277,6 @@ const Module_Agenda = (props) => {
</DialogActions>
{String(props.write_access) === "1" && String(p_detail_sequence_session_id) === "" && p_detail_event_id && String(p_detail_event_id) !== "" &&
<DialogActions>
<div className="div_row" style={{ "textAlign": "center" }}>