11/05/2026 -22h
parent
c79a114eeb
commit
a762da8cb5
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -25458,7 +25458,7 @@ const DisplayPartnerSession = (props) => {
|
|||
<div style={{ "border": "None" }}>
|
||||
<h3 style={{ fontFamily: 'DM Sans' }}> Affichage planning </h3>
|
||||
|
||||
|
||||
|
||||
<div style={{ "width": "98%", "marginLeft": "5px", }}>
|
||||
<FullCalendar
|
||||
height={550}
|
||||
|
|
|
|||
|
|
@ -975,7 +975,7 @@ const Module_Agenda = (props) => {
|
|||
|
||||
form.append("event_type", p_detail_event_type);
|
||||
form.append("justified", p_detail_justified);
|
||||
//console.log(" form == ", form);
|
||||
//console.log(" form == ", form);
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_Agenda_Event/";
|
||||
|
||||
|
|
@ -1237,7 +1237,7 @@ const Module_Agenda = (props) => {
|
|||
{ "id": "1", "label": "Planning", "value": "planning" },
|
||||
{ "id": "preparation", "label": "Préparation", "value": "preparation" },
|
||||
{ "id": "suivi", "label": "Suivi/Correction", "value": "suivi" },
|
||||
{ "id": "eval", "label": "Evaluation", "value": "eval" },
|
||||
{ "id": "eval", "label": "Evaluation", "value": "eval" },
|
||||
{ "id": "2", "label": "Autre", "value": "autre" },
|
||||
]
|
||||
|
||||
|
|
@ -1461,7 +1461,7 @@ const Module_Agenda = (props) => {
|
|||
|
||||
</div>
|
||||
<nav style={{ "float": "left", "width": "100%" }}>
|
||||
<div className="session_caract_Dialog" style={{ width: '50%' }}> Debut <br/>
|
||||
<div className="session_caract_Dialog" style={{ width: '50%' }}> Debut <br />
|
||||
<DatePicker
|
||||
name="event_dialog_start"
|
||||
id="event_dialog_start"
|
||||
|
|
@ -1486,7 +1486,7 @@ const Module_Agenda = (props) => {
|
|||
</div>
|
||||
|
||||
|
||||
<div className="session_caract_Dialog" style={{ width: '50%' }}> Fin <br/>
|
||||
<div className="session_caract_Dialog" style={{ width: '50%' }}> Fin <br />
|
||||
<DatePicker
|
||||
name="event_dialog_end"
|
||||
id="event_dialog_end"
|
||||
|
|
@ -1556,113 +1556,93 @@ const Module_Agenda = (props) => {
|
|||
</IconButton>
|
||||
|
||||
|
||||
<div className="div_row">
|
||||
{/*** Si l'agenda d'une autre personne, je dois etre autorisé à ecrire */}
|
||||
{String(agenda_owner_name) !== "Mon Planning" && String(p_filtre1) === "ressource_humaine" && String(props.check_user_acces_right("agenda_employes", "write")) === "1" &&
|
||||
<div className="div_row_gauche">
|
||||
{p_detail_event_id && String(p_detail_event_id) !== "" && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog">Mettre à jour</Button>}
|
||||
{(!p_detail_event_id || String(p_detail_event_id) === "") && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog">Ajouter</Button>}
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
{/*** Si l'agenda d'un materiel, je dois etre autorisé à ecrire */}
|
||||
{String(agenda_owner_name) !== "Mon Planning" && String(p_filtre1) === "ressource_materielle" && String(props.check_user_acces_right("agenda_materiel_salle", "write")) === "1" &&
|
||||
<div className="div_row_gauche">
|
||||
{p_detail_event_id && String(p_detail_event_id) !== "" && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog">Mettre à jour</Button>}
|
||||
{(!p_detail_event_id || String(p_detail_event_id) === "") && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog">Ajouter</Button>}
|
||||
|
||||
</div>}
|
||||
|
||||
{/*** Si c'est mon agenda, j'ai tous les droit */}
|
||||
{String(agenda_owner_name) === "Mon Planning" &&
|
||||
<div className="div_row_gauche">
|
||||
{p_detail_event_id && String(p_detail_event_id) !== "" && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog">Mettre à jour</Button>}
|
||||
{(!p_detail_event_id || String(p_detail_event_id) === "") && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog">Ajouter</Button>}
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||
<Button onClick={Close_Dialog_Detail_Event_open} className="bton_annule_dialog" >Fermer</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
{/* <div className="div_row">
|
||||
{String(setagenda_owner_name) !== "setagenda_owner_name" && String(props.write_access) === "1" && String(p_detail_sequence_session_id) === "" && <div className="div_row_gauche">
|
||||
{p_detail_event_id && String(p_detail_event_id) !== "" && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog">Mettre à jour</Button>}
|
||||
{(!p_detail_event_id || String(p_detail_event_id) === "") && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog">Ajouter</Button>}
|
||||
|
||||
|
||||
{/*** Si l'agenda d'une autre personne, je dois etre autorisé à ecrire */}
|
||||
{String(agenda_owner_name) !== "Mon Planning" && String(p_filtre1) === "ressource_humaine" && String(props.check_user_acces_right("agenda_employes", "write")) === "1" &&
|
||||
<div className="div_row_gauche">
|
||||
{p_detail_event_id && String(p_detail_event_id) !== "" && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog" style={{ width: '40%', float: 'left' }}>M.A.J</Button>}
|
||||
{(!p_detail_event_id || String(p_detail_event_id) === "") && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog" style={{ float: 'left' }}>Ajouter</Button>}
|
||||
|
||||
</div>}
|
||||
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||
<Button onClick={Close_Dialog_Detail_Event_open} className="bton_annule_dialog" >Fermer</Button>
|
||||
</div>
|
||||
</div>*/}
|
||||
|
||||
|
||||
{/*** Si l'agenda d'un materiel, je dois etre autorisé à ecrire */}
|
||||
{String(agenda_owner_name) !== "Mon Planning" && String(p_filtre1) === "ressource_materielle" && String(props.check_user_acces_right("agenda_materiel_salle", "write")) === "1" &&
|
||||
<div className="div_row_gauche">
|
||||
{p_detail_event_id && String(p_detail_event_id) !== "" && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog" style={{ width: '40%', float: 'left' }}>M.A.J</Button>}
|
||||
{(!p_detail_event_id || String(p_detail_event_id) === "") && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog" style={{ float: 'left' }}>Ajouter</Button>}
|
||||
|
||||
</div>}
|
||||
|
||||
{/*** Si c'est mon agenda, j'ai tous les droit */}
|
||||
{String(agenda_owner_name) === "Mon Planning" &&
|
||||
<div className="div_row_gauche">
|
||||
{p_detail_event_id && String(p_detail_event_id) !== "" && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog" style={{ width: '40%', float: 'left' }}>M.A.J</Button>}
|
||||
{(!p_detail_event_id || String(p_detail_event_id) === "") && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog" style={{ float: 'left' }}>Ajouter</Button>}
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
{String(p_detail_sequence_session_id) !== "" && <div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||
<Button onClick={Close_Dialog_Detail_Event_open} className="bton_annule_dialog" style={{ width: '40%', float: 'right' }}>Fermer</Button>
|
||||
</div>}
|
||||
|
||||
|
||||
|
||||
{String(props.write_access) === "1" && String(p_detail_sequence_session_id) === "" && p_detail_event_id && String(p_detail_event_id) !== "" &&
|
||||
String(agenda_owner_name) !== "Mon Planning" && String(p_filtre1) === "ressource_humaine" && String(props.check_user_acces_right("agenda_employes", "write")) === "1" &&
|
||||
|
||||
<div className="div_row_droite" style={{ "textAlign": "center" }}>
|
||||
|
||||
<Button onClick={Close_Dialog_Detail_Event_open} className="bton_annule_dialog" style={{ width: '40%', float: 'right' }}>Fermer</Button>
|
||||
|
||||
<Button onClick={(e) => {
|
||||
const response = window.confirm("Confirmez-vous la suppression de l'événement ?");
|
||||
if (!response) {
|
||||
return;
|
||||
}
|
||||
Delete_One_Agenda_Event();
|
||||
}
|
||||
} className="bton_supprime_dialog" style={{ width: '40%', float: 'right' }}>Supprimer</Button>
|
||||
</div>}
|
||||
|
||||
{String(props.write_access) === "1" && String(p_detail_sequence_session_id) === "" && p_detail_event_id && String(p_detail_event_id) !== "" &&
|
||||
String(agenda_owner_name) !== "Mon Planning" && String(p_filtre1) === "ressource_materielle" && String(props.check_user_acces_right("agenda_materiel_salle", "write")) === "1" &&
|
||||
|
||||
<div className="div_row_droite" style={{ "textAlign": "center" }}>
|
||||
<Button onClick={Close_Dialog_Detail_Event_open} className="bton_annule_dialog" style={{ width: '40%', float: 'right' }}>Fermer</Button>
|
||||
<Button onClick={(e) => {
|
||||
const response = window.confirm("Confirmez-vous la suppression de l'événement ?");
|
||||
if (!response) {
|
||||
return;
|
||||
}
|
||||
Delete_One_Agenda_Event();
|
||||
}
|
||||
} className="bton_supprime_dialog" style={{ width: '40%', float: 'right' }}>Supprimer</Button>
|
||||
</div>}
|
||||
|
||||
{String(props.write_access) === "1" && String(p_detail_sequence_session_id) === "" && p_detail_event_id && String(p_detail_event_id) !== "" &&
|
||||
String(agenda_owner_name) === "Mon Planning" &&
|
||||
<div className="div_row_droite" style={{ "textAlign": "center" }}>
|
||||
|
||||
<Button onClick={Close_Dialog_Detail_Event_open} className="bton_annule_dialog" style={{ width: '40%', float: 'right' }}>Fermer</Button>
|
||||
<Button onClick={(e) => {
|
||||
const response = window.confirm("Confirmez-vous la suppression de l'événement ?");
|
||||
if (!response) {
|
||||
return;
|
||||
}
|
||||
Delete_One_Agenda_Event();
|
||||
}
|
||||
} className="bton_supprime_dialog" style={{ width: '40%', float: 'right' }}>Supprimer</Button>
|
||||
</div>}
|
||||
|
||||
|
||||
|
||||
|
||||
</DialogActions>
|
||||
|
||||
|
||||
|
||||
|
||||
{String(props.write_access) === "1" && String(p_detail_sequence_session_id) === "" && p_detail_event_id && String(p_detail_event_id) !== "" &&
|
||||
String(agenda_owner_name) !== "Mon Planning" && String(p_filtre1) === "ressource_humaine" && String(props.check_user_acces_right("agenda_employes", "write")) === "1" &&
|
||||
<DialogActions>
|
||||
<div className="div_row" style={{ "textAlign": "center" }}>
|
||||
<Button onClick={(e) => {
|
||||
const response = window.confirm("Confirmez-vous la suppression de l'événement ?");
|
||||
if (!response) {
|
||||
return;
|
||||
}
|
||||
Delete_One_Agenda_Event();
|
||||
}
|
||||
} className="bton_supprime_dialog">Supprimer l'événement</Button>
|
||||
</div>
|
||||
|
||||
|
||||
</DialogActions>}
|
||||
|
||||
{String(props.write_access) === "1" && String(p_detail_sequence_session_id) === "" && p_detail_event_id && String(p_detail_event_id) !== "" &&
|
||||
String(agenda_owner_name) !== "Mon Planning" && String(p_filtre1) === "ressource_materielle" && String(props.check_user_acces_right("agenda_materiel_salle", "write")) === "1" && <DialogActions>
|
||||
<div className="div_row" style={{ "textAlign": "center" }}>
|
||||
<Button onClick={(e) => {
|
||||
const response = window.confirm("Confirmez-vous la suppression de l'événement ?");
|
||||
if (!response) {
|
||||
return;
|
||||
}
|
||||
Delete_One_Agenda_Event();
|
||||
}
|
||||
} className="bton_supprime_dialog">Supprimer l'événement</Button>
|
||||
</div>
|
||||
|
||||
|
||||
</DialogActions>}
|
||||
|
||||
{String(props.write_access) === "1" && String(p_detail_sequence_session_id) === "" && p_detail_event_id && String(p_detail_event_id) !== "" &&
|
||||
String(agenda_owner_name) === "Mon Planning" && <DialogActions>
|
||||
<div className="div_row" style={{ "textAlign": "center" }}>
|
||||
<Button onClick={(e) => {
|
||||
const response = window.confirm("Confirmez-vous la suppression de l'événement ?");
|
||||
if (!response) {
|
||||
return;
|
||||
}
|
||||
Delete_One_Agenda_Event();
|
||||
}
|
||||
} className="bton_supprime_dialog">Supprimer l'événement</Button>
|
||||
</div>
|
||||
|
||||
|
||||
</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" }}>
|
||||
|
|
@ -1826,168 +1806,172 @@ const Module_Agenda = (props) => {
|
|||
{agenda_owner_name && String(agenda_owner_name) !== "Mon Planning" && tab_selected_users.length === 1 && <h5> Vous êtes sur le planning de <i> {agenda_owner_name} - ({agenda_owner_type}) </i> </h5>}
|
||||
</div>}
|
||||
|
||||
{tab_selected_users.length <= 1 && <div style={{ "width": "98%", "marginLeft": "5px" }}>
|
||||
|
||||
<div className="session_data" id='mysy_calendar' name="mysy_calendar" style={{height:'850', background:'#FFF'}}>
|
||||
{tab_selected_users.length <= 1 && <div style={{ "width": "98%", "marginLeft": "5px", minHeight:'1100px' }}>
|
||||
|
||||
|
||||
<FullCalendar
|
||||
locales={allLocales}
|
||||
locale={'fr'}
|
||||
editable
|
||||
selectable
|
||||
//events={events}
|
||||
contentHeight='auto'
|
||||
events={mysy_events}
|
||||
<FullCalendar
|
||||
locales={allLocales}
|
||||
locale={'fr'}
|
||||
editable
|
||||
selectable
|
||||
//events={events}
|
||||
contentHeight='auto'
|
||||
events={mysy_events}
|
||||
|
||||
select={handleSelect}
|
||||
headerToolbar={{
|
||||
start: "today prev next",
|
||||
center: "title",
|
||||
end: "dayGridMonth,timeGridWeek,timeGridDay",
|
||||
}}
|
||||
//eventContent={(info) => <EventItem info={info} />}
|
||||
//plugins={[timeGridPlugin]}
|
||||
plugins={[timeGridPlugin, daygridPlugin, interactionPlugin,]}
|
||||
views={["dayGridMonth", "dayGridWeek", "dayGridDay"]}
|
||||
slotMinTime={Partner_Debut_Journee}
|
||||
slotMaxTime={Partner_Fin_Journee}
|
||||
scrollTime='08:00'
|
||||
displayEventEnd={true}
|
||||
eventContent={renderEventContent}
|
||||
eventClick={handleEventClick}
|
||||
eventColor='#378006'
|
||||
/>
|
||||
</div>}
|
||||
select={handleSelect}
|
||||
headerToolbar={{
|
||||
start: "today prev next",
|
||||
center: "title",
|
||||
end: "dayGridMonth,timeGridWeek,timeGridDay",
|
||||
}}
|
||||
//eventContent={(info) => <EventItem info={info} />}
|
||||
//plugins={[timeGridPlugin]}
|
||||
plugins={[timeGridPlugin, daygridPlugin, interactionPlugin,]}
|
||||
views={["dayGridMonth", "dayGridWeek", "dayGridDay"]}
|
||||
slotMinTime={Partner_Debut_Journee}
|
||||
slotMaxTime={Partner_Fin_Journee}
|
||||
scrollTime='08:00'
|
||||
displayEventEnd={true}
|
||||
eventContent={renderEventContent}
|
||||
eventClick={handleEventClick}
|
||||
eventColor='#378006'
|
||||
hiddenDays={[0]}
|
||||
/>
|
||||
</div>}
|
||||
|
||||
{tab_selected_users.length > 1 && <div>
|
||||
<Box
|
||||
sx={{
|
||||
height: 800,
|
||||
width: '100%',
|
||||
paddingRight: '1px',
|
||||
'& .cell--presentiel': {
|
||||
backgroundColor: '#a2cf6e',
|
||||
color: '#1a3e72',
|
||||
fontWeight: 'bold',
|
||||
},
|
||||
{tab_selected_users.length > 1 && <div style={{ "width": "98%", "marginLeft": "5px", minHeight:'1100px' }}>
|
||||
<Box
|
||||
sx={{
|
||||
height: 800,
|
||||
width: '100%',
|
||||
paddingRight: '1px',
|
||||
'& .cell--presentiel': {
|
||||
backgroundColor: '#a2cf6e',
|
||||
color: '#1a3e72',
|
||||
fontWeight: 'bold',
|
||||
},
|
||||
|
||||
|
||||
[`& .${gridClasses.cell}`]: {
|
||||
py: 1,
|
||||
},
|
||||
[`& .${gridClasses.cell}`]: {
|
||||
py: 1,
|
||||
},
|
||||
|
||||
}}
|
||||
>
|
||||
<div className="div_row" style={{ width: "100%", float: "left", padding: "5px" }}>
|
||||
<div style={{ width: '100%', float: 'right', textAlign: 'right' }}>
|
||||
}}
|
||||
>
|
||||
<div className="div_row" style={{ width: "100%", float: "left", padding: "5px" }}>
|
||||
<div style={{ width: '100%', float: 'right', textAlign: 'right' }}>
|
||||
|
||||
<div style={{ width: '15rem', float: 'right' }}>
|
||||
<Button onClick={(event) => {
|
||||
setvisible_start(moment(visible_start).startOf("hour").add(-10, "hour").toDate());
|
||||
setvisible_end(moment(visible_end).startOf("hour").add(-10, "hour").toDate());
|
||||
<div style={{ width: '15rem', float: 'right' }}>
|
||||
<Button onClick={(event) => {
|
||||
setvisible_start(moment(visible_start).startOf("hour").add(-10, "hour").toDate());
|
||||
setvisible_end(moment(visible_end).startOf("hour").add(-10, "hour").toDate());
|
||||
|
||||
}} > <ArrowBackIosNewIcon /> </Button> <Button onClick={(event) => {
|
||||
setvisible_start(moment(visible_start).startOf("hour").add(+10, "hour").toDate());
|
||||
setvisible_end(moment(visible_end).startOf("hour").add(+10, "hour").toDate());
|
||||
}} > <ArrowBackIosNewIcon /> </Button> <Button onClick={(event) => {
|
||||
setvisible_start(moment(visible_start).startOf("hour").add(+10, "hour").toDate());
|
||||
setvisible_end(moment(visible_end).startOf("hour").add(+10, "hour").toDate());
|
||||
|
||||
}} > <ArrowForwardIosIcon /> </Button>
|
||||
}} > <ArrowForwardIosIcon /> </Button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<Timeline
|
||||
groups={tab_selected_users}
|
||||
items={New_Getall_Object_result_Timeline_Item}
|
||||
// defaultTimeStart={defaultTimeStart}
|
||||
// defaultTimeEnd={defaultTimeEnd}
|
||||
visibleTimeStart={visible_start}
|
||||
visibleTimeEnd={visible_end}
|
||||
|
||||
fullUpdate
|
||||
itemTouchSendsClick={false}
|
||||
stackItems
|
||||
itemHeightRatio={0.75}
|
||||
canMove={true}
|
||||
canResize={"both"}
|
||||
onItemDoubleClick={(ItemId) => {
|
||||
}}
|
||||
|
||||
>
|
||||
<TimelineHeaders>
|
||||
|
||||
<DateHeader unit="day"
|
||||
labelFormat="DD/MM/YYYY"
|
||||
style={{ height: 50 }} />
|
||||
|
||||
|
||||
<DateHeader unit="hour"
|
||||
labelFormat="HH:00"
|
||||
style={{ height: 50 }} />
|
||||
|
||||
|
||||
</TimelineHeaders>
|
||||
|
||||
<TimelineMarkers>
|
||||
<TodayMarker />
|
||||
<CustomMarker
|
||||
date={moment().startOf("day").valueOf() + 1000 * 60 * 60 * 2}
|
||||
/>
|
||||
<CustomMarker date={moment().add(3, "day").valueOf()}>
|
||||
{({ styles }) => {
|
||||
const newStyles = { ...styles, backgroundColor: "blue" };
|
||||
return <div style={newStyles} />;
|
||||
}}
|
||||
</CustomMarker>
|
||||
<CursorMarker />
|
||||
</TimelineMarkers>
|
||||
|
||||
</Timeline>
|
||||
<br />
|
||||
|
||||
<div style={{ width: '100%', float: 'right', textAlign: 'right' }}>
|
||||
|
||||
<div style={{ float: 'right' }}>
|
||||
<Button onClick={(event) => {
|
||||
setvisible_start(moment(date_timeline_goto).startOf("hour").add(-3, "hour").toDate());
|
||||
setvisible_end(moment(date_timeline_goto).startOf("hour").add(15, "hour").toDate());
|
||||
|
||||
}} > GO <ExitToAppIcon /> </Button>
|
||||
|
||||
</div>
|
||||
|
||||
<div style={{ width: '15rem', float: 'right', paddingTop: '5px' }}>
|
||||
|
||||
<DatePicker
|
||||
name="event_dialog_start"
|
||||
id="event_dialog_start"
|
||||
selected={date_timeline_goto}
|
||||
onChange={(date) => {
|
||||
|
||||
return setdate_timeline_goto(date);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
className="timeline_datepicker"
|
||||
locale={'fr'}
|
||||
showTimeSelect
|
||||
timeFormat="HH:mm"
|
||||
timeIntervals={15}
|
||||
dateFormat="dd/MM/yyyy HH:mm"
|
||||
is24Hour
|
||||
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<Timeline
|
||||
groups={tab_selected_users}
|
||||
items={New_Getall_Object_result_Timeline_Item}
|
||||
// defaultTimeStart={defaultTimeStart}
|
||||
// defaultTimeEnd={defaultTimeEnd}
|
||||
visibleTimeStart={visible_start}
|
||||
visibleTimeEnd={visible_end}
|
||||
|
||||
fullUpdate
|
||||
itemTouchSendsClick={false}
|
||||
stackItems
|
||||
itemHeightRatio={0.75}
|
||||
canMove={true}
|
||||
canResize={"both"}
|
||||
onItemDoubleClick={(ItemId) => {
|
||||
}}
|
||||
</Box>
|
||||
</div >}
|
||||
|
||||
>
|
||||
<TimelineHeaders>
|
||||
</div>
|
||||
|
||||
<DateHeader unit="day"
|
||||
labelFormat="DD/MM/YYYY"
|
||||
style={{ height: 50 }} />
|
||||
|
||||
|
||||
<DateHeader unit="hour"
|
||||
labelFormat="HH:00"
|
||||
style={{ height: 50 }} />
|
||||
|
||||
|
||||
</TimelineHeaders>
|
||||
|
||||
<TimelineMarkers>
|
||||
<TodayMarker />
|
||||
<CustomMarker
|
||||
date={moment().startOf("day").valueOf() + 1000 * 60 * 60 * 2}
|
||||
/>
|
||||
<CustomMarker date={moment().add(3, "day").valueOf()}>
|
||||
{({ styles }) => {
|
||||
const newStyles = { ...styles, backgroundColor: "blue" };
|
||||
return <div style={newStyles} />;
|
||||
}}
|
||||
</CustomMarker>
|
||||
<CursorMarker />
|
||||
</TimelineMarkers>
|
||||
|
||||
</Timeline>
|
||||
<br />
|
||||
|
||||
<div style={{ width: '100%', float: 'right', textAlign: 'right' }}>
|
||||
|
||||
<div style={{ float: 'right' }}>
|
||||
<Button onClick={(event) => {
|
||||
setvisible_start(moment(date_timeline_goto).startOf("hour").add(-3, "hour").toDate());
|
||||
setvisible_end(moment(date_timeline_goto).startOf("hour").add(15, "hour").toDate());
|
||||
|
||||
}} > GO <ExitToAppIcon /> </Button>
|
||||
|
||||
</div>
|
||||
|
||||
<div style={{ width: '15rem', float: 'right', paddingTop: '5px' }}>
|
||||
|
||||
<DatePicker
|
||||
name="event_dialog_start"
|
||||
id="event_dialog_start"
|
||||
selected={date_timeline_goto}
|
||||
onChange={(date) => {
|
||||
|
||||
return setdate_timeline_goto(date);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
className="timeline_datepicker"
|
||||
locale={'fr'}
|
||||
showTimeSelect
|
||||
timeFormat="HH:mm"
|
||||
timeIntervals={15}
|
||||
dateFormat="dd/MM/yyyy HH:mm"
|
||||
is24Hour
|
||||
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</Box>
|
||||
</div >}
|
||||
|
||||
<style>{local_css}</style>
|
||||
<style>{local_css}</style>
|
||||
|
||||
</div >
|
||||
)
|
||||
|
|
@ -1999,10 +1983,25 @@ export default Module_Agenda;
|
|||
const local_css = `
|
||||
.react-datepicker-wrapper{
|
||||
width: 100%;
|
||||
|
||||
}
|
||||
|
||||
.fc-event-main{
|
||||
.fc-event-main{
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.fc .fc-timegrid-slot {
|
||||
height: 35px !important;
|
||||
}
|
||||
|
||||
.fc .fc-timegrid-slot-label-cushion {
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
color: #475569;
|
||||
}
|
||||
|
||||
.fc .fc-timegrid-axis-cushion {
|
||||
font-size: 13px;
|
||||
color: #64748b;
|
||||
}
|
||||
|
||||
`;
|
||||
|
|
@ -7457,7 +7457,7 @@ const Module_Session_Planification = (props) => {
|
|||
eventContent={renderEventContent}
|
||||
eventClick={handleEventClick}
|
||||
eventChange={handleEventChange}
|
||||
hiddenDays={[0]}
|
||||
hiddenDays={[0]}
|
||||
|
||||
/>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -3750,11 +3750,7 @@ const Partner = (props) => {
|
|||
<span>Admin Platefome</span>
|
||||
</button>
|
||||
|
||||
|
||||
<button type="button" className="footer-link">
|
||||
<Settings size={16} />
|
||||
<span>Paramètres</span>
|
||||
</button>
|
||||
|
||||
<button type="button" className="footer-link footer-link-danger" onClick={(event) => {
|
||||
setDialog_deconnexion_open(true);
|
||||
}}>
|
||||
|
|
|
|||
|
|
@ -508,7 +508,12 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
}).catch((error) => {
|
||||
console.warn('Not good man :( Getall_Training_Employee_No_Filter = ', error);
|
||||
setGetall_Training_Employee_No_Filter_api("false");
|
||||
alert(" Impossible de recuperer la liste des employés");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Impossible de recuperer la liste des employés");
|
||||
setalert_type("error");
|
||||
|
||||
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
}
|
||||
|
|
@ -531,7 +536,7 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
var new_dead_line_format = "";
|
||||
|
||||
if (typeof p_activite_deadline == "object") {
|
||||
var act_deadline = format(p_activite_deadline, 'dd/MM/yyyy');
|
||||
var act_deadline = format(p_activite_deadline, 'dd/MM/yyyy HH:mm:ss');
|
||||
new_dead_line_format = act_deadline;
|
||||
} else {
|
||||
new_dead_line_format = p_activite_deadline;
|
||||
|
|
@ -556,17 +561,31 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
|
||||
|
||||
// Controle d'integrité des infos
|
||||
|
||||
if (p_activite_type.length == 0) {
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" vous devez choisir une type d'activité ");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var activite_description = ""
|
||||
if (document.getElementsByName("activite_description")) {
|
||||
activite_description = document.getElementsByName("activite_description")[0].value;
|
||||
}
|
||||
if (activite_description.length == 0) {
|
||||
alert(" Le champ 'Description' est vide ");
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Le champ 'Description' est vide ");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
if (activite_description.length > 255) {
|
||||
alert(" Le champ 'Description' comporte plus de 255 caractères ");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Le champ 'Description' comporte plus de 255 caractères ");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -576,7 +595,10 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
activite_detail = document.getElementsByName("activite_detail")[0].value;
|
||||
}
|
||||
if (activite_detail.length > 500) {
|
||||
alert(" Le champ 'Détail' comporte plus de 500 caractères ");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Le champ 'Détail' comporte plus de 500 caractères ");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -634,7 +656,9 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
console.warn('Not good man :( recordPartnerClient_Activite_Data = ', error);
|
||||
setrecordPartnerClient_Activite_Data_result("false");
|
||||
setrecordPartnerClient_Activite_Data_message(" Impossible d'ajouter l'activité ")
|
||||
alert(" Impossible d'ajouter/mettre à jour l'activité ");
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Impossible d'ajouter/mettre à jour l'activité ");
|
||||
setalert_type("error");
|
||||
|
||||
})
|
||||
}
|
||||
|
|
@ -1578,7 +1602,7 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
|
||||
<div className="div_row" style={{ "width": "100%", }}>
|
||||
{type_activite_list && type_activite_list.length > 0 && <div className="session_caract_Dialog" style={{ "textAlign": "left", "width": "50%", "height": "5rem", "float": "left" }}>
|
||||
Type d'activité <br />
|
||||
<b> Type d'activité </b> <br />
|
||||
|
||||
<Autocomplete
|
||||
disablePortal
|
||||
|
|
@ -1592,6 +1616,9 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
if (value && value.value) {
|
||||
setp_activite_type(value.value);
|
||||
setdatamodification_activite("1");
|
||||
} else {
|
||||
setp_activite_type("");
|
||||
setdatamodification_activite("1");
|
||||
}
|
||||
}}
|
||||
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
|
||||
|
|
@ -1721,7 +1748,7 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
Dialog_ACTIVITE_handleClose_buton();
|
||||
|
||||
}}
|
||||
className="bton_enreg_dialog">Mettre à jour </Button>}
|
||||
className="bton_enreg_dialog" style={{ width: '40%', float: 'left' }}>Mettre à jour </Button>}
|
||||
|
||||
|
||||
{String(selected_id).length < 2 && <Button onClick={(e) => {
|
||||
|
|
@ -1729,26 +1756,27 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
Dialog_ACTIVITE_handleClose_buton();
|
||||
|
||||
}}
|
||||
className="bton_enreg_dialog">Ajouter </Button>}
|
||||
className="bton_enreg_dialog" style={{ width: '40%', float: 'left' }}>Ajouter </Button>}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||
<Button onClick={Dialog_ACTIVITE_handleClose_buton} className="bton_annule_dialog" >Fermer</Button>
|
||||
</div>
|
||||
{String(selected_id).length < 2 && <div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||
<Button onClick={Dialog_ACTIVITE_handleClose_buton} className="bton_annule_dialog" style={{ width: '40%', float: 'right' }}>Fermer</Button>
|
||||
</div>}
|
||||
|
||||
{selected_id && String(selected_id).length > 2 && <div className="div_row">
|
||||
<div className="div_row" style={{ "textAlign": "center", "marginTop": "10px" }}>
|
||||
<Button onClick={(e) => {
|
||||
const response = window.confirm("Confirmez-vous la suppression de l'opportunité ?");
|
||||
if (!response) {
|
||||
return;
|
||||
}
|
||||
handleClick_delete_Activite_data_from_id(selected_id);
|
||||
{selected_id && String(selected_id).length > 2 && <div className="div_row_droite">
|
||||
<Button onClick={Dialog_ACTIVITE_handleClose_buton} className="bton_annule_dialog" style={{ width: '40%', float: 'left' }} >Fermer</Button>
|
||||
|
||||
<Button onClick={(e) => {
|
||||
const response = window.confirm("Confirmez-vous la suppression de l'opportunité ?");
|
||||
if (!response) {
|
||||
return;
|
||||
}
|
||||
} className="bton_supprime_dialog">Supprimer l'activité</Button>
|
||||
</div>
|
||||
handleClick_delete_Activite_data_from_id(selected_id);
|
||||
}
|
||||
} className="bton_supprime_dialog" style={{ width: '40%', float: 'left' }}>Supprimer</Button>
|
||||
|
||||
</div>}
|
||||
</div>
|
||||
|
||||
|
|
@ -2206,7 +2234,7 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
</div>}
|
||||
|
||||
{String(formedit_mode_activite) === "1" && type_activite_list && type_activite_list.length > 0 && <div className="training_caract">
|
||||
Type d'activité <br />
|
||||
<b> Type d'activité </b><br />
|
||||
|
||||
<Autocomplete
|
||||
disablePortal
|
||||
|
|
@ -2219,6 +2247,8 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
onChange={(event, value) => {
|
||||
if (value && value.value) {
|
||||
setp_activite_type(value.value);
|
||||
} else {
|
||||
setp_activite_type("");
|
||||
}
|
||||
}}
|
||||
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
|
||||
|
|
@ -2232,7 +2262,7 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
</div>}
|
||||
|
||||
{String(formedit_mode_activite) === "0" && <div className="training_caract">
|
||||
Type d'activité <br />
|
||||
<b> Type d'activité </b> <br />
|
||||
<TextField
|
||||
required
|
||||
name="activite_type"
|
||||
|
|
|
|||
|
|
@ -138,20 +138,24 @@ const Partner_Client = (props) => {
|
|||
const columns_clients = [
|
||||
{ field: 'id', headerName: 'id', hide: true },
|
||||
{ field: '_id', headerName: '_id', hide: true },
|
||||
{ field: 'client_facturation_id', headerName: 'client_facturation_id', hide: true },
|
||||
{ field: 'client_facturation_id', headerName: 'client_facturation_id', hide: true },
|
||||
{ field: 'responsable_compte_id', headerName: 'responsable_compte_id', hide: true },
|
||||
|
||||
|
||||
{ field: 'raison_sociale', headerName: 'Raison sociale', Width: 200, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'nom', headerName: 'nom', width: 100, hide: false, editable: false, Width: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'email', headerName: 'email', width: 100, width: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'nom', headerName: 'nom', width: 100, hide: true, editable: false, Width: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'email', headerName: 'email', width: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
|
||||
{ field: 'telephone', headerName: 'Téléphone', width: 100, hide: false, editable: false, width: 100, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'adr_adresse', headerName: 'Adresse', width: 100, hide: true, editable: false, width: 100, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'adr_code_postal', headerName: 'Code Postal', width: 100, hide: false, editable: false, width: 100, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'telephone', headerName: 'Téléphone', width: 150, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'adr_adresse', headerName: 'Adresse', width: 100, hide: true, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'adr_code_postal', headerName: 'Code Postal', width: 100, hide: true, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'adr_ville', headerName: 'Ville', width: 100, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'adr_pays', headerName: 'Pays', width: 100, hide: true, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
|
||||
{ field: 'client_facturation_raison_sociale', headerName: 'Cl. Facturé', width: 100, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'responsable_compte_nom_prenom', headerName: 'Resp. Compte', flex: 1, maxWidth: 250, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
|
||||
|
||||
{ field: 'client_facturation_raison_sociale', headerName: 'Cl. Facturé', width: 100, hide: true, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
|
||||
|
||||
{ field: 'siret', headerName: 'Siret', width: 100, hide: true, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
|
|
@ -174,7 +178,7 @@ const Partner_Client = (props) => {
|
|||
},
|
||||
|
||||
{
|
||||
field: 'is_prospect', headerName: 'Pros/Cli', width: 100, hide: false, editable: false,
|
||||
field: 'is_prospect', headerName: 'Pros/Cli', width: 100, hide: true, editable: false,
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
|
||||
|
|
@ -1347,7 +1351,7 @@ const Partner_Client = (props) => {
|
|||
<div className="div_row">
|
||||
|
||||
|
||||
<h3 style={{ fontFamily: 'DM Sans' }}> Clients & Organismes Financeurs</h3>
|
||||
<h3 style={{ fontFamily: 'DM Sans' }}> Clients & Partnenaires</h3>
|
||||
|
||||
<div className="titre1"> Utilisez les filtres !</div>
|
||||
<div>
|
||||
|
|
@ -1853,6 +1857,10 @@ const Partner_Client = (props) => {
|
|||
client_facturation_id: JSON.parse(item).client_facturation_id,
|
||||
client_facturation_raison_sociale: JSON.parse(item).client_facturation_raison_sociale,
|
||||
|
||||
responsable_compte_id: JSON.parse(item).responsable_compte_id,
|
||||
responsable_compte_nom_prenom: JSON.parse(item).responsable_compte_nom_prenom,
|
||||
|
||||
|
||||
}
|
||||
))}
|
||||
|
||||
|
|
@ -2027,7 +2035,7 @@ const Partner_Client = (props) => {
|
|||
|
||||
<Button variant="outlined" onClick={handleClick_add_new_client}
|
||||
className="detail_class_submenu bton_add_session"
|
||||
id='menu_one_participant' name='menu_one_participant' style={{ maxWidth: '20rem' }}> Ajout 1 Client / Financeur <img src={participants} alt="ajout un client" className="icon_plus" />
|
||||
id='menu_one_participant' name='menu_one_participant' style={{ maxWidth: '20rem' }}> Ajout 1 Client / Partnenaire <img src={participants} alt="ajout un client" className="icon_plus" />
|
||||
|
||||
|
||||
</Button>
|
||||
|
|
@ -2053,7 +2061,7 @@ const Partner_Client = (props) => {
|
|||
</div>
|
||||
|
||||
|
||||
{String(Edite_Client) === "1" && <div className="div_row" style={{ "paddingRight": "10px" }}>
|
||||
{String(Edite_Client) === "1" && <div className="div_row" style={{ "paddingRight": "10px" }}>
|
||||
|
||||
<AddParnerClient client_mail={Client_email}
|
||||
clien_nom={Client_nom}
|
||||
|
|
@ -2066,8 +2074,6 @@ const Partner_Client = (props) => {
|
|||
</div>}
|
||||
|
||||
{String(Edite_Client) === "2" && <div className="div_row">
|
||||
|
||||
<div className="titre1"> Nouveau client / financeur</div>
|
||||
<div ref={myRef_add_client}> </div>
|
||||
<AddParnerClient client_mail={Client_email}
|
||||
clien_nom={Client_nom}
|
||||
|
|
|
|||
|
|
@ -10608,9 +10608,9 @@ const Partner_Facture = (props) => {
|
|||
|
||||
parseFloat(New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['remaining_amount']) > 0 && <nav className="block_paiement_montant" style={{ background: "#ffd600" }}>
|
||||
|
||||
<nav style={{ "width": '45%', 'float': 'left', "textAlign": 'left', }}><b> Montant Non réglé </b> </nav> <nav style={{ "width": '45%', 'float': 'right', "textAlign": 'right' }}> <b> {New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['remaining_amount']} </b> </nav> <br />
|
||||
<nav style={{ "width": '45%', 'float': 'left', "textAlign": 'left' }}> Montant Réglé </nav> <nav style={{ "width": '45%', 'float': 'right', "textAlign": 'right' }}> {New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['payed_amount']} </nav><br />
|
||||
<nav style={{ "width": '45%', 'float': 'left', "textAlign": 'left' }}> Montant Total Facture </nav> <nav style={{ "width": '45%', 'float': 'right', "textAlign": 'right' }}> {New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['total_amount']} </nav> <br />
|
||||
<nav style={{ "width": '45%', 'float': 'left', "textAlign": 'left', }}><b> Montant Non réglé </b> </nav> <nav style={{ "width": '45%', 'float': 'right', "textAlign": 'right' }}> <b> {local_format_monetaire(New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['remaining_amount'])} </b> </nav> <br />
|
||||
<nav style={{ "width": '45%', 'float': 'left', "textAlign": 'left' }}> Montant Réglé </nav> <nav style={{ "width": '45%', 'float': 'right', "textAlign": 'right' }}> {local_format_monetaire(New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['payed_amount'])} </nav><br />
|
||||
<nav style={{ "width": '45%', 'float': 'left', "textAlign": 'left' }}> Montant Total Facture </nav> <nav style={{ "width": '45%', 'float': 'right', "textAlign": 'right' }}> {local_format_monetaire(New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['total_amount'])} </nav> <br />
|
||||
|
||||
</nav>}
|
||||
|
||||
|
|
@ -10621,9 +10621,9 @@ const Partner_Facture = (props) => {
|
|||
|
||||
parseFloat(New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['remaining_amount']) <= 0 && <nav className="block_paiement_montant">
|
||||
|
||||
<nav style={{ "width": '45%', 'float': 'left', "textAlign": 'left', 'fontWeight': '700px' }}> Montant Non réglé </nav> <nav style={{ "width": '45%', 'float': 'right', "textAlign": 'right' }}> {New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['remaining_amount']} </nav> <br />
|
||||
<nav style={{ "width": '45%', 'float': 'left', "textAlign": 'left' }}> Montant Réglé </nav> <nav style={{ "width": '45%', 'float': 'right', "textAlign": 'right' }}> {New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['payed_amount']} </nav><br />
|
||||
<nav style={{ "width": '45%', 'float': 'left', "textAlign": 'left' }}> Montant Total Facture </nav> <nav style={{ "width": '45%', 'float': 'right', "textAlign": 'right' }}> {New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['total_amount']} </nav> <br />
|
||||
<nav style={{ "width": '45%', 'float': 'left', "textAlign": 'left', 'fontWeight': '700px' }}> Montant Non réglé </nav> <nav style={{ "width": '45%', 'float': 'right', "textAlign": 'right' }}> {local_format_monetaire(New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['remaining_amount'])} </nav> <br />
|
||||
<nav style={{ "width": '45%', 'float': 'left', "textAlign": 'left' }}> Montant Réglé </nav> <nav style={{ "width": '45%', 'float': 'right', "textAlign": 'right' }}> {local_format_monetaire(New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['payed_amount'])} </nav><br />
|
||||
<nav style={{ "width": '45%', 'float': 'left', "textAlign": 'left' }}> Montant Total Facture </nav> <nav style={{ "width": '45%', 'float': 'right', "textAlign": 'right' }}> {local_format_monetaire(New_Getall_Invoice_Paiement_Payed_Remain_Amounts_result[0]['total_amount'])} </nav> <br />
|
||||
|
||||
</nav>}
|
||||
</div>}
|
||||
|
|
|
|||
Loading…
Reference in New Issue