00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "config.h"
00027
00028 #include "SX-ttinfo.h"
00029
00030
00031 struct TTInfo_s
00032 {
00033
00034 char *description;
00035 char *num;
00036 gnc_commodity *common_currency;
00037
00038 GList *splits;
00039 };
00040
00041 struct TTSplitInfo_s
00042 {
00043 char *action;
00044
00045 char *memo;
00046 char *credit_formula, *debit_formula;
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 }