Glad (and a little surprised) that it worked. The naming problem makes sense in 
retrospect. It's standard for scheme but the expression parser has to deal with 
normal arithmetic notation so it would see the hyphens as minus signs and each 
fragment (days, in, prev, and month) as separate tokens.

I'm at a loss about the load-from-path issue, though I know that it's fiddly.

Regards,
John Ralls



> On Nov 1, 2019, at 4:35 PM, Fross, Michael <mich...@fross.org> wrote:
> 
> Hi John,
> 
> I got it to work, but one challenge remains.  The load-from-path seems to 
> crash Gnucash.  But copying the app-utils.scm to the fin.scm folder solves 
> the problem, but it's sloppy.
> 
> I'll need to play around with it.
> 
> Secondly, I it didn't like the name "days-in-prev-mon"  But I shortened it 
> and took out the dashes and that seems ok.  Here is what I inserted in 
> fin.scm:
> 
> ;; Return number of days in the previous month
> (load-from-path "C:\Program Files 
> (x86)\gnucash\share\gnucash\scm\gnucash\app-utils")
> (define (gnc:numdayslastmon)
>    (/
>       (+ 1 
>          (- (gnc:get-end-prev-month) (gnc:get-start-prev-month))) 86400)
> )
> 
> 
> Thanks again for your help!
> 
> Michael
> 
> On Fri, Nov 1, 2019 at 3:25 PM Fross, Michael <mich...@fross.org> wrote:
> Thanks John.  I'll give is a shot and report back.
> 
> Michael
> 
> On Fri, Nov 1, 2019 at 2:34 PM John Ralls <jra...@ceridwen.us> wrote:
> 
> 
> > On Nov 1, 2019, at 9:36 AM, Fross, Michael <mich...@fross.org> wrote:
> > 
> > Hello all,
> > 
> > I have a scheduled transaction that I pay monthly which is a fixed amount
> > per day.  I'd love to be able to have is automatically entrer based on the
> > number of days per month.  I pay on the 1st (or the first business day
> > after that) so basically I'd like to use the following formula:
> > 
> > Amount = NumDaysInPreviousMonth * AmountPerDay
> > 
> > I looked through the guide
> > <https://wiki.gnucash.org/wiki/Scheduled_Transactions> and didn't see
> > anything.  It references fin.scm (link throws a 404 by the way) but I
> > didn't see anything here that calculated the number of days in the previous
> > month (but perhaps I missed it in the SCM code.)
> > 
> > This seems like a simple use case, am I missing something? Perhaps I'll
> > need to write a function in fin.scm that can return the number of days in a
> > provided month.  No idea how to use scheme, but I'm sure I can figure it
> > out.
> > 
> > Thoughts?
> 
> I fixed the link.
> 
> The closest functions in GnuCash would be gnc:get-start-prev-month and 
> gnc:get-end-prev-month. They return time64 so you'd divide the difference by 
> 86400 (the number of seconds in a day) after adding in 1 second to compensate 
> for gnc:get-start-prev-month's returning the first second of the month rather 
> than the last second of the month before.
> 
> You could try adding this to fin.scm:
> 
> (load-from-path "gnucash/app-utils")
> (define (gnc:days-in-prev-month) (/ ( + 1 (- (gnc:get-end-prev-month) 
> (gnc:get-start-prev-month)))) 86400))
> 
> Then use 
>   days-in-prev-month() * AmountPerDay
> in your scheduled transaction. Replace "AmountPerDay" with the actual numeric 
> amount or the Since Last Run dialog will ask for the amount every month.
> 
> I've never actually tried doing anything like that, but it might work.
> 
> Regards,
> John Ralls
> 
> 
> 

_______________________________________________
gnucash-user mailing list
gnucash-user@gnucash.org
To update your subscription preferences or to unsubscribe:
https://lists.gnucash.org/mailman/listinfo/gnucash-user
If you are using Nabble or Gmane, please see 
https://wiki.gnucash.org/wiki/Mailing_Lists for more information.
-----
Please remember to CC this list on all your replies.
You can do this by using Reply-To-List or Reply-All.

Reply via email to