diff options
author | John Wiegley <johnw@newartisans.com> | 2009-02-07 00:03:58 -0400 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2009-02-07 00:03:58 -0400 |
commit | e8d24094304a457fabfb327c8fa180db0d9c85d1 (patch) | |
tree | 5f531c9b37ab6789343d9f4e03396be36b8fa8c4 | |
parent | 1b9e7fa7be4b65dfe9c07f3ca25c2fceb23195aa (diff) | |
download | fork-ledger-e8d24094304a457fabfb327c8fa180db0d9c85d1.tar.gz fork-ledger-e8d24094304a457fabfb327c8fa180db0d9c85d1.tar.bz2 fork-ledger-e8d24094304a457fabfb327c8fa180db0d9c85d1.zip |
Removed --reconcile and --reconcile-date.
-rw-r--r-- | Makefile.am | 3 | ||||
-rw-r--r-- | doc/NEWS | 2 | ||||
-rw-r--r-- | python/py_reconcile.cc | 68 | ||||
-rw-r--r-- | python/pyinterp.cc | 2 | ||||
-rw-r--r-- | src/chain.cc | 14 | ||||
-rw-r--r-- | src/ledger.h | 1 | ||||
-rw-r--r-- | src/reconcile.cc | 123 | ||||
-rw-r--r-- | src/reconcile.h | 91 | ||||
-rw-r--r-- | src/report.h | 2 |
9 files changed, 2 insertions, 304 deletions
diff --git a/Makefile.am b/Makefile.am index 528561cb..c90984b6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -70,7 +70,6 @@ libledger_report_la_SOURCES = \ src/emacs.cc \ src/help.cc \ src/derive.cc \ - src/reconcile.cc \ src/quotes.cc libledger_report_la_CPPFLAGS = $(lib_cppflags) @@ -125,7 +124,6 @@ pkginclude_HEADERS = \ src/help.h \ \ src/derive.h \ - src/reconcile.h \ src/quotes.h \ \ src/global.h \ @@ -227,7 +225,6 @@ libledger_python_la_SOURCES = \ python/py_parser.cc \ python/py_predicate.cc \ python/py_quotes.cc \ - python/py_reconcile.cc \ python/py_report.cc \ python/py_scope.cc \ python/py_session.cc \ @@ -16,6 +16,8 @@ --descend --descend_if EXPR + --reconcile + --reconcile-date DATE * 2.6.1 diff --git a/python/py_reconcile.cc b/python/py_reconcile.cc deleted file mode 100644 index 3c7ef81f..00000000 --- a/python/py_reconcile.cc +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2003-2009, John Wiegley. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * - Neither the name of New Artisans LLC nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "pyinterp.h" -#include "pyutils.h" -#include "reconcile.h" - -#include <boost/python/exception_translator.hpp> -#include <boost/python/implicit.hpp> -#include <boost/python/args.hpp> - -namespace ledger { - -using namespace boost::python; - -#define EXC_TRANSLATOR(type) \ - void exc_translate_ ## type(const type& err) { \ - PyErr_SetString(PyExc_ArithmeticError, err.what()); \ - } - -//EXC_TRANSLATOR(reconcile_error) - -void export_reconcile() -{ -#if 0 - class_< reconcile_xacts > ("ReconcileXacts") - ; -#endif - - //register_optional_to_python<amount_t>(); - - //implicitly_convertible<string, amount_t>(); - -#define EXC_TRANSLATE(type) \ - register_exception_translator<type>(&exc_translate_ ## type); - - //EXC_TRANSLATE(reconcile_error); -} - -} // namespace ledger diff --git a/python/pyinterp.cc b/python/pyinterp.cc index 8e1c14b3..25898a81 100644 --- a/python/pyinterp.cc +++ b/python/pyinterp.cc @@ -62,7 +62,6 @@ void export_output(); void export_parser(); void export_predicate(); void export_quotes(); -void export_reconcile(); void export_report(); void export_scope(); void export_session(); @@ -102,7 +101,6 @@ void initialize_for_python() export_parser(); export_predicate(); export_quotes(); - export_reconcile(); export_report(); export_scope(); export_session(); diff --git a/src/chain.cc b/src/chain.cc index 1e919c5d..964e3aea 100644 --- a/src/chain.cc +++ b/src/chain.cc @@ -32,7 +32,6 @@ #include "chain.h" #include "report.h" #include "filters.h" -#include "reconcile.h" namespace ledger { @@ -63,19 +62,6 @@ xact_handler_ptr chain_xact_handlers(report_t& report, // from the running total. handler.reset(new calc_xacts(handler)); -#if 0 - // reconcile_xacts will pass through only those xacts which can be - // reconciled to a given balance (calculated against the xacts which it - // receives). - if (! report.reconcile_balance.empty()) { - date_t cutoff = CURRENT_DATE(); - if (! report.reconcile_date.empty()) - cutoff = parse_date(report.reconcile_date); - handler.reset(new reconcile_xacts - (handler, value_t(report.reconcile_balance), cutoff)); - } -#endif - // filter_xacts will only pass through xacts matching the // `secondary_predicate'. if (report.HANDLED(only_)) diff --git a/src/ledger.h b/src/ledger.h index 6b96678f..70e15c5a 100644 --- a/src/ledger.h +++ b/src/ledger.h @@ -84,7 +84,6 @@ #include <help.h> #include <derive.h> -#include <reconcile.h> #include <quotes.h> #include <emacs.h> #include <csv.h> diff --git a/src/reconcile.cc b/src/reconcile.cc deleted file mode 100644 index 7ebfa815..00000000 --- a/src/reconcile.cc +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (c) 2003-2009, John Wiegley. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * - Neither the name of New Artisans LLC nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "reconcile.h" - -namespace ledger { - -#define xact_next(x) reinterpret_cast<xact_t *>(x->xdata().ptr) -#define xact_next_ptr(x) reinterpret_cast<xact_t **>(&x->xdata().ptr) - -static bool search_for_balance(amount_t& amount, - xact_t ** prev, xact_t * next) -{ - for (; next; next = xact_next(next)) { - xact_t * temp = *prev; - *prev = next; - - amount -= next->amount; - - if (! amount) { - *xact_next_ptr(next) = NULL; - return true; - } - else if (search_for_balance(amount, xact_next_ptr(next), xact_next(next))) - { - return true; - } - - amount += next->amount; - - *prev = temp; - } - return false; -} - -void reconcile_xacts::push_to_handler(xact_t * first) -{ - for (; first; first = xact_next(first)) - item_handler<xact_t>::operator()(*first); - - item_handler<xact_t>::flush(); -} - -void reconcile_xacts::flush() -{ - value_t cleared_balance; - value_t pending_balance; - - xact_t * first = NULL; - xact_t ** last_ptr = &first; - - foreach (xact_t * xact, xacts) { - if (! is_valid(cutoff) || xact->date() < cutoff) { - switch (xact->state()) { - case item_t::CLEARED: - cleared_balance += xact->amount; - break; - case item_t::UNCLEARED: - case item_t::PENDING: - pending_balance += xact->amount; - *last_ptr = xact; - last_ptr = xact_next_ptr(xact); - break; - } - } - } - - if (cleared_balance.type() >= value_t::BALANCE) - throw std::runtime_error("Cannot reconcile accounts with multiple commodities"); - - cleared_balance.cast(value_t::AMOUNT); - balance.cast(value_t::AMOUNT); - - commodity_t& cb_comm = cleared_balance.as_amount().commodity(); - commodity_t& b_comm = balance.as_amount().commodity(); - - balance -= cleared_balance; - if (balance.type() >= value_t::BALANCE) - throw_(std::runtime_error, - "Reconcile balance is not of the same commodity ('" - << b_comm.symbol() << "' != '" << cb_comm.symbol() << "')"); - - // If the amount to reconcile is the same as the pending balance, - // then assume an exact match and return the results right away. - amount_t& to_reconcile(balance.as_amount_lval()); - pending_balance.cast(value_t::AMOUNT); - if (to_reconcile == pending_balance.as_amount() || - search_for_balance(to_reconcile, &first, first)) { - push_to_handler(first); - } else { - throw std::runtime_error("Could not reconcile account!"); - } -} - -} // namespace ledger diff --git a/src/reconcile.h b/src/reconcile.h deleted file mode 100644 index 7ca9e861..00000000 --- a/src/reconcile.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2003-2009, John Wiegley. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * - Neither the name of New Artisans LLC nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @addtogroup extra - */ - -/** - * @file reconcile.h - * @author John Wiegley - * - * @ingroup extra - * - * @brief Brief - * - * Long. - */ -#ifndef _RECONCILE_H -#define _RECONCILE_H - -#include "value.h" -#include "iterators.h" -#include "filters.h" - -namespace ledger { - -/** - * @brief Brief - * - * Long. - */ -class reconcile_xacts : public item_handler<xact_t> -{ - value_t balance; - date_t cutoff; - xacts_list xacts; - - reconcile_xacts(); - -public: - reconcile_xacts(xact_handler_ptr handler, - const value_t& _balance, - const date_t& _cutoff) - : item_handler<xact_t>(handler), - balance(_balance), cutoff(_cutoff) { - TRACE_CTOR(reconcile_xacts, - "xact_handler_ptr, const value_t&, const date_t&"); - } - virtual ~reconcile_xacts() throw() { - TRACE_DTOR(reconcile_xacts); - } - - void push_to_handler(xact_t * first); - - virtual void flush(); - virtual void operator()(xact_t& xact) { - xacts.push_back(&xact); - } -}; - -} // namespace ledger - -#endif // _RECONCILE_H diff --git a/src/report.h b/src/report.h index 5ab6c47c..6b252446 100644 --- a/src/report.h +++ b/src/report.h @@ -262,8 +262,6 @@ public: OPTION(report_t, quantity); // -O OPTION(report_t, quarterly); OPTION(report_t, real); // -R - OPTION(report_t, reconcile_); - OPTION(report_t, reconcile_date_); OPTION(report_t, register_format_); OPTION(report_t, related); // -r OPTION(report_t, related_all); |