Recent content https://ledgersmb.org/ en 1.9 release notes https://ledgersmb.org/content/19-release-notes <span class="field field--name-title field--type-string field--label-hidden">1.9 release notes</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h1>What's new and notable in LedgerSMB 1.9</h1> <ul><li>E-mailed documents stored in the database</li> <li>Searching open invoices for payment by customer/vendor name</li> <li>A new command line application for administrative tasks and automation</li> <li>"GIFI" selections are now hidden when no GIFI is configured</li> <li>Option to create opening or closing balance report</li> <li>Fixed mailing of aging reports</li> <li>'Update' no longer clobbers saved invoices and transactions</li> <li>Optimized HTML and JavaScript responses for faster page loading</li> </ul><h1>New features</h1> <h2>E-mailed documents stored in the database</h2> <p>.</p> <h2>Searching open invoices for payment by customer/vendor name</h2> <p>.</p> <h2>A new command line application for administrative tasks and automation</h2> <p>.</p> <h2>"GIFI" selections are now hidden when no GIFI is configured</h2> <p>.</p> <h2>Option to create opening or closing balance report</h2> <p>.</p> <h1>Notable changes</h1> <h2>Fixed mailing of aging reports</h2> <p>.</p> <h2>'Update' no longer clobbers saved invoices and transactions</h2> <p>.</p> <h2>Optimized HTML and JavaScript responses for faster page loading</h2> <p>.</p> <h1>Other user-visible changes</h1> <ul><li>Document template (invoices/orders/etc..) management UI overhaul<br /> The new UI is located under the menu "System &gt; Templates". The menu-items listing each template separately, has been removed.</li> <li>Default "today" value now derived from client instead of server<br /> Due to the fact that the value was derived from the server, the default date ("today") could be off by a day when the client and server resided in different timezones. The new value is determined on the client, ensuring alignment between the user's location and the calculation of the date.</li> <li>Manually entered tax lines from invoices selectively saved<br /> Before this release, all manually entered tax lines would be saved; even if the tax amount as well as the base amount (the amount the tax relates to) are zero. This release doesn't save lines anymore where both values are zero. Old data where both values are zero remains untouched.</li> <li>Single-entry time cards have been fixed<br /> The (broken-since-1.4) single-entry time cards have been fixed.</li> </ul><p> </p> <h1>Known problems</h1> <h2>Authentication problems immediately after logging in</h2> <p>1.8 uses encrypted cookies. The secret used to encrypt the cookie is automatically generated when the application is loaded. Starman (and other forking PSGI servers) loads the application in each process separately. This leads to each process generating its own cookie secret; this means that cookies from one request handling process will be rejected by other request handlers, leading to the behaviour observed. Please include the <strong>--preload-app </strong>option to the Starman command-line to prevent this problem.</p> <p>The example systemd and SysV init scripts in the 1.8 release tarball have this parameter enabled out of the box. Please note that this parameter wasn't present in the example configuration scripts of 1.7 and earlier. When upgrading, please check your specific version.</p> <h2><span class="mx_MTextBody mx_EventTile_content"><span class="mx_EventTile_body" dir="auto">[Upgrade] ERROR: duplicate key value violates unique constraint "ar_invnumber_key"</span></span></h2> <p>After upgrading, users can run into this error, which means that the "Sales Invoice/AR Transaction Number" in the "System &gt; Defaults" page under the "Next in Sequence" section needs to be manually incremented by 1. Admins may want to verify ahead of moving the upgrade to production that the other sequences do not contain the last-used number, but indeed list the next number to be used.</p> <p><img alt="Sequences on the &quot;System &gt; Defaults&quot; page" data-entity-type="file" data-entity-uuid="6d9c4f34-f48a-408d-b948-2ddd7119e679" src="/sites/default/files/inline-images/2020-09-18_11-30.png" /></p> <h2> </h2> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sun, 12/15/2019 - 04:28</span> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/145" hreflang="en">release notes</a></div> <div class="field__item"><a href="/taxonomy/term/148" hreflang="en">Draft</a></div> </div> </div> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/149" hreflang="en">1.9</a></div> </div> </div> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Sun, 15 Dec 2019 12:28:36 +0000 ehu 451 at https://ledgersmb.org Screenshots for 1.5 https://ledgersmb.org/content/screenshots-15 <span class="field field--name-title field--type-string field--label-hidden">Screenshots for 1.5</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>1.5 Screenshots</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sat, 01/07/2017 - 08:57</span> <div class="field field--name-field-gallery field--type-image field--label-inline clearfix"> <div class="field__label">Gallery</div> <div class="field__items"> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A32%3A05.png" title="After login" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;After login&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A32%3A05.png?itok=x80mEcyC" width="220" height="179" alt="After login" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A36%3A36.png" title="Invoice - product selection" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;title&quot;:&quot;Invoice - product selection&quot;,&quot;alt&quot;:&quot;Invoice - product selection&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A36%3A36.png?itok=eN1kr7KQ" width="220" height="168" alt="Invoice - product selection" title="Invoice - product selection" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A39%3A32.png" title="Shipping ordered goods" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;Shipping ordered goods&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A39%3A32.png?itok=sQdsKs42" width="220" height="157" alt="Shipping ordered goods" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A37%3A23.png" title="AR/AP account selection" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;AR/AP account selection&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A37%3A23.png?itok=ECHU_qim" width="220" height="168" alt="AR/AP account selection" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A38%3A14.png" title="Outstanding invoices per customer" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;Outstanding invoices per customer&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A38%3A14.png?itok=F0LthHzv" width="220" height="174" alt="Outstanding invoices per customer" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A38%3A37.png" title="Outstanding: customer drill down" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;Outstanding: customer drill down&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A38%3A37.png?itok=O-YFi20M" width="220" height="174" alt="Outstanding: customer drill down" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A34%3A51.png" title="Invoice - customer selection" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;Invoice - customer selection&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A34%3A51.png?itok=DpETH2rm" width="220" height="168" alt="Invoice - customer selection" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A44%3A01.png" title="Configuration - defaults &amp; settings" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;Configuration - defaults &amp; settings&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A44%3A01.png?itok=gWMJOywF" width="220" height="147" alt="Configuration - defaults &amp; settings" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A43%3A48.png" title="Configuration - accounting dimensions" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;Configuration - accounting dimensions&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A43%3A48.png?itok=nOwA32Tw" width="220" height="147" alt="Configuration - accounting dimensions" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A41%3A39.png" title="Income statement - report" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;Income statement - report&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A41%3A39.png?itok=18GZokd6" width="220" height="168" alt="Income statement - report" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A41%3A39.png" title="Income statement - report" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;Income statement - report&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A41%3A39.png?itok=18GZokd6" width="220" height="168" alt="Income statement - report" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A41%3A17.png" title="Income statement - parameter selection" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;Income statement - parameter selection&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A41%3A17.png?itok=P1mLxA-y" width="220" height="168" alt="Income statement - parameter selection" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A40%3A38.png" title="General Ledger search - report output" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;General Ledger search - report output&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A40%3A38.png?itok=j1xyy9oH" width="220" height="168" alt="General Ledger search - report output" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A40%3A31.png" title="General Ledger search - selected account" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;General Ledger search - selected account&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A40%3A31.png?itok=ZEEqD3H4" width="220" height="168" alt="General Ledger search - selected account" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A40%3A25.png" title="General Ledger search - account selection" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;General Ledger search - account selection&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A40%3A25.png?itok=QqoVtpR0" width="220" height="168" alt="General Ledger search - account selection" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A40%3A25.png" title="General Ledger search - account selection" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;General Ledger search - account selection&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A40%3A25.png?itok=QqoVtpR0" width="220" height="168" alt="General Ledger search - account selection" class="image-style-medium" /> </a> </div> <div class="field__item"><a href="https://ledgersmb.org/sites/default/files/Screenshot%20from%202017-01-07%2015%3A40%3A18.png" title="General Ledger search" data-colorbox-gallery="gallery-article-367-J3pAsNv0tQ4" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;General Ledger search&quot;}"><img src="/sites/default/files/styles/medium/public/Screenshot%20from%202017-01-07%2015%3A40%3A18.png?itok=KdC46nWC" width="220" height="168" alt="General Ledger search" class="image-style-medium" /> </a> </div> </div> </div> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/141" hreflang="en">Screenshots</a></div> <div class="field__item"><a href="/taxonomy/term/143" hreflang="en">Obsolete</a></div> </div> </div> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/release/15" hreflang="en">1.5</a></div> </div> </div> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Sat, 07 Jan 2017 16:57:31 +0000 ehu 367 at https://ledgersmb.org Screenshots for 1.3 https://ledgersmb.org/content/screenshots-13 <span class="field field--name-title field--type-string field--label-hidden">Screenshots for 1.3</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>We have been working long and hard on 1.3 for some time, so it is time we show some screenshots showing how things will be different. I have chosen three screen shots to highlight our new approach:</p> <p>1) Bank Reconciliation has been entirely redesigned in 1.3 with a new workflow and it is better designed to handle large numbers of transactions. Additionally you can go back later and review a reconciliation set to see what cleared and what was outstanding. This screen shot shows a report for a work in progress.</p> <p>2) The contact management section is redone. Customers/vendors can now have multiple accounts, contact information, shipping and billing info, notes, etc. This screen shot shows how this looks with Javascript enabled. Here Javascript is used to clean up the interface, and the links at the top switch between visible divs.</p> <p>3) Payment screen, for single customer/vendor payments</p> <p>4) Batch payment screen for paying or receiving money from several customers or vendors.</p> <p>5) Order entry (in this case sales order)</p> <p><!--break--></p> <table><tbody><tr><td><a class="colorbox" href="/sites/default/files/tabular-info-bold.png"><img src="/sites/default/files/tabular-info-bold.png" style="width: 133px; height: 76px;" /></a></td> <td><a class="colorbox" href="/sites/default/files/contact.png"><img src="/sites/default/files/contact.png" style="width: 124px; height: 74px;" /></a></td> <td><a class="colorbox" href="/sites/default/files/payment.png"><img src="/sites/default/files/payment.png" style="width: 123px; height: 74px;" /></a></td> <td><a class="colorbox" href="/sites/default/files/batch-print.png"><img src="/sites/default/files/batch-print.png" style="width: 120px; height: 72px;" /></a></td> <td><a class="colorbox" href="/sites/default/files/order_entry.png"><img src="/sites/default/files/order_entry.png" style="width: 115px; height: 69px;" /></a></td> </tr><tr><td>Reconciliation report in progress.</td> <td>Contact screen, Report Section with Javascript</td> <td>Single payment</td> <td>Batch payment</td> <td>Order entry</td> </tr></tbody></table><p>The setup and login screen:<br /><a href="http://ledgersmb.org/news/ubuntu-installation-tutorial-ledgersmb-13-series#setuplogin" title="http://www.ledgersmb.org/help/install/Ubuntu_Installation_Tutorial_LedgerSMB-1.3-SERIES.html#setuplogin">http://www.ledgersmb.org/help/install/Ubuntu_Installation_Tutorial_Ledge...</a></p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>Chris Travers</span></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 03/17/2009 - 21:34</span> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/143" hreflang="en">Obsolete</a></div> <div class="field__item"><a href="/taxonomy/term/141" hreflang="en">Screenshots</a></div> </div> </div> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/release/13" hreflang="en">1.3</a></div> </div> </div> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Wed, 18 Mar 2009 04:34:41 +0000 Chris Travers 98 at https://ledgersmb.org Screenshots for 1.8 https://ledgersmb.org/content/screenshots-18 <span class="field field--name-title field--type-string field--label-hidden">Screenshots for 1.8</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sat, 09/05/2020 - 05:14</span> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/141" hreflang="en">Screenshots</a></div> </div> </div> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/147" hreflang="en">1.8</a></div> </div> </div> <div class="field field--name-field-media field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_13-57-45_0.png" title="screenshot_from_2020-09-05_13-57-45.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_13-57-45_0.png?itok=lfgfs2Y7" width="325" height="194" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-01-13.png" title="screenshot_from_2020-09-05_14-01-13.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-01-13.png?itok=-3l9ccHj" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-03-26.png" title="screenshot_from_2020-09-05_14-03-26.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-03-26.png?itok=w4cFkT8m" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-05-54.png" title="screenshot_from_2020-09-05_14-05-54.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-05-54.png?itok=DfPgtufZ" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-05-14_0.png" title="screenshot_from_2020-09-05_14-05-14.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-05-14_0.png?itok=S0Nb91HK" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-03-26_0.png" title="screenshot_from_2020-09-05_14-03-26.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-03-26_0.png?itok=1Fn8fFpy" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-06-35.png" title="screenshot_from_2020-09-05_14-06-35.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-06-35.png?itok=yC7JL3cU" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-06-35_0.png" title="screenshot_from_2020-09-05_14-06-35.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-06-35_0.png?itok=OhrU6COC" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-08-06.png" title="screenshot_from_2020-09-05_14-08-06.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-08-06.png?itok=995kHLFO" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-10-36.png" title="screenshot_from_2020-09-05_14-10-36.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-10-36.png?itok=81ReIKm-" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-10-27_0.png" title="screenshot_from_2020-09-05_14-10-27.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-10-27_0.png?itok=UaL3SVTG" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-10-27.png" title="screenshot_from_2020-09-05_14-10-27.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-10-27.png?itok=K3J-aHhr" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-10-36_0.png" title="screenshot_from_2020-09-05_14-10-36.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-10-36_0.png?itok=sZHJHdzr" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-12-13_0.png" title="screenshot_from_2020-09-05_14-12-13.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-12-13_0.png?itok=HabWYFDc" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"><a href="https://ledgersmb.org/sites/default/files/2020-09/screenshot_from_2020-09-05_14-12-29.png" title="screenshot_from_2020-09-05_14-12-29.png" data-colorbox-gallery="gallery-all-U003lc4OBYk" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2020-09/screenshot_from_2020-09-05_14-12-29.png?itok=ib2mp0Yk" width="325" height="200" class="image-style-max-325x325" /> </a> </div> </article> </div> </div> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Sat, 05 Sep 2020 12:14:00 +0000 ehu 488 at https://ledgersmb.org Open Source ERP: accounting, invoicing and more https://ledgersmb.org/content/open-source-erp-accounting-invoicing-and-more <span class="field field--name-title field--type-string field--label-hidden">Open Source ERP: accounting, invoicing and more</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h1>Mission</h1> <p><a href="/statement-direction-ledgersmb">The LedgerSMB project</a> aims to prevent small and mid-size businesses from getting locked-in by their accounting software vendor by providing free and open source <a href="https://en.wikipedia.org/wiki/Accounting_software">accounting software</a>, integrating invoicing, order processing, quotations and more (<a href="https://en.wikipedia.org/wiki/Enterprise_resource_planning">ERP</a>). LedgerSMB aims to provide a strong (accounting) basis to build your business on.</p> <h1><span style="line-height: 36.4000015258789px;">Features</span></h1> <ul><li>Sales (Invoices, Orders, Quotations)</li> <li>Receivables &amp; Payables</li> <li>General ledger</li> <li>Inventory management</li> <li>Fixed asset accounting &amp; depreciation</li> <li>Profit &amp; cost centers, departments, projects</li> <li>Output documents in PDF, HTML, CSV, Office formats</li> <li>Mail documents (e.g. invoices) from within the application</li> <li>Translatable to your language (comes with 45 languages)</li> <li><a href="http://ledgersmb.org/features">and more</a></li> </ul><p>The fact that LedgerSMB is <a href="https://opensource.org/osd">open source</a> - meaning that the source code is freely available - makes it even more customizable and flexible.</p> <h1 style="line-height: 36.4px;">Use-cases</h1> <h2>By industry</h2> <p>While LedgerSMB will generally work in any industry for its basic accounting functionalities, it is known to have been deployed in the following types of businesses:</p> <ul><li>Communications<br /> e.g. VOIP services</li> <li>Factoring<br /> i.e. invoicing of others</li> <li>(IT) Services<br /> e.g. Website design, IT Support, hourly services</li> <li>Financial services<br /> e.g. Investment firms</li> <li>Rental<br /> e.g. Housing rental, IT Hosting</li> <li>Retail<br /> e.g. Sewing necessities</li> <li>Trade<br /> e.g. Trading pet foods</li> </ul><p>Many of these applications include integration with domain-specific applications to perform specific business functions.</p> <p>Next to the ones listed above, various manufacturing setups have been deployed, ranging from standard (batch based) mass production, to make-to-order one-time product configurations. The latter being supported by a custom developed product configuration plugin.</p> <h2>By country</h2> <p>Although the nature of open source projects makes it hard to know where our software is being used; however, the project is aware of installations in the <span class="mx_MTextBody mx_EventTile_content"><span class="mx_EventTile_body" dir="auto">US, Canada, EU (Netherlands, Hungary, Estonia, United Kingdom), Indonesia, Myanmar, Philippines, Hong Kong, Malaysia, Australia, Barbados and Colombia.</span></span></p> <p><span class="mx_MTextBody mx_EventTile_content"><span class="mx_EventTile_body" dir="auto">The software can run in a different language for each user. Also: documents (invoices, orders, etc) can be produced in selectable languages, different from the user's language.</span></span></p> <h1>Contributions</h1> <p>The project welcomes any and all contributions. With lots of areas which would benefit from more attention, we like to invite newcomers to read our <a data-entity-substitution="canonical" data-entity-type="node" data-entity-uuid="c8075f26-dba4-48f6-bf53-3702c418dbdd" href="/content/community-guide" title="Community guide">community guidelines</a> and start out simple. Good (and helpful!) starting points are <a data-entity-substitution="canonical" data-entity-type="node" data-entity-uuid="3fc7f2b0-0844-4ae0-868b-90b968686d0f" href="/community-guide/community-guide/translating" title="Translating">translation contributions</a> as well as reviewing our (beginners) documentation.</p> <h1 style="line-height: 36.4px;">Current versions</h1> <p>Our current stable version is <a href="https://github.com/ledgersmb/LedgerSMB/tree/1.8"><em><strong>1.8</strong></em></a> - initially released on Sep 04, 2020. This release has a wide variety of improvements and code cleanups: it features faster loading of the menu, fixed migrations from 1.2, the ability to upload a logo into the database and include it in printed documents and much more... More details about this release can be found in the <a data-entity-substitution="canonical" data-entity-type="node" data-entity-uuid="ff891fb8-f65b-486c-a374-1510c5c24975" href="/content/19-release-notes" title="1.9 release notes">release notes</a>. This release will see its End-Of-Life for community support at <strong>Sep 04, 2022</strong>.</p> <p>Our current old-stable version is <em><a href="https://github.com/ledgersmb/LedgerSMB/tree/1.7"><strong>1.7</strong></a></em> - initially released on Oct 04, 2019. This release focusses on improved support for foreign currency transactions, lifting the restriction of a single rate per currency per day; UI improved by showing both the functional and foreign currency amounts. Additionally, a lot of work has been spent on increasing the application stability through more rigorous testing and code cleanup. A full summary of the changes since 1.6 can be found in the release announcement. More details on this release can be found in the <a href="https://ledgersmb.org/content/17-release-notes">release notes</a>. This release will see its End-Of-Life for community support at <strong>Oct 04, 2022</strong>.</p> <p>Our current old-old-stable version is <a href="https://github.com/ledgersmb/LedgerSMB/tree/1.6"><strong><em>1.6</em></strong></a> - initially released on Jun 10, 2018. A lot of development effort has been spent code clean-up, working toward more robust and maintainable code. The main user-visible changes come in the areas of installation/administration and inventory management. A full summary of the changes since 1.5 can be found in the <a href="http://ledgersmb.org/content/160-released" title="1.5 release announcement">release announcement</a>. Additional notes on this release can be found in the <a href="https://ledgersmb.org/content/16-release-notes">release notes</a>. This release will see its End-Of-Life for community support at <strong>Jun 10, 2021</strong>.</p> <h2>Pre-release version</h2> <p>There currently are no pre-release versions.</p> <h1>Older versions</h1> <p>Version <em><strong>1.5</strong></em> has been declared End-Of-Life on 2019, Dec 23rd (released on 2016-12-23). With 30 patch releases, we consider this version highly stable. We believe that the lower number of patch releases over a similar life-span as 1.4 is an indication of better stability of the initial 1.5.0 release. We conclude that the project is delivering on its promise of increasing stability of minor releases.</p> <p>Version <em><strong>1.4</strong></em> has been declared End-Of-Life on 2017, Sep 15th (released on 2014-09-15). With 42 patch releases, we consider this version highly stable.</p> <p>Version <em><strong>1.3</strong></em> has been declared End-Of-Life on 2015, Dec 23rd (released on 2011-10-11). With a total of 48 patch releases since the initial release in October 2011, we consider this version highly stable.</p> <p>Although their use is highly discouraged for both security reasons and data stability issues, older versions are still available for <a href="http://download.ledgersmb.org/f/Releases/">download</a>. When using LedgerSMB versions 1.2 or earlier, you should to do so in only in a highly restricted network environment.</p> <p>It's project policy to provide at least 24 months of community support for every 1.x release series; note that this policy was updated: releases 1.7 and earlier had 36 months community support. As such, there's no community support available for 1.5 or earlier LedgerSMB versions. Vendors may be willing to provide <a href="http://ledgersmb.org/topic/commercial-support">support or migration services</a>.</p> <h1><a id="history" name="history"></a>History</h1> <p>LedgerSMB began in 2006 as a fork of the popular general ledger software package called <a class="ext" href="http://www.sql-ledger.com/" style="text-decoration: underline; ">SQL-Ledger</a> largely written and maintained by Dieter Simader since 1999. Versions 1.2 and earlier are heavily based on SQL-Ledger's code.<br /> As of 1.3 our codebase is quickly moving away from what we inherited.<br /> As of 1.5 our User Interface has moved to Dojo Javascript libraries providing a more dynamic feel.<br /> Some of the improvements that we've made to the code base so far include:</p> <ul><li>Enhanced security</li> <li>More reports</li> <li>Better data integrity controls</li> <li>More code quality control measures</li> <li>Major code size reduction while growing functionality</li> <li>Unit testing Infrastructure to help ensure once an issue is fixed it stays fixed</li> <li>BDD (headless automated browser) Testing infrastructure</li> <li>A very large number of tests against both testing frameworks</li> </ul><p>Travel in our history with Internet Archive and <a href="http://wayback.archive.org/web/*/http://www.ledgersmb.org">WayBackMachine</a>.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>Chris Travers</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sat, 03/17/2007 - 23:08</span> <section class="field field--name-comment-node-page field--type-comment field--label-hidden comment-wrapper"> </section> Sun, 18 Mar 2007 06:08:41 +0000 Chris Travers 153 at https://ledgersmb.org LedgerSMB community overview 2020 https://ledgersmb.org/content/ledgersmb-community-overview-2020 <span class="field field--name-title field--type-string field--label-hidden">LedgerSMB community overview 2020</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>As the year-end approaches, it's time to provide an overview of what our community has achieved over the past year. At the end of last year, I wished everybody a healthy and prosperous 2020. The year has turned out to be a big challenge and I hope this overview reaches you in a health as good as (or better than) last year's.</p> <p>Where many open source communities seem to have been negatively affected by the circumstances this year, core project seems to have held up very well and actually done better than last year.</p> <h1>== Community interest ==</h1> <p>Although the number of hits on the website has declined steadily over the years, we're seeing the bounce rate decline (steadily) as well, in combination with an increase in the average time spent on the site and the average number of actions on the site. It seems our site increases in relevance to the visitors which we are getting. In prior years I wrote how a decrease in website traffic might not be an indication of loss of interest as more and more users are converting to mobile web-experiences.<br /> Traffic on the mailing lists was also very low this year. From the fact that during the year, we've also seen the number of Stars and Forks on GitHub slowly but steadily increase (Stars went up from 158 in February to 207 today), we can conclude that there is still interest in the project, however, the broader community didn't have much time to engage with the project this year -- as other volunteer-driven projects are experiencing this year.</p> <h1>== Releases ==</h1> <p>With the release of 1.8.0  on 4 September 4 2020, we realized our goal to release 1.8 in the second half of the year, around a year after 1.7. We were even able to reduce the release cycle below 1 year! This way, our target of releasing around the middle of the year, in order for the software to mature well before year-end (when most companies close their books).<br /> Despite the short release cycle, we were able to include a sizeable list of new functionalities, changes and (code) cleanups through 786 files changed, 149056 added lines and 153741 removed lines of code (and comments) between 1.7.0 and 1.8.0.</p> <p>This year we released almost double the number of releases as we did in 2019 and 2018: where we delivered around 20 releases in both prior years, this year we delivered:<br />   1.6 (11): 1.6.18 - 1.6.28<br />   1.7 (19): 1.7.7 - 1.7.25<br />   1.8 (14): 1.8.0-rc1 1.8.0 - 1.8.8 (including pre-releases: 1.8.0-alpha1 1.8.0-beta1 - 1.8.0-beta3)<br /> 44 releases!</p> <h1>== Packaging and installation ==</h1> <p>With the 1.8 release, we were able to move the Docker images to Debian Buster! Moving the Docker image to Buster in 2019 with the 1.7 release was unsuccessful due to dropped support for ssmtp in Debian and lack for replacement functionality and lack of support for some of the ssmtp functionality in LedgerSMB itself. In 1.8, we added extensive support for the configuration of outgoing e-mail to LedgerSMB, allowing for this transition.</p> <p>The Debian ledgersmb package for 1.6 transitioned to Buster last year and we were very happy about that, but at the same time we found breakage in the package. We hoped to fix that soon after discovery. That turned out quite differently: as it happens, we had to come to the conclusion that we lost contact with Robert James Clay (aka Jame) with last known contact around October 2019. He used to maintain the Debian packages for us, including many of our dependencies which hadn't been packaged for Debian before. Unfortunately, LedgerSMB 1.6 has now been dropped from  Debian Testing due to problems with dependencies and no newer versions have been packaged. We hope that Jame is doing fine and in the mean time would welcome anybody who wants to take over (Debian) packaging.</p> <h1>== Development progress ==</h1> <p>This year we had a lot of development activity as demonstrated by the size of the 1.8.0 release and the number of patch releases for our active maintenance branches. The number of active developers - judging by accepted commits - went up from 4 last year to 7 people contributing commits this year, generating some 800 pull requests on GitHub:</p> <p>Project commits on all branches (excluding merges):<br />    1247 Erik Huelsmann*<br />     179 Yves Lavoie*<br />     108 Nick Prater*<br />      37 Aung Zaw Win*<br />       3 Håvard Sørli<br />       1 Bobberty<br />       1 Andreas Karlsson<br /> * includes contributions on maintenance branches</p> <p>By comparison, these are the figures for 2019:<br />     640 Erik Huelsmann<br />      26 Yves Lavoie<br />      21 Nick Prater<br />       1 David Godfrey</p> <p>Please note that these numbers don't include the time spent by those taking the effort to report their problems with the software and taking the time to respond to developer questions as well as helping to test solutions when developers think they solved the problem. Similarly, there was a lot of activity with respect to issues:</p> <p>  Number of open issues at 2020-01-01: 339<br />     of which remain open today: 180</p> <p>  Issues closed since 2020-01-01: 278<br />     of which created before 2020-01-01: 159</p> <p>  Issues created since 2020-01-01: 161<br />     of which still open: 42</p> <p>  Number of open issues today: 222</p> <p>This amount of development activity triggers many CI/CD jobs. Last year, we had just moved our coverage testing loads from TravisCI to CircleCI due to the fact that our coverage testing loads were taking too long to complete within the TravisCI limits. This year, unfortunately, we're moving our regular CI/CD loads from TravisCI to GitHub Actions: TravisCI has seriously restricted (effectively dropped) support for Open Source work loads. Even though we now have effectively moved off TravisCI, I'd like to take the opportunity to publicly thank them for all the builds that they were able to donate to this project over the course of years: our project ran almost 10.200 builds and my own account ran roughly 5.700 additional builds in preparation for merges! TravisCI, thank you!<br /> With everything going on, we were able to improve our test coverage to 44% (from 41 last year), but unfortunately, that's not nearly as much as in the year before (34 -&gt; 41).</p> <p>In the Changelog for 1.9 (https://github.com/ledgersmb/LedgerSMB/blob/master/Changelog#L3), you'll be able to read where we spent our time, for all effort that didn't end up in 1.8 and wasn't listed above. Areas that we're currently spending time on, include:</p> <ul><li>Selection of a new translation engine which supports more than 2 plural forms</li> <li>Gradual polishing of 1.8 through regular fixes of issues left to be polished after 1.8.0 release</li> <li>A Perl and PostgreSQL API to form a foundation to build a Web API and command line application on</li> <li>Improvements in our <em>javascript</em> handling to support a switch to Vue</li> </ul><p>The 222 issues that are open today summarize into these statistics:</p> <ul><li>15 bite-sized: a good place to start when looking to make contributions</li> <li>33 needs-design: waiting in our design queue to be handled</li> <li>125 enhancement: requesting new features added to the application</li> <li>12 waiting-for-user: can't proceed on these without further reporter input</li> </ul><p>(Note that an issue may fall into more than one category or none at all.)</p> <p>== New functionality and improvements ==</p> <p>In 1.9, <em>javascript</em> code will be built with Webpack: the standard for <em>javascript</em> delivery. This allows us to add static code analysis as well as lots of code transforms customary in the <em>javascript</em> world. Basically it makes our <em>javascript</em> delivery more "as any JS project would do it". Yves sank immense amounts of time into trying to realize this change, wrestled and came out a winner! Thanks Yves.<br /> Another change that isn't highly visible, but should be noticeable is that we worked on improving the page response times. We were able to eliminate a lot of overhead (in miliseconds) from our page generation.</p> <p>Another topic that we spent a lot of time on is the consistency and validity of the example Charts of Accounts delivered with LedgerSMB: by changing the storage format from SQL code to XML structured data and formulating consistency rules for the XML data set, we were able to establish consistency and resolve consistency issues. Through this effort new users trying other Charts of Accounts than the US or CA charts that the developers usually use, should have a much better first user impression.</p> <h1>== Looking forward to 2021 ==</h1> <p>In 2021, we'll likely release 1.9 around the middle of the year; again in a release cycle a bit shorter than a year. Fortunately at 10 June 2021, 1.6 will reach end-of-life which means that over the first half of the year, supported maintenance branches will be 1.8-1.7-1.6 while over the second half of the year it will be 1.9-1.8-1.7. Experience this year has shown that while maintaining 3 branches is challenging (especially with the rate of change we're currently going through), it is doable. However, running more than 3 maintenance branches in parallel won't be manageable. This is one of the reasons why we decided that the 1.8 and later branches receive 2 years instead of 3 years community maintenance support. Another reason being that upgrades have become a lot less painful over the past years (or so our users have told us).</p> <p>For 2021, I hope that the project can resolve a series of long-standing open issues as well as finally completing (and expanding on) the foundation for APIs at every level of the application: database, Perl, Web and (command line) application. Next to that, I hope that we can significantly increase our test coverage just like last year (and unlike this one) as well as cleaning (removing) old/deprecated code. All of that obviously in the expectation that it will result in an attractive 1.9 release!</p> <p>And last but not least, I'm hoping for 1 or 2 new contributors (not necessarily developers; translators, testers, documenters or UI artists are all greatly appreciated!). If you want to contribute, but don't know where to start, please contact me.</p> <h1>== In closing ==</h1> <p>Thanks to everybody who contributed to any of the above in any way, especially to</p> <ul><li>those who offered me or one of the other developers private access to their data to help get their problems resolved. This way, we were able to resolve a series of COGS related corner cases which I would not have been able to reproduce -- saving me huge amounts of time.</li> <li>Computerisms.ca for hosting our DNS</li> <li>Freelock.com for hosting our website and mailing lists</li> <li>Efficito.com for hosting our mailing list archive, apt repository, release and download server</li> <li>GitHub.com, TravisCI, CircleCI and coveralls.io for hosting our development workflow</li> </ul><p>My special personal thanks go to my GitHub Sponsors for supporting me for time, efforts and (financial) resources dedicated to the project!</p> <p><br /> Leaves me only to wish everybody in our community - and their loved ones - happy holidays and a safe and highly improved (over 2020) 2021!</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 12/22/2020 - 13:03</span> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Tue, 22 Dec 2020 21:03:57 +0000 ehu 506 at https://ledgersmb.org How do I migrate my existing books to LedgerSMB? https://ledgersmb.org/content/how-do-i-migrate-my-existing-books-ledgersmb <span class="field field--name-title field--type-string field--label-hidden">How do I migrate my existing books to LedgerSMB?</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>There are two strategies in migrating your books to between accounting solutions in general:</p> <ol><li>Choose a cut-off point and migrate your balance sheet and income statement per that day as an opening balance</li> <li>Migrate the complete history of the books from the old solution to the new one</li> </ol><p>These approaches apply even when the source is a spreadsheet (i.e. "manual") and LedgerSMB is the target. The second approach requires a full mapping of data from the source system to the target. This is usually quite involved and a reason not to use it. On the other hand, businesses are generally required to retain their records for a specific amount of time (multiple years, for audit purposes) and the second approach migrates the history-to-be-retained to the target system. With the first approach, a separate solution needs to be found to retain the required history.</p> <h1>Steps to migrate your opening balances into LedgerSMB</h1> <p>The goal of the migration is to "cut-over" accounting as per the chosen date. The general approach to that is to create an opening balance and opening income statement per that date and continue from there. Generally, a natural date to be chosen for such a cut-over is at the year-end when the income statement starts out clean for the year to come and an opening balance is created in the balance sheet.</p> <p>The above works for relatively simple balance accounts such as a bank account or petty cash. When the account is a summary of underlying items, this approach is more problematic: in order to pay invoices, the system needs to know about them; migrating the total balance doesn't work well. The same applies to inventory where available inventory attributes to Cost Of Goods Sold (COGS) on a FIFO basis.</p> <p>To construct a beginning balance with sufficient detail to support a complete cut-over, I have followed these steps:</p> <ol><li><strong>Set up your chart of accounts</strong></li> <li><strong>Migrate fixed assets</strong> <ol><li>Create the assets at their original value at the acquisition or depreciation start-date using their original depreciation scheme</li> <li>Run depreciation all at once on the day before migration resulting in the correct fixed asset account balance</li> </ol></li> <li><strong>Migrate inventory</strong> <ol><li>Identify when remaining stock was acquired (in order to initialize COGS)</li> <li>Set up "Goods &amp; Services &gt; Parts" for stock to be migrated</li> <li>Create an import file listing per day which items in stock were acquired and at what price <ul><li>From the file above, <em><u>exclude</u></em> any stock from unpaid invoices; it will be added in the next step</li> <li>Note that for assemblies "acquisition date" should be interpreted as "production date" -- the date the assembly was entered into inventory</li> </ul></li> <li>Import the file into the system (<strong><em><u>how</u></em></strong>)</li> </ol></li> <li><strong>Migrate open invoices</strong> <ol><li>Create customers and vendors at the bare minimum for which there are open invoices</li> <li>Create open sales and purchase invoices at their original creation dates</li> <li>Apply payments to the invoices on the original payment dates</li> </ol></li> <li><strong>Migrate the remaining balance</strong> <ol><li>Subtract the balances in the accounts in the new system from the balances to be migrated</li> <li>Create a GL transaction on the date before the cut-over with the calculated differences</li> <li>Post the GL transaction</li> <li>Verify the migrated numbers by running a balance sheet on the day before cut-over</li> <li>The numbers should be the same as those in the original balance</li> </ol></li> <li><strong>Freeze the migration balance to prevent hampering</strong> <ol><li>Go to "General Journal &gt; Year End", tab "Close Period"</li> <li>Enter the date before the cut-over in "Close As-of"</li> <li>Click "Close Period"</li> </ol></li> </ol><p>Lets say that the cut-over date is "2020-01-01"; then the date to close the books at is "2019-12-31". After completing the procedure above, no transaction can be entered or modified before or at "2019-12-31", making this a truely static opening balance.</p> <p> </p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mon, 06/29/2020 - 13:23</span> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/topics/setup" hreflang="en">setup</a></div> <div class="field__item"><a href="/topics/administration" hreflang="en">Administration</a></div> </div> </div> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/release/all-versions" hreflang="en">All Versions</a></div> </div> </div> <div class="field field--name-field-faq-category field--type-entity-reference field--label-above"> <div class="field__label">FAQ Category</div> <div class="field__item"><a href="/faq-categories/administration" hreflang="en">Administration</a></div> </div> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Mon, 29 Jun 2020 20:23:13 +0000 ehu 478 at https://ledgersmb.org Upgrade to LedgerSMB 1.8 https://ledgersmb.org/content/upgrade-ledgersmb-18 <span class="field field--name-title field--type-string field--label-hidden">Upgrade to LedgerSMB 1.8</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h1>Overview</h1> <p>Company database upgrades are supported all the way back from 1.4 directly to 1.8, using the 1.8 software. Company database upgrades from 1.3 and 1.2 are also supported, but due to the different nature of the upgrade process are called "migrations". The important difference being that when doing a migration, a copy of the data is being created in the 1.8 structure, while upgrades adjust the existing structure for 1.8. When upgrading from versions earlier than 1.7, please read the release notes and upgrade instructions of those versions: those instructions still apply but are not repeated here.</p> <p>Before starting, please remember:</p> <ul><li>Create a backup</li> <li>Don't do this in a hurry</li> <li>When running into problems, check out the "Support" page</li> </ul><h1>Technical upgrade</h1> <p>Upgrading the software works the same as with prior versions. Please refer to <a data-entity-substitution="canonical" data-entity-type="node" data-entity-uuid="7fc47818-9b1b-429e-8dc9-1324df2aa367" href="/content/upgrade-ledgersmb-17-16-or-15" title="Upgrade to LedgerSMB 1.7 (from 1.6 or 1.5)">the procedure to upgrade a tarball installation for 1.7</a> for the 1.8 upgrade. Be sure to install the <a href="https://github.com/ledgersmb/LedgerSMB/blob/1.8/Changelog#L80-L96">new Perl module dependencies listed in the Changelog</a>. Also note that the Docker image definition contains <a href="https://github.com/ledgersmb/ledgersmb-docker/blob/1.8/Dockerfile#L26">a comprehensive list of Debian Buster package dependencies</a>.</p> <p>&lt;Upgrading docker &amp; docker compose to be written&gt;</p> <h1>Company database upgrade</h1> <p>Technically, this process hasn't changed since 1.7 and <a data-entity-substitution="canonical" data-entity-type="node" data-entity-uuid="7fc47818-9b1b-429e-8dc9-1324df2aa367" href="/content/upgrade-ledgersmb-17-16-or-15" id="#upgrade-database" title="Upgrade to LedgerSMB 1.7 (from 1.6 or 1.5)">the instructions for 1.7</a> still apply.</p> <p>Each new LedgerSMB release has tightened the checks on validity of the data stored in the database. 1.8 continues on that path and adds yet more checks - this helps us find bugs and prevents undesirable data entering into the ledger. During the upgrade, existing data is checked against these new quality criteria and optionally offered for correction (or deletion, depending on the type of inconsistency).</p> <h2>Before you begin</h2> <ul><li>Verify that all Reconciliation Reports have been either approved or deleted<br /> If you forget this step, the migration will offer to delete it for you; approval isn't supported during migration. Note that this does <em>not</em> refer to <em>transactions</em>; unapproved transactions can safely exist during upgrade.</li> <li>Create a backup</li> <li>Tell users not to use your system during upgrade</li> </ul><h2><a id="after-upgrade" name="after-upgrade"></a>After the upgrade</h2> <ul><li>Import the templates for PnL and Balance sheet<br /> Go through the menu System &gt; Templates and either upload the various "PNL" and "balance_sheet" document formats or paste the source; you can find the template sources here: https://github.com/ledgersmb/LedgerSMB/tree/1.8/templates/demo (the TeX document to be processed by pdflatex) or here: https://github.com/ledgersmb/LedgerSMB/tree/1.8/templates/xedemo (the TeX document to be processed by xelatex)</li> <li>Assign the new role 'file upload' to administrator users<br /> Log into setup.pl in a company you want to change the access rights for; click "List users". From the list of users, select a user that you want to assign file upload rights (for the menu System &gt; Files). Repeat for all relevant users.</li> </ul></div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mon, 07/27/2020 - 23:11</span> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/topics/upgrade" hreflang="en">Upgrade</a></div> <div class="field__item"><a href="/topics/upgrading" hreflang="en">Upgrading</a></div> <div class="field__item"><a href="/topic/installation" hreflang="en">Installation</a></div> </div> </div> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/release/14" hreflang="en">1.4</a></div> <div class="field__item"><a href="/release/15" hreflang="en">1.5</a></div> <div class="field__item"><a href="/taxonomy/term/142" hreflang="en">1.6</a></div> <div class="field__item"><a href="/taxonomy/term/146" hreflang="en">1.7</a></div> <div class="field__item"><a href="/taxonomy/term/147" hreflang="en">1.8</a></div> </div> </div> <div class="field field--name-field-faq-category field--type-entity-reference field--label-above"> <div class="field__label">FAQ Category</div> <div class="field__item"><a href="/faq-categories/administration" hreflang="en">Administration</a></div> </div> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Tue, 28 Jul 2020 06:11:05 +0000 ehu 482 at https://ledgersmb.org Roadmap https://ledgersmb.org/content/roadmap <span class="field field--name-title field--type-string field--label-hidden">Roadmap</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>This document looks forward from the last stable public release (currently 1.6). The document should be taken as a general indication of direction. As with every open source project, contributors follow their own priorities; as such, features may be implemented earlier or later than indicated or even features entirely not mentioned may be implemented.</p> <p>LedgerSMB is being developed as a <em>Core</em> system with many functionalities a business requires. However, some businesses may require different functionalities, or some functionalities may be considered too disruptive to integrate immediately into the core. These functionalities are developed as <em>Add-ons</em>.</p> <h1>Ready for next release</h1> <p>Completed developments which will be included in the next release, are listed in the <a href="https://github.com/ledgersmb/LedgerSMB/blob/master/Changelog#L6">Changelog</a> file. This page focusses on providing an overview of (desired) future change.</p> <h1>On-going</h1> <p>These functionalities are currently actively being worked on:</p> <ul><li><a href="https://github.com/ledgersmb/LedgerSMB/projects/11" title="GitHub project #11">Improving the user experience on cash and payment handling</a></li> </ul><h1>Planned</h1> <p>The features in this section have been brought forward by existing contributors as items they want to work on (not necessarily in the stated order) when time permits. Some topics have been discussed between developers. None of these topics have seen any actual development just yet. If you're a developer interested to contribute to one of these topics, please step forward! We welcome contributions on each of these topics!</p> <ul></ul><h2>Improved first-user experience</h2> <ul><li><a href="https://github.com/ledgersmb/LedgerSMB/projects/13">Re-implementing setup.pl</a></li> </ul><h2>Webservices for (initially)</h2> <ul><li>Posting invoices</li> <li>Retrieving and creating customers</li> </ul><h2>Completion of previously implemented features</h2> <ul><li><a href="https://github.com/ledgersmb/LedgerSMB/projects/9">Fixed assets</a></li> <li><a href="https://github.com/ledgersmb/LedgerSMB/projects/1">Overpayments</a></li> <li><a href="https://github.com/ledgersmb/LedgerSMB/projects/6">Inventory adjustments</a></li> </ul><h2>Internationalisation and localisation</h2> <ul><li>Better handling of plural forms</li> </ul><h2>Technical improvements</h2> <ul><li>Migrate remaining DBObject code to PGObject</li> <li>Much more unit and BDD testing</li> <li>Perl module documentation</li> <li><a href="https://github.com/ledgersmb/LedgerSMB/projects/14">Number and currency formatting</a></li> </ul><h2>Release engineering</h2> <ul><li>Develop infrastructure (VM/Docker image) to create releases</li> <li>Build and publish Perl documentation on release</li> <li>Build and publish database schema documentation on release</li> </ul><h2>Accounting</h2> <ul><li><a href="https://github.com/ledgersmb/LedgerSMB/projects/4">Phase 2 of improved currency support</a>; e.g. foreign currency revaluation</li> </ul><h1>Wishlist</h1> <p>The following section lists highly desired features, grouped into topics. However, no developer has expressed any interest in working on these item in the foreseeable future. Developers who <em>do</em> want to work on these features, please step forward, we highly welcome contributions on these topics!</p> <h2>UI improvements</h2> <ul><li>Fewer defaults for configuration</li> <li>Layout improvements</li> <li>Help system</li> <li>Fully remodelled Contact entry screens</li> <li>Selection of customers/vendors through FilteringSelect</li> <li>Personal Dashboard</li> </ul><h2>Configuration and customization</h2> <ul><li>Easier development of templates by adding HTML-&gt;PDF output generator option</li> </ul><h2>Integration and scripting</h2> <ul><li>Web services</li> <li>Web hooks</li> </ul><h2>Accounting</h2> <ul><li>Revaluation of foreign currency balance sheet items</li> <li>Complete integration of pre/overpayments</li> </ul><h2>Goods and services</h2> <ul><li>(more/better) inventory reports</li> <li>production batch tracking</li> </ul><h2>Reporting</h2> <ul><li>Integrate budgets in financial reports</li> <li>Migrate reports module to Dojo/dgrid</li> </ul><h2>CRM</h2> <ul><li>Track events (like appointments) per customer, lead, etc.</li> <li>Sales Opportunity Tracking</li> <li>Sales forecasts</li> </ul><h2>HR</h2> <ul><li>Localization of <a href="http://permalink.gmane.org/gmane.comp.finance.ledger.smb.devel/3475" title="Sketching of Payroll">payroll roles</a> (implementation partner wanted!)</li> </ul><h2>Technical improvements</h2> <ul><li>Phase out code in old/ <ul><li>AR/AP invoices and transactions redesign</li> <li>GL transactions redesign</li> <li>Orders and Quotations redesign</li> <li>Warehouses, parts, and assemblies redesign</li> <li>Business types and Pricegroups redesign</li> </ul></li> <li>Replacement of payments.pm <ul></ul></li> </ul><h2>Authorization</h2> <ul><li>Support for role groups</li> <li>LDAP and groupware integration</li> </ul><p> </p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>Chris Travers</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sat, 07/14/2012 - 01:11</span> <section class="field field--name-comment-node-page field--type-comment field--label-hidden comment-wrapper"> </section> Sat, 14 Jul 2012 08:11:36 +0000 Chris Travers 22 at https://ledgersmb.org Installing LedgerSMB 1.8 https://ledgersmb.org/content/installing-ledgersmb-18 <span class="field field--name-title field--type-string field--label-hidden">Installing LedgerSMB 1.8</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h1>Installation from tarballs</h1> <p>This page contains the comprehensive version with the installation instructions for LedgerSMB 1.8 targetting a production installation <strong>from release tarballs</strong> and deals with these steps:</p> <ul><li>Installing the LedgerSMB Perl module dependencies</li> <li>Configuring the PostgreSQL server</li> <li>Configuring a webserver</li> <li>Configuring LedgerSMB</li> </ul><p>If you already have all of the above, please proceed to the <a href="http://ledgersmb.org/topic/preparing/preparing-ledgersmb-15-first-use">"Preparing for first use" guide</a>.</p> <p><!--break--></p> <p><em><strong>These are </strong></em><strong>not</strong><em><strong> the <a href="https://github.com/ledgersmb/LedgerSMB#quick-start">Quick start instructions</a>, but instructions for setting up a full production system. Also, please note that if you're in a position to use <a href="https://hub.docker.com/r/ledgersmb/ledgersmb/">LedgerSMB's Docker images</a>, or <a href="/node/140">packages for your Unix/Linux distribution</a>, using those will be far quicker and easier than following the instructions below.</strong></em></p> <p>Please note that installation of version 1.5 and up is completely different from the installation of versions 1.4 or earlier: This version uses <a href="http://search.cpan.org/~miyagawa/Plack/">Plack</a> to handle integration with front-end web servers. This means LedgerSMB can now be run in combination with many web servers, including (but not limited to):</p> <ul><li><a href="http://nginx.org/">nginx</a></li> <li><a href="http://search.cpan.org/~miyagawa/Starman/">Starman</a></li> <li><a href="http://www.lighttpd.net/">lighttpd</a></li> <li><a href="http://httpd.apache.org">Apache</a></li> </ul><p>It's no longer possible to run LedgerSMB as set of CGI scripts. This should not be a big concern, since Plack allows plugging LedgerSMB into Apache using mod_fcgid, mod_fastcgi or mod_proxy all of which have been available for versions 2.0 and up.</p> <p><em><strong>Feel free to log in and share your experiences in the comments at the end of the article.</strong></em></p> <h2><a>System requirements</a></h2> <p>Requirements are documented on the <a href="https://ledgersmb.org/content/system-requirements">system requirements page</a>.</p> <h3>Client</h3> <p>There are no specific requirements for LedgerSMB clients (web browsers) other than that they should have JavaScript enabled and be <a href="http://dojotoolkit.org/reference-guide/1.10/releasenotes/1.10.html#user-agent-support">able to run Dojo 1.16</a>.</p> <p>A broad range of browsers is supported (Chrome, FireFox, Opera, ...), including Microsoft Internet Explorer (10 or newer) and Microsoft Edge.</p> <p>Browsers explicitly not supported are:</p> <ul><li>Lynx</li> <li>w3m</li> <li>IE9 or earlier</li> </ul><h2>Unpacking the release tarball</h2> <p>According to the <a href="https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard">Filesystem Hierarchy Standard</a>, both /usr/local/ledgersmb and /opt/ledgersmb could be chosen as install locations. Unpack the tarball by running (as "root" user):</p> <pre> # tar xf ledgersmb-1.8.x.tar.gz --directory /usr/local/</pre> <h2><a>Installing the LedgerSMB Perl module dependencies</a></h2> <p>Please note that some distributions (e.g. Fedora) do not by default install <em>all</em> core modules, but rather, install a subset. LedgerSMB doesn't list core modules as dependencies as they should be available.</p> <p>The instructions below assume all dependencies will be installed from CPAN. It is however possible to install most modules from distribution repositories. The Docker image can be consulted for <a href="https://github.com/ledgersmb/ledgersmb-docker/blob/1.6/Dockerfile#L27-L56">an example</a>.</p> <p><code><strong># Installation of LedgerSMB Perl dependencies from CPAN</strong><br /> cpanm --quiet --notest --with-feature=starman --installdeps /usr/local/ledgersmb/</code></p> <p>Then, there are a number of features which need additional modules.<br /> The above command includes the Starman Feature which is required for most installations.<br /> The modules required for each feature can be installed by appending "--with-feature=&lt;feature-name&gt;" to the above command line.</p> <p>These features are supported:</p> <table><thead><tr><th>Feature</th> <th>Description</th> </tr></thead><tbody><tr><td><code>latex-pdf-ps</code></td> <td>Enable PDF and PostScript output<br /><em>Note</em>: In order to make use of this functionality, the server must also have 'latex' or 'xelatex' installed. On many distributions, these packages are called 'texlive-latex' and 'texlive-tetex' respectively.</td> </tr><tr><td><code>latex-pdf-images</code></td> <td>Image size detection for PDF output</td> </tr><tr><td><code>starman</code></td> <td>Starman Perl/PSGI (standalone) web server</td> </tr><tr><td><code>openoffice</code></td> <td>OpenOffice.org document output</td> </tr><tr><td><code>edi</code></td> <td>(EXPERIMENTAL) X12 EDI support</td> </tr></tbody></table><p> </p> <p><code><strong># Installation of LedgerSMB Perl dependencies directly from CPAN<br /> # With Starman and PDF &amp; Postscript output</strong><br /> cpanm --quiet --notest --with-feature=starman --with-feature=latex-pdf-ps \<br /> --installdeps /usr/local/ledgersmb/</code></p> <h2><a>Configuring the PostgreSQL server</a></h2> <p>There are only two requirements for the PostgreSQL database server. This section instructs how to configure an pre-installed PostgreSQL installation to meet those requirements. It's assumed that the LedgerSMB server and PostgreSQL are being run on the same system. The requirements to meet are:</p> <ol><li>A database administrator user (in PostgreSQL called a 'role') for creation and administration of LedgerSMB company databases</li> <li>Authorization setup so the database administrator can log into the database through LedgerSMB's 'setup.pl' program</li> </ol><h3><a>Creating the company database administrator account</a></h3> <p>The database administrator user account needs to have at the bare minimum:</p> <ul><li>The right to create databases (CREATEDB)</li> <li>The right to create roles (CREATEROLE)</li> <li>The right to log in (LOGIN)</li> <li>A password to authenticate logins</li> </ul><p>The following command issued as root user, creates a user named "lsmb_dbadmin" (which isn't a super user):</p> <p><code><code># su - postgres -c 'createuser -S -d -r -l -P lsmb_dbadmin'<br /> Enter password for new role: <strong>************</strong><br /> Enter it again: <strong>************</strong></code></code></p> <h3><a>Configuring database access rights</a></h3> <p>PostgreSQL takes its access configuration through a file called 'pg_hba.conf'. The location of this file may differ per distribution:</p> <ul><li>Debian derivatives: /etc/postgresql/&lt;version&gt;/&lt;cluster&gt;/pg_hba.conf</li> <li>RedHat derivatives: /var/lib/pgsql/&lt;version&gt;/data/pg_hba.conf</li> </ul><p>On most systems, this file has four effective lines:</p> <p><code>local   all             postgres                                peer<br /> local   all             all                                     peer<br /> host    all             all             127.0.0.1/32            peer<br /> host    all             all             ::1/128                 peer</code></p> <p>These lines mean that each system user can connect to the database system with an equally named database user; the connecting source doesn't make a difference: unix and TCP/IP sockets have the same configuration.</p> <p>The LedgerSMB software needs to be able to connect to the database system as 'lsmb_dbadmin' or as a LedgerSMB user, not as the user that runs the server process. The new content should look like:</p> <p><code>local   all             postgres                         peer<br /> local   all             all                              peer<br /> host    all             postgres         127.0.0.1/32     reject<br /> host    all             postgres        ::1/128      reject<br /> host    postgres,template0,template1   lsmb_dbadmin         127.0.0.1/32     md5<br /> host    postgres,template0,template1   lsmb_dbadmin         ::1/128      md5<br /> host    postgres,template0,template1   all          127.0.0.1/32     reject<br /> host    postgres,template0,template1   all          ::1/128      reject<br /> host    all             all             127.0.0.1/32     md5<br /> host    all             all             ::1/128          md5</code></p> <p>This configuration takes advantage of the fact that each connection method (unix sockets vs TCP/IP sockets/addresses) can be separately configured. While the default connection method of the 'psql' tool is to connect over the 'local' (unix socket method), the default connection method for LedgerSMB is to use 'localhost' (127.0.0.1/32 or ::1/128).</p> <p>The above configuration means that the user 'postgres' can't be used any longer to connect from 'localhost', no user can connect to the 'postgres' database through 'localhost' [reject] and all other combinations of users and database names need password authentication [md5].</p> <p>Notes:</p> <ol><li>PostgreSQL matches the lines first to last and uses the first matching line, so <strong>the order of the lines is very importance</strong>.</li> <li>For more information about the pg_hba.conf configuration options, see the <a href="https://www.postgresql.org/docs/9.4/static/auth-pg-hba-conf.html">PostgreSQL pg_hba.conf documentation</a></li> <li>The databases 'template1' and 'template0' are system databases available in every cluster; this configuration blocks those for access from LedgerSMB as well.</li> </ol><p>After reconfiguring pg_hba.conf, the PostgreSQL service needs to be restarted. this works with one of the following commands (depending on your distribution):</p> <p><code><strong># restarting postgresql service (as root)</strong><br /> # service postgresql restart<br /><strong># - or -:</strong><br /> $ service postgresql-&lt;version&gt; restart</code></p> <p><a>Verifying database access</a></p> <p>To verify access for the database admin user 'lsmb_dbadmin', an accessible database - not named 'postgres', 'template0' or 'template1' - is required. On new installs, these are the only databases. So the next example creates one. Here's how to verify the setup:</p> <p><code><strong># Verify access configuration (run as root)</strong><br /> $ su - postgres -c 'createdb lsmb_access_test_db'<br /> $ psql -h localhost -U lsmb_dbadmin -d lsmb_access_test_db -c "select version()"<br /> PostgreSQL 9.6.3 &lt;--- this line indicates success("9.6.3" is just an example version number)<br /> $ su - postgres -c 'dropdb lsmb_access_test_db'</code></p> <p><a>Configuring a web server</a></p> <p>Regardless of your web server setup, configuration of an "application server" is required. The application server used with LedgerSMB can be any PSGI compatible server. The default application server is Starman, which is widely considered the fastest available. The Starman server process lives behind a <a href="https://en.wikipedia.org/wiki/Reverse_proxy">reverse proxy</a>. While Starman deals specifically with those HTTP requests which require "application logic", all other requests (mostly static content, such as images or CSS) are dealt with by the proxy.</p> <h3><a>Configuring the Starman application server</a></h3> <p>Depending on the distribution, a startup method must be installed; this can be one of:</p> <ul><li>SysV init script</li> <li>Upstart configuration</li> <li>Systemd configuration</li> </ul><p>At the time of writing, the only configuration that comes with LedgerSMB's tarball is the systemd configuration. The following common setup is required regardless of the system used to manage services on the target system.</p> <p>To support priviledge separation, the Starman server should be running as a user which meets these criteria:</p> <ul><li>Not the same user as the web server</li> <li>Does not have write access to the LedgerSMB directories</li> </ul><p>To that extent, identify an existing (unused) system user, or create one with this command:</p> <p><code><strong># create 'ledgersmb' user for Starman server to run</strong><br /> $ useradd -d /non-existent -r -U -c "LedgerSMB/Starman service system user" ledgersmb</code></p> <h4><a>Configuring systemd for Starman</a></h4> <p>In the directory conf/systemd/ from the tarbal, there is a preconfigured systemd service file, which needs to be copied into place. In case you decided to install dependencies into a local::lib, the service file needs to be edited to set a PERL5LIB environment variable before you can succesfully start the service.</p> <p><code><strong># 'copy' systemd service configuration, enable and start</strong><br /> $ sed -e "s#WORKING_DIR#$PWD#" conf/systemd/ledgersmb_starman.service \<br /> | sudo tee /etc/systemd/system/ledgersmb-starman.service</code><br /><code>$ systemctl enable ledgersmb-starman<br /> $ service ledgersmb-starman start</code></p> <p>Note that the above assumes that the commands are being run from the root of the unpacked tarball. It also assumes that the tarball has been unpacked at its installation path.</p> <p>To verify that the service started up correctly, run:</p> <p><code><strong># verify that the Starman/LedgerSMB server started correctly</strong><br /> $ journalctl -u ledgersmb-starman.service --since="today" -l -e</code></p> <h3><a>Configuring a reverse proxy</a></h3> <p>For a quick test-run or demo setup running on localhost only, configuration of a proxy isn't mandatory. However, for a production setup with LedgerSMB being network or even web-exposed, it's ill-advised to run without the reverse proxy for - at least - the following reasons:</p> <ul><li>The proxy can serve static content [much] more efficiently (performance)</li> <li>The proxy can support HTTP/2 which multiplexes requests (performance)</li> <li>The proxy guards Starman against public exposure (security)</li> <li>The proxy adds TLS (security)</li> </ul><p>With TLS certificates being completely free these days through <a href="https://letsencrypt.org/">Let's Encrypt</a>, and only a few dollars for the simplest of certificates from commercial vendors, there's really no reason <em>not</em> to secure traffic to the server. Further documentation below assumes you have such a certificate. As for getting Let's Encrypt certificates, use their <a href="https://letsencrypt.org/getting-started/">Getting Started guide</a>.</p> <p>For simplicity, only the configuration of nginx as a reverse proxy is documented here.</p> <h4><a>Configuring nginx</a></h4> <p>The tarball contains an example virtual host configuration file to set up a reverse proxy with nginx. It needs to be included in the 'http { }' block in your nginx configuration. On Debian derived systems, this is done by copying the file to /etc/nginx/sites-available/ledgersmb.conf. On RedHat/Fedora derivatives, the copying goes to /etc/nginx/conf.d/ledgersmb.conf. After editing the file, replacing the following variables:</p> <ul><li><working_dir> Same replacement as before</working_dir><br /></li> <li>SSL_CERT_FILE<br /> Should be where your certificate file is stored; probably /etc/certs/your_host.example.com.pem</li> <li>SSL_KEY_FILE<br /> Probably the same as the SSL_CERT_FILE, but with '.key' extension</li> <li>YOUR_SERVER_NAME<br /> If nothing else, should be replaced by the output of the command 'hostname -f'</li> </ul><p>NOTE: by default snakeoil certificates will be used by at least our nginx sample config files.<br /> These certificates are locally created and will normally require your browser clients to override something before they can be used.</p> <p>On Debian derivatives, activate this file after it has been edited, using:</p> <p><code><strong># On Debian/Ubuntu/Mint activate the virtual host</strong><br /> $ ln -s /etc/nginx/sites-available/ledgersmb.conf /etc/nginx/sites-enabled/</code></p> <p>On RedHat/Fedora derivatives, no symlinking is necessary: the configuration is active immediately. Now, verify that the configuration is acceptable:</p> <p><code><strong># (Re)start nginx service to make nginx reconfigure itself and validate configuration</strong><br /> $ service nginx restart</code></p> <h2><a>Configuring LedgerSMB</a></h2> <p>The tarball has a default LedgerSMB configuration file conf/ledgersmb.conf.default. Install the configuration file with:</p> <p><code><strong># Install the default ledgersmb.conf configuration file</strong><br /> $ cp conf/ledgersmb.conf.default ledgersmb.conf</code></p> <p>That is it.</p> <p>In case the in-app e-mail feature is going to be used, check the values in the [mail] section and optionally adjust for the mail setup of the target system.</p> <h2>Next steps</h2> <p>Now follow the instructions in the <a href="http://ledgersmb.org/topic/preparing/preparing-ledgersmb-15-first-use">"Prepare LedgerSMB for first use" guide</a>.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden">Fri, 09/04/2020 - 11:34</span> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/topic/installation" hreflang="en">Installation</a></div> </div> </div> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/147" hreflang="en">1.8</a></div> </div> </div> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Fri, 04 Sep 2020 18:34:36 +0000 ehu 484 at https://ledgersmb.org