summaryrefslogtreecommitdiff
path: root/doc/bugs/Problems_with_graphviz.pm_plug-in.mdwn
diff options
context:
space:
mode:
authorhttp://www.cse.unsw.edu.au/~willu/ <http://www.cse.unsw.edu.au/~willu/@web>2008-08-02 22:20:53 -0400
committerJoey Hess <joey@kitenet.net>2008-08-02 22:20:53 -0400
commit4cdf41df0cd1383f50060922ea9dafb8c5323051 (patch)
tree4d05de370f57250a7edd82520091eb1e93eb03ed /doc/bugs/Problems_with_graphviz.pm_plug-in.mdwn
parent35a3559ebe6fe5fbcfc655629ff7458414885a54 (diff)
small patch update
Diffstat (limited to 'doc/bugs/Problems_with_graphviz.pm_plug-in.mdwn')
0 files changed, 0 insertions, 0 deletions
a">/>
  • </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>