[Gnucash-changes] Patch from Yves-Eric Martin <yem_lists.gnucash.org@filter.yve.net> to

David Hampton hampton at cvs.gnucash.org
Thu Oct 6 22:56:25 EDT 2005


Log Message:
-----------
Patch from Yves-Eric Martin <yem_lists.gnucash.org at filter.yve.net> to
make it easier for users to change the financial year end date.

Tags:
----
gnucash-1-8-branch

Modified Files:
--------------
    gnucash:
        ChangeLog
    gnucash/src/app-utils:
        date-utilities.scm

Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1461.2.421
retrieving revision 1.1461.2.422
diff -LChangeLog -LChangeLog -u -r1.1461.2.421 -r1.1461.2.422
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,10 @@
+2005-10-06  David Hampton  <hampton at employees.org>
+
+	* src/app-utils/date-utilities.scm: Patch from Yves-Eric Martin
+	<yem_lists.gnucash.org at filter.yve.net> to make it easier for users
+	to change the financial year end date.  They still have to edit a
+	scheme file though.
+
 2005-09-23  Christian Stimming  <stimming at tuhh.de>
 
 	* src/import-export/hbci/druid-hbci-initial.c (on_aqhbci_button):
Index: date-utilities.scm
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/app-utils/date-utilities.scm,v
retrieving revision 1.4.2.1
retrieving revision 1.4.2.2
diff -Lsrc/app-utils/date-utilities.scm -Lsrc/app-utils/date-utilities.scm -u -r1.4.2.1 -r1.4.2.2
--- src/app-utils/date-utilities.scm
+++ src/app-utils/date-utilities.scm
@@ -1,6 +1,7 @@
 ;; date-utilities.scm -- date utility functions.
 ;; Bryan Larsen (blarsen at 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 at 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))))


More information about the gnucash-changes mailing list