1#line 2 "src/Gui/BillPay/SummaryWidget.cpp"
4#define VERSION_LITTLEBETTER
6#include <Wt/WMenuItem.h>
7#include <Wt/WVBoxLayout.h>
8#include <Wt/WMessageBox.h>
10#include "../../Eng/AccountComboModel.h"
11#include "../../Glb/Core.h"
16:
Wt::WContainerWidget()
27auto ordinalSuffix(
int number )-> std::string
29 int lastTwo = number % 100;
30 int lastOne = number % 10;
51#ifdef VERSION_LITTLEBETTER
65 m_table-> setStyleClass(
"SummaryTable" );
75 .arg(
TR(
"gcw.billPay.ttp." +
toString( m_month ) ) )
84 std::vector< DayTotal_t > dayTotals;
85 for(
auto payFromAcct : splits.
payFroms() )
90 for(
auto payFromDay : splits.
payFromDays( payFromAcct ) )
93 Wt::WString(
"<span style=\"border-bottom:1px solid black;\">{1}<sup>{3}</sup> ~ {2}</span>")
96 .
arg( ordinalSuffix( payFromDay ) )
100 m_table-> elementAt( row, 0 )-> addNew< Wt::WText >( acctDay );
101 m_table-> elementAt( row, 0 )-> setStyleClass(
"acctDay" );
102 m_table-> elementAt( row, 0 )-> setColumnSpan( 2 );
107 for(
auto paymentSplit : splits.
paymentSplits( payFromAcct, payFromDay ) )
109 auto splitItem = GCW::Dbo:: Splits ::byGuid( paymentSplit );
110 acctItem = GCW::Dbo:: Accounts ::byGuid( splitItem-> account_guid() );
111 auto txItem = GCW::Dbo:: Transactions ::byGuid( splitItem-> tx_guid() );
113 m_table-> elementAt( row, 0 )-> addNew< Wt::WText >( splitItem -> valueAsString(
true ) );
114 m_table-> elementAt( row, 1 )-> addNew< Wt::WText >( txItem -> description() );
115 m_table-> elementAt( row, 1 )-> clicked().connect( [=](){ m_clicked.emit( txItem-> description() ); } );
118 subTotal += splitItem-> value(
true );
123 m_table-> elementAt( row, 0 )-> setStyleClass(
"du" );
124 m_table-> elementAt( row-1, 0 )-> setStyleClass(
"su" );
142 dayTotal.
day = payFromDay;
143 dayTotal.
bank = payFromAcct;
144 dayTotal.
value = subTotal;
145 dayTotals.push_back( dayTotal );
152 m_table-> elementAt( row, 0 )-> addNew< Wt::WText >(
TR(
"gcw.billPay.lbl.transfers") );
153 m_table-> elementAt( row, 0 )-> setStyleClass(
"acctDay" );
154 m_table-> elementAt( row, 0 )-> setAttributeValue(
"style",
"text-align:center;border-bottom: 1px solid black;" );
155 m_table-> elementAt( row, 0 )-> setColumnSpan( 2 );
164 return a.day < b.day;
171 for(
auto dayTotal : dayTotals )
173 if( day != dayTotal.day )
178 .
arg( ordinalSuffix( day ) )
185 m_table-> elementAt( row, 1 )-> addNew< Wt::WText >(
Wt::WString(
TR(
"gcw.billPay.lbl.totalfor")) .arg( payDay ) );
186 m_table-> elementAt( row, 0 )-> setStyleClass(
"du" );
187 m_table-> elementAt( row-1, 0 )-> setStyleClass(
"su" );
192 m_table-> elementAt( row, 0 )-> addNew< Wt::WText >(
"" );
193 m_table-> elementAt( row, 0 )-> setColumnSpan( 2 );
194 m_table-> elementAt( row, 0 )-> setAttributeValue(
"style",
"border-bottom:1px solid black;" );
204 m_table-> elementAt( row, 1 )-> addNew< Wt::WText >( dayTotal.bank );
207 sum += dayTotal.value;
216 .
arg( ordinalSuffix( day ) )
221 m_table-> elementAt( row, 1 )-> addNew< Wt::WText >(
Wt::WString(
TR(
"gcw.billPay.lbl.totalfor")).arg( payDay ) );
222 m_table-> elementAt( row, 0 )-> setStyleClass(
"du" );
223 m_table-> elementAt( row-1, 0 )-> setStyleClass(
"su" );
227 m_table-> elementAt( row, 0 )-> addNew< Wt::WText >(
"" );
228 m_table-> elementAt( row, 0 )-> setColumnSpan( 2 );
229 m_table-> elementAt( row, 0 )-> setAttributeValue(
"style",
"border-bottom:1px double black;" );
235 m_table-> elementAt( row, 1 )-> addNew< Wt::WText >(
Wt::WString(
TR(
"gcw.billPay.lbl.totalfor")).arg(
TR(
"gcw.billPay.ttp." +
toString( m_month ) ) ) );
238 m_table-> elementAt( row, 0 )-> addNew< Wt::WText >(
"" );
239 m_table-> elementAt( row, 0 )-> setColumnSpan( 2 );
240 m_table-> elementAt( row, 0 )-> setAttributeValue(
"style",
"border-bottom:1px double black;" );
258 m_table-> setStyleClass(
"SummaryTable" );
264 m_title-> setText(
Wt::WString(
TR(gcw.billPay.lbl.selectedMonth) ).
arg( m_month ) );
270 Splits splits( _month );
272 std::vector< DayTotal_t > dayTotals;
273 for(
auto payFromAcct : splits.payFroms() )
275 for(
auto payFromDay : splits.payFromDays( payFrom ) )
281 .
arg( ordinalSuffix( payFromDay ) )
285 m_table-> elementAt( row, 0 )-> setAttributeValue(
"style",
"padding-top: 10px;" );
286 m_table-> elementAt( row, 1 )-> setAttributeValue(
"style",
"padding-top: 10px;" );
289 for(
auto paymentSplit : splits.paymentSplits( payFromAcct, payFromDay ) )
291 auto splitItem = GCW::Dbo:: Splits ::byGuid( paymentSplit );
292 auto acctItem = GCW::Dbo:: Accounts ::byGuid( splitItem-> account_guid() );
293 auto txItem = GCW::Dbo:: Transactions ::byGuid( splitItem-> tx_guid() );
295 m_table-> elementAt( row, 0 )-> addNew< Wt::WText >( splitItem -> valueAsString(
true ) );
296 m_table-> elementAt( row, 1 )-> addNew< Wt::WText >( txItem -> description() );
299 subTotal += splitItem-> value(
true );
304 m_table-> elementAt( row, 0 )-> setStyleClass(
"du" );
305 m_table-> elementAt( row-1, 0 )-> setStyleClass(
"su" );
306 m_table-> elementAt( row, 1 )-> addNew< Wt::WText >( acctDay );
313 dayTotal.day = payFromDay;
314 dayTotal.bank = payFromAcct;
315 dayTotal.value = subTotal;
316 dayTotals.push_back( dayTotal );
320 m_table-> elementAt( row, 0 )-> addNew< Wt::WText >(
"------------------------------------" );
321 m_table-> elementAt( row, 0 )-> setColumnSpan( 2 );
330 []( DayTotal_t a, DayTotal_t b )
332 return a.day < b.day;
339 for(
auto dayTotal : dayTotals )
341 if( day != dayTotal.day )
346 .
arg( ordinalSuffix( day ) )
353 m_table-> elementAt( row, 1 )-> addNew< Wt::WText >(
Wt::WString(
"Total for {1}").arg( payDay ) );
354 m_table-> elementAt( row, 0 )-> setStyleClass(
"du" );
355 m_table-> elementAt( row-1, 0 )-> setStyleClass(
"su" );
360 m_table-> elementAt( row, 0 )-> addNew< Wt::WText >(
"------------------------------------" );
361 m_table-> elementAt( row, 0 )-> setColumnSpan( 2 );
371 m_table-> elementAt( row, 1 )-> addNew< Wt::WText >( dayTotal.bank );
374 sum += dayTotal.value;
377 if( day != dayTotal.day )
379 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
383 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
386 m_table-> elementAt( row, 0 )-> setStyleClass(
"du" );
387 m_table-> elementAt( row-1, 0 )-> setStyleClass(
"su" );
403 .
arg( ordinalSuffix( day ) )
408 m_table-> elementAt( row, 1 )-> addNew< Wt::WText >(
Wt::WString(
"Total for {1}").arg( payDay ) );
409 m_table-> elementAt( row, 0 )-> setStyleClass(
"du" );
410 m_table-> elementAt( row-1, 0 )-> setStyleClass(
"su" );
414 m_table-> elementAt( row, 0 )-> addNew< Wt::WText >(
"------------------------------------" );
415 m_table-> elementAt( row, 0 )-> setColumnSpan( 2 );
421 m_table-> elementAt( row, 1 )-> addNew< Wt::WText >(
Wt::WString(
"Total for {1}").arg(
TR(
"gcw.billPay.ttp." +
toString( m_month ) ) ) );
424 m_table-> elementAt( row, 0 )-> addNew< Wt::WText >(
"********************************" );
425 m_table-> elementAt( row, 0 )-> setColumnSpan( 2 );
455 if(
split-> value() < 0 )
490 auto txItem = GCW::Dbo:: Transactions ::byGuid(
splitItem-> tx_guid() );
492 retVal.insert(
txItem-> post_date_as_date().date().day() );
505 std::set< std::string >
retVal;
539 auto txItem = GCW::Dbo:: Transactions ::byGuid(
splitItem-> tx_guid() );
542 retVal.insert(
txItem-> post_date_as_date().date().day() );
555 std::vector< std::string >
retVal;
566 auto txItem = GCW::Dbo:: Transactions ::byGuid(
splitItem-> tx_guid() );
569 &&
txItem-> post_date_as_date().date().day() ==
_day
584 std::vector< std::string >
retVal;
593 auto txItem = GCW::Dbo:: Transactions ::byGuid(
splitItem-> tx_guid() );
595 if(
txItem-> post_date_as_date().date().day() ==
_day )
static std::vector< std::string > & split(const std::string &s, char delim, std::vector< std::string > &elems)
std::string toUTF8() const
WString & arg(const std::wstring &value)
#define GCW_NUMERIC
Internal Numeric Type.
DECIMAL::decimal_format decimal_format()
Decimal Format Specifier.
@ ASSET
02 ~ generic generalized asset account
auto isType(const Item::Ptr _acctItem, GCW::Dbo::Accounts::Type _type) -> bool
Is Account Type.
auto byTransaction(const std::string &_txGuid) -> Item::Vector
Load Splits by Transaction.
auto byNumMonth(const std::string &_num, int _month) -> Item::Vector
auto toString(int _value) -> std::string
Convert Integer to String.