13/05/26 - 17h
parent
88e13597ee
commit
da5232200d
|
|
@ -271,9 +271,11 @@ const AddParnerClient = (props) => {
|
|||
);
|
||||
}
|
||||
function ExpandableCell_String_to_monetaire({ value }) {
|
||||
var new_val = String(value).replaceAll(" ", '');
|
||||
const [expanded, setExpanded] = React.useState(false);
|
||||
|
||||
const number = parseFloat(value);
|
||||
const number = parseFloat(new_val);
|
||||
|
||||
var new_value = ""
|
||||
if (isNaN(number)) {
|
||||
new_value = "—"
|
||||
|
|
@ -328,73 +330,6 @@ const AddParnerClient = (props) => {
|
|||
|
||||
{ field: 'commentaire', headerName: 'commentaire', flex: 1, editable: false, hide: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
|
||||
|
||||
|
||||
{
|
||||
field: "delete", headerName: 'Supprimer', disableExport: true,
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
<div style={{ width: '100%', textAlign: 'center' }}>
|
||||
{String(props.check_user_acces_right("facture", "write")) === "1" &&
|
||||
cellValues.row.invoice_header_type !== "brouillon" && <FcCancel />}
|
||||
{String(props.check_user_acces_right("facture", "write")) === "1" &&
|
||||
cellValues.row.invoice_header_type === "brouillon" && <Popup
|
||||
trigger={<Button
|
||||
|
||||
onClick={(event) => {
|
||||
// handleClick_delete(event, cellValues);
|
||||
}}
|
||||
>
|
||||
<CiTrash />
|
||||
|
||||
</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">
|
||||
{' '}
|
||||
|
||||
En confirmant cette opération, le document sera <i><font color="red"> définitivement supprimé</font></i>. <br />
|
||||
|
||||
</div>
|
||||
<div className="gest_actions">
|
||||
<div style={{ "width": "45%", "float": "left" }}>
|
||||
<button className="gest_bton_popup" onClick={(event) => {
|
||||
// Delete_Draft_Invoice_Header_AndLine_Data(event, cellValues);
|
||||
//console.log('modal closed ');
|
||||
close();
|
||||
}}> Valider </button>
|
||||
|
||||
</div>
|
||||
<div style={{ "width": "45%", "float": "right" }}>
|
||||
<button
|
||||
className="gest_bton_popup_annuler"
|
||||
onClick={() => {
|
||||
//console.log('modal closed ');
|
||||
close();
|
||||
}}
|
||||
>
|
||||
Annuler
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</Popup>}
|
||||
</div>
|
||||
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
]
|
||||
|
||||
function sleep(ms) {
|
||||
|
|
@ -5345,6 +5280,9 @@ const AddParnerClient = (props) => {
|
|||
|
||||
</Button>
|
||||
{<Button variant="outlined" onClick={submenu_activite} className="detail_submenu client_menu" id='submenu_activite' name='submenu_activite'>Activités</Button>}
|
||||
<Button variant="outlined" onClick={submenu_paiement} className="detail_submenu client_menu" id='submenu_paiement' name='submenu_paiement'>Paiements</Button>
|
||||
<Button variant="outlined" onClick={submenu_relance} className="detail_submenu client_menu" id='submenu_relance' name='submenu_relance'>Relances</Button>
|
||||
|
||||
<Button variant="outlined" onClick={submenu_piece_jointe} className="detail_submenu client_menu" id='submenu_piece_jointe' name='submenu_piece_jointe'>Pièces Jointes</Button>
|
||||
|
||||
<Button variant="outlined" className="detail_submenu client_menu" id='submenu_factures' name='submenu_factures'
|
||||
|
|
@ -5376,8 +5314,7 @@ const AddParnerClient = (props) => {
|
|||
</Button>
|
||||
|
||||
|
||||
<Button variant="outlined" onClick={submenu_paiement} className="detail_submenu client_menu" id='submenu_paiement' name='submenu_paiement'>Paiements</Button>
|
||||
<Button variant="outlined" onClick={submenu_relance} className="detail_submenu client_menu" id='submenu_relance' name='submenu_relance'>Relances</Button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
|
@ -6854,182 +6791,6 @@ const AddParnerClient = (props) => {
|
|||
|
||||
</div>}
|
||||
|
||||
|
||||
{String(submenu).trim() === "submenu_paiement" && <div className="training_data">
|
||||
Total Paiement - {local_format_monetaire(New_Get_All_Paiement_Total_Payed)} * Paiement en attente --- * paiement en retard<br />
|
||||
<div className="div_row" style={{ "border": "None", paddingRight: '10px' }}>
|
||||
|
||||
<div className="session_data">
|
||||
|
||||
{/*rowss_total_data && rowss_total_data.length > 0 && rowss_total_data.map((val) => (<nav style={{ "textAlign": 'right', 'marginRight': '15px', "fontWeight": "600", "fontSize": "15px", "paddingTop": "2px" }}> {parseFloat(String(val.somme_header_ca_ht)).toLocaleString()} (€) HT/ {val.nb_header_invoice} Factures </nav>))*/}
|
||||
|
||||
<div style={{ "border": "None" }}>
|
||||
<div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
|
||||
|
||||
<Box
|
||||
sx={{
|
||||
height: 500,
|
||||
width: '100%',
|
||||
paddingRight: '1px',
|
||||
|
||||
// Gestion des cellule "statut"
|
||||
'& .cell--status--encours': {
|
||||
backgroundColor: '#E6F7C8',
|
||||
color: '#1a3e72',
|
||||
fontWeight: 'light',
|
||||
},
|
||||
'& .cell--status--traite': {
|
||||
backgroundColor: '#E6CEAA',
|
||||
color: '#F9E79F',
|
||||
fontWeight: 'light',
|
||||
},
|
||||
|
||||
/*"& .MuiDataGrid-virtualScrollerRenderZone": {
|
||||
"& .MuiDataGrid-row": {
|
||||
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
|
||||
}
|
||||
},*/
|
||||
"& .MuiDataGrid-columnHeaders": {
|
||||
backgroundColor: "#dfe8f2",
|
||||
color: "#0a2a4d",
|
||||
fontSize: '14px',
|
||||
fontFamily: 'DM Sans',
|
||||
},
|
||||
"& .MuiDataGrid-renderingZone, .MuiDataGrid-root .MuiDataGrid-row": {
|
||||
width: '100%',
|
||||
},
|
||||
|
||||
'& .line--statut--selected': {
|
||||
backgroundColor: '#e9f7f1',
|
||||
color: '#0a2a4d',
|
||||
},
|
||||
'& .line--statut--pair': {
|
||||
backgroundColor: 'rgba(235, 235, 235, .7)',
|
||||
color: '#0a2a4d',
|
||||
},
|
||||
'& .line--statut--impair': {
|
||||
backgroundColor: '#FFFFFF',
|
||||
color: '#0a2a4d',
|
||||
},
|
||||
|
||||
|
||||
'& .line--statut--payed': {
|
||||
backgroundColor: '#EAFAF1',
|
||||
color: '#239B56',
|
||||
fontWeight: '700'
|
||||
},
|
||||
|
||||
|
||||
}}
|
||||
>
|
||||
<DataGrid
|
||||
|
||||
components={{
|
||||
Toolbar: CustomToolbar
|
||||
}}
|
||||
componentsProps={{ toolbar: { data_colums: columns_paiement } }}
|
||||
|
||||
checkboxSelection
|
||||
disableSelectionOnClick
|
||||
onSelectionModelChange={(newSelectionModel) => {
|
||||
setselectionModel_paiement(newSelectionModel);
|
||||
/*if (newSelectionModel.length === 1)
|
||||
handleClick_edit_invoice_From_Line(newSelectionModel);*/
|
||||
if (newSelectionModel.length !== 1) {
|
||||
//clean_order_detail_fields();
|
||||
//setsubmenu();
|
||||
// setdisplay_detail_invoice();
|
||||
|
||||
}
|
||||
}}
|
||||
|
||||
|
||||
|
||||
onRowDoubleClick={(newSelectionModel) => {
|
||||
|
||||
}
|
||||
}
|
||||
selectionModel={selectionModel_paiement}
|
||||
|
||||
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
|
||||
rows={Get_All_Paiement_of_Client_result.map((item, index) => (
|
||||
{
|
||||
id: index,
|
||||
_id: JSON.parse(item)._id,
|
||||
invoice_id: JSON.parse(item).invoice_id,
|
||||
|
||||
paiement_amount: JSON.parse(item).paiement_amount,
|
||||
paiement_mode: JSON.parse(item).paiement_mode,
|
||||
paiement_ref: JSON.parse(item).paiement_ref,
|
||||
paiement_date: JSON.parse(item).paiement_date,
|
||||
commentaire: JSON.parse(item).commentaire,
|
||||
client_id: JSON.parse(item).client_id,
|
||||
invoice_ref: JSON.parse(item).invoice_ref,
|
||||
|
||||
}
|
||||
))}
|
||||
|
||||
columns={columns_paiement}
|
||||
pageSize={10}
|
||||
className="datagridclass"
|
||||
|
||||
rowsPerPageOptions={[10]}
|
||||
//disableSelectionOnClick
|
||||
/* components={{
|
||||
Toolbar: GridToolbar,
|
||||
}}*/
|
||||
|
||||
|
||||
//sx={datagridSx}
|
||||
getCellClassName={(params) => {
|
||||
|
||||
}}
|
||||
getRowClassName={(params) => {
|
||||
|
||||
if (parseInt(parseFloat(params.row.reste_to_paye)) <= 0 && String(params.row.invoice_header_type) === "facture") {
|
||||
|
||||
return 'line--statut--payed';
|
||||
}
|
||||
|
||||
// Pour la gestion de la couleur de zone double cliquée
|
||||
if (String(params.row.id) === String(gridline_id_paiement)) {
|
||||
return 'line--statut--selected';
|
||||
}
|
||||
else if (parseInt(String(params.row.id)) % 2 === 0) {
|
||||
return 'line--statut--pair';
|
||||
}
|
||||
else if (parseInt(String(params.row.id)) % 2 !== 0) {
|
||||
return 'line--statut--impair';
|
||||
}
|
||||
}}
|
||||
|
||||
|
||||
/>
|
||||
</Box>
|
||||
<br />
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
ICIII FAIRE UN HISTOGRAMME DES PAIEMENT SUR LES 6 DERNIMER MOIS
|
||||
|
||||
</div>
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
{String(submenu).trim() === "submenu_relance" && <div className="training_data">
|
||||
submenu_relance <br />
|
||||
|
||||
<Module_Relance_Client_Facture
|
||||
client_id={props.client_id} />
|
||||
</div>}
|
||||
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
|
|
@ -7623,7 +7384,7 @@ const AddParnerClient = (props) => {
|
|||
<h3 style={{ color: '#0a2a4d' }}>{p_client_raison_sociale}</h3>
|
||||
<div className="client-badges" style={{ color: '#0a2a4d' }}>
|
||||
<span className="badge badge-green">{p_client_is_company === "1" && "Entreprise"} {p_client_is_company !== "1" && "Particulier"} </span>
|
||||
<span className="badge badge-orange">Compte prioritaire</span>
|
||||
|
||||
{p_detail_archive && String(p_detail_archive) === "1" && <span className="badge badge-orange">Archivé</span>}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -9124,6 +8885,184 @@ const AddParnerClient = (props) => {
|
|||
|
||||
</div>}
|
||||
|
||||
{String(submenu).trim() === "submenu_paiement" && <div>
|
||||
|
||||
{Get_All_Paiement_of_Client_result && Get_All_Paiement_of_Client_result.length > 0 &&
|
||||
<div className="div_row" style={{ "border": "None", paddingRight: '10px' }}>
|
||||
<h3 className="mysy_h3" style={{ textAlign: 'center', color: 'green' }}>Total Paiement - {local_format_monetaire(New_Get_All_Paiement_Total_Payed)}</h3>
|
||||
|
||||
|
||||
<div className="session_data" style={{ background: '#FFF' }}>
|
||||
|
||||
<div style={{ "border": "None" }}>
|
||||
<div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
|
||||
|
||||
<Box
|
||||
sx={{
|
||||
height: 500,
|
||||
width: '100%',
|
||||
paddingRight: '1px',
|
||||
|
||||
// Gestion des cellule "statut"
|
||||
'& .cell--status--encours': {
|
||||
backgroundColor: '#E6F7C8',
|
||||
color: '#1a3e72',
|
||||
fontWeight: 'light',
|
||||
},
|
||||
'& .cell--status--traite': {
|
||||
backgroundColor: '#E6CEAA',
|
||||
color: '#F9E79F',
|
||||
fontWeight: 'light',
|
||||
},
|
||||
|
||||
/*"& .MuiDataGrid-virtualScrollerRenderZone": {
|
||||
"& .MuiDataGrid-row": {
|
||||
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
|
||||
}
|
||||
},*/
|
||||
"& .MuiDataGrid-columnHeaders": {
|
||||
backgroundColor: "#dfe8f2",
|
||||
color: "#0a2a4d",
|
||||
fontSize: '14px',
|
||||
fontFamily: 'DM Sans',
|
||||
},
|
||||
"& .MuiDataGrid-renderingZone, .MuiDataGrid-root .MuiDataGrid-row": {
|
||||
width: '100%',
|
||||
},
|
||||
|
||||
'& .line--statut--selected': {
|
||||
backgroundColor: '#e9f7f1',
|
||||
color: '#0a2a4d',
|
||||
},
|
||||
'& .line--statut--pair': {
|
||||
backgroundColor: 'rgba(235, 235, 235, .7)',
|
||||
color: '#0a2a4d',
|
||||
},
|
||||
'& .line--statut--impair': {
|
||||
backgroundColor: '#FFFFFF',
|
||||
color: '#0a2a4d',
|
||||
},
|
||||
|
||||
|
||||
'& .line--statut--payed': {
|
||||
backgroundColor: '#EAFAF1',
|
||||
color: '#239B56',
|
||||
fontWeight: '700'
|
||||
},
|
||||
|
||||
|
||||
}}
|
||||
>
|
||||
<DataGrid
|
||||
|
||||
components={{
|
||||
Toolbar: CustomToolbar
|
||||
}}
|
||||
componentsProps={{ toolbar: { data_colums: columns_paiement } }}
|
||||
|
||||
// checkboxSelection
|
||||
disableSelectionOnClick
|
||||
onSelectionModelChange={(newSelectionModel) => {
|
||||
setselectionModel_paiement(newSelectionModel);
|
||||
/*if (newSelectionModel.length === 1)
|
||||
handleClick_edit_invoice_From_Line(newSelectionModel);*/
|
||||
if (newSelectionModel.length !== 1) {
|
||||
//clean_order_detail_fields();
|
||||
//setsubmenu();
|
||||
// setdisplay_detail_invoice();
|
||||
|
||||
}
|
||||
}}
|
||||
|
||||
|
||||
|
||||
onRowDoubleClick={(newSelectionModel) => {
|
||||
|
||||
}
|
||||
}
|
||||
selectionModel={selectionModel_paiement}
|
||||
|
||||
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
|
||||
rows={Get_All_Paiement_of_Client_result.map((item, index) => (
|
||||
{
|
||||
id: index,
|
||||
_id: JSON.parse(item)._id,
|
||||
invoice_id: JSON.parse(item).invoice_id,
|
||||
|
||||
paiement_amount: JSON.parse(item).paiement_amount,
|
||||
paiement_mode: JSON.parse(item).paiement_mode,
|
||||
paiement_ref: JSON.parse(item).paiement_ref,
|
||||
paiement_date: JSON.parse(item).paiement_date,
|
||||
commentaire: JSON.parse(item).commentaire,
|
||||
client_id: JSON.parse(item).client_id,
|
||||
invoice_ref: JSON.parse(item).invoice_ref,
|
||||
|
||||
}
|
||||
))}
|
||||
|
||||
columns={columns_paiement}
|
||||
pageSize={10}
|
||||
className="datagridclass"
|
||||
|
||||
rowsPerPageOptions={[10]}
|
||||
//disableSelectionOnClick
|
||||
/* components={{
|
||||
Toolbar: GridToolbar,
|
||||
}}*/
|
||||
|
||||
|
||||
//sx={datagridSx}
|
||||
getCellClassName={(params) => {
|
||||
|
||||
}}
|
||||
getRowClassName={(params) => {
|
||||
|
||||
if (parseInt(parseFloat(params.row.reste_to_paye)) <= 0 && String(params.row.invoice_header_type) === "facture") {
|
||||
|
||||
return 'line--statut--payed';
|
||||
}
|
||||
|
||||
// Pour la gestion de la couleur de zone double cliquée
|
||||
if (String(params.row.id) === String(gridline_id_paiement)) {
|
||||
return 'line--statut--selected';
|
||||
}
|
||||
else if (parseInt(String(params.row.id)) % 2 === 0) {
|
||||
return 'line--statut--pair';
|
||||
}
|
||||
else if (parseInt(String(params.row.id)) % 2 !== 0) {
|
||||
return 'line--statut--impair';
|
||||
}
|
||||
}}
|
||||
|
||||
|
||||
/>
|
||||
</Box>
|
||||
<br />
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>}
|
||||
|
||||
{!Get_All_Paiement_of_Client_result || Get_All_Paiement_of_Client_result.length > 0 &&
|
||||
<div>
|
||||
Aucun paiement
|
||||
</div>}
|
||||
|
||||
</div>}
|
||||
|
||||
{String(submenu).trim() === "submenu_relance" && <div>
|
||||
|
||||
<Module_Relance_Client_Facture
|
||||
client_id={props.client_id}
|
||||
client_12_retard_a_payer={client_12_retard_a_payer} />
|
||||
</div>}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
|
@ -10641,4 +10580,9 @@ position: relative;
|
|||
.elyos-btn-secondary {
|
||||
width: 100%;
|
||||
}
|
||||
.mysy_h3 {
|
||||
margin: 0;
|
||||
font-size: 25px;
|
||||
letter-spacing: -0.04em;
|
||||
}
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -266,18 +266,20 @@ const DisplayPartnerPromotion = (props) => {
|
|||
|
||||
|
||||
function ExpandableCell_String_to_monetaire({ value }) {
|
||||
const [expanded, setExpanded] = React.useState(false);
|
||||
|
||||
const number = parseFloat(value);
|
||||
var new_value = ""
|
||||
if (isNaN(number)) {
|
||||
new_value = "—"
|
||||
} else {
|
||||
new_value = new Intl.NumberFormat('fr-FR', {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 0,
|
||||
}).format(number);
|
||||
}
|
||||
var new_val = String(value).replaceAll(" ", '');
|
||||
const [expanded, setExpanded] = React.useState(false);
|
||||
|
||||
const number = parseFloat(new_val);
|
||||
|
||||
var new_value = ""
|
||||
if (isNaN(number)) {
|
||||
new_value = "—"
|
||||
} else {
|
||||
new_value = new Intl.NumberFormat('fr-FR', {
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
}).format(number);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -309,18 +309,20 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
|
||||
function ExpandableCell_String_to_monetaire({ value }) {
|
||||
const [expanded, setExpanded] = React.useState(false);
|
||||
|
||||
const number = parseFloat(value);
|
||||
var new_value = ""
|
||||
if (isNaN(number)) {
|
||||
new_value = "—"
|
||||
} else {
|
||||
new_value = new Intl.NumberFormat('fr-FR', {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 0,
|
||||
}).format(number);
|
||||
}
|
||||
var new_val = String(value).replaceAll(" ", '');
|
||||
const [expanded, setExpanded] = React.useState(false);
|
||||
|
||||
const number = parseFloat(new_val);
|
||||
|
||||
var new_value = ""
|
||||
if (isNaN(number)) {
|
||||
new_value = "—"
|
||||
} else {
|
||||
new_value = new Intl.NumberFormat('fr-FR', {
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
}).format(number);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -848,9 +850,9 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
{ field: 'nom', headerName: 'Nom', minWidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'prenom', headerName: 'Prénom', minWidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'email', headerName: 'Email', minWidth: 200, flex: 1, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, editable: false,},
|
||||
{ field: 'email', headerName: 'Email', minWidth: 200, flex: 1, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, editable: false, },
|
||||
|
||||
{ field: 'telephone', headerName: 'Téléphone', minWidth: 150, flex: 1, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, editable: false,},
|
||||
{ field: 'telephone', headerName: 'Téléphone', minWidth: 150, flex: 1, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, editable: false, },
|
||||
|
||||
{ field: 'client_rattachement_nom', headerName: 'Client', minWidth: 150, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||
{ field: 'client_rattachement_id', headerName: 'Client_id', Width: 0, hide: true, editable: false, },
|
||||
|
|
@ -924,66 +926,66 @@ const DisplayPartnerSession = (props) => {
|
|||
}
|
||||
},
|
||||
|
||||
/* {
|
||||
field: "update", headerName: 'Mise à jour',
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
<>
|
||||
{String(props.check_user_acces_right("session", "write")) === "1" && <Popup
|
||||
trigger={<Button
|
||||
|
||||
onClick={(event) => {
|
||||
handleClick_accept(event, cellValues);
|
||||
}}
|
||||
/* {
|
||||
field: "update", headerName: 'Mise à jour',
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
<>
|
||||
{String(props.check_user_acces_right("session", "write")) === "1" && <Popup
|
||||
trigger={<Button
|
||||
|
||||
onClick={(event) => {
|
||||
handleClick_accept(event, cellValues);
|
||||
}}
|
||||
>
|
||||
<FcAcceptDatabase />
|
||||
|
||||
</Button>}
|
||||
modal
|
||||
nested
|
||||
position="center center"
|
||||
>
|
||||
<FcAcceptDatabase />
|
||||
|
||||
</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 la mise à jour des informations du stagiaire
|
||||
</div>
|
||||
<div className="gest_actions">
|
||||
<div style={{ "width": "45%", "float": "left" }}>
|
||||
<button className="gest_bton_popup" onClick={(event) => {
|
||||
handleClick_update_data(event, cellValues);
|
||||
close();
|
||||
}}> Valider </button>
|
||||
|
||||
{close => (
|
||||
<div>
|
||||
<button className="gest_close" onClick={close}>
|
||||
×
|
||||
</button>
|
||||
<div className="gest_header"> MySy Information </div>
|
||||
<div className="gest_content">
|
||||
{' '}
|
||||
|
||||
Confirmer la mise à jour des informations du stagiaire
|
||||
</div>
|
||||
<div style={{ "width": "45%", "float": "right" }}>
|
||||
<button
|
||||
className="gest_bton_popup_annuler"
|
||||
onClick={() => {
|
||||
//console.log('modal closed ');
|
||||
<div className="gest_actions">
|
||||
<div style={{ "width": "45%", "float": "left" }}>
|
||||
<button className="gest_bton_popup" onClick={(event) => {
|
||||
handleClick_update_data(event, cellValues);
|
||||
close();
|
||||
}}
|
||||
>
|
||||
Annuler
|
||||
</button>
|
||||
}}> Valider </button>
|
||||
|
||||
</div>
|
||||
<div style={{ "width": "45%", "float": "right" }}>
|
||||
<button
|
||||
className="gest_bton_popup_annuler"
|
||||
onClick={() => {
|
||||
//console.log('modal closed ');
|
||||
close();
|
||||
}}
|
||||
>
|
||||
Annuler
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</Popup>}
|
||||
|
||||
</>
|
||||
|
||||
);
|
||||
}
|
||||
},
|
||||
*/
|
||||
)}
|
||||
</Popup>}
|
||||
|
||||
</>
|
||||
|
||||
);
|
||||
}
|
||||
},
|
||||
*/
|
||||
|
||||
{
|
||||
field: 'bton_vertif', headerName: 'Gestion', minWidth: 50, flex: 1, maxWidth: 100, hideable: true, hide: false, editable: false, align: "center",
|
||||
|
|
@ -12679,7 +12681,11 @@ const DisplayPartnerSession = (props) => {
|
|||
setLoading(false);
|
||||
console.warn('Update_Comment_Given_Emargement : Not good man :( mysearchtext = ' + error);
|
||||
setUpdate_Comment_Given_Emargement_api("false");
|
||||
alert(" Impossible de mettre à jour l'émargement");
|
||||
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Impossible de mettre à jour l'émargement");
|
||||
setalert_type("error");
|
||||
|
||||
})
|
||||
|
||||
|
|
@ -12733,7 +12739,11 @@ const DisplayPartnerSession = (props) => {
|
|||
setLoading(false);
|
||||
console.warn('Delete_List_Emargement : Not good man :( mysearchtext = ' + error);
|
||||
setDelete_List_Emargement_api("false");
|
||||
alert(" Impossible de supprimer les demandes d'émargement");
|
||||
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Impossible de supprimer les demandes d'émargement");
|
||||
setalert_type("error");
|
||||
|
||||
})
|
||||
|
||||
|
|
@ -12777,15 +12787,21 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
|
||||
if (file_type !== "application/pdf") {
|
||||
alert("Le fichier n'est pas de type PDF");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le fichier n'est pas de type PDF");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (file_size > 10000000) {
|
||||
alert("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
|
||||
console.log("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Le fichier ne doit pas depasser un 1 Méga octets");
|
||||
setalert_type("error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -13433,7 +13449,11 @@ const DisplayPartnerSession = (props) => {
|
|||
setLoading(false);
|
||||
console.warn('Not good man :( Get_Stagiaire_List_Email_Com = ', error);
|
||||
setGet_Stagiaire_List_Email_Com_api("false");
|
||||
alert("Impossible de récupérer les adresses email de communication");
|
||||
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible de récupérer les adresses email de communication");
|
||||
setalert_type("error");
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
}
|
||||
|
|
@ -15338,7 +15358,10 @@ const DisplayPartnerSession = (props) => {
|
|||
setLoading(false);
|
||||
console.warn('Not good man :( Get_List_Stagiaire_Convocations = ', error);
|
||||
setGet_List_Stagiaire_Convocations_api("false");
|
||||
alert("Impossible de récupérer les modèles de convocations");
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible de récupérer les modèles de convocations");
|
||||
setalert_type("error");
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
}
|
||||
|
|
@ -15433,7 +15456,11 @@ const DisplayPartnerSession = (props) => {
|
|||
setLoading(false);
|
||||
console.warn('Not good man :( Send_Stagiaire_Convocations_By_Email = ', error);
|
||||
setSend_Stagiaire_Convocations_By_Email_api("false");
|
||||
alert("Impossible d'envoyer la convocation par email");
|
||||
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible d'envoyer la convocation par email");
|
||||
setalert_type("error");
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
}
|
||||
|
|
@ -15479,7 +15506,12 @@ const DisplayPartnerSession = (props) => {
|
|||
setLoading(false);
|
||||
//console.log(" In Download_Stagiaire_Conventions_PDF res.data = " + res.data);
|
||||
if (String(res.data) === String("false")) {
|
||||
alert("Impossible de télécharger la convocation (2) ");
|
||||
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message("Impossible de télécharger la convocation (2) ");
|
||||
setalert_type("error");
|
||||
|
||||
} else {
|
||||
fileDownload(res.data, nom_fichier_cmd);
|
||||
Getall_Editable_Document_By_Partner_By_Collection();
|
||||
|
|
@ -15490,7 +15522,10 @@ const DisplayPartnerSession = (props) => {
|
|||
}).catch((error) => {
|
||||
setLoading(false);
|
||||
console.error('Error:', error);
|
||||
alert(" Impossible de télécharger la convocation ")
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Impossible de télécharger la convocation ");
|
||||
setalert_type("error");
|
||||
|
||||
});
|
||||
|
||||
|
|
@ -25458,7 +25493,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}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -41,6 +41,12 @@ import { AiOutlinePlusCircle } from "react-icons/ai";
|
|||
|
||||
import FiberNewIcon from '@mui/icons-material/FiberNew';
|
||||
|
||||
import {
|
||||
Clock3,
|
||||
CheckCircle2,
|
||||
Ban,
|
||||
Archive
|
||||
} from "lucide-react";
|
||||
|
||||
import Dialog from '@mui/material/Dialog';
|
||||
import DialogActions from '@mui/material/DialogActions';
|
||||
|
|
@ -1243,41 +1249,8 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
|
||||
/******* kanban */
|
||||
|
||||
const [kanban_colonne_width, setkanban_colonne_width] = useState("20vw");
|
||||
const [kanban_colonne_width, setkanban_colonne_width] = useState("17vw");
|
||||
|
||||
// MySy Comment : design d'une tache (couleur, taille, etc)
|
||||
const classes_old = {
|
||||
board: {
|
||||
display: "flex",
|
||||
margin: "0 auto",
|
||||
width: "100%",
|
||||
fontFamily: 'Arial, "Helvetica Neue", sans-serif'
|
||||
},
|
||||
column: {
|
||||
// minWidth: 200,
|
||||
//width: "16vw",
|
||||
width: kanban_colonne_width,
|
||||
height: "80vh",
|
||||
margin: "0 auto",
|
||||
backgroundColor: "#212F3D",
|
||||
border: 'double #32a1ce',
|
||||
|
||||
},
|
||||
columnHead: {
|
||||
textAlign: "center",
|
||||
padding: 10,
|
||||
fontSize: "1.2em",
|
||||
backgroundColor: "#C6D8AF",
|
||||
border: "red",
|
||||
},
|
||||
item: {
|
||||
padding: 10,
|
||||
margin: 10,
|
||||
fontSize: "0.8em",
|
||||
cursor: "pointer",
|
||||
backgroundColor: "white"
|
||||
}
|
||||
};
|
||||
|
||||
const classes = {
|
||||
board: {
|
||||
|
|
@ -1290,12 +1263,21 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
// minWidth: 200,
|
||||
//width: "16vw",
|
||||
width: kanban_colonne_width,
|
||||
textAlign: "center",
|
||||
height: "80vh",
|
||||
margin: "0 auto",
|
||||
backgroundColor: "#FFFFFF",
|
||||
border: 'solid 1px',
|
||||
borderLeft: "1px solid #ecf1fc",
|
||||
borderRight: "1px solid #ecf1fc",
|
||||
borderRadius: "24px",
|
||||
backgroundColor: "rgba(255, 255, 255, 0.68)",
|
||||
border: "1px solid rgba(221, 229, 239, 0.8)",
|
||||
boxShadow: "var(--shadow-lg)",
|
||||
overflow: "hidden",
|
||||
backdropFilter: "blur(10px)",
|
||||
fontFamily: "'DM Sans', Arial, Helvetica, sans-serif",
|
||||
marginLeft: "30px",
|
||||
|
||||
},
|
||||
|
||||
|
|
@ -1303,11 +1285,21 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
// minWidth: 200,
|
||||
//width: "16vw",
|
||||
width: kanban_colonne_width,
|
||||
textAlign: "center",
|
||||
height: "80vh",
|
||||
margin: "0 auto",
|
||||
backgroundColor: "#FFFFFF",
|
||||
border: 'solid 1px',
|
||||
borderTop: 'none',
|
||||
borderRadius: "24px",
|
||||
backgroundColor: "rgba(255, 255, 255, 0.68)",
|
||||
border: "1px solid rgba(221, 229, 239, 0.8)",
|
||||
boxShadow: "var(--shadow-lg)",
|
||||
overflow: "hidden",
|
||||
backdropFilter: "blur(10px)",
|
||||
fontFamily: "'DM Sans', Arial, Helvetica, sans-serif",
|
||||
marginLeft: "30px",
|
||||
|
||||
// borderRight: "1px solid #ecf1fc",
|
||||
|
||||
},
|
||||
|
|
@ -1316,23 +1308,72 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
// minWidth: 200,
|
||||
//width: "16vw",
|
||||
width: kanban_colonne_width,
|
||||
textAlign: "center",
|
||||
height: "80vh",
|
||||
margin: "0 auto",
|
||||
backgroundColor: "#FFFFFF",
|
||||
border: "1px solid #ecf1fc",
|
||||
borderRight: 'solid 1px',
|
||||
borderBottom: 'solid 1px',
|
||||
|
||||
borderRadius: "24px",
|
||||
backgroundColor: "rgba(255, 255, 255, 0.68)",
|
||||
border: "1px solid rgba(221, 229, 239, 0.8)",
|
||||
boxShadow: "var(--shadow-lg)",
|
||||
overflow: "hidden",
|
||||
backdropFilter: "blur(10px)",
|
||||
fontFamily: "'DM Sans', Arial, Helvetica, sans-serif",
|
||||
marginLeft: "30px",
|
||||
|
||||
|
||||
},
|
||||
|
||||
columnHead: {
|
||||
columnHead_Encours: {
|
||||
textAlign: "center",
|
||||
padding: 5,
|
||||
fontSize: "14px",
|
||||
backgroundColor: "rgb(103, 164, 239)",
|
||||
border: "1px solid",
|
||||
border: "none",
|
||||
marginBottom: "5px",
|
||||
background: "linear-gradient(180deg, #eef4ff 0%, #f7faff 100%)",
|
||||
fontSize: "17px",
|
||||
color: "#0f2552",
|
||||
fontWeight: 600,
|
||||
padding: "18px 18px 16px",
|
||||
},
|
||||
|
||||
columnHead_Fait: {
|
||||
textAlign: "center",
|
||||
padding: 5,
|
||||
border: "none",
|
||||
marginBottom: "5px",
|
||||
background: "linear-gradient(180deg, #edfdf4 0%, #f8fffb 100%)",
|
||||
fontSize: "17px",
|
||||
color: "#0f2552",
|
||||
fontWeight: 600,
|
||||
padding: "18px 18px 16px",
|
||||
},
|
||||
|
||||
|
||||
columnHead_Annule: {
|
||||
textAlign: "center",
|
||||
padding: 5,
|
||||
border: "none",
|
||||
marginBottom: "5px",
|
||||
background: "linear-gradient(180deg, #fff5e9 0%, #fffaf3 100%)",
|
||||
fontSize: "17px",
|
||||
color: "#0f2552",
|
||||
fontWeight: 600,
|
||||
padding: "18px 18px 16px",
|
||||
},
|
||||
|
||||
columnHead_Archivé: {
|
||||
textAlign: "center",
|
||||
padding: 5,
|
||||
border: "none",
|
||||
marginBottom: "5px",
|
||||
background: "linear-gradient(180deg, #f2f6fb 0%, #f9fbfd 100%)",
|
||||
fontSize: "17px",
|
||||
color: "#0f2552",
|
||||
fontWeight: 600,
|
||||
padding: "18px 18px 16px",
|
||||
},
|
||||
|
||||
item: {
|
||||
padding: 5,
|
||||
marginBottom: 10,
|
||||
|
|
@ -1790,201 +1831,22 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
<div className="div_row">
|
||||
{String(show_all_activite_list) === "1" && String(showactivite_detail) !== "1" && String(add_one_activite) !== "1" &&
|
||||
<div className="div_row" style={{ "marginLeft": "5px", "marginRight": "5px" }}>
|
||||
<div className="div_row" onClick={Add_Activite} style={{ "cursor": "pointer" }}> <AiOutlinePlusCircle /> Ajouter une activité </div>
|
||||
|
||||
|
||||
{/*
|
||||
<div className="div_row" style={{ "border": "None" }}>
|
||||
<div className="titre1" > Activité(s) qui me sont Assignée(s) </div>
|
||||
|
||||
|
||||
<button className="btn btn-primary"
|
||||
onClick={(e) => {
|
||||
Add_Activite();
|
||||
}}>
|
||||
Ajout 1 Activité
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div className="div_row">
|
||||
<DndProvider backend={HTML5Backend}>
|
||||
<section style={classes.board}>
|
||||
{activite_status_list_pave_affiche.map((channel, index) => (
|
||||
<KanbanColumn
|
||||
key={channel.id}
|
||||
status={channel.id}
|
||||
changeTaskStatus={changeTaskStatus}
|
||||
>
|
||||
|
||||
{String(index) === "0" && <div style={classes.column_first_left}>
|
||||
<div className="kanban_header_css">{Opportunite_chanel_label[channel.id]} </div>
|
||||
<div style={{ overflowY: 'auto', height: '95%' }}>
|
||||
{Get_List_Activite_Assign_To_Me_result && Get_List_Activite_Assign_To_Me_result.length > 0 &&
|
||||
Get_List_Activite_Assign_To_Me_result.filter(item => JSON.parse(item).status === channel.id)
|
||||
.map(item => (
|
||||
<KanbanItem key={JSON.parse(item)._id} id={JSON.parse(item)._id} actvite_recid={JSON.parse(item).recid}>
|
||||
<br />
|
||||
<div className="kanban_item_css" id={JSON.parse(item)._id}
|
||||
|
||||
>
|
||||
|
||||
{String(String(JSON.parse(item).status)) === "1" &&
|
||||
<nav recid={String(JSON.parse(item).recid)}
|
||||
onClick={(event) => {
|
||||
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(item).recid));
|
||||
setDialog_ACTIVITE_open(true);
|
||||
}}
|
||||
|
||||
className="detail_activite">
|
||||
<nav className="detail_header" recid={String(JSON.parse(item).recid)} > {String(JSON.parse(item).deadline)} : {String(JSON.parse(item).type)}</nav>
|
||||
<nav recid={String(JSON.parse(item).recid)} >
|
||||
<i>FAIT </i> <br />
|
||||
{(JSON.parse(item).description).substring(0, 50)}<br />
|
||||
{(JSON.parse(item).detail).substring(0, 50)}<br />
|
||||
|
||||
</nav>
|
||||
</nav>}
|
||||
|
||||
{String(String(JSON.parse(item).status)) === "0" &&
|
||||
<nav recid={String(JSON.parse(item).recid)}
|
||||
|
||||
onClick={(event) => {
|
||||
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(item).recid));
|
||||
setDialog_ACTIVITE_open(true);
|
||||
}}
|
||||
|
||||
className="detail_activite">
|
||||
{JSON.parse(item).employee_assigned_view_statut && String(JSON.parse(item).employee_assigned_view_statut) !== "1" &&
|
||||
<nav style={{ marginRight: "10px", textAlign: "right" }}> <FiberNewIcon style={{ color: 'red', }} /> </nav>}
|
||||
|
||||
<nav className="detail_header" recid={String(JSON.parse(item).recid)} > {String(JSON.parse(item).deadline)} : {String(JSON.parse(item).type)}</nav>
|
||||
<nav recid={String(JSON.parse(item).recid)} >
|
||||
|
||||
|
||||
{parseInt(String(JSON.parse(item).retard)) < 0 && <i style={{ "color": "red", }}> RETARD de {String(JSON.parse(item).retard)} jours <br /></i>}
|
||||
{parseInt(String(JSON.parse(item).retard)) > 0 && <i> DANS {String(JSON.parse(item).retard)} jours <br /></i>}
|
||||
{parseInt(String(JSON.parse(item).retard)) == 0 && <i style={{ "color": "orange" }}> AUJOURD'HUI <br /></i>}
|
||||
|
||||
|
||||
{(JSON.parse(item).description).substring(0, 50)}<br />
|
||||
{(JSON.parse(item).detail).substring(0, 50)}<br />
|
||||
|
||||
</nav>
|
||||
</nav>}
|
||||
|
||||
{String(String(JSON.parse(item).status)) === "-1" &&
|
||||
<nav recid={String(JSON.parse(item).recid)}
|
||||
|
||||
onClick={(event) => {
|
||||
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(item).recid));
|
||||
setDialog_ACTIVITE_open(true);
|
||||
}}
|
||||
|
||||
className="detail_activite">
|
||||
<nav className="detail_header" recid={String(JSON.parse(item).recid)} > {String(JSON.parse(item).deadline)} : {String(JSON.parse(item).type)}</nav>
|
||||
<nav recid={String(JSON.parse(item).recid)} >
|
||||
<i>ANNULE </i> <br />
|
||||
{(JSON.parse(item).description).substring(0, 50)}<br />
|
||||
{(JSON.parse(item).detail).substring(0, 50)}<br />
|
||||
|
||||
</nav>
|
||||
</nav>}
|
||||
</div>
|
||||
|
||||
</KanbanItem>
|
||||
))}
|
||||
</div>
|
||||
</div>}
|
||||
|
||||
{String(index) !== "0" && <div style={classes.column_right_solid_border}>
|
||||
<div className="kanban_header_css">{Opportunite_chanel_label[channel.id]} </div>
|
||||
<div style={{ overflowY: 'auto', height: '95%' }}>
|
||||
{Get_List_Activite_Assign_To_Me_result && Get_List_Activite_Assign_To_Me_result.length > 0 &&
|
||||
Get_List_Activite_Assign_To_Me_result.filter(item => JSON.parse(item).status === channel.id)
|
||||
.map(item => (
|
||||
<KanbanItem key={JSON.parse(item)._id} id={JSON.parse(item)._id} actvite_recid={JSON.parse(item).recid}>
|
||||
<br />
|
||||
<div className="kanban_item_css" id={JSON.parse(item)._id}
|
||||
|
||||
>
|
||||
|
||||
{String(String(JSON.parse(item).status)) === "1" &&
|
||||
<nav recid={String(JSON.parse(item).recid)}
|
||||
onClick={(event) => {
|
||||
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(item).recid));
|
||||
setDialog_ACTIVITE_open(true);
|
||||
}}
|
||||
|
||||
className="detail_activite">
|
||||
<nav className="detail_header" recid={String(JSON.parse(item).recid)} > {String(JSON.parse(item).deadline)} : {String(JSON.parse(item).type)}</nav>
|
||||
<nav recid={String(JSON.parse(item).recid)} >
|
||||
<i>FAIT </i> <br />
|
||||
{(JSON.parse(item).description).substring(0, 50)}<br />
|
||||
{(JSON.parse(item).detail).substring(0, 50)}<br />
|
||||
|
||||
</nav>
|
||||
</nav>}
|
||||
|
||||
{String(String(JSON.parse(item).status)) === "0" &&
|
||||
<nav recid={String(JSON.parse(item).recid)}
|
||||
|
||||
onClick={(event) => {
|
||||
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(item).recid));
|
||||
setDialog_ACTIVITE_open(true);
|
||||
}}
|
||||
|
||||
className="detail_activite">
|
||||
{JSON.parse(item).employee_assigned_view_statut && String(JSON.parse(item).employee_assigned_view_statut) !== "1" &&
|
||||
<nav style={{ marginRight: "10px", textAlign: "right" }}> <FiberNewIcon style={{ color: 'red', }} /> </nav>}
|
||||
|
||||
<nav className="detail_header" recid={String(JSON.parse(item).recid)} > {String(JSON.parse(item).deadline)} : {String(JSON.parse(item).type)}</nav>
|
||||
<nav recid={String(JSON.parse(item).recid)} >
|
||||
|
||||
|
||||
{parseInt(String(JSON.parse(item).retard)) < 0 && <i style={{ "color": "red", }}> RETARD de {String(JSON.parse(item).retard)} jours <br /></i>}
|
||||
{parseInt(String(JSON.parse(item).retard)) > 0 && <i> DANS {String(JSON.parse(item).retard)} jours <br /></i>}
|
||||
{parseInt(String(JSON.parse(item).retard)) == 0 && <i style={{ "color": "orange" }}> AUJOURD'HUI <br /></i>}
|
||||
|
||||
|
||||
{(JSON.parse(item).description).substring(0, 50)}<br />
|
||||
{(JSON.parse(item).detail).substring(0, 50)}<br />
|
||||
|
||||
</nav>
|
||||
</nav>}
|
||||
|
||||
{String(String(JSON.parse(item).status)) === "-1" &&
|
||||
<nav recid={String(JSON.parse(item).recid)}
|
||||
|
||||
onClick={(event) => {
|
||||
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(item).recid));
|
||||
setDialog_ACTIVITE_open(true);
|
||||
}}
|
||||
|
||||
className="detail_activite">
|
||||
<nav className="detail_header" recid={String(JSON.parse(item).recid)} > {String(JSON.parse(item).deadline)} : {String(JSON.parse(item).type)}</nav>
|
||||
<nav recid={String(JSON.parse(item).recid)} >
|
||||
<i>ANNULE </i> <br />
|
||||
{(JSON.parse(item).description).substring(0, 50)}<br />
|
||||
{(JSON.parse(item).detail).substring(0, 50)}<br />
|
||||
|
||||
</nav>
|
||||
</nav>}
|
||||
</div>
|
||||
|
||||
</KanbanItem>
|
||||
))}
|
||||
</div>
|
||||
</div>}
|
||||
{/* <div className="div_row" onClick={Add_Activite} style={{ "cursor": "pointer" }}> <AiOutlinePlusCircle /> Ajouter une activité </div>*/}
|
||||
|
||||
|
||||
|
||||
</KanbanColumn>
|
||||
))}
|
||||
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
</DndProvider>
|
||||
<div className="div_row"> </div>
|
||||
|
||||
|
||||
</div>
|
||||
*/}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1998,7 +1860,9 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
changeTaskStatus={changeTaskStatus}
|
||||
>
|
||||
{String(index) === "0" && <div style={classes.column_first_left}>
|
||||
<div style={classes.columnHead}>{Opportunite_chanel_label[channel.id]}</div>
|
||||
{Opportunite_chanel_label[channel.id] === "Encours" && <div style={classes.columnHead_Encours}><Clock3 size={18} /> {Opportunite_chanel_label[channel.id]}</div>}
|
||||
|
||||
|
||||
<div style={{ overflowY: 'auto', height: '95%' }}>
|
||||
{Get_List_Activite_Of_client_Part_result && Get_List_Activite_Of_client_Part_result.length > 0 &&
|
||||
Get_List_Activite_Of_client_Part_result.filter(item => JSON.parse(item).status === channel.id)
|
||||
|
|
@ -2078,7 +1942,11 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
</div>}
|
||||
|
||||
{String(index) !== "0" && <div style={classes.column_right_solid_border}>
|
||||
<div style={classes.columnHead}>{Opportunite_chanel_label[channel.id]}</div>
|
||||
{Opportunite_chanel_label[channel.id] === "Fait" && <div style={classes.columnHead_Fait}><CheckCircle2 size={18} /> {Opportunite_chanel_label[channel.id]} </div>}
|
||||
{Opportunite_chanel_label[channel.id] === "Annulé" && <div style={classes.columnHead_Annule}><Ban size={18} /> {Opportunite_chanel_label[channel.id]}</div>}
|
||||
{Opportunite_chanel_label[channel.id] === "Archivé" && <div style={classes.columnHead_Archivé}><Archive size={18} /> {Opportunite_chanel_label[channel.id]}</div>}
|
||||
|
||||
|
||||
<div style={{ overflowY: 'auto', height: '95%' }}>
|
||||
{Get_List_Activite_Of_client_Part_result && Get_List_Activite_Of_client_Part_result.length > 0 &&
|
||||
Get_List_Activite_Of_client_Part_result.filter(item => JSON.parse(item).status === channel.id)
|
||||
|
|
@ -2086,9 +1954,7 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
<KanbanItem key={JSON.parse(item)._id} id={JSON.parse(item)._id} actvite_recid={JSON.parse(item).recid}>
|
||||
<br />
|
||||
|
||||
<div className="kanban_item_css" id={JSON.parse(item)._id}
|
||||
|
||||
>
|
||||
<div className={`kanban_item_css-${channel.id}`} id={JSON.parse(item)._id}>
|
||||
|
||||
{String(String(JSON.parse(item).status)) === "1" &&
|
||||
<nav recid={String(JSON.parse(item).recid)}
|
||||
|
|
@ -2150,6 +2016,24 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
|
||||
</nav>
|
||||
</nav>}
|
||||
|
||||
{String(String(JSON.parse(item).status)) === "2" &&
|
||||
<nav recid={String(JSON.parse(item).recid)}
|
||||
|
||||
onClick={(event) => {
|
||||
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(item)._id));
|
||||
setDialog_ACTIVITE_open(true);
|
||||
}}
|
||||
|
||||
className="detail_activite">
|
||||
<nav className="detail_header" recid={String(JSON.parse(item).recid)} > {String(JSON.parse(item).deadline)} : {String(JSON.parse(item).type)}</nav>
|
||||
<nav recid={String(JSON.parse(item).recid)} >
|
||||
<i>ARCHIVE </i> <br />
|
||||
{(JSON.parse(item).description).substring(0, 50)}<br />
|
||||
{(JSON.parse(item).detail).substring(0, 50)}<br />
|
||||
|
||||
</nav>
|
||||
</nav>}
|
||||
</div>
|
||||
|
||||
</KanbanItem>
|
||||
|
|
@ -2613,13 +2497,13 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
|
||||
<div className="div_row" style={{ "border": "None" }}>
|
||||
|
||||
<Button variant="outlined" onClick={Add_Activite} style={{ "width": '20rem' }}
|
||||
className="detail_class_submenu bton_add_session"
|
||||
id='menu_import_participant' name='menu_import_participant'>Ajout 1 Activité
|
||||
<IoAddCircleOutline style={{ "fontSize": "x-large", "color": "green" }} />
|
||||
</Button>
|
||||
|
||||
|
||||
<button className="btn btn-primary"
|
||||
onClick={(e) => {
|
||||
Add_Activite();
|
||||
}}>
|
||||
Ajout 1 Activité
|
||||
</button>
|
||||
</div>
|
||||
<div className="div_row"> </div>
|
||||
</div>
|
||||
|
|
@ -2732,4 +2616,127 @@ width: 100%;
|
|||
.react-datepicker-wrapper{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.kanban_item_css{
|
||||
position: relative;
|
||||
background: rgba(255, 255, 255, 0.96);
|
||||
border: 1px solid #edf2f8;
|
||||
border-radius: 18px;
|
||||
box-shadow: 0 4px 14px rgba(17, 39, 76, 0.06);
|
||||
padding: 16px;
|
||||
overflow: hidden;
|
||||
cursor: move !important;
|
||||
overflow: hidden;
|
||||
cursor: move !important;
|
||||
border-radius: 18px;
|
||||
box-shadow: 0 4px 14px rgba(17, 39, 76, 0.06);
|
||||
}
|
||||
|
||||
|
||||
.kanban_item_css-0{
|
||||
padding: 5px;
|
||||
margin-bottom: 10px;
|
||||
font-size: 0.8em;
|
||||
cursor: move;
|
||||
background: #f4f6f6;
|
||||
border: 0px solid;
|
||||
border-left-width: 0px;
|
||||
width: 94%;
|
||||
margin-left: 3%;
|
||||
min-height: 5rem;
|
||||
border-left-width: 10px;
|
||||
border-left-color : #f3f7ff;
|
||||
overflow: hidden;
|
||||
cursor: move !important;
|
||||
border-radius: 18px;
|
||||
box-shadow: 0 4px 14px rgba(17, 39, 76, 0.06);
|
||||
}
|
||||
|
||||
.kanban_item_css-1{
|
||||
padding: 5px;
|
||||
margin-bottom: 10px;
|
||||
font-size: 0.8em;
|
||||
cursor: move;
|
||||
background: #f4f6f6;
|
||||
border: 0px solid;
|
||||
border-left-width: 0px;
|
||||
width: 94%;
|
||||
margin-left: 3%;
|
||||
min-height: 5rem;
|
||||
border-left-width: 10px;
|
||||
border-left-color : #4d6a58;
|
||||
overflow: hidden;
|
||||
cursor: move !important;
|
||||
border-radius: 18px;
|
||||
box-shadow: 0 4px 14px rgba(17, 39, 76, 0.06);
|
||||
}
|
||||
|
||||
.kanban_item_css--1{
|
||||
padding: 5px;
|
||||
margin-bottom: 10px;
|
||||
font-size: 0.8em;
|
||||
cursor: move;
|
||||
background: #f4f6f6;
|
||||
border: 0px solid;
|
||||
border-left-width: 0px;
|
||||
width: 94%;
|
||||
margin-left: 3%;
|
||||
min-height: 5rem;
|
||||
border-left-width: 10px;
|
||||
border-left-color : #F5C527;
|
||||
overflow: hidden;
|
||||
cursor: move !important;
|
||||
border-radius: 18px;
|
||||
box-shadow: 0 4px 14px rgba(17, 39, 76, 0.06);
|
||||
}
|
||||
|
||||
.kanban_item_css-2{
|
||||
padding: 5px;
|
||||
margin-bottom: 10px;
|
||||
font-size: 0.8em;
|
||||
cursor: move;
|
||||
background: #f4f6f6;
|
||||
border: 0px solid;
|
||||
border-left-width: 0px;
|
||||
width: 94%;
|
||||
margin-left: 3%;
|
||||
min-height: 5rem;
|
||||
border-left-width: 10px;
|
||||
border-left-color : #bfd7f5;
|
||||
overflow: hidden;
|
||||
cursor: move !important;
|
||||
border-radius: 18px;
|
||||
box-shadow: 0 4px 14px rgba(17, 39, 76, 0.06);
|
||||
}
|
||||
|
||||
.btn {
|
||||
height: 42px;
|
||||
border-radius: 12px;
|
||||
padding: 0 18px;
|
||||
border: 1px solid var(--border);
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 9px;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
background: #fff;
|
||||
color: var(--text);
|
||||
transition: 0.18s ease;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 10px 24px rgba(16, 66, 119, 0.1);
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background: #0b55c4;
|
||||
color: #fff;
|
||||
border-color: #0b55c4;
|
||||
}
|
||||
|
||||
.btn-light {
|
||||
background: rgba(255, 255, 255, 0.86);
|
||||
}
|
||||
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -187,18 +187,20 @@ const Partner_Commande = (props) => {
|
|||
|
||||
|
||||
function ExpandableCell_String_to_monetaire({ value }) {
|
||||
const [expanded, setExpanded] = React.useState(false);
|
||||
|
||||
const number = parseFloat(value);
|
||||
var new_value = ""
|
||||
if (isNaN(number)) {
|
||||
new_value = "—"
|
||||
} else {
|
||||
new_value = new Intl.NumberFormat('fr-FR', {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 0,
|
||||
}).format(number);
|
||||
}
|
||||
var new_val = String(value).replaceAll(" ", '');
|
||||
const [expanded, setExpanded] = React.useState(false);
|
||||
|
||||
const number = parseFloat(new_val);
|
||||
|
||||
var new_value = ""
|
||||
if (isNaN(number)) {
|
||||
new_value = "—"
|
||||
} else {
|
||||
new_value = new Intl.NumberFormat('fr-FR', {
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
}).format(number);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -250,18 +250,20 @@ const Partner_Facture = (props) => {
|
|||
}
|
||||
|
||||
function ExpandableCell_String_to_monetaire({ value }) {
|
||||
const [expanded, setExpanded] = React.useState(false);
|
||||
|
||||
const number = parseFloat(value);
|
||||
var new_value = ""
|
||||
if (isNaN(number)) {
|
||||
new_value = "—"
|
||||
} else {
|
||||
new_value = new Intl.NumberFormat('fr-FR', {
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
}).format(number);
|
||||
}
|
||||
var new_val = String(value).replaceAll(" ", '');
|
||||
const [expanded, setExpanded] = React.useState(false);
|
||||
|
||||
const number = parseFloat(new_val);
|
||||
|
||||
var new_value = ""
|
||||
if (isNaN(number)) {
|
||||
new_value = "—"
|
||||
} else {
|
||||
new_value = new Intl.NumberFormat('fr-FR', {
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
}).format(number);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -218,18 +218,20 @@ const Partner_Facture_ARG = (props) => {
|
|||
}
|
||||
|
||||
function ExpandableCell_String_to_monetaire({ value }) {
|
||||
const [expanded, setExpanded] = React.useState(false);
|
||||
|
||||
const number = parseFloat(value);
|
||||
var new_value = ""
|
||||
if (isNaN(number)) {
|
||||
new_value = "—"
|
||||
} else {
|
||||
new_value = new Intl.NumberFormat('fr-FR', {
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
}).format(number);
|
||||
}
|
||||
var new_val = String(value).replaceAll(" ", '');
|
||||
const [expanded, setExpanded] = React.useState(false);
|
||||
|
||||
const number = parseFloat(new_val);
|
||||
|
||||
var new_value = ""
|
||||
if (isNaN(number)) {
|
||||
new_value = "—"
|
||||
} else {
|
||||
new_value = new Intl.NumberFormat('fr-FR', {
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
}).format(number);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue