Re: Future allocated money, aka Envelope Budgeting

2018-01-31 Thread Phil Longstaff
On Wed, Jan 31, 2018 at 11:35 AM, Adrien Monteleone <
adrien.montele...@gmail.com> wrote:

>
>
> > On Jan 31, 2018, at 10:09 AM, Christopher Lam 
> wrote:
> >
> > Hi Matt- I thought this should move to the devel list, because of
> technical details, and this discussion will be very speculative.
> >
> > I had a thought about how envelope budgeting could work: "divide your
> paycheck into separate envelopes for different purposes".
> >
> > A solution: *Create another type of transaction.*
> >
> > There's already u(n)reconciled, (c)leared, (y)reconciled, (v)oid
> transactions. And (f)rozen I believe is unused. Let's create a new type -
> (b)udget. But the balances are handled differently.
> >
> > It would require some UI and calculations changes --
> >
> > 1. The account budget balance is always maintained similarly to
> Running/Reconciled/Cleared Balances. But it would count all previous
> split-values *and* the (b)udget split amounts. However the budget running
> balance is not shown in the default register. This means, existing
> balances/register are unchanged.
>
> Having transactions in an account register that don’t affect the balance
> is going to be very problematic. I think this would really confuse users.
>
> I would think budget levels for each expense account could be exposed in
> the properties/preferences for each one.
>

That's basically how it's done now. It uses the kvp (key-value pair)
mechanism and each account has a kvp per budget per period with the budget
amount.


>
> The allocation of budget money would have to be handled with a special
> dialog on demand, or as part of an income/asset account preferences with
> percentages/formulas. (essentially a template transaction that fires when
> entries are made in that account)
>
> We already have a budgeting mechanism to set how much we *want* to spend
> on a particular expense.
>
> What we’re discussing here is a way to ‘save up’ funds received for each
> of those expenses.
>
> If I understand correctly, the budget module uses hidden accounts to keep
> track of everything. I would think these same accounts, or other hidden
> accounts paired with them, could do the job.
>

This is incorrect. It uses kvp (key-value pair) structures attached to each
account.

Phil
___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Future allocated money, aka Envelope Budgeting

2018-01-31 Thread Matt Graham
Love the thoughts!

Simplicity is king I think. I am going to ponder your idea for longer Chris. It 
may be that there is a better way to structure budgeting in gnc, or as Adrian 
says maybe a new user interface is the better way to go.

One thing on my todo list is to look into how I can attach a text field to each 
budget entry, and each account (to explain how the number was defined. Eg in my 
monthly budget I might want to attach a comment to the "Dining out" account 
that says "$50 per weekend, plus $100 each Wed for taking the wife to dinner" 
(if only I had the cash for that)). So, I may be looking more into budget 
account structures soon and thus be better placed to see the more flexible way 
forward...

Thanks and regards,
Matt


 Original message 
From: Adrien Monteleone 
Date: 1/2/18 03:36 (GMT+10:00)
To: gnucash-de...@lists.gnucash.org
Subject: Re: Future allocated money, aka Envelope Budgeting



> On Jan 31, 2018, at 10:09 AM, Christopher Lam  
> wrote:
>
> Hi Matt- I thought this should move to the devel list, because of technical 
> details, and this discussion will be very speculative.
>
> I had a thought about how envelope budgeting could work: "divide your 
> paycheck into separate envelopes for different purposes".
>
> A solution: *Create another type of transaction.*
>
> There's already u(n)reconciled, (c)leared, (y)reconciled, (v)oid 
> transactions. And (f)rozen I believe is unused. Let's create a new type - 
> (b)udget. But the balances are handled differently.
>
> It would require some UI and calculations changes --
>
> 1. The account budget balance is always maintained similarly to 
> Running/Reconciled/Cleared Balances. But it would count all previous 
> split-values *and* the (b)udget split amounts. However the budget running 
> balance is not shown in the default register. This means, existing 
> balances/register are unchanged.

Having transactions in an account register that don’t affect the balance is 
going to be very problematic. I think this would really confuse users.

I would think budget levels for each expense account could be exposed in the 
properties/preferences for each one.

The allocation of budget money would have to be handled with a special dialog 
on demand, or as part of an income/asset account preferences with 
percentages/formulas. (essentially a template transaction that fires when 
entries are made in that account)

