Add unresolved categories in ImportPanel

Fix two bugs :
Don't take in account unknown categories (in stats)
Don't try to draw more than MAX_CATEGORIES (12) in charts
This commit is contained in:
2011-04-25 19:55:31 +02:00
parent ec3fa8d7d5
commit c69621c2fe
10 changed files with 139 additions and 37 deletions

View File

@@ -63,6 +63,7 @@ void GrisbiImportEngine::LoadCategory(GrisbiImportEngine* _this, const char** at
{
wxString name, id;
int i;
Category cat;
for (i=0; attrs[i]; i+=2)
{
@@ -82,8 +83,10 @@ void GrisbiImportEngine::LoadCategory(GrisbiImportEngine* _this, const char** at
}
}
_this->_categories[id] = wxT("unknown-") + id;
_this->_unresolvedCategories.push_back(name);
_this->_categories[id] = wxT("unknown-") + name;
cat.id = id;
cat.name = name;
_this->_unresolvedCategories.push_back(cat);
}
void GrisbiImportEngine::LoadOperation(GrisbiImportEngine* _this, const char** attrs)
@@ -96,8 +99,8 @@ void GrisbiImportEngine::LoadOperation(GrisbiImportEngine* _this, const char** a
op.id = wxString::Format(wxT("%d"), ++id);
op.parent = wxT("");
op.account = wxT("0");
op.category = wxT("0");
op.account = wxT("unknwon-0");
op.category = wxT("unknwon-0");
op.fix_cost = false;
op.checked = false;
op.transfert = wxT("");

View File

@@ -282,12 +282,13 @@ void ImportEngine::MatchPattern(wxString& originalKey, Operation& op)
}
}
std::vector<Account> ImportEngine::ParseFile()
void ImportEngine::ParseFile(std::vector<Account>& accounts, std::vector<Category>& categories)
{
return _unresolvedAccounts;
accounts = _unresolvedAccounts;
categories = _unresolvedCategories;
}
std::vector<Operation>* ImportEngine::GetOperations(std::map<wxString, wxString>& accounts)
std::vector<Operation>* ImportEngine::GetOperations(std::map<wxString, wxString>& accounts, std::map<wxString, wxString>& categories)
{
int i;
@@ -295,6 +296,8 @@ std::vector<Operation>* ImportEngine::GetOperations(std::map<wxString, wxString>
{
if (_operations[i].account.StartsWith(wxT("unknown-")))
_operations[i].account = accounts[_operations[i].account.Mid(8)];
if (_operations[i].category.StartsWith(wxT("unknown-")))
_operations[i].category = categories[_operations[i].category.Mid(8)];
}
if (_kiss->GetOperationOrder() == wxT("ASC"))

View File

@@ -47,10 +47,10 @@ public:
virtual bool HandleFile(const wxString& path, User* user, Database* db, KissCount* kiss)=0;
// Parse the file and return accounts that doesn't match
virtual std::vector<Account> ParseFile();
virtual void ParseFile(std::vector<Account>& accounts, std::vector<Category>& categories);
// Final Step
virtual std::vector<Operation>* GetOperations(std::map<wxString, wxString>& accounts);
virtual std::vector<Operation>* GetOperations(std::map<wxString, wxString>& accounts, std::map<wxString, wxString>& categories);
void MatchPattern(wxString& key, Operation& op);
int UpdatePattern(int pos);
@@ -68,7 +68,7 @@ protected:
std::map<wxString, wxString> _accounts;
std::map<wxString, wxString> _categories;
std::vector<Account> _unresolvedAccounts;
std::vector<wxString> _unresolvedCategories;
std::vector<Category> _unresolvedCategories;
std::vector<Operation> _operations;
std::map<wxString, wxString> _descriptions;