Skip to content

Trigger "partially_refund" order payment transition on each partial refund #347

@laurentdabbb

Description

@laurentdabbb

Hi,

According to code lines below, "partially_refund" transition is not triggered on order payment state if that state is already on "partially_refund".

if ($order->getPaymentState() === OrderPaymentStates::STATE_PARTIALLY_REFUNDED) {
return;
}
$stateMachine = $this->stateMachineFactory->get($order, OrderPaymentTransitions::GRAPH);
$stateMachine->apply(OrderPaymentTransitions::TRANSITION_PARTIALLY_REFUND);

I think it's a mistake.
sylius_order_payment state machine allow transition from "partially_refund" to "partially_refund". So why not playing transition on a new partial refund ?

Rather than checking current order payment state, you should use if( $stateMachine->can( OrderPaymentTransitions::TRANSITION_PARTIALLY_REFUND ) ) before applying.

What do you think about ?

Thanks a lot ;-)

Metadata

Metadata

Assignees

No one assigned

    Labels

    EnhancementMinor issues and PRs improving the current solutions (optimizations, typo fixes, etc.).

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions