diff --git a/src/engine/gnc-lot-p.h b/src/engine/gnc-lot-p.h new file mode 100644 index 0000000000..6283b64316 --- /dev/null +++ b/src/engine/gnc-lot-p.h @@ -0,0 +1,69 @@ +/********************************************************************\ + * gnc-lot-p.h -- AR/AP invoices; inventory lots; stock lots * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License* + * along with this program; if not, contact: * + * * + * Free Software Foundation Voice: +1-617-542-5942 * + * 59 Temple Place - Suite 330 Fax: +1-617-542-2652 * + * Boston, MA 02111-1307, USA gnu@gnu.org * +\********************************************************************/ + + +/* + * FILE: + * gnc-lot-p.h + * + * FUNCTION: + * Lots implement the fundamental conceptual idea behind invoices, + * inventory lots, and stock market investment lots. See the file + * src/doc/lots.txt for implmentation overview. + * + * HISTORY: + * Created by Linas Vepstas May 2002 + * Copyright (c) 2002 Linas Vepstas + */ + +#ifndef GNC_LOT_P_H +#define GNC_LOT_P_H + +#include "GNCIdP.h" +#include "gnc-engine.h" +#include "kvp_frame.h" + +struct gnc_lot_struct +{ + /* Unique guid for this lot */ + GUID guid; + + /* Book that this lot belongs to */ + GNCBook *book; + + /* Anchor for generic lot-specific data. */ + kvp_frame *kvp_data; + + /* Account to which this lot applies. All splits in the lot must + * belong to this account. + */ + Account * account; + + /* List of splits that belong to this lot. */ + SplitList *splits; + + /* handy cached value to indicate if lot is closed */ + gboolean is_closed; +}; + + +#endif /* GNC_LOT_P_H */ + diff --git a/src/engine/gnc-lot.c b/src/engine/gnc-lot.c new file mode 100644 index 0000000000..940459d48c --- /dev/null +++ b/src/engine/gnc-lot.c @@ -0,0 +1,66 @@ +/********************************************************************\ + * gnc-lot.c -- AR/AP invoices; inventory lots; stock lots * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License* + * along with this program; if not, contact: * + * * + * Free Software Foundation Voice: +1-617-542-5942 * + * 59 Temple Place - Suite 330 Fax: +1-617-542-2652 * + * Boston, MA 02111-1307, USA gnu@gnu.org * +\********************************************************************/ + +/* + * FILE: + * gnc-lot.c + * + * FUNCTION: + * Lots implement the fundamental conceptual idea behind invoices, + * inventory lots, and stock market investment lots. See the file + * src/doc/lots.txt for implmentation overview. + * + * HISTORY: + * Created by Linas Vepstas May 2002 + * Copyright (c) 2002 Linas Vepstas + */ + +#include "gnc-book-p.h" +#include "gnc-lot.h" +#include "gnc-lot-p.h" + +/* ============================================================= */ + +static void +gnc_lot_init (GNCLot *lot, GNCBook *book) +{ + lot->kvp_data = NULL; + lot->account = NULL; + lot->splits = NULL; + lot->is_closed = FALSE; + + lot->book = book; + xaccGUIDNew (&lot->guid, book); + xaccStoreEntity (book->entity_table, lot, &lot->guid, GNC_ID_LOT); +} + +GNCLot * +gnc_lot_new (GNCBook *book) +{ + GNCLot *lot; + g_return_val_if_fail (book, NULL); + + lot = g_new (GNCLot, 1); + gnc_lot_init (lot, book); + return lot; +} + +/* ========================== END OF FILE ========================= */ diff --git a/src/engine/gnc-lot.h b/src/engine/gnc-lot.h new file mode 100644 index 0000000000..5c9f95cc8e --- /dev/null +++ b/src/engine/gnc-lot.h @@ -0,0 +1,61 @@ +/********************************************************************\ + * gnc-lot.h -- AR/AP invoices; inventory lots; stock lots * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License* + * along with this program; if not, contact: * + * * + * Free Software Foundation Voice: +1-617-542-5942 * + * 59 Temple Place - Suite 330 Fax: +1-617-542-2652 * + * Boston, MA 02111-1307, USA gnu@gnu.org * +\********************************************************************/ + + +/* + * FILE: + * gnc-lot.h + * + * FUNCTION: + * Lots implement the fundamental conceptual idea behind invoices, + * inventory lots, and stock market investment lots. See the file + * src/doc/lots.txt for implmentation overview. + * + * HISTORY: + * Created by Linas Vepstas May 2002 + * Copyright (c) 2002 Linas Vepstas + */ + +#ifndef GNC_LOT_H +#define GNC_LOT_H + +#include "gnc-engine.h" + +GNCLot * gnc_lot_new (GNCBook *); +void gnc_lot_destroy (GNCLot *); + +void gnc_lot_add_split (GNCLot *, Split *); +void gnc_lot_remove_split (GNCLot *, Split *); + +/* The gnc_lot_get_account() routine returns the account with which + * this lot is associated. */ +Account * gnc_lot_get_account (GNCLot *); + +/* The gnc_lot_get_balance() routine returns the balance of the lot. + * The commodity in which this balance is expressed is the commodity + * of the account. */ +gnc_numeric gnc_lot_get_balance (GNCLot *); + +/* flag: is this lot closed? */ +gboolean gnc_lot_is_closed (GNCLot *); + + +#endif /* GNC_LOT_H */