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

[2.5][nikandrovalex][1][gibbsfromncis] UX Add support for recurring payments #30

Closed
svk31 opened this issue Jan 19, 2017 · 60 comments
Closed
Assignees
Labels
[1b] User Story The User Story details a requirement. It may ref a parent Project (Epic). It may ref child Task(s) [3] Feature Classification indicating the addition of novel functionality to the design [5e] Huge Indicates size of task. Est. more than ten hours (Recommended to split in tasks) [6] UX Impact flag identifying the application User Experience
Milestone

Comments

@svk31
Copy link
Contributor

svk31 commented Jan 19, 2017

From @svk31 on December 29, 2015 7:10

Copied from original issue: cryptonomex/graphene-ui#639

@svk31 svk31 added the [3] Feature Classification indicating the addition of novel functionality to the design label Jan 19, 2017
@svk31
Copy link
Contributor Author

svk31 commented Jan 19, 2017

Most likely even the 160120 milestone is too soon for this, it will require some digging to find out how stuff works and what's actually possible.

@svk31
Copy link
Contributor Author

svk31 commented Jan 19, 2017

From @noisy on February 2, 2016 0:50

This feature will be very good for new businesses. 👍

@svk31
Copy link
Contributor Author

svk31 commented Jan 19, 2017

Copy paste of xeroc's explanation of how this works on the blockchain level:

  1. you setup a withdraw permission:
get_prototype_operation withdraw_permission_create_operation
[
  25,{
    "fee": {
      "amount": 0,
      "asset_id": "1.3.0"
    },
    "withdraw_from_account": "1.2.0",
    "authorized_account": "1.2.0",
    "withdrawal_limit": {
      "amount": 0,
      "asset_id": "1.3.0"
    },
    "withdrawal_period_sec": 0,
    "periods_until_expiration": 0,
    "period_start_time": "1970-01-01T00:00:00"
  }
]

All you need to define is

  • The account from which to withdraw
  • The account that is allowed to withdraw
  • The asset and amount limit that is allowed to withdraw
  • And the period in which the limit is reset (e.g. 1k$ monthly.)
  • as well as the start time
  1. The other party can withdraw funds from your account with the
    withdraw operation:
get_prototype_operation withdraw_permission_claim_operation
[
  27,{
    "fee": {
      "amount": 0,
      "asset_id": "1.3.0"
    },
    "withdraw_permission": "1.12.0",
    "withdraw_from_account": "1.2.0",
    "withdraw_to_account": "1.2.0",
    "amount_to_withdraw": {
      "amount": 0,
      "asset_id": "1.3.0"
    }
  }
]

You need

  • The actually object id of that withdrawal permission
  • the account to withdraw from (imho redundant)
  • the account to withdraw to
  • and the amount

The biggest problem here is that the withdraw permissions are not
"searchable" and I don't think they are in the results of
get_full_account yet. @abit: maybe you can help add them there.

Once you have a withdraw permission object id (and the matching
account), you can create a withdrawal transaction!

@wmbutler wmbutler added [3] Enhancement Classification indicating a change to the functionality of the existing imlementation and removed [3] Feature Classification indicating the addition of novel functionality to the design labels Jul 21, 2017
evgenygil pushed a commit to evgenygil/GuronDEX-ui that referenced this issue Oct 27, 2017
@abitmore abitmore reopened this Feb 9, 2018
@abitmore
Copy link
Member

abitmore commented Feb 9, 2018

Might had been closed accidentally. Reopened.

@wmbutler
Copy link
Contributor

wmbutler commented Feb 9, 2018

Thanks!

@wmbutler wmbutler added [3] Feature Classification indicating the addition of novel functionality to the design and removed [3] Enhancement Classification indicating a change to the functionality of the existing imlementation labels Feb 9, 2018
@wmbutler wmbutler added this to the 180301 milestone Feb 9, 2018
@wmbutler wmbutler changed the title Add support for recurring payments [6] UX Add support for recurring payments Feb 9, 2018
@wmbutler
Copy link
Contributor

wmbutler commented Feb 9, 2018

@ahdigital Need your UX skills for this. It's in the March Sprint so you can delay it until then.

@abitmore
Copy link
Member

