Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refund management #424

Open
Tirodem opened this issue Aug 28, 2023 · 3 comments
Open

Refund management #424

Tirodem opened this issue Aug 28, 2023 · 3 comments

Comments

@Tirodem
Copy link
Contributor

Tirodem commented Aug 28, 2023

We need to check what is needed for refund in term of system.

We have 2 options :

  • lazy but super quick one : super-admin cancel the order, fills an employee note on the order with the info, refund the users through bank transfer (or, exceptionnally, through sum up or other mean) and tell his or her accountability team
  • on "cancelled" partially paid order, we create a "Declare refund" button and a label "By clicking this button, I hereby declare that I refunded the customer from the deposit, one of more, that were deposed on this cancelled order".

My realistic through :

  • manage refund & customer communication outside beBOP
  • find a quick way to include refund amount in reporting

My thought A :

  • create the "Declare refund" button
  • keep the payments as "paid"
  • create a "refunds" sub-oject on data.orders (with currency, amount, createdAt, declaredAsDoneAt and isContested)
    • make refunds.currency & refund.amount equal to the total of paid amount of every payment paid on this order (big issue in case of main currency change, but you're not supposed to change it to as long as you have pending partially paid orders)
      • so, from data.payments.X.currencySnapshot.main.price.currency & data.payments.X.currencySnapshot.main.price.currency , or data.payments.X.price.amount & data.payments.X.price.currency, depending of the most viable & easiest
    • make data.orders.refunds.createdAt = data.orders.cancelledAt (if it was partially paid and cancelled manually through the new CTA)
    • make data.orders.refunds.declaredAsDoneAt = timestamp where "Declare refund" CTA is used
    • make data.orders.refunds.isContested = null at first (and we can imagine it to be made "true" if the customer receives a notification and click on a link to contest)
  • add refunds on /admin/reporting/

My thought B :

  • create the "Declare refund" button
  • keep the payments as "paid"
  • create a "refunds" sub-oject on data.orders (with currency, amount, createdAt, declaredAsDoneAt and isContested)
    • make refunds.currency & refund.amount equal to the total of paid amount of every payment paid on this order (big issue in case of main currency change, but you're not supposed to change it to as long as you have pending partially paid orders)
      • so, from data.payments.X.currencySnapshot.main.price.currency & data.payments.X.currencySnapshot.main.price.currency , or data.payments.X.price.amount & data.payments.X.price.currency, depending of the most viable & easiest
    • make data.orders.refunds.createdAt = data.orders.cancelledAt (if it was partially paid and cancelled manually through the new CTA)
    • make data.orders.refunds.declaredAsDoneAt = timestamp where "Declare refund" CTA is used
    • make data.orders.refunds.isContested = null at first (and we can imagine it to be made "true" if the customer receives a notification and click on a link to contest)
  • add refunds on /admin/reporting/
  • send a link to the customer with a possibility to contest the refund
  • imagine a later process
@Tirodem Tirodem changed the title Refund manager Refund management* Aug 28, 2023
@Tirodem Tirodem changed the title Refund management* Refund management Aug 28, 2023
@Tirodem Tirodem self-assigned this Dec 6, 2023
@Tirodem
Copy link
Contributor Author

Tirodem commented Dec 12, 2023

Seen with Vincent, not MVP

@Tirodem
Copy link
Contributor Author

Tirodem commented Mar 4, 2024

Previous description :

TBD

MVP

Refund will be done by beBOP owner mostly :

  • on physical shop
  • by superadmin, some admin & POS employee
  • manually

Refund options are

I don't think there's much to do except to contact the customer with receipt, TxID or LNUrlWithdraw.

no-code ?

@Tirodem
Copy link
Contributor Author

Tirodem commented Mar 7, 2024

For now, we're going with A/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant