Skip to content

Commit cbd03e8

Browse files
committed
Implement weekly scheduled transaction
fix #127
1 parent 5034474 commit cbd03e8

File tree

6 files changed

+25
-14
lines changed

6 files changed

+25
-14
lines changed

locales/en.catkeys

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
1 English application/x-vnd.wgp-CapitalBe 3533405837
1+
1 English application/x-vnd.wgp-CapitalBe 2962703943
22
Year ReportWindow Year
33
None ReportWindow None
44
Export to QIF file… MainWindow Export to QIF file…
@@ -226,6 +226,7 @@ Tools MainWindow Tools
226226
This month FilterView This month
227227
Type TransactionReport Type of transaction, expenses or income Type
228228
Not enough accounts for a transfer MainWindow Not enough accounts for a transfer
229+
Weekly ScheduleAddWindow Weekly
229230
Delete… MainWindow Delete…
230231
The file '%filename%' appears not to be a CapitalBe ledger.\nOr it doesn't have the 'CapitalBe ledger' filetype.\n App The file '%filename%' appears not to be a CapitalBe ledger.\nOr it doesn't have the 'CapitalBe ledger' filetype.\n
231232
CapitalBe has run into a bug. This shouldn't happen, but it has.\nWould you like to:\n\n1) Save the bug to a text file for uploading to\nCapitalBe's issue tracker (https://github.com/HaikuArchives/CapitalBe/issues)\n\n2) Just quit and do nothing\n Locale CapitalBe has run into a bug. This shouldn't happen, but it has.\nWould you like to:\n\n1) Save the bug to a text file for uploading to\nCapitalBe's issue tracker (https://github.com/HaikuArchives/CapitalBe/issues)\n\n2) Just quit and do nothing\n

src/Database.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,11 +1047,7 @@ Database::AddScheduledTransaction(const ScheduledTransData& data, const bool& ne
10471047
}
10481048
case SCHEDULED_WEEKLY:
10491049
{
1050-
// TODO: Add weekly scheduling support
1051-
// data.SetNextDueDate(IncrementDateByMonth(data.Date()));
1052-
ShowBug(
1053-
"Unimplemented Weekly scheduling support in "
1054-
"Database::AddScheduledTransaction()");
1050+
nextdate = IncrementDateByWeek(data.Date());
10551051
break;
10561052
}
10571053
case SCHEDULED_QUARTERLY:

src/ScheduleAddWindow.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,15 @@ ScheduleAddWindow::ScheduleAddWindow(const BRect& frame, const TransactionData&
102102
memo->SetEnabled(false);
103103

104104
fIntervalMenu = new BMenu("Frequency");
105+
fIntervalMenu->AddItem(
106+
new BMenuItem(B_TRANSLATE("Weekly"), new BMessage(M_SCHEDULED_WEEKLY)));
105107
fIntervalMenu->AddItem(
106108
new BMenuItem(B_TRANSLATE("Monthly"), new BMessage(M_SCHEDULED_MONTHLY)));
107109
fIntervalMenu->AddItem(
108110
new BMenuItem(B_TRANSLATE("Quarterly"), new BMessage(M_SCHEDULED_QUARTERLY)));
109111
fIntervalMenu->AddItem(
110112
new BMenuItem(B_TRANSLATE("Annually"), new BMessage(M_SCHEDULED_ANNUALLY)));
111-
fIntervalMenu->ItemAt(0)->SetMarked(true);
113+
fIntervalMenu->ItemAt(1)->SetMarked(true);
112114
fIntervalMenu->SetLabelFromMarked(true);
113115

114116
BMenuField* intervalfield
@@ -247,15 +249,20 @@ ScheduleAddWindow::MessageReceived(BMessage* msg)
247249
switch (fIntervalMenu->IndexOf(intervalitem)) {
248250
case 0:
249251
{
250-
stdata.SetInterval(SCHEDULED_MONTHLY);
252+
stdata.SetInterval(SCHEDULED_WEEKLY);
251253
break;
252254
}
253255
case 1:
254256
{
255-
stdata.SetInterval(SCHEDULED_QUARTERLY);
257+
stdata.SetInterval(SCHEDULED_MONTHLY);
256258
break;
257259
}
258260
case 2:
261+
{
262+
stdata.SetInterval(SCHEDULED_QUARTERLY);
263+
break;
264+
}
265+
case 3:
259266
{
260267
stdata.SetInterval(SCHEDULED_ANNUALLY);
261268
break;

src/ScheduledTransData.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,7 @@ ScheduledTransData::CalculateNextDueDate()
7373
}
7474
case SCHEDULED_WEEKLY:
7575
{
76-
// TODO: Add weekly scheduling support
77-
// data.SetNextDueDate(IncrementDateByMonth(data.Date()));
78-
ShowBug(
79-
"Unimplemented Weekly scheduling support in "
80-
"ScheduledTransData::CalculateNextDueDate()");
76+
fNextDate = IncrementDateByWeek(Date());
8177
break;
8278
}
8379
case SCHEDULED_QUARTERLY:

src/TimeSupport.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ DecrementDateByDay(const time_t& t)
2828
}
2929

3030

31+
time_t
32+
IncrementDateByWeek(const time_t& t)
33+
{
34+
struct tm timestruct = *localtime(&t);
35+
for (int i = 0; i < 7; i++)
36+
timestruct.tm_mday++;
37+
return mktime(&timestruct);
38+
}
39+
40+
3141
time_t
3242
IncrementDateByMonth(const time_t& t)
3343
{

src/TimeSupport.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
time_t IncrementDateByDay(const time_t& t);
2020
time_t DecrementDateByDay(const time_t& t);
2121

22+
time_t IncrementDateByWeek(const time_t& t);
2223
time_t IncrementDateByMonth(const time_t& t);
2324
time_t DecrementDateByMonth(const time_t& t);
2425
time_t IncrementDateByQuarter(const time_t& t);

0 commit comments

Comments
 (0)