Revision 7b17371b
Von admin vor fast 4 Jahren hinzugefügt
src/fox/lib/modules/transfers/fm_transfers.cpp | ||
---|---|---|
|
||
|
||
|
||
bool FM_Transfers::mkAndAddNewPlannedTransfer(FXWindow *parentWindow, int tt)
|
||
{
|
||
FF_App *app;
|
||
AE_BOOK *b;
|
||
AB_BANKING *ab;
|
||
|
||
app=dynamic_cast<FF_App *>(getApp());
|
||
b=app->getBook();
|
||
ab=app->getBanking();
|
||
if (b && ab) {
|
||
AE_STATEMENT *st;
|
||
int rv;
|
||
bool rb;
|
||
GWEN_DATE *ti;
|
||
|
||
st=AE_Statement_new();
|
||
ti=GWEN_Date_CurrentDate();
|
||
AE_Statement_SetDate(st, ti);
|
||
GWEN_Date_free(ti);
|
||
AE_Statement_SetGroupId(st, 0);
|
||
AE_Statement_SetTextKey(st, 51);
|
||
AE_Statement_SetFlags(st, tt);
|
||
|
||
switch (tt) {
|
||
case AE_STATEMENT_FLAGS_XFER_TYPE_STD_XFER:
|
||
rb=FF_EditTransfer::editSingleTransfer(app, FF_TransferEdit::EDITMODE_EASY,
|
||
parentWindow,
|
||
I18N("Prepare Bank Transfer"), st,
|
||
DECOR_ALL |
|
||
FF_EditTransfer::OPTS_SHOWLOADTMPL |
|
||
FF_EditTransfer::OPTS_SHOWSAVETMPL |
|
||
FF_EditTransfer::OPTS_SHOWDATE);
|
||
break;
|
||
case AE_STATEMENT_FLAGS_XFER_TYPE_INT_XFER:
|
||
rb=FF_EditTransfer::editInternalTransfer(app, FF_TransferEdit::EDITMODE_EASY,
|
||
parentWindow,
|
||
I18N("Prepare Internal Bank Transfer"), st,
|
||
DECOR_ALL |
|
||
FF_EditTransfer::OPTS_SHOWLOADTMPL |
|
||
FF_EditTransfer::OPTS_SHOWSAVETMPL |
|
||
FF_EditTransfer::OPTS_SHOWDATE);
|
||
break;
|
||
case AE_STATEMENT_FLAGS_XFER_TYPE_SEPA_XFER:
|
||
rb=FF_EditTransfer::editSepaTransfer(app, FF_TransferEdit::EDITMODE_EASY,
|
||
parentWindow,
|
||
I18N("Prepare SEPA Transfer"), st,
|
||
DECOR_ALL |
|
||
FF_EditTransfer::OPTS_SHOWLOADTMPL |
|
||
FF_EditTransfer::OPTS_SHOWSAVETMPL |
|
||
FF_EditTransfer::OPTS_SHOWDATE);
|
||
break;
|
||
}
|
||
|
||
if (rb) {
|
||
/* store in database before actually enqueing it, so that we get an id to set
|
||
* in AB_Transaction_SetIdForApplication() */
|
||
/* create a copy of the initial statement */
|
||
rv=AE_Book_AddStatement(b, AE_Book_TableType_BankTransferPlanned, st, 1);
|
||
if (rv<0) {
|
||
DBG_ERROR(0, "Unable to add statement (%d)", rv);
|
||
FXMessageBox::error(parentWindow, MBOX_OK,
|
||
I18N("Database Error"),
|
||
I18N("Error adding transfer (%d)"), rv);
|
||
AE_Statement_free(st);
|
||
return false;
|
||
}
|
||
else {
|
||
app->signalDbReload(AE_Book_TableType_BankTransferPlanned);
|
||
}
|
||
}
|
||
AE_Statement_free(st);
|
||
}
|
||
else {
|
||
DBG_ERROR(0, "No book/AqBanking");
|
||
FXMessageBox::error(parentWindow, MBOX_OK,
|
||
I18N("Banking Error"),
|
||
"%s",
|
||
I18N("Database not open or AqBanking not available"));
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
|
||
|
||
bool FM_Transfers::mkAndAddPlannedTransferFromTransfer(FXWindow *parentWindow, const AE_STATEMENT *transfer)
|
||
{
|
||
if (transfer) {
|
||
FF_App *app;
|
||
AE_BOOK *b;
|
||
AB_BANKING *ab;
|
||
|
||
app=dynamic_cast<FF_App *>(getApp());
|
||
b=app->getBook();
|
||
ab=app->getBanking();
|
||
if (b && ab) {
|
||
AE_STATEMENT *cpy;
|
||
int rv;
|
||
GWEN_DATE *ti;
|
||
bool rb;
|
||
|
||
/* always work on copy */
|
||
cpy=AE_Statement_dup(transfer);
|
||
ti=GWEN_Date_CurrentDate();
|
||
AE_Statement_SetDate(cpy, ti);
|
||
GWEN_Date_free(ti);
|
||
|
||
|
||
switch (AE_Statement_GetFlags(cpy) & AE_STATEMENT_FLAGS_XFER_TYPE_MASK) {
|
||
case AE_STATEMENT_FLAGS_XFER_TYPE_STD_XFER:
|
||
rb=FF_EditTransfer::editSingleTransfer(app, FF_TransferEdit::EDITMODE_EASY,
|
||
parentWindow,
|
||
I18N("Repeat Bank Transfer"), cpy,
|
||
DECOR_ALL |
|
||
FF_EditTransfer::OPTS_SHOWLOADTMPL |
|
||
FF_EditTransfer::OPTS_SHOWSAVETMPL);
|
||
break;
|
||
case AE_STATEMENT_FLAGS_XFER_TYPE_INT_XFER:
|
||
rb=FF_EditTransfer::editInternalTransfer(app, FF_TransferEdit::EDITMODE_EASY,
|
||
parentWindow,
|
||
I18N("Repeat Internal Bank Transfer"), cpy,
|
||
DECOR_ALL |
|
||
FF_EditTransfer::OPTS_SHOWLOADTMPL |
|
||
FF_EditTransfer::OPTS_SHOWSAVETMPL);
|
||
break;
|
||
case AE_STATEMENT_FLAGS_XFER_TYPE_SEPA_XFER:
|
||
rb=FF_EditTransfer::editSepaTransfer(app, FF_TransferEdit::EDITMODE_EASY,
|
||
parentWindow,
|
||
I18N("Repeat SEPA Transfer"), cpy,
|
||
DECOR_ALL |
|
||
FF_EditTransfer::OPTS_SHOWLOADTMPL |
|
||
FF_EditTransfer::OPTS_SHOWSAVETMPL);
|
||
break;
|
||
|
||
default:
|
||
DBG_ERROR(0, "Unexpected transfer type (%d)",
|
||
AE_Statement_GetFlags(cpy) & AE_STATEMENT_FLAGS_XFER_TYPE_MASK);
|
||
FXMessageBox::error(parentWindow, MBOX_OK,
|
||
I18N("Internal Error"),
|
||
I18N("Unexpected transfer type (%d)"),
|
||
AE_Statement_GetFlags(cpy) & AE_STATEMENT_FLAGS_XFER_TYPE_MASK);
|
||
rb=false;
|
||
break;
|
||
}
|
||
|
||
|
||
if (rb) {
|
||
rv=AE_Book_AddStatement(b, AE_Book_TableType_BankTransferPlanned, cpy, 1);
|
||
if (rv<0) {
|
||
DBG_ERROR(0, "Unable to add statement (%d)", rv);
|
||
FXMessageBox::error(parentWindow, MBOX_OK,
|
||
I18N("Database Error"),
|
||
I18N("Error adding transfer (%d)"), rv);
|
||
return false;
|
||
}
|
||
else {
|
||
app->signalDbReload(AE_Book_TableType_BankTransferPlanned);
|
||
}
|
||
}
|
||
AE_Statement_free(cpy);
|
||
}
|
||
else {
|
||
DBG_ERROR(0, "No book/AqBanking");
|
||
FXMessageBox::error(parentWindow, MBOX_OK,
|
||
I18N("Banking Error"),
|
||
"%s",
|
||
I18N("Database not open or AqBanking not available"));
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
|
||
|
||
|
src/fox/lib/modules/transfers/fm_transfers.hpp | ||
---|---|---|
bool editAndAddTransfer(FXWindow *parentWindow, AE_STATEMENT *transfer);
|
||
bool addAndEnqueueTransfer(FXWindow *parentWindow, AE_STATEMENT *statement);
|
||
|
||
bool mkAndAddNewPlannedTransfer(FXWindow *parentWindow, int tt);
|
||
bool mkAndAddPlannedTransferFromTransfer(FXWindow *parentWindow, const AE_STATEMENT *transfer);
|
||
|
||
|
||
long onCmdMkTransferFromStatement(FXObject *sender, FXSelector sel, void *ptr);
|
||
|
||
|
src/fox/lib/modules/transfers/fm_transferstmpage.cpp | ||
---|---|---|
/****************************************************************************
|
||
* This file is part of the project AqFinance.
|
||
* AqFinance (c) by 2009 Martin Preuss, all rights reserved.
|
||
* AqFinance (c) by 2021 Martin Preuss, all rights reserved.
|
||
*
|
||
* The license for this file can be found in the file COPYING which you
|
||
* should have received along with this file.
|
||
... | ... | |
|
||
#include "fm_transferstmpage.hpp"
|
||
#include "fm_transferpage.hpp"
|
||
#include "fm_transfers.hpp"
|
||
#include "ff_transfertree.hpp"
|
||
#include "ff_edittransfergroup.hpp"
|
||
#include "ff_edittransfer.hpp"
|
||
... | ... | |
|
||
FXMAPFUNC(SEL_COMMAND, FM_TransferStmPage::ID_BUTTON_REPEAT_TRANSFER,
|
||
FM_TransferStmPage::onCmdRepeatTransfer),
|
||
FXMAPFUNC(SEL_COMMAND, FM_TransferStmPage::ID_BUTTON_MKPLANNED_FROM_TRANSFER,
|
||
FM_TransferStmPage::onCmdMkPlannedTransfer),
|
||
FXMAPFUNC(SEL_COMMAND, FM_TransferStmPage::ID_BUTTON_NEW_STD_TRANSFER,
|
||
FM_TransferStmPage::onCmdNewStdTransfer),
|
||
FXMAPFUNC(SEL_COMMAND, FM_TransferStmPage::ID_BUTTON_NEW_INT_TRANSFER,
|
||
... | ... | |
, m_newIntTransferButton(NULL)
|
||
, m_newSepaTransferButton(NULL)
|
||
, m_repeatTransferButton(NULL)
|
||
, m_mkPlannedTransferButton(NULL)
|
||
, m_needRebuild(true)
|
||
, m_isVisible(false)
|
||
{
|
||
... | ... | |
this, ID_BUTTON_REPEAT_TRANSFER,
|
||
BUTTON_NORMAL);
|
||
|
||
m_mkPlannedTransferButton=new THEMEBUTTON(vf,
|
||
I18N("Copy As Planned Transfer"),
|
||
NULL,
|
||
this, ID_BUTTON_MKPLANNED_FROM_TRANSFER,
|
||
BUTTON_NORMAL);
|
||
|
||
}
|
||
|
||
|
||
... | ... | |
, m_newIntTransferButton(NULL)
|
||
, m_newSepaTransferButton(NULL)
|
||
, m_repeatTransferButton(NULL)
|
||
,m_mkPlannedTransferButton(NULL)
|
||
, m_needRebuild(false)
|
||
{
|
||
}
|
||
... | ... | |
|
||
|
||
|
||
long FM_TransferStmPage::onCmdMkPlannedTransfer(FXObject *, FXSelector, void *)
|
||
{
|
||
AE_STATEMENT *st;
|
||
|
||
st=m_transferTree->getCurrentTransfer();
|
||
if (st) {
|
||
FM_Transfers *module=dynamic_cast<FM_Transfers *>(getModule());
|
||
|
||
if (module) {
|
||
if (!module->mkAndAddPlannedTransferFromTransfer(this, st)) {
|
||
DBG_INFO(AE_LOGDOMAIN, "here");
|
||
}
|
||
}
|
||
}
|
||
return 1;
|
||
}
|
||
|
||
|
||
|
||
|
||
int FM_TransferStmPage::changeStatusOfCurrentTransfer(AE_STATEMENT_STATUS sst)
|
||
{
|
src/fox/lib/modules/transfers/fm_transferstmpage.hpp | ||
---|---|---|
ID_BUTTON_STATUS_PENDING,
|
||
ID_BUTTON_STATUS_RECONCILED,
|
||
|
||
ID_BUTTON_MKPLANNED_FROM_TRANSFER,
|
||
|
||
ID_LAST
|
||
};
|
||
|
||
... | ... | |
long onCmdNewInternalTransfer(FXObject*, FXSelector, void*);
|
||
long onCmdNewSepaTransfer(FXObject*, FXSelector, void*);
|
||
|
||
long onCmdMkPlannedTransfer(FXObject *, FXSelector, void *);
|
||
|
||
long onCmdAutoRecon(FXObject*, FXSelector, void*);
|
||
|
||
long onTreeChanged(FXObject*, FXSelector, void*);
|
||
... | ... | |
FXButton *m_newIntTransferButton;
|
||
FXButton *m_newSepaTransferButton;
|
||
FXButton *m_repeatTransferButton;
|
||
FXButton *m_mkPlannedTransferButton;
|
||
|
||
FXTextField *m_matcher;
|
||
|
Auch abrufbar als: Unified diff
Allow to repeat transfers as planned transfers.
- moved transfers code from modtabpage to module
- transfers page now has a button to create a planned transfer from an
existing transfer