We have made several important enhancements to standard sql-ledger. Here are the details.


  1. Restrict user to a particular department using admin.pl.
  2. Default department for user.
  3. Department is mandatory on invoices/orders/quotes if there is at least one department defined.
  4. Warehouses.

Warehouse transfers module.

  1. Restrict user to a particular warehouse using admin.pl.
  2. Default warehouse for user.
  3. Track warehouse inventory from sales and purchase invoices.
  4. Track inventory-in-transit between warehouse movement.
  5. Warehouse is mandatory on invoices if there is at least one warehouse defined.
  6. Warehouse onhand and activity reports.


  1. Re-posting script which corrects cogs errors due to invoice editing.
  2. Invoice and invoice-item cogs/revenue information with gross profit %age.
  3. Onhand value report which shows the inventory onhand quantities and value based upon fifo costing.


  1. Per-invoice and per-item cogs/revenue information.
  2. Enhanced tax reports.
  3. Audit trail report.
  4. Drill-down to transactions from income statement.
  5. Invoice date and customer/vendor filter in ‘All Items’ report.
  6. Account description in ‘GL Reports’.
  7. Account activity report using ‘GL Reports’.
  8. Save report search conditions and layout in user menu. Recall with a single click.


  1. ‘Add Customer’, ‘Add Vendor’ links on invoices/orders/quotes/POS screens. These links appear only if allowed by access control settings.
  2. Enhanced assemblies. You can get a report of all stock-assembly actions. Warehouses are correctly updated with any assemblies made and components used.
  3. Enhanced bank reconciliation.
  4. Added back the ‘Shipping–Transfer’ function from sql-ledger 2.6.
    LedgerDoctor script which identifies potential problems with data entry.
    CSV data import.
  5. Disabled incorrect item weight update from orders and invoices.
  6. Parts group is mandatory if there is at least on group defined.

Explanation of bugs and gotchas in official version.


  1. Warehouse information is not updated when you receive orders by editing Rcvd quantity on orders.
  2. When you make changes to invoice created from an order (add/remove item, quantities), inventory onhand count goes out of order. This is caused any invoice created from order does not update the inventory onhand.
  3. We have fixed these issues by not allowing to receive orders by editing them. We also do not allow editing invoices created from orders to avoid corrupting onhand quantities.


  1. Incorrect accounting transaction is posted for sale returns.
  2. COGS gets corrupted when you edit an invoice.
  3. We have modified the posting of sale returns to post correct cogs.
  4. We have added a reposting script to correct any corrupted cogs values when you edit an invoice.


Default warehouse functionality is broken in many ways. If somebody is successfully using it without ledger123 enhancements, I would love to know how?