Collecte d'amiante sur un chantier 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 `signBsda` (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) -->|createBsda| A
    A(INITIAL) -->|"signBsda(EMISSION)"| B(SIGNED_BY_PRODUCER)
    B -->|"signBsda(WORK)"| C(SIGNED_BY_WORKER)
    C --> |"signBsda(TRANSPORT)"| D(SENT)
    D -->|"signBsda(TRANSPORT)"| E(SENT)
    E -->|"signBsda(TRANSPORT)"| F(SENT)
    F --> |"signBsda(OPERATION)"| G(PROCESSED)
    
Crée un premier transporteur qui sera associé au bordereau.
mutation CreateBsdaTransporter($input: BsdaTransporterInput!) {
  createBsdaTransporter(input: $input) {
    id
  }
}
{
  "input": {
    "company": {
      "siret": "SIRET_TRANSPORTEUR_1",
      "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 CreateBsdaTransporter($input: BsdaTransporterInput!) {
  createBsdaTransporter(input: $input) {
    id
  }
}
{
  "input": {
    "company": {
      "siret": "SIRET_TRANSPORTEUR_2",
      "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 BSDA en associant une liste de transporteurs dans un ordre donné
mutation Createbsda($input: BsdaInput!) {
  createBsda(input: $input) {
    id
    status
  }
}
{
  "input": {
    "emitter": {
      "isPrivateIndividual": false,
      "company": {
        "siret": "SIRET_PRODUCTEUR",
        "name": "Déchets & Co",
        "address": "1 rue de paradis, 75010 PARIS",
        "contact": "Jean Dupont",
        "phone": "01 00 00 00 00",
        "mail": "jean.dupont@dechets.org"
      },
      "pickupSite": {
        "address": "5 rue du chantier",
        "postalCode": "75010",
        "city": "Paris",
        "infos": "Site de stockage de boues"
      }
    },
    "destination": {
      "company": {
        "siret": "SIRET_TRAITEUR",
        "name": "Traiteur & Co",
        "address": "1 avenue de l'incinérateur 67100 Strasbourg",
        "contact": "Thomas Largeron",
        "phone": "03 00 00 00 00",
        "mail": "thomas.largeron@incinerateur.fr"
      },
      "plannedOperationCode": "D 5",
      "cap": "CAP"
    },
    "waste": {
      "code": "16 01 11*",
      "consistence": "SOLIDE",
      "familyCode": "Code famille",
      "materialName": "Nom usuel du matériau",
      "sealNumbers": [
        "1",
        "2",
        "3"
      ],
      "adr": "ADR"
    },
    "worker": {
      "company": {
        "siret": "SIRET_WORKER",
        "name": "Entreprise de travaux & Co",
        "address": "1 avenue du travail 67100 Strasbourg",
        "contact": "Thomas Lebosseur",
        "phone": "03 00 00 00 00",
        "mail": "thomas.lebosseur@worker.fr"
      }
    },
    "packagings": [
      {
        "type": "BIG_BAG",
        "quantity": 2
      }
    ],
    "weight": {
      "isEstimate": true,
      "value": 2.3
    },
    "transporters": [
      "ID_BSDA_TRANSPORTER_1",
      "ID_BSDA_TRANSPORTER_2"
    ]
  }
}
L'entreprise producteur appose une signature "EMISSION" sur le BSDA.
mutation SignBsda($id: ID!, $input: BsdaSignatureInput!) {
  signBsda(id: $id, input: $input) {
    id
    status
  }
}
{
  "id": "ID_BSDA",
  "input": {
    "author": "Jean Dupont",
    "type": "EMISSION"
  }
}
L'entreprise worker appose une signature "WORK" sur le BSDA.
mutation SignBsda($id: ID!, $input: BsdaSignatureInput!) {
  signBsda(id: $id, input: $input) {
    id
    status
  }
}
{
  "id": "ID_BSDA",
  "input": {
    "author": "Jean Dupont",
    "type": "WORK"
  }
}
Le premier transporteur met à jour ses informations de signature
mutation UpdateBsdaTransporter($id: ID!, $input: BsdaTransporterInput!) {
  updateBsdaTransporter(id: $id, input: $input) {
    id
  }
}
{
  "id": "ID_BSDA_TRANSPORTER_1",
  "input": {
    "transport": {
      "mode": "ROAD",
      "plates": [
        "abc21cde"
      ],
      "takenOverAt": "2025-10-28T08:39:54.906Z"
    }
  }
}
Le premier transporteur signe le bordereau
mutation SignBsda($id: ID!, $input: BsdaSignatureInput!) {
  signBsda(id: $id, input: $input) {
    id
    status
  }
}
{
  "id": "ID_BSDA",
  "input": {
    "author": "Jean Dupont",
    "type": "TRANSPORT"
  }
}
Le second transporteur met à jour ses informations de signature
mutation UpdateBsdaTransporter($id: ID!, $input: BsdaTransporterInput!) {
  updateBsdaTransporter(id: $id, input: $input) {
    id
  }
}
{
  "id": "ID_BSDA_TRANSPORTER_2",
  "input": {
    "transport": {
      "mode": "ROAD",
      "plates": [
        "abc21cde"
      ],
      "takenOverAt": "2025-10-28T08:39:54.906Z"
    }
  }
}
Le second transporteur signe le bordereau
mutation SignBsda($id: ID!, $input: BsdaSignatureInput!) {
  signBsda(id: $id, input: $input) {
    id
    status
  }
}
{
  "id": "ID_BSDA",
  "input": {
    "author": "Jean Dupont",
    "type": "TRANSPORT"
  }
}
L'installation de destination affrète un troisième transporteur
mutation CreateBsdaTransporter($input: BsdaTransporterInput!) {
  createBsdaTransporter(input: $input) {
    id
  }
}
{
  "input": {
    "company": {
      "siret": "SIRET_TRANSPORTEUR_3",
      "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 Updatebsda($id: ID!, $input: BsdaInput!) {
  updateBsda(id: $id, input: $input) {
    id
    status
  }
}
{
  "id": "ID_BSDA",
  "input": {
    "transporters": [
      "ID_BSDA_TRANSPORTER_1",
      "ID_BSDA_TRANSPORTER_2",
      "ID_BSDA_TRANSPORTER_3"
    ]
  }
}
Le troisième transporteur met à jour ses informations de signature
mutation UpdateBsdaTransporter($id: ID!, $input: BsdaTransporterInput!) {
  updateBsdaTransporter(id: $id, input: $input) {
    id
  }
}
{
  "input": {
    "transport": {
      "mode": "ROAD",
      "plates": [
        "abc21cde"
      ],
      "takenOverAt": "2025-10-28T08:39:54.906Z"
    }
  }
}
Le troisième transporteur signe le bordereau
mutation SignBsda($id: ID!, $input: BsdaSignatureInput!) {
  signBsda(id: $id, input: $input) {
    id
    status
  }
}
{
  "id": "ID_BSDA",
  "input": {
    "author": "Jean Dupont",
    "type": "TRANSPORT"
  }
}
Mise à jour des informations du BSDA.
mutation Updatebsda($id: ID!, $input: BsdaInput!) {
  updateBsda(id: $id, input: $input) {
    id
    status
  }
}
{
  "id": "ID_BSDA",
  "input": {
    "destination": {
      "reception": {
        "acceptationStatus": "ACCEPTED",
        "date": "2025-10-28T08:39:54.906Z",
        "weight": 2.1
      },
      "operation": {
        "code": "D 5",
        "mode": "ELIMINATION",
        "date": "2025-10-28T08:39:54.906Z"
      }
    }
  }
}
L'entreprise traiteur appose une signature "OPERATION" sur le BSDA.
mutation SignBsda($id: ID!, $input: BsdaSignatureInput!) {
  signBsda(id: $id, input: $input) {
    id
    status
  }
}
{
  "id": "ID_BSDA",
  "input": {
    "author": "Jean Dupont",
    "type": "OPERATION"
  }
}