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:
@@ -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("");
|
||||
|
@@ -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"))
|
||||
|
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user