We already have a budgeting mechanism to set how much we *want* to spend on a 
particular expense.

What we’re discussing here is a way to ‘save up’ funds received for each of 
those expenses.

If I understand correctly, the budget module uses hidden accounts to keep track 
of everything. I would think these same accounts, or other hidden accounts 
paired with them, could do the job.

The question is just how to design the user interface of allocating assets to 
those hidden accounts.

>
> Let's say we're in a bank account register
>
> 1/1Opening $1 Running Balance=$1, Cleared/Reconciled Balance= 
> $0, Budget=$1
> 2/1Income +$1000  Running Balance=$11000, Cleared/Reconciled Balance= 
> $0, Budget=$11000
> 3/1Food -$50Running Balance=$10950, Cleared/Reconciled 
> Balance= $0, Budget=$10950
> 4/1  <--- today  Running Balance=$10950, Cleared/Reconciled 
> Balance= $0, Budget=$10950
>
> 2. We create another Register Action: "Allocate Budget".
> "Allocate Budget" means we create a (b)udget transaction with multisplits 
> from assets to expense accounts. By default we allocate the whole $10950. The 
> $10950 in an asset account means "the amount remaining to allocate".
>
> 4/1 Budget Transaction type "b"
>Asset:Bank -$10950
>Expense:Food $200
>Expense:Gas $200
>Expense:Taxes $300
>Imbalance $10250
>
> Now the state of the Bank register is:
>
> 5/1 Running Balance=$10050, Cleared/Reconciled Balance=$0, Budget 
> Balance= $0
>
> And the Food register is:
>
> 3/1 Food $50  Running Balance=$50 Cleared/Reconciled=$0 Budget=$50
> 4/1 Budget $200 Running Balance=$50 Cleared/Reconciled=$0 Budget=$250
> 5/1 <--- todayRunning Balance=$50 Cleared/Reconciled=$0 Budget=$250
>
> 3. We can allow the imbalance account to collect unbudgeted/spare monies. Or 
> we can decide to allocate an amount smaller than $10950, leaving the 'budget' 
> balance in the bank register a positive value.
>
> 4. Now the Food account has several balances accessible via API
>
> Running Balance $50 - as usual counts all split-values from "n" "y" "c" 
> including future splits.
> Unreconciled $50 - counts splits-values from "n"
> Cleared $0 - counts splits-values from "n" "c"
> Reconciled $0 - counts splits-values from "n" "y" c"
> Budget $250 - counts all split-values from "n" "y" "c" "b"
>
> 5. A Budget report could be created, 

Re: Future allocated money, aka Envelope Budgeting

2018-01-31 Thread Adrien Monteleone


> On Jan 31, 2018, at 10:09 AM, Christopher Lam  
> wrote:
> 
> Hi Matt- I thought this should move to the devel list, because of technical 
> details, and this discussion will be very speculative.
> 
> I had a thought about how envelope budgeting could work: "divide your 
> paycheck into separate envelopes for different purposes".
> 
> A solution: *Create another type of transaction.*
> 
> There's already u(n)reconciled, (c)leared, (y)reconciled, (v)oid 
> transactions. And (f)rozen I believe is unused. Let's create a new type - 
> (b)udget. But the balances are handled differently.
> 
> It would require some UI and calculations changes --
> 
> 1. The account budget balance is always maintained similarly to 
> Running/Reconciled/Cleared Balances. But it would count all previous 
> split-values *and* the (b)udget split amounts. However the budget running 
> balance is not shown in the default register. This means, existing 
> balances/register are unchanged.

Having transactions in an account register that don’t affect the balance is 
going to be very problematic. I think this would really confuse users.

I would think budget levels for each expense account could be exposed in the 
properties/preferences for each one.

The allocation of budget money would have to be handled with a special dialog 
on demand, or as part of an income/asset account preferences with 
percentages/formulas. (essentially a template transaction that fires when 
entries are made in that account)

We already have a budgeting mechanism to set how much we *want* to spend on a 
particular expense.

What we’re discussing here is a way to ‘save up’ funds received for each of 
those expenses.

If I understand correctly, the budget module uses hidden accounts to keep track 
of everything. I would think these same accounts, or other hidden accounts 
paired with them, could do the job.

