Removed --reconcile and --reconcile-date.

This commit is contained in:
John Wiegley 2009-02-07 00:03:58 -04:00
parent 1b9e7fa7be
commit e8d2409430
9 changed files with 2 additions and 304 deletions

View file

@ -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 \

View file

@ -16,6 +16,8 @@
--descend
--descend_if EXPR
--reconcile
--reconcile-date DATE
* 2.6.1

View file

@ -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

View file

@ -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();

View file

@ -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_))

View file

@ -84,7 +84,6 @@
#include <help.h>
#include <derive.h>
#include <reconcile.h>
#include <quotes.h>
#include <emacs.h>
#include <csv.h>

View file

@ -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

View file

@ -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

View file

@ -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);