Sylius / InvoicingPlugin

Generate an Invoice for every placed order
MIT License
79 stars 82 forks source link

Change behavior for the bill generation #174

Open pocky opened 4 years ago

pocky commented 4 years ago

A bill is generated when the sylius_payment flow is complete. This is something good for business to business but not for business to customer because a "complete" sylius_payment is not always paid and an unpaid order should not have a generated bill.

That's why I think we should change this behavior.

Steps

Current configuration must be updated :

winzou_state_machine:
    sylius_order:
        callbacks:
            after:
                sylius_invoicing_plugin_payment_complete_producer:
                    on: ['fulfill']
                    do: ['@sylius_invoicing_plugin.event_producer.order_payment_paid', '__invoke']
                    args: ['object']

Sylius\InvoicingPlugin\EventProducer\OrderPaymentPaidProducer should be updated because there is no more a PaymentInterface but an OrderInterface. Class should be renamed OrderFulfilledProducer.

Sylius\InvoicingPlugin\EventProducer\OrderPlacedProducer should be updated because the event is no more dispatched with a condition on checkoutState (but with paymentState and OrderPaymentStates::STATE_PAID). Class should be renamed OrderPaidProducer.

Related code should be renamed.

After changes

An unpaid order will not have any bill until the OrderPaymentStates::STATE_PAID is dispatched. Then the bill will be available for customer. Because the payment is paid, the owner can print the bill and prepare his order. Finally the order will be "fulfilled" when the shipment is marked as "shipped" and the bill will be sent to the customer.

JordivdB commented 4 years ago

Any updates on this?

pocky commented 4 years ago

Sorry but your comments are not very helpful. If you want to make this change on your own Sylius: create a fork, follow the instructions and send love for this change (this issue/slack/...). If not, submit a PR and/or buy one day of work.