gncOwner is a weak reference to an _external_ entity.
gncCustomer
gncVendor
gncEmployee describe _external_ entities and the billing and payment policies which apply.
gncJob is an alias for either a gncCustomer or a gncVendor. There is a 1->n relationship between these two objects. A 'customer job' is represented by a gncJob with a gncCustomer owner and be used in lieu of a gncCustomer. A 'vendor job' is represented by a gncJob with a gncVendor owner and may be used in lieu of a gncVendor. A gncJob referencing a gncEmployee is nonsensical.
gncAddress
gncBillTerm
gncTaxTable are used to describe _external_ entities and the billing and payment policies.
gncInvoice is either an invoice, bill or expense report, depending on the gncOwner and accounts involved. An 'invoice' has either a gncCustomer or 'customer job' as an 'owner' and posts to Accounts Receivable. A 'bill' has either a gncVendor or 'vendor job' as its 'owner' and posts to Accounts Payable. An 'expense report' has a gncEmployee as it's 'owner' and posts to Accounts Payable.
gncEntry represents a line item on an invoice. There is an n->1 relationship between gncEntry and gncInvoice. There is a 1->1 relationship between a gncEntry and an income or expense account( depending on context ). Furthermore, entries on a 'bill' or 'expense report' may be 'owned' by a gncCustomer or 'customer job'. I assume such expenses will show up on a subsequent invoice.
There appears to be no separate 'payment' object explicitly applying payments against open invoices. Payments received will be split across open invoices in an indeterminate manner--to me it looks like this happens to be FIFO order as it is in the reverse order they're encountered when the DB is scanned (engine/Account.c#1983) while the invoices are inserted in LIFO order (engine/Account.c#816)
_______________________________________________ gnucash-devel mailing list [EMAIL PROTECTED] https://lists.gnucash.org/mailman/listinfo/gnucash-devel
