- implemented special amendment creation BLUE_TONGUE;
This commit is contained in:
@@ -88,7 +88,9 @@ const DomandaEditInstructorManager = () => {
|
||||
const [isVisiblePreTecEvalDialog, setIsVisiblePreTecEvalDialog] = useState(false);
|
||||
const [preTecEvalData, setPreTecEvalData] = useState({
|
||||
amendmentDocumentType: '',
|
||||
amount: 0
|
||||
amount: 0,
|
||||
blueTongueField1: 0,
|
||||
blueTongueField2: 0
|
||||
});
|
||||
const [allFilesRated, setAllFilesRated] = useState(false);
|
||||
const [atLeastOneChecked, setAtLeastOneChecked] = useState(false);
|
||||
@@ -851,6 +853,14 @@ const DomandaEditInstructorManager = () => {
|
||||
setPreTecEvalData(newData);
|
||||
}
|
||||
|
||||
const setBlueTongueFieldValue = (name, value) => {
|
||||
const numVal = value ?? 0;
|
||||
const updated = wrap(preTecEvalData).set(name, numVal).value();
|
||||
const field1 = name === 'blueTongueField1' ? numVal : (updated.blueTongueField1 ?? 0);
|
||||
const field2 = name === 'blueTongueField2' ? numVal : (updated.blueTongueField2 ?? 0);
|
||||
setPreTecEvalData(wrap(updated).set('amount', field1 + field2).value());
|
||||
};
|
||||
|
||||
const headerPreTecEvalDialog = () => {
|
||||
return <span>{__('Valutazione Tecnico-Finanziaria', 'gepafin')}</span>;
|
||||
}
|
||||
@@ -859,17 +869,28 @@ const DomandaEditInstructorManager = () => {
|
||||
setIsVisiblePreTecEvalDialog(false);
|
||||
setPreTecEvalData({
|
||||
amendmentDocumentType: '',
|
||||
amount: 0
|
||||
amount: 0,
|
||||
blueTongueField1: 0,
|
||||
blueTongueField2: 0
|
||||
});
|
||||
}
|
||||
|
||||
const footerPreTecEvalDialog = useCallback(() => {
|
||||
const amount = pathOr(null, ['amount'], preTecEvalData);
|
||||
const isBlueTongue = preTecEvalData.amendmentDocumentType === 'BLUE_TONGUE';
|
||||
const field1 = pathOr(null, ['blueTongueField1'], preTecEvalData);
|
||||
const field2 = pathOr(null, ['blueTongueField2'], preTecEvalData);
|
||||
const isBlueTongueInvalid = isBlueTongue && (
|
||||
isNil(field1) || isNaN(parseFloat(field1)) ||
|
||||
isNil(field2) || isNaN(parseFloat(field2)) ||
|
||||
parseFloat(field1) + parseFloat(field2) <= 0
|
||||
);
|
||||
const isAmountInvalid = isNil(amount) || isNaN(parseFloat(amount)) || parseFloat(amount) <= 0;
|
||||
return <div>
|
||||
<Button type="button" label={__('Annulla', 'gepafin')} onClick={hidePreTecEvalDialog} outlined/>
|
||||
<Button
|
||||
type="button"
|
||||
disabled={loading || isNil(amount) || isNaN(parseFloat(amount)) || parseFloat(amount) <= 0}
|
||||
disabled={loading || (isBlueTongue ? isBlueTongueInvalid : isAmountInvalid)}
|
||||
label={__('Invia', 'gepafin')} onClick={startCreatingSpecialAmendment}/>
|
||||
</div>
|
||||
}, [preTecEvalData]);
|
||||
@@ -946,7 +967,12 @@ const DomandaEditInstructorManager = () => {
|
||||
|
||||
const getAmendmentSpecialCallback = (data) => {
|
||||
if (data.status === 'SUCCESS') {
|
||||
setData(getFormattedData(data.data));
|
||||
setConnectedSoccorsoId(data.data.id);
|
||||
setData(prev => ({
|
||||
...prev,
|
||||
applicationStatus: 'AWAITING_TECHNICAL_EVALUATION',
|
||||
status: 'SOCCORSO'
|
||||
}));
|
||||
if (toast.current && data.message) {
|
||||
toast.current.show({
|
||||
severity: 'success',
|
||||
@@ -958,7 +984,9 @@ const DomandaEditInstructorManager = () => {
|
||||
setIsVisiblePreTecEvalDialog(false);
|
||||
setPreTecEvalData({
|
||||
amendmentDocumentType: '',
|
||||
amount: 0
|
||||
amount: 0,
|
||||
blueTongueField1: 0,
|
||||
blueTongueField2: 0
|
||||
});
|
||||
storeSet('unsetAsyncRequest');
|
||||
}
|
||||
@@ -974,7 +1002,9 @@ const DomandaEditInstructorManager = () => {
|
||||
setIsVisiblePreTecEvalDialog(false);
|
||||
setPreTecEvalData({
|
||||
amendmentDocumentType: '',
|
||||
amount: 0
|
||||
amount: 0,
|
||||
blueTongueField1: 0,
|
||||
blueTongueField2: 0
|
||||
});
|
||||
set404FromErrorResponse(data);
|
||||
storeSet('unsetAsyncRequest');
|
||||
@@ -2035,21 +2065,65 @@ const DomandaEditInstructorManager = () => {
|
||||
footer={footerPreTecEvalDialog}
|
||||
style={{ maxWidth: '600px', width: '100%' }}
|
||||
onHide={hidePreTecEvalDialog}>
|
||||
<div className="appForm__field">
|
||||
<label
|
||||
className={classNames({
|
||||
'p-error': isEmpty(preTecEvalData.amount)
|
||||
|| isNaN(parseFloat(preTecEvalData.amount)) || parseFloat(preTecEvalData.amount) <= 0
|
||||
})}>
|
||||
{__('Importo', 'gepafin')}
|
||||
</label>
|
||||
<InputNumber
|
||||
value={preTecEvalData.amount}
|
||||
locale="it-IT"
|
||||
minFractionDigits={2}
|
||||
invalid={isEmpty(preTecEvalData.amount) || isNaN(parseFloat(preTecEvalData.amount)) || parseFloat(preTecEvalData.amount) <= 0}
|
||||
onChange={(e) => setPreTecEvalFieldValue('amount', e.value)}/>
|
||||
</div>
|
||||
{preTecEvalData.amendmentDocumentType === 'BLUE_TONGUE'
|
||||
? <>
|
||||
<div className="appForm__field">
|
||||
<label
|
||||
className={classNames({
|
||||
'p-error': isNil(preTecEvalData.blueTongueField1)
|
||||
|| isNaN(parseFloat(preTecEvalData.blueTongueField1))
|
||||
})}>
|
||||
{__('Indenizzo per morti capi', 'gepafin')}
|
||||
</label>
|
||||
<InputNumber
|
||||
value={preTecEvalData.blueTongueField1}
|
||||
locale="it-IT"
|
||||
minFractionDigits={2}
|
||||
invalid={isNil(preTecEvalData.blueTongueField1)
|
||||
|| isNaN(parseFloat(preTecEvalData.blueTongueField1))}
|
||||
onChange={(e) => setBlueTongueFieldValue('blueTongueField1', e.value)}/>
|
||||
</div>
|
||||
<div className="appForm__field">
|
||||
<label
|
||||
className={classNames({
|
||||
'p-error': isNil(preTecEvalData.blueTongueField2)
|
||||
|| isNaN(parseFloat(preTecEvalData.blueTongueField2))
|
||||
})}>
|
||||
{__('Indenizzo per smaltimento', 'gepafin')}
|
||||
</label>
|
||||
<InputNumber
|
||||
value={preTecEvalData.blueTongueField2}
|
||||
locale="it-IT"
|
||||
minFractionDigits={2}
|
||||
invalid={isNil(preTecEvalData.blueTongueField2)
|
||||
|| isNaN(parseFloat(preTecEvalData.blueTongueField2))}
|
||||
onChange={(e) => setBlueTongueFieldValue('blueTongueField2', e.value)}/>
|
||||
</div>
|
||||
<div className="appForm__field">
|
||||
<label>{__('Indenizzo totale', 'gepafin')}</label>
|
||||
<InputNumber
|
||||
value={preTecEvalData.amount}
|
||||
locale="it-IT"
|
||||
minFractionDigits={2}
|
||||
disabled/>
|
||||
</div>
|
||||
</>
|
||||
: <div className="appForm__field">
|
||||
<label
|
||||
className={classNames({
|
||||
'p-error': isEmpty(preTecEvalData.amount)
|
||||
|| isNaN(parseFloat(preTecEvalData.amount)) || parseFloat(preTecEvalData.amount) <= 0
|
||||
})}>
|
||||
{__('Importo', 'gepafin')}
|
||||
</label>
|
||||
<InputNumber
|
||||
value={preTecEvalData.amount}
|
||||
locale="it-IT"
|
||||
minFractionDigits={2}
|
||||
invalid={isEmpty(preTecEvalData.amount) || isNaN(parseFloat(preTecEvalData.amount)) || parseFloat(preTecEvalData.amount) <= 0}
|
||||
onChange={(e) => setPreTecEvalFieldValue('amount', e.value)}/>
|
||||
</div>
|
||||
}
|
||||
</Dialog>
|
||||
|
||||
{/*
|
||||
|
||||
Reference in New Issue
Block a user