SX-ttinfo.c

00001 /********************************************************************\
00002  * SX-ttinfo.c -- Template Transaction manipulation functions       *
00003  *               for scheduled transactions                         *
00004  * Copyright (C) 2001 Robert Merkel <rgmerk@mira.net>               *
00005  *                                                                  *
00006  * This program is free software; you can redistribute it and/or    *
00007  * modify it under the terms of the GNU General Public License as   *
00008  * published by the Free Software Foundation; either version 2 of   *
00009  * the License, or (at your option) any later version.              *
00010  *                                                                  *
00011  * This program is distributed in the hope that it will be useful,  *
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of   *
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    *
00014  * GNU General Public License for more details.                     *
00015  *                                                                  *
00016  * You should have received a copy of the GNU General Public License*
00017  * along with this program; if not, contact:                        *
00018  *                                                                  *
00019  * Free Software Foundation           Voice:  +1-617-542-5942       *
00020  * 51 Franklin Street, Fifth Floor    Fax:    +1-617-542-2652       *
00021  * Boston, MA  02110-1301,  USA       gnu@gnu.org                   *
00022  *                                                                  *
00023 \********************************************************************/
00024 
00025 
00026 #include "config.h"
00027 
00028 #include "SX-ttinfo.h"
00029 
00030 /* KvpFrame policy? */
00031 struct TTInfo_s
00032 {
00033   /* FIXME add notes field */
00034   char *description; /* owned by us */
00035   char *num;         /* owned  by us */
00036   gnc_commodity *common_currency; /* not freed */
00037   
00038   GList *splits; /* list of template splits, owned by us */
00039 };
00040 
00041 struct TTSplitInfo_s
00042 {
00043   char *action; /* owned by us */
00044   /* FIXME: What about the split's KvpFrame */
00045   char *memo; /* owned by us */
00046   char *credit_formula, *debit_formula; /* owned by us */
00047   Account *acc; 
00048 };
00049 
00050 TTInfo *
00051 gnc_ttinfo_malloc(void)
00052 {
00053   TTInfo *tti = g_new0(TTInfo, 1);
00054   return tti;
00055 }
00056 
00057 static void
00058 delete_splitinfo(gpointer data, gpointer user_data)
00059 {
00060   gnc_ttsplitinfo_free( (TTSplitInfo *) data);
00061   return;
00062 }
00063 
00064 void gnc_ttinfo_free(TTInfo *info)
00065 {
00066   g_return_if_fail(info);
00067   
00068   g_free(info->description);
00069   g_free(info->num);
00070   g_list_foreach(info->splits, 
00071                  delete_splitinfo, 
00072                  NULL);
00073 
00074   g_list_free(info->splits);
00075 
00076   g_free(info);
00077 
00078   return;
00079 }
00080 
00081 void 
00082 gnc_ttinfo_set_description(TTInfo *tti, const char *description)
00083 {
00084   g_return_if_fail(tti);
00085   
00086   if(tti->description)
00087   {
00088     g_free(tti->description);
00089   }
00090   
00091   tti->description = g_strdup(description);
00092 
00093   return;
00094 }
00095 
00096 const char *
00097 gnc_ttinfo_get_description(TTInfo *tti)
00098 {
00099   g_return_val_if_fail(tti, NULL);
00100 
00101   return tti->description;
00102 }
00103 
00104 
00105   
00106 
00107 void
00108 gnc_ttinfo_set_num(TTInfo *tti, const char *num)
00109 {
00110   g_return_if_fail(tti);
00111   
00112   if(tti->num)
00113   {
00114     g_free(tti->num);
00115   }
00116   
00117   tti->num = g_strdup(num);
00118 
00119   return;
00120 }
00121 
00122 const char*
00123 gnc_ttinfo_get_num(TTInfo *tti)
00124 {
00125   g_return_val_if_fail(tti, NULL);
00126 
00127   return tti->num;
00128 }
00129 
00130 
00131 void
00132 gnc_ttinfo_set_currency(TTInfo *tti, gnc_commodity *common_currency)
00133 {
00134   g_return_if_fail(tti);
00135 
00136   tti->common_currency = common_currency;
00137   return;
00138 }
00139 
00140 gnc_commodity *
00141 gnc_ttinfo_get_currency(TTInfo *tti)
00142 {
00143   g_return_val_if_fail(tti, NULL);
00144 
00145   return tti->common_currency;
00146 }
00147 
00148 
00149 void gnc_ttinfo_set_template_splits(TTInfo *tti, GList *splits)
00150 {
00151   g_return_if_fail(tti);
00152 
00153   tti->splits = splits;
00154   return;
00155 }
00156 
00157 void gnc_ttinfo_append_template_split(TTInfo *tti, TTSplitInfo *split_i)
00158 {
00159   g_return_if_fail(tti && split_i);
00160 
00161   tti->splits = g_list_append(tti->splits, split_i);
00162 
00163   return;
00164 }
00165     
00166 GList *
00167 gnc_ttinfo_get_template_splits(TTInfo *tti)
00168 {
00169   g_return_val_if_fail(tti, NULL);
00170   return tti->splits;
00171 }
00172 
00173 TTSplitInfo *
00174 gnc_ttsplitinfo_malloc(void)
00175 {
00176   TTSplitInfo *ttsi = g_new0(TTSplitInfo, 1);
00177   return ttsi;
00178 }
00179 
00180 void
00181 gnc_ttsplitinfo_free(TTSplitInfo *ttsi)
00182 {
00183   if ( ttsi->action )
00184     g_free(ttsi->action);
00185   if ( ttsi->memo )
00186     g_free(ttsi->memo);
00187   if ( ttsi->credit_formula )
00188     g_free(ttsi->credit_formula);
00189   if ( ttsi->debit_formula )
00190     g_free(ttsi->debit_formula);
00191   g_free(ttsi);
00192   return;
00193 }
00194 
00195 void 
00196 gnc_ttsplitinfo_set_action(TTSplitInfo *ttsi, const char *action)
00197 {
00198   g_return_if_fail(ttsi);
00199 
00200   if (ttsi->action)
00201     g_free(ttsi->action);
00202 
00203   ttsi->action = g_strdup(action);
00204   return;
00205 }
00206 
00207 const char * 
00208 gnc_ttsplitinfo_get_action(TTSplitInfo *ttsi)
00209 {
00210   g_return_val_if_fail(ttsi, NULL);
00211 
00212   return ttsi->action;
00213 }
00214 
00215 void 
00216 gnc_ttsplitinfo_set_memo(TTSplitInfo *ttsi, const char *memo)
00217 {
00218   g_return_if_fail(ttsi);
00219 
00220   if (ttsi->memo)
00221     g_free(ttsi->memo);
00222 
00223   ttsi->memo = g_strdup(memo);
00224   return;
00225 }
00226 
00227 const char * 
00228 gnc_ttsplitinfo_get_memo(TTSplitInfo *ttsi)
00229 {
00230   g_return_val_if_fail(ttsi, NULL);
00231 
00232   return ttsi->memo;
00233 }
00234 
00235 void
00236 gnc_ttsplitinfo_set_credit_formula_numeric(TTSplitInfo *ttsi, gnc_numeric credit)
00237 {
00238   g_return_if_fail(ttsi);
00239 
00240   if(ttsi->credit_formula)
00241     g_free(ttsi->credit_formula);
00242 
00243   ttsi->credit_formula = gnc_numeric_to_string(credit);
00244   
00245   if(ttsi->debit_formula)
00246   {
00247     g_free(ttsi->debit_formula);
00248     ttsi->debit_formula = NULL;
00249   }
00250 }
00251 
00252 void 
00253 gnc_ttsplitinfo_set_credit_formula(TTSplitInfo *ttsi, const char *credit_formula)
00254 {
00255   g_return_if_fail(ttsi);
00256 
00257   if (ttsi->credit_formula)
00258     g_free(ttsi->credit_formula);
00259 
00260   ttsi->credit_formula = g_strdup(credit_formula);
00261  
00262   if(ttsi->debit_formula)
00263   {
00264     g_free(ttsi->debit_formula);
00265     ttsi->debit_formula = NULL;
00266   }
00267   return;
00268 }
00269 
00270 const char * 
00271 gnc_ttsplitinfo_get_credit_formula(TTSplitInfo *ttsi)
00272 {
00273   g_return_val_if_fail(ttsi, NULL);
00274   return ttsi->credit_formula;
00275 }
00276 
00277 
00278 const char * 
00279 gnc_ttsplitinfo_get_debit_formula(TTSplitInfo *ttsi)
00280 {
00281   g_return_val_if_fail(ttsi, NULL);
00282   return ttsi->debit_formula;
00283 }
00284 
00285 void
00286 gnc_ttsplitinfo_set_debit_formula_numeric(TTSplitInfo *ttsi, gnc_numeric debit)
00287 {
00288   g_return_if_fail(ttsi);
00289 
00290   if (ttsi->debit_formula)
00291   {
00292     g_free(ttsi->debit_formula);
00293   }
00294   ttsi->debit_formula = gnc_numeric_to_string(debit);
00295 
00296   if (ttsi->credit_formula)
00297   {
00298     g_free(ttsi->credit_formula);
00299     ttsi->credit_formula = NULL;
00300   }
00301   return;
00302 }
00303 
00304 void 
00305 gnc_ttsplitinfo_set_debit_formula(TTSplitInfo *ttsi, const char *debit_formula)
00306 {
00307   g_return_if_fail(ttsi);
00308 
00309   if (ttsi->debit_formula)
00310     g_free(ttsi->debit_formula);
00311 
00312   ttsi->debit_formula = g_strdup(debit_formula); 
00313 
00314   if (ttsi->credit_formula)
00315   {
00316     g_free(ttsi->credit_formula);
00317     ttsi->credit_formula = NULL;
00318   }
00319   return;
00320 }
00321 
00322 void
00323 gnc_ttsplitinfo_set_account(TTSplitInfo *ttsi, Account *acc)
00324 {
00325   g_return_if_fail(ttsi && acc);
00326 
00327   ttsi->acc = acc;
00328   return;
00329 }
00330 
00331 Account *
00332 gnc_ttsplitinfo_get_account(TTSplitInfo *ttsi)
00333 {
00334   g_return_val_if_fail(ttsi, NULL);
00335 
00336   return ttsi->acc;
00337 }

Generated on Sun Oct 12 05:07:44 2008 for GnuCash by  doxygen 1.5.2