Collecte de fluides par un opérateur avec transport multi-modal
En cas de transport multi-modal, plusieurs transporteurs peuvent être renseignés dans un ordre donné grâce au champ `transporters`. Les transporteurs signent chacun à leur tour grâce à la mutation `signBsff` (type=TRANSPORT). La liste des transporteurs peut être modifiée par n'importe quel acteur du bordereau tant que le bordereau n'a pas été réceptionné sur l'installation de destination. À noter toutefois qu'un transporteur ne peut plus être modifié ou supprimé dès lors qu'il a signé le bordereau.
graph LR
AO(NO STATE) -->|createBsff| A
A(INITIAL) -->|"signBsff(EMISSION)"| C(SIGNED_BY_PRODUCER)
C --> |"signBsff(TRANSPORT)"| D(SENT)
D -->|"signBsff(TRANSPORT)"| E(SENT)
E -->|"signBsff(TRANSPORT)"| G(SENT)
G -->|"signBsff(RECEPTION)"|H(RECEIVED)
H -->|updateBsffPackaging|H
I(RECEIVED) -->|"signBsff(ACCEPTATION)"|J(ACCEPTED)
J -->|updateBsffPackaging|K(ACCEPTED)
K -->|"signBsff(OPERATION)"|L(INTERMEDIATELY_PROCESSED)
Crée un premier transporteur qui sera associé au bordereau.
mutation CreateBsffTransporter($input: BsffTransporterInput!) {
createBsffTransporter(input: $input) {
id
}
}
{
"input": {
"company": {
"siret": "SIRET_TRANSPORTEUR_1",
"vatNumber": null,
"name": "Transport & Co",
"address": "1 rue des 6 chemins, 07100 ANNONAY",
"contact": "Claire Dupuis",
"mail": "claire.dupuis@transportco.fr",
"phone": "04 00 00 00 00"
}
}
}
Crée un second transporteur qui sera associé au bordereau.
mutation CreateBsffTransporter($input: BsffTransporterInput!) {
createBsffTransporter(input: $input) {
id
}
}
{
"input": {
"company": {
"siret": "SIRET_TRANSPORTEUR_2",
"vatNumber": null,
"name": "Transport & Co",
"address": "1 rue des 6 chemins, 07100 ANNONAY",
"contact": "Claire Dupuis",
"mail": "claire.dupuis@transportco.fr",
"phone": "04 00 00 00 00"
}
}
}
Crée un BSFF en associant une liste de transporteurs dans un ordre donné
mutation CreateBsff($input: BsffInput!) {
createBsff(input: $input) {
id
status
packagings {
id
}
}
}
{
"input": {
"type": "COLLECTE_PETITES_QUANTITES",
"emitter": {
"company": {
"siret": "SIRET_OPERATEUR",
"name": "Les gentlemen du froid",
"address": "1 rue de paradis, 75010 PARIS",
"contact": "Le directeur",
"phone": "01 00 00 00 00",
"mail": "contact@gentlemandufroid.fr"
}
},
"packagings": [
{
"type": "BOUTEILLE",
"volume": 1,
"numero": "1",
"weight": 1
}
],
"waste": {
"code": "14 06 01*",
"description": "R404A",
"adr": "UN 1078, Gaz frigorifique NSA (Gaz réfrigérant, NSA), 2.2 (C/E)"
},
"weight": {
"value": 1,
"isEstimate": true
},
"destination": {
"cap": "CAP",
"plannedOperationCode": "R2",
"company": {
"siret": "SIRET_TRAITEUR",
"name": "Traiteur & Co",
"address": "1 avenue des roses 67100 Strasbourg",
"contact": "Thomas Largeron",
"phone": "03 00 00 00 00",
"mail": "thomas.largeron@traiteur.fr"
}
},
"transporters": [
"ID_BSFF_TRANSPORTER_1",
"ID_BSFF_TRANSPORTER_2"
]
}
}
L'émetteur signe le BSFF
mutation SignBsff($id: ID!, $input: BsffSignatureInput!) {
signBsff(id: $id, input: $input) {
id
status
packagings {
id
}
}
}
{
"id": "ID_BSFF",
"input": {
"type": "EMISSION",
"author": "Jean Opérateur"
}
}
Le premier transporteur met à jour ses informations de signature
mutation UpdateBsffTransporter($id: ID!, $input: BsffTransporterInput!) {
updateBsffTransporter(id: $id, input: $input) {
id
}
}
{
"id": "ID_BSFF_TRANSPORTER_1",
"input": {
"transport": {
"mode": "ROAD",
"plates": [
"abc21cde"
],
"takenOverAt": "2024-11-20T13:59:00.795Z"
}
}
}
Le premier transporteur signe le bordereau
mutation SignBsff($id: ID!, $input: BsffSignatureInput!) {
signBsff(id: $id, input: $input) {
id
status
packagings {
id
}
}
}
{
"id": "ID_BSFF",
"input": {
"type": "TRANSPORT",
"author": "Jean Transporteur"
}
}
Le second transporteur met à jour ses informations de signature
mutation UpdateBsffTransporter($id: ID!, $input: BsffTransporterInput!) {
updateBsffTransporter(id: $id, input: $input) {
id
}
}
{
"id": "ID_BSFF_TRANSPORTER_2",
"input": {
"transport": {
"mode": "ROAD",
"plates": [
"abc21cde"
],
"takenOverAt": "2024-11-20T13:59:00.795Z"
}
}
}
Le second transporteur signe le bordereau
mutation SignBsff($id: ID!, $input: BsffSignatureInput!) {
signBsff(id: $id, input: $input) {
id
status
packagings {
id
}
}
}
{
"id": "ID_BSFF",
"input": {
"type": "TRANSPORT",
"author": "Jean Transporteur"
}
}
L'installation de destination affrète un troisième transporteur
mutation CreateBsffTransporter($input: BsffTransporterInput!) {
createBsffTransporter(input: $input) {
id
}
}
{
"input": {
"company": {
"siret": "SIRET_TRANSPORTEUR_3",
"vatNumber": null,
"name": "Transport & Co",
"address": "1 rue des 6 chemins, 07100 ANNONAY",
"contact": "Claire Dupuis",
"mail": "claire.dupuis@transportco.fr",
"phone": "04 00 00 00 00"
}
}
}
Le troisième transporteur est ajouté sur le bordereau
mutation UpdateBsff($id: ID!, $input: BsffInput!) {
updateBsff(id: $id, input: $input) {
id
status
}
}
{
"id": "ID_BSFF",
"input": {
"transporters": [
"ID_BSFF_TRANSPORTER_1",
"ID_BSFF_TRANSPORTER_2",
"ID_BSFF_TRANSPORTER_3"
]
}
}
Le troisième transporteur met à jour ses informations de signature
mutation UpdateBsffTransporter($id: ID!, $input: BsffTransporterInput!) {
updateBsffTransporter(id: $id, input: $input) {
id
}
}
{
"input": {
"transport": {
"mode": "ROAD",
"plates": [
"abc21cde"
],
"takenOverAt": "2024-11-20T13:59:00.795Z"
}
}
}
Le troisième transporteur signe le bordereau
mutation SignBsff($id: ID!, $input: BsffSignatureInput!) {
signBsff(id: $id, input: $input) {
id
status
packagings {
id
}
}
}
{
"id": "ID_BSFF",
"input": {
"type": "TRANSPORT",
"author": "Jean Transporteur"
}
}
Les informations sur la réception sont complétées
mutation UpdateBsff($id: ID!, $input: BsffInput!) {
updateBsff(id: $id, input: $input) {
id
status
}
}
{
"id": "ID_BSFF",
"input": {
"destination": {
"reception": {
"date": "2022-11-03"
}
}
}
}
Le destinataire signe la réception du BSFF
mutation SignBsff($id: ID!, $input: BsffSignatureInput!) {
signBsff(id: $id, input: $input) {
id
status
packagings {
id
}
}
}
{
"id": "ID_BSFF",
"input": {
"type": "RECEPTION",
"author": "Jean Transit"
}
}
Les informations sur l'acceptation du contenant sont complétées
mutation UpdateBsffPackaging($id: ID!, $input: UpdateBsffPackagingInput!) {
updateBsffPackaging(id: $id, input: $input) {
id
acceptation {
date
}
operation {
date
}
}
}
{
"id": "ID_PACKAGING_1",
"input": {
"acceptation": {
"date": "2022-11-04",
"weight": 1,
"status": "ACCEPTED",
"wasteCode": "14 06 01*",
"wasteDescription": "R404A"
}
}
}
Le destinataire signe l'acceptation des contenants présents sur le BSFF
mutation SignBsff($id: ID!, $input: BsffSignatureInput!) {
signBsff(id: $id, input: $input) {
id
status
packagings {
id
}
}
}
{
"id": "ID_BSFF",
"input": {
"type": "ACCEPTATION",
"author": "Jean Dupont"
}
}
Les informations sur l'opération effectuée (D13) sur le contenant sont complétées
mutation UpdateBsffPackaging($id: ID!, $input: UpdateBsffPackagingInput!) {
updateBsffPackaging(id: $id, input: $input) {
id
acceptation {
date
}
operation {
date
}
}
}
{
"id": "ID_PACKAGING_1",
"input": {
"operation": {
"date": "2022-11-05",
"code": "D13",
"description": "Regroupement",
"nextDestination": {
"plannedOperationCode": "R2",
"cap": "CAP 2",
"company": {
"siret": "SIRET_TRAITEUR",
"name": "Traiteur & Co",
"address": "1 avenue des roses 67100 Strasbourg",
"contact": "Thomas Largeron",
"phone": "03 00 00 00 00",
"mail": "thomas.largeron@traiteur.fr"
}
}
}
}
}
Le destinataire signe l'opération des contenants présents sur le BSFF
mutation SignBsff($id: ID!, $input: BsffSignatureInput!) {
signBsff(id: $id, input: $input) {
id
status
packagings {
id
}
}
}
{
"id": "ID_BSFF",
"input": {
"type": "OPERATION",
"author": "Jean Opération"
}
}