- <?xml version="1.0" encoding="iso-8859-1" ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
- <html xmlns="http://www.w3.org/1999/xhtml"
- >
- <head><title>LedgerSMB Manual v. 1.2</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/mn.html)" />
- <meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/mn.html)" />
- <!-- xhtml -->
- <meta name="src" content="LedgerSMB-manual.tex" />
- <meta name="date" content="2007-09-21 13:59:00" />
- <!-- SC: Manual edit, couldn't determine the previous option set -->
- <link rel="stylesheet" type="text/css" href="LedgerSMB-manual.css" />
- </head><body
- >
- <div class="maketitle">
-
-
-
-
- <h2 class="titleHead">LedgerSMB 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">September 21, 2007</span></div>
- </div>Copyright <span
- class="cmsy-10">©</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  <a
- href="#x1-3000I" id="QQ2-1-3">LedgerSMB and Business Processes</a></span>
- <br /> <span class="sectionToc">1 <a
- href="#x1-40001" id="QQ2-1-4">Introduction to LedgerSMB</a></span>
- <br />  <span class="subsectionToc">1.1 <a
- href="#x1-50001.1" id="QQ2-1-5">Why LedgerSMB</a></span>
- <br />   <span class="subsubsectionToc">1.1.1 <a
- href="#x1-60001.1.1" id="QQ2-1-6">Advantages of LedgerSMB</a></span>
- <br />   <span class="subsubsectionToc">1.1.2 <a
- href="#x1-70001.1.2" id="QQ2-1-7">Key Features</a></span>
- <br />  <span class="subsectionToc">1.2 <a
- href="#x1-80001.2" id="QQ2-1-8">Limitations of LedgerSMB</a></span>
- <br />  <span class="subsectionToc">1.3 <a
- href="#x1-90001.3" id="QQ2-1-9">System Requirements of LedgerSMB</a></span>
- <br /> <span class="sectionToc">2 <a
- href="#x1-100002" id="QQ2-1-10">User Account and Database Administration Basics</a></span>
- <br />  <span class="subsectionToc">2.1 <a
- href="#x1-110002.1" id="QQ2-1-11">Companies and Datasets</a></span>
- <br />  <span class="subsectionToc">2.2 <a
- href="#x1-120002.2" id="QQ2-1-12">How to Create a User</a></span>
- <br />  <span class="subsectionToc">2.3 <a
- href="#x1-130002.3" id="QQ2-1-13">Permissions</a></span>
- <br />  <span class="subsectionToc">2.4 <a
- href="#x1-140002.4" id="QQ2-1-14">User Account Types</a></span>
- <br />  <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 />  <span class="subsectionToc">3.1 <a
- href="#x1-170003.1" id="QQ2-1-17">Introduction to Double Entry Bookkeeping</a></span>
- <br />   <span class="subsubsectionToc">3.1.1 <a
- href="#x1-180003.1.1" id="QQ2-1-18">Business Entity</a></span>
- <br />   <span class="subsubsectionToc">3.1.2 <a
- href="#x1-190003.1.2" id="QQ2-1-19">Double Entry</a></span>
- <br />   <span class="subsubsectionToc">3.1.3 <a
- href="#x1-200003.1.3" id="QQ2-1-20">Accounts</a></span>
- <br />   <span class="subsubsectionToc">3.1.4 <a
- href="#x1-210003.1.4" id="QQ2-1-21">Debits and Credits</a></span>
- <br />   <span class="subsubsectionToc">3.1.5 <a
- href="#x1-220003.1.5" id="QQ2-1-22">Accrual</a></span>
- <br />   <span class="subsubsectionToc">3.1.6 <a
- href="#x1-230003.1.6" id="QQ2-1-23">References</a></span>
- <br />  <span class="subsectionToc">3.2 <a
- href="#x1-240003.2" id="QQ2-1-24">General Guidelines on Numbering Accounts</a></span>
- <br />  <span class="subsectionToc">3.3 <a
- href="#x1-250003.3" id="QQ2-1-25">Adding/Modifying Accounts</a></span>
- <br />  <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 />  <span class="subsectionToc">4.1 <a
- href="#x1-280004.1" id="QQ2-1-28">Taxes, Defaults, and Preferences</a></span>
-
-
- <br />   <span class="subsubsectionToc">4.1.1 <a
- href="#x1-290004.1.1" id="QQ2-1-29">Adding A Sales Tax Account</a></span>
- <br />   <span class="subsubsectionToc">4.1.2 <a
- href="#x1-300004.1.2" id="QQ2-1-30">Setting a Sales Tax Amount</a></span>
- <br />   <span class="subsubsectionToc">4.1.3 <a
- href="#x1-310004.1.3" id="QQ2-1-31">Default Account Setup</a></span>
- <br />   <span class="subsubsectionToc">4.1.4 <a
- href="#x1-320004.1.4" id="QQ2-1-32">Currency Setup</a></span>
- <br />   <span class="subsubsectionToc">4.1.5 <a
- href="#x1-330004.1.5" id="QQ2-1-33">Sequence Settings</a></span>
- <br />  <span class="subsectionToc">4.2 <a
- href="#x1-340004.2" id="QQ2-1-34">Audit Control</a></span>
- <br />   <span class="subsubsectionToc">4.2.1 <a
- href="#x1-350004.2.1" id="QQ2-1-35">Explaining transaction reversal</a></span>
- <br />   <span class="subsubsectionToc">4.2.2 <a
- href="#x1-360004.2.2" id="QQ2-1-36">Close books option</a></span>
- <br />   <span class="subsubsectionToc">4.2.3 <a
- href="#x1-370004.2.3" id="QQ2-1-37">Audit Trails</a></span>
- <br />  <span class="subsectionToc">4.3 <a
- href="#x1-380004.3" id="QQ2-1-38">Departments</a></span>
- <br />   <span class="subsubsectionToc">4.3.1 <a
- href="#x1-390004.3.1" id="QQ2-1-39">Cost v Profit Centers.</a></span>
- <br />  <span class="subsectionToc">4.4 <a
- href="#x1-400004.4" id="QQ2-1-40">Warehouses</a></span>
- <br />  <span class="subsectionToc">4.5 <a
- href="#x1-410004.5" id="QQ2-1-41">Languages</a></span>
- <br />  <span class="subsectionToc">4.6 <a
- href="#x1-420004.6" id="QQ2-1-42">Types of Businesses</a></span>
- <br />  <span class="subsectionToc">4.7 <a
- href="#x1-430004.7" id="QQ2-1-43">Misc.</a></span>
- <br />   <span class="subsubsectionToc">4.7.1 <a
- href="#x1-440004.7.1" id="QQ2-1-44">GIFI</a></span>
- <br />   <span class="subsubsectionToc">4.7.2 <a
- href="#x1-450004.7.2" id="QQ2-1-45">SIC</a></span>
- <br />   <span class="subsubsectionToc">4.7.3 <a
- href="#x1-460004.7.3" id="QQ2-1-46">Overview of Template Editing</a></span>
- <br />   <span class="subsubsectionToc">4.7.4 <a
- href="#x1-470004.7.4" id="QQ2-1-47">Year-end</a></span>
- <br />  <span class="subsectionToc">4.8 <a
- href="#x1-480004.8" id="QQ2-1-48">Options in the ledgersmb.conf</a></span>
- <br /> <span class="sectionToc">5 <a
- href="#x1-490005" id="QQ2-1-49">Goods and Services</a></span>
- <br />  <span class="subsectionToc">5.1 <a
- href="#x1-500005.1" id="QQ2-1-50">Basic Terms</a></span>
- <br />  <span class="subsectionToc">5.2 <a
- href="#x1-510005.2" id="QQ2-1-51">The Price Matrix</a></span>
- <br />  <span class="subsectionToc">5.3 <a
- href="#x1-520005.3" id="QQ2-1-52">Pricegroups</a></span>
- <br />  <span class="subsectionToc">5.4 <a
- href="#x1-530005.4" id="QQ2-1-53">Groups</a></span>
- <br />  <span class="subsectionToc">5.5 <a
- href="#x1-540005.5" id="QQ2-1-54">Labor/Overhead</a></span>
- <br />  <span class="subsectionToc">5.6 <a
- href="#x1-550005.6" id="QQ2-1-55">Services</a></span>
- <br />   <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 />  <span class="subsectionToc">5.7 <a
- href="#x1-570005.7" id="QQ2-1-57">Parts</a></span>
- <br />  <span class="subsectionToc">5.8 <a
- href="#x1-580005.8" id="QQ2-1-58">Assemblies and Manufacturing</a></span>
- <br />   <span class="subsubsectionToc">5.8.1 <a
- href="#x1-590005.8.1" id="QQ2-1-59">Stocking Assemblies</a></span>
- <br />  <span class="subsectionToc">5.9 <a
- href="#x1-600005.9" id="QQ2-1-60">Reporting</a></span>
- <br />   <span class="subsubsectionToc">5.9.1 <a
- href="#x1-610005.9.1" id="QQ2-1-61">All Items and Parts Reports</a></span>
- <br />   <span class="subsubsectionToc">5.9.2 <a
- href="#x1-620005.9.2" id="QQ2-1-62">Requirements</a></span>
- <br />   <span class="subsubsectionToc">5.9.3 <a
- href="#x1-630005.9.3" id="QQ2-1-63">Services and Labor</a></span>
- <br />   <span class="subsubsectionToc">5.9.4 <a
- href="#x1-640005.9.4" id="QQ2-1-64">Assemblies</a></span>
- <br />   <span class="subsubsectionToc">5.9.5 <a
- href="#x1-650005.9.5" id="QQ2-1-65">Groups and Pricegroups</a></span>
- <br />  <span class="subsectionToc">5.10 <a
- href="#x1-660005.10" id="QQ2-1-66">Translations</a></span>
- <br />  <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 />  <span class="subsectionToc">6.1 <a
- href="#x1-690006.1" id="QQ2-1-69">Basic AP Concepts</a></span>
- <br />  <span class="subsectionToc">6.2 <a
- href="#x1-700006.2" id="QQ2-1-70">Vendors</a></span>
- <br />  <span class="subsectionToc">6.3 <a
- href="#x1-710006.3" id="QQ2-1-71">AP Transactions</a></span>
- <br />  <span class="subsectionToc">6.4 <a
- href="#x1-720006.4" id="QQ2-1-72">AP Invoices</a></span>
- <br />   <span class="subsubsectionToc">6.4.1 <a
- href="#x1-730006.4.1" id="QQ2-1-73">Correcting an AP Invoice</a></span>
- <br />  <span class="subsectionToc">6.5 <a
- href="#x1-740006.5" id="QQ2-1-74">Cash payment And Check Printing</a></span>
- <br />   <span class="subsubsectionToc">6.5.1 <a
- href="#x1-750006.5.1" id="QQ2-1-75">Rapid Payment Entry Screen</a></span>
- <br />  <span class="subsectionToc">6.6 <a
- href="#x1-760006.6" id="QQ2-1-76">Transaction/Invoice Reporting</a></span>
- <br />   <span class="subsubsectionToc">6.6.1 <a
- href="#x1-770006.6.1" id="QQ2-1-77">Transactions Report</a></span>
- <br />   <span class="subsubsectionToc">6.6.2 <a
- href="#x1-780006.6.2" id="QQ2-1-78">Outstanding Report</a></span>
- <br />   <span class="subsubsectionToc">6.6.3 <a
- href="#x1-790006.6.3" id="QQ2-1-79">AP Aging Report</a></span>
- <br />   <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 />  <span class="subsectionToc">6.7 <a
- href="#x1-810006.7" id="QQ2-1-81">Vendor Reporting</a></span>
- <br />   <span class="subsubsectionToc">6.7.1 <a
- href="#x1-820006.7.1" id="QQ2-1-82">Vendor Search</a></span>
- <br />   <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 />  <span class="subsectionToc">7.1 <a
- href="#x1-850007.1" id="QQ2-1-85">Customers</a></span>
- <br />   <span class="subsubsectionToc">7.1.1 <a
- href="#x1-860007.1.1" id="QQ2-1-86">Customer Price Matrix</a></span>
- <br />  <span class="subsectionToc">7.2 <a
- href="#x1-870007.2" id="QQ2-1-87">AR Transactions</a></span>
- <br />  <span class="subsectionToc">7.3 <a
- href="#x1-880007.3" id="QQ2-1-88">AR Invoices</a></span>
- <br />  <span class="subsectionToc">7.4 <a
- href="#x1-890007.4" id="QQ2-1-89">Cash Receipt</a></span>
- <br />   <span class="subsubsectionToc">7.4.1 <a
- href="#x1-900007.4.1" id="QQ2-1-90">Cash Receipts for multiple customers</a></span>
- <br />  <span class="subsectionToc">7.5 <a
- href="#x1-910007.5" id="QQ2-1-91">AR Transaction Reporting</a></span>
- <br />   <span class="subsubsectionToc">7.5.1 <a
- href="#x1-920007.5.1" id="QQ2-1-92">AR Transactions Report</a></span>
- <br />   <span class="subsubsectionToc">7.5.2 <a
- href="#x1-930007.5.2" id="QQ2-1-93">AR Aging Report</a></span>
- <br />  <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 />  <span class="subsectionToc">8.1 <a
- href="#x1-960008.1" id="QQ2-1-96">Project Basics</a></span>
- <br />  <span class="subsectionToc">8.2 <a
- href="#x1-970008.2" id="QQ2-1-97">Timecards</a></span>
- <br />  <span class="subsectionToc">8.3 <a
- href="#x1-980008.3" id="QQ2-1-98">Projects and Invoices</a></span>
- <br />  <span class="subsectionToc">8.4 <a
- href="#x1-990008.4" id="QQ2-1-99">Reporting</a></span>
- <br />   <span class="subsubsectionToc">8.4.1 <a
- href="#x1-1000008.4.1" id="QQ2-1-100">Timecard Reporting</a></span>
- <br />   <span class="subsubsectionToc">8.4.2 <a
- href="#x1-1010008.4.2" id="QQ2-1-101">Project Transaction Reporting</a></span>
- <br />   <span class="subsubsectionToc">8.4.3 <a
- href="#x1-1020008.4.3" id="QQ2-1-102">List of Projects</a></span>
- <br />  <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 />  <span class="subsectionToc">9.1 <a
- href="#x1-1050009.1" id="QQ2-1-105">Sales Orders</a></span>
- <br />  <span class="subsectionToc">9.2 <a
- href="#x1-1060009.2" id="QQ2-1-106">Quotations</a></span>
- <br />  <span class="subsectionToc">9.3 <a
- href="#x1-1070009.3" id="QQ2-1-107">Shipping</a></span>
- <br />  <span class="subsectionToc">9.4 <a
- href="#x1-1080009.4" id="QQ2-1-108">AR Work Flow</a></span>
- <br />   <span class="subsubsectionToc">9.4.1 <a
- href="#x1-1090009.4.1" id="QQ2-1-109">Service Example</a></span>
- <br />   <span class="subsubsectionToc">9.4.2 <a
- href="#x1-1100009.4.2" id="QQ2-1-111">Single Warehouse Example</a></span>
- <br />   <span class="subsubsectionToc">9.4.3 <a
- href="#x1-1110009.4.3" id="QQ2-1-113">Multiple Warehouse Example</a></span>
- <br />  <span class="subsectionToc">9.5 <a
- href="#x1-1120009.5" id="QQ2-1-115">Requests for Quotation (RFQ)</a></span>
- <br />  <span class="subsectionToc">9.6 <a
- href="#x1-1130009.6" id="QQ2-1-116">Purchase Orders</a></span>
- <br />  <span class="subsectionToc">9.7 <a
- href="#x1-1140009.7" id="QQ2-1-117">Receiving</a></span>
- <br />  <span class="subsectionToc">9.8 <a
- href="#x1-1150009.8" id="QQ2-1-118">AP Work Flow</a></span>
- <br />   <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 />   <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 />   <span class="subsubsectionToc">9.8.3 <a
- href="#x1-1180009.8.3" id="QQ2-1-123">Receiving staff entering items</a></span>
- <br />  <span class="subsectionToc">9.9 <a
- href="#x1-1190009.9" id="QQ2-1-125">Generation and Consolidation</a></span>
- <br />   <span class="subsubsectionToc">9.9.1 <a
- href="#x1-1200009.9.1" id="QQ2-1-126">Generation</a></span>
- <br />   <span class="subsubsectionToc">9.9.2 <a
- href="#x1-1210009.9.2" id="QQ2-1-127">Consolidation</a></span>
- <br />  <span class="subsectionToc">9.10 <a
- href="#x1-1220009.10" id="QQ2-1-128">Reporting</a></span>
- <br />  <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 />  <span class="subsectionToc">11.1 <a
- href="#x1-12600011.1" id="QQ2-1-132">Sales Screen</a></span>
- <br />  <span class="subsectionToc">11.2 <a
- href="#x1-12700011.2" id="QQ2-1-133">Possibilities for Data Entry</a></span>
- <br />  <span class="subsectionToc">11.3 <a
- href="#x1-12800011.3" id="QQ2-1-134">Hardware Support</a></span>
- <br />  <span class="subsectionToc">11.4 <a
- href="#x1-12900011.4" id="QQ2-1-135">Reports</a></span>
- <br />   <span class="subsubsectionToc">11.4.1 <a
- href="#x1-13000011.4.1" id="QQ2-1-136">Open Invoices</a></span>
- <br />   <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 />  <span class="subsectionToc">12.1 <a
- href="#x1-13300012.1" id="QQ2-1-139">GL Basics</a></span>
- <br />   <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 />   <span class="subsubsectionToc">12.1.2 <a
- href="#x1-13500012.1.2" id="QQ2-1-141">Double Entry Examples on Paper</a></span>
- <br />   <span class="subsubsectionToc">12.1.3 <a
- href="#x1-13600012.1.3" id="QQ2-1-142">The GL in LedgerSMB</a></span>
- <br />  <span class="subsectionToc">12.2 <a
- href="#x1-13700012.2" id="QQ2-1-143">Cash Transfer</a></span>
- <br />  <span class="subsectionToc">12.3 <a
- href="#x1-13800012.3" id="QQ2-1-144">GL Transactions</a></span>
- <br />  <span class="subsectionToc">12.4 <a
- href="#x1-13900012.4" id="QQ2-1-145">Payroll as a GL transaction</a></span>
- <br />  <span class="subsectionToc">12.5 <a
- href="#x1-14000012.5" id="QQ2-1-147">Reconciliation</a></span>
- <br />  <span class="subsectionToc">12.6 <a
- href="#x1-14100012.6" id="QQ2-1-148">Reports</a></span>
- <br />   <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 />  <span class="subsectionToc">14.1 <a
- href="#x1-14500014.1" id="QQ2-1-152">Cash v. Accrual Basis</a></span>
- <br />  <span class="subsectionToc">14.2 <a
- href="#x1-14600014.2" id="QQ2-1-153">Viewing the Chart of Accounts and Transactions</a></span>
- <br />  <span class="subsectionToc">14.3 <a
- href="#x1-14700014.3" id="QQ2-1-154">Trial Balance</a></span>
- <br />   <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 />   <span class="subsubsectionToc">14.3.2 <a
- href="#x1-14900014.3.2" id="QQ2-1-156">Running the Trial Balance Report</a></span>
- <br />   <span class="subsubsectionToc">14.3.3 <a
- href="#x1-15000014.3.3" id="QQ2-1-157">What if the Trial Balance doesn’t Balance?</a></span>
- <br />   <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 />   <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 />  <span class="subsectionToc">14.4 <a
- href="#x1-15300014.4" id="QQ2-1-160">Income Statement</a></span>
- <br />   <span class="subsubsectionToc">14.4.1 <a
- href="#x1-15400014.4.1" id="QQ2-1-161">Uses of an Income Statement</a></span>
- <br />  <span class="subsectionToc">14.5 <a
- href="#x1-15500014.5" id="QQ2-1-162">Balance Sheet</a></span>
- <br />  <span class="subsectionToc">14.6 <a
- href="#x1-15600014.6" id="QQ2-1-163">What if the Balance Sheet doesn’t balance?</a></span>
- <br />  <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 />  <span class="subsectionToc">15.1 <a
- href="#x1-15900015.1" id="QQ2-1-166">Text Templates</a></span>
- <br />  <span class="subsectionToc">15.2 <a
- href="#x1-16000015.2" id="QQ2-1-167">HTML Templates</a></span>
- <br />  <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 />   <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 />   <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 />  <span class="subsectionToc">15.4 <a
- href="#x1-16400015.4" id="QQ2-1-171">Customizing Logos</a></span>
- <br />  <span class="subsectionToc">15.5 <a
- href="#x1-16500015.5" id="QQ2-1-172">How are They Stored in the Filesystem?</a></span>
- <br />  <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 />  <span class="subsectionToc">16.1 <a
- href="#x1-16800016.1" id="QQ2-1-175">Conventions</a></span>
- <br />  <span class="subsectionToc">16.2 <a
- href="#x1-16900016.2" id="QQ2-1-176">Preliminaries</a></span>
- <br />  <span class="subsectionToc">16.3 <a
- href="#x1-17000016.3" id="QQ2-1-177">First Script: lsmb01-cli-example.sh</a></span>
- <br />   <span class="subsubsectionToc">16.3.1 <a
- href="#x1-17100016.3.1" id="QQ2-1-178">Script 1 (Bash)</a></span>
- <br />  <span class="subsectionToc">16.4 <a
- href="#x1-17200016.4" id="QQ2-1-179">Second Script: lsmb02-cli-example.pl</a></span>
- <br />   <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  <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 />  <span class="subsectionToc">17.1 <a
- href="#x1-17600017.1" id="QQ2-1-183">The Software Stack</a></span>
- <br />  <span class="subsectionToc">17.2 <a
- href="#x1-17700017.2" id="QQ2-1-185">Capacity Planning</a></span>
- <br />   <span class="subsubsectionToc">17.2.1 <a
- href="#x1-17800017.2.1" id="QQ2-1-186">Scalability Strategies</a></span>
- <br />   <span class="subsubsectionToc">17.2.2 <a
- href="#x1-17900017.2.2" id="QQ2-1-187">Database Maintenance</a></span>
- <br />   <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 />  <span class="subsectionToc">18.1 <a
- href="#x1-18200018.1" id="QQ2-1-190">Brief Guide to the Source Code</a></span>
- <br />  <span class="subsectionToc">18.2 <a
- href="#x1-18300018.2" id="QQ2-1-191">Data Entry Screens</a></span>
- <br />   <span class="subsubsectionToc">18.2.1 <a
- href="#x1-18400018.2.1" id="QQ2-1-192">Examples</a></span>
-
-
- <br />  <span class="subsectionToc">18.3 <a
- href="#x1-18500018.3" id="QQ2-1-193">Extensions</a></span>
- <br />   <span class="subsubsectionToc">18.3.1 <a
- href="#x1-18600018.3.1" id="QQ2-1-194">Examples</a></span>
- <br />  <span class="subsectionToc">18.4 <a
- href="#x1-18700018.4" id="QQ2-1-195">Templates</a></span>
- <br />   <span class="subsubsectionToc">18.4.1 <a
- href="#x1-18800018.4.1" id="QQ2-1-196">Examples</a></span>
- <br />  <span class="subsectionToc">18.5 <a
- href="#x1-18900018.5" id="QQ2-1-197">Reports</a></span>
- <br />   <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 />  <span class="subsectionToc">19.1 <a
- href="#x1-19200019.1" id="QQ2-1-200">Reporting Tools</a></span>
- <br />   <span class="subsubsectionToc">19.1.1 <a
- href="#x1-19300019.1.1" id="QQ2-1-201">Examples</a></span>
- <br />  <span class="subsectionToc">19.2 <a
- href="#x1-19400019.2" id="QQ2-1-202">Line of Business Tools on PostgreSQL</a></span>
- <br />   <span class="subsubsectionToc">19.2.1 <a
- href="#x1-19500019.2.1" id="QQ2-1-203">Known Issues</a></span>
- <br />   <span class="subsubsectionToc">19.2.2 <a
- href="#x1-19600019.2.2" id="QQ2-1-204">Strategies</a></span>
- <br />   <span class="subsubsectionToc">19.2.3 <a
- href="#x1-19700019.2.3" id="QQ2-1-205">Examples</a></span>
- <br />  <span class="subsectionToc">19.3 <a
- href="#x1-19800019.3" id="QQ2-1-206">Line of Business Tools on other RDBMS’s</a></span>
- <br />   <span class="subsubsectionToc">19.3.1 <a
- href="#x1-19900019.3.1" id="QQ2-1-207">Strategies</a></span>
- <br />   <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 />  <span class="subsectionToc">20.1 <a
- href="#x1-20200020.1" id="QQ2-1-210">General Information</a></span>
- <br />  <span class="subsectionToc">20.2 <a
- href="#x1-20300020.2" id="QQ2-1-211">Customizing Templates</a></span>
- <br />   <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 />   <span class="subsubsectionToc">20.2.2 <a
- href="#x1-20500020.2.2" id="QQ2-1-213">Conditionals</a></span>
- <br />   <span class="subsubsectionToc">20.2.3 <a
- href="#x1-20600020.2.3" id="QQ2-1-214">Loops</a></span>
- <br />   <span class="subsubsectionToc">20.2.4 <a
- href="#x1-20700020.2.4" id="QQ2-1-215">File Inclusion</a></span>
- <br />   <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 />   <span class="subsubsectionToc">20.2.6 <a
- href="#x1-20900020.2.6" id="QQ2-1-217">Variable Substitution</a></span>
- <br />  <span class="subsectionToc">20.3 <a
- href="#x1-21000020.3" id="QQ2-1-218">Customizing Forms</a></span>
- <br />  <span class="subsectionToc">20.4 <a
- href="#x1-21100020.4" id="QQ2-1-219">Customizing Modules</a></span>
- <br />   <span class="subsubsectionToc">20.4.1 <a
- href="#x1-21200020.4.1" id="QQ2-1-220">Database Access</a></span>
- <br />  <span class="subsectionToc">20.5 <a
- href="#x1-21300020.5" id="QQ2-1-221">CLI Examples</a></span>
- <br /> <span class="partToc">III  <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 />  <span class="subsectionToc">B.1 <a
- href="#x1-217000B.1" id="QQ2-1-225">Understanding Shipping Addresses and Carriers</a></span>
- <br />  <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 />  <span class="subsectionToc">C.1 <a
- href="#x1-220000C.1" id="QQ2-1-228">Common Installation Errors</a></span>
- <br />  <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 />  <span class="subsectionToc"> <a
- href="#Q1-1-232">1. APPLICABILITY AND DEFINITIONS</a></span>
- <br />  <span class="subsectionToc"> <a
- href="#Q1-1-233">2. VERBATIM COPYING</a></span>
- <br />  <span class="subsectionToc"> <a
- href="#Q1-1-234">3. COPYING IN QUANTITY</a></span>
- <br />  <span class="subsectionToc"> <a
- href="#Q1-1-235">4. MODIFICATIONS</a></span>
- <br />  <span class="subsectionToc"> <a
- href="#Q1-1-236">5. COMBINING DOCUMENTS</a></span>
- <br />  <span class="subsectionToc"> <a
- href="#Q1-1-237">6. COLLECTIONS OF DOCUMENTS</a></span>
- <br />  <span class="subsectionToc"> <a
- href="#Q1-1-238">7. AGGREGATION WITH INDEPENDENT WORKS</a></span>
- <br />  <span class="subsectionToc"> <a
- href="#Q1-1-239">8. TRANSLATION</a></span>
- <br />  <span class="subsectionToc"> <a
- href="#Q1-1-240">9. TERMINATION</a></span>
- <br />  <span class="subsectionToc"> <a
- href="#Q1-1-241">10. FUTURE REVISIONS OF THIS LICENSE</a></span>
- <br />  <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 <a
- href="#x1-1090011">Simple AR Service Invoice Workflow Example</a></span><br /><span class="lofToc">2 <a
- href="#x1-1100012">AR Workflow with
- Shipping</a></span><br /><span class="lofToc">3 <a
- href="#x1-1110013">Complex AR Workflow with Shipping</a></span><br /><span class="lofToc">4 <a
- href="#x1-1160014">Simple AP Workflow</a></span><br /><span class="lofToc">5 <a
- href="#x1-1170015">AP
- Workflow with Receiving</a></span><br /><span class="lofToc">6 <a
- href="#x1-1180016">Complex AP Workflow</a></span><br /><span class="lofToc">7 <a
- href="#x1-1390017">Payroll as a GL Transaction (Purely
- fictitious numbers)</a></span><br /><span class="lofToc">8 <a
- href="#x1-1760018">The LedgerSMB software stack in a Typical Implementation</a></span><br />
- </div>
-
-
- <h1 class="partHead"><span class="titlemark">Part I<br /></span><a
- id="x1-3000I"></a>LedgerSMB and Business Processes</h1>
- <h3 class="sectionHead"><span class="titlemark">1 </span> <a
- id="x1-40001"></a>Introduction to LedgerSMB</h3>
- <!--l. 56--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">1.1 </span> <a
- id="x1-50001.1"></a>Why LedgerSMB</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 LedgerSMB</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’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 LedgerSMB 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’ 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 LedgerSMB</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 LedgerSMB</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> (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 LedgerSMB.
- </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">LedgerSMB 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’s information is not filled in, LedgerSMB 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 LedgerSMB, 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’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’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’t worry: you won’t have to solve
- it):
- </p><!--l. 334--><p class="indent"> Assets = Liabilities + Equity + (Revenue - Expense)
- </p><!--l. 336--><p class="indent"> You won’t actually use this equation while doing your bookkeeping, but it’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’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’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 LedgerSMB 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->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->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 LedgerSMB 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– 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.
- </p><!--l. 494--><p class="indent"> Once this account is created, one can set the tax amount.
- </p><!--l. 497--><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. 499--><p class="noindent">Go to System->Defaults and the tax account will be listed near the bottom of the page. The rate can be set
- there.
- </p><!--l. 503--><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. 505--><p class="noindent">These accounts are the default accounts for part creation and foreign exchange tracking.
- </p><!--l. 509--><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. 511--><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. 516--><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. 518--><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. 522--><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. 525--><p class="indent"> Leading zeros are preserved. Other special values which can be embedded using <span
- class="cmmi-10"><</span>?lsmb ?<span
- class="cmmi-10">> </span>tags
- include:
- </p><!--l. 528--><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. 542--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">4.2 </span> <a
- id="x1-340004.2"></a>Audit Control</h4>
- <!--l. 544--><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. 552--><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. 554--><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. 558--><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. 563--><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. 578--><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. 593--><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. 598--><p class="indent"> LedgerSMB 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. 604--><p class="indent"> Most accountants prefer this means to other audit trails because it is well proven and understood by
- them.
- </p><!--l. 608--><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. 610--><p class="noindent">You cannot alter a transaction that was entered before the closing date.
- </p><!--l. 613--><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. 615--><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. 620--><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. 625--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">4.3 </span> <a
- id="x1-380004.3"></a>Departments</h4>
- <!--l. 627--><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 LedgerSMB to meet their
- needs.
- </p><!--l. 633--><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. 635--><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. 641--><p class="indent"> One of the serious misunderstandings people run up against is that LedgerSMB tends to more narrowly
- define cost and profit centers than most businesses do. In LedgerSMB 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 LedgerSMB, these
- are profit centers.
- </p><!--l. 649--><p class="indent"> LedgerSMB 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. 654--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">4.4 </span> <a
- id="x1-400004.4"></a>Warehouses</h4>
- <!--l. 656--><p class="noindent">LedgerSMB 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. 661--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">4.5 </span> <a
- id="x1-410004.5"></a>Languages</h4>
- <!--l. 663--><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. 669--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">4.6 </span> <a
- id="x1-420004.6"></a>Types of Businesses</h4>
- <!--l. 671--><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’s services as a subcontractor a 10% discount or more.
- </p><!--l. 676--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">4.7 </span> <a
- id="x1-430004.7"></a>Misc.</h4>
- <!--l. 679--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">4.7.1 </span> <a
- id="x1-440004.7.1"></a>GIFI</h5>
- <!--l. 681--><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. 685--><p class="indent"> People that don’t otherwise have a use for GIFI can use it to create reports which agregate accounts
- together.
-
-
- </p><!--l. 688--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">4.7.2 </span> <a
- id="x1-450004.7.2"></a>SIC</h5>
- <!--l. 690--><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. 697--><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. 699--><p class="noindent">The templates for invoices, orders, and the like can be edited from within LedgerSMB. 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. 705--><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. 707--><p class="noindent">Although the Year-end functionality in LedgerSMB 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. 713--><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. 725--><p class="indent"> LedgerSMB 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. 730--><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 ledgersmb.conf</h4>
- <!--l. 736--><p class="noindent">The ledgersmb.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. 741--><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 LedgerSMB 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. 761--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">5 </span> <a
- id="x1-490005"></a>Goods and Services</h3>
- <!--l. 763--><p class="noindent">The Goods and Services module will focus on the definition of goods and services and the related accounting
- concepts.
- </p><!--l. 767--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
- id="x1-500005.1"></a>Basic Terms</h4>
- <!--l. 769--><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. 780--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">5.2 </span> <a
- id="x1-510005.2"></a>The Price Matrix</h4>
- <!--l. 782--><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. 788--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">5.3 </span> <a
- id="x1-520005.3"></a>Pricegroups</h4>
- <!--l. 790--><p class="noindent">Pricegroups are used to help determine the discount a given customer may have.
- </p><!--l. 794--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">5.4 </span> <a
- id="x1-530005.4"></a>Groups</h4>
- <!--l. 796--><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. 801--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">5.5 </span> <a
- id="x1-540005.5"></a>Labor/Overhead</h4>
- <!--l. 803--><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. 808--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">5.6 </span> <a
- id="x1-550005.6"></a>Services</h4>
- <!--l. 810--><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. 815--><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. 817--><p class="noindent">One approach to dealing with shipping and handling is to add it as a service. Create a service called
- “Shipping and Handling”, 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. 824--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">5.7 </span> <a
- id="x1-570005.7"></a>Parts</h4>
- <!--l. 826--><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. 832--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">5.8 </span> <a
- id="x1-580005.8"></a>Assemblies and Manufacturing</h4>
- <!--l. 834--><p class="noindent">Manufacturers order parts but they sell the products of their efforts. LedgerSMB 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. 840--><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. 844--><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. 846--><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. 850--><p class="indent"> The Check Inventory option will cause LedgerSMB to refuse to stock an assembly if the inventory
- required to produce the assembly would drop the part below the reorder point.
- </p><!--l. 855--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">5.9 </span> <a
- id="x1-600005.9"></a>Reporting</h4>
- <!--l. 858--><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. 860--><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. 863--><p class="indent"> Types of reports are:
- </p><!--l. 865--><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. 873--><p class="noindent">One can also list these goods by invoice, order, or quotation.
- </p><!--l. 875--><p class="indent"> For best results, it is a good idea to enter some AR and AP data before running these reports.
-
-
- </p><!--l. 879--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">5.9.2 </span> <a
- id="x1-620005.9.2"></a>Requirements</h5>
- <!--l. 881--><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. 887--><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. 889--><p class="noindent">This is similar to the Parts and All Items menu but only supports Active, Obsolete, and Orphaned
- reports.
- </p><!--l. 893--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">5.9.4 </span> <a
- id="x1-640005.9.4"></a>Assemblies</h5>
- <!--l. 895--><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. 898--><p class="indent"> AP Invoices, Purchase Orders, and RFQ’s are not available on this report.
- </p><!--l. 902--><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. 904--><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. 908--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">5.10 </span> <a
- id="x1-660005.10"></a>Translations</h4>
- <!--l. 910--><p class="noindent">One can add translations so that they show up in the customer’s native language in the issued
- invoice.
- </p><!--l. 913--><p class="indent"> To issue translations, one must have languages defined. One can then add translations to descriptions and
- part groups.
- </p><!--l. 917--><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. 919--><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. 925--><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. 932--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">6 </span> <a
- id="x1-680006"></a>AP</h3>
- <!--l. 935--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">6.1 </span> <a
- id="x1-690006.1"></a>Basic AP Concepts</h4>
- <!--l. 937--><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. 942--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">6.2 </span> <a
- id="x1-700006.2"></a>Vendors</h4>
- <!--l. 944--><p class="noindent">A vendor is any business that the company agrees to pay money to.
- </p><!--l. 946--><p class="indent"> One can enter vendor information under AP->Vendors->Add Vendor. The vendor list can be searched
- under AP->Vendors->Reports->Search.
- </p><!--l. 950--><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. 954--><p class="indent"> A few fields that need explanation are:
- </p><!--l. 956--><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. 966--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">6.3 </span> <a
- id="x1-710006.3"></a>AP Transactions</h4>
- <!--l. 968--><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. 972--><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. 975--><p class="indent"> All other payments can and should be entered under cash payment (below).
- </p><!--l. 977--><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. 981--><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. 985--><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. 988--><p class="indent"> Note: Printing a transaction does not post it. No data is committed until the invoice is posted.
- </p><!--l. 992--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">6.4 </span> <a
- id="x1-720006.4"></a>AP Invoices</h4>
- <!--l. 994--><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. 998--><p class="indent"> This screen is reasonably similar to the AP Transaction Screen, though the part entry section is a bit
- different.
- </p><!--l. 1001--><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. 1005--><p class="indent"> Note that LedgerSMB can search for partial part numbers or descriptions.
- </p><!--l. 1007--><p class="indent"> Also if you have a group you can use this to select the part.
- </p><!--l. 1009--><p class="indent"> To remove a line item from an invoice or order, delete the partnumber and click update.
- </p><!--l. 1013--><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. 1015--><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. 1021--><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. 1029--><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. 1031--><p class="noindent">It is a bad idea to repost invoices/transactions just to enter a payment. The Cash->Payment window allows
- one to enter payments against AP invoices or transactions.
- </p><!--l. 1035--><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. 1038--><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. 1043--><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. 1045--><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. 1051--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">6.6 </span> <a
- id="x1-760006.6"></a>Transaction/Invoice Reporting</h4>
- <!--l. 1054--><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. 1056--><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. 1060--><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. 1063--><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. 1067--><p class="indent"> Open invoices are ones not fully paid off, while closed invoices are those that have been
- paid.
- </p><!--l. 1071--><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. 1073--><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. 1078--><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. 1080--><p class="noindent">This report can tell you how many invoices are past due and by how much.
- </p><!--l. 1083--><p class="indent"> A summary report just shows vendors while a detail report shows individual invoices.
- </p><!--l. 1087--><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. 1089--><p class="noindent">These reports have known issues. It is better to use the GL reports and filter accordingly.
- </p><!--l. 1092--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">6.7 </span> <a
- id="x1-810006.7"></a>Vendor Reporting</h4>
- <!--l. 1095--><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. 1097--><p class="noindent">The Vendor Search screen can be used to locate vendors or AP transactions associated with those
- vendors.
-
-
- </p><!--l. 1100--><p class="indent"> The basic types of reports are:
- </p><!--l. 1102--><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. 1110--><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. 1115--><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. 1117--><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’s, Purchase Orders, and AP Invoices.
- </p><!--l. 1123--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">7 </span> <a
- id="x1-840007"></a>AR</h3>
- <!--l. 1126--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">7.1 </span> <a
- id="x1-850007.1"></a>Customers</h4>
- <!--l. 1128--><p class="noindent">Customers are entered in using the AR->Customers->Add Customer menu.
- </p><!--l. 1131--><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. 1136--><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. 1140--><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. 1142--><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. 1148--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">7.2 </span> <a
- id="x1-870007.2"></a>AR Transactions</h4>
- <!--l. 1150--><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. 1154--><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. 1159--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">7.3 </span> <a
- id="x1-880007.3"></a>AR Invoices</h4>
- <!--l. 1161--><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. 1166--><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. 1170--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">7.4 </span> <a
- id="x1-890007.4"></a>Cash Receipt</h4>
- <!--l. 1172--><p class="noindent">The Cash->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. 1179--><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. 1181--><p class="noindent">The cash->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. 1187--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">7.5 </span> <a
- id="x1-910007.5"></a>AR Transaction Reporting</h4>
- <!--l. 1189--><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. 1193--><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. 1195--><p class="noindent">This is almost identical to the AP Transactions Report.
- </p><!--l. 1197--><p class="indent"> If a customer’s PO has been associated with this transaction, one can search under this field as
- well.
-
-
- </p><!--l. 1201--><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. 1203--><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. 1210--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">7.6 </span> <a
- id="x1-940007.6"></a>Customer Reporting</h4>
- <!--l. 1212--><p class="noindent">These reports are almost identical to the AP Vendor reports and are not discussed in these notes.
- </p><!--l. 1216--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">8 </span> <a
- id="x1-950008"></a>Projects</h3>
- <!--l. 1219--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">8.1 </span> <a
- id="x1-960008.1"></a>Project Basics</h4>
- <!--l. 1221--><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. LedgerSMB does not offer comprehensive project management
- capabilities, and projects are only used here as they relate to accounting.
- </p><!--l. 1226--><p class="indent"> One can also add translated descriptions to the project names as well.
- </p><!--l. 1229--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">8.2 </span> <a
- id="x1-970008.2"></a>Timecards</h4>
- <!--l. 1231--><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. 1234--><p class="indent"> The non-chargeable is the number of hours that are not billed on the invoice.
- </p><!--l. 1237--><p class="indent"> One can then generate invoices based on this information.
- </p><!--l. 1239--><p class="indent"> The project field is not optional.
- </p><!--l. 1242--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">8.3 </span> <a
- id="x1-980008.3"></a>Projects and Invoices</h4>
- <!--l. 1244--><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. 1248--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">8.4 </span> <a
- id="x1-990008.4"></a>Reporting</h4>
- <!--l. 1251--><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. 1253--><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. 1258--><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. 1260--><p class="noindent">The Standard or GIFI options can be used to create different reports (for example, for Canadian Tax reporting
- purposes).
- </p><!--l. 1263--><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. 1268--><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. 1270--><p class="noindent">This provides a simple way of searching for projects to edit or modify.
- </p><!--l. 1273--><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. 1281--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">9 </span> <a
- id="x1-1040009"></a>Quotations and Order Management</h3>
- <!--l. 1283--><p class="noindent">This unit will introduce the business processes that LedgerSMB 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. 1291--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">9.1 </span> <a
- id="x1-1050009.1"></a>Sales Orders</h4>
- <!--l. 1293--><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. 1299--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">9.2 </span> <a
- id="x1-1060009.2"></a>Quotations</h4>
- <!--l. 1301--><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. 1306--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">9.3 </span> <a
- id="x1-1070009.3"></a>Shipping</h4>
- <!--l. 1308--><p class="noindent">The Shipping module (Shipping->Shipping) allows one to ship portions or entireties of existing sales orders,
- printing pick lists and packing slips.
- </p><!--l. 1312--><p class="indent"> One can then generate invoices for those parts that were shipped.
- </p><!--l. 1314--><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. 1319--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">9.4 </span> <a
- id="x1-1080009.4"></a>AR Work Flow</h4>
- <!--l. 1322--><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. 1324--><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. 1329--><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. 1332--><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 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. 1350--><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. 1355--><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. 1359--><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 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. 1375--><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. 1382--><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 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. 1399--><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. 1404--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">9.6 </span> <a
- id="x1-1130009.6"></a>Purchase Orders</h4>
- <!--l. 1406--><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’s or AP Invoices.
- </p><!--l. 1412--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">9.7 </span> <a
- id="x1-1140009.7"></a>Receiving</h4>
- <!--l. 1414--><p class="noindent">The Shipping->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. 1419--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">9.8 </span> <a
- id="x1-1150009.8"></a>AP Work Flow</h4>
- <!--l. 1422--><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. 1424--><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 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. 1444--><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 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. 1466--><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. 1473--><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 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. 1491--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">9.9.1 </span> <a
- id="x1-1200009.9.1"></a>Generation</h5>
- <!--l. 1493--><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. 1501--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">9.9.2 </span> <a
- id="x1-1210009.9.2"></a>Consolidation</h5>
- <!--l. 1503--><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. 1508--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">9.10 </span> <a
- id="x1-1220009.10"></a>Reporting</h4>
- <!--l. 1510--><p class="noindent">The reporting functionality in the order management is largely limited to the ability to locate purchase
- orders, sales orders, RFQ’s, and quotations.
- </p><!--l. 1515--><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. 1517--><p class="noindent">One can transfer inventory between warehouses if necessary by using the Shipping->Transfer Inventory
- screen.
- </p><!--l. 1521--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">10 </span> <a
- id="x1-12400010"></a>HR</h3>
- <!--l. 1523--><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. 1528--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">11 </span> <a
- id="x1-12500011"></a>POS</h3>
- <!--l. 1530--><p class="noindent">LedgerSMB 1.2 includes a number of components merged from Metatron Technology Consulting’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. 1534--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">11.1 </span> <a
- id="x1-12600011.1"></a>Sales Screen</h4>
- <!--l. 1536--><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. 1549--><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. 1558--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">11.3 </span> <a
- id="x1-12800011.3"></a>Hardware Support</h4>
- <!--l. 1560--><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. 1567--><p class="indent"> Notes for specific types of hardware are as follows:
- </p><!--l. 1569--><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. 1587--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">11.4 </span> <a
- id="x1-12900011.4"></a>Reports</h4>
- <!--l. 1590--><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. 1592--><p class="noindent">The POS->Open screen allows one to find any POS receipts that are not entirely paid off.
- </p><!--l. 1596--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">11.4.2 </span> <a
- id="x1-13100011.4.2"></a>Receipts</h5>
- <!--l. 1598--><p class="noindent">The POS->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. 1602--><p class="indent"> The till column is the last component or octet of the terminal’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. 1606--><p class="indent"> All entries are grouped by date and source in this report.
- </p><!--l. 1609--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">12 </span> <a
- id="x1-13200012"></a>General Ledger</h3>
-
-
- <!--l. 1612--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">12.1 </span> <a
- id="x1-13300012.1"></a>GL Basics</h4>
- <!--l. 1614--><p class="noindent">The General Ledger is the heart of LedgerSMB. Indeed, LedgerSMB 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. 1620--><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. 1622--><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. 1626--><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. 1632--><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. 1638--><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. 1643--><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. 1645--><p class="noindent">Let us say that John starts his business with an initial investment of $10,000.
- </p><!--l. 1648--><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. 1688--><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. 1715--><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. 1742--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">12.1.3 </span> <a
- id="x1-13600012.1.3"></a>The GL in LedgerSMB</h5>
- <!--l. 1744--><p class="noindent">The paper-based accounting procedure works well when one is stuck with paper recording requirements but
- it has one serious deficiency— all of this transcribing creates an opportunity for errors.
- </p><!--l. 1748--><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. 1754--><p class="indent"> This is the exact way that the General Ledger is used in LedgerSMB. 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. 1758--><p class="indent"> All modules of LedgerSMB 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. 1763--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">12.2 </span> <a
- id="x1-13700012.2"></a>Cash Transfer</h4>
- <!--l. 1765--><p class="noindent">The simplest form of GL entry in LedgerSMB is the Cash->Transfer screen. This screen shows two
- transaction lines, and fields for reference, department, description, and notes.
- </p><!--l. 1769--><p class="indent"> The field descriptions are as follows:
- </p><!--l. 1771--><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. 1784--><p class="noindent">The credit and debit options seem to be the opposite of what one would think of concerning one’s bank account.
- The reason is that your bank statement is done from the bank’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. 1791--><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. 1796--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">12.3 </span> <a
- id="x1-13800012.3"></a>GL Transactions</h4>
- <!--l. 1798--><p class="noindent">The GL Transaction screen (General Ledger->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. 1802--><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. 1809--><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. 1811--><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. 1814--><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 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. 1861--><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. 1867--><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. 1876--><p class="noindent">The most flexible report in LedgerSMB 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. 1881--><p class="indent"> The search criteria include:
- </p><!--l. 1883--><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. 1898--><p class="noindent">The actual format of the report looks more like what one would expect in a paper accounting system’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. 1904--><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. 1906--><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. 1912--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">13 </span> <a
- id="x1-14300013"></a>Recurring Transactions</h3>
- <!--l. 1914--><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. 1918--><p class="indent"> In general the reference number should be left blank as this will force LedgerSMB 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. 1924--><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. 1929--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">14 </span> <a
- id="x1-14400014"></a>Financial Statements and Reports</h3>
- <!--l. 1931--><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. 1937--><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. 1939--><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. 1944--><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. 1953--><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. 1961--><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. 1963--><p class="noindent">The Reports–>Chart of Accounts will provide the chart of accounts along with current totals in each
- account.
-
-
- </p><!--l. 1966--><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. 1970--><p class="indent"> The report format is similar to that of a paper-based general ledger.
- </p><!--l. 1973--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">14.3 </span> <a
- id="x1-14700014.3"></a>Trial Balance</h4>
- <!--l. 1976--><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. 1978--><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. 1988--><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. 1990--><p class="noindent">This report is located under Reports –>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. 1995--><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. 2000--><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’t Balance?</h5>
- <!--l. 2002--><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, LedgerSMB does not check this latter issue).
- </p><!--l. 2009--><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. 2011--><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. 2016--><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. 2018--><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. 2023--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">14.4 </span> <a
- id="x1-15300014.4"></a>Income Statement</h4>
- <!--l. 2025--><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. 2029--><p class="indent"> The report is run from Reports–>Income Statement. The report preparation screen shows the following
- fields:
- </p><!--l. 2032--><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. 2047--><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. 2055--><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. 2057--><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. 2062--><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. 2067--><p class="indent"> Finally, these reports can be used to provide a look at each department’s performance and their
- ability to work within their budget. One can compare a department or project’s performance to
- a year prior and look for patterns that can indicate problems or opportunities that need to be
- addressed.
- </p><!--l. 2074--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">14.5 </span> <a
- id="x1-15500014.5"></a>Balance Sheet</h4>
- <!--l. 2076--><p class="noindent">The balance sheet is the second major accounting statement supported by LedgerSMB. The balance sheet
- provides a snapshot of the current financial health of the business by comparing assets, liabilities, and
- equity.
- </p><!--l. 2081--><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. 2085--><p class="indent"> The Balance Sheet report preparation screen is much simpler than the Income Statement screen.
- Balance sheets don’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. 2091--><p class="indent"> The fields in creating a balance sheet are:
- </p><!--l. 2093--><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. 2104--><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. 2108--><p class="indent"> The total assets should be equal to the sum of the totals of the liability and equity accounts.
-
-
- </p><!--l. 2112--><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’t balance?</h4>
- <!--l. 2114--><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. 2118--><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. 2120--><p class="noindent">The Statement of Owner Equity is the one accounting statement that LedgerSMB 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. 2128--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">15 </span> <a
- id="x1-15800015"></a>The Template System</h3>
- <!--l. 2130--><p class="noindent">LedgerSMB 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. 2139--><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. 2143--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">15.1 </span> <a
- id="x1-15900015.1"></a>Text Templates</h4>
- <!--l. 2145--><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. 2149--><p class="indent"> The first two lines are:
- <br class="newline" /><?lsmb company align=center width=40 ?>
- <br class="newline" /><?lsmb address align=center width=40 ?>
- <br class="newline" />
- </p><!--l. 2154--><p class="indent"> The first line tells LedgerSMB 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. 2158--><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. 2163--><p class="indent"> In all types of templates, variable substitution occurs between <?lsmb and ?>. One can optionally specify an
- alignment or a width but these are really only useful in text templates.
-
-
- </p><!--l. 2168--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">15.2 </span> <a
- id="x1-16000015.2"></a>HTML Templates</h4>
- <!--l. 2170--><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. 2189--><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’s active server pages.
- </p><!--l. 2196--><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. 2201--><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> Templates</h4>
- <!--l. 2203--><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> :
- </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. 2222--><p class="noindent"><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
- class="E">E</span>X</span></span> templates allow one to generate PDF and postscript documents and print directly to a postscript-enabled
- printer or print software (like CUPS).
- </p><!--l. 2226--><p class="indent"> <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
- class="E">E</span>X</span></span> 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> implementation such as LY X.
-
-
- </p><!--l. 2231--><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> ?</h5>
- <!--l. 2233--><p class="noindent"><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
- class="E">E</span>X</span></span> (pronounced LAY-tech) is an extension on the <span class="TEX">T<span
- class="E">E</span>X</span> 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> 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> 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. 2241--><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> 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> 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. 2248--><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> is a complete though simple programming language that allows one to redefine
- internals of the system for formatting purposes.
- </p><!--l. 2252--><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. 2255--><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> Templates</h5>
- <!--l. 2257--><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> 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> implementations, it is open source and is included with most Linux
- distributions.
- </p><!--l. 2263--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">15.4 </span> <a
- id="x1-16400015.4"></a>Customizing Logos</h4>
- <!--l. 2265--><p class="noindent"><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
- class="E">E</span>X</span></span> 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’s for
- PDF’s, though GIF’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> document resides in the users
- directory.
- </p><!--l. 2272--><p class="indent"> HTML documents can have logos in many different formats. PNG’s are generally preferred for printing
- reasons. The image can be stored anywhere and merely referenced in the HTML.
- </p><!--l. 2276--><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. 2280--><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. 2282--><p class="noindent">The template directory ("templates" in the root LedgerSMB install directory) contains all the root templates
- used by LedgerSMB. 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> respectively).
- </p><!--l. 2289--><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 LedgerSMB username). Within this directory are more subdirectories for translated templates, one for
- each language created.
-
-
- </p><!--l. 2296--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">15.6 </span> <a
- id="x1-16600015.6"></a>Upgrade Issues</h4>
- <!--l. 2298--><p class="noindent">When LedgerSMB 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. 2302--><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. 2308--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">16 </span> <a
- id="x1-16700016"></a>An Introduction to the CLI</h3>
- <!--l. 2310--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">16.1 </span> <a
- id="x1-16800016.1"></a>Conventions</h4>
- <!--l. 2312--><p class="noindent">The command-line API will be referred to as the API.
- </p><!--l. 2314--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">16.2 </span> <a
- id="x1-16900016.2"></a>Preliminaries</h4>
- <!--l. 2316--><p class="noindent">Logging into LedgerSMB (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. 2322--><p class="indent"> All scripts included in the documentation can also be found in the doc/samples directory.
- </p><!--l. 2325--><p class="indent"> Consider a simple example:
- </p><!--l. 2327--><p class="indent"> cd /usr/local/ledgersmb ./ct.pl "login=name&path=bin&password=xxxxx&action=search&db=customer"
- </p><!--l. 2330--><p class="indent"> The cd command moves your terminal session’s current working directory into the main LedgerSMB
- directory. Then the LedgerSMB perl script ct.pl is called with one long line as an argument. The argument is
- really several variable=value pairs separated by ampersands (&). The value for the login variable is the
- username that LedgerSMB is to use, and the value for the password variable is the plaintext
- password.
- </p><!--l. 2336--><p class="indent"> To build our examples we will use a username of "clarkkent" who has a password of "lOis,lAn3".
- </p><!--l. 2339--><p class="indent"> cd /usr/local/ledgersmb ./ct.pl "login=clarkkent&path=bin&password=lOis,lAn3&action=search&db=customer"
- </p><!--l. 2342--><p class="indent"> If we execute these commands we will get the html for the search form for the customer database. This
- result isn’t useful in itself, but it shows we are on the right track.
- </p><!--l. 2347--><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. 2349--><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. 2352--><p class="indent"> This is a bash script which:
- </p><!--l. 2354--><p class="indent"> 1. sets NOW to the current working directory 2. prompts for and reads your LedgerSMB login 3. prompts
- for and reads (non-echoing) your LedgerSMB password 4. changes directory to /usr/local/ledgersmb 5.
- constructs login and logout commands and a transaction command 6. logs into ledgersmb (in a real
- program, output would be checked for success or failure) 7. executes the transaction 8. logs out
- of ledgersmb (although this is not necessary) 9. returns to the original working directory 10.
- exits
- </p><!--l. 2366--><p class="indent"> Running lsmb01-cli-example.sh produces:
- </p><!--l. 2368--><p class="indent"> $ lsmb01-cli-example.sh
- </p><!--l. 2370--><p class="indent"> LedgerSMB login: clarkkent
- </p><!--l. 2372--><p class="indent"> LedgerSMB password:
-
-
- </p>
- <table
- class="verbatim"><tr class="verbatim"><td
- class="verbatim"><div class="verbatim">
- <body>
-  <br />
-  <br /><form method=post action=ct.pl>
-  <br />
-  <br /><input type=hidden name=db value=customer>
-  <br />
-  <br /><table width=100%>
-  <br />  <tr>
-  <br />    <th class=listtop>Search</th>
-  <br />.
-  <br />.
-  <br />.
- </div>
- </td></tr></table>
- <!--l. 2387--><p class="nopar">
- </p><!--l. 2389--><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. 2393--><p class="indent"> A nicer solution would be to use a language such as perl to drive the command line API.
- </p><!--l. 2396--><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
-  <br />#######################################################################
-  <br />#
-  <br /># lsmb01-cli-example.sh
-  <br /># Copyright (C) 2006. Louis B. Moore
-  <br />#
-  <br /># $Id: $
-  <br />#
-  <br /># This program is free software; you can redistribute it and/or modify
-  <br /># it under the terms of the GNU General Public License as published by
-  <br /># the Free Software Foundation; either version 2 of the License, or
-  <br /># (at your option) any later version.
-  <br />#
-  <br /># This program is distributed in the hope that it will be useful,
-  <br /># but WITHOUT ANY WARRANTY; without even the implied warranty of
-  <br /># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  <br /># GNU General Public License for more details.
-  <br /># You should have received a copy of the GNU General Public License
-  <br /># along with this program; if not, write to the Free Software
-  <br /># Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-  <br />#
-  <br />#######################################################################
-  <br />
-  <br />NOW=‘pwd‘
-  <br />
-  <br />echo -n ~LedgerSMB login: ~
-  <br />read LSLOGIN
-  <br />echo
-  <br />
-  <br />echo -n ~LedgerSMB password: ~
-  <br />stty -echo
-  <br />read LSPWD
-  <br />stty echo
-  <br />echo
-  <br />
-  <br />ARG=~login=${LSLOGIN}&password=${LSPWD}&path=bin&action=search&db=customer~
-  <br />
-  <br />LGIN=~login=${LSLOGIN}&password=${LSPWD}&path=bin&action=login~
-  <br />LGOT=~login=${LSLOGIN}&password=${LSPWD}&path=bin&action=logout~
-  <br />
-  <br />cd /usr/local/ledgersmb
-  <br />
-  <br />./login.pl $LGIN 2>&1  > /dev/null
-  <br />./ct.pl $ARG
-  <br />./login.pl $LGOT 2>&1  > /dev/null
-  <br />
-  <br />cd $NOW
-  <br />
-
-
-  <br />exit 0
- </div>
- </td></tr></table>
- <!--l. 2447--><p class="nopar">
- </p><!--l. 2450--><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. 2452--><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. 2459--><p class="indent"> This script begins by prompting for your LedgerSMB login and password. Using the supplied
- values a login command is constructed and passed into the runLScmd subroutine. runLScmd
- changes directory to /usr/local/ledgersmb/ 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. 2465--><p class="indent"> The script checks to see if there was an error in the login, exiting if there was.
- </p><!--l. 2467--><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. 2471--><p class="indent"> Once all the transactions are processed, runLScmd is called one last time to logout and the script
- exits.
- </p><!--l. 2474--><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 -w
-  <br />#
-  <br />#  File:         lsmb02-cli-example.pl
-  <br />#  Environment:  LedgerSMB 1.2.0+
-  <br />#  Author:       Louis B. Moore
-  <br />#
-  <br />#  Copyright (C)   2006  Louis B. Moore
-  <br />#
-  <br />#  This program is free software; you can redistribute it and/or
-  <br />#  modify it under the terms of the GNU General Public License
-  <br />#  as published by the Free Software Foundation; either version 2
-  <br />#  of the License, or (at your option) any later version.
-  <br />#
-  <br />#  This program is distributed in the hope that it will be useful,
-  <br />#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  <br />#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  <br />#  GNU General Public License for more details.
-  <br />#
-  <br />#  You should have received a copy of the GNU General Public License
-  <br />#  along with this program; if not, write to the Free Software
-  <br />#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-  <br />#
-  <br />#  Revision:
-  <br />#       $Id$
-  <br />#
-  <br />#
-  <br />
-  <br />use File::chdir;
-  <br />use HTML::Entities;
-  <br />
-  <br />
-  <br />print ~\n\nLedgerSMB login: ~;
-  <br />my $login = <STDIN>;
-  <br />chomp($login);
-  <br />
-  <br />
-  <br />print ~\nLedgerSMB password: ~;
-  <br />system(~stty -echo~);
-  <br />my $pwd = <STDIN>;
-  <br />system(~stty echo~);
-  <br />chomp($pwd);
-  <br />print ~\n\n~;
-  <br />
-  <br />$cmd = ~login=~ . $login . ’&password=’ . $pwd . ’&path=bin&action=login’;
-  <br />
-  <br />$signin = runLScmd(~./login.pl~,$cmd);
-  <br />
-  <br />if ( $signin =~ m/Error:/ ) {
-
-
-  <br />
-  <br />print ~\nLogin error\n~;
-  <br />exit;
-  <br />
-  <br />}
-  <br />
-  <br />
-  <br />while (<main::DATA>) {
-  <br />
-  <br />chomp;
-  <br />@rec = split(/\|/);
-  <br />
-  <br />$arg = ’path=bin/mozilla&login=’ . $login . ’&password=’ . $pwd .
-  <br />’&action=’       . escape(substr($rec[0],0,35)) .
-  <br />’&db=’           . $rec[1] .
-  <br />’&name=’         . escape(substr($rec[2],0,35)) .
-  <br />’&vendornumber=’ . $rec[3] .
-  <br />’&address1=’     . escape(substr($rec[4],0,35)) .
-  <br />’&address2=’     . escape(substr($rec[5],0,35)) .
-  <br />’&city=’         . escape(substr($rec[6],0,35)) .
-  <br />’&state=’        . escape(substr($rec[7],0,35)) .
-  <br />’&zipcode=’      . escape(substr($rec[8],0,35)) .
-  <br />’&country=’      . escape(substr($rec[9],0,35)) .
-  <br />’&phone=’        . escape(substr($rec[10],0,20)) .
-  <br />’&tax_2150=1’ .
-  <br />’&taxaccounts=2150’ .
-  <br />’&taxincluded=0’ .
-  <br />’&terms=0’;
-  <br />
-  <br />$rc=runLScmd(~./ct.pl~,$arg);
-  <br />
-  <br />if ($rc =~ m/Vendor saved!/) {
-  <br />
-  <br />print ~$rec[2] SAVED\n~;
-  <br />
-  <br />} else {
-  <br />
-  <br />print ~$rec[2] ERROR\n~;
-  <br />
-  <br />}
-  <br />
-  <br />}
-  <br />
-  <br />
-  <br />$cmd = ~login=~ . $login . ’&password=’ . $pwd . ’&path=bin&action=logout’;
-  <br />
-  <br />$signin = runLScmd(~./login.pl~,$cmd);
-  <br />
-  <br />if ( $signin =~ m/Error:/ ) {
-  <br />
-  <br />    print ~\nLogout error\n~;
-  <br />
-
-
-  <br />}
-  <br />
-  <br />exit;
-  <br />
-  <br />
-  <br />#*******************************************************
-  <br /># Subroutines
-  <br />#*******************************************************
-  <br />
-  <br />
-  <br />sub runLScmd {
-  <br />
-  <br />    my $cmd  = shift;
-  <br />    my $args = shift;
-  <br />    my $i    = 0;
-  <br />    my $results;
-  <br />
-  <br />    local $CWD = ~/usr/local/ledgersmb/~;
-  <br />
-  <br />    $cmd = $cmd . ~ \~~ . $args . ~\~~;
-  <br />
-  <br />    $results = ‘$cmd 2>&1‘;
-  <br />
-  <br />    return $results;
-  <br />
-  <br />}
-  <br />
-  <br />sub escape {
-  <br />
-  <br />    my $str = shift;
-  <br />
-  <br />    if ($str) {
-  <br />
-  <br />decode_entities($str);
-  <br />$str =~ s/([^a-zA-Z0-9_.-])/sprintf(~%%%02x~, ord($1))/ge;
-  <br />    }
-  <br />
-  <br />    return $str;
-  <br />
-  <br />}
-  <br />
-  <br />
-  <br />#*******************************************************
-  <br /># Record Format
-  <br />#*******************************************************
-  <br />#
-  <br /># action | db | name | vendornumber | address1 | address2 | city | state | zipcode | country | phone
-  <br />#
-  <br />
-  <br />__END__
-  <br />save|vendor|Parts are Us|1377|238 Riverview|Suite 11|Cheese Head|WI|56743|USA|555-123-3322|
-  <br />save|vendor|Widget Heaven|1378|41 S. Riparian Way||Show Me|MO|39793|USA|555-231-3309|
-
-
-  <br />save|vendor|Consolidated Spackle|1379|1010 Binary Lane|Dept 1101|Beverly Hills|CA|90210|USA|555-330-7639 x772|
-  <br />
-  <br />
- </div>
- </td></tr></table>
- <!--l. 2631--><p class="nopar">
-
-
- </p>
- <h1 class="partHead"><span class="titlemark">Part 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. 2642--><p class="noindent">LedgerSMB 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. 2647--><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 8: </td><td
- class="content">The LedgerSMB software stack in a Typical Implementation</td></tr></table><!--tex4ht:label?: x1-1760018 -->
-
-
- </td></tr></table></div><hr class="endfigure" />
- <!--l. 2658--><p class="indent"> LedgerSMB 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. 2663--><p class="indent"> LedgerSMB 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’s.
- </p><!--l. 2670--><p class="indent"> One can substitute other web servers for Apache. Normally LedgerSMB 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. 2674--><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 LedgerSMB on Windows (most notably in trying
- to get Postscript documents to print properly).
- </p><!--l. 2679--><p class="indent"> On the client side, any web-browser will work. Currently, the layout is different for Lynx (which doesn’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. 2688--><p class="noindent">Some companies may ask how scalable LedgerSMB 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
- LedgerSMB, the staff that may have access to some of the application may be senior enough to make the
- question worthwhile.
- </p><!--l. 2694--><p class="indent"> This question also becomes more important when companies might look at integrating LedgerSMB with
- a CRM solution, online store, or other environment. This section looks at a number of the known issues and
- their solutions.
- </p><!--l. 2700--><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. 2702--><p class="noindent">LedgerSMB 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. LedgerSMB 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. 2709--><p class="indent"> Therefore although one strategy might be to run several front-end web servers with LedgerSMB, 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. 2715--><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. 2721--><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. LedgerSMB has very few issues in the
-
-
- scalability of the application.
- </p><!--l. 2730--><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. 2732--><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. 2741--><p class="indent"> Due to the way the SQL statements are executed in LedgerSMB, most inserts will also create a dead
- row.
- </p><!--l. 2744--><p class="indent"> A second problem occurs in that each transaction is given a transaction id. These id’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. 2755--><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. 2761--><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. 2769--><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. 2771--><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. 2776--><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. 2786--><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. 2790--><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. 2796--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">18 </span> <a
- id="x1-18100018"></a>Customization Possibilities</h3>
- <!--l. 2798--><p class="noindent">LedgerSMB 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. 2803--><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. 2805--><p class="noindent">LedgerSMB 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. 2809--><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 LedgerSMB. 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. 2816--><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. 2823--><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. 2827--><p class="indent"> The locale directory contains translation files that LedgerSMB uses to translate between different
- languages. One could add translations to these files if necessary.
- </p><!--l. 2831--><p class="indent"> The LSMB directory is where the Perl modules reside that provide the core business logic in LedgerSMB.
- 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. 2836--><p class="indent"> Finally, the sql directory provides the database schemas and upgrade scripts.
- </p><!--l. 2840--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">18.2 </span> <a
- id="x1-18300018.2"></a>Data Entry Screens</h4>
- <!--l. 2842--><p class="noindent">One can customize the data entry screens to optimize work flow, display additional information,
- etc.
- </p><!--l. 2846--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">18.2.1 </span> <a
- id="x1-18400018.2.1"></a>Examples</h5>
- <!--l. 2848--><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 LedgerSMB. Finally we added the ability
- to reconcile the till online in a paperless manner.
- </p><!--l. 2856--><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. 2861--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">18.3 </span> <a
- id="x1-18500018.3"></a>Extensions</h4>
- <!--l. 2863--><p class="noindent">One can add functionality to the Perl modules in the LSMB directory and often add missing functions
- easily.
- </p><!--l. 2867--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">18.3.1 </span> <a
- id="x1-18600018.3.1"></a>Examples</h5>
- <!--l. 2869--><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. 2875--><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. 2880--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">18.4 </span> <a
- id="x1-18700018.4"></a>Templates</h4>
- <!--l. 2882--><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. 2887--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">18.4.1 </span> <a
- id="x1-18800018.4.1"></a>Examples</h5>
- <!--l. 2889--><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. 2894--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">18.5 </span> <a
- id="x1-18900018.5"></a>Reports</h4>
- <!--l. 2896--><p class="noindent">The fact that all the data is available within the database manager is a huge advantage of LedgerSMB over
- Quickbooks and the like. The rapid development of reports allows for one to easily develop reports of any
- sort within LedgerSMB.
- </p><!--l. 2902--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">18.5.1 </span> <a
- id="x1-19000018.5.1"></a>Examples</h5>
- <!--l. 2904--><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. 2909--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">19 </span> <a
- id="x1-19100019"></a>Integration Possibilities</h3>
- <!--l. 2911--><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. 2916--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">19.1 </span> <a
- id="x1-19200019.1"></a>Reporting Tools</h4>
- <!--l. 2918--><p class="noindent">Any reporting tool which can access the PostgreSQL database can be used with LedgerSMB 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. 2925--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">19.1.1 </span> <a
- id="x1-19300019.1.1"></a>Examples</h5>
- <!--l. 2927--><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 LedgerSMB.
- </p><!--l. 2935--><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. 2937--><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 LedgerSMB in various ways. One could integrate this program with
- the HERMES CRM framework, for example.
- </p><!--l. 2945--><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. 2947--><p class="noindent">LedgerSMB uses a single ’id’ 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. 2953--><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. 2959--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">19.2.2 </span> <a
- id="x1-19600019.2.2"></a>Strategies</h5>
-
-
- <!--l. 2961--><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 LedgerSMB.
- </p><!--l. 2968--><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’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 LedgerSMB? There are solutions to this problem but they do require some
- forethought.
- </p><!--l. 2975--><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. 2981--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">19.2.3 </span> <a
- id="x1-19700019.2.3"></a>Examples</h5>
- <!--l. 2983--><p class="noindent">Others have integrated L’ane POS and LedgerSMB in order to make it work better with touch screen
- devices. Still others have successfully integrated LedgerSMB and Interchange. In both cases, I believe that
- triggers were used to perform the actual integration.
- </p><!--l. 2989--><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’s</h4>
- <!--l. 2991--><p class="noindent">Often there are requests to integrate LedgerSMB with applications like SugarCRM, OSCommerce, and other
- applications running on MySQL or other database managers. This is a far more complex field and it requires
- a great deal more effort than integrating applications within the same database.
- </p><!--l. 2998--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">19.3.1 </span> <a
- id="x1-19900019.3.1"></a>Strategies</h5>
- <!--l. 3000--><p class="noindent">Real-time integration is not always possible. MySQL does not support the SQL extension SQL/MED
- (Management of External Data) that supports non-MySQL data sources so it is not possible to replicate the
- data in real-time. Therefore one generally resorts to integrating the system using time-based updates.
- Replication may be somewhat error-prone unless the database manager supports triggers (first added to
- MySQL in 5.0) or other mechanisms to ensure that all changed records can be detected and replicated. In
- general, it is usually advisable to add two fields to the record– one that shows the insert time and one that
- shows the last update.
- </p><!--l. 3011--><p class="indent"> Additionally, I would suggest adding additional information to the LedgerSMB tables so that you can
- track the source record from the other application in the case of an update.
- </p><!--l. 3015--><p class="indent"> In general, one must write replication scripts that dump the information from one and add it to the other.
- This must go both ways.
- </p><!--l. 3019--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">19.3.2 </span> <a
- id="x1-20000019.3.2"></a>Integration Products and Open Source Projects</h5>
-
-
- <!--l. 3021--><p class="noindent">While many people write Perl scripts to accomplish the replication, an open source project exists called
- DBI-Link. This package requires PL/Perl to be installed in PostgreSQL, and it allows PostgreSQL to present
- any data accessible via Perl’s DBI framework as PostgreSQL tables. DBI-Link can be used to allow
- PostgreSQL to pull the data from MySQL or other database managers.
- </p><!--l. 3028--><p class="indent"> DBI-Link can simplify the replication process by reducing the operation to a set of SQL queries.
- </p><!--l. 3032--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">20 </span> <a
- id="x1-20100020"></a>Customization Guide</h3>
- <!--l. 3034--><p class="noindent">This section is meant to provide a programmer with an understanding of the technologies enough
- information to get up to speed quickly and minimize the time spent familiarizing themselves with the
- software. Topics in this section are listed in order of complexity. As it appeals to a narrower audience than
- previous discussions of this topic, it is listed separately.
- </p><!--l. 3042--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">20.1 </span> <a
- id="x1-20200020.1"></a>General Information</h4>
- <!--l. 3044--><p class="noindent">The main framework scripts (the ar.pl, ap.pl, etc. scripts found in the root of the installation directory) handle
- such basic features as instantiating the form object, ensuring that the user is logged in, and the
- like. They then pass the execution off to the user interface script (usually in the bin/mozilla
- directory).
- </p><!--l. 3050--><p class="indent"> LedgerSMB in many ways may look sort of object oriented in its design, but in reality, it is far more
- data-driven than object oriented. The Form object is used largely as a global symbol table and also as a
- collection of fundamental routines for things like database access. It also breaks down the query string into
- sets of variables which are stored in its attribute hash table.
- </p><!--l. 3057--><p class="indent"> In essence one can and often will store all sorts of data structures in the primary Form object. These can
- include almost anything. It is not uncommon to see lists of hashes stored as attributes to a Form
- object.
- </p><!--l. 3063--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">20.2 </span> <a
- id="x1-20300020.2"></a>Customizing Templates</h4>
- <!--l. 3065--><p class="noindent">Templates are used to generate printed checks, invoices, receipts, and more in LedgerSMB. Often the format
- of these items does not fit a specific set of requirements and needs to be changed. This document will not
- include <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
- class="E">E</span>X</span></span> or HTML instruction, but will include a general introduction to editing templates. Also, this
- is not intended to function as a complete reference.
- </p><!--l. 3072--><p class="indent"> Template instructions are contained in tags <?lsmb and ?>. The actual parsing is done by the
- parse_template function in LSMB/Form.pm.
- </p><!--l. 3076--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">20.2.1 </span> <a
- id="x1-20400020.2.1"></a>Page Breaks in <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
- class="E">E</span>X</span></span></h5>
- <!--l. 3078--><p class="noindent">The first tag one will see with <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
- class="E">E</span>X</span></span> templates is <?lsmb pagebreak num1 num2 num3 ?>
- </p>
-
-
- <ul class="itemize1">
- <li class="itemize">num1 represents characters per line
- </li>
- <li class="itemize">num2 represents lines on first page
- </li>
- <li class="itemize">num3 represents lines on second page.</li></ul>
- <!--l. 3086--><p class="noindent">The pagebreak block is terminated by <?lsmb end pagebreak ?>. Any text within the pagebreak block is ignored
- by the template.
- </p><!--l. 3090--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">20.2.2 </span> <a
- id="x1-20500020.2.2"></a>Conditionals</h5>
- <ul class="itemize1">
- <li class="itemize"><?lsmb if not varname ?>tells the parser to include the next block only if varname was posted
- by the submitting form (or set via the form hash elsewhere in the scripts). The block ends with
- <?lsmb end varname ?>
- </li>
- <li class="itemize"><?lsmb if varname ?>tells the parser to include the block if varname was posted in the
- submitting form (or set via the form hash elsewhere in the scripts). The block ends with <?lsmb
- end varname ?>
- </li>
- <li class="itemize">Lines conditionals are otherwise ignored by the parser.
- </li>
- <li class="itemize">Conditionals cannot be nested, but IF’s can be nested inside loops.</li></ul>
- <!--l. 3105--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">20.2.3 </span> <a
- id="x1-20600020.2.3"></a>Loops</h5>
- <!--l. 3107--><p class="noindent"><?lsmb foreach varname ?>is used to iterate through a list of vars set by the user interface system (usually
- one of the files under bin/mozilla (or otherwise). The block is repeated for each varname in a list. Block ends
- with <?lsmb end varname ?>
- </p><!--l. 3113--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">20.2.4 </span> <a
- id="x1-20700020.2.4"></a>File Inclusion</h5>
- <ul class="itemize1">
- <li class="itemize">Files may be included with the syntax <?lsmb
- include template_name ?>where templatename is the name of the template within the current
- template directory (usually templates/$username/). Note that for <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
- class="E">E</span>X</span></span> templates, the input
- or include functionalities might be better suited for many many things.
-
-
- </li>
- <li class="itemize">Cannot be used with conditionals
- </li>
- <li class="itemize">Filenames cannot use slashes (/) or .. due to directory transversal considerations.
- </li>
- <li class="itemize">Files can force other files to be included, but the same file cannot be included more than once.</li></ul>
- <!--l. 3129--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">20.2.5 </span> <a
- id="x1-20800020.2.5"></a>Cross-referencing and multiple passes of <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
- class="E">E</span>X</span></span></h5>
- <!--l. 3131--><p class="noindent">In <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
- class="E">E</span>X</span></span> cross-references require two passes with latex to resolve. This is because the type is set page by
- page and the program really doesn’t know on which page a given reference will fall. This becomes an
- even larger issue where floats are concerned as they can move between pages for formatting
- reasons.
- </p><!--l. 3137--><p class="indent"> In rare cases, cross-references may point at incorrect pages even with two passes (if the inclusion of the
- cross-reference data moves the object to another page). In this case you will need to use three passes of
- <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
- class="E">E</span>X</span></span> in order to have accurate references.
- </p><!--l. 3142--><p class="indent"> LedgerSMB as of the time of this writing (2.6.8) only makes one pass at the <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
- class="E">E</span>X</span></span> file. To
- force it to make more than one pass, open Form.pm with your favorite text editor. Look for the
- line:
- </p><!--l. 3146--><p class="indent"> system("latex –interaction=nonstopmode $self-><span
- class="cmsy-10">{ </span>tmpfile<span
- class="cmsy-10">}</span> > $ self-><span
- class="cmsy-10">{ </span>tmpfile<span
- class="cmsy-10">} </span>.err");
- </p><!--l. 3151--><p class="indent"> Duplicate this line for two passes, or add two copies if you need three passes.
- </p><!--l. 3155--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">20.2.6 </span> <a
- id="x1-20900020.2.6"></a>Variable Substitution</h5>
- <!--l. 3157--><p class="noindent">The following format is used for variable substitution:
- </p>
- <ul class="itemize1">
- <li class="itemize"><?lsmb varname options ?>Options are one or more (whitespace separated) of:
- <ul class="itemize2">
- <li class="itemize">align=left/right/center
- </li>
- <li class="itemize">width=chars where chars is the width in characters before wrapping
- </li>
- <li class="itemize">offset=chars where chars is the number of spaces to (depending on alignment).</li></ul>
- </li></ul>
-
-
- <!--l. 3171--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">20.3 </span> <a
- id="x1-21000020.3"></a>Customizing Forms</h4>
- <!--l. 3173--><p class="noindent">Data entry forms and other user interface pieces are in the bin directory. In LedgerSMB 1.0.0 and later,
- symlinks are not generally used.
- </p><!--l. 3176--><p class="indent"> Each module is identified with a two letter combination: ar, ap, cp, etc. These combinations are generally
- explained in the comment headers on each file.
- </p><!--l. 3180--><p class="indent"> Execution in these files begins with the function designated by the form-><span
- class="cmsy-10">{</span>action<span
- class="cmsy-10">} </span>variable. This variable
- is usually derived from configuration parameters in the menu.ini or the name of the button that was clicked
- on to submit the previous page. Due to localization requirements, the following process is used to determine
- the appropriate action taken:
- </p><!--l. 3187--><p class="indent"> The $locale->getsub routine is called. This routine checks the locale package to determine if the value
- needs to be translated back into an appropriate LSMB function. If not, the variable is lower-cased, and all
- spaces are converted into underscores.
- </p><!--l. 3192--><p class="indent"> In general there is no substitute for reading the code to understand how this can be customized and how
- one might go about doing this.
- </p><!--l. 3196--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">20.4 </span> <a
- id="x1-21100020.4"></a>Customizing Modules</h4>
- <!--l. 3198--><p class="noindent">The Perl Modules (.pm files) in the LedgerSMB directory contain the main business logic of the application
- including all database access. Most of the modules are relatively easy to follow, but the code quality leaves
- something to be desired. The API calls themselves are likely to be replaced in the future, so work on
- documenting API calls is now focused solely on those calls that are considered to be stable. At the
- moment, the best place to request information on the API’s is on the Developmers’ Email List
- (<a
- href="mailto:ledger-smb-devel@lists.sourceforge.net" >ledger-smb-devel@lists.sourceforge.net</a>).
- </p><!--l. 3207--><p class="indent"> Many of these modules have a fair bit of dormant code in them which was written for forthcoming
- features, such as payroll and bills of materials.
- </p><!--l. 3211--><p class="indent"> One can add a new module through the normal means and connect it to other existing modules.
- </p><!--l. 3215--><p class="noindent">
- </p>
- <h5 class="subsubsectionHead"><span class="titlemark">20.4.1 </span> <a
- id="x1-21200020.4.1"></a>Database Access</h5>
- <!--l. 3217--><p class="noindent">The $form object provides two methods for accessing the database. The $form->dbconnect(%myconfig) method
- commits each individual statement as its own transaction. The $form->dbconnect_noauto(%myconfig)
- method requires a manual commit. Both these functions are thin wrappers around the standard Perl DBI
- operations.
- </p><!--l. 3224--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">20.5 </span> <a
- id="x1-21300020.5"></a>CLI Examples</h4>
- <!--l. 3225--><p class="noindent">Louis Moore contributed some SQL-Ledger CLI examples that still work for LedgerSMB. You can find his page at
- <span class="obeylines-h"><a
- href="http://www.sql-ledger.org/cgi-bin/nav.pl?page=contrib/moore.html&title=Louis%20B.%20Moore" class="url" >http://www.sql-ledger.org/cgi-bin/nav.pl?page=contrib/moore.html&title=Louis%20B.%20Moore</a></span>.
-
-
- </p>
- <h1 class="partHead"><span class="titlemark">Part III<br /></span><a
- id="x1-214000III"></a>Appendix</h1>
- <h3 class="sectionHead"><span class="titlemark">A </span> <a
- id="x1-215000A"></a>Where to Go for More Information</h3>
- <!--l. 3240--><p class="noindent">There are a couple of relevant sources of information on LedgerSMB in particular.
- </p><!--l. 3243--><p class="indent"> The most important resources are the LedgerSMB web site (<span class="obeylines-h"><a
- href="http://www.ledgersmb.org" class="url" >http://www.ledgersmb.org</a></span>) and the email
- lists found at our Sourceforge site.
- </p><!--l. 3247--><p class="indent"> In addition, it is generally recommended that the main bookkeeper of a company using LedgerSMB
- work through at least one accounting textbook. Which textbook is not as important as the fact that a textbook
- is used.
- </p><!--l. 3253--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">B </span> <a
- id="x1-216000B"></a>Quick Tips</h3>
- <!--l. 3256--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">B.1 </span> <a
- id="x1-217000B.1"></a>Understanding Shipping Addresses and Carriers</h4>
- <!--l. 3258--><p class="noindent">Each customer can have a default shipping address. This address is displayed prominantly in the add new
- customer screen. To change the shipping address for a single order, one can use the ship to button at the
- bottom of the quote, order, or invoice screen.
- </p><!--l. 3263--><p class="indent"> The carrier can be noted in the Ship Via field. However, this is a freeform field and is largely used as
- commentary (or instructions for the shipping crew).
- </p><!--l. 3268--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">B.2 </span> <a
- id="x1-218000B.2"></a>Handling bad debts</h4>
- <!--l. 3270--><p class="noindent">In the event that a customer’s check bounces or a collection requirement is made, one can flag the customer’s
- account by setting the credit limit to a negative number.
- </p><!--l. 3274--><p class="indent"> If a debt needs to be written off, one can either use the allowance method (by writing it against the contra
- asset account of "Allowance for Bad Debts" or using the direct writeoff method where it is posted as an
- expense.
- </p><!--l. 3280--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">C </span> <a
- id="x1-219000C"></a>Step by Steps for Vertical Markets</h3>
- <!--l. 3283--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">C.1 </span> <a
- id="x1-220000C.1"></a>Common Installation Errors</h4>
-
-
- <ul class="itemize1">
- <li class="itemize">LedgerSMB is generally best installed in its own directory outside of the wwwroot directory.
- While it is possible to install it inside the wwwroot directory, the instructions and the faq don’t
- cover the common problems here.
- </li>
- <li class="itemize">When the chart of accounts (COA) is altered such that it is no longer set up with appropriate
- items, you can make it impossible to define goods and services properly. In general, until you
- are familiar with the software, it is best to rename and add accounts rather than deleting them.</li></ul>
- <!--l. 3297--><p class="noindent">
- </p>
- <h4 class="subsectionHead"><span class="titlemark">C.2 </span> <a
- id="x1-221000C.2"></a>Retail With Light Manufacturing</h4>
- <!--l. 3299--><p class="noindent">For purposes of this example we will use a business that assembles computers and sells them on a retail
- store.
- </p><!--l. 3302--><p class="indent">
- </p><ol class="enumerate1" >
- <li class="enumerate"><a
- id="x1-221002x1"></a>Install LedgerSMB.
- </li>
- <li class="enumerate"><a
- id="x1-221004x2"></a>Set preferences, and customize chart of accounts.
- <!--l. 3306--><p class="noindent">
- </p><ol class="enumerate2" >
- <li class="enumerate"><a
- id="x1-221006x1"></a>Before customizing the COA it is suggested that you consult an accountant.</li></ol>
- </li>
- <li class="enumerate"><a
- id="x1-221008x3"></a>Define Goods, Labor, and Services as raw parts ordered from the vendors.
- <ul class="itemize1">
- <li class="itemize">These are located under the goods and services menu node.</li></ul>
- </li>
- <li class="enumerate"><a
- id="x1-221010x4"></a>Define assemblies.
- <ul class="itemize1">
- <li class="itemize">These are also located under goods and services.
- </li>
- <li class="itemize">Component goods and services must be defined prior to creating assembly.</li></ul>
- </li>
- <li class="enumerate"><a
- id="x1-221012x5"></a>Enter an AP Invoice to populate inventory with proper raw materials.
- <ul class="itemize1">
- <li class="itemize">One must generally add a generic vendor first. The vendor is added under
- AP->Vendors->Add Vendor.</li></ul>
-
-
- </li>
- <li class="enumerate"><a
- id="x1-221014x6"></a>To pay an AP invoice like a check, go to cash-<span
- class="cmmi-10">></span>payment. Fill out approrpiate fields and click
- print.
- <ul class="itemize1">
- <li class="itemize">Note that one should select an invoice and enter in the payment amount in the appropriate
- line of the invoice list. If you add amounts to the master amount list, you will find that
- they are added to the amount paid on the invoice as a prepayment.
- </li>
- <li class="itemize">The source field is the check number.</li></ul>
- </li>
- <li class="enumerate"><a
- id="x1-221016x7"></a>Stock assemblies
- </li>
- <li class="enumerate"><a
- id="x1-221018x8"></a>One can use AR Invoices or the POS interface to sell goods and services.
- <ul class="itemize1">
- <li class="itemize">Sales Invoice
- <ul class="itemize2">
- <li class="itemize">Can be generated from orders or quotations
- </li>
- <li class="itemize">Cannot include labor/overhead except as part of an assembly
- </li>
- <li class="itemize">One can make the mistake of printing the invoice and forgetting to post it. In this event,
- the invoice does not officially exist in the accounting system.
- </li>
- <li class="itemize">For new customers, you must add the customer first (under AR->Customers->Add
- Customer.</li></ul>
- </li>
- <li class="itemize">POS Interface
- <ul class="itemize2">
- <li class="itemize">Cannot include labor/overhead except as part of an assembly
- </li>
- <li class="itemize">Printing without posting is often even easier in the POS because of the rapid workflow.
- Yet it is just as severe a problem.</li></ul>
- </li>
- <li class="itemize">Ecommerce and Mail Order Operations
- <ul class="itemize2">
- <li class="itemize">See the shipping workflow documentation above.</li></ul>
- </li>
- <li class="itemize">Customers are set up by going to AR->Customers->Add Customer (or the equivalent localized
- translation). The appropriate fields are filled out and the buttons are used at the bottom to save the
- record and optionally use it to create an invoice, etc.
-
-
- <ul class="itemize2">
- <li class="itemize">Saving a customer returns to the customer screen. After the appropriate invoice,
- transaction, etc. is entered and posted, LedgerSMB will return to the add customer
- screen.</li></ul>
- </li></ul>
- </li>
- <li class="enumerate"><a
- id="x1-221020x9"></a>One can use the requirements report to help determine what parts need to be ordered though one
- cannot generate PO’s directly from this report.</li></ol>
- <!--l. 3377--><p class="noindent">Note, the needs of LedgerSMB are mostly useful for light manufacturing operations (assembling
- computers, for example). More manufacturing capabilities are expected to be released in the next
- version.
- </p><!--l. 3381--><p class="indent"> A custom assembly is a bit difficult to make. One must add the assembly prior to invoice (this is not true
- of goods and services). If the assembly is based on a different assembly but may cost more (due to
- non-standard parts) you can load the old assembly using Goods and Services->Reports->Assemblies and
- then make necessary changes (including to the SKU/Partnumber) and save it as new.
- </p><!--l. 3389--><p class="indent"> Then one can add it to the invoice.
- </p><!--l. 3392--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">D </span> <a
- id="x1-222000D"></a>Glossary</h3>
- <!--l. 3394--><p class="noindent">
- </p><dl class="description"><dt class="description">
- <span
- class="pplb8t-">BIC</span> </dt><dd
- class="description">Bank Identifier Code is often the same as the S.W.I.F.T. code. This is a code for the bank a
- customer uses for automated money transfers.
- </dd><dt class="description">
- <span
- class="pplb8t-">COGS</span> </dt><dd
- class="description">is Cost of Goods Sold. When an item is sold, then the expense of its purchase is accrued as
- attached to the income of the sale. It is tracked as COGS.
- </dd><dt class="description">
- <span
- class="pplb8t-">Credit</span> </dt><dd
- class="description">: A logical transactional unit in double entry accounting. It is the opposite of a debit. Credits
- affect different account types as follows:
- <!--l. 3405--><p class="noindent">
- </p><dl class="description"><dt class="description">
- <span
- class="pplb8t-">Equity</span> </dt><dd
- class="description">: Credits are added to the account when money is invested in the business.
- </dd><dt class="description">
- <span
- class="pplb8t-">Asset</span> </dt><dd
- class="description">: Credits are added when money is deducted from an asset account.
- </dd><dt class="description">
- <span
- class="pplb8t-">Liability</span> </dt><dd
- class="description">: Credits are added when money is owed to the business account.
- </dd><dt class="description">
- <span
- class="pplb8t-">Income</span> </dt><dd
- class="description">: Credits are added when income is earned.
- </dd><dt class="description">
- <span
- class="pplb8t-">Expense</span> </dt><dd
- class="description">: Credits are used to apply adjustments at the end of accounting periods to indicate
- that not all the expense for an AP transaction has been fully accrued.</dd></dl>
-
-
- </dd><dt class="description">
- <span
- class="pplb8t-">Debit</span> </dt><dd
- class="description">: A logical transactional unit in double entry accounting systems. It is the opposite of a credit. Debits
- affect different account types as follows:
- <!--l. 3421--><p class="noindent">
- </p><dl class="description"><dt class="description">
- <span
- class="pplb8t-">Equity</span> </dt><dd
- class="description">: Debits are added when money is paid to business owners.
- </dd><dt class="description">
- <span
- class="pplb8t-">Asset</span> </dt><dd
- class="description">: Debits are added when money is added to an account.
- </dd><dt class="description">
- <span
- class="pplb8t-">Liability</span> </dt><dd
- class="description">: Debits are added when money that is owed is paid off.
- </dd><dt class="description">
- <span
- class="pplb8t-">Income</span> </dt><dd
- class="description">: Debits are used to temporarily adjust income to defer unearned income to the next
- accounting period.
- </dd><dt class="description">
- <span
- class="pplb8t-">Expense</span> </dt><dd
- class="description">: Debits are added as expenses are incurred.</dd></dl>
- </dd><dt class="description">
- <span
- class="pplb8t-">IBAN</span> </dt><dd
- class="description">International Bank Account Number is related to the BIC and is used for cross-border automated
- money transfers.
- </dd><dt class="description">
- <span
- class="pplb8t-">List</span> </dt><dd
- class="description">Price is the recommended retail price.
- </dd><dt class="description">
- <span
- class="pplb8t-">Markup</span> </dt><dd
- class="description">is the percentage increase that is applied to the last cost to get the sell price.
- </dd><dt class="description">
- <span
- class="pplb8t-">ROP</span> </dt><dd
- class="description">Re-order point. Items with fewer in stock than this will show up on short reports.
- </dd><dt class="description">
- <span
- class="pplb8t-">Sell</span> </dt><dd
- class="description">Price is the price at which the item is sold.
- </dd><dt class="description">
- <span
- class="pplb8t-">SKU</span> </dt><dd
- class="description">Stock Keeping Unit: a number designating a specific product.
- </dd><dt class="description">
- <span
- class="pplb8t-">Source</span> </dt><dd
- class="description">Document : a paper document that can be used as evidence that a transaction occurred.
- Source documents can include canceled checks, receipts, credit card statements and the
- like.
- </dd><dt class="description">
- <span
- class="pplb8t-">Terms</span> </dt><dd
- class="description">is the number of days one has to pay the invoice. Most businesses abbreviate the terms as Net n
- where n is the number of days. For example, Net 30 means the customer has 30 days to pay the net
- due on an invoice before it is late and incurs late fees. Sometimes you will see 2 10 net 30
- or similar. This means 2% discount if paid within 10 days but due within 30 days in any
- case.</dd></dl>
- <!--l. 1--><p class="noindent">
- </p>
- <h3 class="sectionHead"><span class="titlemark">E </span> <a
- id="x1-223000E"></a>GNU Free Documentation License</h3>
-
-
- <div class="center"
- >
- <!--l. 5--><p class="noindent">
- </p><!--l. 7--><p class="noindent">Version 1.2, November 2002
- </p><!--l. 10--><p class="noindent">Copyright <span
- class="cmsy-10">©</span>2000,2001,2002 Free Software Foundation, Inc.
- </p><!--l. 14--><p class="noindent">51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- </p><!--l. 18--><p class="noindent">Everyone is permitted to copy and distribute verbatim copies of this license document, but changing
- it is not allowed.</p></div>
- <div class="center"
- >
- <!--l. 23--><p class="noindent">
- </p><!--l. 24--><p class="noindent"><span
- class="pplb8t-x-x-120">Preamble</span></p></div>
- <!--l. 27--><p class="noindent">The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in
- the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without
- modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and
- publisher a way to get credit for their work, while not being considered responsible for modifications made
- by others.
- </p><!--l. 35--><p class="indent"> This License is a kind of "copyleft", which means that derivative works of the document must themselves
- be free in the same sense. It complements the GNU General Public License, which is a copyleft license
- designed for free software.
- </p><!--l. 40--><p class="indent"> We have designed this License in order to use it for manuals for free software, because free
- software needs free documentation: a free program should come with manuals providing the
- same freedoms that the software does. But this License is not limited to software manuals; it
- can be used for any textual work, regardless of subject matter or whether it is published as a
- printed book. We recommend this License principally for works whose purpose is instruction or
- reference.
- </p>
- <div class="center"
- >
- <!--l. 49--><p class="noindent">
- </p><!--l. 50--><p class="noindent"><span
- class="pplb8t-x-x-144">1. APPLICABILITY AND DEFINITIONS</span> <a
- id="Q1-1-232"></a></p></div>
- <!--l. 54--><p class="indent"> This License applies to any manual or other work, in any medium, that contains a notice placed by the
- copyright holder saying it can be distributed under the terms of this License. Such a notice grants a
- world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein.
- The <span
- class="pplb8t-">"Document"</span>, below, refers to any such manual or work. Any member of the public is a licensee, and is
- addressed as <span
- class="pplb8t-">"you"</span>. You accept the license if you copy, modify or distribute the work in a way requiring
- permission under copyright law.
- </p><!--l. 64--><p class="indent"> A <span
- class="pplb8t-">"Modified Version" </span>of the Document means any work containing the Document or a portion of it,
- either copied verbatim, or with modifications and/or translated into another language.
- </p><!--l. 68--><p class="indent"> A <span
- class="pplb8t-">"Secondary Section" </span>is a named appendix or a front-matter section of the Document that deals
- exclusively with the relationship of the publishers or authors of the Document to the Document’s overall
- subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus,
- if the Document is in part a textbook of mathematics, a Secondary Section may not explain any
- mathematics.) The relationship could be a matter of historical connection with the subject or with
- related matters, or of legal, commercial, philosophical, ethical or political position regarding
- them.
-
-
- </p><!--l. 79--><p class="indent"> The <span
- class="pplb8t-">"Invariant Sections" </span>are certain Secondary Sections whose titles are designated, as being those of
- Invariant Sections, in the notice that says that the Document is released under this License. If a section does
- not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document
- may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are
- none.
- </p><!--l. 87--><p class="indent"> The <span
- class="pplb8t-">"Cover Texts" </span>are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover
- Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at
- most 5 words, and a Back-Cover Text may be at most 25 words.
- </p><!--l. 92--><p class="indent"> A <span
- class="pplb8t-">"Transparent" </span>copy of the Document means a machine-readable copy, represented in a format whose
- specification is available to the general public, that is suitable for revising the document straightforwardly
- with generic text editors or (for images composed of pixels) generic paint programs or (for drawings)
- some widely available drawing editor, and that is suitable for input to text formatters or for
- automatic translation to a variety of formats suitable for input to text formatters. A copy made in an
- otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart
- or discourage subsequent modification by readers is not Transparent. An image format is not
- Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called
- <span
- class="pplb8t-">"Opaque"</span>.
- </p><!--l. 105--><p class="indent"> Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input
- format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple
- HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include
- PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by
- proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally
- available, and the machine-generated HTML, PostScript or PDF produced by some word processors for
- output purposes only.
- </p><!--l. 116--><p class="indent"> The <span
- class="pplb8t-">"Title Page" </span>means, for a printed book, the title page itself, plus such following pages as
- are needed to hold, legibly, the material this License requires to appear in the title page. For
- works in formats which do not have any title page as such, "Title Page" means the text near
- the most prominent appearance of the work’s title, preceding the beginning of the body of the
- text.
- </p><!--l. 123--><p class="indent"> A section <span
- class="pplb8t-">"Entitled XYZ" </span>means a named subunit of the Document whose title either is precisely XYZ or
- contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a
- specific section name mentioned below, such as <span
- class="pplb8t-">"Acknowledgements"</span>, <span
- class="pplb8t-">"Dedications"</span>, <span
- class="pplb8t-">"Endorsements"</span>, or
- <span
- class="pplb8t-">"History"</span>.) To <span
- class="pplb8t-">"Preserve the Title" </span>of such a section when you modify the Document means that it remains a
- section "Entitled XYZ" according to this definition.
- </p><!--l. 132--><p class="indent"> The Document may include Warranty Disclaimers next to the notice which states that this License applies
- to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but
- only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is
- void and has no effect on the meaning of this License.
- </p>
- <div class="center"
- >
- <!--l. 140--><p class="noindent">
- </p><!--l. 141--><p class="noindent"><span
- class="pplb8t-x-x-144">2. VERBATIM COPYING</span> <a
- id="Q1-1-233"></a></p></div>
- <!--l. 145--><p class="indent"> You may copy and distribute the Document in any medium, either commercially or noncommercially,
- provided that this License, the copyright notices, and the license notice saying this License applies to the
- Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this
- License. You may not use technical measures to obstruct or control the reading or further copying of the
- copies you make or distribute. However, you may accept compensation in exchange for copies. If
- you distribute a large enough number of copies you must also follow the conditions in section
- 3.
-
-
- </p><!--l. 155--><p class="indent"> You may also lend copies, under the same conditions stated above, and you may publicly display
- copies.
- </p>
- <div class="center"
- >
- <!--l. 159--><p class="noindent">
- </p><!--l. 160--><p class="noindent"><span
- class="pplb8t-x-x-144">3. COPYING IN QUANTITY</span> <a
- id="Q1-1-234"></a></p></div>
- <!--l. 165--><p class="indent"> If you publish printed copies (or copies in media that commonly have printed covers) of the Document,
- numbering more than 100, and the Document’s license notice requires Cover Texts, you must
- enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts
- on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and
- legibly identify you as the publisher of these copies. The front cover must present the full title
- with all words of the title equally prominent and visible. You may add other material on the
- covers in addition. Copying with changes limited to the covers, as long as they preserve the
- title of the Document and satisfy these conditions, can be treated as verbatim copying in other
- respects.
- </p><!--l. 178--><p class="indent"> If the required texts for either cover are too voluminous to fit legibly, you should put the first
- ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent
- pages.
- </p><!--l. 183--><p class="indent"> If you publish or distribute Opaque copies of the Document numbering more than 100, you must either
- include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque
- copy a computer-network location from which the general network-using public has access to
- download using public-standard network protocols a complete Transparent copy of the Document,
- free of added material. If you use the latter option, you must take reasonably prudent steps,
- when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy
- will remain thus accessible at the stated location until at least one year after the last time you
- distribute an Opaque copy (directly or through your agents or retailers) of that edition to the
- public.
- </p><!--l. 196--><p class="indent"> It is requested, but not required, that you contact the authors of the Document well before redistributing
- any large number of copies, to give them a chance to provide you with an updated version of the
- Document.
- </p>
- <div class="center"
- >
- <!--l. 201--><p class="noindent">
- </p><!--l. 202--><p class="noindent"><span
- class="pplb8t-x-x-144">4. MODIFICATIONS</span> <a
- id="Q1-1-235"></a></p></div>
- <!--l. 206--><p class="indent"> You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and
- 3 above, provided that you release the Modified Version under precisely this License, with the Modified
- Version filling the role of the Document, thus licensing distribution and modification of the Modified
- Version to whoever possesses a copy of it. In addition, you must do these things in the Modified
- Version:
- </p>
- <ul class="itemize1">
- <li class="itemize">Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and
- from those of previous versions (which should, if there were any, be listed in the History section
- of the Document). You may use the same title as a previous version if the original publisher of
- that version gives permission.
-
-
- </li>
- <li class="itemize">List on the Title Page, as authors, one or more persons or entities responsible for authorship of
- the modifications in the Modified Version, together with at least five of the principal authors of
- the Document (all of its principal authors, if it has fewer than five), unless they release you from
- this requirement.
- </li>
- <li class="itemize">State on the Title page the name of the publisher of the Modified Version, as the publisher.
- </li>
- <li class="itemize">Preserve all the copyright notices of the Document.
- </li>
- <li class="itemize">Add an appropriate copyright notice for your modifications adjacent to the other copyright
- notices.
- </li>
- <li class="itemize">Include, immediately after the copyright notices, a license notice giving the public permission to
- use the Modified Version under the terms of this License, in the form shown in the Addendum
- below.
- </li>
- <li class="itemize">Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given
- in the Document’s license notice.
- </li>
- <li class="itemize">Include an unaltered copy of this License.
- </li>
- <li class="itemize">Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the
- title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there
- is no section Entitled "History" in the Document, create one stating the title, year, authors, and
- publisher of the Document as given on its Title Page, then add an item describing the Modified
- Version as stated in the previous sentence.
- </li>
- <li class="itemize">Preserve the network location, if any, given in the Document for public access to a Transparent
- copy of the Document, and likewise the network locations given in the Document for previous
- versions it was based on. These may be placed in the "History" section. You may omit a network
- location for a work that was published at least four years before the Document itself, or if the
- original publisher of the version it refers to gives permission.
- </li>
- <li class="itemize">For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the
- section, and preserve in the section all the substance and tone of each of the contributor
- acknowledgements and/or dedications given therein.
- </li>
- <li class="itemize">Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles.
- Section numbers or the equivalent are not considered part of the section titles.
- </li>
- <li class="itemize">Delete any section Entitled "Endorsements". Such a section may not be included in the Modified
- Version.
-
-
- </li>
- <li class="itemize">Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any
- Invariant Section.
- </li>
- <li class="itemize">Preserve any Warranty Disclaimers.</li></ul>
- <!--l. 292--><p class="indent"> If the Modified Version includes new front-matter sections or appendices that qualify as Secondary
- Sections and contain no material copied from the Document, you may at your option designate some
- or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections
- in the Modified Version’s license notice. These titles must be distinct from any other section
- titles.
- </p><!--l. 299--><p class="indent"> You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your
- Modified Version by various parties–for example, statements of peer review or that the text has been
- approved by an organization as the authoritative definition of a standard.
- </p><!--l. 305--><p class="indent"> You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a
- Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of
- Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one
- entity. If the Document already includes a cover text for the same cover, previously added by you or by
- arrangement made by the same entity you are acting on behalf of, you may not add another; but you
- may replace the old one, on explicit permission from the previous publisher that added the old
- one.
- </p><!--l. 315--><p class="indent"> The author(s) and publisher(s) of the Document do not by this License give permission to use their names
- for publicity for or to assert or imply endorsement of any Modified Version.
- </p>
- <div class="center"
- >
- <!--l. 320--><p class="noindent">
- </p><!--l. 321--><p class="noindent"><span
- class="pplb8t-x-x-144">5. COMBINING DOCUMENTS</span> <a
- id="Q1-1-236"></a></p></div>
- <!--l. 326--><p class="indent"> You may combine the Document with other documents released under this License, under the terms
- defined in section 4 above for modified versions, provided that you include in the combination all of the
- Invariant Sections of all of the original documents, unmodified, and list them all as Invariant
- Sections of your combined work in its license notice, and that you preserve all their Warranty
- Disclaimers.
- </p><!--l. 333--><p class="indent"> The combined work need only contain one copy of this License, and multiple identical Invariant Sections
- may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different
- contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the
- original author or publisher of that section if known, or else a unique number. Make the same
- adjustment to the section titles in the list of Invariant Sections in the license notice of the combined
- work.
- </p><!--l. 342--><p class="indent"> In the combination, you must combine any sections Entitled "History" in the various original documents,
- forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and
- any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
- </p>
- <div class="center"
- >
- <!--l. 348--><p class="noindent">
- </p><!--l. 349--><p class="noindent"><span
- class="pplb8t-x-x-144">6. COLLECTIONS OF DOCUMENTS</span> <a
- id="Q1-1-237"></a></p></div>
-
-
- <!--l. 353--><p class="indent"> You may make a collection consisting of the Document and other documents released under this License,
- and replace the individual copies of this License in the various documents with a single copy that is included
- in the collection, provided that you follow the rules of this License for verbatim copying of each of the
- documents in all other respects.
- </p><!--l. 359--><p class="indent"> You may extract a single document from such a collection, and distribute it individually under this
- License, provided you insert a copy of this License into the extracted document, and follow this License in all
- other respects regarding verbatim copying of that document.
- </p>
- <div class="center"
- >
- <!--l. 365--><p class="noindent">
- </p><!--l. 366--><p class="noindent"><span
- class="pplb8t-x-x-144">7. AGGREGATION WITH INDEPENDENT WORKS</span> <a
- id="Q1-1-238"></a></p></div>
- <!--l. 371--><p class="indent"> A compilation of the Document or its derivatives with other separate and independent documents or
- works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright
- resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the
- individual works permit. When the Document is included in an aggregate, this License does not
- apply to the other works in the aggregate which are not themselves derivative works of the
- Document.
- </p><!--l. 380--><p class="indent"> If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the
- Document is less than one half of the entire aggregate, the Document’s Cover Texts may be placed on covers
- that bracket the Document within the aggregate, or the electronic equivalent of covers if the
- Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole
- aggregate.
- </p>
- <div class="center"
- >
- <!--l. 389--><p class="noindent">
- </p><!--l. 390--><p class="noindent"><span
- class="pplb8t-x-x-144">8. TRANSLATION</span> <a
- id="Q1-1-239"></a></p></div>
- <!--l. 395--><p class="indent"> Translation is considered a kind of modification, so you may distribute translations of the
- Document under the terms of section 4. Replacing Invariant Sections with translations requires
- special permission from their copyright holders, but you may include translations of some or
- all Invariant Sections in addition to the original versions of these Invariant Sections. You may
- include a translation of this License, and all the license notices in the Document, and any Warranty
- Disclaimers, provided that you also include the original English version of this License and
- the original versions of those notices and disclaimers. In case of a disagreement between the
- translation and the original version of this License or a notice or disclaimer, the original version will
- prevail.
- </p><!--l. 408--><p class="indent"> If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the
- requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual
- title.
- </p>
- <div class="center"
- >
- <!--l. 414--><p class="noindent">
- </p><!--l. 415--><p class="noindent"><span
- class="pplb8t-x-x-144">9. TERMINATION</span> <a
- id="Q1-1-240"></a></p></div>
-
-
- <!--l. 420--><p class="indent"> You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under
- this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will
- automatically terminate your rights under this License. However, parties who have received copies, or rights,
- from you under this License will not have their licenses terminated so long as such parties remain in full
- compliance.
- </p>
- <div class="center"
- >
- <!--l. 429--><p class="noindent">
- </p><!--l. 430--><p class="noindent"><span
- class="pplb8t-x-x-144">10. FUTURE REVISIONS OF THIS LICENSE</span> <a
- id="Q1-1-241"></a></p></div>
- <!--l. 435--><p class="indent"> The Free Software Foundation may publish new, revised versions of the GNU Free Documentation
- License from time to time. Such new versions will be similar in spirit to the present version, but may differ in
- detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
- </p><!--l. 441--><p class="indent"> Each version of the License is given a distinguishing version number. If the Document specifies that a
- particular numbered version of this License "or any later version" applies to it, you have the option of
- following the terms and conditions either of that specified version or of any later version that has been
- published (not as a draft) by the Free Software Foundation. If the Document does not specify a version
- number of this License, you may choose any version ever published (not as a draft) by the Free Software
- Foundation.
- </p>
- <div class="center"
- >
- <!--l. 451--><p class="noindent">
- </p><!--l. 452--><p class="noindent"><span
- class="pplb8t-x-x-144">ADDENDUM: How to use this License for your documents</span> <a
- id="Q1-1-242"></a></p></div>
- <!--l. 456--><p class="indent"> To use this License in a document you have written, include a copy of the License in the document and
- put the following copyright and license notices just after the title page:
- </p><!--l. 461--><p class="indent">
- </p><div class="quote">
- <!--l. 462--><p class="noindent">Copyright <span
- class="cmsy-10">©</span>YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify
- this document under the terms of the GNU Free Documentation License, Version 1.2 or
- any later version published by the Free Software Foundation; with no Invariant Sections,
- no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the
- section entitled "GNU Free Documentation License".</p></div>
- <!--l. 472--><p class="indent"> If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line
- with this:
- </p><!--l. 476--><p class="indent">
- </p><div class="quote">
- <!--l. 477--><p class="noindent">with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being
- LIST, and with the Back-Cover Texts being LIST.</p></div>
-
-
- <!--l. 482--><p class="indent"> If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those
- two alternatives to suit the situation.
- </p><!--l. 486--><p class="indent"> If your document contains nontrivial examples of program code, we recommend releasing these
- examples in parallel under your choice of free software license, such as the GNU General Public License, to
- permit their use in free software.
- </p>
-
- </body></html>
-
|