0

In Drupal 9, I have defined the following order workflow for Drupal Commerce:

miss_pomela_fulfillment_processing:
  id: miss_pomela_fulfillment_processing
  group: commerce_order
  label: 'Miss Pomela Fulfillment, with processing'
  states:
    draft:
      label: Draft
    pending:
      label: Pending
    processing:
      label: En preparación
    packed:
      label: Ready to ship
    fulfillment:
      label: Shipped
    completed:
      label: Completed
    canceled:
      label: Canceled
  transitions:
    place:
      label: 'Create order'
      from: [draft]
      to: pending
    process:
      label: 'Process order'
      from: [pending]
      to: processing
    fulfill:
      label: 'Mark as ready to ship'
      from: [processing]
      to: packed
    ship:
      label: 'Ship'
      from: [packed]
      to: fulfillment
    complete:
      label: 'Mark as completed'
      from: [processing, pending, packed, fulfillment]
      to: completed
    cancel:
      label: 'Cancel order'
      from: [draft, processing, fulfillment, pending, completed]
      to:   canceled

I'm trying to understand how to sync the order state with the shipping state the way I need.

Right now, with this workflow, the shipping state changes automatically to Shipped when the packed state order is set, so when the fulfill transition is occurs. But what I want to have is the shipping state as Ready when the state order is packed, and shipped when the state order is fulfillment.

I have tried to find out how to tell the shipping module how to set how to synchronize both states but I'm a bit lost.

Any ideas?

1 Answer 1

0

There is no configuration solution for syncing states between these items. It's ordinarily managed via custom event subscribers. Your code reacts to a given order transition and then loads a shipment and applies whatever transition you think is appropriate. There are examples of event subscribers in core if you need a reference, e.g. the OrderAssignSubscriber in the payment module that assigns payment methods related to an order to the same user account as the order is being assigned to.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.