The question is just how to design the user interface of allocating assets to 
those hidden accounts.
 
> 
> Let's say we're in a bank account register
> 
> 1/1Opening $1 Running Balance=$1, Cleared/Reconciled Balance= 
> $0, Budget=$1
> 2/1Income +$1000  Running Balance=$11000, Cleared/Reconciled Balance= 
> $0, Budget=$11000
> 3/1Food -$50Running Balance=$10950, Cleared/Reconciled 
> Balance= $0, Budget=$10950
> 4/1  <--- today  Running Balance=$10950, Cleared/Reconciled 
> Balance= $0, Budget=$10950
> 
> 2. We create another Register Action: "Allocate Budget".
> "Allocate Budget" means we create a (b)udget transaction with multisplits 
> from assets to expense accounts. By default we allocate the whole $10950. The 
> $10950 in an asset account means "the amount remaining to allocate".
> 
> 4/1 Budget Transaction type "b"
>Asset:Bank -$10950
>Expense:Food $200
>Expense:Gas $200
>Expense:Taxes $300
>Imbalance $10250
> 
> Now the state of the Bank register is:
> 
> 5/1 Running Balance=$10050, Cleared/Reconciled Balance=$0, Budget 
> Balance= $0
> 
> And the Food register is:
> 
> 3/1 Food $50  Running Balance=$50 Cleared/Reconciled=$0 Budget=$50
> 4/1 Budget $200 Running Balance=$50 Cleared/Reconciled=$0 Budget=$250
> 5/1 <--- todayRunning Balance=$50 Cleared/Reconciled=$0 Budget=$250
> 
> 3. We can allow the imbalance account to collect unbudgeted/spare monies. Or 
> we can decide to allocate an amount smaller than $10950, leaving the 'budget' 
> balance in the bank register a positive value.
> 
> 4. Now the Food account has several balances accessible via API
> 
> Running Balance $50 - as usual counts all split-values from "n" "y" "c" 
> including future splits.
> Unreconciled $50 - counts splits-values from "n"
> Cleared $0 - counts splits-values from "n" "c"
> Reconciled $0 - counts splits-values from "n" "y" c"
> Budget $250 - counts all split-values from "n" "y" "c" "b"
> 
> 5. A Budget report could be created, comparing the various expenses' running 
> balances vs the budget balance. The difference is the amount left to spend in 
> this category. For the food account it's 250-50 = $200 left to spend.

So you go through the trouble of creating a new split status to keep track of 
the remaining budget, but still have to calculate the remaining budget?

> 
> 6. Anytime the user wishes to allocate more budget to food, they can simply 
> create (b)udget transaction from Bank or Imbalance account to the Food 
> account.
> 
> 7. This means, in the account register, we'll see regular transactions which 
> can be reconciled with the bank statement. We'll also see budget 
> transactions, not reconcilable with the bank statement. Perhaps they should 
> be a different color/background. But this is ok, because their amounts do not 
> affect the account running balance. The Reconcile window can also filter them 
> out. The existing reports are unaffected. The query 

Re: Access to code.gnucash.org

2018-01-31 Thread Derek Atkins
Adrien Monteleone  writes:

> Certainly that is preferred when typing a link, but is the server not
> set up to force TLS? (not just a redirect)

I do not believe it is set up to force TLS.
Regardless, we should still link to HTTPS when we can control it.

> Regards,
> Adrien

-- 
   Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
   Member, MIT Student Information Processing Board  (SIPB)
   URL: http://web.mit.edu/warlord/PP-ASEL-IA N1NWH
   warl...@mit.eduPGP key available
___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Future allocated money, aka Envelope Budgeting

2018-01-31 Thread Christopher Lam
Hi Matt- I thought this should move to the devel list, because of 
technical details, and this discussion will be very speculative.


I had a thought about how envelope budgeting could work: "divide your 
paycheck into separate envelopes for different purposes".


A solution: *Create another type of transaction.*

There's already u(n)reconciled, (c)leared, (y)reconciled, (v)oid 
transactions. And (f)rozen I believe is unused. Let's create a new type 
- (b)udget. But the balances are handled differently.


It would require some UI and calculations changes --

