GnuCashew ~ GnuCash Enabled Web
GCW
Manager.cpp
Go to the documentation of this file.
1 #line 2 "src/Dbo/Manager.cpp"
2 
3 #include "../Glb/Core.h"
4 #include "Manager.h"
5 
7 Manager()
8 {
9 
10 } // endManager()
11 
14 {
15 
16 } // endManager()
17 
18 auto
20 newTransaction( const std::string & _accountGuid1, const std::string & _accountGuid2 )-> void
21 {
22  /*
23  ** Load up the two accounts
24  **
25  */
26  auto accountItem1 = GCW::Dbo::Accounts::load( _accountGuid1 );
27  auto accountItem2 = GCW::Dbo::Accounts::load( _accountGuid2 );
28 
29  /*
30  ** create a new transaction with two splits
31  **
32  */
34 
35  /*
36  ** hook everything together
37  */
38  Wt::Dbo::Transaction t( GCW::app()-> gnucashew_session() );
39  // transaction
40  m_transaction.modify()-> set_currency_guid( accountItem1-> commodity_guid() );
41  // Split1
42  auto split1 = GCW::Dbo::Splits::add( GCW::Core::newGuid() );
43  split1.modify()-> set_tx_guid ( m_transaction-> guid() );
44  split1.modify()-> set_account_guid ( _accountGuid1 );
45  split1.modify()-> set_reconcile_state ( GCW_RECONCILE_NO );
46  split1.modify()-> set_reconcile_date ( GCW_DEFAULT_DATE );
47  // Split2
48  auto split2 = GCW::Dbo::Splits::add( GCW::Core::newGuid() );
49  split2.modify()-> set_tx_guid ( m_transaction-> guid() );
50  split2.modify()-> set_account_guid ( _accountGuid2 );
51  split2.modify()-> set_reconcile_state ( GCW_RECONCILE_NO );
52  split2.modify()-> set_reconcile_date ( GCW_DEFAULT_DATE );
53 
54  /*
55  ** record the splits
56  */
57  m_splitItems.push_back( split1 );
58  m_splitItems.push_back( split2 );
59 
60 } // endnewTransaction()-> void
61 
62 auto
64 loadTransaction( const std::string & _transactionGuid )-> void
65 {
66  /*
67  ** set the transaction
68  */
69  m_transaction = GCW::Dbo::Transactions::load( _transactionGuid );
70 
71  /*
72  ** set the splits
73  */
74  m_splitItems = GCW::Dbo::Splits::byTransaction( m_transaction-> guid() );
75 
76 } // endloadTransaction( const std::string & _transactionGuid )-> void
77 
78 auto
80 deleteTransaction()-> void
81 {
82 
83  Wt::Dbo::Transaction t( GCW::app()-> gnucashew_session() );
84  m_transaction.remove();
85  for( auto & splitItem : m_splitItems )
86  splitItem.remove();
87 
88 } // enddeleteTransaction()-> void
89 
90 auto
92 loadSplit( const std::string & _splitGuid )-> void
93 {
94  /*
95  ** in the words of spock: 'remember'
96  */
97  m_splitGuid = _splitGuid;
98 
99  /*
100  ** get the split so we can grab the transaction
101  */
102  auto splitItem = GCW::Dbo::Splits::load( _splitGuid );
103 
104  /*
105  ** set the transaction
106  */
107  loadTransaction( splitItem-> tx_guid() );
108 
109 } // endloadSplit( const std::string & _splitGuid )-> void
110 
111 auto
113 otherGuid() const-> std::string
114 {
115  for( auto & splitItem : m_splitItems )
116  if( splitItem-> guid() != m_splitGuid )
117  return splitItem-> guid();
118 
119  return "";
120 
121 } // endotherGuid()-> std::string
122 
123 auto
125 split( const std::string & _splitGuid ) const-> GCW::Dbo::Splits::Item::Ptr
126 {
127  for( auto & splitItem : m_splitItems )
128  if( splitItem-> guid() == _splitGuid )
129  return splitItem;
130 
132 
133 } // endsplit( const std::string & _splitGuid ) const-> GCW::Dbo::Splits::Item::Ptr
134 
135 auto
137 thisSplit() const-> GCW::Dbo::Splits::Item::Ptr
138 {
139  return split( m_splitGuid );
140 
141 } // endthisSplit() const-> GCW::Dbo::Splits::Item::Ptr
142 
143 auto
145 thatSplit() const-> GCW::Dbo::Splits::Item::Ptr
146 {
147  return split( otherGuid() );
148 
149 } // endthatSplit() const-> GCW::Dbo::Splits::Item::Ptr
150 
151 auto
153 getDate() const-> Wt::WDateTime
154 {
155  return m_transaction-> post_date_as_date();
156 
157 } // endgetDate() const-> Wt::WDateTime &;
158 
159 auto
161 setDate( const Wt::WDateTime & _value )-> void
162 {
163  Wt::Dbo::Transaction t( GCW::app()-> gnucashew_session() );
164  m_transaction.modify()-> set_post_date( _value );
165 
166 } // endsetDate( const Wt::WDateTime & _value )-> void
167 
168 auto
170 setAction( const std::string & _value )-> void
171 {
172  Wt::Dbo::Transaction t( GCW::app()-> gnucashew_session() );
173  m_transaction.modify()-> set_num( _value );
174 
175 } // endsetAction( const std::string & _value )-> void
176 
177 auto
179 getDescription() const-> std::string
180 {
181  return m_transaction-> description();
182 
183 } // endgetDescription() const-> std::string &
184 
185 auto
187 setDescription( const std::string & _value )-> void
188 {
189  Wt::Dbo::Transaction t( GCW::app()-> gnucashew_session() );
190  m_transaction.modify()-> set_description( _value );
191 
192 } // endsetDescription( const std::string & _value )-> void
193 
194 auto
196 setTransferGuid( const std::string & _value )-> void
197 {
198  Wt::Dbo::Transaction t( GCW::app()-> gnucashew_session() );
199  thatSplit().modify()-> set_account_guid( _value );
200 
201 } // endsetTransferGuid( const std::string & _value )-> void
202 
203 auto
205 setReconcile( const std::string & _value )-> void
206 {
207  Wt::Dbo::Transaction t( GCW::app()-> gnucashew_session() );
208  thisSplit().modify()-> set_reconcile_state( _value );
209 
210 } // endsetReconcile( const std::string & _value )-> void
211 
212 auto
214 getValue() const-> GCW_NUMERIC
215 {
216  return thisSplit()-> value();
217 
218 } // endgetValue() const-> GCW_NUMERIC
219 
220 auto
222 getValueAsString() const-> std::string
223 {
224  return thisSplit()-> valueAsString();
225 
226 } // endgetValue() const-> GCW_NUMERIC
227 
228 auto
230 setValue( GCW_NUMERIC _value )-> void
231 {
232  Wt::Dbo::Transaction t( GCW::app()-> gnucashew_session() );
233  thisSplit().modify()-> set_value( _value );
234  thatSplit().modify()-> set_value( _value * -1 );
235 
236 } // endsetDebit( GCW_NUMERIC _value )-> void
237 
238 auto
240 setNotes( const std::string & _value )-> void
241 {
242  std::cout << __FILE__ << ":" << __LINE__ << " " << __FUNCTION__ << " " << _value << std::endl;
243 
244 } // endsetNotes( const std::string & _value )-> void
245 
246 
247 
static std::vector< std::string > & split(const std::string &s, char delim, std::vector< std::string > &elems)
Definition: Core.cpp:16
Wt::Dbo::ptr< Item > Ptr
Definition: BaseItem.h:39
auto setReconcile(const std::string &_value) -> void
Definition: Manager.cpp:205
auto setDate(const Wt::WDateTime &_value) -> void
Definition: Manager.cpp:161
auto getValue() const -> GCW_NUMERIC
Definition: Manager.cpp:214
auto newTransaction(const std::string &_accountGuid1, const std::string &_accountGuid2) -> void
New Transaction.
Definition: Manager.cpp:20
auto setValue(GCW_NUMERIC _value) -> void
Definition: Manager.cpp:230
auto otherGuid() const -> std::string
Other GUID.
Definition: Manager.cpp:113
auto loadTransaction(const std::string &_transactionGuid) -> void
Set Transaction.
Definition: Manager.cpp:64
auto split(const std::string &_splitGuid) const -> GCW::Dbo::Splits::Item::Ptr
Definition: Manager.cpp:125
auto loadSplit(const std::string &_splitGuid) -> void
Set Split.
Definition: Manager.cpp:92
auto thatSplit() const -> GCW::Dbo::Splits::Item::Ptr
Definition: Manager.cpp:145
auto setNotes(const std::string &_value) -> void
Definition: Manager.cpp:240
auto getDescription() const -> std::string
Set Description.
Definition: Manager.cpp:179
auto getValueAsString() const -> std::string
Definition: Manager.cpp:222
auto getDate() const -> Wt::WDateTime
Set Date.
Definition: Manager.cpp:153
auto setAction(const std::string &_value) -> void
Set Action.
Definition: Manager.cpp:170
auto deleteTransaction() -> void
Definition: Manager.cpp:80
auto setTransferGuid(const std::string &_value) -> void
Set Transfer GUID.
Definition: Manager.cpp:196
auto thisSplit() const -> GCW::Dbo::Splits::Item::Ptr
Definition: Manager.cpp:137
auto setDescription(const std::string &_value) -> void
Definition: Manager.cpp:187
#define GCW_RECONCILE_NO
Definition: gcwglobal.h:26
#define GCW_DEFAULT_DATE
Definition: gcwglobal.h:25
#define GCW_NUMERIC
Internal Numeric Type.
Definition: gcwglobal.h:37
auto newGuid() -> std::string
Generate new GUID string value.
Definition: Core.cpp:235
const Wt::WFormModel::Field guid
Definition: Accounts.cpp:46
const Wt::WFormModel::Field description
Definition: Accounts.cpp:54
const Wt::WFormModel::Field commodity_guid
Definition: Accounts.cpp:49
auto load(const std::string &_guid) -> Item::Ptr
Load Account by GUID.
Definition: Accounts.cpp:135
auto byTransaction(const std::string &_txGuid) -> Item::Vector
Load Splits by Transaction.
Definition: Splits.cpp:211
auto add(const std::string &_splitGuid) -> Item::Ptr
Add a single split.
Definition: Splits.cpp:118
auto load(const std::string &_splitGuid) -> Item::Ptr
Load a single split.
Definition: Splits.cpp:66
auto add(const std::string &_txGuid) -> Item::Ptr
auto load(const std::string &_txGuid) -> Item::Ptr
Load Transaction by Guid.
Definition: App.h:17
App * app()
Definition: App.cpp:67
Definition: GncLock.h:6
Definition: guid.cpp:397