07/03/2024 - 22h30
parent
1b58661790
commit
78de0e0028
|
@ -267,6 +267,19 @@ const DisplayPartnerSession = (props) => {
|
|||
{ field: 'site_formation_nom', headerName: 'Site Ftion', with: 150, align: "center", hide: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
|
||||
|
||||
{
|
||||
field: 'invoiced_statut', headerName: 'Facturé', minWidth: 100, flex: 1, maxWidth: 150, hide: false, editable: false,
|
||||
valueFormatter: (params) => {
|
||||
if (String(params.value) === "2")
|
||||
return "Oui";
|
||||
else if (String(params.value) === "1")
|
||||
return "Part.";
|
||||
else
|
||||
return "Non";
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
|
||||
{ field: 'duration', headerName: 'Durée', minWidth: datagrid_columns_size_model2, align: "center", hide: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{
|
||||
|
@ -1780,6 +1793,8 @@ const DisplayPartnerSession = (props) => {
|
|||
function submenu_inscrit() {
|
||||
setsubmenu("inscrit");
|
||||
|
||||
GetListeInscrit(selected_session_id, selected_internal_url);
|
||||
|
||||
if (document.getElementById("inscrit")) {
|
||||
document.getElementById("inscrit").style.backgroundColor = "#104277";
|
||||
document.getElementById("inscrit").style.color = "white";
|
||||
|
@ -3246,10 +3261,7 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
if (String(actionmass_insc_val) === "facturer") {
|
||||
|
||||
|
||||
|
||||
setDialog_FACTURATION_FORMATION_open(true);
|
||||
GetListeInscrit(selected_session_id, selected_internal_url);
|
||||
|
||||
|
||||
} else {
|
||||
|
@ -3301,7 +3313,7 @@ const DisplayPartnerSession = (props) => {
|
|||
for (var i = 0; i < selectionModel_insc.length; i++) {
|
||||
//console.log(" ### SelectionModel_insc[i] = ", selectionModel_insc[i]);
|
||||
|
||||
var local_id = parseInt(selectionModel_insc[i]);
|
||||
var local_id = parseInt(selectionModel_insc[i]);
|
||||
//console.log(" ### local_id = ",local_id);
|
||||
|
||||
var myid = JSON.parse(String(rowss_insc[local_id]));
|
||||
|
@ -3323,7 +3335,7 @@ const DisplayPartnerSession = (props) => {
|
|||
form.append("email_test", "");
|
||||
form.append("email_production", "");
|
||||
|
||||
console.log(" #### form = ", form);
|
||||
//console.log(" #### form = ", form);
|
||||
|
||||
|
||||
|
||||
|
@ -3339,6 +3351,7 @@ const DisplayPartnerSession = (props) => {
|
|||
//console.log(" In Invoice_Session_Formation_By_Selected_Inscrit res.data.message r_class = " + res.data.message);
|
||||
setInvoice_Session_Formation_By_Selected_Inscrit_api("true");
|
||||
setInvoice_Session_Formation_By_Selected_Inscrit_result(res.data.message);
|
||||
GetListeInscrit(selected_session_id, selected_internal_url);
|
||||
|
||||
alert(res.data.message);
|
||||
|
||||
|
@ -9574,7 +9587,12 @@ const DisplayPartnerSession = (props) => {
|
|||
]
|
||||
|
||||
|
||||
|
||||
const New_Option_Inscription = [
|
||||
{ "id": "confirmation", "label": "Renvoyer une confirmation", "value": "confirmation" },
|
||||
{ "id": "impression", "label": "Imprimer fiches", "value": "impression" },
|
||||
{ "id": "annule inscription", "label": "Annuler inscription", "value": "annule inscription" },
|
||||
{ "id": "facturer", "label": "Facturer", "value": "facturer" },
|
||||
]
|
||||
const [Dialog_FACTURATION_FORMATION_open, setDialog_FACTURATION_FORMATION_open] = React.useState(false);
|
||||
const Dialog_FACTURATION_FORMATION_handleClose = () => {
|
||||
|
||||
|
@ -10515,13 +10533,6 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
<Button onClick={(e) => {
|
||||
|
||||
if (String(selected_session_id).length > 2) {
|
||||
// On alerte juste l'utilisateur que l'email de test n'est pas vide, juste au cas ou il aurait cliqué par erreur sur l'envoie.
|
||||
const response = window.confirm(" Continuez la facturation?");
|
||||
if (!response) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Dialog_FACTURATION_FORMATION_handleClose_buton();
|
||||
Invoice_Session_Formation_By_Selected_Inscrit();
|
||||
|
@ -10844,6 +10855,14 @@ const DisplayPartnerSession = (props) => {
|
|||
fontSize: 14
|
||||
},
|
||||
|
||||
'& .line--statut--invoiced': {
|
||||
backgroundColor: '#EAFAF1',
|
||||
color: '#239B56',
|
||||
fontWeight: '700'
|
||||
},
|
||||
|
||||
|
||||
|
||||
'& .line--statut--selected': {
|
||||
backgroundColor: '#FBF2EF',
|
||||
color: 'black',
|
||||
|
@ -10905,6 +10924,7 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
site_formation_id: JSON.parse(item).site_formation_id,
|
||||
site_formation_nom: JSON.parse(item).site_formation_code,
|
||||
invoiced_statut: JSON.parse(item).invoiced_statut,
|
||||
}
|
||||
))}
|
||||
|
||||
|
@ -10940,6 +10960,13 @@ const DisplayPartnerSession = (props) => {
|
|||
}}
|
||||
//sx={datagridSx}
|
||||
getCellClassName={(params) => {
|
||||
|
||||
// Traitement du statut "facturé"
|
||||
if (String(params.row.invoiced_statut) === "2") {
|
||||
return 'line--statut--invoiced';
|
||||
}
|
||||
|
||||
|
||||
//field === 'distantiel'
|
||||
if (params.field === 'distantiel' && String(params.value) === "1") {
|
||||
return 'cell--distantiel';
|
||||
|
@ -10974,6 +11001,8 @@ const DisplayPartnerSession = (props) => {
|
|||
return 'cell--etape--annule';
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Pour la gestion de la couleur de zone double cliquée
|
||||
if (String(params.row.id) === String(gridline_id)) {
|
||||
return 'line--statut--selected';
|
||||
|
@ -11160,7 +11189,7 @@ const DisplayPartnerSession = (props) => {
|
|||
{String(addOneSession) !== "1" && <div className="session_data" onChange={IssessionChanged}>
|
||||
|
||||
|
||||
<div className="div_row" style={{ "marginTop": "1rem", "marginBottom": "1rem" }}>
|
||||
{/*<div className="div_row" style={{ "marginTop": "1rem", "marginBottom": "1rem" }}>
|
||||
|
||||
<div className="div_row_gauche">
|
||||
|
||||
|
@ -11184,7 +11213,8 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>*/}
|
||||
<br/>
|
||||
|
||||
<div className="session_caract"> <b> Formation </b><br />
|
||||
<TextField
|
||||
|
@ -14819,167 +14849,234 @@ const DisplayPartnerSession = (props) => {
|
|||
</div>}
|
||||
</div>
|
||||
|
||||
{String(addOneParticipant) !== "1" && <div className="session_data" style={{ height: 500, width: '100%' }}>
|
||||
<DataGrid
|
||||
checkboxSelection
|
||||
onSelectionModelChange={(newSelectionModel_insc) => {
|
||||
setSelectionModel_insc(newSelectionModel_insc);
|
||||
//console.log("ch selected--" + newSelectionModel_insc);
|
||||
}}
|
||||
selectionModel={selectionModel_insc}
|
||||
{String(addOneParticipant) !== "1" &&
|
||||
<div className="session_data" >
|
||||
<div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
|
||||
|
||||
<Box
|
||||
|
||||
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
|
||||
rows={rowss_insc.map((item, index) => (
|
||||
{
|
||||
id: index,
|
||||
_id: JSON.parse(item)._id,
|
||||
nom: JSON.parse(item).nom,
|
||||
prenom: JSON.parse(item).prenom,
|
||||
employeur: JSON.parse(item).employeur,
|
||||
email: JSON.parse(item).email,
|
||||
amount: JSON.parse(item).price,
|
||||
opco: JSON.parse(item).opco,
|
||||
modefinancement: JSON.parse(item).modefinancement,
|
||||
civilite: JSON.parse(item).civilite,
|
||||
client_rattachement_nom: JSON.parse(item).client_rattachement_nom,
|
||||
client_rattachement_id: JSON.parse(item).client_rattachement_id,
|
||||
|
||||
invoiced: JSON.parse(item).invoiced,
|
||||
invoiced_ref: JSON.parse(item).invoiced_ref,
|
||||
invoiced_date: JSON.parse(item).invoiced_date,
|
||||
sx={{
|
||||
height: 500,
|
||||
width: '100%',
|
||||
paddingRight: '2px',
|
||||
|
||||
|
||||
}
|
||||
))}
|
||||
[`& .${gridClasses.cell}`]: {
|
||||
py: 1,
|
||||
},
|
||||
'& .line--statut--invoiced': {
|
||||
backgroundColor: '#EAFAF1',
|
||||
color: '#239B56',
|
||||
fontWeight: '700'
|
||||
|
||||
columns={columns_inscrit}
|
||||
pageSize={10}
|
||||
className="datagridclass"
|
||||
},
|
||||
"& .MuiDataGrid-columnHeaders": {
|
||||
backgroundColor: "#c8cfd5",
|
||||
color: "black",
|
||||
fontSize: 14
|
||||
},
|
||||
|
||||
rowsPerPageOptions={[10]}
|
||||
disableSelectionOnClick
|
||||
components={{
|
||||
Toolbar: GridToolbar,
|
||||
}}
|
||||
getEstimatedRowHeight={() => 200}
|
||||
getRowHeight={() => "auto"}
|
||||
sx={{
|
||||
|
||||
[`& .${gridClasses.cell}`]: {
|
||||
py: 1,
|
||||
},
|
||||
}}
|
||||
}}
|
||||
|
||||
/>
|
||||
>
|
||||
|
||||
{selectionModel_insc && selectionModel_insc.length >= 1 &&
|
||||
<div className="block_en_mass">
|
||||
<nav className='traitement_mass'>Traitement en masse / Inscrit</nav>
|
||||
<select
|
||||
id={"actionmassinscr"} name={"actionmassinscr"}
|
||||
onChange={actionmass_inscrit}
|
||||
className="action_mass">
|
||||
<option selected value="n/a">Choisir une action</option>
|
||||
<option value="confirmation">Renvoyer une confirmation</option>
|
||||
<option value="impression">Imprimer fiches</option>
|
||||
<option value="annule inscription">Annuler inscription</option>
|
||||
<option value="facturer">Facturer</option>
|
||||
<DataGrid
|
||||
checkboxSelection
|
||||
onSelectionModelChange={(newSelectionModel_insc) => {
|
||||
setSelectionModel_insc(newSelectionModel_insc);
|
||||
//console.log("ch selected--" + newSelectionModel_insc);
|
||||
}}
|
||||
selectionModel={selectionModel_insc}
|
||||
|
||||
</select>
|
||||
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
|
||||
rows={rowss_insc.map((item, index) => (
|
||||
{
|
||||
id: index,
|
||||
_id: JSON.parse(item)._id,
|
||||
nom: JSON.parse(item).nom,
|
||||
prenom: JSON.parse(item).prenom,
|
||||
employeur: JSON.parse(item).employeur,
|
||||
email: JSON.parse(item).email,
|
||||
amount: JSON.parse(item).price,
|
||||
opco: JSON.parse(item).opco,
|
||||
modefinancement: JSON.parse(item).modefinancement,
|
||||
civilite: JSON.parse(item).civilite,
|
||||
client_rattachement_nom: JSON.parse(item).client_rattachement_nom,
|
||||
client_rattachement_id: JSON.parse(item).client_rattachement_id,
|
||||
|
||||
{actionmass_insc_val &&
|
||||
<Popup
|
||||
trigger={<Button className="bton_traiter_en_mass" >
|
||||
<FcAcceptDatabase /> Traiter
|
||||
invoiced: JSON.parse(item).invoiced,
|
||||
invoiced_ref: JSON.parse(item).invoiced_ref,
|
||||
invoiced_date: JSON.parse(item).invoiced_date,
|
||||
|
||||
</Button>}
|
||||
modal
|
||||
nested
|
||||
position="center center"
|
||||
>
|
||||
|
||||
{close => (
|
||||
<div>
|
||||
<button className="gest_close" onClick={close}>
|
||||
×
|
||||
</button>
|
||||
<div className="gest_header"> MySy Information </div>
|
||||
<div className="gest_content">
|
||||
{' '}
|
||||
}
|
||||
))}
|
||||
|
||||
Confirmer l'action <b> {actionmass_insc_val} </b> en masse.
|
||||
</div>
|
||||
<div className="gest_actions">
|
||||
<div style={{ "width": "45%", "float": "left" }}>
|
||||
<button className="gest_bton_popup" onClick={(event) => {
|
||||
actionmass_insc_Traitemet();
|
||||
close();
|
||||
}}> Valider </button>
|
||||
columns={columns_inscrit}
|
||||
pageSize={10}
|
||||
className="datagridclass"
|
||||
|
||||
</div>
|
||||
<div style={{ "width": "45%", "float": "right" }}>
|
||||
<button
|
||||
className="gest_bton_popup"
|
||||
onClick={() => {
|
||||
//console.log('modal closed ');
|
||||
close();
|
||||
}}
|
||||
>
|
||||
Annuler
|
||||
getCellClassName={(params) => {
|
||||
// Pour la gestion de la couleur si la ligne est facturée
|
||||
if (String(params.row.invoiced) === "1") {
|
||||
|
||||
return 'line--statut--invoiced';
|
||||
}
|
||||
|
||||
|
||||
|
||||
}}
|
||||
|
||||
rowsPerPageOptions={[10]}
|
||||
disableSelectionOnClick
|
||||
components={{
|
||||
Toolbar: GridToolbar,
|
||||
}}
|
||||
getEstimatedRowHeight={() => 200}
|
||||
getRowHeight={() => "auto"}
|
||||
sx={{
|
||||
|
||||
[`& .${gridClasses.cell}`]: {
|
||||
py: 1,
|
||||
},
|
||||
}}
|
||||
|
||||
/>
|
||||
</Box>
|
||||
{selectionModel_insc && selectionModel_insc.length >= 1 &&
|
||||
<div className="block_en_mass">
|
||||
<nav className='traitement_mass'>Traitement en masse / Inscrit</nav>
|
||||
|
||||
{/*<select
|
||||
id={"actionmassinscr"} name={"actionmassinscr"}
|
||||
onChange={actionmass_inscrit}
|
||||
className="action_mass">
|
||||
<option selected value="n/a">Choisir une action</option>
|
||||
<option value="confirmation">Renvoyer une confirmation</option>
|
||||
<option value="impression">Imprimer fiches</option>
|
||||
<option value="annule inscription">Annuler inscription</option>
|
||||
<option value="facturer">Facturer</option>
|
||||
|
||||
</select> */}
|
||||
<Autocomplete
|
||||
disablePortal
|
||||
id="combo-box-demo"
|
||||
className="block_en_mass_select"
|
||||
fullWidth
|
||||
options={New_Option_Inscription}
|
||||
onChange={(event, value) => {
|
||||
if (String(value.value) === "confirmation" || String(value.value) === "impression" || String(value.value) === "annule inscription" ||
|
||||
String(value.value) === "facturer") {
|
||||
setactionmass_insc_val(value.value);
|
||||
}
|
||||
else {
|
||||
setactionmass_insc_val();
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
|
||||
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
|
||||
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
||||
{actionmass_insc_val && <nav className='block_en_mass_bton_action'>
|
||||
<Popup
|
||||
trigger={<Button className="bton_enreg" style={{ "width": "90%" }}>
|
||||
<FcAcceptDatabase /> Traiter
|
||||
|
||||
</Button>}
|
||||
modal
|
||||
nested
|
||||
position="center center"
|
||||
>
|
||||
|
||||
{close => (
|
||||
<div>
|
||||
<button className="gest_close" onClick={close}>
|
||||
×
|
||||
</button>
|
||||
<div className="gest_header"> MySy Information </div>
|
||||
<div className="gest_content">
|
||||
{' '}
|
||||
|
||||
Confirmer l'action <b> {actionmass_insc_val} </b> en masse.
|
||||
</div>
|
||||
<div className="gest_actions">
|
||||
<div style={{ "width": "45%", "float": "left" }}>
|
||||
<button className="gest_bton_popup" onClick={(event) => {
|
||||
actionmass_insc_Traitemet();
|
||||
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>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</Popup>
|
||||
)}
|
||||
</Popup>
|
||||
</nav>
|
||||
}
|
||||
<br />
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
}
|
||||
|
||||
<br />
|
||||
|
||||
{String(addOneParticipant) !== "1" && selected_code_session && selected_internal_url && <div id='ajout_participant' style={{ "textAlign": "left", "float": "left", "width": "100%" }}>
|
||||
|
||||
<Button variant="outlined" onClick={submenu_import_participant} className="detail_class_submenu bton_import_excel" style={{
|
||||
"background": "#c8cfd5",
|
||||
"color": "black", "width": "auto"
|
||||
}}
|
||||
id='menu_import_participant' name='menu_import_participant'>Importer des participants excel
|
||||
<img src={excel_icone} alt="ajout csv" className="icon_excel" />
|
||||
</Button>
|
||||
<Button variant="outlined" onClick={submenu_add_one_participant}
|
||||
className="detail_class_submenu bton_add_session"
|
||||
id='menu_one_participant' name='menu_one_participant'>Ajout 1 participant
|
||||
<img src={participants} alt="ajout un participant" className="icon_plus" />
|
||||
</Button>
|
||||
|
||||
<br />
|
||||
<a href='/sample/template_import_stagiaires.csv' download>Télécharger un fichier modèle</a>
|
||||
<br />
|
||||
|
||||
<i>{participant_file_name}</i><br />
|
||||
{String(liste_participants_file_change_api) === String("true") && <nav className="okUpdateData"> Les participants ont été correctement importés</nav>}
|
||||
{String(liste_participants_file_change_api) === String("false") && <nav className="koUpdateData"> {liste_participants_file_change_message} </nav>}
|
||||
|
||||
<input type="file"
|
||||
accept=".csv"
|
||||
ref={hiddenFileInput}
|
||||
style={{ display: 'none' }}
|
||||
name="liste_participants_file"
|
||||
onChange={liste_participants_file_change}
|
||||
/>
|
||||
|
||||
|
||||
</div>}
|
||||
</div>
|
||||
|
||||
}
|
||||
|
||||
<br />
|
||||
|
||||
{String(addOneParticipant) !== "1" && selected_code_session && selected_internal_url && <div id='ajout_participant' style={{ "textAlign": "left", "float": "left", "width": "100%" }}>
|
||||
|
||||
<Button variant="outlined" onClick={submenu_import_participant} className="detail_class_submenu bton_import_excel" style={{
|
||||
"background": "#c8cfd5",
|
||||
"color": "black", "width": "auto"
|
||||
}}
|
||||
id='menu_import_participant' name='menu_import_participant'>Importer des participants excel
|
||||
<img src={excel_icone} alt="ajout csv" className="icon_excel" />
|
||||
</Button>
|
||||
<Button variant="outlined" onClick={submenu_add_one_participant}
|
||||
className="detail_class_submenu bton_add_session"
|
||||
id='menu_one_participant' name='menu_one_participant'>Ajout 1 participant
|
||||
<img src={participants} alt="ajout un participant" className="icon_plus" />
|
||||
</Button>
|
||||
|
||||
<br />
|
||||
<a href='/sample/template_import_stagiaires.csv' download>Télécharger un fichier modèle</a>
|
||||
<br />
|
||||
|
||||
<i>{participant_file_name}</i><br />
|
||||
{String(liste_participants_file_change_api) === String("true") && <nav className="okUpdateData"> Les participants ont été correctement importés</nav>}
|
||||
{String(liste_participants_file_change_api) === String("false") && <nav className="koUpdateData"> {liste_participants_file_change_message} </nav>}
|
||||
|
||||
<input type="file"
|
||||
accept=".csv"
|
||||
ref={hiddenFileInput}
|
||||
style={{ display: 'none' }}
|
||||
name="liste_participants_file"
|
||||
onChange={liste_participants_file_change}
|
||||
/>
|
||||
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
{String(addOneParticipant) !== "1" && String(display_detail_insc) === "1" && selected_code_session && <div className="div_row block_detail_inscrit">
|
||||
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Détail inscrit </nav>
|
||||
{String(GetAttendee_api) === "true" && <div className="div_row" style={{ "border": "None" }}>
|
||||
|
|
Loading…
Reference in New Issue