diff --git a/ChangeLog b/ChangeLog index 9081c967a7..9921513231 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-10-06 David Hampton + + * src/app-utils/date-utilities.scm: Patch from Yves-Eric Martin + to make it easier for users + to change the financial year end date. They still have to edit a + scheme file though. + 2005-08-16 Christian Stimming * src/import-export/hbci/hbci-interaction.c (inputBoxCB): Aaarg, diff --git a/src/app-utils/date-utilities.scm b/src/app-utils/date-utilities.scm index 6198f2d7a6..4899179e63 100644 --- a/src/app-utils/date-utilities.scm +++ b/src/app-utils/date-utilities.scm @@ -1,6 +1,7 @@ ;; date-utilities.scm -- date utility functions. ;; Bryan Larsen (blarsen@ada-works.com) ;; Revised by Christopher Browne +;; Improvement to financial year support by Yves-Eric Martin ;; ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as @@ -19,6 +20,14 @@ ;; 59 Temple Place - Suite 330 Fax: +1-617-542-2652 ;; Boston, MA 02111-1307, USA gnu@gnu.org + +;; fin-year-start format: mm dd +(define fin-year-start '(07 01)) + + +(define fin-year-start-month (- (car fin-year-start) 1)) ;; jan == 0 +(define fin-year-start-day (cadr fin-year-start)) + (define gnc:reldate-list '()) (define (gnc:timepair->secs tp) @@ -435,13 +444,13 @@ ;; FIXME:: Replace with option when it becomes available (define (gnc:get-start-cur-fin-year) (let ((now (localtime (current-time)))) - (if (< (tm:mon now) 6) + (if (or (< (tm:mon now) fin-year-start-month) (and (= (tm:mon now) fin-year-start-month) (< (tm:mday now) fin-year-start-day) )) (begin (set-tm:sec now 0) (set-tm:min now 0) (set-tm:hour now 0) - (set-tm:mday now 1) - (set-tm:mon now 6) + (set-tm:mday now fin-year-start-day) + (set-tm:mon now fin-year-start-month) (set-tm:year now (- (tm:year now) 1)) (set-tm:isdst now -1) (gnc:date->timepair now)) @@ -449,20 +458,20 @@ (set-tm:sec now 0) (set-tm:min now 0) (set-tm:hour now 0) - (set-tm:mday now 1) - (set-tm:mon now 6) + (set-tm:mday now fin-year-start-day) + (set-tm:mon now fin-year-start-month) (set-tm:isdst now -1) (gnc:date->timepair now))))) (define (gnc:get-start-prev-fin-year) (let ((now (localtime (current-time)))) - (if (< (tm:mon now) 6) + (if (or (< (tm:mon now) fin-year-start-month) (and (= (tm:mon now) fin-year-start-month) (< (tm:mday now) fin-year-start-day) )) (begin (set-tm:sec now 0) (set-tm:min now 0) (set-tm:hour now 0) - (set-tm:mday now 1) - (set-tm:mon now 6) + (set-tm:mday now fin-year-start-day) + (set-tm:mon now fin-year-start-month) (set-tm:year now (- (tm:year now) 2)) (set-tm:isdst now -1) (gnc:date->timepair now)) @@ -470,53 +479,42 @@ (set-tm:sec now 0) (set-tm:min now 0) (set-tm:hour now 0) - (set-tm:mday now 1) - (set-tm:mon now 6) + (set-tm:mday now fin-year-start-day) + (set-tm:mon now fin-year-start-month) (set-tm:year now (- (tm:year now) 1)) (set-tm:isdst now -1) (gnc:date->timepair now))))) -(define (gnc:get-end-prev-fin-year) +(define (gnc:get-start-next-fin-year) (let ((now (localtime (current-time)))) - (if (< (tm:mon now) 6) + (if (or (< (tm:mon now) fin-year-start-month) (and (= (tm:mon now) fin-year-start-month) (< (tm:mday now) fin-year-start-day) )) (begin - (set-tm:sec now 59) - (set-tm:min now 59) - (set-tm:hour now 23) - (set-tm:mday now 30) - (set-tm:mon now 5) - (set-tm:year now (- (tm:year now) 1)) + (set-tm:sec now 0) + (set-tm:min now 0) + (set-tm:hour now 0) + (set-tm:mday now fin-year-start-day) + (set-tm:mon now fin-year-start-month) (set-tm:isdst now -1) (gnc:date->timepair now)) (begin - (set-tm:sec now 59) - (set-tm:min now 59) - (set-tm:hour now 23) - (set-tm:mday now 30) - (set-tm:mon now 5) + (set-tm:sec now 0) + (set-tm:min now 0) + (set-tm:hour now 0) + (set-tm:mday now fin-year-start-day) + (set-tm:mon now fin-year-start-month) + (set-tm:year now (+ (tm:year now) 1)) (set-tm:isdst now -1) (gnc:date->timepair now))))) +(define (gnc:get-end-prev-fin-year) + (let ((now (gnc:get-start-cur-fin-year))) + (gnc:secs->timepair (- (gnc:timepair->secs now) 1)) + )) + (define (gnc:get-end-cur-fin-year) - (let ((now (localtime (current-time)))) - (if (< (tm:mon now) 6) - (begin - (set-tm:sec now 59) - (set-tm:min now 59) - (set-tm:hour now 23) - (set-tm:mday now 30) - (set-tm:mon now 5) - (set-tm:isdst now -1) - (gnc:date->timepair now)) - (begin - (set-tm:sec now 59) - (set-tm:min now 59) - (set-tm:hour now 23) - (set-tm:mday now 30) - (set-tm:mon now 5) - (set-tm:year now (+ (tm:year now) 1)) - (set-tm:isdst now -1) - (gnc:date->timepair now))))) + (let ((now (gnc:get-start-next-fin-year))) + (gnc:secs->timepair (- (gnc:timepair->secs now) 1)) + )) (define (gnc:get-start-this-month) (let ((now (localtime (current-time))))