abitmore commented Feb 10, 2018

@wmbutler just FYI I'm not sure if the required API will be ready in March.

@wmbutler
Copy link
Contributor

Thanks. I'll be adding a bunch more Milestones and will push this appropriately.

@ahdigital
Copy link
Contributor

@wmbutler Add me under the UX tag and I will work on a proposal.

@wmbutler wmbutler added [6] UX Impact flag identifying the application User Experience and removed [3] Feature Classification indicating the addition of novel functionality to the design labels Feb 24, 2018
@wmbutler wmbutler modified the milestones: 180301, 180315 Feb 24, 2018
@wmbutler wmbutler changed the title [6] UX Add support for recurring payments [6][ahdigital] UX Add support for recurring payments Feb 24, 2018
@wmbutler
Copy link
Contributor

It's yours.

@wmbutler wmbutler modified the milestones: 180315, 180415 Mar 14, 2018
@ahdigital
Copy link
Contributor

I started working out the scope for this issue, and I read this:

The other party can withdraw funds from your account with the withdraw operation

And looking at the API documentation for the class it's definition is:

Withdrawal permissions define withdrawal periods, which is a span of time during which the authorized account may make a withdrawal. Any number of withdrawals may be made so long as the total amount withdrawn per period does not exceed the limit for any given period.

I think the issue title 'recurring payments' will be a poor UX choice because it suggests payments can be scheduled and automatically sent and I don't think this will be possible. Can someone confirm?

If it's not possible it raises these questions:

  1. What can we rename this issue/new functionality?
    • What about 'Grant Funds'?
  2. What happens if the other party doesn't withdraw the maximum available funds within the period set? Do they roll over?
  3. Are the total funds defined for the period locked/allocated to ensure they'll be available for the other party to withdraw?
  4. Will we be able to notify or remind the other party that they have funds available for withdrawal?

@wmbutler wmbutler added this to the 181212 milestone Nov 18, 2018
@sschiessl-bcp
Copy link
Contributor

I suppose it would be possible to be included there.

For the additional screen, you also need the option to actually claim it. From a user perspective you have four parts:

  1. setup permission for someone else
  2. view permission that I have given or received
  3. edit permission
  4. claim from a permission

Which of those would you see within Send modal? I assume 1. and 4.

@sschiessl-bcp
Copy link
Contributor

sschiessl-bcp commented Nov 26, 2018

@nikandrovalex

First step I suggest to do UX for setup/update permission. Required inputs to setup/update permission:

  • authorized account
  • withdrawal limit per period (this is a maximum, actual claim can be less, only one claim per period allowed!)
  • withdrawal period (in seconds)
  • number of periods
  • start of first period

Bill suggests to include it into the send modal. When setting up or editing a permission, the memo is not applicable. I suggest to replace that area with a permission detail selector component. On the right area of "Quantity" we could display "Recurring debit" to toggle the creation of withdrawal permissions.

The component should allow the user to specify a start date and the period length, which is set in seconds in the backend. Possible options for the user could be:

  • hourly, reset on :00/:20/etc.
  • daily, reset on 8:00/10:00/etc.
  • weekly, reset on Monday|Tuesday|etc. (default to 12:00 UTC on that day)
  • bi-weekly, reset on Monday|Tuesday|etc. (default to 12:00 UTC on that day)
    After specifying the start date and period length, I imagine that the user may either want to:
  • specify how many periods should be possible (expiration is then calculated)
  • specify when the permission should expire (number of periods is then calculated)

@nikandrovalex
Copy link

Hi @sschiessl-bcp Please check, I correctly understood the task?

image

@gibbsfromncis gibbsfromncis changed the title [4][10] UX Add support for recurring payments [X][nikandrovalex][1][gibbsfromncis] UX Add support for recurring payments Dec 7, 2018
@gibbsfromncis
Copy link
Contributor

@startailcoon added 1h for a call to sync with Alex

@gibbsfromncis
Copy link
Contributor

@nikandrovalex you have missed Asset selection (bitUSD, OPEN.BTC etc.) on withdrawal limit input.

@nikandrovalex
Copy link

@gibbsfromncis pls check
image

@abitmore
Copy link
Member

