From GnuCash

Business menu

GnuCash's Business menu mapped to methods - Customers, Vendors, Employees, Jobs, Invoices, Bills, Expense Vouchers, Process Payment, due reminders, Sales Tax Tables and Billing Terms. Find windows are list methods; printing is report.run.

GnuCash's Business menu has a submenu for each kind of Owner. red-ale has the same objects, each with create, get, list and update methods, and a "Find" window is a list method. See Business documents for the model.

Customer

GnuCashred-ale
Customers Overviewcustomer.list
New Customer...customer.create: ID (from the next counter if you leave it out), name, address, terms, tax settings, credit limit. Edit with customer.update; customer.get reads one
Find Customer...customer.list, filtered by you
New Invoice...invoice.create for the Customer, then invoice.addEntry for each line. Make a credit note with creditNote: true
Edit Invoiceinvoice.update, invoice.updateEntry and invoice.removeEntry, while it is unposted. invoice.totals gives the subtotal, tax and total
Post (in the invoice window)invoice.post: the A/Receivable Account, the posting date, an optional due date
Unpostinvoice.unpost
Duplicate Invoiceinvoice.duplicate
Find Invoice...invoice.list
New Job..., Find Job...job.create, job.list
Process Payment...payment.openItems lists what can be paid, then payment.process; one document: invoice.pay
Invoices Due Reminderinvoice.due

Vendor

GnuCashred-ale
Vendors Overview, Find Vendor...vendor.list, vendor.get
New Vendor...vendor.create, vendor.update
New Bill..., Find Bill...invoice.create for the Vendor, invoice.list. Everything above for invoices applies to bills; post to an A/Payable Account
New Job..., Find Job...job.create, job.list
Process Payment...payment.process
Bills Due Reminderinvoice.due

Employee

GnuCashred-ale
Employees Overview, Find Employee...employee.list, employee.get
New Employee...employee.create, employee.update
New Expense Voucher..., Find Expense Voucher...invoice.create for the Employee, invoice.list
Process Payment...payment.process

The rest of the menu

GnuCashred-ale
Sales Tax TabletaxTable.create, .get, .list, .update and .delete. A table in use cannot be deleted
Billing Terms EditorbillTerm.create, .get, .list, .update and .delete
Business Linked DocumentsdocLink.documents
Ordersorder.create, order.addEntry, order.close and the rest of order.*
File > Properties > Counters tabcounter.list, counter.set
File > Properties > Business tabbook.options, book.setOptions: the company details, the default invoice report

Printing an invoice

GnuCash's File > Print Invoice runs the Book's Default Invoice Report for the document, falling back to the Printable Invoice when that setting is not an invoice report. In red-ale that is report.run (or report.export for HTML) with the invoice report and its Invoice Number option set to the document's GUID:

  1. Read defaultInvoiceReport from book.options.
  2. If it names an invoice report red-ale has, run that. If it is empty, or names one red-ale does not have (the Easy or Fancy Invoice, say), run the Printable Invoice, as GnuCash falls back to it.
  3. Pass {"General": {"Invoice Number": "<guid>"}} as options.

The company details printed on it are the book's Business options. The Easy, Fancy, Tax and Australian Tax invoices and the Receipt are not ported; see Reports menu.

What is not here

GnuCash has no payroll system and neither has red-ale. The customer, vendor, employee and job reports, aging reports and the Customer Summary are not ported: write them as User reports.