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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions