summaryrefslogtreecommitdiff
path: root/doc/html_manual/LedgerSMB-manual.html
diff options
context:
space:
mode:
authoreinhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46>2007-03-26 07:13:54 +0000
committereinhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46>2007-03-26 07:13:54 +0000
commit2a7a42fc5a6f1ada7dec820303dd739bcd7c34f2 (patch)
tree739bceecb5d59fe72dc9fc09bb3115de4f26e204 /doc/html_manual/LedgerSMB-manual.html
parentf563b2e723e0717a13939782dd32cc1c9820d5a9 (diff)
Adding HTML manual rendition from xhlatex
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/branches/1.2@1013 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'doc/html_manual/LedgerSMB-manual.html')
-rw-r--r--doc/html_manual/LedgerSMB-manual.html4496
1 files changed, 4496 insertions, 0 deletions
diff --git a/doc/html_manual/LedgerSMB-manual.html b/doc/html_manual/LedgerSMB-manual.html
new file mode 100644
index 00000000..f1053f41
--- /dev/null
+++ b/doc/html_manual/LedgerSMB-manual.html
@@ -0,0 +1,4496 @@
+<?xml version="1.0" encoding="iso-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+>
+<head><title>Ledger-SMB Manual v. 1.2</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/mn.html)" />
+<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/mn.html)" />
+<!-- xhtml -->
+<meta name="src" content="LedgerSMB-manual.tex" />
+<meta name="date" content="2007-03-26 00:09:00" />
+<link rel="stylesheet" type="text/css" href="LedgerSMB-manual.css" />
+</head><body
+>
+ <div class="maketitle">
+
+
+
+
+
+<h2 class="titleHead">Ledger-SMB Manual v. 1.2</h2>
+<div class="author" ><span
+class="pplr8t-x-x-120">The LedgerSMB Core Team</span></div>
+<br />
+<div class="date" ><span
+class="pplr8t-x-x-120">March 26, 2007</span></div>
+ </div>Copyright <span
+class="cmsy-10">&#169;</span>2006 The LedgerSMB Core Team. Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or any later version
+published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
+Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation
+License" (Appendix <a
+href="#x1-223000E">E<!--tex4ht:ref: fdl --></a>).
+ <h3 class="likesectionHead"><a
+ id="x1-1000"></a>Contents</h3>
+ <div class="tableofcontents">
+ <span class="partToc">I&#x00A0;&#x00A0;<a
+href="#x1-3000I" id="QQ2-1-3">Ledger-SMB and Business Processes</a></span>
+<br /> <span class="sectionToc">1 <a
+href="#x1-40001" id="QQ2-1-4">Introduction to Ledger-SMB</a></span>
+<br /> &#x00A0;<span class="subsectionToc">1.1 <a
+href="#x1-50001.1" id="QQ2-1-5">Why Ledger-SMB</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">1.1.1 <a
+href="#x1-60001.1.1" id="QQ2-1-6">Advantages of Ledger-SMB</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">1.1.2 <a
+href="#x1-70001.1.2" id="QQ2-1-7">Key Features</a></span>
+<br /> &#x00A0;<span class="subsectionToc">1.2 <a
+href="#x1-80001.2" id="QQ2-1-8">Limitations of Ledger-SMB</a></span>
+<br /> &#x00A0;<span class="subsectionToc">1.3 <a
+href="#x1-90001.3" id="QQ2-1-9">System Requirements of Ledger-SMB</a></span>
+<br /> <span class="sectionToc">2 <a
+href="#x1-100002" id="QQ2-1-10">User Account and Database Administration Basics</a></span>
+<br /> &#x00A0;<span class="subsectionToc">2.1 <a
+href="#x1-110002.1" id="QQ2-1-11">Companies and Datasets</a></span>
+<br /> &#x00A0;<span class="subsectionToc">2.2 <a
+href="#x1-120002.2" id="QQ2-1-12">How to Create a User</a></span>
+<br /> &#x00A0;<span class="subsectionToc">2.3 <a
+href="#x1-130002.3" id="QQ2-1-13">Permissions</a></span>
+<br /> &#x00A0;<span class="subsectionToc">2.4 <a
+href="#x1-140002.4" id="QQ2-1-14">User Account Types</a></span>
+<br /> &#x00A0;<span class="subsectionToc">2.5 <a
+href="#x1-150002.5" id="QQ2-1-15">Other Features</a></span>
+<br /> <span class="sectionToc">3 <a
+href="#x1-160003" id="QQ2-1-16">Chart of Accounts</a></span>
+<br /> &#x00A0;<span class="subsectionToc">3.1 <a
+href="#x1-170003.1" id="QQ2-1-17">Introduction to Double Entry Bookkeeping</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">3.1.1 <a
+href="#x1-180003.1.1" id="QQ2-1-18">Business Entity</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">3.1.2 <a
+href="#x1-190003.1.2" id="QQ2-1-19">Double Entry</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">3.1.3 <a
+href="#x1-200003.1.3" id="QQ2-1-20">Accounts</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">3.1.4 <a
+href="#x1-210003.1.4" id="QQ2-1-21">Debits and Credits</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">3.1.5 <a
+href="#x1-220003.1.5" id="QQ2-1-22">Accrual</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">3.1.6 <a
+href="#x1-230003.1.6" id="QQ2-1-23">References</a></span>
+<br /> &#x00A0;<span class="subsectionToc">3.2 <a
+href="#x1-240003.2" id="QQ2-1-24">General Guidelines on Numbering Accounts</a></span>
+<br /> &#x00A0;<span class="subsectionToc">3.3 <a
+href="#x1-250003.3" id="QQ2-1-25">Adding/Modifying Accounts</a></span>
+<br /> &#x00A0;<span class="subsectionToc">3.4 <a
+href="#x1-260003.4" id="QQ2-1-26">Listing Account Balances and Transactions</a></span>
+<br /> <span class="sectionToc">4 <a
+href="#x1-270004" id="QQ2-1-27">Administration</a></span>
+<br /> &#x00A0;<span class="subsectionToc">4.1 <a
+href="#x1-280004.1" id="QQ2-1-28">Taxes, Defaults, and Preferences</a></span>
+
+
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.1.1 <a
+href="#x1-290004.1.1" id="QQ2-1-29">Adding A Sales Tax Account</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.1.2 <a
+href="#x1-300004.1.2" id="QQ2-1-30">Setting a Sales Tax Amount</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.1.3 <a
+href="#x1-310004.1.3" id="QQ2-1-31">Default Account Setup</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.1.4 <a
+href="#x1-320004.1.4" id="QQ2-1-32">Currency Setup</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.1.5 <a
+href="#x1-330004.1.5" id="QQ2-1-33">Sequence Settings</a></span>
+<br /> &#x00A0;<span class="subsectionToc">4.2 <a
+href="#x1-340004.2" id="QQ2-1-34">Audit Control</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.2.1 <a
+href="#x1-350004.2.1" id="QQ2-1-35">Explaining transaction reversal</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.2.2 <a
+href="#x1-360004.2.2" id="QQ2-1-36">Close books option</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.2.3 <a
+href="#x1-370004.2.3" id="QQ2-1-37">Audit Trails</a></span>
+<br /> &#x00A0;<span class="subsectionToc">4.3 <a
+href="#x1-380004.3" id="QQ2-1-38">Departments</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.3.1 <a
+href="#x1-390004.3.1" id="QQ2-1-39">Cost v Profit Centers.</a></span>
+<br /> &#x00A0;<span class="subsectionToc">4.4 <a
+href="#x1-400004.4" id="QQ2-1-40">Warehouses</a></span>
+<br /> &#x00A0;<span class="subsectionToc">4.5 <a
+href="#x1-410004.5" id="QQ2-1-41">Languages</a></span>
+<br /> &#x00A0;<span class="subsectionToc">4.6 <a
+href="#x1-420004.6" id="QQ2-1-42">Types of Businesses</a></span>
+<br /> &#x00A0;<span class="subsectionToc">4.7 <a
+href="#x1-430004.7" id="QQ2-1-43">Misc.</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.7.1 <a
+href="#x1-440004.7.1" id="QQ2-1-44">GIFI</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.7.2 <a
+href="#x1-450004.7.2" id="QQ2-1-45">SIC</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.7.3 <a
+href="#x1-460004.7.3" id="QQ2-1-46">Overview of Template Editing</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">4.7.4 <a
+href="#x1-470004.7.4" id="QQ2-1-47">Year-end</a></span>
+<br /> &#x00A0;<span class="subsectionToc">4.8 <a
+href="#x1-480004.8" id="QQ2-1-48">Options in the ledger-smb.conf</a></span>
+<br /> <span class="sectionToc">5 <a
+href="#x1-490005" id="QQ2-1-49">Goods and Services</a></span>
+<br /> &#x00A0;<span class="subsectionToc">5.1 <a
+href="#x1-500005.1" id="QQ2-1-50">Basic Terms</a></span>
+<br /> &#x00A0;<span class="subsectionToc">5.2 <a
+href="#x1-510005.2" id="QQ2-1-51">The Price Matrix</a></span>
+<br /> &#x00A0;<span class="subsectionToc">5.3 <a
+href="#x1-520005.3" id="QQ2-1-52">Pricegroups</a></span>
+<br /> &#x00A0;<span class="subsectionToc">5.4 <a
+href="#x1-530005.4" id="QQ2-1-53">Groups</a></span>
+<br /> &#x00A0;<span class="subsectionToc">5.5 <a
+href="#x1-540005.5" id="QQ2-1-54">Labor/Overhead</a></span>
+<br /> &#x00A0;<span class="subsectionToc">5.6 <a
+href="#x1-550005.6" id="QQ2-1-55">Services</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">5.6.1 <a
+href="#x1-560005.6.1" id="QQ2-1-56">Shipping and Handling as a Service</a></span>
+<br /> &#x00A0;<span class="subsectionToc">5.7 <a
+href="#x1-570005.7" id="QQ2-1-57">Parts</a></span>
+<br /> &#x00A0;<span class="subsectionToc">5.8 <a
+href="#x1-580005.8" id="QQ2-1-58">Assemblies and Manufacturing</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">5.8.1 <a
+href="#x1-590005.8.1" id="QQ2-1-59">Stocking Assemblies</a></span>
+<br /> &#x00A0;<span class="subsectionToc">5.9 <a
+href="#x1-600005.9" id="QQ2-1-60">Reporting</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">5.9.1 <a
+href="#x1-610005.9.1" id="QQ2-1-61">All Items and Parts Reports</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">5.9.2 <a
+href="#x1-620005.9.2" id="QQ2-1-62">Requirements</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">5.9.3 <a
+href="#x1-630005.9.3" id="QQ2-1-63">Services and Labor</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">5.9.4 <a
+href="#x1-640005.9.4" id="QQ2-1-64">Assemblies</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">5.9.5 <a
+href="#x1-650005.9.5" id="QQ2-1-65">Groups and Pricegroups</a></span>
+<br /> &#x00A0;<span class="subsectionToc">5.10 <a
+href="#x1-660005.10" id="QQ2-1-66">Translations</a></span>
+<br /> &#x00A0;<span class="subsectionToc">5.11 <a
+href="#x1-670005.11" id="QQ2-1-67">How Cost of Goods Sold is tracked</a></span>
+<br /> <span class="sectionToc">6 <a
+href="#x1-680006" id="QQ2-1-68">AP</a></span>
+<br /> &#x00A0;<span class="subsectionToc">6.1 <a
+href="#x1-690006.1" id="QQ2-1-69">Basic AP Concepts</a></span>
+<br /> &#x00A0;<span class="subsectionToc">6.2 <a
+href="#x1-700006.2" id="QQ2-1-70">Vendors</a></span>
+<br /> &#x00A0;<span class="subsectionToc">6.3 <a
+href="#x1-710006.3" id="QQ2-1-71">AP Transactions</a></span>
+<br /> &#x00A0;<span class="subsectionToc">6.4 <a
+href="#x1-720006.4" id="QQ2-1-72">AP Invoices</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">6.4.1 <a
+href="#x1-730006.4.1" id="QQ2-1-73">Correcting an AP Invoice</a></span>
+<br /> &#x00A0;<span class="subsectionToc">6.5 <a
+href="#x1-740006.5" id="QQ2-1-74">Cash payment And Check Printing</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">6.5.1 <a
+href="#x1-750006.5.1" id="QQ2-1-75">Rapid Payment Entry Screen</a></span>
+<br /> &#x00A0;<span class="subsectionToc">6.6 <a
+href="#x1-760006.6" id="QQ2-1-76">Transaction/Invoice Reporting</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">6.6.1 <a
+href="#x1-770006.6.1" id="QQ2-1-77">Transactions Report</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">6.6.2 <a
+href="#x1-780006.6.2" id="QQ2-1-78">Outstanding Report</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">6.6.3 <a
+href="#x1-790006.6.3" id="QQ2-1-79">AP Aging Report</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">6.6.4 <a
+href="#x1-800006.6.4" id="QQ2-1-80">Tax Paid and Non-taxable Report</a></span>
+
+
+<br /> &#x00A0;<span class="subsectionToc">6.7 <a
+href="#x1-810006.7" id="QQ2-1-81">Vendor Reporting</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">6.7.1 <a
+href="#x1-820006.7.1" id="QQ2-1-82">Vendor Search</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">6.7.2 <a
+href="#x1-830006.7.2" id="QQ2-1-83">Vendor History</a></span>
+<br /> <span class="sectionToc">7 <a
+href="#x1-840007" id="QQ2-1-84">AR</a></span>
+<br /> &#x00A0;<span class="subsectionToc">7.1 <a
+href="#x1-850007.1" id="QQ2-1-85">Customers</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">7.1.1 <a
+href="#x1-860007.1.1" id="QQ2-1-86">Customer Price Matrix</a></span>
+<br /> &#x00A0;<span class="subsectionToc">7.2 <a
+href="#x1-870007.2" id="QQ2-1-87">AR Transactions</a></span>
+<br /> &#x00A0;<span class="subsectionToc">7.3 <a
+href="#x1-880007.3" id="QQ2-1-88">AR Invoices</a></span>
+<br /> &#x00A0;<span class="subsectionToc">7.4 <a
+href="#x1-890007.4" id="QQ2-1-89">Cash Receipt</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">7.4.1 <a
+href="#x1-900007.4.1" id="QQ2-1-90">Cash Receipts for multiple customers</a></span>
+<br /> &#x00A0;<span class="subsectionToc">7.5 <a
+href="#x1-910007.5" id="QQ2-1-91">AR Transaction Reporting</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">7.5.1 <a
+href="#x1-920007.5.1" id="QQ2-1-92">AR Transactions Report</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">7.5.2 <a
+href="#x1-930007.5.2" id="QQ2-1-93">AR Aging Report</a></span>
+<br /> &#x00A0;<span class="subsectionToc">7.6 <a
+href="#x1-940007.6" id="QQ2-1-94">Customer Reporting</a></span>
+<br /> <span class="sectionToc">8 <a
+href="#x1-950008" id="QQ2-1-95">Projects</a></span>
+<br /> &#x00A0;<span class="subsectionToc">8.1 <a
+href="#x1-960008.1" id="QQ2-1-96">Project Basics</a></span>
+<br /> &#x00A0;<span class="subsectionToc">8.2 <a
+href="#x1-970008.2" id="QQ2-1-97">Timecards</a></span>
+<br /> &#x00A0;<span class="subsectionToc">8.3 <a
+href="#x1-980008.3" id="QQ2-1-98">Projects and Invoices</a></span>
+<br /> &#x00A0;<span class="subsectionToc">8.4 <a
+href="#x1-990008.4" id="QQ2-1-99">Reporting</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">8.4.1 <a
+href="#x1-1000008.4.1" id="QQ2-1-100">Timecard Reporting</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">8.4.2 <a
+href="#x1-1010008.4.2" id="QQ2-1-101">Project Transaction Reporting</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">8.4.3 <a
+href="#x1-1020008.4.3" id="QQ2-1-102">List of Projects</a></span>
+<br /> &#x00A0;<span class="subsectionToc">8.5 <a
+href="#x1-1030008.5" id="QQ2-1-103">Possibilities for Using Projects</a></span>
+<br /> <span class="sectionToc">9 <a
+href="#x1-1040009" id="QQ2-1-104">Quotations and Order Management</a></span>
+<br /> &#x00A0;<span class="subsectionToc">9.1 <a
+href="#x1-1050009.1" id="QQ2-1-105">Sales Orders</a></span>
+<br /> &#x00A0;<span class="subsectionToc">9.2 <a
+href="#x1-1060009.2" id="QQ2-1-106">Quotations</a></span>
+<br /> &#x00A0;<span class="subsectionToc">9.3 <a
+href="#x1-1070009.3" id="QQ2-1-107">Shipping</a></span>
+<br /> &#x00A0;<span class="subsectionToc">9.4 <a
+href="#x1-1080009.4" id="QQ2-1-108">AR Work Flow</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">9.4.1 <a
+href="#x1-1090009.4.1" id="QQ2-1-109">Service Example</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">9.4.2 <a
+href="#x1-1100009.4.2" id="QQ2-1-111">Single Warehouse Example</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">9.4.3 <a
+href="#x1-1110009.4.3" id="QQ2-1-113">Multiple Warehouse Example</a></span>
+<br /> &#x00A0;<span class="subsectionToc">9.5 <a
+href="#x1-1120009.5" id="QQ2-1-115">Requests for Quotation (RFQ)</a></span>
+<br /> &#x00A0;<span class="subsectionToc">9.6 <a
+href="#x1-1130009.6" id="QQ2-1-116">Purchase Orders</a></span>
+<br /> &#x00A0;<span class="subsectionToc">9.7 <a
+href="#x1-1140009.7" id="QQ2-1-117">Receiving</a></span>
+<br /> &#x00A0;<span class="subsectionToc">9.8 <a
+href="#x1-1150009.8" id="QQ2-1-118">AP Work Flow</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">9.8.1 <a
+href="#x1-1160009.8.1" id="QQ2-1-119">Bookkeeper entering the received items, order completed in full</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">9.8.2 <a
+href="#x1-1170009.8.2" id="QQ2-1-121">Bookkeeper entering received items, order completed in part</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">9.8.3 <a
+href="#x1-1180009.8.3" id="QQ2-1-123">Receiving staff entering items</a></span>
+<br /> &#x00A0;<span class="subsectionToc">9.9 <a
+href="#x1-1190009.9" id="QQ2-1-125">Generation and Consolidation</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">9.9.1 <a
+href="#x1-1200009.9.1" id="QQ2-1-126">Generation</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">9.9.2 <a
+href="#x1-1210009.9.2" id="QQ2-1-127">Consolidation</a></span>
+<br /> &#x00A0;<span class="subsectionToc">9.10 <a
+href="#x1-1220009.10" id="QQ2-1-128">Reporting</a></span>
+<br /> &#x00A0;<span class="subsectionToc">9.11 <a
+href="#x1-1230009.11" id="QQ2-1-129">Shipping Module: Transferring Inventory between Warehouses</a></span>
+<br /> <span class="sectionToc">10 <a
+href="#x1-12400010" id="QQ2-1-130">HR</a></span>
+<br /> <span class="sectionToc">11 <a
+href="#x1-12500011" id="QQ2-1-131">POS</a></span>
+<br /> &#x00A0;<span class="subsectionToc">11.1 <a
+href="#x1-12600011.1" id="QQ2-1-132">Sales Screen</a></span>
+<br /> &#x00A0;<span class="subsectionToc">11.2 <a
+href="#x1-12700011.2" id="QQ2-1-133">Possibilities for Data Entry</a></span>
+<br /> &#x00A0;<span class="subsectionToc">11.3 <a
+href="#x1-12800011.3" id="QQ2-1-134">Hardware Support</a></span>
+<br /> &#x00A0;<span class="subsectionToc">11.4 <a
+href="#x1-12900011.4" id="QQ2-1-135">Reports</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">11.4.1 <a
+href="#x1-13000011.4.1" id="QQ2-1-136">Open Invoices</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">11.4.2 <a
+href="#x1-13100011.4.2" id="QQ2-1-137">Receipts</a></span>
+<br /> <span class="sectionToc">12 <a
+href="#x1-13200012" id="QQ2-1-138">General Ledger</a></span>
+
+
+<br /> &#x00A0;<span class="subsectionToc">12.1 <a
+href="#x1-13300012.1" id="QQ2-1-139">GL Basics</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">12.1.1 <a
+href="#x1-13400012.1.1" id="QQ2-1-140">Paper-based accounting systems and the GL</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">12.1.2 <a
+href="#x1-13500012.1.2" id="QQ2-1-141">Double Entry Examples on Paper</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">12.1.3 <a
+href="#x1-13600012.1.3" id="QQ2-1-142">The GL in Ledger-SMB</a></span>
+<br /> &#x00A0;<span class="subsectionToc">12.2 <a
+href="#x1-13700012.2" id="QQ2-1-143">Cash Transfer</a></span>
+<br /> &#x00A0;<span class="subsectionToc">12.3 <a
+href="#x1-13800012.3" id="QQ2-1-144">GL Transactions</a></span>
+<br /> &#x00A0;<span class="subsectionToc">12.4 <a
+href="#x1-13900012.4" id="QQ2-1-145">Payroll as a GL transaction</a></span>
+<br /> &#x00A0;<span class="subsectionToc">12.5 <a
+href="#x1-14000012.5" id="QQ2-1-147">Reconciliation</a></span>
+<br /> &#x00A0;<span class="subsectionToc">12.6 <a
+href="#x1-14100012.6" id="QQ2-1-148">Reports</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">12.6.1 <a
+href="#x1-14200012.6.1" id="QQ2-1-149">GL as access to almost everything else</a></span>
+<br /> <span class="sectionToc">13 <a
+href="#x1-14300013" id="QQ2-1-150">Recurring Transactions</a></span>
+<br /> <span class="sectionToc">14 <a
+href="#x1-14400014" id="QQ2-1-151">Financial Statements and Reports</a></span>
+<br /> &#x00A0;<span class="subsectionToc">14.1 <a
+href="#x1-14500014.1" id="QQ2-1-152">Cash v. Accrual Basis</a></span>
+<br /> &#x00A0;<span class="subsectionToc">14.2 <a
+href="#x1-14600014.2" id="QQ2-1-153">Viewing the Chart of Accounts and Transactions</a></span>
+<br /> &#x00A0;<span class="subsectionToc">14.3 <a
+href="#x1-14700014.3" id="QQ2-1-154">Trial Balance</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">14.3.1 <a
+href="#x1-14800014.3.1" id="QQ2-1-155">The Paper-based function of a Trial Balance</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">14.3.2 <a
+href="#x1-14900014.3.2" id="QQ2-1-156">Running the Trial Balance Report</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">14.3.3 <a
+href="#x1-15000014.3.3" id="QQ2-1-157">What if the Trial Balance doesn&#8217;t Balance?</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">14.3.4 <a
+href="#x1-15100014.3.4" id="QQ2-1-158">Trial Balance as a Summary of Account Activity</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">14.3.5 <a
+href="#x1-15200014.3.5" id="QQ2-1-159">Trial Balance as a Budget Planning Tool</a></span>
+<br /> &#x00A0;<span class="subsectionToc">14.4 <a
+href="#x1-15300014.4" id="QQ2-1-160">Income Statement</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">14.4.1 <a
+href="#x1-15400014.4.1" id="QQ2-1-161">Uses of an Income Statement</a></span>
+<br /> &#x00A0;<span class="subsectionToc">14.5 <a
+href="#x1-15500014.5" id="QQ2-1-162">Balance Sheet</a></span>
+<br /> &#x00A0;<span class="subsectionToc">14.6 <a
+href="#x1-15600014.6" id="QQ2-1-163">What if the Balance Sheet doesn&#8217;t balance?</a></span>
+<br /> &#x00A0;<span class="subsectionToc">14.7 <a
+href="#x1-15700014.7" id="QQ2-1-164">No Statement of Owner Equity?</a></span>
+<br /> <span class="sectionToc">15 <a
+href="#x1-15800015" id="QQ2-1-165">The Template System</a></span>
+<br /> &#x00A0;<span class="subsectionToc">15.1 <a
+href="#x1-15900015.1" id="QQ2-1-166">Text Templates</a></span>
+<br /> &#x00A0;<span class="subsectionToc">15.2 <a
+href="#x1-16000015.2" id="QQ2-1-167">HTML Templates</a></span>
+<br /> &#x00A0;<span class="subsectionToc">15.3 <a
+href="#x1-16100015.3" id="QQ2-1-168"><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span> Templates</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">15.3.1 <a
+href="#x1-16200015.3.1" id="QQ2-1-169">What is <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span> ?</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">15.3.2 <a
+href="#x1-16300015.3.2" id="QQ2-1-170">Using LY X to Edit <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span> Templates</a></span>
+<br /> &#x00A0;<span class="subsectionToc">15.4 <a
+href="#x1-16400015.4" id="QQ2-1-171">Customizing Logos</a></span>
+<br /> &#x00A0;<span class="subsectionToc">15.5 <a
+href="#x1-16500015.5" id="QQ2-1-172">How are They Stored in the Filesystem?</a></span>
+<br /> &#x00A0;<span class="subsectionToc">15.6 <a
+href="#x1-16600015.6" id="QQ2-1-173">Upgrade Issues</a></span>
+<br /> <span class="sectionToc">16 <a
+href="#x1-16700016" id="QQ2-1-174">An Introduction to the CLI</a></span>
+<br /> &#x00A0;<span class="subsectionToc">16.1 <a
+href="#x1-16800016.1" id="QQ2-1-175">Conventions</a></span>
+<br /> &#x00A0;<span class="subsectionToc">16.2 <a
+href="#x1-16900016.2" id="QQ2-1-176">Preliminaries</a></span>
+<br /> &#x00A0;<span class="subsectionToc">16.3 <a
+href="#x1-17000016.3" id="QQ2-1-177">First Script: lsmb01-cli-example.sh</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">16.3.1 <a
+href="#x1-17100016.3.1" id="QQ2-1-178">Script 1 (Bash)</a></span>
+<br /> &#x00A0;<span class="subsectionToc">16.4 <a
+href="#x1-17200016.4" id="QQ2-1-179">Second Script: lsmb02-cli-example.pl</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">16.4.1 <a
+href="#x1-17300016.4.1" id="QQ2-1-180">Script 2 (Perl)</a></span>
+<br /> <span class="partToc">II&#x00A0;&#x00A0;<a
+href="#x1-174000II" id="QQ2-1-181">Technical Overview</a></span>
+<br /> <span class="sectionToc">17 <a
+href="#x1-17500017" id="QQ2-1-182">Basic Architecture</a></span>
+<br /> &#x00A0;<span class="subsectionToc">17.1 <a
+href="#x1-17600017.1" id="QQ2-1-183">The Software Stack</a></span>
+<br /> &#x00A0;<span class="subsectionToc">17.2 <a
+href="#x1-17700017.2" id="QQ2-1-185">Capacity Planning</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">17.2.1 <a
+href="#x1-17800017.2.1" id="QQ2-1-186">Scalability Strategies</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">17.2.2 <a
+href="#x1-17900017.2.2" id="QQ2-1-187">Database Maintenance</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">17.2.3 <a
+href="#x1-18000017.2.3" id="QQ2-1-188">Known issues</a></span>
+<br /> <span class="sectionToc">18 <a
+href="#x1-18100018" id="QQ2-1-189">Customization Possibilities</a></span>
+<br /> &#x00A0;<span class="subsectionToc">18.1 <a
+href="#x1-18200018.1" id="QQ2-1-190">Brief Guide to the Source Code</a></span>
+<br /> &#x00A0;<span class="subsectionToc">18.2 <a
+href="#x1-18300018.2" id="QQ2-1-191">Data Entry Screens</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">18.2.1 <a
+href="#x1-18400018.2.1" id="QQ2-1-192">Examples</a></span>
+
+
+<br /> &#x00A0;<span class="subsectionToc">18.3 <a
+href="#x1-18500018.3" id="QQ2-1-193">Extensions</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">18.3.1 <a
+href="#x1-18600018.3.1" id="QQ2-1-194">Examples</a></span>
+<br /> &#x00A0;<span class="subsectionToc">18.4 <a
+href="#x1-18700018.4" id="QQ2-1-195">Templates</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">18.4.1 <a
+href="#x1-18800018.4.1" id="QQ2-1-196">Examples</a></span>
+<br /> &#x00A0;<span class="subsectionToc">18.5 <a
+href="#x1-18900018.5" id="QQ2-1-197">Reports</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">18.5.1 <a
+href="#x1-19000018.5.1" id="QQ2-1-198">Examples</a></span>
+<br /> <span class="sectionToc">19 <a
+href="#x1-19100019" id="QQ2-1-199">Integration Possibilities</a></span>
+<br /> &#x00A0;<span class="subsectionToc">19.1 <a
+href="#x1-19200019.1" id="QQ2-1-200">Reporting Tools</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">19.1.1 <a
+href="#x1-19300019.1.1" id="QQ2-1-201">Examples</a></span>
+<br /> &#x00A0;<span class="subsectionToc">19.2 <a
+href="#x1-19400019.2" id="QQ2-1-202">Line of Business Tools on PostgreSQL</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">19.2.1 <a
+href="#x1-19500019.2.1" id="QQ2-1-203">Known Issues</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">19.2.2 <a
+href="#x1-19600019.2.2" id="QQ2-1-204">Strategies</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">19.2.3 <a
+href="#x1-19700019.2.3" id="QQ2-1-205">Examples</a></span>
+<br /> &#x00A0;<span class="subsectionToc">19.3 <a
+href="#x1-19800019.3" id="QQ2-1-206">Line of Business Tools on other RDBMS&#8217;s</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">19.3.1 <a
+href="#x1-19900019.3.1" id="QQ2-1-207">Strategies</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">19.3.2 <a
+href="#x1-20000019.3.2" id="QQ2-1-208">Integration Products and Open Source Projects</a></span>
+<br /> <span class="sectionToc">20 <a
+href="#x1-20100020" id="QQ2-1-209">Customization Guide</a></span>
+<br /> &#x00A0;<span class="subsectionToc">20.1 <a
+href="#x1-20200020.1" id="QQ2-1-210">General Information</a></span>
+<br /> &#x00A0;<span class="subsectionToc">20.2 <a
+href="#x1-20300020.2" id="QQ2-1-211">Customizing Templates</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">20.2.1 <a
+href="#x1-20400020.2.1" id="QQ2-1-212">Page Breaks in <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span></a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">20.2.2 <a
+href="#x1-20500020.2.2" id="QQ2-1-213">Conditionals</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">20.2.3 <a
+href="#x1-20600020.2.3" id="QQ2-1-214">Loops</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">20.2.4 <a
+href="#x1-20700020.2.4" id="QQ2-1-215">File Inclusion</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">20.2.5 <a
+href="#x1-20800020.2.5" id="QQ2-1-216">Cross-referencing and multiple passes of <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span></a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">20.2.6 <a
+href="#x1-20900020.2.6" id="QQ2-1-217">Variable Substitution</a></span>
+<br /> &#x00A0;<span class="subsectionToc">20.3 <a
+href="#x1-21000020.3" id="QQ2-1-218">Customizing Forms</a></span>
+<br /> &#x00A0;<span class="subsectionToc">20.4 <a
+href="#x1-21100020.4" id="QQ2-1-219">Customizing Modules</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc">20.4.1 <a
+href="#x1-21200020.4.1" id="QQ2-1-220">Database Access</a></span>
+<br /> &#x00A0;<span class="subsectionToc">20.5 <a
+href="#x1-21300020.5" id="QQ2-1-221">CLI Examples</a></span>
+<br /> <span class="partToc">III&#x00A0;&#x00A0;<a
+href="#x1-214000III" id="QQ2-1-222">Appendix</a></span>
+<br /> <span class="sectionToc">A <a
+href="#x1-215000A" id="QQ2-1-223">Where to Go for More Information</a></span>
+<br /> <span class="sectionToc">B <a
+href="#x1-216000B" id="QQ2-1-224">Quick Tips</a></span>
+<br /> &#x00A0;<span class="subsectionToc">B.1 <a
+href="#x1-217000B.1" id="QQ2-1-225">Understanding Shipping Addresses and Carriers</a></span>
+<br /> &#x00A0;<span class="subsectionToc">B.2 <a
+href="#x1-218000B.2" id="QQ2-1-226">Handling bad debts</a></span>
+<br /> <span class="sectionToc">C <a
+href="#x1-219000C" id="QQ2-1-227">Step by Steps for Vertical Markets</a></span>
+<br /> &#x00A0;<span class="subsectionToc">C.1 <a
+href="#x1-220000C.1" id="QQ2-1-228">Common Installation Errors</a></span>
+<br /> &#x00A0;<span class="subsectionToc">C.2 <a
+href="#x1-221000C.2" id="QQ2-1-229">Retail With Light Manufacturing</a></span>
+<br /> <span class="sectionToc">D <a
+href="#x1-222000D" id="QQ2-1-230">Glossary</a></span>
+<br /> <span class="sectionToc">E <a
+href="#x1-223000E" id="QQ2-1-231">GNU Free Documentation License</a></span>
+<br /> &#x00A0;<span class="subsectionToc"> <a
+href="#Q1-1-232">1. APPLICABILITY AND DEFINITIONS</a></span>
+<br /> &#x00A0;<span class="subsectionToc"> <a
+href="#Q1-1-233">2. VERBATIM COPYING</a></span>
+<br /> &#x00A0;<span class="subsectionToc"> <a
+href="#Q1-1-234">3. COPYING IN QUANTITY</a></span>
+<br /> &#x00A0;<span class="subsectionToc"> <a
+href="#Q1-1-235">4. MODIFICATIONS</a></span>
+<br /> &#x00A0;<span class="subsectionToc"> <a
+href="#Q1-1-236">5. COMBINING DOCUMENTS</a></span>
+<br /> &#x00A0;<span class="subsectionToc"> <a
+href="#Q1-1-237">6. COLLECTIONS OF DOCUMENTS</a></span>
+<br /> &#x00A0;<span class="subsectionToc"> <a
+href="#Q1-1-238">7. AGGREGATION WITH INDEPENDENT WORKS</a></span>
+<br /> &#x00A0;<span class="subsectionToc"> <a
+href="#Q1-1-239">8. TRANSLATION</a></span>
+<br /> &#x00A0;<span class="subsectionToc"> <a
+href="#Q1-1-240">9. TERMINATION</a></span>
+<br /> &#x00A0;<span class="subsectionToc"> <a
+href="#Q1-1-241">10. FUTURE REVISIONS OF THIS LICENSE</a></span>
+<br /> &#x00A0;<span class="subsectionToc"> <a
+href="#Q1-1-242">ADDENDUM: How to use this License for your documents</a></span>
+ </div>
+
+
+<!--l. 44--><p class="noindent">
+</p>
+ <h3 class="likesectionHead"><a
+ id="x1-2000"></a>List of Figures</h3>
+ <div class="tableofcontents"><span class="lofToc">1&#x00A0;<a
+href="#x1-1090011">Simple AR Service Invoice Workflow Example</a></span><br /><span class="lofToc">2&#x00A0;<a
+href="#x1-1100012">AR Workflow with
+Shipping</a></span><br /><span class="lofToc">3&#x00A0;<a
+href="#x1-1110013">Complex AR Workflow with Shipping</a></span><br /><span class="lofToc">4&#x00A0;<a
+href="#x1-1160014">Simple AP Workflow</a></span><br /><span class="lofToc">5&#x00A0;<a
+href="#x1-1170015">AP
+Workflow with Receiving</a></span><br /><span class="lofToc">6&#x00A0;<a
+href="#x1-1180016">Complex AP Workflow</a></span><br /><span class="lofToc">7&#x00A0;<a
+href="#x1-1390017">Payroll as a GL Transaction (Purely
+fictitious numbers)</a></span><br /><span class="lofToc">8&#x00A0;<a
+href="#x1-1760018">The Ledger-SMB software stack in a Typical Implementation</a></span><br />
+ </div>
+
+
+ <h1 class="partHead"><span class="titlemark">Part&#x00A0;I<br /></span><a
+ id="x1-3000I"></a>Ledger-SMB and Business Processes</h1>
+ <h3 class="sectionHead"><span class="titlemark">1 </span> <a
+ id="x1-40001"></a>Introduction to Ledger-SMB</h3>
+<!--l. 56--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">1.1 </span> <a
+ id="x1-50001.1"></a>Why Ledger-SMB</h4>
+<!--l. 59--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">1.1.1 </span> <a
+ id="x1-60001.1.1"></a>Advantages of Ledger-SMB</h5>
+ <ul class="itemize1">
+ <li class="itemize">Flexibility and Central Management
+ </li>
+ <li class="itemize">Accessibility over the Internet (for some users)
+ </li>
+ <li class="itemize">Relatively open data format
+ </li>
+ <li class="itemize">Integration with other tools
+ </li>
+ <li class="itemize">Excellent accounting options for Linux users
+ </li>
+ <li class="itemize">Open Source
+ </li>
+ <li class="itemize">Flexible, open framework that can be extended or modified to fit your business.
+ </li>
+ <li class="itemize">Security-conscious development community.</li></ul>
+<!--l. 73--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">1.1.2 </span> <a
+ id="x1-70001.1.2"></a>Key Features</h5>
+ <ul class="itemize1">
+ <li class="itemize">Accounts Receivable
+ <ul class="itemize2">
+ <li class="itemize">Track sales by customer
+
+
+ </li>
+ <li class="itemize">Issue Invoices, Statements, Receipts, and more
+ </li>
+ <li class="itemize">Do job costing and time entry for customer projects
+ </li>
+ <li class="itemize">Manage sales orders and quotations
+ </li>
+ <li class="itemize">Ship items from sales orders</li></ul>
+ </li>
+ <li class="itemize">Accounts Payable
+ <ul class="itemize2">
+ <li class="itemize">Track purchases and debts by vendor
+ </li>
+ <li class="itemize">Issue RFQ&#8217;s Purchase Orders, etc.
+ </li>
+ <li class="itemize">Track items received from purchase orders</li></ul>
+ </li>
+ <li class="itemize">Budgeting
+ <ul class="itemize2">
+ <li class="itemize">Track expenditures and income across multiple departments
+ </li>
+ <li class="itemize">Track all transactions across departments</li></ul>
+ </li>
+ <li class="itemize">Check Printing
+ <ul class="itemize2">
+ <li class="itemize">Customize template for any check form</li></ul>
+ </li>
+ <li class="itemize">General Ledger
+ </li>
+ <li class="itemize">Inventory Management
+ <ul class="itemize2">
+ <li class="itemize">Track sales and orders of parts
+ </li>
+ <li class="itemize">Track cost of goods sold using First In/First Out method
+ </li>
+ <li class="itemize">List all parts below reorder point
+ </li>
+ <li class="itemize">Track ordering requirements
+
+
+ </li>
+ <li class="itemize">Track, ship, receive, and transfer parts to and from multiple warehouses</li></ul>
+ </li>
+ <li class="itemize">Localization
+ <ul class="itemize2">
+ <li class="itemize">Provide Localized Translations for Part Descriptions
+ </li>
+ <li class="itemize">Provide Localized Templates for Invoices, Orders, Checks, and more
+ </li>
+ <li class="itemize">Select language per customer, invoice, order, etc.</li></ul>
+ </li>
+ <li class="itemize">Manufacturing
+ <ul class="itemize2">
+ <li class="itemize">Track cost of goods sold for manufactured goods (assemblies)
+ </li>
+ <li class="itemize">Create assemblies and stock assemblies, tracking materials on hand</li></ul>
+ </li>
+ <li class="itemize">Multi-company/Multiuser
+ <ul class="itemize2">
+ <li class="itemize">One isolated database per company
+ </li>
+ <li class="itemize">Users can have localized systems independent of company data set</li></ul>
+ </li>
+ <li class="itemize">Point of Sale
+ <ul class="itemize2">
+ <li class="itemize">Run multiple cash registers against main Ledger-SMB installation
+ </li>
+ <li class="itemize">Suitable for retail stores and more
+ </li>
+ <li class="itemize">Credit card processing via TrustCommerce
+ </li>
+ <li class="itemize">Supports some POS hardware out of the box including:
+ <ul class="itemize3">
+ <li class="itemize">Logic Controls PD3000 pole displays (serial or parallel)
+ </li>
+ <li class="itemize">Basic text-based receipt printers
+ </li>
+ <li class="itemize">Keyboard wedge barcode scanners
+
+
+ </li>
+ <li class="itemize">Keyboard wedge magnetic card readers
+ </li>
+ <li class="itemize">Printer-attached cash drawers</li></ul>
+ </li></ul>
+ </li>
+ <li class="itemize">Price Matrix
+ <ul class="itemize2">
+ <li class="itemize">Track different prices for vendors and customers across the board
+ </li>
+ <li class="itemize">Provide discounts to groups of customers per item or across the board
+ </li>
+ <li class="itemize">Store vendors&#8217; prices independent of the other last cost in the parts record</li></ul>
+ </li>
+ <li class="itemize">Reporting
+ <ul class="itemize2">
+ <li class="itemize">Supports all basic financial statements
+ </li>
+ <li class="itemize">Easily display customer history, sales data, and additional information
+ </li>
+ <li class="itemize">Open framework allows for ODBC connections to be used to generate reports using third
+ party reporting tools.</li></ul>
+ </li>
+ <li class="itemize">Tax
+ <ul class="itemize2">
+ <li class="itemize">Supports Retail Sales Tax and Value Added Tax type systems
+ </li>
+ <li class="itemize">Flexible framework allows one to customize reports to change the tax reporting framework
+ to meet any local requirement.</li></ul>
+ </li></ul>
+<!--l. 173--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">1.2 </span> <a
+ id="x1-80001.2"></a>Limitations of Ledger-SMB</h4>
+ <ul class="itemize1">
+ <li class="itemize">No payroll module (Payroll must be done manually)
+ </li>
+ <li class="itemize">Some integration limitations
+
+
+ </li>
+ <li class="itemize">Further development/maintenance requires a knowledge of a relatively broad range of
+ technologies</li></ul>
+<!--l. 182--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">1.3 </span> <a
+ id="x1-90001.3"></a>System Requirements of Ledger-SMB</h4>
+ <ul class="itemize1">
+ <li class="itemize">PostgreSQL
+ </li>
+ <li class="itemize">A CGI-enabled Web Server (for example, Apache)
+ </li>
+ <li class="itemize">Perl 5.8.x
+ </li>
+ <li class="itemize">An operating system which supports the above software (usually Linux, though Windows,
+ MacOS X, etc. do work)
+ </li>
+ <li class="itemize"><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;(optional) is required to create PDF or Postscript invoices
+ </li>
+ <li class="itemize">The following CPAN modules:
+ <ul class="itemize2">
+ <li class="itemize">Data::Dumper
+ </li>
+ <li class="itemize">Locale::Maketext
+ </li>
+ <li class="itemize">Locale::Maketext::Lexicon
+ </li>
+ <li class="itemize">MIME::Base64
+ </li>
+ <li class="itemize">Digest::MD5
+ </li>
+ <li class="itemize">HTML::Entities
+ </li>
+ <li class="itemize">DBI
+ </li>
+ <li class="itemize">DBD::Pg
+ </li>
+ <li class="itemize">Math::BigFloat
+ </li>
+ <li class="itemize">IO::File
+
+
+ </li>
+ <li class="itemize">Encode
+ </li>
+ <li class="itemize">Locale::Country
+ </li>
+ <li class="itemize">Locale::Language
+ </li>
+ <li class="itemize">Time::Local
+ </li>
+ <li class="itemize">Cwd
+ </li>
+ <li class="itemize">Config::Std
+ </li>
+ <li class="itemize">MIME::Lite</li></ul>
+ </li></ul>
+<!--l. 214--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">2 </span> <a
+ id="x1-100002"></a>User Account and Database Administration Basics</h3>
+<!--l. 216--><p class="noindent">These functions are accessed via the admin.pl script in the installed directory of Ledger-SMB.
+</p><!--l. 220--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">2.1 </span> <a
+ id="x1-110002.1"></a>Companies and Datasets</h4>
+<!--l. 222--><p class="noindent">Ledger-SMB stores its information in locale-specific data sets. When a dataset is created, it sets various
+defaults such as currency, a basic chart of accounts setup, and so forth. Note that the default setup is for
+Canada, where the author of the software resides.
+</p><!--l. 227--><p class="indent"> Datasets are stored as PostgreSQL databases. The application is designed with the idea that each dataset
+will represent exactly one company. If a customer is working with multiple companies, he/she must create a
+dataset to for each.
+</p><!--l. 232--><p class="indent"> When creating a dataset, the application asks for both a username and a superusername. If the
+superuser&#8217;s information is not filled in, Ledger-SMB will attempt to populate an existing dataset, but if this
+information is filled in, the program will log into the PostgreSQL cluster with the superusername and
+password, create the database, and attempt to add Plpgsql to it.
+</p><!--l. 238--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">2.2 </span> <a
+ id="x1-120002.2"></a>How to Create a User</h4>
+<!--l. 240--><p class="noindent">Users are created by going to the admin.pl page and clicking on "Add User." One then fills out the form and
+when it is saved, the user is created.
+
+
+</p><!--l. 245--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">2.3 </span> <a
+ id="x1-130002.3"></a>Permissions</h4>
+<!--l. 247--><p class="noindent">The permissions system is not rigorously enforced within Ledger-SMB, in the sense that the
+permissions API is generally not used in the application itself. Instead permissions are used to
+enable/disable menu options. Setting an enforcement of such permissions would require some custom
+programming at the present time. Most organizations, however, find that the current system is
+adequate.
+</p><!--l. 254--><p class="indent"> The checkboxes which are marked enable menu entries. Those that are unchecked disable those entries on
+the menu.
+</p><!--l. 258--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">2.4 </span> <a
+ id="x1-140002.4"></a>User Account Types</h4>
+ <ul class="itemize1">
+ <li class="itemize">User is a general user of the system
+ </li>
+ <li class="itemize">Managers often are able to see a larger amount of data
+ </li>
+ <li class="itemize">Administrators have full access to the system</li></ul>
+<!--l. 266--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">2.5 </span> <a
+ id="x1-150002.5"></a>Other Features</h4>
+ <ul class="itemize1">
+ <li class="itemize">Lock System allows one to lock users out of the system while maintenance is performed. This is
+ only necessary during upgrades or maintenance which results in the RDBMS being offline.
+ </li>
+ <li class="itemize">Change Admin Password changes the administrative password.
+ </li>
+ <li class="itemize">Logout terminates the admin session.</li></ul>
+<!--l. 276--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">3 </span> <a
+ id="x1-160003"></a>Chart of Accounts</h3>
+<!--l. 278--><p class="noindent">The Chart of Accounts provides a basic overview of the logical structure of the accounting program. One can
+customize this chart to allow for tracking of different sorts of information.
+
+
+</p><!--l. 283--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">3.1 </span> <a
+ id="x1-170003.1"></a>Introduction to Double Entry Bookkeeping</h4>
+<!--l. 284--><p class="noindent">In order to set up your chart of accounts in LedgerSMB you will need to understand a bit about double entry
+bookkeeping. This section provides a brief overview of the essential concepts. There is a list of references for
+further reading at the end.
+</p><!--l. 289--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">3.1.1 </span> <a
+ id="x1-180003.1.1"></a>Business Entity</h5>
+<!--l. 290--><p class="noindent">You don&#8217;t want to mix your personal expenses and income with that of the business or you will
+not be able to tell how much money it is making (if any). For the same reason you will want
+to keep track of how much money you put into and take out of the business so you will want
+to set up a completely seperate set of records for it and treat it almost as if it had a life of its
+own.
+</p><!--l. 297--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">3.1.2 </span> <a
+ id="x1-190003.1.2"></a>Double Entry</h5>
+<!--l. 298--><p class="noindent">Examples: </p>
+ <ul class="itemize1">
+ <li class="itemize">When you buy you pay money and receive goods.
+ </li>
+ <li class="itemize">When you sell you get money and give goods.
+ </li>
+ <li class="itemize">When you borrow you get money and give a promise to pay it back.
+ </li>
+ <li class="itemize">When you lend you give money and get a promise to pay it back.
+ </li>
+ <li class="itemize">When you sell on credit you give goods and get a promise to pay.
+ </li>
+ <li class="itemize">When you buy on credit you give a promise to pay and get goods.</li></ul>
+<!--l. 308--><p class="indent"> You need to record both sides of each transaction: thus double entry. Furthermore, you want to organize
+your entries, recording those having to do with money in one place, value of goods bought and sold in
+another, money owed in yet another, etc. Hence you create accounts, and record each half of each transaction
+in an appropriate account. Of course, you won&#8217;t have to actually record the amount in more than one place
+yourself: the program takes care of that.
+</p><!--l. 316--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">3.1.3 </span> <a
+ id="x1-200003.1.3"></a>Accounts</h5>
+<!--l. 318--><p class="noindent">
+
+
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">Assets</span> </dt><dd
+class="description">Valuable stuff the business owns such as money and goods available for sale
+ </dd><dt class="description">
+<span
+class="pplb8t-">Liabilities</span> </dt><dd
+class="description">Debts owned by the business such as bank loans and unpaid bills
+ </dd><dt class="description">
+<span
+class="pplb8t-">Equity or Capital</span> </dt><dd
+class="description">What would be left for the owner if all the assets were converted to money and
+ all the liabilities paid off ("Share Capital" on the LedgerSMB default chart of accounts: not to be
+ confused with "Capital Assets".)
+ </dd><dt class="description">
+<span
+class="pplb8t-">Revenue</span> </dt><dd
+class="description">Income from business activity: increases Equity
+ </dd><dt class="description">
+<span
+class="pplb8t-">Expense</span> </dt><dd
+class="description">The light bill, the cost of goods sold, etc: decreases Equity</dd></dl>
+<!--l. 330--><p class="noindent">All other accounts are subdivisions of these. The relationship between the top-level accounts
+is often stated in the form of the Accounting Equation (don&#8217;t worry: you won&#8217;t have to solve
+it):
+</p><!--l. 334--><p class="indent"> Assets = Liabilities + Equity + (Revenue - Expense)
+</p><!--l. 336--><p class="indent"> You won&#8217;t actually use this equation while doing your bookkeeping, but it&#8217;s a useful tool for
+understanding how the system works.
+</p><!--l. 339--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">3.1.4 </span> <a
+ id="x1-210003.1.4"></a>Debits and Credits</h5>
+<!--l. 341--><p class="noindent">Traditional paper accounting systems used a two-column form in which all increases went in one column
+and all deceases in the other. For asset and expense accounts increases went in the left column and decreases
+in the right. For liability and capital accounts decreases went in the left column and increases in the right.
+Looking at the accounting equation we see that assets are on the left, so it is logical that asset increases would
+go on the left. Libilities, capital, and revenue are on the right so it is logical that their increase would go on
+the right. Expenses, however, are on the right, so why do their increases go on the left? Because expenses are
+subtracted from the right side of the equation and so expense increases decrease the right side of the
+equation.
+</p><!--l. 353--><p class="indent"> Entries in the left column of the traditional form are called debits, while entries on the right are called
+credits. Neither is "negative".
+</p>
+ <ul class="itemize1">
+ <li class="itemize">Debits increase assets
+ </li>
+ <li class="itemize">Debits increase expense
+ </li>
+ <li class="itemize">Credits increase liabilities
+ </li>
+ <li class="itemize">Credits increase capital
+ </li>
+ <li class="itemize">Credits increase revenue</li></ul>
+
+
+<!--l. 364--><p class="indent"> Examples:
+</p><!--l. 366--><p class="indent"> You go to the bank and make a deposit. The teller tells you that he is going to credit your
+account. This is correct: your account is money the bank owes you and so is a liability from their
+point of view. Your deposit increased this liability and so they will credit it. They will make an
+equal debit to their cash account. When you return you will debit your bank deposits account
+because you have increased that asset and credit cash on hand because you have decreased that
+one.
+</p><!--l. 375--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">3.1.5 </span> <a
+ id="x1-220003.1.5"></a>Accrual</h5>
+<!--l. 377--><p class="noindent">Early accounting systems were usually run on a cash basis. One generally did not consider money owed to
+affect the financial health of a company, so expenses posted when paid as did income.
+</p><!--l. 381--><p class="indent"> The problem with this approach is that it becomes very difficult or impossible to truly understand the
+exact nature of the financial health of a business. One cannot get the full picture of the financial health of a
+business because outstanding debts are not considered. Futhermore, this does not allow for revenue to
+be tied to cost effectively, so it becomes difficult to assess how profitable a given activity truly
+is.
+</p><!--l. 388--><p class="indent"> To solve this problem, accrual-based systems were designed. The basic principle is that income and
+expense should be posted as they are incurred, or accrued. This allows one to track income relative to
+expense for specific projects or operations, and make better decisions about which activities will help one
+maximize profitability.
+</p><!--l. 394--><p class="indent"> To show how these systems differ, imagine that you bill a customer for time and materials for a project
+you have just completed. The customer pays the bill after 30 days. In a cash based system, you would post
+the income at the time when the customer pays, while in an accrual system, the income is posted at the time
+when the project is completed.
+</p><!--l. 400--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">3.1.6 </span> <a
+ id="x1-230003.1.6"></a>References</h5>
+<!--l. 402--><p class="noindent"><span class="obeylines-h"><a
+href="http://www.accounting-and-bookkeeping-tips.com/learning-accounting/accounting-basics-credit.htm" class="url" >http://www.accounting-and-bookkeeping-tips.com/learning-accounting/accounting-basics-credit.htm</a></span>
+<br class="newline" />Discussion of debits and credits as well as links to other accounting subjects.
+<br class="newline" />
+</p><!--l. 405--><p class="noindent"><span class="obeylines-h"><a
+href="http://www.computer-consulting.com/accttips.htm" class="url" >http://www.computer-consulting.com/accttips.htm</a></span>
+<br class="newline" />Discussion of double entry bookkeeping.
+<br class="newline" />
+</p><!--l. 408--><p class="noindent"><span class="obeylines-h"><a
+href="http://www.minnesota.com/~tom/sql-ledger/howtos/" class="url" >http://www.minnesota.com/~tom/sql-ledger/howtos/</a></span>
+<br class="newline" />A short glossary, some links, and a FAQ (which makes the "credit=negative number" error). The FAQ focuses
+on SQL-Ledger, LedgerSMB&#8217;s ancestor.
+<br class="newline" />
+</p><!--l. 412--><p class="noindent"><span class="obeylines-h"><a
+href="http://bitscafe.com/pub2/etp/sql-ledger-notes#expenses" class="url" >http://bitscafe.com/pub2/etp/sql-ledger-notes#expenses</a></span>
+<br class="newline" />Some notes on using SQL-Ledger (LedgerSMB&#8217;s ancestor).
+<br class="newline" />
+</p><!--l. 415--><p class="noindent"><span class="obeylines-h"><a
+href="http://en.wikipedia.org/wiki/List_of_accounting_topics" class="url" >http://en.wikipedia.org/wiki/List_of_accounting_topics</a></span>
+<br class="newline" />Wikipedia articles on accounting.
+<br class="newline" />
+</p><!--l. 418--><p class="noindent"><span class="obeylines-h"><a
+href="http://www.bized.ac.uk/learn/accounting/financial/index.htm" class="url" >http://www.bized.ac.uk/learn/accounting/financial/index.htm</a></span>
+<br class="newline" />Basic accounting tutorial.
+<br class="newline" />
+
+
+</p><!--l. 421--><p class="noindent"><span class="obeylines-h"><a
+href="http://www.asset-analysis.com/glossary/glo_index.html" class="url" >http://www.asset-analysis.com/glossary/glo_index.html</a></span>
+<br class="newline" />Financial dictionary and glossary.
+<br class="newline" />
+</p><!--l. 424--><p class="noindent"><span class="obeylines-h"><a
+href="http://www.geocities.com/chapleaucree/educational/FinanceHandbook.html" class="url" >http://www.geocities.com/chapleaucree/educational/FinanceHandbook.html</a></span>
+<br class="newline" />Financial glossary.
+<br class="newline" />
+</p><!--l. 427--><p class="noindent"><span class="obeylines-h"><a
+href="http://www.quickmba.com/accounting/fin/" class="url" >http://www.quickmba.com/accounting/fin/</a></span>
+<br class="newline" />Explanation of fundamentals of accounting, including good discussions of debits and credits and of
+double-entry.
+</p><!--l. 432--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">3.2 </span> <a
+ id="x1-240003.2"></a>General Guidelines on Numbering Accounts</h4>
+<!--l. 434--><p class="noindent">In general, most drop-down boxes in Ledger-SMB order the accounts by account number. Therefore by
+setting appropriate account numbers, one can affect the default values.
+</p><!--l. 438--><p class="indent"> A second consideration is to try to keep things under each heading appropriate to that heading.
+Thus setting an account number for a bank loan account in the assets category is not generally
+advisable.
+</p><!--l. 443--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">3.3 </span> <a
+ id="x1-250003.3"></a>Adding/Modifying Accounts</h4>
+<!--l. 445--><p class="noindent">These features are listed under System-&#x003E;Chart of Accounts. One can list the accounts and click on the
+account number to modify them or click on the "add account" option to create new accounts.
+</p>
+ <ul class="itemize1">
+ <li class="itemize">Headings are just broad categories and do not store values themselves, while accounts are used
+ to store the transactional information.
+ </li>
+ <li class="itemize">One cannot have an account that is a summary account (like AR) and also has another function.
+ </li>
+ <li class="itemize">GIFI is mostly of interest to Canadian customers but it can be used to create reports of account
+ hierarchies.</li></ul>
+<!--l. 459--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">3.4 </span> <a
+ id="x1-260003.4"></a>Listing Account Balances and Transactions</h4>
+<!--l. 461--><p class="noindent">One can list the account balances via the Reports-&#x003E;Chart of Accounts report. Clicking on the account number
+will provide a ledger for that account.
+
+
+</p><!--l. 466--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">4 </span> <a
+ id="x1-270004"></a>Administration</h3>
+<!--l. 468--><p class="noindent">This section covers other (non-Chart of Accounts) aspects to the setup of the Ledger-SMB accounting
+package. These are generally accessed in the System submenu.
+</p><!--l. 473--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">4.1 </span> <a
+ id="x1-280004.1"></a>Taxes, Defaults, and Preferences</h4>
+<!--l. 474--><p class="noindent">One of the new features in 1.2 is the modular sales tax system and the simple sales tax module. This allows
+one to install different tax modules and then select which taxes are applied by which programming modules.
+The sales tax module has access to everything on the submitted form so it is able to make complex
+determinations on what is taxable based on arbitrary criteria.
+</p><!--l. 480--><p class="indent"> The tax rules drop-down box allows one to select any installed tax module (LedgerSMB 1.2 ships only
+with the simple module), while the ordering is an integer which allows one to specify a tax run which occurs
+on the form after any rules with lower entries in this box. This allows for compounding of sales tax (for
+example, when PST applies to the total and GST as well).
+</p><!--l. 485--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.1.1 </span> <a
+ id="x1-290004.1.1"></a>Adding A Sales Tax Account</h5>
+<!--l. 487--><p class="noindent">Sales Tax is collected on behalf of a state or national government by the individual store. Thus a sales tax
+account is a liability&#8211; it represents money owed by the business to the government.
+</p><!--l. 491--><p class="indent"> To add a sales tax account, create an account in the Chart of Accounts as a liability account, check all of
+the "tax" checkboxes, and answer the following question as "yes:"
+</p><!--l. 495--><p class="indent"> "Include this account on the customer/vendor forms to flag customer/vendor as taxable?"
+</p><!--l. 498--><p class="indent"> Once this account is created, one can set the tax amount.
+</p><!--l. 501--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.1.2 </span> <a
+ id="x1-300004.1.2"></a>Setting a Sales Tax Amount</h5>
+<!--l. 503--><p class="noindent">Go to System-&#x003E;Defaults and the tax account will be listed near the bottom of the page. The rate can be set
+there.
+</p><!--l. 507--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.1.3 </span> <a
+ id="x1-310004.1.3"></a>Default Account Setup</h5>
+<!--l. 509--><p class="noindent">These accounts are the default accounts for part creation and foreign exchange tracking.
+</p><!--l. 513--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.1.4 </span> <a
+ id="x1-320004.1.4"></a>Currency Setup</h5>
+<!--l. 515--><p class="noindent">The US accounts list this as USD:CAD:EUR. One can add other currencies in here, such as IDR (Indonesian
+Rupiah), etc. Currencies are separated by colons.
+
+
+</p><!--l. 520--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.1.5 </span> <a
+ id="x1-330004.1.5"></a>Sequence Settings</h5>
+<!--l. 522--><p class="noindent">These sequences are used to generate user identifiers for quotations, invoices, and the like. If an identifier is
+not added, the next number will be used.
+</p><!--l. 526--><p class="indent"> A common application is to set invoices, etc. to start at 1000 in order to hide the number of issued invoices
+from a customer.
+</p><!--l. 529--><p class="indent"> Leading zeros are preserved. Other special values which can be embedded using <span
+class="cmmi-10">&#x003C;</span>?lsmb ?<span
+class="cmmi-10">&#x003E; </span>tags
+include:
+</p><!--l. 532--><p class="indent">
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">DATE</span> </dt><dd
+class="description">expands to the current date
+ </dd><dt class="description">
+<span
+class="pplb8t-">YYMMDD</span> </dt><dd
+class="description">expands to a six-digit version of the date. The components of this date can be re-arranged
+ in any order, so MMDDYY, DDMMYY, or even just MMYY are all options.
+ </dd><dt class="description">
+<span
+class="pplb8t-">NAME</span> </dt><dd
+class="description">expands to the name of the customer or vendor
+ </dd><dt class="description">
+<span
+class="pplb8t-">BUSINESS</span> </dt><dd
+class="description">expands to the type of business assigned to the customer or ventor.
+ </dd><dt class="description">
+<span
+class="pplb8t-">DESCRIPTION</span> </dt><dd
+class="description">expands to the description of the part. Valid only for parts.
+ </dd><dt class="description">
+<span
+class="pplb8t-">ITEM</span> </dt><dd
+class="description">expands to the item field. Valid only for parts.
+ </dd><dt class="description">
+<span
+class="pplb8t-">PERISCOPE</span> </dt><dd
+class="description">expands to the partsgroup. Valid only for parts.
+ </dd><dt class="description">
+<span
+class="pplb8t-">PHONE</span> </dt><dd
+class="description">expands to the telephoen number for customers and vendors.</dd></dl>
+<!--l. 546--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">4.2 </span> <a
+ id="x1-340004.2"></a>Audit Control</h4>
+<!--l. 548--><p class="noindent">Auditability is a core concern of the architects of any accounting system. Such ensures that any modification
+to the accounting information leaves a trail which can be followed to determine the nature of the change.
+Audits can help ensure that the data in the accounting system is meaningful and accurate, and that no foul
+play (such as embezzlement) is occurring.
+</p><!--l. 556--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.2.1 </span> <a
+ id="x1-350004.2.1"></a>Explaining transaction reversal</h5>
+<!--l. 558--><p class="noindent">In paper accounting systems, it was necessary to have a means to authoritatively track corrections of
+mistakes. The means by which this was done was known as "transaction reversal."
+</p><!--l. 562--><p class="indent"> When a mistake would be made, one would then reverse the transaction and then enter it in correctly. For
+example, let us say that an office was renting space for $300 per month. Let us say that they inadvertently
+entered it in as a $200 expense.
+
+
+</p><!--l. 567--><p class="indent"> The original transaction would be:
+</p>
+ <div class="tabular"><table class="tabular"
+cellspacing="0" cellpadding="0" rules="groups"
+><colgroup id="TBL-2-1g"><col
+id="TBL-2-1" /></colgroup><colgroup id="TBL-2-2g"><col
+id="TBL-2-2" /></colgroup><colgroup id="TBL-2-3g"><col
+id="TBL-2-3" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-1"
+class="td11">Account </td><td style="white-space:nowrap; text-align:right;" id="TBL-2-1-2"
+class="td11">Debit</td><td style="white-space:nowrap; text-align:right;" id="TBL-2-1-3"
+class="td11">Credit</td>
+</tr><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-1"
+class="td11">5760 Rent </td><td style="white-space:nowrap; text-align:right;" id="TBL-2-2-2"
+class="td11"> $200</td><td style="white-space:nowrap; text-align:right;" id="TBL-2-2-3"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-1"
+class="td11">2100 Accounts Payable</td><td style="white-space:nowrap; text-align:right;" id="TBL-2-3-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-2-3-3"
+class="td11"> $200</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-1"
+class="td11"> </td> </tr></table>
+</div>
+<!--l. 582--><p class="indent"> The reversal would be:
+</p>
+ <div class="tabular"><table class="tabular"
+cellspacing="0" cellpadding="0" rules="groups"
+><colgroup id="TBL-3-1g"><col
+id="TBL-3-1" /></colgroup><colgroup id="TBL-3-2g"><col
+id="TBL-3-2" /></colgroup><colgroup id="TBL-3-3g"><col
+id="TBL-3-3" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-1"
+class="td11">Account </td><td style="white-space:nowrap; text-align:right;" id="TBL-3-1-2"
+class="td11">Debit</td><td style="white-space:nowrap; text-align:right;" id="TBL-3-1-3"
+class="td11">Credit</td>
+</tr><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-3-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-1"
+class="td11">5760 Rent </td><td style="white-space:nowrap; text-align:right;" id="TBL-3-2-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-3-2-3"
+class="td11"> $200</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-1"
+class="td11">2100 Accounts Payable</td><td style="white-space:nowrap; text-align:right;" id="TBL-3-3-2"
+class="td11"> $200</td><td style="white-space:nowrap; text-align:right;" id="TBL-3-3-3"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-1"
+class="td11"> </td> </tr></table>
+</div>
+<!--l. 597--><p class="indent"> This would be followed by re-entering the rent data with the correct numbers. This was meant to ensure
+that one did not erase data from the accounting books (and as such that erasing data would be a sign of foul
+play).
+</p><!--l. 602--><p class="indent"> Ledger-SMB has a capability to require such reversals if the business deems this to be necessary. When
+this option is enabled, existing transactions cannot be modified and one will need to post reversing
+transactions to void existing transactions before posting corrected ones.
+</p><!--l. 608--><p class="indent"> Most accountants prefer this means to other audit trails because it is well proven and understood by
+them.
+</p><!--l. 612--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.2.2 </span> <a
+ id="x1-360004.2.2"></a>Close books option</h5>
+<!--l. 614--><p class="noindent">You cannot alter a transaction that was entered before the closing date.
+</p><!--l. 617--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.2.3 </span> <a
+ id="x1-370004.2.3"></a>Audit Trails</h5>
+<!--l. 619--><p class="noindent">This option stores additional information in the database to help auditors trace individual transactions. The
+information stored, however, is limited and it is intended to be supplemental to other auditing
+facilities.
+</p><!--l. 624--><p class="indent"> The information added includes which table stored the record, which employee entered the
+information, which form was used, and what the action was. No direct financial information is
+included.
+</p><!--l. 629--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">4.3 </span> <a
+ id="x1-380004.3"></a>Departments</h4>
+<!--l. 631--><p class="noindent">Departments are logical divisions of a business. They allow for budgets to be prepared for the individual
+department as well as the business as a whole. This allows larger businesses to use Ledger-SMB to meet their
+needs.
+</p><!--l. 637--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.3.1 </span> <a
+ id="x1-390004.3.1"></a>Cost v Profit Centers.</h5>
+
+
+<!--l. 639--><p class="noindent">In general business units are divided into cost and profit centers. Cost centers are generally regarded as
+business units where the business expects to lose money and profit centers are where they expect to gain
+money. For example, the legal department in most companies is a cost center.
+</p><!--l. 645--><p class="indent"> One of the serious misunderstandings people run up against is that Ledger-SMB tends to more narrowly
+define cost and profit centers than most businesses do. In Ledger-SMB a cost center is any department of the
+business that does not issue AR transactions. Although many businesses may have cost centers (like
+technical support) where customer fees may subsidize the cost of providing the service, in Ledger-SMB, these
+are profit centers.
+</p><!--l. 653--><p class="indent"> Ledger-SMB will not allow cost centers to be associated with AR transactions. So if you want this
+functionality, you must create the department as a profit center.
+</p><!--l. 658--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">4.4 </span> <a
+ id="x1-400004.4"></a>Warehouses</h4>
+<!--l. 660--><p class="noindent">Ledger-SMB has the ability to track inventory by warehouse. Inventory items can be moved between
+warehouses, and shipped from any warehouse where the item is in stock. We will explore this concept more
+later.
+</p><!--l. 665--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">4.5 </span> <a
+ id="x1-410004.5"></a>Languages</h4>
+<!--l. 667--><p class="noindent">Languages allow for goods and services to be translated so that one can maintain offices in different
+countries and allow for different goods and service descriptions to be translated to different languages for
+localization purposes.
+</p><!--l. 673--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">4.6 </span> <a
+ id="x1-420004.6"></a>Types of Businesses</h4>
+<!--l. 675--><p class="noindent">One can create types of businesses and then give them discounts across the board. For example, one might
+give a firm that uses one&#8217;s services as a subcontractor a 10% discount or more.
+</p><!--l. 680--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">4.7 </span> <a
+ id="x1-430004.7"></a>Misc.</h4>
+<!--l. 683--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.7.1 </span> <a
+ id="x1-440004.7.1"></a>GIFI</h5>
+<!--l. 685--><p class="noindent">GIFI is a requirement for Canadian customers. This feature allows one to link accounts with
+Canadian tax codes to simplify the reporting process. Some European countries now use a similar
+system.
+</p><!--l. 689--><p class="indent"> People that don&#8217;t otherwise have a use for GIFI can use it to create reports which agregate accounts
+together.
+
+
+</p><!--l. 692--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.7.2 </span> <a
+ id="x1-450004.7.2"></a>SIC</h5>
+<!--l. 694--><p class="noindent">Standard Industrial Classification is a way of tracking the type of business that a vendor or customer is in.
+For example, an accountant would have an SIC of 8721 while a graphic design firm would have an SIC of
+7336. The classification is hierarchical so one could use this field for custom reporting and marketing
+purposes.
+</p><!--l. 701--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.7.3 </span> <a
+ id="x1-460004.7.3"></a>Overview of Template Editing</h5>
+<!--l. 703--><p class="noindent">The templates for invoices, orders, and the like can be edited from within Ledger-SMB. The submenus within
+the System submenu such as HTML Templates, Text Templates and <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span> templates provide access to this
+functionality.
+</p><!--l. 709--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">4.7.4 </span> <a
+ id="x1-470004.7.4"></a>Year-end</h5>
+<!--l. 711--><p class="noindent">Although the Year-end functionality in Ledger-SMB is very useful, it does not entirely make the process
+simple and painless. One must still manually enter adjustments prior to closing the books. The extent to
+which these adjustments are necessary for any given business is a matter best discussed with an
+accountant.
+</p><!--l. 717--><p class="indent"> The standard way books are normally closed at the end of the year is by moving all
+adjusted<span class="footnote-mark"><a
+href="LedgerSMB-manual2.html#fn1x0"><sup class="textsuperscript">1</sup></a></span><a
+ id="x1-47001f1"></a>
+income and expenses to an equity account usually called "Retained Earnings." Assets and liabilities are not
+moved. Equity drawing/dividend accounts are also moved, but the investment accounts are not. The
+reasoning behind this process is that one wants a permanent record of the amount invested in a business, but
+any dividends ought not to count against their recipients when new investors are brought on
+board.
+</p><!--l. 729--><p class="indent"> Ledger-SMB automatically moves all income and expense into the specified year-end/retained earnings
+account. It does not move the drawing account, and this must be done manually, nor does it automate the
+process of making adjustments.
+</p><!--l. 734--><p class="indent"> Contrary to its name, this function can close the books at any time, though this would likely be of limited
+use.
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">4.8 </span> <a
+ id="x1-480004.8"></a>Options in the ledger-smb.conf</h4>
+<!--l. 740--><p class="noindent">The ledger-smb.conf configures the software by assigning site-wide variables. Most of these should be left
+alone unless one knows what one is doing. However, on some systems some options might need to be
+changed, so all options are presented here for reference:
+</p><!--l. 745--><p class="indent">
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">templates</span> </dt><dd
+class="description">is the directory where the templates are stored.
+
+
+ </dd><dt class="description">
+<span
+class="pplb8t-">sendmail</span> </dt><dd
+class="description">is the command to use to send a message. It must read the email from standard input.
+ </dd><dt class="description">
+<span
+class="pplb8t-">language</span> </dt><dd
+class="description">allows one to set the language for the login screen and admin page.
+ </dd><dt class="description">
+<span
+class="pplb8t-">latex</span> </dt><dd
+class="description">tells Ledger-SMB whether <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span> is installed. <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span> is required for generating Postscript and
+ PDF invoices and the like.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Environmental variables</span> </dt><dd
+class="description">can be set here too. One can add paths for searching for <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>, etc.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Printers</span> </dt><dd
+class="description">section can be used to set a hash table of printers for the software. The primary example is
+ <br class="newline" /><span
+class="cmr-10">[</span>printers<span
+class="cmr-10">]</span>
+ <br class="newline" />Default = lpr
+ <br class="newline" />Color = lpr -PEpson
+ <br class="newline" />However, this can use any program that can accept print documents (in Postscript) from
+ standard input, so there are many more possibilities.</dd></dl>
+<!--l. 765--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">5 </span> <a
+ id="x1-490005"></a>Goods and Services</h3>
+<!--l. 767--><p class="noindent">The Goods and Services module will focus on the definition of goods and services and the related accounting
+concepts.
+</p><!--l. 771--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
+ id="x1-500005.1"></a>Basic Terms</h4>
+<!--l. 773--><p class="noindent">
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">COGS</span> </dt><dd
+class="description">is Cost of Goods Sold. When an item is sold, then the expense of its purchase is accrued as
+ attached to the income of the sale.
+ </dd><dt class="description">
+<span
+class="pplb8t-">List</span> </dt><dd
+class="description">Price is the recommended retail price.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Markup</span> </dt><dd
+class="description">is the percentage increase that is applied to the last cost to get the sell price.
+ </dd><dt class="description">
+<span
+class="pplb8t-">ROP</span> </dt><dd
+class="description">is re-order point. Items with fewer in stock than this will show up on short reports.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Sell</span> </dt><dd
+class="description">Price is the price at which the item is sold.</dd></dl>
+
+
+<!--l. 784--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">5.2 </span> <a
+ id="x1-510005.2"></a>The Price Matrix</h4>
+<!--l. 786--><p class="noindent">It is possible to set different prices for different groups of customers, or for different customers individually.
+Similarly, one can track different prices from different vendors along with the required lead time for an
+order.
+</p><!--l. 792--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">5.3 </span> <a
+ id="x1-520005.3"></a>Pricegroups</h4>
+<!--l. 794--><p class="noindent">Pricegroups are used to help determine the discount a given customer may have.
+</p><!--l. 798--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">5.4 </span> <a
+ id="x1-530005.4"></a>Groups</h4>
+<!--l. 800--><p class="noindent">Groups represent a way of categorizing POS items for a touchscreen environment. It is not fully functional
+yet, but is sufficient that with some stylesheet changes, it could be made to work.
+</p><!--l. 805--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">5.5 </span> <a
+ id="x1-540005.5"></a>Labor/Overhead</h4>
+<!--l. 807--><p class="noindent">Labor/overhead is usually used for tracking manufacturing expenses. It is not directly billed to a customer. It
+is associated with an expense/Cost of Goods Sold (COGS) account.
+</p><!--l. 812--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">5.6 </span> <a
+ id="x1-550005.6"></a>Services</h4>
+<!--l. 814--><p class="noindent">Services include any labor that is billed directly to the customer. It is associated with an expense/COGS
+account and an income account. Services can be associated with sales tax.
+</p><!--l. 819--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">5.6.1 </span> <a
+ id="x1-560005.6.1"></a>Shipping and Handling as a Service</h5>
+<!--l. 821--><p class="noindent">One approach to dealing with shipping and handling is to add it as a service. Create a service called
+&#8220;Shipping and Handling&#8221;, with a sell price $1 per unit, and a 0% markup. Bill it as $1 per unit. This allows
+one to add the exact amount of shipping and handling as necessary.
+</p><!--l. 828--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">5.7 </span> <a
+ id="x1-570005.7"></a>Parts</h4>
+<!--l. 830--><p class="noindent">A part is any single item you might purchase and either might resell or use in manufacturing an assembly. It
+is linked to an expense/COGS account, an income account, and an inventory account. Parts can be associated
+with sales tax.
+
+
+</p><!--l. 836--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">5.8 </span> <a
+ id="x1-580005.8"></a>Assemblies and Manufacturing</h4>
+<!--l. 838--><p class="noindent">Manufacturers order parts but they sell the products of their efforts. Ledger-SMB supports manufacturing
+using the concept of assemblies. An assembly is any product which is manufactured on site. It consists of a
+selection of parts, services, and/or labor and overhead. Assemblies are treated as parts in most other
+regards.
+</p><!--l. 844--><p class="indent"> However, one cannot order assemblies from vendors. One must instead order the components and stock
+them once they are manufactured.
+</p><!--l. 848--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">5.8.1 </span> <a
+ id="x1-590005.8.1"></a>Stocking Assemblies</h5>
+<!--l. 850--><p class="noindent">One stocks assemblies in the Stock Assembly entry on the Goods and Services submenu. When an assembly
+is stocked the inventory is adjusted properly.
+</p><!--l. 854--><p class="indent"> The Check Inventory option will cause Ledger-SMB to refuse to stock an assembly if the inventory
+required to produce the assembly would drop the part below the reorder point.
+</p><!--l. 859--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">5.9 </span> <a
+ id="x1-600005.9"></a>Reporting</h4>
+<!--l. 862--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">5.9.1 </span> <a
+ id="x1-610005.9.1"></a>All Items and Parts Reports</h5>
+<!--l. 864--><p class="noindent">The All Items report provides a unified view of assemblies, parts, services, and labor for the company, while
+the Parts report confines it to parts.
+</p><!--l. 867--><p class="indent"> Types of reports are:
+</p><!--l. 869--><p class="indent">
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">Active</span> </dt><dd
+class="description">lists all items not marked as obsolete.
+ </dd><dt class="description">
+<span
+class="pplb8t-">On</span> </dt><dd
+class="description">Hand lists current inventory .
+ </dd><dt class="description">
+<span
+class="pplb8t-">Short</span> </dt><dd
+class="description">Lists all items which are stocked below their ROP.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Obsolete</span> </dt><dd
+class="description">Lists all items which are marked as obsolete.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Orphaned</span> </dt><dd
+class="description">Lists all items which have never had a transaction associated with them.</dd></dl>
+<!--l. 877--><p class="noindent">One can also list these goods by invoice, order, or quotation.
+</p><!--l. 879--><p class="indent"> For best results, it is a good idea to enter some AR and AP data before running these reports.
+
+
+</p><!--l. 883--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">5.9.2 </span> <a
+ id="x1-620005.9.2"></a>Requirements</h5>
+<!--l. 885--><p class="noindent">This report is designed to assist managers determine the quantities of goods to order and/or stock. It
+compares the quantity on hand with the activity in a given time frame and provides a list of goods which
+need to be ordered and the relevant quantity.
+</p><!--l. 891--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">5.9.3 </span> <a
+ id="x1-630005.9.3"></a>Services and Labor</h5>
+<!--l. 893--><p class="noindent">This is similar to the Parts and All Items menu but only supports Active, Obsolete, and Orphaned
+reports.
+</p><!--l. 897--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">5.9.4 </span> <a
+ id="x1-640005.9.4"></a>Assemblies</h5>
+<!--l. 899--><p class="noindent">This is similar to the Parts and All Items reports but it also provides an ability to list individual items in the
+assemblies as well.
+</p><!--l. 902--><p class="indent"> AP Invoices, Purchase Orders, and RFQ&#8217;s are not available on this report.
+</p><!--l. 906--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">5.9.5 </span> <a
+ id="x1-650005.9.5"></a>Groups and Pricegroups</h5>
+<!--l. 908--><p class="noindent">These reports provide a simple interface for locating groups and pricegroups. The report types are similar to
+what they are for services.
+</p><!--l. 912--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">5.10 </span> <a
+ id="x1-660005.10"></a>Translations</h4>
+<!--l. 914--><p class="noindent">One can add translations so that they show up in the customer&#8217;s native language in the issued
+invoice.
+</p><!--l. 917--><p class="indent"> To issue translations, one must have languages defined. One can then add translations to descriptions and
+part groups.
+</p><!--l. 921--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">5.11 </span> <a
+ id="x1-670005.11"></a>How Cost of Goods Sold is tracked</h4>
+<!--l. 923--><p class="noindent">Cost of Goods Sold is tracked on a First-In, First-out (FIFO) basis. When a part is purchased, its cost is
+recorded in the database. The cost of the item is then added to the inventory asset account. When the good is
+sold, the cost of the item is moved to the cost of goods sold account.
+</p><!--l. 929--><p class="indent"> This means that one must actually provide invoices for all goods entered at their actual cost. If one enters
+in $0 for the cost, the cost of goods sold will also be $0 when the item is sold. We will cover this entire process
+in more depth after we cover the AP and AR units below.
+
+
+</p><!--l. 936--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">6 </span> <a
+ id="x1-680006"></a>AP</h3>
+<!--l. 939--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">6.1 </span> <a
+ id="x1-690006.1"></a>Basic AP Concepts</h4>
+<!--l. 941--><p class="noindent">The Accounts Payable module tracks all financial commitments that the company makes to other businesses.
+This includes rent, utilities, etc. as well as orders of goods and services.
+</p><!--l. 946--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">6.2 </span> <a
+ id="x1-700006.2"></a>Vendors</h4>
+<!--l. 948--><p class="noindent">A vendor is any business that the company agrees to pay money to.
+</p><!--l. 950--><p class="indent"> One can enter vendor information under AP-&#x003E;Vendors-&#x003E;Add Vendor. The vendor list can be searched
+under AP-&#x003E;Vendors-&#x003E;Reports-&#x003E;Search.
+</p><!--l. 954--><p class="indent"> Enter start and end-dates for each vendor. This will make searches and drop-down boxes faster when
+some vendors are no longer actively supporting your company.
+</p><!--l. 958--><p class="indent"> A few fields that need explanation are:
+</p><!--l. 960--><p class="indent">
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">BIC</span> </dt><dd
+class="description">Bank Identifier Code is often the same as the S.W.I.F.T. code. This is a code for the bank a
+ customer uses for automated money transfers.
+ </dd><dt class="description">
+<span
+class="pplb8t-">IBAN</span> </dt><dd
+class="description">International Bank Account Number is related to the BIC and is used for cross-border
+ automated money transfers.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Terms</span> </dt><dd
+class="description">is the number of days one has to pay the invoice.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Vendor</span> </dt><dd
+class="description">Number is automatically generated.</dd></dl>
+<!--l. 970--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">6.3 </span> <a
+ id="x1-710006.3"></a>AP Transactions</h4>
+<!--l. 972--><p class="noindent">AP Transactions are generally used for items other than goods and services. Utilities, rent, travel expenses,
+etc. could be entered in as an AP transaction.
+</p><!--l. 976--><p class="indent"> If the item is paid partially or in full when the transaction is entered, one can add payments to the
+payment section.
+</p><!--l. 979--><p class="indent"> All other payments can and should be entered under cash payment (below).
+</p><!--l. 981--><p class="indent"> The PO Number and Order Number fields are generally used to track associations with purchase orders
+sent to vendors, etc. These fields can be helpful for adding misc. expenses to orders for reporting
+purposes.
+</p><!--l. 985--><p class="indent"> The department drop-down box appears when one has created one or more departments. A
+transaction is not required to be associated with a department, but one can use this feature for budget
+tracking.
+
+
+</p><!--l. 989--><p class="indent"> With AP Transactions, there is no option for internal notes. All notes will appear on any printed version of
+the transaction.
+</p><!--l. 992--><p class="indent"> Note: Printing a transaction does not post it. No data is committed until the invoice is posted.
+</p><!--l. 996--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">6.4 </span> <a
+ id="x1-720006.4"></a>AP Invoices</h4>
+<!--l. 998--><p class="noindent">AP Invoices are used to enter in the receipt of goods and services. Goods and services are deemed entered
+into the inventory when they are invoiced.
+</p><!--l. 1002--><p class="indent"> This screen is reasonably similar to the AP Transaction Screen, though the part entry section is a bit
+different.
+</p><!--l. 1005--><p class="indent"> The AP Invoice section has a capacity to separate internal notes from notes printed on the invoice. Note,
+however, that since these are received invoices, it is rare that one needs this ability.
+</p><!--l. 1009--><p class="indent"> Note that Ledger-SMB can search for partial part numbers or descriptions.
+</p><!--l. 1011--><p class="indent"> Also if you have a group you can use this to select the part.
+</p><!--l. 1013--><p class="indent"> To remove a line item from an invoice or order, delete the partnumber and click update.
+</p><!--l. 1017--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">6.4.1 </span> <a
+ id="x1-730006.4.1"></a>Correcting an AP Invoice</h5>
+<!--l. 1019--><p class="noindent">If an invoice is entered improperly, the methods used to correct it will vary depending on whether
+transaction reversal is enforced or not. If transaction reversal is not enforced, one can simply correct the
+invoice or transaction and repost. Note, however, that this violates generally accepted accounting
+principles.
+</p><!--l. 1025--><p class="indent"> If transaction reversal is in effect, one needs to create a duplicate invoice with exactly opposite values
+entered. If one part was listed as received, then one should enter a negative one for the quantity. Then one
+can enter the invoice number as the same as the old one. Add an R to the end to show that it is a reversing
+transaction. Once this is posted, one can enter the invoice correctly.
+</p><!--l. 1033--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">6.5 </span> <a
+ id="x1-740006.5"></a>Cash payment And Check Printing</h4>
+<!--l. 1035--><p class="noindent">It is a bad idea to repost invoices/transactions just to enter a payment. The Cash-&#x003E;Payment window allows
+one to enter payments against AP invoices or transactions.
+</p><!--l. 1039--><p class="indent"> The printing capability can be used to print checks. The default template is NEBS 9085, though you can
+use 9082 as well (as Quickbooks does).
+</p><!--l. 1042--><p class="indent"> The source field is used to store an identifying number of the source document, such as the check
+number. One must select the item to have it paid, and then enter the amount. One can then print a
+check.
+</p><!--l. 1047--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">6.5.1 </span> <a
+ id="x1-750006.5.1"></a>Rapid Payment Entry Screen</h5>
+<!--l. 1049--><p class="noindent">One can also use the rapid payment entry screen to print multiple checks. However, this does not allow you
+to print the multiple checks to the screen as a separate document is created for each check. In this event, one
+must print directly to a printer as postscript.
+
+
+</p><!--l. 1055--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">6.6 </span> <a
+ id="x1-760006.6"></a>Transaction/Invoice Reporting</h4>
+<!--l. 1058--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">6.6.1 </span> <a
+ id="x1-770006.6.1"></a>Transactions Report</h5>
+<!--l. 1060--><p class="noindent">This report is designed to help you locate AP transactions based on various criteria. One can
+search by vendor, invoice number, department, and the like. One can even search by the shipping
+method.
+</p><!--l. 1064--><p class="indent"> The summary button will show what was placed where, while the details button will show all debits and
+credits associated with the transaction.
+</p><!--l. 1067--><p class="indent"> To view the invoice, click on the invoice number. In the detail view, to view the account transactions as a
+whole, click on the account number.
+</p><!--l. 1071--><p class="indent"> Open invoices are ones not fully paid off, while closed invoices are those that have been
+paid.
+</p><!--l. 1075--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">6.6.2 </span> <a
+ id="x1-780006.6.2"></a>Outstanding Report</h5>
+<!--l. 1077--><p class="noindent">The outstanding report is designed to help you locate AP transactions that are not paid yet. The
+ID field is mostly useful for locating the specific database record if a duplicate invoice number
+exists.
+</p><!--l. 1082--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">6.6.3 </span> <a
+ id="x1-790006.6.3"></a>AP Aging Report</h5>
+<!--l. 1084--><p class="noindent">This report can tell you how many invoices are past due and by how much.
+</p><!--l. 1087--><p class="indent"> A summary report just shows vendors while a detail report shows individual invoices.
+</p><!--l. 1091--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">6.6.4 </span> <a
+ id="x1-800006.6.4"></a>Tax Paid and Non-taxable Report</h5>
+<!--l. 1093--><p class="noindent">These reports have known issues. It is better to use the GL reports and filter accordingly.
+</p><!--l. 1096--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">6.7 </span> <a
+ id="x1-810006.7"></a>Vendor Reporting</h4>
+<!--l. 1099--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">6.7.1 </span> <a
+ id="x1-820006.7.1"></a>Vendor Search</h5>
+<!--l. 1101--><p class="noindent">The Vendor Search screen can be used to locate vendors or AP transactions associated with those
+vendors.
+
+
+</p><!--l. 1104--><p class="indent"> The basic types of reports are:
+</p><!--l. 1106--><p class="indent">
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">All</span> </dt><dd
+class="description">Lists all vendors
+ </dd><dt class="description">
+<span
+class="pplb8t-">Active</span> </dt><dd
+class="description">Lists those vendors currently active
+ </dd><dt class="description">
+<span
+class="pplb8t-">Inactive</span> </dt><dd
+class="description">Lists those vendors who are currently inactive. time frame.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Orphaned</span> </dt><dd
+class="description">Lists those vendors who do not have transactions associated with them. These vendors
+ can be deleted.</dd></dl>
+<!--l. 1114--><p class="noindent">One can include purchase orders, Requests for Quotations, AP invoices, and AP transactions on this report as
+well if they occur between the from and to dates.
+</p><!--l. 1119--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">6.7.2 </span> <a
+ id="x1-830006.7.2"></a>Vendor History</h5>
+<!--l. 1121--><p class="noindent">This report can be used to obtain information about the past goods and services ordered or received from
+vendors. One can find quantities, partnumber, and sell prices on this report. This facility can be used to
+search RFQ&#8217;s, Purchase Orders, and AP Invoices.
+</p><!--l. 1127--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">7 </span> <a
+ id="x1-840007"></a>AR</h3>
+<!--l. 1130--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">7.1 </span> <a
+ id="x1-850007.1"></a>Customers</h4>
+<!--l. 1132--><p class="noindent">Customers are entered in using the AR-&#x003E;Customers-&#x003E;Add Customer menu.
+</p><!--l. 1135--><p class="indent"> The salesperson is autopopulated with the current user who is logged in. Otherwise, it looks fairly similar
+to the Vendor input screen. Customers, like vendors can be assigned languages, but it is more important to
+do so because invoices will be printed and sent to them.
+</p><!--l. 1140--><p class="indent"> The credit limit field can be used to assign an amount that one is willing to do for a customer on
+credit.
+</p><!--l. 1144--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">7.1.1 </span> <a
+ id="x1-860007.1.1"></a>Customer Price Matrix</h5>
+<!--l. 1146--><p class="noindent">The price list button can be used to enter specific discounts to the customer, and groups of customers can be
+assigned a pricegroup for the purpose of offering specific discounts on specific parts to the customer. Such
+discounts can be temporary or permanent.
+
+
+</p><!--l. 1152--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">7.2 </span> <a
+ id="x1-870007.2"></a>AR Transactions</h4>
+<!--l. 1154--><p class="noindent">AR Transactions are where one can add moneys owed the business by customers. One can associate these
+transactions with income accounts, and add payments if the item is paid when the invoice is
+issued.
+</p><!--l. 1158--><p class="indent"> The PO number field is used to track the PO that the customer sent. This makes it easier to find items
+when a customer is asking for clarification on a bill, for example.
+</p><!--l. 1163--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">7.3 </span> <a
+ id="x1-880007.3"></a>AR Invoices</h4>
+<!--l. 1165--><p class="noindent">AR Invoices are designed to provide for the delivery of goods and services to customers. One would
+normally issue these invoices at the time when the everything has been done that is necessary to get paid by
+the customer.
+</p><!--l. 1170--><p class="indent"> As with AP invoices, one can search for matches to partial part numbers and descriptions, and enter
+initial payments at this screen.
+</p><!--l. 1174--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">7.4 </span> <a
+ id="x1-890007.4"></a>Cash Receipt</h4>
+<!--l. 1176--><p class="noindent">The Cash-&#x003E;Receipt screen allows you to accept prepayments from customers or pay single or multiple
+invoices after they have been posted. One can print a receipt, however the current templates seem to be
+based on check printing templates and so are unsuitable for this purpose. This presents a great opportunity
+for improvement.
+</p><!--l. 1183--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">7.4.1 </span> <a
+ id="x1-900007.4.1"></a>Cash Receipts for multiple customers</h5>
+<!--l. 1185--><p class="noindent">The cash-&#x003E;receipts screen allows you to accept payments on all open customer invoices of all
+customers at once. One could print (directly to a printer only) all receipts to be sent out if this was
+desired.
+</p><!--l. 1191--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">7.5 </span> <a
+ id="x1-910007.5"></a>AR Transaction Reporting</h4>
+<!--l. 1193--><p class="noindent">The AR Outstanding report is almost identical to the AP Outstanding report and is not covered in any detail
+in this document.
+</p><!--l. 1197--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">7.5.1 </span> <a
+ id="x1-920007.5.1"></a>AR Transactions Report</h5>
+<!--l. 1199--><p class="noindent">This is almost identical to the AP Transactions Report.
+</p><!--l. 1201--><p class="indent"> If a customer&#8217;s PO has been associated with this transaction, one can search under this field as
+well.
+
+
+</p><!--l. 1205--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">7.5.2 </span> <a
+ id="x1-930007.5.2"></a>AR Aging Report</h5>
+<!--l. 1207--><p class="noindent">This report is almost identical to the AP Aging report, with the exception that one can print up statements for
+customer accounts that are overdue. One more application is to calculate interest based on balance owed so
+that these can be entered as AR transactions associated with the customer.
+</p><!--l. 1214--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">7.6 </span> <a
+ id="x1-940007.6"></a>Customer Reporting</h4>
+<!--l. 1216--><p class="noindent">These reports are almost identical to the AP Vendor reports and are not discussed in these notes.
+</p><!--l. 1220--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">8 </span> <a
+ id="x1-950008"></a>Projects</h3>
+<!--l. 1223--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">8.1 </span> <a
+ id="x1-960008.1"></a>Project Basics</h4>
+<!--l. 1225--><p class="noindent">A project is a logical collection of AR and AP transactions, orders, and the like that allow one to better
+manage specific service or product offerings. Ledger-SMB does not offer comprehensive project management
+capabilities, and projects are only used here as they relate to accounting.
+</p><!--l. 1230--><p class="indent"> One can also add translated descriptions to the project names as well.
+</p><!--l. 1233--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">8.2 </span> <a
+ id="x1-970008.2"></a>Timecards</h4>
+<!--l. 1235--><p class="noindent">Timecards allow one to track time entered on specific services. These can then be used to generate invoices
+for the time entered.
+</p><!--l. 1238--><p class="indent"> The non-chargeable is the number of hours that are not billed on the invoice.
+</p><!--l. 1241--><p class="indent"> One can then generate invoices based on this information.
+</p><!--l. 1243--><p class="indent"> The project field is not optional.
+</p><!--l. 1246--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">8.3 </span> <a
+ id="x1-980008.3"></a>Projects and Invoices</h4>
+<!--l. 1248--><p class="noindent">One can select the project id for line items of both AR and AP invoices. These will then be tracked against the
+project itself.
+
+
+</p><!--l. 1252--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">8.4 </span> <a
+ id="x1-990008.4"></a>Reporting</h4>
+<!--l. 1255--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">8.4.1 </span> <a
+ id="x1-1000008.4.1"></a>Timecard Reporting</h5>
+<!--l. 1257--><p class="noindent">The Timecard Report allows one to search for timecards associated with one or more projects. One can then
+use the total time in issuing invoices (this is not automated yet).
+</p><!--l. 1262--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">8.4.2 </span> <a
+ id="x1-1010008.4.2"></a>Project Transaction Reporting</h5>
+<!--l. 1264--><p class="noindent">The Standard or GIFI options can be used to create different reports (for example, for Canadian Tax reporting
+purposes).
+</p><!--l. 1267--><p class="indent"> This report brings up a summary that looks sort of like a chart of accounts. Of one clicks on the account
+numbers, one can see the transactions associated with the project.
+</p><!--l. 1272--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">8.4.3 </span> <a
+ id="x1-1020008.4.3"></a>List of Projects</h5>
+<!--l. 1274--><p class="noindent">This provides a simple way of searching for projects to edit or modify.
+</p><!--l. 1277--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">8.5 </span> <a
+ id="x1-1030008.5"></a>Possibilities for Using Projects</h4>
+ <ul class="itemize1">
+ <li class="itemize">One can use them similar to departments for tracking work done for a variety of customers.
+ </li>
+ <li class="itemize">One can use them for customer-specific projects, such as this training.</li></ul>
+<!--l. 1285--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">9 </span> <a
+ id="x1-1040009"></a>Quotations and Order Management</h3>
+<!--l. 1287--><p class="noindent">This unit will introduce the business processes that Ledger-SMB allows. These processes are designed to
+allow various types of businesses to manage their orders and allow for rudimentary customer
+relationship management processes to be built around this software. In this section, we will
+introduce the work flow options that many businesses may use in their day-to-day use of the
+software.
+
+
+</p><!--l. 1295--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">9.1 </span> <a
+ id="x1-1050009.1"></a>Sales Orders</h4>
+<!--l. 1297--><p class="noindent">Sales orders represent orders from customers that have not been delivered or shipped yet. These orders can
+be for work in the future, for back ordered products, or work in progress. A sales order can be generated
+form an AR invoice or from a quotation automatically.
+</p><!--l. 1303--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">9.2 </span> <a
+ id="x1-1060009.2"></a>Quotations</h4>
+<!--l. 1305--><p class="noindent">Quotations are offers made to a customer but to which the customer has not committed to the work.
+Quotations can be created from Sales orders or AR Invoice automatically.
+</p><!--l. 1310--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">9.3 </span> <a
+ id="x1-1070009.3"></a>Shipping</h4>
+<!--l. 1312--><p class="noindent">The Shipping module (Shipping-&#x003E;Shipping) allows one to ship portions or entireties of existing sales orders,
+printing pick lists and packing slips.
+</p><!--l. 1316--><p class="indent"> One can then generate invoices for those parts that were shipped.
+</p><!--l. 1318--><p class="indent"> In general, one will be more likely to use these features if they have multiple warehouses that they ship
+from. More likely most customers will just generate invoices from orders.
+</p><!--l. 1323--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">9.4 </span> <a
+ id="x1-1080009.4"></a>AR Work Flow</h4>
+<!--l. 1326--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">9.4.1 </span> <a
+ id="x1-1090009.4.1"></a>Service Example</h5>
+<!--l. 1328--><p class="noindent">A customer contacts your firm and asks for a quote on some services. Your company would create a
+quotation for the job and email it to the customer or print it and mail it. Once the customer agrees to pay, one
+creates a sales order from the quotation.
+</p><!--l. 1333--><p class="indent"> When the work is completed, the sales order is converted into a sales invoice and this is presented to the
+customer as a bill.
+</p><!--l. 1336--><p class="indent"> Note that in some cases, this procedure may be shortened. If the customer places an order without
+asking for a quotation and is offered a verbal quote, then one might merely prepare the sales
+order.
+</p>
+ <hr class="figure" /><div class="figure"
+><table class="figure"><tr class="figure"><td class="figure"
+>
+
+
+<a
+ id="x1-1090011"></a>
+
+
+<br /><table class="caption"
+><tr style="vertical-align:baseline;" class="caption"><td class="id">Figure&#x00A0;1: </td><td
+class="content">Simple AR Service Invoice Workflow Example</td></tr></table><!--tex4ht:label?: x1-1090011 -->
+<!--l. 9--><p class="center"> <img
+src="LedgerSMB-manual0x.png" alt="PICT" />
+
+
+</p>
+ </td></tr></table></div><hr class="endfigure" />
+ <h5 class="subsubsectionHead"><span class="titlemark">9.4.2 </span> <a
+ id="x1-1100009.4.2"></a>Single Warehouse Example</h5>
+<!--l. 1354--><p class="noindent">A customer contacts your firm and asks for a quotation for shipping a part. You would create the quotation
+and when you get confirmation, convert it to an order. Once the parts are in place you could go to shipping
+and ship the part.
+</p><!--l. 1359--><p class="indent"> The billing department can then generate the invoice from the sales order based on what merchandise has
+been shipped and mail it to the customer.
+</p><!--l. 1363--><p class="indent"> Note that this requires that you have the part in your inventory.
+</p>
+ <hr class="figure" /><div class="figure"
+><table class="figure"><tr class="figure"><td class="figure"
+>
+
+
+<a
+ id="x1-1100012"></a>
+
+
+<br /><table class="caption"
+><tr style="vertical-align:baseline;" class="caption"><td class="id">Figure&#x00A0;2: </td><td
+class="content">AR Workflow with Shipping</td></tr></table><!--tex4ht:label?: x1-1100012 -->
+<!--l. 9--><p class="center"> <img
+src="LedgerSMB-manual1x.png" alt="PICT" />
+
+
+</p>
+ </td></tr></table></div><hr class="endfigure" />
+ <h5 class="subsubsectionHead"><span class="titlemark">9.4.3 </span> <a
+ id="x1-1110009.4.3"></a>Multiple Warehouse Example</h5>
+<!--l. 1379--><p class="noindent">A customer contacts your firm and asks for a quotation for a number of different parts. You would create a
+quotation and when you get confirmation, convert it to a sales order. When you go to ship the item, you
+would select the warehouse in the drop-down menu, and select the parts to ship. One would repeat with
+other warehouses until the entire order is shipped.
+</p><!--l. 1386--><p class="indent"> Then the billing department would go to the sales order and generate the invoice. It would then be
+mailed to the customer.
+</p>
+ <hr class="figure" /><div class="figure"
+><table class="figure"><tr class="figure"><td class="figure"
+>
+
+
+<a
+ id="x1-1110013"></a>
+
+
+<br /><table class="caption"
+><tr style="vertical-align:baseline;" class="caption"><td class="id">Figure&#x00A0;3: </td><td
+class="content">Complex AR Workflow with Shipping</td></tr></table><!--tex4ht:label?: x1-1110013 -->
+<!--l. 9--><p class="center"> <img
+src="LedgerSMB-manual2x.png" alt="PICT" />
+
+
+</p>
+ </td></tr></table></div><hr class="endfigure" />
+ <h4 class="subsectionHead"><span class="titlemark">9.5 </span> <a
+ id="x1-1120009.5"></a>Requests for Quotation (RFQ)</h4>
+<!--l. 1403--><p class="noindent">A request for quotation would be a formal document one might submit to a vendor to ask for a quote
+on a product or service they might offer. These can be generated from Purchase Orders or AP
+Invoices.
+</p><!--l. 1408--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">9.6 </span> <a
+ id="x1-1130009.6"></a>Purchase Orders</h4>
+<!--l. 1410--><p class="noindent">A purchase order is a confirmation that is issued to the vendor to order the product or service. Many
+businesses will require a purchase order with certain terms in order to begin work on a product. These can be
+generated from RFQ&#8217;s or AP Invoices.
+</p><!--l. 1416--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">9.7 </span> <a
+ id="x1-1140009.7"></a>Receiving</h4>
+<!--l. 1418--><p class="noindent">The Shipping-&#x003E;Receiving screen allows you to track the parts received from an existing purchase order. Like
+shipping, it does not post an invoice but tracks the received parts in the order.
+</p><!--l. 1423--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">9.8 </span> <a
+ id="x1-1150009.8"></a>AP Work Flow</h4>
+<!--l. 1426--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">9.8.1 </span> <a
+ id="x1-1160009.8.1"></a>Bookkeeper entering the received items, order completed in full</h5>
+<!--l. 1428--><p class="noindent">Your company inquires about the price of a given good or service from another firm. You submit an RFQ to
+the vendor, and finding that the price is reasonable, you convert it to an order, adjust the price to what they
+have quoted, and save it. When the goods are delivered you convert the order into an AP invoice and post
+it.
+</p>
+ <hr class="figure" /><div class="figure"
+><table class="figure"><tr class="figure"><td class="figure"
+>
+
+
+<a
+ id="x1-1160014"></a>
+
+
+<br /><table class="caption"
+><tr style="vertical-align:baseline;" class="caption"><td class="id">Figure&#x00A0;4: </td><td
+class="content">Simple AP Workflow</td></tr></table><!--tex4ht:label?: x1-1160014 -->
+<!--l. 9--><p class="center"> <img
+src="LedgerSMB-manual3x.png" alt="PICT" />
+
+
+</p>
+ </td></tr></table></div><hr class="endfigure" />
+ <h5 class="subsubsectionHead"><span class="titlemark">9.8.2 </span> <a
+ id="x1-1170009.8.2"></a>Bookkeeper entering received items, order completed in part</h5>
+<!--l. 1448--><p class="noindent">Your company inquires about the price of a given good or service from another firm, You submit an RFQ to
+the vendor, and finding that the price is acceptable, you convert it into an order, adjusting the price to what
+they have quoted, and save it. When some of the goods are received, you open up the purchase order, enter
+the number of parts received, convert that order into an invoice, and post it. Repeat until all parts are
+received.
+</p>
+ <hr class="figure" /><div class="figure"
+><table class="figure"><tr class="figure"><td class="figure"
+>
+
+
+<a
+ id="x1-1170015"></a>
+
+
+<br /><table class="caption"
+><tr style="vertical-align:baseline;" class="caption"><td class="id">Figure&#x00A0;5: </td><td
+class="content">AP Workflow with Receiving</td></tr></table><!--tex4ht:label?: x1-1170015 -->
+<!--l. 9--><p class="center"> <img
+src="LedgerSMB-manual4x.png" alt="PICT" />
+
+
+</p>
+ </td></tr></table></div><hr class="endfigure" />
+ <h5 class="subsubsectionHead"><span class="titlemark">9.8.3 </span> <a
+ id="x1-1180009.8.3"></a>Receiving staff entering items</h5>
+<!--l. 1470--><p class="noindent">Your company inquires about the price of a given good or service from another firm, You submit an RFQ to
+the vendor, and finding that the price is acceptable, you convert it into an order, adjusting the price to
+what they have quoted, and save it. When some or all of the goods are received, the receiving
+staff goes to Shipping-Receiving, locates the purchase order, and fills in the number of items
+received.
+</p><!--l. 1477--><p class="indent"> The bookkeeper can then determine when all items have been received and post the invoice at that
+time.
+</p>
+ <hr class="figure" /><div class="figure"
+><table class="figure"><tr class="figure"><td class="figure"
+>
+
+
+<a
+ id="x1-1180016"></a>
+
+
+<br /><table class="caption"
+><tr style="vertical-align:baseline;" class="caption"><td class="id">Figure&#x00A0;6: </td><td
+class="content">Complex AP Workflow</td></tr></table><!--tex4ht:label?: x1-1180016 -->
+<!--l. 9--><p class="center"> <img
+src="LedgerSMB-manual5x.png" alt="PICT" />
+
+
+</p>
+ </td></tr></table></div><hr class="endfigure" />
+ <h4 class="subsectionHead"><span class="titlemark">9.9 </span> <a
+ id="x1-1190009.9"></a>Generation and Consolidation</h4>
+<!--l. 1495--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">9.9.1 </span> <a
+ id="x1-1200009.9.1"></a>Generation</h5>
+<!--l. 1497--><p class="noindent">The Generation screen allows you to generate Purchase Orders based on sales orders. One selects the sales
+orders one wants to use, and clicks "Generate Purchase Orders." Then one selects clicks on the parts to order,
+adjusts the quantity if necessary, and clicks "Select Vendor." This process is repeated for every vendor
+required. Then the Generate Orders button is clicked.
+</p><!--l. 1505--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">9.9.2 </span> <a
+ id="x1-1210009.9.2"></a>Consolidation</h5>
+<!--l. 1507--><p class="noindent">One can consolidate sales and/or purchase orders using this screen. For the consolidation to work you must
+have more than one order associated with the relevant customer or vendor.
+</p><!--l. 1512--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">9.10 </span> <a
+ id="x1-1220009.10"></a>Reporting</h4>
+<!--l. 1514--><p class="noindent">The reporting functionality in the order management is largely limited to the ability to locate purchase
+orders, sales orders, RFQ&#8217;s, and quotations.
+</p><!--l. 1519--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">9.11 </span> <a
+ id="x1-1230009.11"></a>Shipping Module: Transferring Inventory between Warehouses</h4>
+<!--l. 1521--><p class="noindent">One can transfer inventory between warehouses if necessary by using the Shipping-&#x003E;Transfer Inventory
+screen.
+</p><!--l. 1525--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">10 </span> <a
+ id="x1-12400010"></a>HR</h3>
+<!--l. 1527--><p class="noindent">The HR module is currently limited to tracking employees for and their start and end dates. It
+has very little other functionality. One could build payroll systems that could integrate with it
+however.
+
+
+</p><!--l. 1532--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">11 </span> <a
+ id="x1-12500011"></a>POS</h3>
+<!--l. 1534--><p class="noindent">LedgerSMB 1.2 includes a number of components merged from Metatron Technology Consulting&#8217;s SL-POS.
+Although it is still not a perfect solution, it is greatly improved in both workflow and hardware support. It is
+suitable for retail establishments at the moment.
+</p><!--l. 1538--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">11.1 </span> <a
+ id="x1-12600011.1"></a>Sales Screen</h4>
+<!--l. 1540--><p class="noindent">The sales screen looks very much like a normal invoice entry screen with a few differences.
+</p>
+ <ul class="itemize1">
+ <li class="itemize">The discount text field is not available, nor is the unit field..
+ </li>
+ <li class="itemize">The next part number is automatically focused when the data loads for rapid data entry.
+ </li>
+ <li class="itemize">Hot keys for the buttons are Alt-U for update, Alt-P for print, Alt-O for post, and Alt-R for print
+ and post.
+ </li>
+ <li class="itemize">Part Groups appear at the bottom of the screen.
+ </li>
+ <li class="itemize">Alt-N moves the cursor to the next free payment line.</li></ul>
+<!--l. 1553--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">11.2 </span> <a
+ id="x1-12700011.2"></a>Possibilities for Data Entry</h4>
+ <ul class="itemize1">
+ <li class="itemize">Barcode scanners can be used to scan items in as they are being rung in.
+ </li>
+ <li class="itemize">One could use touch screens, though this would ideally require some custom stylesheets to
+ make it efficient.</li></ul>
+<!--l. 1562--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">11.3 </span> <a
+ id="x1-12800011.3"></a>Hardware Support</h4>
+<!--l. 1564--><p class="noindent">As LedgerSMB is a web-based application, the web browser usually does not allow the page to write to
+arbitrary files. Therefore hardware support for pole displays, etc. is not readily possible from the application
+itself. LedgerSMB gets around this limitation by using an additional set of network sockets from the server to
+the client to control its hardware. This naturally requires that other software is also running on the
+client.
+
+
+</p><!--l. 1571--><p class="indent"> Notes for specific types of hardware are as follows:
+</p><!--l. 1573--><p class="indent">
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">Touch</span> </dt><dd
+class="description">screens: The default stylesheet is not really usable from a touchscreen as the items are often
+ too small. One would need to modify the stylesheets to ensure that the relevant items would be
+ reasonable. Setting down the resolution would also help.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Receipt</span> </dt><dd
+class="description">Printers: ESC/POS printers generally work in text mode. Control sequences can be
+ embedded in the template as necessary.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Pole</span> </dt><dd
+class="description">Displays: Generally supported. Only the Logic Controls PD3000 is supported out of the box,
+ but making this work for other models ought to be trivial.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Cash</span> </dt><dd
+class="description">Drawers: These should be attached to the printer. The control codes is then specified in the
+ pos.conf.pl so that the command is sent to the printer when the open till button is pushed.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Barcode</span> </dt><dd
+class="description">Scanners: Most customers use decoded barcode scanners through a keyboard wedge
+ interface. This allows them to scan items as if they were typing them on the keyboard.</dd></dl>
+<!--l. 1591--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">11.4 </span> <a
+ id="x1-12900011.4"></a>Reports</h4>
+<!--l. 1594--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">11.4.1 </span> <a
+ id="x1-13000011.4.1"></a>Open Invoices</h5>
+<!--l. 1596--><p class="noindent">The POS-&#x003E;Open screen allows one to find any POS receipts that are not entirely paid off.
+</p><!--l. 1600--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">11.4.2 </span> <a
+ id="x1-13100011.4.2"></a>Receipts</h5>
+<!--l. 1602--><p class="noindent">The POS-&#x003E;Receipts screen allows one to bring up a basic record of the POS terminals. It is not sufficient for
+closing the till, however, though it may help for reconciliation.
+</p><!--l. 1606--><p class="indent"> The till column is the last component or octet of the terminal&#8217;s IP address. Therefore it is a good idea to
+try to avoid having IP addresses where the last octet is the same.
+</p><!--l. 1610--><p class="indent"> All entries are grouped by date and source in this report.
+</p><!--l. 1613--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">12 </span> <a
+ id="x1-13200012"></a>General Ledger</h3>
+
+
+<!--l. 1616--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">12.1 </span> <a
+ id="x1-13300012.1"></a>GL Basics</h4>
+<!--l. 1618--><p class="noindent">The General Ledger is the heart of Ledger-SMB. Indeed, Ledger-SMB is designed to be as close as possible to
+a software equivalent of a paper-based accounting program (but with no difference between the General
+Ledger and General Journal).
+</p><!--l. 1624--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">12.1.1 </span> <a
+ id="x1-13400012.1.1"></a>Paper-based accounting systems and the GL</h5>
+<!--l. 1626--><p class="noindent">In order to understand the principle of the General Ledger, one must have a basic understanding of the
+general process of bookkeeping using double-entry paper-based accounting systems.
+</p><!--l. 1630--><p class="indent"> Normally when a transaction would be recorded, it would first be recorded in the "General Journal"
+which would contain detailed information about the transaction, notes, etc. Then the entries from the
+General Journal would be transcribed to the General Ledger, where one could keep closer tabs on what was
+going on in each account.
+</p><!--l. 1636--><p class="indent"> In the general journal, all transactions are listed chronologically with whatever commentary is deemed
+necessary, while in the general ledger each account has its own page and transactions are recorded in a
+simple and terse manner. The General Journal is the first place the transaction is recorded and the General
+Ledger is the last.
+</p><!--l. 1642--><p class="indent"> At the end of the accounting period, the GL transactions would be summarized into a trial balance
+and this would be used for creating financial statements and closing the books at the end of the
+year.
+</p><!--l. 1647--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">12.1.2 </span> <a
+ id="x1-13500012.1.2"></a>Double Entry Examples on Paper</h5>
+<!--l. 1649--><p class="noindent">Let us say that John starts his business with an initial investment of $10,000.
+</p><!--l. 1652--><p class="indent"> This is recorded in the General Journal as follows (in this example, suppose it is page 1):
+</p>
+ <div class="tabular"><table class="tabular"
+cellspacing="0" cellpadding="0" rules="groups"
+><colgroup id="TBL-4-1g"><col
+id="TBL-4-1" /></colgroup><colgroup id="TBL-4-2g"><col
+id="TBL-4-2" /></colgroup><colgroup id="TBL-4-3g"><col
+id="TBL-4-3" /></colgroup><colgroup id="TBL-4-4g"><col
+id="TBL-4-4" /></colgroup><colgroup id="TBL-4-5g"><col
+id="TBL-4-5" /></colgroup><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-4-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-1"
+class="td11">Date </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-2"
+class="td11">Accounts and Explanation</td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-3"
+class="td11">Ref </td><td style="white-space:nowrap; text-align:right;" id="TBL-4-1-4"
+class="td11"> DEBIT</td><td style="white-space:nowrap; text-align:right;" id="TBL-4-1-5"
+class="td11">CREDIT</td>
+</tr><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-4-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-1"
+class="td11">March 1</td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-2"
+class="td11">Checking Account </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-3"
+class="td11">1060</td><td style="white-space:nowrap; text-align:right;" id="TBL-4-2-4"
+class="td11">10000.00</td><td style="white-space:nowrap; text-align:right;" id="TBL-4-2-5"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-1"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-2"
+class="td11">John Doe Capital </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-3"
+class="td11">3011</td><td style="white-space:nowrap; text-align:right;" id="TBL-4-3-4"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-4-3-5"
+class="td11">10000.00</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-1"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-2"
+class="td11">John Doe began a business</td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-4-4-4"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-4-4-5"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-1"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-2"
+class="td11">with an investment of </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-4-5-4"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-4-5-5"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-1"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-2"
+class="td11">$10000 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-4-6-4"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-4-6-5"
+class="td11"> </td>
+</tr><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-4-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-7-1"
+class="td11"> </td> </tr></table>
+</div>
+<!--l. 1692--><p class="indent"> This would then be transcribed into two pages of the General Ledger. The first page might be the
+Checking Account page:
+</p>
+ <div class="tabular"><table class="tabular"
+cellspacing="0" cellpadding="0" rules="groups"
+><colgroup id="TBL-5-1g"><col
+id="TBL-5-1" /></colgroup><colgroup id="TBL-5-2g"><col
+id="TBL-5-2" /></colgroup><colgroup id="TBL-5-3g"><col
+id="TBL-5-3" /></colgroup><colgroup id="TBL-5-4g"><col
+id="TBL-5-4" /></colgroup><colgroup id="TBL-5-5g"><col
+id="TBL-5-5" /></colgroup><colgroup id="TBL-5-6g"><col
+id="TBL-5-6" /></colgroup><colgroup id="TBL-5-7g"><col
+id="TBL-5-7" /></colgroup><colgroup id="TBL-5-8g"><col
+id="TBL-5-8" /></colgroup><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-5-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-1"
+class="td11">DATE </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-2"
+class="td11">EXPLANATION</td><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-3"
+class="td11">REF.</td><td style="white-space:nowrap; text-align:right;" id="TBL-5-1-4"
+class="td11"> DEBITS</td><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-5"
+class="td11">DATE</td><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-6"
+class="td11">EXPLANATION</td><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-7"
+class="td11">REF.</td><td style="white-space:nowrap; text-align:right;" id="TBL-5-1-8"
+class="td11">CREDITS</td>
+</tr><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-5-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-1"
+class="td11">March 1</td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-3"
+class="td11">J1 </td><td style="white-space:nowrap; text-align:right;" id="TBL-5-2-4"
+class="td11">10000.00</td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-5"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-6"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-7"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-5-2-8"
+class="td11"> </td>
+</tr><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-5-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-1"
+class="td11"> </td> </tr></table>
+</div>
+<!--l. 1719--><p class="indent"> On the John Doe Capital page, we would add a similar entry:
+</p>
+
+
+ <div class="tabular"><table class="tabular"
+cellspacing="0" cellpadding="0" rules="groups"
+><colgroup id="TBL-6-1g"><col
+id="TBL-6-1" /></colgroup><colgroup id="TBL-6-2g"><col
+id="TBL-6-2" /></colgroup><colgroup id="TBL-6-3g"><col
+id="TBL-6-3" /></colgroup><colgroup id="TBL-6-4g"><col
+id="TBL-6-4" /></colgroup><colgroup id="TBL-6-5g"><col
+id="TBL-6-5" /></colgroup><colgroup id="TBL-6-6g"><col
+id="TBL-6-6" /></colgroup><colgroup id="TBL-6-7g"><col
+id="TBL-6-7" /></colgroup><colgroup id="TBL-6-8g"><col
+id="TBL-6-8" /></colgroup><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-6-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-1"
+class="td11">DATE</td><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-2"
+class="td11">EXPLANATION</td><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-3"
+class="td11">REF.</td><td style="white-space:nowrap; text-align:right;" id="TBL-6-1-4"
+class="td11">DEBITS</td><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-5"
+class="td11">DATE </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-6"
+class="td11">EXPLANATION</td><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-7"
+class="td11">REF.</td><td style="white-space:nowrap; text-align:right;" id="TBL-6-1-8"
+class="td11">CREDITS</td>
+</tr><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-6-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-1"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-6-2-4"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-5"
+class="td11">March 1</td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-6"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-7"
+class="td11">J1 </td><td style="white-space:nowrap; text-align:right;" id="TBL-6-2-8"
+class="td11"> 10000.00</td>
+</tr><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-6-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-1"
+class="td11"> </td> </tr></table>
+</div>
+<!--l. 1746--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">12.1.3 </span> <a
+ id="x1-13600012.1.3"></a>The GL in Ledger-SMB</h5>
+<!--l. 1748--><p class="noindent">The paper-based accounting procedure works well when one is stuck with paper recording requirements but
+it has one serious deficiency&#8212; all of this transcribing creates an opportunity for errors.
+</p><!--l. 1752--><p class="indent"> Relational databases relieve the need for such transcription as it is possible to store everything
+physically in a way similar to the way a General Journal is used in the paper-based systems and then
+present the same information in ways which are more closely related to the General Ledger
+book.
+</p><!--l. 1758--><p class="indent"> This is the exact way that the General Ledger is used in Ledger-SMB. The actual data is entered and
+stored as if it was a general journal, and then the data can be presented in any number of different
+ways.
+</p><!--l. 1762--><p class="indent"> All modules of Ledger-SMB that involve COA accounts store their data in the General Ledger (it is a little
+more complex than this but this is very close to the actual mechanism).
+</p><!--l. 1767--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">12.2 </span> <a
+ id="x1-13700012.2"></a>Cash Transfer</h4>
+<!--l. 1769--><p class="noindent">The simplest form of GL entry in Ledger-SMB is the Cash-&#x003E;Transfer screen. This screen shows two
+transaction lines, and fields for reference, department, description, and notes.
+</p><!--l. 1773--><p class="indent"> The field descriptions are as follows:
+</p><!--l. 1775--><p class="indent">
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">Reference</span> </dt><dd
+class="description">refers to the source document for the transfer. One can use transfer sheets, bank receipt
+ numbers, etc for this field.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Description</span> </dt><dd
+class="description">is optional but really should be filled in. It ought to be a description of the transaction.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Notes</span> </dt><dd
+class="description">provide supplemental information for the transaction.
+ </dd><dt class="description">
+<span
+class="pplb8t-">FX</span> </dt><dd
+class="description">indicates whether foreign exchange is a factor in this transaction.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Debit</span> </dt><dd
+class="description">indicates money going <span
+class="pplb8t-">into </span>the asset account.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Credit</span> </dt><dd
+class="description">indicates money coming <span
+class="pplb8t-">out </span>of the asset account.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Source</span> </dt><dd
+class="description">is the source document for that portion of the transaction.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Memo</span> </dt><dd
+class="description">lists additional information as necessary.
+
+
+ </dd><dt class="description">
+<span
+class="pplb8t-">Project</span> </dt><dd
+class="description">allows you to assign this line to a project.</dd></dl>
+<!--l. 1788--><p class="noindent">The credit and debit options seem to be the opposite of what one would think of concerning one&#8217;s bank account.
+The reason is that your bank statement is done from the bank&#8217;s point of view. Your bank account balance is
+an asset to you and therefor you show it as having a debit balance, but to the bank it is money they owe you
+and so they show it as having a credit balance.
+</p><!--l. 1795--><p class="indent"> Note that in this screen, when an item is updated, it will reduce the number of lines to those already filled
+in plus an extra line for the new line in the data entry.
+</p><!--l. 1800--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">12.3 </span> <a
+ id="x1-13800012.3"></a>GL Transactions</h4>
+<!--l. 1802--><p class="noindent">The GL Transaction screen (General Ledger-&#x003E;Add Transaction) is identical to the Cash Transfer screen with
+the exception that it starts with nine lines instead of two. Otherwise, they are identical.
+</p><!--l. 1806--><p class="indent"> Again, one must be careful with debits and credits. Often it is easy to get confused. It is generally worth
+while to go back to the principle that one tracks them with regard to their impact on the equity accounts. So
+expenses are credits because they debit the equity accounts, and income is a debit because it credits the
+retained earning equity account.
+</p><!--l. 1813--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">12.4 </span> <a
+ id="x1-13900012.4"></a>Payroll as a GL transaction</h4>
+<!--l. 1815--><p class="noindent">Currently payroll must be done as a GL transaction. The attempts to create a payroll system that would ship
+with LSMB have largely stalled.
+</p><!--l. 1818--><p class="indent"> Most customers running their businesses will have an idea of how to do this.
+</p>
+ <hr class="figure" /><div class="figure"
+><table class="figure"><tr class="figure"><td class="figure"
+>
+
+
+<a
+ id="x1-1390017"></a>
+
+
+<br /><table class="caption"
+><tr style="vertical-align:baseline;" class="caption"><td class="id">Figure&#x00A0;7: </td><td
+class="content">Payroll as a GL Transaction (Purely fictitious numbers)</td></tr></table><!--tex4ht:label?: x1-1390017 -->
+ <div class="tabular"><table class="tabular"
+cellspacing="0" cellpadding="0" rules="groups"
+><colgroup id="TBL-7-1g"><col
+id="TBL-7-1" /></colgroup><colgroup id="TBL-7-2g"><col
+id="TBL-7-2" /></colgroup><colgroup id="TBL-7-3g"><col
+id="TBL-7-3" /></colgroup><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-7-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-1-1"
+class="td11">Account </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-1-2"
+class="td11">Debit</td><td style="white-space:nowrap; text-align:right;" id="TBL-7-1-3"
+class="td11">Credit</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-1"
+class="td11">5101 Wages and Salaries </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-2-2"
+class="td11"> 500</td><td style="white-space:nowrap; text-align:right;" id="TBL-7-2-3"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-1"
+class="td11">2032 Accrued Wages </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-3-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-3-3"
+class="td11"> 450</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-1"
+class="td11">2033 Fed. Income Tax wthd</td><td style="white-space:nowrap; text-align:right;" id="TBL-7-4-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-4-3"
+class="td11"> 30</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-1"
+class="td11">2034 State Inc. Tax. wthd </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-5-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-5-3"
+class="td11"> 15</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-1"
+class="td11">2035 Social Security wthd </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-6-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-6-3"
+class="td11"> 3</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-7-1"
+class="td11">2036 Medicare wthd </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-7-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-7-3"
+class="td11"> 2</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-8-1"
+class="td11">2032 Accrued Wages </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-8-2"
+class="td11"> 450</td><td style="white-space:nowrap; text-align:right;" id="TBL-7-8-3"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-9-1"
+class="td11">1060 Checking Acct </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-9-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:right;" id="TBL-7-9-3"
+class="td11"> 450</td>
+</tr><tr
+class="hline"><td><hr /></td><td><hr /></td><td><hr /></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-7-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-10-1"
+class="td11"> </td> </tr></table>
+</div>
+
+
+ </td></tr></table></div><hr class="endfigure" />
+ <h4 class="subsectionHead"><span class="titlemark">12.5 </span> <a
+ id="x1-14000012.5"></a>Reconciliation</h4>
+<!--l. 1865--><p class="noindent">To reconcile an account (say, when one would get a checking account statement), one would
+go to cash/reconciliation, and check off the items that have cleared. One can then attempt to
+determine where any errors lie by comparing the total on the statement with the total that LSMB
+generates.
+</p><!--l. 1871--><p class="indent"> This can be done for other accounts too, such as petty
+cash.<span class="footnote-mark"><a
+href="LedgerSMB-manual3.html#fn2x0"><sup class="textsuperscript">2</sup></a></span><a
+ id="x1-140001f2"></a>
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">12.6 </span> <a
+ id="x1-14100012.6"></a>Reports</h4>
+<!--l. 1880--><p class="noindent">The most flexible report in Ledger-SMB is the GL report because it has access to the entire set of financial
+transactions of a business. Every invoice posted, payment made or received, etc. can be located
+here.
+</p><!--l. 1885--><p class="indent"> The search criteria include:
+</p><!--l. 1887--><p class="indent">
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">Reference</span> </dt><dd
+class="description">is the invoice number, or other reference number associated with the transaction.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Source</span> </dt><dd
+class="description">is the field related to the source document number in a payment or other transaction.<span class="footnote-mark"><a
+href="LedgerSMB-manual4.html#fn3x0"><sup class="textsuperscript">3</sup></a></span><a
+ id="x1-141001f3"></a>
+ </dd><dt class="description">
+<span
+class="pplb8t-">Memo</span> </dt><dd
+class="description">relates to the memo field on a payment.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Department</span> </dt><dd
+class="description">can be used to filter results by department.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Account</span> </dt><dd
+class="description">Type can be used to filter results by type of account (Asset, Liability, etc.)
+ </dd><dt class="description">
+<span
+class="pplb8t-">Description</span> </dt><dd
+class="description">can be used to filter by GL description or by customer/vendor name.</dd></dl>
+<!--l. 1902--><p class="noindent">The actual format of the report looks more like what one would expect in a paper accounting system&#8217;s general
+journal than a general ledger per se. A presentation of the data that is more like the paper general ledger is
+found in the Chart of Accounts report.
+</p><!--l. 1908--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">12.6.1 </span> <a
+ id="x1-14200012.6.1"></a>GL as access to almost everything else</h5>
+
+
+<!--l. 1910--><p class="noindent">The GL reports can be used to do all manner of things. One can determine, for example, which AP invoice or
+transaction was paid with a certain check number or which invoice by a specific customer was paid by a
+specific check number.
+</p><!--l. 1916--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">13 </span> <a
+ id="x1-14300013"></a>Recurring Transactions</h3>
+<!--l. 1918--><p class="noindent">Any transaction or invoice may be repeated a number of times in regular intervals. To schedule any GL, AR,
+or AP transaction or invoice, click the schedule button.
+</p><!--l. 1922--><p class="indent"> In general the reference number should be left blank as this will force Ledger-SMB to create a new invoice
+or transaction number for each iteration. The rest of the options are self-explanatory. Note that a blank
+number if iterations will result in no recurrences of the transaction.
+</p><!--l. 1928--><p class="indent"> To process the recurring transactions, click on the Recurring Transactions option on the main menu select
+the ones you want to process and click "Process Transactions."
+</p><!--l. 1933--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">14 </span> <a
+ id="x1-14400014"></a>Financial Statements and Reports</h3>
+<!--l. 1935--><p class="noindent">Financial statements and reports are a very important part of any accounting system. Accountants and
+business people rely on these reports to determine the financial soundness of the business and its prospects
+for the next accounting period.
+</p><!--l. 1941--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">14.1 </span> <a
+ id="x1-14500014.1"></a>Cash v. Accrual Basis</h4>
+<!--l. 1943--><p class="noindent">Financial statements, such as the Income Statement and Balance Sheet can be prepared either on a cash or
+accrual basis. In cash-basis accounting, the income is deemed earned when the customer pays it, and the
+expenses are deemed incurred when the business pays them.
+</p><!--l. 1948--><p class="indent"> There are a number of problems with cash-basis accounting from a business point of view. The most
+serious is that one can misrepresent the wellbeing of a business by paying a large expense after a deadline.
+Thus cash-basis accounting does not allow one to accurately pair the income with the related expense as
+these are recorded at different times. If one cannot accurately pair the income with the related expense, then
+financial statements cannot be guaranteed to tell one much of anything about the well-being of the
+business.
+</p><!--l. 1957--><p class="indent"> In accrual basis accounting, income is considered earned when the invoice is posted, and
+expenses are considered incurred at the time when the goods or services are delivered to the
+business. This way, one can pair the income made from the sale of a product with the expense
+incurred in bringing that product to sale. This pairing allows for greater confidence in business
+reporting.
+</p><!--l. 1965--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">14.2 </span> <a
+ id="x1-14600014.2"></a>Viewing the Chart of Accounts and Transactions</h4>
+<!--l. 1967--><p class="noindent">The Reports&#8211;&#x003E;Chart of Accounts will provide the chart of accounts along with current totals in each
+account.
+
+
+</p><!--l. 1970--><p class="indent"> If you click on an account number, you will get a screen that allows you to filter out transactions in that
+account by various criteria. One can also include AR/AP, and Subtotal in the report.
+</p><!--l. 1974--><p class="indent"> The report format is similar to that of a paper-based general ledger.
+</p><!--l. 1977--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">14.3 </span> <a
+ id="x1-14700014.3"></a>Trial Balance</h4>
+<!--l. 1980--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">14.3.1 </span> <a
+ id="x1-14800014.3.1"></a>The Paper-based function of a Trial Balance</h5>
+<!--l. 1982--><p class="noindent">In paper-based accounting systems, the accountant at the end of the year would total up the debits and
+credits in every account and transfer them onto another sheet called the trial balance. The accountant
+would check to determine that the total debits and credits were equal and would then transfer
+this information onto the financial statements. It was called a trial balance because it was the
+main step at which the error-detection capabilities of double-entry accounting systems were
+used.
+</p><!--l. 1992--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">14.3.2 </span> <a
+ id="x1-14900014.3.2"></a>Running the Trial Balance Report</h5>
+<!--l. 1994--><p class="noindent">This report is located under Reports &#8211;&#x003E;Trial Balance. One can filter out items by date, accounting period, or
+department. One can run the report by accounts or using GIFI classifications to group accounts
+together.
+</p><!--l. 1999--><p class="indent"> From this report, you can click on the account number and see all transactions on the trial balance as well
+as whether or not they have been reconciled.
+</p><!--l. 2004--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">14.3.3 </span> <a
+ id="x1-15000014.3.3"></a>What if the Trial Balance doesn&#8217;t Balance?</h5>
+<!--l. 2006--><p class="noindent">If the trial balance does not balance, get technical support immediately. This usually means that transactions
+were not entered properly. Some may have been out of balance, or some may have gone into non-existent
+accounts (believe it or not, Ledger-SMB does not check this latter issue).
+</p><!--l. 2013--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">14.3.4 </span> <a
+ id="x1-15100014.3.4"></a>Trial Balance as a Summary of Account Activity</h5>
+<!--l. 2015--><p class="noindent">The trial balance offers a glance at the total activity in every account. It can provide a useful look at financial
+activity at a glance for the entire business.
+</p><!--l. 2020--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">14.3.5 </span> <a
+ id="x1-15200014.3.5"></a>Trial Balance as a Budget Planning Tool</h5>
+
+
+<!--l. 2022--><p class="noindent">By filtering out departments, one can determine what a department earned and spent during a given
+financial interval. This can be used in preparing budgets for the next accounting period.
+</p><!--l. 2027--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">14.4 </span> <a
+ id="x1-15300014.4"></a>Income Statement</h4>
+<!--l. 2029--><p class="noindent">The Income Statement is another tool that can be used to assist with budgetary planning as well as provide
+information on the financial health of a business.
+</p><!--l. 2033--><p class="indent"> The report is run from Reports&#8211;&#x003E;Income Statement. The report preparation screen shows the following
+fields:
+</p><!--l. 2036--><p class="indent">
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">Department</span> </dt><dd
+class="description">allows you to run reports for individual departments. This is useful for budgetary
+ purposes.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Project</span> </dt><dd
+class="description">allows you to run reports on individual projects. This can show how profitable a given project
+ was during a given time period.
+ </dd><dt class="description">
+<span
+class="pplb8t-">From</span> </dt><dd
+class="description">and To allow you to select arbitrary from and to dates.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Period</span> </dt><dd
+class="description">allows you to specify a standard accounting period.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Compare to</span> </dt><dd
+class="description">fields allow you to run a second report for comparison purposes for a separate range of
+ dates or accounting period.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Decimalplaces</span> </dt><dd
+class="description">allows you to display numbers to a given precision.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Method</span> </dt><dd
+class="description">allows you to select between accrual and cash basis reports.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Include</span> </dt><dd
+class="description">in Report provides various options for reporting.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Accounts</span> </dt><dd
+class="description">allows you to run GIFI reports instead of the standard ones.</dd></dl>
+<!--l. 2051--><p class="noindent">The report shows all income and expense accounts with activity during the period when the report is run, the
+balances accrued during the period, as well as the total income and expense at the bottom of each section.
+The total expense is subtracted from the total income to provide the net income during the period. If there is
+a loss, it appears in parentheses.
+</p><!--l. 2059--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">14.4.1 </span> <a
+ id="x1-15400014.4.1"></a>Uses of an Income Statement</h5>
+<!--l. 2061--><p class="noindent">The income statement provides a basic snapshot of the overall ability of the business to make money. It is one
+of the basic accounting statements and is required, for example, on many SEC forms for publicly traded
+firms.
+
+
+</p><!--l. 2066--><p class="indent"> Additionally, businessmen use the income statement to look at overall trends in the ability of the business
+to make money. One can compare a given month, quarter, or year with a year prior to look for trends so that
+one can make adjustments in order to maximize profit.
+</p><!--l. 2071--><p class="indent"> Finally, these reports can be used to provide a look at each department&#8217;s performance and their
+ability to work within their budget. One can compare a department or project&#8217;s performance to
+a year prior and look for patterns that can indicate problems or opportunities that need to be
+addressed.
+</p><!--l. 2078--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">14.5 </span> <a
+ id="x1-15500014.5"></a>Balance Sheet</h4>
+<!--l. 2080--><p class="noindent">The balance sheet is the second major accounting statement supported by Ledger-SMB. The balance sheet
+provides a snapshot of the current financial health of the business by comparing assets, liabilities, and
+equity.
+</p><!--l. 2085--><p class="indent"> In essence the balance sheet is a statement of the current state of owner equity. Traditionally, it does not
+track changes in owner equity in the same way the Statement of Owner Equity does.
+</p><!--l. 2089--><p class="indent"> The Balance Sheet report preparation screen is much simpler than the Income Statement screen.
+Balance sheets don&#8217;t apply to projects, but they do apply to departments. Also, unlike an income
+statement, a balance sheet is fixed for a specific date in time. Therefore one does not need to select a
+period.
+</p><!--l. 2095--><p class="indent"> The fields in creating a balance sheet are:
+</p><!--l. 2097--><p class="indent">
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">Department</span> </dt><dd
+class="description">allows you to run separate balance sheets for each department.
+ </dd><dt class="description">
+<span
+class="pplb8t-">As</span> </dt><dd
+class="description">at specifies the date. If blank this will be the current date.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Compare to</span> </dt><dd
+class="description">specifies the date to compare the balance sheet to.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Decimalplaces</span> </dt><dd
+class="description">specifies the number of decimal places to use.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Method</span> </dt><dd
+class="description">selects between cash and accrual basis.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Include</span> </dt><dd
+class="description">in report allows you to select supplemental information on the report.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Accounts</span> </dt><dd
+class="description">allows you to select between standard and GIFI reports.</dd></dl>
+<!--l. 2108--><p class="noindent">The balance sheet lists all asset, liability, and equity accounts with a balance. Each category has a total listed, and
+the total of the equity and liability accounts is also listed.
+</p><!--l. 2112--><p class="indent"> The total assets should be equal to the sum of the totals of the liability and equity accounts.
+
+
+</p><!--l. 2116--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">14.6 </span> <a
+ id="x1-15600014.6"></a>What if the Balance Sheet doesn&#8217;t balance?</h4>
+<!--l. 2118--><p class="noindent">Get technical support immediately, This may indicate that out of balance transactions were entered or that
+transactions did not post properly.
+</p><!--l. 2122--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">14.7 </span> <a
+ id="x1-15700014.7"></a>No Statement of Owner Equity?</h4>
+<!--l. 2124--><p class="noindent">The Statement of Owner Equity is the one accounting statement that Ledger-SMB does not support.
+However, it can be simulated by running a balance sheet at the end of the time frame in question and
+comparing it to the beginning. One can check this against an income statement for the period in question
+to verify its accuracy. The statement of owner equity is not as commonly used now as it once
+was.
+</p><!--l. 2132--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">15 </span> <a
+ id="x1-15800015"></a>The Template System</h3>
+<!--l. 2134--><p class="noindent">Ledger-SMB allows most documents to be generated according to a template system. This allows financial
+statements, invoices, orders, and the like to be customized to meet the needs of most businesses. Company
+logos can be inserted, the format can be radically altered, one can print letters to be included
+with checks to vendors instead of the checks themselves, and the like. In the end, there is very
+little that cannot be accomplished regarding modification of these documents with the template
+system.
+</p><!--l. 2143--><p class="indent"> One can define different templates for different languages, so that a customer in Spain gets a different
+invoice than a customer in Canada.
+</p><!--l. 2147--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">15.1 </span> <a
+ id="x1-15900015.1"></a>Text Templates</h4>
+<!--l. 2149--><p class="noindent">The only template that uses a text-only format is the POS receipt. This example provides the simplest way to
+understand the template system.
+</p><!--l. 2153--><p class="indent"> The first two lines are:
+<br class="newline" />&#x003C;%company align=center width=40%&#x003E;
+<br class="newline" />&#x003C;%address align=center width=40%&#x003E;
+<br class="newline" />
+</p><!--l. 2158--><p class="indent"> The first line tells Ledger-SMB to print the company name as passed to it via a variable, centered, with a
+page width of 40 characters. The second line does the same thing with the address.
+</p><!--l. 2162--><p class="indent"> These variables are usually passed to the invoice using form fields (hidden or otherwise) in the
+submitting web page. The printing script, however, can disable some of these fields or add others via
+database lookups and the like.
+</p><!--l. 2167--><p class="indent"> In all types of templates, variable substitution occurs between &#x003C;% and %&#x003E;. One can optionally specify an
+alignment or a width but these are really only useful in text templates.
+
+
+</p><!--l. 2172--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">15.2 </span> <a
+ id="x1-16000015.2"></a>HTML Templates</h4>
+<!--l. 2174--><p class="noindent">The following templates exist in HTML format:
+</p>
+ <ul class="itemize1">
+ <li class="itemize">Income Statement
+ </li>
+ <li class="itemize">Balance Sheet
+ </li>
+ <li class="itemize">Invoice (AR)
+ </li>
+ <li class="itemize">AR Transaction
+ </li>
+ <li class="itemize">AP Transaction
+ </li>
+ <li class="itemize">Packing List
+ </li>
+ <li class="itemize">Pick List
+ </li>
+ <li class="itemize">Sales Order
+ </li>
+ <li class="itemize">Work Order
+ </li>
+ <li class="itemize">Purchase Order
+ </li>
+ <li class="itemize">Bin List
+ </li>
+ <li class="itemize">Statement
+ </li>
+ <li class="itemize">Quotation
+ </li>
+ <li class="itemize">RFQ
+ </li>
+ <li class="itemize">Time Card</li></ul>
+<!--l. 2193--><p class="noindent">These templates can be edited by an HTML editor. However, it is generally recommended that one back up
+templates first. The reason is that some HTML editors will fully re-parse the HTML and save it back without
+what they see as invalid tags. Most editors, however, will save the variable substitution tags because similar
+tags are also used by Microsoft&#8217;s active server pages.
+</p><!--l. 2200--><p class="indent"> Finally, some editors are known to mangle formatting, so many problems can be avoided by ensuring that
+one has a backup of the templates, especially if they have already been customized.
+
+
+</p><!--l. 2205--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">15.3 </span> <a
+ id="x1-16100015.3"></a><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;Templates</h4>
+<!--l. 2207--><p class="noindent">The following templates, by default, are available in <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;:
+</p>
+ <ul class="itemize1">
+ <li class="itemize">Invoice
+ </li>
+ <li class="itemize">AR Transaction
+ </li>
+ <li class="itemize">AP Transaction
+ </li>
+ <li class="itemize">Packing List
+ </li>
+ <li class="itemize">Pick List
+ </li>
+ <li class="itemize">Sales Order
+ </li>
+ <li class="itemize">Work Order
+ </li>
+ <li class="itemize">Purchase Order
+ </li>
+ <li class="itemize">Bin List
+ </li>
+ <li class="itemize">Statement
+ </li>
+ <li class="itemize">Check
+ </li>
+ <li class="itemize">Receipt
+ </li>
+ <li class="itemize">Quotation
+ </li>
+ <li class="itemize">RFQ
+ </li>
+ <li class="itemize">Time Card</li></ul>
+<!--l. 2226--><p class="noindent"><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;templates allow one to generate PDF and postscript documents and print directly to a postscript-enabled
+printer or print software (like CUPS).
+</p><!--l. 2230--><p class="indent"> <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;templates can be edited using a standard text editor (like vim or emacs), or using a synchronous
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;implementation such as LY X.
+
+
+</p><!--l. 2235--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">15.3.1 </span> <a
+ id="x1-16200015.3.1"></a>What is <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;?</h5>
+<!--l. 2237--><p class="noindent"><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;(pronounced LAY-tech) is an extension on the <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;typesetting system. It largely consists of a set of
+macros that allow one to focus on the structure of the document while letting the <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;engine do the heavy
+lifting in terms of determining the optimal formatting for the page. <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;is used in a large number of
+academic journals (including those of the American Mathematics Association). It is available at <span class="obeylines-h"><a
+href="http://www.tug.org" class="url" >http://www.tug.org</a></span> and is included in most Linux distributions.
+</p><!--l. 2245--><p class="indent"> Like HTML, <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;uses plain text documents to store the formatting information and then when the
+document is rendered, attempts to fit it onto a page. <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;supports the concept of stylesheets, allowing
+one to separate content from format, and this feature is used in many higher-end applications, like journal
+publication.
+</p><!--l. 2252--><p class="indent"> Unlike HTML, <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;is a complete though simple programming language that allows one to redefine
+internals of the system for formatting purposes.
+</p><!--l. 2256--><p class="indent"> This document is written in <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>.
+</p><!--l. 2259--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">15.3.2 </span> <a
+ id="x1-16300015.3.2"></a>Using LY X to Edit <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;Templates</h5>
+<!--l. 2261--><p class="noindent">LY X is a synchronous <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;editor that runs on Windows, UNIX/Linux, and Mac OS X. It
+requires an installed <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>-2e implementation and can be obtained at <span class="obeylines-h"><a
+href="http://www.lyx.org" class="url" >http://www.lyx.org</a></span>. Like
+the most common <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;implementations, it is open source and is included with most Linux
+distributions.
+</p><!--l. 2267--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">15.4 </span> <a
+ id="x1-16400015.4"></a>Customizing Logos</h4>
+<!--l. 2269--><p class="noindent"><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;requires different formats of logos depending on whether the document is going to be
+generated as a PDF or as postscript. Postscript requires an embedded postscript graphic, while PDF
+requires any type of graphic other than embedded postscript. Usually one uses a PNG&#8217;s for
+PDF&#8217;s, though GIF&#8217;s could be used as well. The logo for a <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;document resides in the users
+directory.
+</p><!--l. 2276--><p class="indent"> HTML documents can have logos in many different formats. PNG&#8217;s are generally preferred for printing
+reasons. The image can be stored anywhere and merely referenced in the HTML.
+</p><!--l. 2280--><p class="indent"> Note: Always test the an invoice with images to ensure that the rest of the page format is not thrown off
+by it.
+</p><!--l. 2284--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">15.5 </span> <a
+ id="x1-16500015.5"></a>How are They Stored in the Filesystem?</h4>
+<!--l. 2286--><p class="noindent">The template directory ("templates" in the root Ledger-SMB install directory) contains all the root templates
+used by Ledger-SMB. These follow a naming convention of COAType-templatename.ext where COAType is
+the type of dataset that was created when the user was created, templatename is the name of the template,
+and ext is either txt, html, or tex (for text, html, and <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;respectively).
+</p><!--l. 2293--><p class="indent"> Inside this directory are one or more subdirectories where the relevant templates have been copied as
+default language templates for the user. Many users can use the same user directory (which bears the name
+of the Ledger-SMB username). Within this directory are more subdirectories for translated templates, one for
+each language created.
+
+
+</p><!--l. 2300--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">15.6 </span> <a
+ id="x1-16600015.6"></a>Upgrade Issues</h4>
+<!--l. 2302--><p class="noindent">When Ledger-SMB is upgraded, the templates are not replaced. This is designed to prevent the upgrade
+script from overwriting changes made during the course of customizing the templates.
+</p><!--l. 2306--><p class="indent"> Occasionally, however, the data model changes in a way which can cause the templates to stop printing
+certain information. When information that was showing up before an upgrade stops showing up, one can
+either upgrade the templates by copying the source template over the existing one, or one can edit the
+template to make the change.
+</p><!--l. 2312--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">16 </span> <a
+ id="x1-16700016"></a>An Introduction to the CLI</h3>
+<!--l. 2314--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">16.1 </span> <a
+ id="x1-16800016.1"></a>Conventions</h4>
+<!--l. 2316--><p class="noindent">The command-line API will be referred to as the API.
+</p><!--l. 2318--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">16.2 </span> <a
+ id="x1-16900016.2"></a>Preliminaries</h4>
+<!--l. 2320--><p class="noindent">Logging into Ledger-SMB (1.2+) updates a row in the users_conf table containing your account configuration
+defaults and other information. The implication for API users of LSMB is that you must login as part of
+running API scripts. For security purposes, it is recommended that scripts prompt for a password rather than
+storing it.
+</p><!--l. 2326--><p class="indent"> All scripts included in the documentation can also be found in the doc/samples directory.
+</p><!--l. 2329--><p class="indent"> Consider a simple example:
+</p><!--l. 2331--><p class="indent"> cd /usr/local/ledger-smb ./ct.pl "login=name&amp;path=bin&amp;password=xxxxx&amp;action=search&amp;db=customer"
+</p><!--l. 2334--><p class="indent"> The cd command moves your terminal session&#8217;s current working directory into the main Ledger-SMB
+directory. Then the Ledger-SMB perl script ct.pl is called with one long line as an argument. The argument is
+really several variable=value pairs separated by ampersands (&amp;). The value for the login variable is the
+username that Ledger-SMB is to use, and the value for the password variable is the plaintext
+password.
+</p><!--l. 2340--><p class="indent"> To build our examples we will use a username of "clarkkent" who has a password of "lOis,lAn3".
+</p><!--l. 2343--><p class="indent"> cd /usr/local/ledger-smb ./ct.pl "login=clarkkent&amp;path=bin&amp;password=lOis,lAn3&amp;action=search&amp;db=customer"
+</p><!--l. 2346--><p class="indent"> If we execute these commands we will get the html for the search form for the customer database. This
+result isn&#8217;t useful in itself, but it shows we are on the right track.
+</p><!--l. 2351--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">16.3 </span> <a
+ id="x1-17000016.3"></a>First Script: lsmb01-cli-example.sh</h4>
+
+
+<!--l. 2353--><p class="noindent">With a working example, we can start to build reproducible routines that we can grow to do some useful
+work.
+</p><!--l. 2356--><p class="indent"> This is a bash script which:
+</p><!--l. 2358--><p class="indent"> 1. sets NOW to the current working directory 2. prompts for and reads your Ledger-SMB login 3. prompts
+for and reads (non-echoing) your Ledger-SMB password 4. changes directory to /usr/local/ledger-smb 5.
+constructs login and logout commands and a transaction command 6. logins into ledger-smb (in a real
+program, output would be checked for success or failure) 7. executes the transaction 8. logs out
+of ledger-smb (although this is not necessary) 9. returns to the original working directory 10.
+exits
+</p><!--l. 2370--><p class="indent"> Running lsmb01-cli-example.sh produces:
+</p><!--l. 2372--><p class="indent"> $ lsmb01-cli-example.sh
+</p><!--l. 2374--><p class="indent"> Ledger-SMB login: clarkkent
+</p><!--l. 2376--><p class="indent"> Ledger-SMB password:
+
+
+</p>
+ <table
+class="verbatim"><tr class="verbatim"><td
+class="verbatim"><div class="verbatim">
+&#x003C;body&#x003E;
+&#x00A0;<br />
+&#x00A0;<br />&#x003C;form&#x00A0;method=post&#x00A0;action=ct.pl&#x003E;
+&#x00A0;<br />
+&#x00A0;<br />&#x003C;input&#x00A0;type=hidden&#x00A0;name=db&#x00A0;value=customer&#x003E;
+&#x00A0;<br />
+&#x00A0;<br />&#x003C;table&#x00A0;width=100%&#x003E;
+&#x00A0;<br />&#x00A0;&#x00A0;&#x003C;tr&#x003E;
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x003C;th&#x00A0;class=listtop&#x003E;Search&#x003C;/th&#x003E;
+&#x00A0;<br />.
+&#x00A0;<br />.
+&#x00A0;<br />.
+</div>
+</td></tr></table>
+<!--l. 2391--><p class="nopar">
+</p><!--l. 2393--><p class="indent"> A script like this would work well for simple batch transactions, but bash is not a very friendly language
+for application programming.
+</p><!--l. 2397--><p class="indent"> A nicer solution would be to use a language such as perl to drive the command line API.
+</p><!--l. 2400--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">16.3.1 </span> <a
+ id="x1-17100016.3.1"></a>Script 1 (Bash)</h5>
+
+
+ <table
+class="verbatim"><tr class="verbatim"><td
+class="verbatim"><div class="verbatim">
+#!/bin/bash
+&#x00A0;<br />#######################################################################
+&#x00A0;<br />#
+&#x00A0;<br />#&#x00A0;lsmb01-cli-example.sh
+&#x00A0;<br />#&#x00A0;Copyright&#x00A0;(C)&#x00A0;2006.&#x00A0;Louis&#x00A0;B.&#x00A0;Moore
+&#x00A0;<br />#
+&#x00A0;<br />#&#x00A0;$Id:&#x00A0;$
+&#x00A0;<br />#
+&#x00A0;<br />#&#x00A0;This&#x00A0;program&#x00A0;is&#x00A0;free&#x00A0;software;&#x00A0;you&#x00A0;can&#x00A0;redistribute&#x00A0;it&#x00A0;and/or&#x00A0;modify
+&#x00A0;<br />#&#x00A0;it&#x00A0;under&#x00A0;the&#x00A0;terms&#x00A0;of&#x00A0;the&#x00A0;GNU&#x00A0;General&#x00A0;Public&#x00A0;License&#x00A0;as&#x00A0;published&#x00A0;by
+&#x00A0;<br />#&#x00A0;the&#x00A0;Free&#x00A0;Software&#x00A0;Foundation;&#x00A0;either&#x00A0;version&#x00A0;2&#x00A0;of&#x00A0;the&#x00A0;License,&#x00A0;or
+&#x00A0;<br />#&#x00A0;(at&#x00A0;your&#x00A0;option)&#x00A0;any&#x00A0;later&#x00A0;version.
+&#x00A0;<br />#
+&#x00A0;<br />#&#x00A0;This&#x00A0;program&#x00A0;is&#x00A0;distributed&#x00A0;in&#x00A0;the&#x00A0;hope&#x00A0;that&#x00A0;it&#x00A0;will&#x00A0;be&#x00A0;useful,
+&#x00A0;<br />#&#x00A0;but&#x00A0;WITHOUT&#x00A0;ANY&#x00A0;WARRANTY;&#x00A0;without&#x00A0;even&#x00A0;the&#x00A0;implied&#x00A0;warranty&#x00A0;of
+&#x00A0;<br />#&#x00A0;MERCHANTABILITY&#x00A0;or&#x00A0;FITNESS&#x00A0;FOR&#x00A0;A&#x00A0;PARTICULAR&#x00A0;PURPOSE.&#x00A0;&#x00A0;See&#x00A0;the
+&#x00A0;<br />#&#x00A0;GNU&#x00A0;General&#x00A0;Public&#x00A0;License&#x00A0;for&#x00A0;more&#x00A0;details.
+&#x00A0;<br />#&#x00A0;You&#x00A0;should&#x00A0;have&#x00A0;received&#x00A0;a&#x00A0;copy&#x00A0;of&#x00A0;the&#x00A0;GNU&#x00A0;General&#x00A0;Public&#x00A0;License
+&#x00A0;<br />#&#x00A0;along&#x00A0;with&#x00A0;this&#x00A0;program;&#x00A0;if&#x00A0;not,&#x00A0;write&#x00A0;to&#x00A0;the&#x00A0;Free&#x00A0;Software
+&#x00A0;<br />#&#x00A0;Foundation,&#x00A0;Inc.,&#x00A0;675&#x00A0;Mass&#x00A0;Ave,&#x00A0;Cambridge,&#x00A0;MA&#x00A0;02139,&#x00A0;USA.
+&#x00A0;<br />#
+&#x00A0;<br />#######################################################################
+&#x00A0;<br />
+&#x00A0;<br />NOW=&#8216;pwd&#8216;
+&#x00A0;<br />
+&#x00A0;<br />echo&#x00A0;-n&#x00A0;~Ledger-SMB&#x00A0;login:&#x00A0;~
+&#x00A0;<br />read&#x00A0;LSLOGIN
+&#x00A0;<br />echo
+&#x00A0;<br />
+&#x00A0;<br />echo&#x00A0;-n&#x00A0;~Ledger-SMB&#x00A0;password:&#x00A0;~
+&#x00A0;<br />stty&#x00A0;-echo
+&#x00A0;<br />read&#x00A0;LSPWD
+&#x00A0;<br />stty&#x00A0;echo
+&#x00A0;<br />echo
+&#x00A0;<br />
+&#x00A0;<br />ARG=~login=${LSLOGIN}&amp;password=${LSPWD}&amp;path=bin&amp;action=search&amp;db=customer~
+&#x00A0;<br />
+&#x00A0;<br />LGIN=~login=${LSLOGIN}&amp;password=${LSPWD}&amp;path=bin&amp;action=login~
+&#x00A0;<br />LGOT=~login=${LSLOGIN}&amp;password=${LSPWD}&amp;path=bin&amp;action=logout~
+&#x00A0;<br />
+&#x00A0;<br />cd&#x00A0;/usr/local/ledger-smb
+&#x00A0;<br />
+&#x00A0;<br />./login.pl&#x00A0;$LGIN&#x00A0;2&#x003E;&amp;1&#x00A0;&#x00A0;&#x003E;&#x00A0;/dev/null
+&#x00A0;<br />./ct.pl&#x00A0;$ARG
+&#x00A0;<br />./login.pl&#x00A0;$LGOT&#x00A0;2&#x003E;&amp;1&#x00A0;&#x00A0;&#x003E;&#x00A0;/dev/null
+&#x00A0;<br />
+&#x00A0;<br />cd&#x00A0;$NOW
+&#x00A0;<br />
+
+
+&#x00A0;<br />exit&#x00A0;0
+</div>
+</td></tr></table>
+<!--l. 2451--><p class="nopar">
+</p><!--l. 2454--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">16.4 </span> <a
+ id="x1-17200016.4"></a>Second Script: lsmb02-cli-example.pl</h4>
+<!--l. 2456--><p class="noindent">Our second script is written in perl and logs you in but it still uses the API in its simplest form, that is, it
+builds commands and then executes them. This type of script can be used for more complex solutions than
+the simple bash script above, though it is still fairly limited. If your needs require, rather than have the script
+build and then execute the commands it could be written to generate a shell script which is executed by
+hand.
+</p><!--l. 2463--><p class="indent"> This script begins by prompting for your Ledger-SMB login and password. Using the supplied
+values a login command is constructed and passed into the runLScmd subroutine. runLScmd
+changes directory to /usr/local/ledger-smb/ for the length of the subroutine. It formats the
+command and executes it and returns both the output and error information to the caller in a
+scalar.
+</p><!--l. 2469--><p class="indent"> The script checks to see if there was an error in the login, exiting if there was.
+</p><!--l. 2471--><p class="indent"> Next, the script reads some records which are stored in the program following the __END__ token. It
+takes each record in turn, formats it then feeds each transaction through runLScmd and looks at the results
+for a string that signals success.
+</p><!--l. 2475--><p class="indent"> Once all the transactions are processed, runLScmd is called one last time to logout and the script
+exits.
+</p><!--l. 2478--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">16.4.1 </span> <a
+ id="x1-17300016.4.1"></a>Script 2 (Perl)</h5>
+
+
+ <table
+class="verbatim"><tr class="verbatim"><td
+class="verbatim"><div class="verbatim">
+#!/usr/bin/perl&#x00A0;-w
+&#x00A0;<br />#
+&#x00A0;<br />#&#x00A0;&#x00A0;File:&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;lsmb02-cli-example.pl
+&#x00A0;<br />#&#x00A0;&#x00A0;Environment:&#x00A0;&#x00A0;Ledger-SMB&#x00A0;1.2.0+
+&#x00A0;<br />#&#x00A0;&#x00A0;Author:&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Louis&#x00A0;B.&#x00A0;Moore
+&#x00A0;<br />#
+&#x00A0;<br />#&#x00A0;&#x00A0;Copyright&#x00A0;(C)&#x00A0;&#x00A0;&#x00A0;2006&#x00A0;&#x00A0;Louis&#x00A0;B.&#x00A0;Moore
+&#x00A0;<br />#
+&#x00A0;<br />#&#x00A0;&#x00A0;This&#x00A0;program&#x00A0;is&#x00A0;free&#x00A0;software;&#x00A0;you&#x00A0;can&#x00A0;redistribute&#x00A0;it&#x00A0;and/or
+&#x00A0;<br />#&#x00A0;&#x00A0;modify&#x00A0;it&#x00A0;under&#x00A0;the&#x00A0;terms&#x00A0;of&#x00A0;the&#x00A0;GNU&#x00A0;General&#x00A0;Public&#x00A0;License
+&#x00A0;<br />#&#x00A0;&#x00A0;as&#x00A0;published&#x00A0;by&#x00A0;the&#x00A0;Free&#x00A0;Software&#x00A0;Foundation;&#x00A0;either&#x00A0;version&#x00A0;2
+&#x00A0;<br />#&#x00A0;&#x00A0;of&#x00A0;the&#x00A0;License,&#x00A0;or&#x00A0;(at&#x00A0;your&#x00A0;option)&#x00A0;any&#x00A0;later&#x00A0;version.
+&#x00A0;<br />#
+&#x00A0;<br />#&#x00A0;&#x00A0;This&#x00A0;program&#x00A0;is&#x00A0;distributed&#x00A0;in&#x00A0;the&#x00A0;hope&#x00A0;that&#x00A0;it&#x00A0;will&#x00A0;be&#x00A0;useful,
+&#x00A0;<br />#&#x00A0;&#x00A0;but&#x00A0;WITHOUT&#x00A0;ANY&#x00A0;WARRANTY;&#x00A0;without&#x00A0;even&#x00A0;the&#x00A0;implied&#x00A0;warranty&#x00A0;of
+&#x00A0;<br />#&#x00A0;&#x00A0;MERCHANTABILITY&#x00A0;or&#x00A0;FITNESS&#x00A0;FOR&#x00A0;A&#x00A0;PARTICULAR&#x00A0;PURPOSE.&#x00A0;&#x00A0;See&#x00A0;the
+&#x00A0;<br />#&#x00A0;&#x00A0;GNU&#x00A0;General&#x00A0;Public&#x00A0;License&#x00A0;for&#x00A0;more&#x00A0;details.
+&#x00A0;<br />#
+&#x00A0;<br />#&#x00A0;&#x00A0;You&#x00A0;should&#x00A0;have&#x00A0;received&#x00A0;a&#x00A0;copy&#x00A0;of&#x00A0;the&#x00A0;GNU&#x00A0;General&#x00A0;Public&#x00A0;License
+&#x00A0;<br />#&#x00A0;&#x00A0;along&#x00A0;with&#x00A0;this&#x00A0;program;&#x00A0;if&#x00A0;not,&#x00A0;write&#x00A0;to&#x00A0;the&#x00A0;Free&#x00A0;Software
+&#x00A0;<br />#&#x00A0;&#x00A0;Foundation,&#x00A0;Inc.,&#x00A0;59&#x00A0;Temple&#x00A0;Place&#x00A0;-&#x00A0;Suite&#x00A0;330,&#x00A0;Boston,&#x00A0;MA&#x00A0;&#x00A0;02111-1307,&#x00A0;USA.
+&#x00A0;<br />#
+&#x00A0;<br />#&#x00A0;&#x00A0;Revision:
+&#x00A0;<br />#&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;$Id$
+&#x00A0;<br />#
+&#x00A0;<br />#
+&#x00A0;<br />
+&#x00A0;<br />use&#x00A0;File::chdir;
+&#x00A0;<br />use&#x00A0;HTML::Entities;
+&#x00A0;<br />
+&#x00A0;<br />
+&#x00A0;<br />print&#x00A0;~\n\nLedger-SMB&#x00A0;login:&#x00A0;~;
+&#x00A0;<br />my&#x00A0;$login&#x00A0;=&#x00A0;&#x003C;STDIN&#x003E;;
+&#x00A0;<br />chomp($login);
+&#x00A0;<br />
+&#x00A0;<br />
+&#x00A0;<br />print&#x00A0;~\nLedger-SMB&#x00A0;password:&#x00A0;~;
+&#x00A0;<br />system(~stty&#x00A0;-echo~);
+&#x00A0;<br />my&#x00A0;$pwd&#x00A0;=&#x00A0;&#x003C;STDIN&#x003E;;
+&#x00A0;<br />system(~stty&#x00A0;echo~);
+&#x00A0;<br />chomp($pwd);
+&#x00A0;<br />print&#x00A0;~\n\n~;
+&#x00A0;<br />
+&#x00A0;<br />$cmd&#x00A0;=&#x00A0;~login=~&#x00A0;.&#x00A0;$login&#x00A0;.&#x00A0;&#8217;&amp;password=&#8217;&#x00A0;.&#x00A0;$pwd&#x00A0;.&#x00A0;&#8217;&amp;path=bin&amp;action=login&#8217;;
+&#x00A0;<br />
+&#x00A0;<br />$signin&#x00A0;=&#x00A0;runLScmd(~./login.pl~,$cmd);
+&#x00A0;<br />
+&#x00A0;<br />if&#x00A0;(&#x00A0;$signin&#x00A0;=~&#x00A0;m/Error:/&#x00A0;)&#x00A0;{
+
+
+&#x00A0;<br />
+&#x00A0;<br />print&#x00A0;~\nLogin&#x00A0;error\n~;
+&#x00A0;<br />exit;
+&#x00A0;<br />
+&#x00A0;<br />}
+&#x00A0;<br />
+&#x00A0;<br />
+&#x00A0;<br />while&#x00A0;(&#x003C;main::DATA&#x003E;)&#x00A0;{
+&#x00A0;<br />
+&#x00A0;<br />chomp;
+&#x00A0;<br />@rec&#x00A0;=&#x00A0;split(/\|/);
+&#x00A0;<br />
+&#x00A0;<br />$arg&#x00A0;=&#x00A0;&#8217;path=bin/mozilla&amp;login=&#8217;&#x00A0;.&#x00A0;$login&#x00A0;.&#x00A0;&#8217;&amp;password=&#8217;&#x00A0;.&#x00A0;$pwd&#x00A0;.
+&#x00A0;<br />&#8217;&amp;action=&#8217;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;.&#x00A0;escape(substr($rec[0],0,35))&#x00A0;.
+&#x00A0;<br />&#8217;&amp;db=&#8217;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;.&#x00A0;$rec[1]&#x00A0;.
+&#x00A0;<br />&#8217;&amp;name=&#8217;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;.&#x00A0;escape(substr($rec[2],0,35))&#x00A0;.
+&#x00A0;<br />&#8217;&amp;vendornumber=&#8217;&#x00A0;.&#x00A0;$rec[3]&#x00A0;.
+&#x00A0;<br />&#8217;&amp;address1=&#8217;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;.&#x00A0;escape(substr($rec[4],0,35))&#x00A0;.
+&#x00A0;<br />&#8217;&amp;address2=&#8217;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;.&#x00A0;escape(substr($rec[5],0,35))&#x00A0;.
+&#x00A0;<br />&#8217;&amp;city=&#8217;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;.&#x00A0;escape(substr($rec[6],0,35))&#x00A0;.
+&#x00A0;<br />&#8217;&amp;state=&#8217;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;.&#x00A0;escape(substr($rec[7],0,35))&#x00A0;.
+&#x00A0;<br />&#8217;&amp;zipcode=&#8217;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;.&#x00A0;escape(substr($rec[8],0,35))&#x00A0;.
+&#x00A0;<br />&#8217;&amp;country=&#8217;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;.&#x00A0;escape(substr($rec[9],0,35))&#x00A0;.
+&#x00A0;<br />&#8217;&amp;phone=&#8217;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;.&#x00A0;escape(substr($rec[10],0,20))&#x00A0;.
+&#x00A0;<br />&#8217;&amp;tax_2150=1&#8217;&#x00A0;.
+&#x00A0;<br />&#8217;&amp;taxaccounts=2150&#8217;&#x00A0;.
+&#x00A0;<br />&#8217;&amp;taxincluded=0&#8217;&#x00A0;.
+&#x00A0;<br />&#8217;&amp;terms=0&#8217;;
+&#x00A0;<br />
+&#x00A0;<br />$rc=runLScmd(~./ct.pl~,$arg);
+&#x00A0;<br />
+&#x00A0;<br />if&#x00A0;($rc&#x00A0;=~&#x00A0;m/Vendor&#x00A0;saved!/)&#x00A0;{
+&#x00A0;<br />
+&#x00A0;<br />print&#x00A0;~$rec[2]&#x00A0;SAVED\n~;
+&#x00A0;<br />
+&#x00A0;<br />}&#x00A0;else&#x00A0;{
+&#x00A0;<br />
+&#x00A0;<br />print&#x00A0;~$rec[2]&#x00A0;ERROR\n~;
+&#x00A0;<br />
+&#x00A0;<br />}
+&#x00A0;<br />
+&#x00A0;<br />}
+&#x00A0;<br />
+&#x00A0;<br />
+&#x00A0;<br />$cmd&#x00A0;=&#x00A0;~login=~&#x00A0;.&#x00A0;$login&#x00A0;.&#x00A0;&#8217;&amp;password=&#8217;&#x00A0;.&#x00A0;$pwd&#x00A0;.&#x00A0;&#8217;&amp;path=bin&amp;action=logout&#8217;;
+&#x00A0;<br />
+&#x00A0;<br />$signin&#x00A0;=&#x00A0;runLScmd(~./login.pl~,$cmd);
+&#x00A0;<br />
+&#x00A0;<br />if&#x00A0;(&#x00A0;$signin&#x00A0;=~&#x00A0;m/Error:/&#x00A0;)&#x00A0;{
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;print&#x00A0;~\nLogout&#x00A0;error\n~;
+&#x00A0;<br />
+
+
+&#x00A0;<br />}
+&#x00A0;<br />
+&#x00A0;<br />exit;
+&#x00A0;<br />
+&#x00A0;<br />
+&#x00A0;<br />#*******************************************************
+&#x00A0;<br />#&#x00A0;Subroutines
+&#x00A0;<br />#*******************************************************
+&#x00A0;<br />
+&#x00A0;<br />
+&#x00A0;<br />sub&#x00A0;runLScmd&#x00A0;{
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;my&#x00A0;$cmd&#x00A0;&#x00A0;=&#x00A0;shift;
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;my&#x00A0;$args&#x00A0;=&#x00A0;shift;
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;my&#x00A0;$i&#x00A0;&#x00A0;&#x00A0;&#x00A0;=&#x00A0;0;
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;my&#x00A0;$results;
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;local&#x00A0;$CWD&#x00A0;=&#x00A0;~/usr/local/ledger-smb/~;
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;$cmd&#x00A0;=&#x00A0;$cmd&#x00A0;.&#x00A0;~&#x00A0;\~~&#x00A0;.&#x00A0;$args&#x00A0;.&#x00A0;~\~~;
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;$results&#x00A0;=&#x00A0;&#8216;$cmd&#x00A0;2&#x003E;&amp;1&#8216;;
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return&#x00A0;$results;
+&#x00A0;<br />
+&#x00A0;<br />}
+&#x00A0;<br />
+&#x00A0;<br />sub&#x00A0;escape&#x00A0;{
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;my&#x00A0;$str&#x00A0;=&#x00A0;shift;
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;($str)&#x00A0;{
+&#x00A0;<br />
+&#x00A0;<br />decode_entities($str);
+&#x00A0;<br />$str&#x00A0;=~&#x00A0;s/([^a-zA-Z0-9_.-])/sprintf(~%%%02x~,&#x00A0;ord($1))/ge;
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;return&#x00A0;$str;
+&#x00A0;<br />
+&#x00A0;<br />}
+&#x00A0;<br />
+&#x00A0;<br />
+&#x00A0;<br />#*******************************************************
+&#x00A0;<br />#&#x00A0;Record&#x00A0;Format
+&#x00A0;<br />#*******************************************************
+&#x00A0;<br />#
+&#x00A0;<br />#&#x00A0;action&#x00A0;|&#x00A0;db&#x00A0;|&#x00A0;name&#x00A0;|&#x00A0;vendornumber&#x00A0;|&#x00A0;address1&#x00A0;|&#x00A0;address2&#x00A0;|&#x00A0;city&#x00A0;|&#x00A0;state&#x00A0;|&#x00A0;zipcode&#x00A0;|&#x00A0;country&#x00A0;|&#x00A0;phone
+&#x00A0;<br />#
+&#x00A0;<br />
+&#x00A0;<br />__END__
+&#x00A0;<br />save|vendor|Parts&#x00A0;are&#x00A0;Us|1377|238&#x00A0;Riverview|Suite&#x00A0;11|Cheese&#x00A0;Head|WI|56743|USA|555-123-3322|
+&#x00A0;<br />save|vendor|Widget&#x00A0;Heaven|1378|41&#x00A0;S.&#x00A0;Riparian&#x00A0;Way||Show&#x00A0;Me|MO|39793|USA|555-231-3309|
+
+
+&#x00A0;<br />save|vendor|Consolidated&#x00A0;Spackle|1379|1010&#x00A0;Binary&#x00A0;Lane|Dept&#x00A0;1101|Beverly&#x00A0;Hills|CA|90210|USA|555-330-7639&#x00A0;x772|
+&#x00A0;<br />
+&#x00A0;<br />
+</div>
+</td></tr></table>
+<!--l. 2635--><p class="nopar">
+
+
+</p>
+ <h1 class="partHead"><span class="titlemark">Part&#x00A0;II<br /></span><a
+ id="x1-174000II"></a>Technical Overview</h1>
+ <h3 class="sectionHead"><span class="titlemark">17 </span> <a
+ id="x1-17500017"></a>Basic Architecture</h3>
+<!--l. 2646--><p class="noindent">Ledger-SMB is a web-based Perl program that interfaces with PostgreSQL using the relevant Perl modules.
+The code is well partitioned, and the main operation modules are written in an object oriented
+way.
+</p><!--l. 2651--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">17.1 </span> <a
+ id="x1-17600017.1"></a>The Software Stack</h4>
+ <hr class="figure" /><div class="figure"
+><table class="figure"><tr class="figure"><td class="figure"
+>
+
+
+<a
+ id="x1-1760018"></a>
+
+
+<!--l. 9--><p class="center"> <img
+src="LedgerSMB-manual6x.png" alt="PICT" />
+<br /></p><table class="caption"
+><tr style="vertical-align:baseline;" class="caption"><td class="id">Figure&#x00A0;8: </td><td
+class="content">The Ledger-SMB software stack in a Typical Implementation</td></tr></table><!--tex4ht:label?: x1-1760018 -->
+
+
+ </td></tr></table></div><hr class="endfigure" />
+<!--l. 2662--><p class="indent"> Ledger-SMB runs in a Perl interpreter. I do not currently know if it is possible to run it with Perl2C or
+other language converters to run in other environments. However, except for high-capacity environments,
+Perl is a good language choice for this sort of program.
+</p><!--l. 2667--><p class="indent"> Ledger-SMB used to support DB2 and Oracle as well as PostgreSQL. However, currently some of the
+functionality is implemented using PostgreSQL user-defined functions. These would need to be ported to
+other database managers in order to make the software work on these. It should not be too hard, but the fact
+that it has not been done yet may mean that there is no real demand for running the software under other
+RDBMS&#8217;s.
+</p><!--l. 2674--><p class="indent"> One can substitute other web servers for Apache. Normally Ledger-SMB is run as a CGI program
+but it may be possible to run it in the web server process (note that this may not be entirely
+thread-safe).
+</p><!--l. 2678--><p class="indent"> The operating system can be any that supports a web server and Perl (since PostgreSQL need not run on
+the same system). However, there are a few issues running Ledger-SMB on Windows (most notably in trying
+to get Postscript documents to print properly).
+</p><!--l. 2683--><p class="indent"> On the client side, any web-browser will work. Currently, the layout is different for Lynx (which doesn&#8217;t
+support frames), and the layout is not really useful under eLinks (the replacement for Lynx which does
+support frames). Some functionality requires Javascript to work properly, though the application is usable
+without these features.
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">17.2 </span> <a
+ id="x1-17700017.2"></a>Capacity Planning</h4>
+<!--l. 2692--><p class="noindent">Some companies may ask how scalable Ledger-SMB is. In general, it is assumed that few companies are
+going to have a need for a high-concurrency accounting system. However, with all the features available in
+Ledger-SMB, the staff that may have access to some of the application may be senior enough to make the
+question worthwhile.
+</p><!--l. 2698--><p class="indent"> This question also becomes more important when companies might look at integrating Ledger-SMB with
+a CRM solution, online store, or other environment. This section looks at a number of the known issues and
+their solutions.
+</p><!--l. 2704--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">17.2.1 </span> <a
+ id="x1-17800017.2.1"></a>Scalability Strategies</h5>
+<!--l. 2706--><p class="noindent">Ledger-SMB is a fairly standard web-based application. However, sometimes the database schema changes
+during upgrades. In these cases, it becomes impossible to use different versions of the software against the
+same database version safely. Ledger-SMB checks the version of the database and if the version is higher than
+the version of the software that is running, will refuse to run.
+</p><!--l. 2713--><p class="indent"> Therefore although one strategy might be to run several front-end web servers with Ledger-SMB, in
+reality this can be a bit of a problem. One solution is to take half of the front-end servers off-line while
+doing the initial upgrade, and then take the other offline to upgrade when these are brought back
+online.
+</p><!--l. 2719--><p class="indent"> The database manager is less scalable in the sense that one cannot just add more database servers and
+expect to carry on as normal. However, aside from the known issues listed below, there are few performance
+issues with it. If complex reports are necessary, these can be moved to a replica database (perhaps using
+Slony-I).
+</p><!--l. 2725--><p class="indent"> If this solution is insufficient for database scalability, one might be able to move staff who do not need
+real-time access to new entries onto a PG-Pool/Slony-I cluster where new transactions are entered on the
+master and other data is looked up on the replica. In certain circumstances, one can also offload a number of
+other queries from the master database in order to minimize the load. Ledger-SMB has very few issues in the
+
+
+scalability of the application.
+</p><!--l. 2734--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">17.2.2 </span> <a
+ id="x1-17900017.2.2"></a>Database Maintenance</h5>
+<!--l. 2736--><p class="noindent">PostgreSQL uses a technique called Multi-version Concurrency Control (MVCC) to provide a snapshot of the
+database at the beginning of a statement or transaction (depending on the transaction isolation level). When a
+row is updated, PostgreSQL leaves the old row in the database, and inserts a new version of that row into the
+table. Over time, unless those old rows are removed, performance can degrade as PostgreSQL has to search
+through all the old versions of the row in order to determine which one ought to be the current
+one.
+</p><!--l. 2745--><p class="indent"> Due to the way the SQL statements are executed in Ledger-SMB, most inserts will also create a dead
+row.
+</p><!--l. 2748--><p class="indent"> A second problem occurs in that each transaction is given a transaction id. These id&#8217;s are numbered using
+32-bit integers. If the transaction id wraps around (prior to 8.1), data from transactions that appear
+(due to the wraparound) to be in the future suddenly becomes inaccessible. This problem was
+corrected in PostgreSQL 8.1, where the database will refuse to accept new transactions if the
+transaction ID gets too close to a wraparound. So while the problem is not as serious in 8.1, the
+application merely becomes inaccessible rather than displaying apparent data loss. Wraparound
+would occur after about a billion transactions between all databases running on that instance of
+PostgreSQL.
+</p><!--l. 2759--><p class="indent"> Prior to 8.1, the main way to prevent both these problems was to run a periodic vacuumdb command
+from cron (UNIX/Linux) or the task scheduler (Windows). In 8.1 or later, autovacuum capabilities are part of
+the back-end and can be configured with the database manager. See the PostgreSQL documentation for
+treatment of these subjects.
+</p><!--l. 2765--><p class="indent"> In general, if performance appears to be slowly degrading, one should try to run vacuumdb -z from the
+shell in order to attempt to reclaim space and provide the planner with accurate information about the size
+and composition of the tables. If this fails, then one can go to other methods of determining the bottleneck
+and what to do about it.
+</p><!--l. 2773--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">17.2.3 </span> <a
+ id="x1-18000017.2.3"></a>Known issues</h5>
+<!--l. 2775--><p class="noindent">The PostgreSQL planner assumes a minimum page size of ten pages for a physically empty table. The
+reasoning behind this choice is that a table could grow rapidly and one could end up with bad database
+performance if the planner assumes a very small table.
+</p><!--l. 2780--><p class="indent"> However, if you end up with joins between a very large table with millions of rows and a physically
+empty table, one can end up with a very bad query plan. In this case, the planner will choose a nested loop
+join and run through this loop for every row in the large table. As a result, performance will suddenly drop
+once the large table becomes too large to effectively do index scans of the join criteria on both tables.
+This problem most often occurs when people have no warehouses, departments, or projects
+defined and are running systems with a large number of transactions (such as a point of sale
+environment).
+</p><!--l. 2790--><p class="indent"> Last time I saw this problem, the server would wait for thirty seconds to display a new point of sale
+screen while the server CPU activity would spike to 100%.
+</p><!--l. 2794--><p class="indent"> One solution is to define one warehouse, department, and project, and then run vacuumdb -z from the
+shell to force the planner to acknowledge these tables as single-row tables. The other option is to go into the
+source code and edit the database queries to omit unused tables.
+
+
+</p><!--l. 2800--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">18 </span> <a
+ id="x1-18100018"></a>Customization Possibilities</h3>
+<!--l. 2802--><p class="noindent">Ledger-SMB is designed to be customized relatively easily and rapidly. In general, the source
+code is well written and compartmentalized. This section covers the basic possibilities involving
+customization.
+</p><!--l. 2807--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">18.1 </span> <a
+ id="x1-18200018.1"></a>Brief Guide to the Source Code</h4>
+<!--l. 2809--><p class="noindent">Ledger-SMB is an application with over 34000 lines of code. While it is not possible to cover the entire
+application here, a brief overview of the source code is in order.
+</p><!--l. 2813--><p class="indent"> In the root of the install directory, one will find a setup.pl program, a number of other .pl programs, and a
+number of directories. The setup.pl program is used to update or install Ledger-SMB. The other .pl programs
+provide a basic set of services for the framework (including authentication) and then pass the work on to the
+data entry screen file in the bin directory.
+</p><!--l. 2820--><p class="indent"> The bin directory contains another directory for each terminal type. The main two offered are lynx and
+mozilla. Lynx would be used for web browsers that do not support frames and is ideal for a text-mode VGA
+terminal. Mozilla is the terminal type used for most other web browsers. The perl files within these
+directories provides the user interface of the software.
+</p><!--l. 2827--><p class="indent"> The css directory in the root install directory contains CSS documents to provide various stylesheets one
+can select for changing various aspects of the look and feel of the application.
+</p><!--l. 2831--><p class="indent"> The locale directory contains translation files that Ledger-SMB uses to translate between different
+languages. One could add translations to these files if necessary.
+</p><!--l. 2835--><p class="indent"> The LSMB directory is where the Perl modules reside that provide the core business logic in Ledger-SMB.
+These modules provide functionality such as form handling, email capabilities, and access to the database
+through its at least partially object oriented API.
+</p><!--l. 2840--><p class="indent"> Finally, the sql directory provides the database schemas and upgrade scripts.
+</p><!--l. 2844--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">18.2 </span> <a
+ id="x1-18300018.2"></a>Data Entry Screens</h4>
+<!--l. 2846--><p class="noindent">One can customize the data entry screens to optimize work flow, display additional information,
+etc.
+</p><!--l. 2850--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">18.2.1 </span> <a
+ id="x1-18400018.2.1"></a>Examples</h5>
+<!--l. 2852--><p class="noindent">We set up hot keys for payment lines, automatically focused the keyboard on the last partnumber field,
+removed separate print and post buttons to ensure that invoices were always printed and posted together,
+and removed the ability to print to the screen, and even the ability to scan items in when an invoice was
+received (using a portable data terminal) and import this data into Ledger-SMB. Finally we added the ability
+to reconcile the till online in a paperless manner.
+</p><!--l. 2860--><p class="indent"> For another customer, we added the ability to print AR invoices in plain text format and added templates
+(based on the POS sales template) to do this.
+
+
+</p><!--l. 2865--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">18.3 </span> <a
+ id="x1-18500018.3"></a>Extensions</h4>
+<!--l. 2867--><p class="noindent">One can add functionality to the Perl modules in the LSMB directory and often add missing functions
+easily.
+</p><!--l. 2871--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">18.3.1 </span> <a
+ id="x1-18600018.3.1"></a>Examples</h5>
+<!--l. 2873--><p class="noindent">For one customer, we added a module to take data from a portable data terminal collected when inventory
+items were taken and use that to add shrinkage and loss adjustments. We also extended the parts model to
+add a check id flag (for alcohol sales) and added this flag to the user interface.
+</p><!--l. 2879--><p class="indent"> For another customer, we added a complex invoice/packing slip tracking system that allowed one to
+track all the printed documents associated with an order or invoice.
+</p><!--l. 2884--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">18.4 </span> <a
+ id="x1-18700018.4"></a>Templates</h4>
+<!--l. 2886--><p class="noindent">As noted before templates can be modified or extended, though sometimes this involves extending the user
+interface scripts. Most templates are easy enough to modify.
+</p><!--l. 2891--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">18.4.1 </span> <a
+ id="x1-18800018.4.1"></a>Examples</h5>
+<!--l. 2893--><p class="noindent">For one customer we added text-only invoices for AR and AP transactions/Invoices and an ability to use
+Javascript in them to automatically print them on load.
+</p><!--l. 2898--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">18.5 </span> <a
+ id="x1-18900018.5"></a>Reports</h4>
+<!--l. 2900--><p class="noindent">The fact that all the data is available within the database manager is a huge advantage of Ledger-SMB over
+Quickbooks and the like. The rapid development of reports allows for one to easily develop reports of any
+sort within Ledger-SMB.
+</p><!--l. 2906--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">18.5.1 </span> <a
+ id="x1-19000018.5.1"></a>Examples</h5>
+<!--l. 2908--><p class="noindent">For one customer, we developed a report of parts sold and received during arbitrary time frames. The report
+allows one to go back and look up the invoices involved.
+
+
+</p><!--l. 2913--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">19 </span> <a
+ id="x1-19100019"></a>Integration Possibilities</h3>
+<!--l. 2915--><p class="noindent">An open database system and programming API allows for many types of integration. There are some
+challenges, but in the end, one can integrate a large number of tools.
+</p><!--l. 2920--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">19.1 </span> <a
+ id="x1-19200019.1"></a>Reporting Tools</h4>
+<!--l. 2922--><p class="noindent">Any reporting tool which can access the PostgreSQL database can be used with Ledger-SMB for custom
+reporting. These can include programs like Microsoft Access and Excel (using the ODBC drivers), PgAccess
+(A PostgreSQL front-end written in TCL/Tk with a similar feel to Access), Rekall, Crystal Reports,
+OpenOffice and more.
+</p><!--l. 2929--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">19.1.1 </span> <a
+ id="x1-19300019.1.1"></a>Examples</h5>
+<!--l. 2931--><p class="noindent">We have created spreadsheets of the summaries of activity by day and used the ODBC driver to import these
+into Excel. Excel can also read HTML tables, so one can use PostgreSQL to create an HTML table of the result
+and save it with a .xls extension so that Windows opens it with Excel. These could then be served via the
+same web server that serves Ledger-SMB.
+</p><!--l. 2939--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">19.2 </span> <a
+ id="x1-19400019.2"></a>Line of Business Tools on PostgreSQL</h4>
+<!--l. 2941--><p class="noindent">Various line of business tools have been written using PostgreSQL in large part due to the fact that it is far
+more mature than MySQL in areas relating to data integrity enforcement, transactional processing, and the
+like. These tools can be integrated with Ledger-SMB in various ways. One could integrate this program with
+the HERMES CRM framework, for example.
+</p><!--l. 2949--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">19.2.1 </span> <a
+ id="x1-19500019.2.1"></a>Known Issues</h5>
+<!--l. 2951--><p class="noindent">Ledger-SMB uses a single &#8217;id&#8217; sequence across many tables. At the same time it is expected that these tables
+do not have identical id values in their records as they are used as a sort of pseudo-foreign key by the
+acc_trans table which stores the financial transaction information.
+</p><!--l. 2957--><p class="indent"> If the integration solution does not keep this in mind, it is possible to create a situation where the account
+transactions are ambiguously associated with a number of different types of financial transactions. This
+would lead to a large number of problems.
+</p><!--l. 2963--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">19.2.2 </span> <a
+ id="x1-19600019.2.2"></a>Strategies</h5>
+
+
+<!--l. 2965--><p class="noindent">In general, it is advisable to run all such programs that benefit from integration in the same database but
+under different schemas. This allows PostgreSQL to become the main method of synchronizing the data in
+real time. However, sometimes this can require dumping the database, recreating the tables etc. in a different
+schema and importing the data back into Ledger-SMB.
+</p><!--l. 2972--><p class="indent"> One possibility for this sort of integration is to use database triggers to replicate the data between the
+applications in real-time. This can avoid the main issue of duplicate id&#8217;s. One issue that can occur however
+relates to updates. If one updates a customer record in HERMES, for example, how do we know which
+record to update in Ledger-SMB? There are solutions to this problem but they do require some
+forethought.
+</p><!--l. 2979--><p class="indent"> A second possibility is to use views to allow one application to present the data from the other as its own.
+This can be cleaner regarding update issues, but it can also pose issues regarding duplicate id
+fields.
+</p><!--l. 2985--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">19.2.3 </span> <a
+ id="x1-19700019.2.3"></a>Examples</h5>
+<!--l. 2987--><p class="noindent">Others have integrated L&#8217;ane POS and Ledger-SMB in order to make it work better with touch screen
+devices. Still others have successfully integrated Ledger-SMB and Interchange. In both cases, I believe that
+triggers were used to perform the actual integration.
+</p><!--l. 2993--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">19.3 </span> <a
+ id="x1-19800019.3"></a>Line of Business Tools on other RDBMS&#8217;s</h4>
+<!--l. 2995--><p class="noindent">Often there are requests to integrate Ledger-SMB with applications like SugarCRM, OSCommerce, and other
+applications running on MySQL or other database managers. This is a far more complex field and it requires
+a great deal more effort than integrating applications within the same database.
+</p><!--l. 3002--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">19.3.1 </span> <a
+ id="x1-19900019.3.1"></a>Strategies</h5>
+<!--l. 3004--><p class="noindent">Real-time integration is not always possible. MySQL does not support the SQL extension SQL/MED
+(Management of External Data) that supports non-MySQL data sources so it is not possible to replicate the
+data in real-time. Therefore one generally resorts to integrating the system using time-based updates.
+Replication may be somewhat error-prone unless the database manager supports triggers (first added to
+MySQL in 5.0) or other mechanisms to ensure that all changed records can be detected and replicated. In
+general, it is usually advisable to add two fields to the record&#8211; one that shows the insert time and one that
+shows the last update.
+</p><!--l. 3015--><p class="indent"> Additionally, I would suggest adding additional information to the Ledger-SMB tables so that you can
+track the source record from the other application in the case of an update.
+</p><!--l. 3019--><p class="indent"> In general, one must write replication scripts that dump the information from one and add it to the other.
+This must go both ways.
+</p><!--l. 3023--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">19.3.2 </span> <a
+ id="x1-20000019.3.2"></a>Integration Products and Open Source Projects</h5>
+
+
+<!--l. 3025--><p class="noindent">While many people write Perl scripts to accomplish the replication, an open source project exists called
+DBI-Link. This package requires PL/Perl to be installed in PostgreSQL, and it allows PostgreSQL to present
+any data accessible via Perl&#8217;s DBI framework as PostgreSQL tables. DBI-Link can be used to allow
+PostgreSQL to pull the data from MySQL or other database managers.
+</p><!--l. 3032--><p class="indent"> DBI-Link can simplify the replication process by reducing the operation to a set of SQL queries.
+</p><!--l. 3036--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">20 </span> <a
+ id="x1-20100020"></a>Customization Guide</h3>
+<!--l. 3038--><p class="noindent">This section is meant to provide a programmer with an understanding of the technologies enough
+information to get up to speed quickly and minimize the time spent familiarizing themselves with the
+software. Topics in this section are listed in order of complexity. As it appeals to a narrower audience than
+previous discussions of this topic, it is listed separately.
+</p><!--l. 3046--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">20.1 </span> <a
+ id="x1-20200020.1"></a>General Information</h4>
+<!--l. 3048--><p class="noindent">The main framework scripts (the ar.pl, ap.pl, etc. scripts found in the root of the installation directory) handle
+such basic features as instantiating the form object, ensuring that the user is logged in, and the
+like. They then pass the execution off to the user interface script (usually in the bin/mozilla
+directory).
+</p><!--l. 3054--><p class="indent"> Ledger-SMB in many ways may look sort of object oriented in its design, but in reality, it is far more
+data-driven than object oriented. The Form object is used largely as a global symbol table and also as a
+collection of fundamental routines for things like database access. It also breaks down the query string into
+sets of variables which are stored in its attribute hash table.
+</p><!--l. 3061--><p class="indent"> In essence one can and often will store all sorts of data structures in the primary Form object. These can
+include almost anything. It is not uncommon to see lists of hashes stored as attributes to a Form
+object.
+</p><!--l. 3067--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">20.2 </span> <a
+ id="x1-20300020.2"></a>Customizing Templates</h4>
+<!--l. 3069--><p class="noindent">Templates are used to generate printed checks, invoices, receipts, and more in Ledger-SMB. Often the format
+of these items does not fit a specific set of requirements and needs to be changed. This document will not
+include <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span> or HTML instruction, but will include a general introduction to editing templates. Also, this
+is not intended to function as a complete reference.
+</p><!--l. 3076--><p class="indent"> Template instructions are contained in tags &#x003C;?lsmb and ?&#x003E;. The actual parsing is done by the
+parse_template function in LSMB/Form.pm.
+</p><!--l. 3080--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">20.2.1 </span> <a
+ id="x1-20400020.2.1"></a>Page Breaks in <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span></h5>
+<!--l. 3082--><p class="noindent">The first tag one will see with <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;templates is &#x003C;?lsmb pagebreak num1 num2 num3 ?&#x003E;
+</p>
+
+
+ <ul class="itemize1">
+ <li class="itemize">num1 represents characters per line
+ </li>
+ <li class="itemize">num2 represents lines on first page
+ </li>
+ <li class="itemize">num3 represents lines on second page.</li></ul>
+<!--l. 3090--><p class="noindent">The pagebreak block is terminated by &#x003C;?lsmb end pagebreak ?&#x003E;. Any text within the pagebreak block is ignored
+by the template.
+</p><!--l. 3094--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">20.2.2 </span> <a
+ id="x1-20500020.2.2"></a>Conditionals</h5>
+ <ul class="itemize1">
+ <li class="itemize">&#x003C;?lsmb if not varname ?&#x003E;tells the parser to include the next block only if varname was posted
+ by the submitting form (or set via the form hash elsewhere in the scripts). The block ends with
+ &#x003C;?lsmb end varname ?&#x003E;
+ </li>
+ <li class="itemize">&#x003C;?lsmb if varname ?&#x003E;tells the parser to include the block if varname was posted in the
+ submitting form (or set via the form hash elsewhere in the scripts). The block ends with &#x003C;?lsmb
+ end varname ?&#x003E;
+ </li>
+ <li class="itemize">Lines conditionals are otherwise ignored by the parser.
+ </li>
+ <li class="itemize">Conditionals cannot be nested, but IF&#8217;s can be nested inside loops.</li></ul>
+<!--l. 3109--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">20.2.3 </span> <a
+ id="x1-20600020.2.3"></a>Loops</h5>
+<!--l. 3111--><p class="noindent">&#x003C;?lsmb foreach varname ?&#x003E;is used to iterate through a list of vars set by the user interface system (usually
+one of the files under bin/mozilla (or otherwise). The block is repeated for each varname in a list. Block ends
+with &#x003C;?lsmb end varname ?&#x003E;
+</p><!--l. 3117--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">20.2.4 </span> <a
+ id="x1-20700020.2.4"></a>File Inclusion</h5>
+ <ul class="itemize1">
+ <li class="itemize">Files may be included with the syntax &#x003C;?lsmb
+ include template_name ?&#x003E;where templatename is the name of the template within the current
+ template directory (usually templates/$username/). Note that for <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;templates, the input
+ or include functionalities might be better suited for many many things.
+
+
+ </li>
+ <li class="itemize">Cannot be used with conditionals
+ </li>
+ <li class="itemize">Filenames cannot use slashes (/) or .. due to directory transversal considerations.
+ </li>
+ <li class="itemize">Files can force other files to be included, but the same file cannot be included more than once.</li></ul>
+<!--l. 3133--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">20.2.5 </span> <a
+ id="x1-20800020.2.5"></a>Cross-referencing and multiple passes of <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span></h5>
+<!--l. 3135--><p class="noindent">In <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;cross-references require two passes with latex to resolve. This is because the type is set page by
+page and the program really doesn&#8217;t know on which page a given reference will fall. This becomes an
+even larger issue where floats are concerned as they can move between pages for formatting
+reasons.
+</p><!--l. 3141--><p class="indent"> In rare cases, cross-references may point at incorrect pages even with two passes (if the inclusion of the
+cross-reference data moves the object to another page). In this case you will need to use three passes of
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;in order to have accurate references.
+</p><!--l. 3146--><p class="indent"> Ledger-SMB as of the time of this writing (2.6.8) only makes one pass at the <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;file. To
+force it to make more than one pass, open Form.pm with your favorite text editor. Look for the
+line:
+</p><!--l. 3150--><p class="indent"> system("latex &#8211;interaction=nonstopmode $self-&#x003E;<span
+class="cmsy-10">{ </span>tmpfile<span
+class="cmsy-10">}</span>&#x00A0;&#x003E;&#x00A0;$ self-&#x003E;<span
+class="cmsy-10">{ </span>tmpfile<span
+class="cmsy-10">} </span>.err");
+</p><!--l. 3155--><p class="indent"> Duplicate this line for two passes, or add two copies if you need three passes.
+</p><!--l. 3159--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">20.2.6 </span> <a
+ id="x1-20900020.2.6"></a>Variable Substitution</h5>
+<!--l. 3161--><p class="noindent">The following format is used for variable substitution:
+</p>
+ <ul class="itemize1">
+ <li class="itemize">&#x003C;?lsmb varname options ?&#x003E;Options are one or more (whitespace separated) of:
+ <ul class="itemize2">
+ <li class="itemize">align=left/right/center
+ </li>
+ <li class="itemize">width=chars where chars is the width in characters before wrapping
+ </li>
+ <li class="itemize">offset=chars where chars is the number of spaces to (depending on alignment).</li></ul>
+ </li></ul>
+
+
+<!--l. 3175--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">20.3 </span> <a
+ id="x1-21000020.3"></a>Customizing Forms</h4>
+<!--l. 3177--><p class="noindent">Data entry forms and other user interface pieces are in the bin directory. In Ledger-SMB 1.0.0 and later,
+symlinks are not generally used.
+</p><!--l. 3180--><p class="indent"> Each module is identified with a two letter combination: ar, ap, cp, etc. These combinations are generally
+explained in the comment headers on each file.
+</p><!--l. 3184--><p class="indent"> Execution in these files begins with the function designated by the form-&#x003E;<span
+class="cmsy-10">{</span>action<span
+class="cmsy-10">} </span>variable. This variable
+is usually derived from configuration parameters in the menu.ini or the name of the button that was clicked
+on to submit the previous page. Due to localization requirements, the following process is used to determine
+the appropriate action taken:
+</p><!--l. 3191--><p class="indent"> The $locale-&#x003E;getsub routine is called. This routine checks the locale package to determine if the value
+needs to be translated back into an appropriate LSMB function. If not, the variable is lower-cased, and all
+spaces are converted into underscores.
+</p><!--l. 3196--><p class="indent"> In general there is no substitute for reading the code to understand how this can be customized and how
+one might go about doing this.
+</p><!--l. 3200--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">20.4 </span> <a
+ id="x1-21100020.4"></a>Customizing Modules</h4>
+<!--l. 3202--><p class="noindent">The Perl Modules (.pm files) in the LedgerSMB directory contain the main business logic of the application
+including all database access. Most of the modules are relatively easy to follow, but the code quality leaves
+something to be desired. The API calls themselves are likely to be replaced in the future, so work on
+documenting API calls is now focused solely on those calls that are considered to be stable. At the
+moment, the best place to request information on the API&#8217;s is on the Developmers&#8217; Email List
+(<a
+href="mailto:ledger-smb-devel@lists.sourceforge.net" >ledger-smb-devel@lists.sourceforge.net</a>).
+</p><!--l. 3211--><p class="indent"> Many of these modules have a fair bit of dormant code in them which was written for forthcoming
+features, such as payroll and bills of materials.
+</p><!--l. 3215--><p class="indent"> One can add a new module through the normal means and connect it to other existing modules.
+</p><!--l. 3219--><p class="noindent">
+</p>
+ <h5 class="subsubsectionHead"><span class="titlemark">20.4.1 </span> <a
+ id="x1-21200020.4.1"></a>Database Access</h5>
+<!--l. 3221--><p class="noindent">The $form object provides two methods for accessing the database. The $form-&#x003E;dbconnect(%myconfig) method
+commits each individual statement as its own transaction. The $form-&#x003E;dbconnect_noauto(%myconfig)
+method requires a manual commit. Both these functions are thin wrappers around the standard Perl DBI
+operations.
+</p><!--l. 3228--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">20.5 </span> <a
+ id="x1-21300020.5"></a>CLI Examples</h4>
+<!--l. 3229--><p class="noindent">Louis Moore contributed some SQL-Ledger CLI examples that still work for LedgerSMB. You can find his page at
+<span class="obeylines-h"><a
+href="http://www.sql-ledger.org/cgi-bin/nav.pl?page=contrib/moore.html&title=Louis%20B.%20Moore" class="url" >http://www.sql-ledger.org/cgi-bin/nav.pl?page=contrib/moore.html&amp;title=Louis%20B.%20Moore</a></span>.
+
+
+</p>
+ <h1 class="partHead"><span class="titlemark">Part&#x00A0;III<br /></span><a
+ id="x1-214000III"></a>Appendix</h1>
+ <h3 class="sectionHead"><span class="titlemark">A </span> <a
+ id="x1-215000A"></a>Where to Go for More Information</h3>
+<!--l. 3244--><p class="noindent">There are a couple of relevant sources of information on Ledger-SMB in particular.
+</p><!--l. 3247--><p class="indent"> The most important resources are the LedgerSMB web site (<span class="obeylines-h"><a
+href="http://www.ledgersmb.org" class="url" >http://www.ledgersmb.org</a></span>) and the email
+lists found at our Sourceforge site.
+</p><!--l. 3251--><p class="indent"> In addition, it is generally recommended that the main bookkeeper of a company using Ledger-SMB
+work through at least one accounting textbook. Which textbook is not as important as the fact that a textbook
+is used.
+</p><!--l. 3257--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">B </span> <a
+ id="x1-216000B"></a>Quick Tips</h3>
+<!--l. 3260--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">B.1 </span> <a
+ id="x1-217000B.1"></a>Understanding Shipping Addresses and Carriers</h4>
+<!--l. 3262--><p class="noindent">Each customer can have a default shipping address. This address is displayed prominantly in the add new
+customer screen. To change the shipping address for a single order, one can use the ship to button at the
+bottom of the quote, order, or invoice screen.
+</p><!--l. 3267--><p class="indent"> The carrier can be noted in the Ship Via field. However, this is a freeform field and is largely used as
+commentary (or instructions for the shipping crew).
+</p><!--l. 3272--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">B.2 </span> <a
+ id="x1-218000B.2"></a>Handling bad debts</h4>
+<!--l. 3274--><p class="noindent">In the event that a customer&#8217;s check bounces or a collection requirement is made, one can flag the customer&#8217;s
+account by setting the credit limit to a negative number.
+</p><!--l. 3278--><p class="indent"> If a debt needs to be written off, one can either use the allowance method (by writing it against the contra
+asset account of "Allowance for Bad Debts" or using the direct writeoff method where it is posted as an
+expense.
+</p><!--l. 3284--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">C </span> <a
+ id="x1-219000C"></a>Step by Steps for Vertical Markets</h3>
+<!--l. 3287--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">C.1 </span> <a
+ id="x1-220000C.1"></a>Common Installation Errors</h4>
+
+
+ <ul class="itemize1">
+ <li class="itemize">Ledger-SMB is generally best installed in its own directory outside of the wwwroot directory.
+ While it is possible to install it inside the wwwroot directory, the instructions and the faq don&#8217;t
+ cover the common problems here.
+ </li>
+ <li class="itemize">When the chart of accounts (COA) is altered such that it is no longer set up with appropriate
+ items, you can make it impossible to define goods and services properly. In general, until you
+ are familiar with the software, it is best to rename and add accounts rather than deleting them.</li></ul>
+<!--l. 3301--><p class="noindent">
+</p>
+ <h4 class="subsectionHead"><span class="titlemark">C.2 </span> <a
+ id="x1-221000C.2"></a>Retail With Light Manufacturing</h4>
+<!--l. 3303--><p class="noindent">For purposes of this example we will use a business that assembles computers and sells them on a retail
+store.
+</p><!--l. 3306--><p class="indent">
+ </p><ol class="enumerate1" >
+ <li class="enumerate"><a
+ id="x1-221002x1"></a>Install Ledger-SMB.
+ </li>
+ <li class="enumerate"><a
+ id="x1-221004x2"></a>Set preferences, and customize chart of accounts.
+ <!--l. 3310--><p class="noindent">
+ </p><ol class="enumerate2" >
+ <li class="enumerate"><a
+ id="x1-221006x1"></a>Before customizing the COA it is suggested that you consult an accountant.</li></ol>
+ </li>
+ <li class="enumerate"><a
+ id="x1-221008x3"></a>Define Goods, Labor, and Services as raw parts ordered from the vendors.
+ <ul class="itemize1">
+ <li class="itemize">These are located under the goods and services menu node.</li></ul>
+ </li>
+ <li class="enumerate"><a
+ id="x1-221010x4"></a>Define assemblies.
+ <ul class="itemize1">
+ <li class="itemize">These are also located under goods and services.
+ </li>
+ <li class="itemize">Component goods and services must be defined prior to creating assembly.</li></ul>
+ </li>
+ <li class="enumerate"><a
+ id="x1-221012x5"></a>Enter an AP Invoice to populate inventory with proper raw materials.
+ <ul class="itemize1">
+ <li class="itemize">One must generally add a generic vendor first. The vendor is added under
+ AP-&#x003E;Vendors-&#x003E;Add Vendor.</li></ul>
+
+
+ </li>
+ <li class="enumerate"><a
+ id="x1-221014x6"></a>To pay an AP invoice like a check, go to cash-<span
+class="cmmi-10">&#x003E;</span>payment. Fill out approrpiate fields and click
+ print.
+ <ul class="itemize1">
+ <li class="itemize">Note that one should select an invoice and enter in the payment amount in the appropriate
+ line of the invoice list. If you add amounts to the master amount list, you will find that
+ they are added to the amount paid on the invoice as a prepayment.
+ </li>
+ <li class="itemize">The source field is the check number.</li></ul>
+ </li>
+ <li class="enumerate"><a
+ id="x1-221016x7"></a>Stock assemblies
+ </li>
+ <li class="enumerate"><a
+ id="x1-221018x8"></a>One can use AR Invoices or the POS interface to sell goods and services.
+ <ul class="itemize1">
+ <li class="itemize">Sales Invoice
+ <ul class="itemize2">
+ <li class="itemize">Can be generated from orders or quotations
+ </li>
+ <li class="itemize">Cannot include labor/overhead except as part of an assembly
+ </li>
+ <li class="itemize">One can make the mistake of printing the invoice and forgetting to post it. In this event,
+ the invoice does not officially exist in the accounting system.
+ </li>
+ <li class="itemize">For new customers, you must add the customer first (under AR-&#x003E;Customers-&#x003E;Add
+ Customer.</li></ul>
+ </li>
+ <li class="itemize">POS Interface
+ <ul class="itemize2">
+ <li class="itemize">Cannot include labor/overhead except as part of an assembly
+ </li>
+ <li class="itemize">Printing without posting is often even easier in the POS because of the rapid workflow.
+ Yet it is just as severe a problem.</li></ul>
+ </li>
+ <li class="itemize">Ecommerce and Mail Order Operations
+ <ul class="itemize2">
+ <li class="itemize">See the shipping workflow documentation above.</li></ul>
+ </li>
+ <li class="itemize">Customers are set up by going to AR-&#x003E;Customers-&#x003E;Add Customer (or the equivalent localized
+ translation). The appropriate fields are filled out and the buttons are used at the bottom to save the
+ record and optionally use it to create an invoice, etc.
+
+
+ <ul class="itemize2">
+ <li class="itemize">Saving a customer returns to the customer screen. After the appropriate invoice,
+ transaction, etc. is entered and posted, Ledger-SMB will return to the add customer
+ screen.</li></ul>
+ </li></ul>
+ </li>
+ <li class="enumerate"><a
+ id="x1-221020x9"></a>One can use the requirements report to help determine what parts need to be ordered though one
+ cannot generate PO&#8217;s directly from this report.</li></ol>
+<!--l. 3381--><p class="noindent">Note, the needs of Ledger-SMB are mostly useful for light manufacturing operations (assembling
+computers, for example). More manufacturing capabilities are expected to be released in the next
+version.
+</p><!--l. 3385--><p class="indent"> A custom assembly is a bit difficult to make. One must add the assembly prior to invoice (this is not true
+of goods and services). If the assembly is based on a different assembly but may cost more (due to
+non-standard parts) you can load the old assembly using Goods and Services-&#x003E;Reports-&#x003E;Assemblies and
+then make necessary changes (including to the SKU/Partnumber) and save it as new.
+</p><!--l. 3393--><p class="indent"> Then one can add it to the invoice.
+</p><!--l. 3396--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">D </span> <a
+ id="x1-222000D"></a>Glossary</h3>
+<!--l. 3398--><p class="noindent">
+ </p><dl class="description"><dt class="description">
+<span
+class="pplb8t-">BIC</span> </dt><dd
+class="description">Bank Identifier Code is often the same as the S.W.I.F.T. code. This is a code for the bank a
+ customer uses for automated money transfers.
+ </dd><dt class="description">
+<span
+class="pplb8t-">COGS</span> </dt><dd
+class="description">is Cost of Goods Sold. When an item is sold, then the expense of its purchase is accrued as
+ attached to the income of the sale. It is tracked as COGS.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Credit</span> </dt><dd
+class="description">: A logical transactional unit in double entry accounting. It is the opposite of a debit. Credits
+ affect different account types as follows:
+ <!--l. 3409--><p class="noindent">
+ </p><dl class="description"><dt class="description">
+ <span
+class="pplb8t-">Equity</span> </dt><dd
+class="description">: Credits are added to the account when money is invested in the business.
+ </dd><dt class="description">
+ <span
+class="pplb8t-">Asset</span> </dt><dd
+class="description">: Credits are added when money is deducted from an asset account.
+ </dd><dt class="description">
+ <span
+class="pplb8t-">Liability</span> </dt><dd
+class="description">: Credits are added when money is owed to the business account.
+ </dd><dt class="description">
+ <span
+class="pplb8t-">Income</span> </dt><dd
+class="description">: Credits are added when income is earned.
+ </dd><dt class="description">
+ <span
+class="pplb8t-">Expense</span> </dt><dd
+class="description">: Credits are used to apply adjustments at the end of accounting periods to indicate
+ that not all the expense for an AP transaction has been fully accrued.</dd></dl>
+
+
+ </dd><dt class="description">
+<span
+class="pplb8t-">Debit</span> </dt><dd
+class="description">: A logical transactional unit in double entry accounting systems. It is the opposite of a credit. Debits
+ affect different account types as follows:
+ <!--l. 3425--><p class="noindent">
+ </p><dl class="description"><dt class="description">
+ <span
+class="pplb8t-">Equity</span> </dt><dd
+class="description">: Debits are added when money is paid to business owners.
+ </dd><dt class="description">
+ <span
+class="pplb8t-">Asset</span> </dt><dd
+class="description">: Debits are added when money is added to an account.
+ </dd><dt class="description">
+ <span
+class="pplb8t-">Liability</span> </dt><dd
+class="description">: Debits are added when money that is owed is paid off.
+ </dd><dt class="description">
+ <span
+class="pplb8t-">Income</span> </dt><dd
+class="description">: Debits are used to temporarily adjust income to defer unearned income to the next
+ accounting period.
+ </dd><dt class="description">
+ <span
+class="pplb8t-">Expense</span> </dt><dd
+class="description">: Debits are added as expenses are incurred.</dd></dl>
+ </dd><dt class="description">
+<span
+class="pplb8t-">IBAN</span> </dt><dd
+class="description">International Bank Account Number is related to the BIC and is used for cross-border automated
+ money transfers.
+ </dd><dt class="description">
+<span
+class="pplb8t-">List</span> </dt><dd
+class="description">Price is the recommended retail price.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Markup</span> </dt><dd
+class="description">is the percentage increase that is applied to the last cost to get the sell price.
+ </dd><dt class="description">
+<span
+class="pplb8t-">ROP</span> </dt><dd
+class="description">Re-order point. Items with fewer in stock than this will show up on short reports.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Sell</span> </dt><dd
+class="description">Price is the price at which the item is sold.
+ </dd><dt class="description">
+<span
+class="pplb8t-">SKU</span> </dt><dd
+class="description">Stock Keeping Unit: a number designating a specific product.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Source</span> </dt><dd
+class="description">Document : a paper document that can be used as evidence that a transaction occurred.
+ Source documents can include canceled checks, receipts, credit card statements and the
+ like.
+ </dd><dt class="description">
+<span
+class="pplb8t-">Terms</span> </dt><dd
+class="description">is the number of days one has to pay the invoice. Most businesses abbreviate the terms as Net n
+ where n is the number of days. For example, Net 30 means the customer has 30 days to pay the net
+ due on an invoice before it is late and incurs late fees. Sometimes you will see 2 10 net 30
+ or similar. This means 2% discount if paid within 10 days but due within 30 days in any
+ case.</dd></dl>
+<!--l. 1--><p class="noindent">
+</p>
+ <h3 class="sectionHead"><span class="titlemark">E </span> <a
+ id="x1-223000E"></a>GNU Free Documentation License</h3>
+
+
+<div class="center"
+>
+<!--l. 5--><p class="noindent">
+</p><!--l. 7--><p class="noindent">Version 1.2, November 2002
+</p><!--l. 10--><p class="noindent">Copyright <span
+class="cmsy-10">&#169;</span>2000,2001,2002 Free Software Foundation, Inc.
+</p><!--l. 14--><p class="noindent">51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+</p><!--l. 18--><p class="noindent">Everyone is permitted to copy and distribute verbatim copies of this license document, but changing
+it is not allowed.</p></div>
+<div class="center"
+>
+<!--l. 23--><p class="noindent">
+</p><!--l. 24--><p class="noindent"><span
+class="pplb8t-x-x-120">Preamble</span></p></div>
+<!--l. 27--><p class="noindent">The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in
+the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without
+modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and
+publisher a way to get credit for their work, while not being considered responsible for modifications made
+by others.
+</p><!--l. 35--><p class="indent"> This License is a kind of "copyleft", which means that derivative works of the document must themselves
+be free in the same sense. It complements the GNU General Public License, which is a copyleft license
+designed for free software.
+</p><!--l. 40--><p class="indent"> We have designed this License in order to use it for manuals for free software, because free
+software needs free documentation: a free program should come with manuals providing the
+same freedoms that the software does. But this License is not limited to software manuals; it
+can be used for any textual work, regardless of subject matter or whether it is published as a
+printed book. We recommend this License principally for works whose purpose is instruction or
+reference.
+</p>
+<div class="center"
+>
+<!--l. 49--><p class="noindent">
+</p><!--l. 50--><p class="noindent"><span
+class="pplb8t-x-x-144">1. APPLICABILITY AND DEFINITIONS</span> <a
+ id="Q1-1-232"></a></p></div>
+<!--l. 54--><p class="indent"> This License applies to any manual or other work, in any medium, that contains a notice placed by the
+copyright holder saying it can be distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein.
+The <span
+class="pplb8t-">"Document"</span>, below, refers to any such manual or work. Any member of the public is a licensee, and is
+addressed as <span
+class="pplb8t-">"you"</span>. You accept the license if you copy, modify or distribute the work in a way requiring
+permission under copyright law.
+</p><!--l. 64--><p class="indent"> A <span
+class="pplb8t-">"Modified Version" </span>of the Document means any work containing the Document or a portion of it,
+either copied verbatim, or with modifications and/or translated into another language.
+</p><!--l. 68--><p class="indent"> A <span
+class="pplb8t-">"Secondary Section" </span>is a named appendix or a front-matter section of the Document that deals
+exclusively with the relationship of the publishers or authors of the Document to the Document&#8217;s overall
+subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus,
+if the Document is in part a textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical connection with the subject or with
+related matters, or of legal, commercial, philosophical, ethical or political position regarding
+them.
+
+
+</p><!--l. 79--><p class="indent"> The <span
+class="pplb8t-">"Invariant Sections" </span>are certain Secondary Sections whose titles are designated, as being those of
+Invariant Sections, in the notice that says that the Document is released under this License. If a section does
+not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document
+may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are
+none.
+</p><!--l. 87--><p class="indent"> The <span
+class="pplb8t-">"Cover Texts" </span>are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover
+Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at
+most 5 words, and a Back-Cover Text may be at most 25 words.
+</p><!--l. 92--><p class="indent"> A <span
+class="pplb8t-">"Transparent" </span>copy of the Document means a machine-readable copy, represented in a format whose
+specification is available to the general public, that is suitable for revising the document straightforwardly
+with generic text editors or (for images composed of pixels) generic paint programs or (for drawings)
+some widely available drawing editor, and that is suitable for input to text formatters or for
+automatic translation to a variety of formats suitable for input to text formatters. A copy made in an
+otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent. An image format is not
+Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called
+<span
+class="pplb8t-">"Opaque"</span>.
+</p><!--l. 105--><p class="indent"> Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input
+format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include
+PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally
+available, and the machine-generated HTML, PostScript or PDF produced by some word processors for
+output purposes only.
+</p><!--l. 116--><p class="indent"> The <span
+class="pplb8t-">"Title Page" </span>means, for a printed book, the title page itself, plus such following pages as
+are needed to hold, legibly, the material this License requires to appear in the title page. For
+works in formats which do not have any title page as such, "Title Page" means the text near
+the most prominent appearance of the work&#8217;s title, preceding the beginning of the body of the
+text.
+</p><!--l. 123--><p class="indent"> A section <span
+class="pplb8t-">"Entitled XYZ" </span>means a named subunit of the Document whose title either is precisely XYZ or
+contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as <span
+class="pplb8t-">"Acknowledgements"</span>, <span
+class="pplb8t-">"Dedications"</span>, <span
+class="pplb8t-">"Endorsements"</span>, or
+<span
+class="pplb8t-">"History"</span>.) To <span
+class="pplb8t-">"Preserve the Title" </span>of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+</p><!--l. 132--><p class="indent"> The Document may include Warranty Disclaimers next to the notice which states that this License applies
+to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but
+only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is
+void and has no effect on the meaning of this License.
+</p>
+<div class="center"
+>
+<!--l. 140--><p class="noindent">
+</p><!--l. 141--><p class="noindent"><span
+class="pplb8t-x-x-144">2. VERBATIM COPYING</span> <a
+ id="Q1-1-233"></a></p></div>
+<!--l. 145--><p class="indent"> You may copy and distribute the Document in any medium, either commercially or noncommercially,
+provided that this License, the copyright notices, and the license notice saying this License applies to the
+Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this
+License. You may not use technical measures to obstruct or control the reading or further copying of the
+copies you make or distribute. However, you may accept compensation in exchange for copies. If
+you distribute a large enough number of copies you must also follow the conditions in section
+3.
+
+
+</p><!--l. 155--><p class="indent"> You may also lend copies, under the same conditions stated above, and you may publicly display
+copies.
+</p>
+<div class="center"
+>
+<!--l. 159--><p class="noindent">
+</p><!--l. 160--><p class="noindent"><span
+class="pplb8t-x-x-144">3. COPYING IN QUANTITY</span> <a
+ id="Q1-1-234"></a></p></div>
+<!--l. 165--><p class="indent"> If you publish printed copies (or copies in media that commonly have printed covers) of the Document,
+numbering more than 100, and the Document&#8217;s license notice requires Cover Texts, you must
+enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts
+on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and
+legibly identify you as the publisher of these copies. The front cover must present the full title
+with all words of the title equally prominent and visible. You may add other material on the
+covers in addition. Copying with changes limited to the covers, as long as they preserve the
+title of the Document and satisfy these conditions, can be treated as verbatim copying in other
+respects.
+</p><!--l. 178--><p class="indent"> If the required texts for either cover are too voluminous to fit legibly, you should put the first
+ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+</p><!--l. 183--><p class="indent"> If you publish or distribute Opaque copies of the Document numbering more than 100, you must either
+include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque
+copy a computer-network location from which the general network-using public has access to
+download using public-standard network protocols a complete Transparent copy of the Document,
+free of added material. If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy
+will remain thus accessible at the stated location until at least one year after the last time you
+distribute an Opaque copy (directly or through your agents or retailers) of that edition to the
+public.
+</p><!--l. 196--><p class="indent"> It is requested, but not required, that you contact the authors of the Document well before redistributing
+any large number of copies, to give them a chance to provide you with an updated version of the
+Document.
+</p>
+<div class="center"
+>
+<!--l. 201--><p class="noindent">
+</p><!--l. 202--><p class="noindent"><span
+class="pplb8t-x-x-144">4. MODIFICATIONS</span> <a
+ id="Q1-1-235"></a></p></div>
+<!--l. 206--><p class="indent"> You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and
+3 above, provided that you release the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution and modification of the Modified
+Version to whoever possesses a copy of it. In addition, you must do these things in the Modified
+Version:
+</p>
+ <ul class="itemize1">
+ <li class="itemize">Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and
+ from those of previous versions (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version if the original publisher of
+ that version gives permission.
+
+
+ </li>
+ <li class="itemize">List on the Title Page, as authors, one or more persons or entities responsible for authorship of
+ the modifications in the Modified Version, together with at least five of the principal authors of
+ the Document (all of its principal authors, if it has fewer than five), unless they release you from
+ this requirement.
+ </li>
+ <li class="itemize">State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ </li>
+ <li class="itemize">Preserve all the copyright notices of the Document.
+ </li>
+ <li class="itemize">Add an appropriate copyright notice for your modifications adjacent to the other copyright
+ notices.
+ </li>
+ <li class="itemize">Include, immediately after the copyright notices, a license notice giving the public permission to
+ use the Modified Version under the terms of this License, in the form shown in the Addendum
+ below.
+ </li>
+ <li class="itemize">Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given
+ in the Document&#8217;s license notice.
+ </li>
+ <li class="itemize">Include an unaltered copy of this License.
+ </li>
+ <li class="itemize">Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the
+ title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there
+ is no section Entitled "History" in the Document, create one stating the title, year, authors, and
+ publisher of the Document as given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+ </li>
+ <li class="itemize">Preserve the network location, if any, given in the Document for public access to a Transparent
+ copy of the Document, and likewise the network locations given in the Document for previous
+ versions it was based on. These may be placed in the "History" section. You may omit a network
+ location for a work that was published at least four years before the Document itself, or if the
+ original publisher of the version it refers to gives permission.
+ </li>
+ <li class="itemize">For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the
+ section, and preserve in the section all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+ </li>
+ <li class="itemize">Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles.
+ Section numbers or the equivalent are not considered part of the section titles.
+ </li>
+ <li class="itemize">Delete any section Entitled "Endorsements". Such a section may not be included in the Modified
+ Version.
+
+
+ </li>
+ <li class="itemize">Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any
+ Invariant Section.
+ </li>
+ <li class="itemize">Preserve any Warranty Disclaimers.</li></ul>
+<!--l. 292--><p class="indent"> If the Modified Version includes new front-matter sections or appendices that qualify as Secondary
+Sections and contain no material copied from the Document, you may at your option designate some
+or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections
+in the Modified Version&#8217;s license notice. These titles must be distinct from any other section
+titles.
+</p><!--l. 299--><p class="indent"> You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your
+Modified Version by various parties&#8211;for example, statements of peer review or that the text has been
+approved by an organization as the authoritative definition of a standard.
+</p><!--l. 305--><p class="indent"> You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a
+Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one
+entity. If the Document already includes a cover text for the same cover, previously added by you or by
+arrangement made by the same entity you are acting on behalf of, you may not add another; but you
+may replace the old one, on explicit permission from the previous publisher that added the old
+one.
+</p><!--l. 315--><p class="indent"> The author(s) and publisher(s) of the Document do not by this License give permission to use their names
+for publicity for or to assert or imply endorsement of any Modified Version.
+</p>
+<div class="center"
+>
+<!--l. 320--><p class="noindent">
+</p><!--l. 321--><p class="noindent"><span
+class="pplb8t-x-x-144">5. COMBINING DOCUMENTS</span> <a
+ id="Q1-1-236"></a></p></div>
+<!--l. 326--><p class="indent"> You may combine the Document with other documents released under this License, under the terms
+defined in section 4 above for modified versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and list them all as Invariant
+Sections of your combined work in its license notice, and that you preserve all their Warranty
+Disclaimers.
+</p><!--l. 333--><p class="indent"> The combined work need only contain one copy of this License, and multiple identical Invariant Sections
+may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different
+contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the
+original author or publisher of that section if known, or else a unique number. Make the same
+adjustment to the section titles in the list of Invariant Sections in the license notice of the combined
+work.
+</p><!--l. 342--><p class="indent"> In the combination, you must combine any sections Entitled "History" in the various original documents,
+forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and
+any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+</p>
+<div class="center"
+>
+<!--l. 348--><p class="noindent">
+</p><!--l. 349--><p class="noindent"><span
+class="pplb8t-x-x-144">6. COLLECTIONS OF DOCUMENTS</span> <a
+ id="Q1-1-237"></a></p></div>
+
+
+<!--l. 353--><p class="indent"> You may make a collection consisting of the Document and other documents released under this License,
+and replace the individual copies of this License in the various documents with a single copy that is included
+in the collection, provided that you follow the rules of this License for verbatim copying of each of the
+documents in all other respects.
+</p><!--l. 359--><p class="indent"> You may extract a single document from such a collection, and distribute it individually under this
+License, provided you insert a copy of this License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+</p>
+<div class="center"
+>
+<!--l. 365--><p class="noindent">
+</p><!--l. 366--><p class="noindent"><span
+class="pplb8t-x-x-144">7. AGGREGATION WITH INDEPENDENT WORKS</span> <a
+ id="Q1-1-238"></a></p></div>
+<!--l. 371--><p class="indent"> A compilation of the Document or its derivatives with other separate and independent documents or
+works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights of the compilation&#8217;s users beyond what the
+individual works permit. When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves derivative works of the
+Document.
+</p><!--l. 380--><p class="indent"> If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the
+Document is less than one half of the entire aggregate, the Document&#8217;s Cover Texts may be placed on covers
+that bracket the Document within the aggregate, or the electronic equivalent of covers if the
+Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+</p>
+<div class="center"
+>
+<!--l. 389--><p class="noindent">
+</p><!--l. 390--><p class="noindent"><span
+class="pplb8t-x-x-144">8. TRANSLATION</span> <a
+ id="Q1-1-239"></a></p></div>
+<!--l. 395--><p class="indent"> Translation is considered a kind of modification, so you may distribute translations of the
+Document under the terms of section 4. Replacing Invariant Sections with translations requires
+special permission from their copyright holders, but you may include translations of some or
+all Invariant Sections in addition to the original versions of these Invariant Sections. You may
+include a translation of this License, and all the license notices in the Document, and any Warranty
+Disclaimers, provided that you also include the original English version of this License and
+the original versions of those notices and disclaimers. In case of a disagreement between the
+translation and the original version of this License or a notice or disclaimer, the original version will
+prevail.
+</p><!--l. 408--><p class="indent"> If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the
+requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual
+title.
+</p>
+<div class="center"
+>
+<!--l. 414--><p class="noindent">
+</p><!--l. 415--><p class="noindent"><span
+class="pplb8t-x-x-144">9. TERMINATION</span> <a
+ id="Q1-1-240"></a></p></div>
+
+
+<!--l. 420--><p class="indent"> You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under
+this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However, parties who have received copies, or rights,
+from you under this License will not have their licenses terminated so long as such parties remain in full
+compliance.
+</p>
+<div class="center"
+>
+<!--l. 429--><p class="noindent">
+</p><!--l. 430--><p class="noindent"><span
+class="pplb8t-x-x-144">10. FUTURE REVISIONS OF THIS LICENSE</span> <a
+ id="Q1-1-241"></a></p></div>
+<!--l. 435--><p class="indent"> The Free Software Foundation may publish new, revised versions of the GNU Free Documentation
+License from time to time. Such new versions will be similar in spirit to the present version, but may differ in
+detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+</p><!--l. 441--><p class="indent"> Each version of the License is given a distinguishing version number. If the Document specifies that a
+particular numbered version of this License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or of any later version that has been
+published (not as a draft) by the Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not as a draft) by the Free Software
+Foundation.
+</p>
+<div class="center"
+>
+<!--l. 451--><p class="noindent">
+</p><!--l. 452--><p class="noindent"><span
+class="pplb8t-x-x-144">ADDENDUM: How to use this License for your documents</span> <a
+ id="Q1-1-242"></a></p></div>
+<!--l. 456--><p class="indent"> To use this License in a document you have written, include a copy of the License in the document and
+put the following copyright and license notices just after the title page:
+</p><!--l. 461--><p class="indent">
+ </p><div class="quote">
+ <!--l. 462--><p class="noindent">Copyright <span
+class="cmsy-10">&#169;</span>YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify
+ this document under the terms of the GNU Free Documentation License, Version 1.2 or
+ any later version published by the Free Software Foundation; with no Invariant Sections,
+ no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".</p></div>
+<!--l. 472--><p class="indent"> If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line
+with this:
+</p><!--l. 476--><p class="indent">
+ </p><div class="quote">
+ <!--l. 477--><p class="noindent">with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being
+ LIST, and with the Back-Cover Texts being LIST.</p></div>
+
+
+<!--l. 482--><p class="indent"> If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those
+two alternatives to suit the situation.
+</p><!--l. 486--><p class="indent"> If your document contains nontrivial examples of program code, we recommend releasing these
+examples in parallel under your choice of free software license, such as the GNU General Public License, to
+permit their use in free software.
+</p>
+
+</body></html>
+
+
+
+