1. The account budget balance is always maintained similarly to 
Running/Reconciled/Cleared Balances. But it would count all previous 
split-values *and* the (b)udget split amounts. However the budget 
running balance is not shown in the default register. This means, 
existing balances/register are unchanged.


    Let's say we're in a bank account register

    1/1    Opening $1 Running Balance=$1, Cleared/Reconciled 
Balance= $0, Budget=$1
    2/1    Income +$1000  Running Balance=$11000, Cleared/Reconciled 
Balance= $0, Budget=$11000
    3/1    Food -$50    Running Balance=$10950, 
Cleared/Reconciled Balance= $0, Budget=$10950
    4/1  <--- today      Running Balance=$10950, 
Cleared/Reconciled Balance= $0, Budget=$10950


2. We create another Register Action: "Allocate Budget".
"Allocate Budget" means we create a (b)udget transaction with 
multisplits from assets to expense accounts. By default we allocate the 
whole $10950. The $10950 in an asset account means "the amount remaining 
to allocate".


    4/1 Budget Transaction type "b"
           Asset:Bank -$10950
       Expense:Food $200
       Expense:Gas $200
       Expense:Taxes $300
           Imbalance $10250

Now the state of the Bank register is:

    5/1 Running Balance=$10050, Cleared/Reconciled Balance=$0, Budget 
Balance= $0


And the Food register is:

    3/1 Food $50  Running Balance=$50 Cleared/Reconciled=$0 Budget=$50
    4/1 Budget $200 Running Balance=$50 Cleared/Reconciled=$0 Budget=$250
    5/1 <--- today    Running Balance=$50 Cleared/Reconciled=$0 Budget=$250

3. We can allow the imbalance account to collect unbudgeted/spare 
monies. Or we can decide to allocate an amount smaller than $10950, 
leaving the 'budget' balance in the bank register a positive value.


4. Now the Food account has several balances accessible via API

    Running Balance $50 - as usual counts all split-values from "n" "y" 
"c" including future splits.

    Unreconciled $50 - counts splits-values from "n"
    Cleared $0 - counts splits-values from "n" "c"
    Reconciled $0 - counts splits-values from "n" "y" c"
    Budget $250 - counts all split-values from "n" "y" "c" "b"

5. A Budget report could be created, comparing the various expenses' 
running balances vs the budget balance. The difference is the amount 
left to spend in this category. For the food account it's 250-50 = $200 
left to spend.


6. Anytime the user wishes to allocate more budget to food, they can 
simply create (b)udget transaction from Bank or Imbalance account to the 
Food account.


7. This means, in the account register, we'll see regular transactions 
which can be reconciled with the bank statement. We'll also see budget 
transactions, not reconcilable with the bank statement. Perhaps they 
should be a different color/background. But this is ok, because their 
amounts do not affect the account running balance. The Reconcile window 
can also filter them out. The existing reports are unaffected. The query 
mechanism should ignore them by default.


What do we think of this?

The budget balance for an asset account represents "money remaining to 
allocate", and the budget balance for an expense account effectively 
represents "the upper limit that I'll allow this account to be". The 
budget balance, minus running balance represents "money left in 
envelope". I can increase envelope contents by transferring budget money 
from asset to the expense accounts.


I wouldn't know how to handle credit card nor loan interest.

I think it's an interesting thought experiment. The devil will be in the 
details.


The advantage will be that the underlying code can handle this augmented 
functionality without major difficulty (famous last words.)


Chris

On 31/01/18 15:59, David T. via gnucash-user wrote:

Matt,
I have to admit that I misread the tally; I did not see that the first $500 
(AllocatedCash) was balancing the others. My apologies.
I'll let you and Adrien work this out, since I don't have a lot of background 
in this.
David

  
  
   On Wed, Jan 31, 2018 at 8:58, Matt Graham wrote:   #yiv0595440679 #yiv0595440679 -- _filtered #yiv0595440679 {panose-1:2 4 5 3 5 4 6 3 2 4;} _filtered #yiv0595440679 {font-family:Calibri;panose-1:2 15 5 2 2 2 4 3 2 4;}#yiv0595440679 #yiv0595440679 p.yiv0595440679MsoNormal, #yiv0595440679 li.yiv0595440679MsoNormal, #yiv0595440679