The "monthly" option is tricky because the back end calculates periods in seconds only. Please either add a description about how the UI will implement it, or don't have that option.

@abitmore
Copy link
Member

By the way, better have a "authorized from" label/box (perhaps read only) in the model.

@gibbsfromncis
Copy link
Contributor

gibbsfromncis commented Dec 11, 2018

@abitmore what about the case if I want to create withdrawal permission for you and give a permission for myself to withdraw money from your account? Should we add "authorized from" input with ability to change it. And if currentAccount !== authorizedFrom (gibbs-from-ncis !== abit) we make a proposed transaction for you to give me a permission?

@gibbsfromncis
Copy link
Contributor

gibbsfromncis commented Dec 11, 2018

@abitmore Agree. Specify period will be a dropdown with the following options:

  • Min
  • Hour
  • Day
  • Week

@sschiessl-bcp
Copy link
Contributor

Your points above is the reason why Bill was so keen on having it integrated in the send Modal from a UX perspective (should still be it's own component to reduce code clutter).

Months don't have a fixed second representation, that's what abit means.
A hint to the user should be enough in that matter until Taconators BSIP is pushed further.

@gibbsfromncis
Copy link
Contributor

gibbsfromncis commented Dec 12, 2018

@sschiessl-bcp you got my vision of clear User Experience. if you want to put it inside Send Modal - common user won't understand how it works. I do not see the reason to make simple things more complicated. Anyway, my idea was to show my vision. If you want to make it complicated - lets ask Alex to integrate it somehow with Send Modal.

My idea was - Withdrawal permissions is a separate section like Assets Creation/Updating etc where user able to see all info he needs and manage it.

If you disagree please provide strict requirements and lets ask Alex to work on it

@nikandrovalex
Copy link

@sschiessl-bcp @gibbsfromncis and so, what should I do next? 😊

@wmbutler wmbutler modified the milestones: 181219, 190103 Dec 15, 2018
@nikandrovalex
Copy link

@startailcoon If it's ok, can I get paid? @sschiessl-bcp

@nikandrovalex
Copy link

I spent 2hr 33min

@TheTaconator
Copy link

The "monthly" option is tricky because the back end calculates periods in seconds only. Please either add a description about how the UI will implement it, or don't have that option.

Agree. @gibbsfromncis Until Core has a second version of recurring withdrawal operation, secular periods like months should be avoided unless a special description is added that defines how "month" will be interpreted.

Might discuss with Core Team about the availability of a second version.

@TheTaconator
Copy link

@abitmore what about the case if I want to create withdrawal permission for you and give a permission for myself to withdraw money from your account? Should we add "authorized from" input with ability to change it. And if currentAccount !== authorizedFrom (gibbs-from-ncis !== abit) we make a proposed transaction for you to give me a permission?

Yes. For currentAccount !== authorizedFrom, proposed transaction is necessary when the recipient or anyone else initiates the recurring authorization. Then giver will need to be notified about the request, and will need a way to review the request.

@TheTaconator
Copy link

Also @TheTaconator regarding "recurring send" or "recurring debit", that could be "send" from the user/employer that sets it up, and the ui displays the term "debit" to the person/employee at the receiving end (like the mobile wallet user) i'd think.

(like an employer that sends out some of their company token to all subscribed employees every month. some employers may send some or all of an employees wages as company tokens, and each employee may receive a differing amount of the company token that month, based on their wages for that month)

This can be an option. Be cautious that if employee forgets to withdraw during a particular month then that month's withdrawal opportunity is lost.

@gibbsfromncis gibbsfromncis changed the title [X][nikandrovalex][1][gibbsfromncis] UX Add support for recurring payments [2.5][nikandrovalex][1][gibbsfromncis] UX Add support for recurring payments Jan 16, 2019
@startailcoon
Copy link
Contributor

Closing UX issue, moving forward with UI implementation in #2457

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[1b] User Story The User Story details a requirement. It may ref a parent Project (Epic). It may ref child Task(s) [3] Feature Classification indicating the addition of novel functionality to the design [5e] Huge Indicates size of task. Est. more than ten hours (Recommended to split in tasks) [6] UX Impact flag identifying the application User Experience
Projects
None yet
Development

No branches or pull requests