Transport multi-modal (Amélioration juillet 2023)
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 `signTransportForm`. 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.
Ce workflow est plus flexible que le premier workflow faisant appel aux mutations `prepareSegment`, `markSegmentAsReadyToTakeOver` et `takeOverSegment` car il permet à chaque acteur du bordereau d'ajouter de nouveaux transporteurs à tout moment.
Ce workflow est plus flexible que le premier workflow faisant appel aux mutations `prepareSegment`, `markSegmentAsReadyToTakeOver` et `takeOverSegment` car il permet à chaque acteur du bordereau d'ajouter de nouveaux transporteurs à tout moment.
graph LR
NO_STATE_1(NO STATE) --> |createFormTransporter| NO_STATE_2(NO STATE)
NO_STATE_2 --> |createFormTransporter| NO_STATE_3(NO_STATE)
NO_STATE_3 --> |createForm| DRAFT
DRAFT --> |markAsSealed| SEALED
SEALED --> |signEmissionForm| SIGNED_BY_PRODUCER
SIGNED_BY_PRODUCER --> |signTransportForm| SENT1(SENT)
SENT2 --> |signTransportForm| SENT3(SENT)
SENT3 --> |createFormTransporter| SENT4(SENT)
SENT4 --> |signTransportForm| SENT5(SENT)
SENT5 --> |markAsReceived| ACCEPTED
ACCEPTED --> |markAsProcessed| PROCESSED
Crée un premier transporteur qui sera associé au bordereau.
mutation CreateFormTransporter($input: TransporterInput!) {
  createFormTransporter(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 CreateFormTransporter($input: TransporterInput!) {
  createFormTransporter(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 bordereau en associant une liste de transporteurs dans un ordre donné
mutation CreateForm($createFormInput: CreateFormInput!) {
  createForm(createFormInput: $createFormInput) {
    id
    status
  }
}
{
  "createFormInput": {
    "emitter": {
      "type": "PRODUCER",
      "workSite": {
        "address": "5 rue du chantier",
        "postalCode": "75010",
        "city": "Paris",
        "infos": "Site de stockage de boues"
      },
      "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"
      }
    },
    "recipient": {
      "processingOperation": "D 10",
      "cap": "CAP",
      "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"
      }
    },
    "wasteDetails": {
      "code": "06 05 02*",
      "isSubjectToADR": false,
      "onuCode": null,
      "name": "Boues",
      "packagingInfos": [
        {
          "type": "CITERNE",
          "quantity": 1
        }
      ],
      "quantity": 1,
      "quantityType": "ESTIMATED",
      "consistence": "LIQUID"
    },
    "transporters": [
      "ID_FORM_TRANSPORTER_1",
      "ID_FORM_TRANSPORTER_2"
    ]
  }
}
Valide les données présentes sur le BSDD avant envoi. Cette action peut-être effectuée par n'importe quel établissement apparaissant sur le BSDD. À ce stade il est encore possible de de modifier le BSDD grâce à la mutation updateForm
mutation MarkAsSealed($id: ID!) {
  markAsSealed(id: $id) {
    id
    status
  }
}
{
  "id": "ID_BSD"
}
Le producteur signe l'enlèvement.
mutation SignEmissionForm($id: ID!, $input: SignEmissionFormInput!) {
  signEmissionForm(id: $id, input: $input) {
    id
    status
  }
}
{
  "id": "ID_BSD",
  "input": {
    "quantity": 1,
    "onuCode": null,
    "transporterNumberPlate": "AA-123456-BB",
    "emittedAt": "2020-04-03T14:48:00",
    "emittedBy": "Isabelle Guichard",
    "emittedByEcoOrganisme": false
  }
}
Le premier transporteur signe le bordereau
mutation SignTransportForm($id: ID!, $input: SignTransportFormInput!) {
  signTransportForm(id: $id, input: $input) {
    id
    status
  }
}
{
  "id": "ID_BSD",
  "input": {
    "takenOverAt": "2020-04-03T14:48:00",
    "takenOverBy": "Isabelle Guichard",
    "transporterNumberPlate": "AA-123456-BB",
    "transporterTransportMode": "ROAD"
  }
}
Le second transporteur met à jour sa plaque d'immatriculation
mutation UpdateFormTransporter($id: ID!, $input: TransporterInput!) {
  updateFormTransporter(id: $id, input: $input) {
    id
  }
}
{
  "id": "ID_FORM_TRANSPORTER_2",
  "input": {
    "numberPlate": "AG-567-BS"
  }
}
Le second transporteur signe le bordereau
mutation SignTransportForm($id: ID!, $input: SignTransportFormInput!) {
  signTransportForm(id: $id, input: $input) {
    id
    status
  }
}
{
  "id": "ID_BSD",
  "input": {
    "takenOverAt": "2020-04-03T14:48:00",
    "takenOverBy": "Isabelle Guichard",
    "transporterNumberPlate": "AA-123456-BB",
    "transporterTransportMode": "ROAD"
  }
}
L'installation de destination affrète un troisième transporteur
mutation CreateFormTransporter($input: TransporterInput!) {
  createFormTransporter(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 UpdateForm($updateFormInput: UpdateFormInput!) {
  updateForm(updateFormInput: $updateFormInput) {
    id
    status
  }
}
{
  "updateFormInput": {
    "id": "ID_BSD",
    "transporters": [
      "ID_FORM_TRANSPORTER_1",
      "ID_FORM_TRANSPORTER_2",
      "ID_FORM_TRANSPORTER_3"
    ]
  }
}
Le troisième transporteur signe le bordereau
mutation SignTransportForm($id: ID!, $input: SignTransportFormInput!) {
  signTransportForm(id: $id, input: $input) {
    id
    status
  }
}
{
  "id": "ID_BSD",
  "input": {
    "takenOverAt": "2020-04-03T14:48:00",
    "takenOverBy": "Isabelle Guichard",
    "transporterNumberPlate": "AA-123456-BB",
    "transporterTransportMode": "ROAD"
  }
}
Le déchet est receptionné et accepté
sur l'installation de destination prévue
sur l'installation de destination prévue
mutation MarkAsReceived($id: ID!, $receivedInfo: ReceivedFormInput!) {
  markAsReceived(id: $id, receivedInfo: $receivedInfo) {
    id
    status
  }
}
{
  "id": "ID_BSD",
  "receivedInfo": {
    "wasteAcceptationStatus": "ACCEPTED",
    "receivedBy": "Antoine Derieux",
    "receivedAt": "2020-04-05T11:18:00",
    "signedAt": "2020-04-05T12:00:00",
    "quantityReceived": 1,
    "quantityRefused": 0
  }
}
L'opération d'élimination / valorisation est effectuée
par l'installation de destination prévue
par l'installation de destination prévue
mutation MarkAsProcessed($id: ID!, $processedInfo: ProcessedFormInput!) {
  markAsProcessed(id: $id, processedInfo: $processedInfo) {
    id
    status
    quantityReceived
  }
}
{
  "id": "ID_BSD",
  "processedInfo": {
    "processingOperationDone": "D 10",
    "processingOperationDescription": "Incinération",
    "destinationOperationMode": "ELIMINATION",
    "processedBy": "Alfred Dujardin",
    "processedAt": "2020-04-15T10:22:00"
  }
}