mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
2003-02-04 Benoit Gr�goire <bock@step.polymtl.ca>
* src/import-export/import-backend.c: Add heuristic for duplicate matching by check number. * doc/README.OFX: Update git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@7945 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
bc9f171dd7
commit
dc840a9ef7
@ -1,3 +1,8 @@
|
|||||||
|
2003-02-04 Benoit Grégoire <bock@step.polymtl.ca>
|
||||||
|
|
||||||
|
* src/import-export/import-backend.c: Add heuristic for duplicate matching by check number.
|
||||||
|
* doc/README.OFX: Update
|
||||||
|
|
||||||
2003-02-04 Derek Atkins <derek@ihtfp.com>
|
2003-02-04 Derek Atkins <derek@ihtfp.com>
|
||||||
|
|
||||||
* src/import-export/qif-import/qif-file.scm: mark "splits" as negative
|
* src/import-export/qif-import/qif-file.scm: mark "splits" as negative
|
||||||
|
@ -56,8 +56,8 @@ Implemented features (some of these are from the generic import module):
|
|||||||
-Commodity import and matching, for investment transactions.
|
-Commodity import and matching, for investment transactions.
|
||||||
-Transaction duplicate detection, using the unique OFX transaction ID. Even if
|
-Transaction duplicate detection, using the unique OFX transaction ID. Even if
|
||||||
downloaded twice, transactions are only imported once.
|
downloaded twice, transactions are only imported once.
|
||||||
-Transaction duplicate detection, using amount, date, full or partial memo,
|
-Transaction duplicate detection, using amount, date, check number,
|
||||||
full or partial description.
|
full or partial memo, full or partial description.
|
||||||
-"Destination" account matching, using exact string match on either
|
-"Destination" account matching, using exact string match on either
|
||||||
memo or description.
|
memo or description.
|
||||||
-Saves ALL transaction data currently supported by LibOFX.
|
-Saves ALL transaction data currently supported by LibOFX.
|
||||||
@ -66,7 +66,9 @@ Implemented features (some of these are from the generic import module):
|
|||||||
-Files containing multiple statements are supported, and transactions can
|
-Files containing multiple statements are supported, and transactions can
|
||||||
be matched at the same time.
|
be matched at the same time.
|
||||||
|
|
||||||
4.The import process and transaction matching----------
|
|
||||||
|
4.The import process and transaction matching
|
||||||
|
----------
|
||||||
|
|
||||||
First, you must successfully download an OFX response file from your bank.
|
First, you must successfully download an OFX response file from your bank.
|
||||||
|
|
||||||
@ -228,9 +230,9 @@ version of GnuCash from.
|
|||||||
(4) When I import in OFX/HBCI, and change the destination account in the
|
(4) When I import in OFX/HBCI, and change the destination account in the
|
||||||
matcher, why doesn't other transaction with the same memo/description change?
|
matcher, why doesn't other transaction with the same memo/description change?
|
||||||
|
|
||||||
The matcher already "learns" where transactions are assigned. The only problem
|
The matcher already "learns" where transactions are assigned. The only problem
|
||||||
is thatcurrently, it only uses what it has learned on the next import.
|
is thatcurrently, it only uses what it has learned on the next import.
|
||||||
Re-processing the list during the import process is a feature you can hopefor
|
Re-processing the list during the import process is a feature you can hopefor
|
||||||
early in the 1.8 series.
|
early in the 1.8 series.
|
||||||
|
|
||||||
(5) Can GnuCash support QFX files (Quicken Financial eXchange?)
|
(5) Can GnuCash support QFX files (Quicken Financial eXchange?)
|
||||||
|
@ -493,68 +493,88 @@ static void split_find_match (GNCImportTransInfo * trans_info,
|
|||||||
/*DEBUG("heuristics: probability - 10 (date)"); */
|
/*DEBUG("heuristics: probability - 10 (date)"); */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Check number heuristics */
|
||||||
/* Memo heuristics */
|
if(strlen(xaccTransGetNum(gnc_import_TransInfo_get_trans (trans_info)))!=0)
|
||||||
if((strcmp(xaccSplitGetMemo(gnc_import_TransInfo_get_fsplit (trans_info)),
|
{
|
||||||
xaccSplitGetMemo(split))
|
if((strcmp(xaccTransGetNum
|
||||||
==0))
|
(gnc_import_TransInfo_get_trans (trans_info)),
|
||||||
{
|
xaccTransGetNum(xaccSplitGetParent(split)))
|
||||||
/* An exact match of description gives a +2 */
|
==0))
|
||||||
prob = prob+2;
|
{
|
||||||
/* DEBUG("heuristics: probability + 2 (memo)"); */
|
/*An exact match of the Check number gives a +5 */
|
||||||
|
prob = prob+5;
|
||||||
|
/*DEBUG("heuristics: probability + 5 (Check number)");*/
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if((strncmp(xaccSplitGetMemo(gnc_import_TransInfo_get_fsplit (trans_info)),
|
|
||||||
xaccSplitGetMemo(split),
|
/* Memo heuristics */
|
||||||
strlen(xaccSplitGetMemo(split))/2)
|
if(strlen(xaccSplitGetMemo(gnc_import_TransInfo_get_fsplit (trans_info)))!=0)
|
||||||
==0))
|
|
||||||
{
|
{
|
||||||
/* Very primitive fuzzy match worth +1. This matches the
|
if((strcmp(xaccSplitGetMemo(gnc_import_TransInfo_get_fsplit (trans_info)),
|
||||||
first 50% of the strings to skip annoying transaction
|
xaccSplitGetMemo(split))
|
||||||
number some banks seem to include in the memo but someone
|
==0))
|
||||||
should write something more sophisticated */
|
{
|
||||||
prob = prob+1;
|
/* An exact match of description gives a +2 */
|
||||||
/*DEBUG("heuristics: probability + 1 (memo)"); */
|
prob = prob+2;
|
||||||
|
/* DEBUG("heuristics: probability + 2 (memo)"); */
|
||||||
|
}
|
||||||
|
else if((strncmp(xaccSplitGetMemo(gnc_import_TransInfo_get_fsplit (trans_info)),
|
||||||
|
xaccSplitGetMemo(split),
|
||||||
|
strlen(xaccSplitGetMemo(split))/2)
|
||||||
|
==0))
|
||||||
|
{
|
||||||
|
/* Very primitive fuzzy match worth +1. This matches the
|
||||||
|
first 50% of the strings to skip annoying transaction
|
||||||
|
number some banks seem to include in the memo but someone
|
||||||
|
should write something more sophisticated */
|
||||||
|
prob = prob+1;
|
||||||
|
/*DEBUG("heuristics: probability + 1 (memo)"); */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Description heuristics */
|
/* Description heuristics */
|
||||||
if((strcmp(xaccTransGetDescription
|
if(strlen(xaccTransGetDescription(gnc_import_TransInfo_get_trans (trans_info)))!=0)
|
||||||
(gnc_import_TransInfo_get_trans (trans_info)),
|
|
||||||
xaccTransGetDescription(xaccSplitGetParent(split)))
|
|
||||||
==0))
|
|
||||||
{
|
|
||||||
/*An exact match of Description gives a +2 */
|
|
||||||
prob = prob+2;
|
|
||||||
/*DEBUG("heuristics: probability + 2 (description)");*/
|
|
||||||
}
|
|
||||||
else if((strncmp(xaccTransGetDescription
|
|
||||||
(gnc_import_TransInfo_get_trans (trans_info)),
|
|
||||||
xaccTransGetDescription(xaccSplitGetParent(split)),
|
|
||||||
strlen(xaccTransGetDescription
|
|
||||||
(gnc_import_TransInfo_get_trans (trans_info)))/2)
|
|
||||||
==0))
|
|
||||||
{
|
{
|
||||||
/* Very primitive fuzzy match worth +1. This matches the
|
if((strcmp(xaccTransGetDescription
|
||||||
first 50% of the strings to skip annoying transaction
|
(gnc_import_TransInfo_get_trans (trans_info)),
|
||||||
number some banks seem to include in the memo but someone
|
xaccTransGetDescription(xaccSplitGetParent(split)))
|
||||||
should write something more sophisticated */
|
==0))
|
||||||
prob = prob+1;
|
{
|
||||||
/*DEBUG("heuristics: probability + 1 (description)"); */
|
/*An exact match of Description gives a +2 */
|
||||||
|
prob = prob+2;
|
||||||
|
/*DEBUG("heuristics: probability + 2 (description)");*/
|
||||||
|
}
|
||||||
|
else if((strncmp(xaccTransGetDescription
|
||||||
|
(gnc_import_TransInfo_get_trans (trans_info)),
|
||||||
|
xaccTransGetDescription(xaccSplitGetParent(split)),
|
||||||
|
strlen(xaccTransGetDescription
|
||||||
|
(gnc_import_TransInfo_get_trans (trans_info)))/2)
|
||||||
|
==0))
|
||||||
|
{
|
||||||
|
/* Very primitive fuzzy match worth +1. This matches the
|
||||||
|
first 50% of the strings to skip annoying transaction
|
||||||
|
number some banks seem to include in the memo but someone
|
||||||
|
should write something more sophisticated */
|
||||||
|
prob = prob+1;
|
||||||
|
/*DEBUG("heuristics: probability + 1 (description)"); */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*Online id punishment*/
|
||||||
if ((gnc_import_get_trans_online_id(xaccSplitGetParent(split))!=NULL) &&
|
if ((gnc_import_get_trans_online_id(xaccSplitGetParent(split))!=NULL) &&
|
||||||
(strlen(gnc_import_get_trans_online_id(xaccSplitGetParent(split)))>0))
|
(strlen(gnc_import_get_trans_online_id(xaccSplitGetParent(split)))>0))
|
||||||
{
|
{
|
||||||
/* If the pref is to show match even with online ID's,
|
/* If the pref is to show match even with online ID's,
|
||||||
puninsh the transaction with online if */
|
puninsh the transaction with online id */
|
||||||
prob = prob-3;
|
prob = prob-3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Is the probability high enough? Otherwise do nothing and return. */
|
/* Is the probability high enough? Otherwise do nothing and return. */
|
||||||
if(prob < display_threshold)
|
if(prob < display_threshold)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The probability is high enough, so allocate an object
|
/* The probability is high enough, so allocate an object
|
||||||
here. Allocating it only when it's actually being used is
|
here. Allocating it only when it's actually being used is
|
||||||
probably quite some performance gain. */
|
probably quite some performance gain. */
|
||||||
@ -563,8 +583,8 @@ static void split_find_match (GNCImportTransInfo * trans_info,
|
|||||||
match_info->probability = prob;
|
match_info->probability = prob;
|
||||||
match_info->split = split;
|
match_info->split = split;
|
||||||
match_info->trans = xaccSplitGetParent(split);
|
match_info->trans = xaccSplitGetParent(split);
|
||||||
|
|
||||||
|
|
||||||
/* Append that to the list. */
|
/* Append that to the list. */
|
||||||
trans_info->match_list =
|
trans_info->match_list =
|
||||||
g_list_append(trans_info->match_list,
|
g_list_append(trans_info->match_list,
|
||||||
|
Loading…
Reference in New Issue
Block a user