-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathRecipient.tsx
More file actions
153 lines (146 loc) · 5.52 KB
/
Recipient.tsx
File metadata and controls
153 lines (146 loc) · 5.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
import React from "react";
import classNames from "classnames";
import RedErrorMessage from "../../common/components/RedErrorMessage";
import TdSwitch from "../../common/components/Switch";
import Tooltip from "../../Apps/common/Components/Tooltip/Tooltip";
import ProcessingOperation from "../common/components/processing-operation/ProcessingOperation";
import { Field, useFormikContext } from "formik";
import { isDangerous } from "@td/constants";
import { BsdType, Form } from "@td/codegen-ui";
import CompanySelector from "../common/components/company/CompanySelector";
import TemporaryStorage from "./components/temporaryStorage/TemporaryStorage";
import styles from "./Recipient.module.scss";
import { getInitialTemporaryStorageDetail } from "./utils/initial-state";
import { useParams } from "react-router-dom";
import FormikBroker from "../../Apps/Forms/Components/Broker/FormikBroker";
import FormikTrader from "../../Apps/Forms/Components/Trader/FormikTrader";
import FormikIntermediaryList from "../../Apps/Forms/Components/IntermediaryList/FormikIntermediaryList";
export default function Recipient({ disabled, intermediariesDisabled }) {
const { siret } = useParams<{ siret: string }>();
const { values, setFieldValue } = useFormikContext<Form>();
const isTempStorage = !!values.recipient?.isTempStorage;
const isDangerousWaste = isDangerous(values.wasteDetails?.code ?? "");
const isChapeau = values?.emitter?.type === "APPENDIX1";
const isGrouping = values?.emitter?.type === "APPENDIX2";
function handleTempStorageToggle(checked) {
if (checked) {
// the switch is toggled on, set isTempStorage to true
setFieldValue("recipient.isTempStorage", true, false);
setFieldValue(
"temporaryStorageDetail",
getInitialTemporaryStorageDetail(),
false
);
} else {
// the switch is toggled off, set isTempStorage to false
setFieldValue("recipient.isTempStorage", false, false);
setFieldValue("temporaryStorageDetail", null, false);
}
}
return (
<>
{disabled && (
<div className="notification notification--error">
Les champs grisés ci-dessous ont été scellés via signature et ne sont
plus modifiables.
</div>
)}
{!isChapeau && (
<div className="form__row">
<TdSwitch
checked={!!values.recipient?.isTempStorage}
onChange={handleTempStorageToggle}
label="Le BSD va passer par une étape d'entreposage provisoire ou
reconditionnement"
disabled={disabled}
/>
</div>
)}
{isTempStorage && (
<div className="notification fr-mt-6v">
Vous avez sélectionné "Entreposage provisoire ou reconditionnement".
En cas de doute, et pour éviter une erreur qui serait bloquante pour
le parcours du déchet, veuillez vérifier avec vos partenaires ce qu'il
convient de renseigner.
</div>
)}
<h4 className="form__section-heading">
Installation{" "}
{isTempStorage
? "d'entreposage ou de reconditionnement"
: "de destination"}
</h4>
<div className={styles.recipientTextQuote}>
<p>
Pour vous assurer que l'entreprise de destination est autorisée à
recevoir le déchet, vous pouvez consulter{" "}
<a
href="https://www.georisques.gouv.fr/risques/installations/donnees#/"
className="fr-link force-external-link-content force-underline-link"
target="_blank"
rel="noopener noreferrer"
>
la liste des installations classées.
</a>
</p>
</div>
<CompanySelector
name="recipient.company"
registeredOnlyCompanies={true}
disabled={disabled}
/>
<h4 className="form__section-heading">Informations complémentaires</h4>
{!isTempStorage && (
<div className="form__row">
<Field
component={ProcessingOperation}
name="recipient.processingOperation"
enableReuse={isGrouping}
disabled={disabled}
/>
<RedErrorMessage name="recipient.processingOperation" />
</div>
)}
<div className="form__row">
<label>
Numéro de CAP
{isDangerousWaste ? (
<Tooltip
className="fr-ml-1"
title={`Le champ CAP est obligatoire pour les déchets dangereux.
Il est important car il qualifie les conditions de gestion et de traitement du déchet entre le producteur et l'entreprise de destination.`}
/>
) : (
" (Optionnel pour les déchets non dangereux)"
)}
<Field
type="text"
name="recipient.cap"
className={classNames("td-input", styles.recipientCap)}
disabled={disabled}
/>
</label>
</div>
{isTempStorage && values.temporaryStorageDetail && (
<TemporaryStorage name="temporaryStorageDetail" />
)}
<h4 className="form__section-heading">Autres acteurs</h4>
<div style={{ display: "flex", flexDirection: "column", gap: "20px" }}>
<FormikBroker
bsdType={BsdType.Bsdd}
siret={siret}
disabled={disabled}
/>
<FormikTrader
bsdType={BsdType.Bsdd}
siret={siret}
disabled={disabled}
/>
<FormikIntermediaryList
siret={siret}
disabled={intermediariesDisabled}
/>
</div>
</>
);
}