GnuCash
4.11-11-ge9df8d41d2+
|
Files | |
file | gncOwner.h |
Business Interface: Object OWNERs. | |
Data Structures | |
struct | GncOwner |
struct | GncOwner |
Macros | |
#define | GNC_ID_OWNER "gncOwner" |
#define | OWNER_TYPE "type" |
#define | OWNER_TYPE_STRING "type-string" |
Allows the type to be handled externally. More... | |
#define | OWNER_CUSTOMER "customer" |
#define | OWNER_JOB "job" |
#define | OWNER_VENDOR "vendor" |
#define | OWNER_EMPLOYEE "employee" |
#define | OWNER_PARENT "parent" |
#define | OWNER_PARENTG "parent-guid" |
#define | OWNER_NAME "name" |
#define | OWNER_FROM_LOT "owner-from-lot" |
Enumerations | |
enum | GncOwnerType { GNC_OWNER_NONE, GNC_OWNER_UNDEFINED, GNC_OWNER_CUSTOMER, GNC_OWNER_JOB, GNC_OWNER_VENDOR, GNC_OWNER_EMPLOYEE } |
Functions | |
void | gncOwnerCopy (const GncOwner *src, GncOwner *dest) |
const GncGUID * | gncOwnerGetGUID (const GncOwner *owner) |
Get the GncGUID of the immediate owner. | |
GncGUID | gncOwnerRetGUID (GncOwner *owner) |
const GncOwner * | gncOwnerGetEndOwner (const GncOwner *owner) |
Get the "parent" Owner or GncGUID thereof. More... | |
const GncGUID * | gncOwnerGetEndGUID (const GncOwner *owner) |
void | gncOwnerAttachToLot (const GncOwner *owner, GNCLot *lot) |
Attach an owner to a lot. | |
gboolean | gncOwnerLotMatchOwnerFunc (GNCLot *lot, gpointer user_data) |
Helper function used to filter a list of lots by owner. | |
gint | gncOwnerLotsSortFunc (GNCLot *lotA, GNCLot *lotB) |
Helper function used to sort lots by date. More... | |
gboolean | gncOwnerGetOwnerFromLot (GNCLot *lot, GncOwner *owner) |
Get the owner from the lot. More... | |
gboolean | gncOwnerGetOwnerFromTxn (Transaction *txn, GncOwner *owner) |
Convenience function to get the owner from a transaction. More... | |
gboolean | gncOwnerGetOwnerFromTypeGuid (QofBook *book, GncOwner *owner, QofIdType type, GncGUID *guid) |
GNCLot * | gncOwnerCreatePaymentLotSecs (const GncOwner *owner, Transaction **preset_txn, Account *posted_acc, Account *xfer_acc, gnc_numeric amount, gnc_numeric exch, time64 date, const char *memo, const char *num) |
Create a lot for a payment to the owner using the other parameters passed in. More... | |
void | gncOwnerAutoApplyPaymentsWithLots (const GncOwner *owner, GList *lots) |
Given a list of lots, try to balance as many of them as possible by creating balancing transactions between them. More... | |
void | gncOwnerApplyPaymentSecs (const GncOwner *owner, Transaction **preset_txn, GList *lots, Account *posted_acc, Account *xfer_acc, gnc_numeric amount, gnc_numeric exch, time64 date, const char *memo, const char *num, gboolean auto_pay) |
A convenience function to apply a payment to the owner. More... | |
Split * | gncOwnerFindOffsettingSplit (GNCLot *pay_lot, gnc_numeric target_value) |
Helper function to find a split in lot that best offsets target_value Obviously it should be of opposite sign. More... | |
gboolean | gncOwnerReduceSplitTo (Split *split, gnc_numeric target_value) |
Helper function to reduce the value of a split to target_value. More... | |
void | gncOwnerSetLotLinkMemo (Transaction *ll_txn) |
To help a user understand what a lot link transaction does, we set the memo to name all documents involved in the link. More... | |
GList * | gncOwnerGetAccountTypesList (const GncOwner *owner) |
Returns a GList of account-types based on the owner type. | |
GList * | gncOwnerGetCommoditiesList (const GncOwner *owner) |
Returns a GList of currencies associated with the owner. | |
gnc_numeric | gncOwnerGetBalanceInCurrency (const GncOwner *owner, const gnc_commodity *report_currency) |
Given an owner, extract the open balance from the owner and then convert it to the desired currency. | |
GncOwner * | gncOwnerNew (void) |
These two functions are mainly for the convenience of scheme code. More... | |
void | gncOwnerFree (GncOwner *owner) |
void | gncOwnerBeginEdit (GncOwner *owner) |
These are convenience wrappers around gnc{Vendor,Customer,Job,Employee}* functions. More... | |
void | gncOwnerCommitEdit (GncOwner *owner) |
void | gncOwnerDestroy (GncOwner *owner) |
QOF handling | |
Whilst GncOwner is not a formal QOF object, these functions are still expected to be useful in making GncOwner transparent to QOF as they can be used by objects like GncInvoice. | |
QofIdTypeConst | qofOwnerGetType (const GncOwner *owner) |
return the type for the collection. More... | |
const char * | gncOwnerGetTypeString (const GncOwner *owner) |
return the type for the owner as an untranslated string. More... | |
QofInstance * | qofOwnerGetOwner (const GncOwner *owner) |
return the owner itself as an entity. More... | |
void | qofOwnerSetEntity (GncOwner *owner, QofInstance *ent) |
set the owner from the entity. More... | |
gboolean | GNC_IS_OWNER (QofInstance *ent) |
Check if entity is an owner kind. More... | |
QofIdTypeConst | gncOwnerTypeToQofIdType (GncOwnerType t) |
Returns the QofIdType of the given GncOwnerType, or NULL if no suitable one exists. More... | |
gboolean | gncOwnerRegister (void) |
Setup routines | |
void | gncOwnerInitUndefined (GncOwner *owner, gpointer obj) |
void | gncOwnerInitCustomer (GncOwner *owner, GncCustomer *customer) |
void | gncOwnerInitJob (GncOwner *owner, GncJob *job) |
void | gncOwnerInitVendor (GncOwner *owner, GncVendor *vendor) |
void | gncOwnerInitEmployee (GncOwner *owner, GncEmployee *employee) |
Get routines. | |
GncOwnerType | gncOwnerGetType (const GncOwner *owner) |
Returns the GncOwnerType of this owner. More... | |
gboolean | gncOwnerIsValid (const GncOwner *owner) |
Returns TRUE if the given owner is one of the valid objects. More... | |
gpointer | gncOwnerGetUndefined (const GncOwner *owner) |
If the given owner is of type GNC_OWNER_UNDEFINED, returns the undefined pointer, which is usually NULL. More... | |
GncCustomer * | gncOwnerGetCustomer (const GncOwner *owner) |
If the given owner is of type GNC_OWNER_CUSTOMER, returns the pointer to the customer object. More... | |
GncJob * | gncOwnerGetJob (const GncOwner *owner) |
If the given owner is of type GNC_OWNER_JOB, returns the pointer to the job object. More... | |
GncVendor * | gncOwnerGetVendor (const GncOwner *owner) |
If the given owner is of type GNC_OWNER_VENDOR, returns the pointer to the vendor object. More... | |
GncEmployee * | gncOwnerGetEmployee (const GncOwner *owner) |
If the given owner is of type GNC_OWNER_EMPLOYEE, returns the pointer to the employee object. More... | |
const char * | gncOwnerGetID (const GncOwner *owner) |
const char * | gncOwnerGetName (const GncOwner *owner) |
GncAddress * | gncOwnerGetAddr (const GncOwner *owner) |
gboolean | gncOwnerGetActive (const GncOwner *owner) |
gnc_commodity * | gncOwnerGetCurrency (const GncOwner *owner) |
Set routines. | |
void | gncOwnerSetActive (const GncOwner *owner, gboolean active) |
Comparison routines. | |
gboolean | gncOwnerEqual (const GncOwner *a, const GncOwner *b) |
Assess equality by checking. More... | |
int | gncOwnerGCompareFunc (const GncOwner *a, const GncOwner *b) |
Same as gncOwnerEqual, but returns 0 if equal to be used as a GList custom compare function. | |
int | gncOwnerCompare (const GncOwner *a, const GncOwner *b) |
Sort on name. | |
#define OWNER_TYPE_STRING "type-string" |
Allows the type to be handled externally.
Definition at line 320 of file gncOwner.h.
gboolean GNC_IS_OWNER | ( | QofInstance * | ent | ) |
Check if entity is an owner kind.
This function conveniently imitates the various GNC_IS_ checks on the other gnucash objects even though an owner is not really a true object.
Definition at line 353 of file gncOwner.c.
void gncOwnerApplyPaymentSecs | ( | const GncOwner * | owner, |
Transaction ** | preset_txn, | ||
GList * | lots, | ||
Account * | posted_acc, | ||
Account * | xfer_acc, | ||
gnc_numeric | amount, | ||
gnc_numeric | exch, | ||
time64 | date, | ||
const char * | memo, | ||
const char * | num, | ||
gboolean | auto_pay | ||
) |
A convenience function to apply a payment to the owner.
It creates a lot for a payment, optionally based on an existing transaction and then tries to balance it with the list of document/payment lots passed in. If not lots were given, all open lots for the owner are considered.
This code is actually a convenience wrapper around gncOwnerCreatePaymentLot and gncOwnerAutoApplyPaymentsWithLots. See their descriptions for more details on what happens exactly.
Definition at line 1408 of file gncOwner.c.
void gncOwnerAutoApplyPaymentsWithLots | ( | const GncOwner * | owner, |
GList * | lots | ||
) |
Given a list of lots, try to balance as many of them as possible by creating balancing transactions between them.
This can be used to automatically link invoices to payments (to "mark" invoices as paid) or to credit notes or the other way around.
The function starts with the first lot in the list and tries to create balancing transactions to the remainder of the lots in the list. If it reaches the end of the list, it will find the next still open lot in the list and tries to balance it with all lots that follow it (the ones that precede it are either already closed or not suitable or they would have been processed in a previous iteration).
By intelligently sorting the list of lots, you can play with the order of precedence in which the lots should be processed. For example, by sorting the oldest invoice lots first, the code will attempt to balance these first.
Some restrictions:
Definition at line 1259 of file gncOwner.c.
void gncOwnerBeginEdit | ( | GncOwner * | owner | ) |
These are convenience wrappers around gnc{Vendor,Customer,Job,Employee}* functions.
This allows you to begin edit, destroy commit edit an owner without knowing its type.
Definition at line 73 of file gncOwner.c.
GNCLot* gncOwnerCreatePaymentLotSecs | ( | const GncOwner * | owner, |
Transaction ** | preset_txn, | ||
Account * | posted_acc, | ||
Account * | xfer_acc, | ||
gnc_numeric | amount, | ||
gnc_numeric | exch, | ||
time64 | date, | ||
const char * | memo, | ||
const char * | num | ||
) |
Create a lot for a payment to the owner using the other parameters passed in.
If a transaction is set, this transaction will be reused if possible (meaning, if the transaction currency matches the owner's currency and if the transaction has (at least?) one split in the transfer account).
Definition at line 751 of file gncOwner.c.
Assess equality by checking.
Definition at line 405 of file gncOwner.c.
Split* gncOwnerFindOffsettingSplit | ( | GNCLot * | pay_lot, |
gnc_numeric | target_value | ||
) |
Helper function to find a split in lot that best offsets target_value Obviously it should be of opposite sign.
If there are more splits of opposite sign the following criteria are used in order of preference:
Definition at line 913 of file gncOwner.c.
GncCustomer* gncOwnerGetCustomer | ( | const GncOwner * | owner | ) |
If the given owner is of type GNC_OWNER_CUSTOMER, returns the pointer to the customer object.
Otherwise returns NULL.
Definition at line 370 of file gncOwner.c.
GncEmployee* gncOwnerGetEmployee | ( | const GncOwner * | owner | ) |
If the given owner is of type GNC_OWNER_EMPLOYEE, returns the pointer to the employee object.
Otherwise returns NULL.
Definition at line 391 of file gncOwner.c.
Get the "parent" Owner or GncGUID thereof.
The "parent" owner is the Customer or Vendor, or the Owner of a Job
Definition at line 573 of file gncOwner.c.
GncJob* gncOwnerGetJob | ( | const GncOwner * | owner | ) |
If the given owner is of type GNC_OWNER_JOB, returns the pointer to the job object.
Otherwise returns NULL.
Definition at line 377 of file gncOwner.c.
gboolean gncOwnerGetOwnerFromLot | ( | GNCLot * | lot, |
GncOwner * | owner | ||
) |
Get the owner from the lot.
If an owner is found in the lot, fill in "owner" and return TRUE. Otherwise return FALSE.
Definition at line 637 of file gncOwner.c.
gboolean gncOwnerGetOwnerFromTxn | ( | Transaction * | txn, |
GncOwner * | owner | ||
) |
Convenience function to get the owner from a transaction.
Transactions don't really have an owner. What this function will do it figure out whether the transaction is part of a business transaction (either a posted invoice/bill/voucher/credit note or a payment transaction) and use the business object behind it to extract owner information.
Definition at line 675 of file gncOwner.c.
GncOwnerType gncOwnerGetType | ( | const GncOwner * | owner | ) |
Returns the GncOwnerType of this owner.
(Not to be confused with qofOwnerGetType().)
Definition at line 201 of file gncOwner.c.
const char* gncOwnerGetTypeString | ( | const GncOwner * | owner | ) |
return the type for the owner as an untranslated string.
Definition at line 207 of file gncOwner.c.
gpointer gncOwnerGetUndefined | ( | const GncOwner * | owner | ) |
If the given owner is of type GNC_OWNER_UNDEFINED, returns the undefined pointer, which is usually NULL.
Otherwise returns NULL.
Definition at line 363 of file gncOwner.c.
GncVendor* gncOwnerGetVendor | ( | const GncOwner * | owner | ) |
If the given owner is of type GNC_OWNER_VENDOR, returns the pointer to the vendor object.
Otherwise returns NULL.
Definition at line 384 of file gncOwner.c.
gboolean gncOwnerIsValid | ( | const GncOwner * | owner | ) |
Returns TRUE if the given owner is one of the valid objects.
Returns FALSE if the owner is (still) undefined, or if it is NULL.
Definition at line 700 of file gncOwner.c.
gint gncOwnerLotsSortFunc | ( | GNCLot * | lotA, |
GNCLot * | lotB | ||
) |
Helper function used to sort lots by date.
If the lot is linked to an invoice, use the invoice posted date, otherwise use the lot's opened date.
Definition at line 729 of file gncOwner.c.
GncOwner* gncOwnerNew | ( | void | ) |
These two functions are mainly for the convenience of scheme code.
Normal C code has no need to ever use these two functions, and rather can just use a GncOwner directly and just pass around a pointer to it.
Definition at line 58 of file gncOwner.c.
gboolean gncOwnerReduceSplitTo | ( | Split * | split, |
gnc_numeric | target_value | ||
) |
Helper function to reduce the value of a split to target_value.
To make sure the split's parent transaction remains balanced a second split will be created with the remainder. Similarly if the split was part of a (business) lot, the remainder split will be added to the same lot to keep the lot's balance unchanged.
Definition at line 979 of file gncOwner.c.
void gncOwnerSetLotLinkMemo | ( | Transaction * | ll_txn | ) |
To help a user understand what a lot link transaction does, we set the memo to name all documents involved in the link.
The function below calculates this memo and sets it for all splits in the lot link transaction.
Definition at line 1013 of file gncOwner.c.
QofIdTypeConst gncOwnerTypeToQofIdType | ( | GncOwnerType | t | ) |
Returns the QofIdType of the given GncOwnerType, or NULL if no suitable one exists.
Definition at line 236 of file gncOwner.c.
QofInstance* qofOwnerGetOwner | ( | const GncOwner * | owner | ) |
QofIdTypeConst qofOwnerGetType | ( | const GncOwner * | owner | ) |
return the type for the collection.
Definition at line 231 of file gncOwner.c.
void qofOwnerSetEntity | ( | GncOwner * | owner, |
QofInstance * | ent | ||
) |
set the owner from the entity.
Definition at line 320 of file gncOwner.c.