GnuCash  4.8a-80-g9825132ea+
SchedXaction.h
Go to the documentation of this file.
1 /********************************************************************\
2  * This program is free software; you can redistribute it and/or *
3  * modify it under the terms of the GNU General Public License as *
4  * published by the Free Software Foundation; either version 2 of *
5  * the License, or (at your option) any later version. *
6  * *
7  * This program is distributed in the hope that it will be useful, *
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
10  * GNU General Public License for more details. *
11  * *
12  * You should have received a copy of the GNU General Public License*
13  * along with this program; if not, contact: *
14  * *
15  * Free Software Foundation Voice: +1-617-542-5942 *
16  * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
17  * Boston, MA 02110-1301, USA gnu@gnu.org *
18  * *
19 \********************************************************************/
36 #ifndef XACC_SCHEDXACTION_H
37 #define XACC_SCHEDXACTION_H
38 
39 typedef struct _SchedXactionClass SchedXactionClass;
40 
41 #include <time.h>
42 #include <glib.h>
43 #include "qof.h"
44 #include "Recurrence.h"
45 #include "gnc-engine.h"
46 
47 /* --- type macros --- */
48 #define GNC_TYPE_SCHEDXACTION (gnc_schedxaction_get_type ())
49 #define GNC_SCHEDXACTION(o) \
50  (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_SCHEDXACTION, SchedXaction))
51 #define GNC_SCHEDXACTION_CLASS(k) \
52  (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_SCHEDXACTION, SchedXactionClass))
53 #define GNC_IS_SCHEDXACTION(o) \
54  (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_SCHEDXACTION))
55 #define GNC_IS_SCHEDXACTION_CLASS(k) \
56  (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_SCHEDXACTION))
57 #define GNC_SCHEDXACTION_GET_CLASS(o) \
58  (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_SCHEDXACTION, SchedXactionClass))
59 GType gnc_schedxaction_get_type(void);
60 
61 #define GNC_IS_SX(obj) GNC_IS_SCHEDXACTION(obj)
62 #define GNC_SX(obj) GNC_SCHEDXACTION(obj)
63 
64 typedef struct _SchedXaction SchedXaction;
65 
88 {
89  QofInstance inst;
90  gchar *name;
91 
92  GList *schedule;
93 
94  GDate last_date;
95 
96  GDate start_date;
97  /* if end_date is invalid, then no end. */
98  GDate end_date;
99 
100  /* if num_occurances_total == 0, then no limit */
101  gint num_occurances_total;
102  /* remaining occurrences are as-of the 'last_date'. */
103  gint num_occurances_remain;
104 
105  /* the current instance-count of the SX. */
106  gint instance_num;
107 
108  gboolean enabled;
109  gboolean autoCreateOption;
110  gboolean autoCreateNotify;
111  gint advanceCreateDays;
112  gint advanceRemindDays;
113 
114  Account *template_acct;
115 
118  GList /* <SXTmpStateData*> */ *deferredList;
119 };
120 
122 {
123  QofInstanceClass parent_class;
124 };
125 
127 typedef struct _SXTmpStateData
128 {
129  GDate last_date;
130  gint num_occur_rem;
131  gint num_inst;
133 
134 #define xaccSchedXactionSetGUID(X,G) qof_instance_set_guid(QOF_INSTANCE(X),(G))
135 
139 SchedXaction *xaccSchedXactionMalloc(QofBook *book);
140 
141 void sx_set_template_account (SchedXaction *sx, Account *account);
142 
146 void xaccSchedXactionDestroy( SchedXaction *sx );
147 
148 void gnc_sx_begin_edit (SchedXaction *sx);
149 void gnc_sx_commit_edit (SchedXaction *sx);
150 
152 /*@ dependent @*/
153 GList* gnc_sx_get_schedule(const SchedXaction *sx);
155 void gnc_sx_set_schedule(SchedXaction *sx, /*@ null @*//*@ only @*/ GList *schedule);
156 
157 gchar *xaccSchedXactionGetName( const SchedXaction *sx );
161 void xaccSchedXactionSetName( SchedXaction *sx, const gchar *newName );
162 
163 const GDate* xaccSchedXactionGetStartDate(const SchedXaction *sx );
164 time64 xaccSchedXactionGetStartDateTT(const SchedXaction *sx );
165 void xaccSchedXactionSetStartDate( SchedXaction *sx, const GDate* newStart );
166 void xaccSchedXactionSetStartDateTT( SchedXaction *sx, const time64 newStart );
167 
168 int xaccSchedXactionHasEndDate( const SchedXaction *sx );
172 const GDate* xaccSchedXactionGetEndDate(const SchedXaction *sx );
176 void xaccSchedXactionSetEndDate( SchedXaction *sx, const GDate* newEnd );
177 
178 const GDate* xaccSchedXactionGetLastOccurDate(const SchedXaction *sx );
179 time64 xaccSchedXactionGetLastOccurDateTT(const SchedXaction *sx );
180 void xaccSchedXactionSetLastOccurDate( SchedXaction *sx, const GDate* newLastOccur );
181 void xaccSchedXactionSetLastOccurDateTT( SchedXaction *sx, const time64 newLastOccur );
182 
187 gboolean xaccSchedXactionHasOccurDef( const SchedXaction *sx );
188 gint xaccSchedXactionGetNumOccur( const SchedXaction *sx );
192 void xaccSchedXactionSetNumOccur( SchedXaction *sx, gint numNum );
193 gint xaccSchedXactionGetRemOccur( const SchedXaction *sx );
194 void xaccSchedXactionSetRemOccur( SchedXaction *sx, gint numRemain );
195 
198 gint gnc_sx_get_num_occur_daterange(const SchedXaction *sx, const GDate* start_date, const GDate* end_date);
199 
209 gint gnc_sx_get_instance_count( const SchedXaction *sx, /*@ null @*/ SXTmpStateData *stateData );
214 void gnc_sx_set_instance_count( SchedXaction *sx, gint instanceNum );
215 
216 GList *xaccSchedXactionGetSplits( const SchedXaction *sx );
217 void xaccSchedXactionSetSplits( SchedXaction *sx, GList *newSplits );
218 
219 gboolean xaccSchedXactionGetEnabled( const SchedXaction *sx );
220 void xaccSchedXactionSetEnabled( SchedXaction *sx, gboolean newEnabled );
221 
222 void xaccSchedXactionGetAutoCreate( const SchedXaction *sx,
223  /*@ out @*/ gboolean *outAutoCreate,
224  /*@ out @*/ gboolean *outNotify );
225 void xaccSchedXactionSetAutoCreate( SchedXaction *sx,
226  gboolean newAutoCreate,
227  gboolean newNotify );
228 
229 gint xaccSchedXactionGetAdvanceCreation( const SchedXaction *sx );
230 void xaccSchedXactionSetAdvanceCreation( SchedXaction *sx, gint createDays );
231 
232 gint xaccSchedXactionGetAdvanceReminder( const SchedXaction *sx );
233 void xaccSchedXactionSetAdvanceReminder( SchedXaction *sx, gint reminderDays );
234 
247 SXTmpStateData *gnc_sx_create_temporal_state(const SchedXaction *sx );
248 
251 void gnc_sx_incr_temporal_state(const SchedXaction *sx, SXTmpStateData *stateData );
252 
255 
276 GDate xaccSchedXactionGetNextInstance(const SchedXaction *sx,
277  SXTmpStateData *stateData);
278 
284 void xaccSchedXactionSetTemplateTrans( SchedXaction *sx,
285  GList *t_t_list,
286  QofBook *book );
287 
292 void gnc_sx_add_defer_instance( SchedXaction *sx, void *deferStateData );
293 
298 void gnc_sx_remove_defer_instance( SchedXaction *sx, void *deferStateData );
299 
306 GList *gnc_sx_get_defer_instances( SchedXaction *sx );
307 
308 /* #defines for Properties and GncModule */
309 #define GNC_SX_SHARES "shares"
310 #define GNC_SX_FREQ_SPEC "scheduled-frequency"
311 #define GNC_SX_NAME "sched-xname"
312 #define GNC_SX_START_DATE "sched-start-date"
313 #define GNC_SX_LAST_DATE "sched-last-date"
314 #define GNC_SX_NUM_OCCUR "sx-total-number"
315 #define GNC_SX_REM_OCCUR "sx-remaining-num"
316 
318 gboolean SXRegister (void);
319 
321 #define xaccSchedXactionIsDirty(X) qof_instance_is_dirty (QOF_INSTANCE(X))
322 
323 #define xaccSchedXactionGetGUID(X) qof_entity_get_guid(QOF_INSTANCE(X))
324 
325 #endif /* XACC_SCHEDXACTION_H */
326 
const GDate * xaccSchedXactionGetEndDate(const SchedXaction *sx)
Returns invalid date when there is no end-date specified.
Definition: SchedXaction.c:656
void gnc_sx_set_schedule(SchedXaction *sx, GList *schedule)
Definition: SchedXaction.c:567
void gnc_sx_set_instance_count(SchedXaction *sx, gint instanceNum)
Sets the instance count to something other than the default.
Definition: SchedXaction.c:985
GList * gnc_sx_get_schedule(const SchedXaction *sx)
Definition: SchedXaction.c:561
GList * deferredList
The list of deferred SX instances.
Definition: SchedXaction.h:118
void gnc_sx_destroy_temporal_state(SXTmpStateData *stateData)
Frees the given stateDate object.
void xaccSchedXactionSetNumOccur(SchedXaction *sx, gint numNum)
Set to &#39;0&#39; to turn off number-of-occurrences definition.
Definition: SchedXaction.c:740
SXTmpStateData * gnc_sx_create_temporal_state(const SchedXaction *sx)
Allocates a new SXTmpStateData object and fills it with the current state of the given sx...
Just the variable temporal bits from the SX structure.
Definition: SchedXaction.h:127
GDate xaccSchedXactionGetNextInstance(const SchedXaction *sx, SXTmpStateData *stateData)
Returns the next occurrence of a scheduled transaction.
Definition: SchedXaction.c:923
gboolean SXRegister(void)
QOF registration.
void gnc_sx_incr_temporal_state(const SchedXaction *sx, SXTmpStateData *stateData)
Calculates the next occurrence of the given SX and stores that occurrence in the remporalStateDate.
void gnc_sx_add_defer_instance(SchedXaction *sx, void *deferStateData)
Adds an instance to the deferred list of the SX.
gint gnc_sx_get_num_occur_daterange(const SchedXaction *sx, const GDate *start_date, const GDate *end_date)
Calculates and returns the number of occurrences of the given SX in the given date range (inclusive)...
Definition: SchedXaction.c:776
SXTmpStateData * gnc_sx_clone_temporal_state(SXTmpStateData *stateData)
Allocates and returns a one-by-one copy of the given temporal state.
void xaccSchedXactionSetTemplateTrans(SchedXaction *sx, GList *t_t_list, QofBook *book)
Set the schedxaction&#39;s template transaction.
All type declarations for the whole Gnucash engine.
A single scheduled transaction.
Definition: SchedXaction.h:87
void xaccSchedXactionSetName(SchedXaction *sx, const gchar *newName)
A copy of the name is made.
Definition: SchedXaction.c:583
void gnc_sx_remove_defer_instance(SchedXaction *sx, void *deferStateData)
Removes an instance from the deferred list.
SchedXaction * xaccSchedXactionMalloc(QofBook *book)
Creates and initializes a scheduled transaction.
Definition: SchedXaction.c:405
gint64 time64
Many systems, including Microsoft Windows and BSD-derived Unixes like Darwin, are retaining the int-3...
Definition: gnc-date.h:93
gboolean xaccSchedXactionHasOccurDef(const SchedXaction *sx)
Returns true if the scheduled transaction has a defined number of occurrences, false if not...
Definition: SchedXaction.c:728
void xaccSchedXactionSetEndDate(SchedXaction *sx, const GDate *newEnd)
Set to an invalid GDate to turn off &#39;end-date&#39; definition.
Definition: SchedXaction.c:663
void xaccSchedXactionDestroy(SchedXaction *sx)
Cleans up and frees a SchedXaction and its associated data.
Definition: SchedXaction.c:475
GList * gnc_sx_get_defer_instances(SchedXaction *sx)
Returns the defer list from the SX.
gint gnc_sx_get_instance_count(const SchedXaction *sx, SXTmpStateData *stateData)
Get the instance count.
Definition: SchedXaction.c:966