[32 total ]
New Virtual Appliance Available

Ledger123.com has released a FreeBSD VMWare image with LedgerSMB 1.2.13 pre-installed.

It is available at their web site..

1.2.16 Released

The LedgerSMB Core Team is proud to announce the release of version 1.2.16, which corrects one issue with price matrix error handling introduced in 1.2.15 and also issues with running LedgerSMB on Perl 5.10.0. It is recommended that all users ... [More] upgrade, but those using versions before 1.2.15 along with price matrix logic should put the application through some light testing before putting it into production.

The complete changelog is:
Changelog for 1.2.16

Correcting "Attempt to free unreferenced scalar" error on 5.10.0 (Chris T)
Correcting "Access Denied" when searching for timecards (Seneca) [Less]

1.2.15 Released

The LedgerSMB Team is proud to release version 1.2.15. This version
corrects a number of important bugs including two critical security
issues. We will be releasing a separate security advisory within a
week.

Additionally ... [More] , several broken areas of the pricematrix logic were
corrected. Businesses using this portion of the software should spot
check results before putting this release into production.

The complete changelog is:

Changelog for 1.2.15
* Uppercasing some SQL statements (Chris T)
* Fixed for AR allocation corner case (Victor Q, 1881199)
* Fixed for warehouse transfer error (Jeffk, 1877860)
* Fixed error pulling transactions by department (Chris T, 1954974)
* Fixed UTF-8 encoding for Czech COA (Vladamir B, 1906081)
* Fixed upgrade script creating incorrectly named sequence (Chris T, 1987545)
* Corrected POS transactions report (JeffK and Chris T, 2025931)
* Added a max_post_size directive to the ledgersmb.conf (Chris M)
* Fixed Price Matrix logic (Chris T, 1897245)
* Fixed errors in the backported triggers for transaction table (Jeffk, 1928336)
* Corrected corner case on ar_ap_summary_fix_1.2.14.sql (Chris T) [Less]

LedgerSMB 1.2.14 released

The LedgerSMB team is pleased to announce the release of LedgerSMB 1.2.14 which is available from the SourceForge download page.

This release corrects a number of minor bugs including those relating to reporting, LaTeX templates, and the ... [More] like.

Please click 'Read more' to view the change log for 1.2.14.

Changelog for 1.2.14
* Build.PL now requires Test::Trap (Chris T, 1872529)
* Fixed double escaping of tex under some circumstances (Seneca)
* Added fix for bad summary information in AR/AP transactions (1800065,
1800069, Chris T)
* Fixed posting issue behind AR/AP transaction report anomilies (Chris T)
* Fixed taxes added twice when viewing existing transaction (Chris T)
* Fixed erroneous discount lines in POS invoice (Chris T) [Less]

Distributed LedgerSMB Development With DVCS - Git

=================================================
Distributed LedgerSMB Development With DVCS - Git
=================================================
2008-08-11
By Jeff Kowalczyk (jfkw)

I've been working on my local LedgerSMB ... [More] deployment customization
using the distributed version control system, git. I'm relatively
new to git, but it's really helping me in the following areas:

* Fixing bugs in branches/1.2

* Making necessary customizations that are unsuitable for
upstream

* Layering multiple customization branches on each other to get
the configuration required by a particular customer deployment

* Putting templates and graphics under version control

* Putting the plaintext backup of the company database under
version control. At any time I can and do make snapshots, then
examine the diff to see how each LedgerSMB operation affects
the database tables.

LedgerSMB Development and DVCS
==============================

The LedgerSMB projet is organized around a team of core-devs,
with exclusive commit priviledges to the centralized subversion
repository hosted on Sourceforge.

There seem to be many very capable developers in the LedgerSMB
and SQL-Ledger communities. Their customization and bugfix work
is of a quality and timeliness that we all would like to see and
use it as early as possible. However, the core-devs must be
prudent about pulling untested and possibly incompatible changes
into the mainline repository.

To energize LedgerSMB development, I'm interested in working with
any interested parties to start collaborating the DVCS way. I
think having the non-committer contributors using a DVCS system
and following some sensible conventions will help the core-devs
make the best use of their time to pull from DVCS contributors.

Those of us who want to can used DVCS without requiring the
central repository to change to DVCS.

Even more importantly, it will bring the important and eagerly
anticipated work being done (such as the recent payment
functionality by mighty-d) out into the collaborative space. This
should help speed the collective work along, and improve its
quality along the way.

Cloning the LedgerSMB Sourceforge Subversion Repository
=======================================================

In time we may have an official git mirror from which to clone (a
very quick copy operation), but you can make your own clone of
the LedgerSMB repository directly from Sourceforge:

$ git svn clone https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/ ledgersmb
Initialized empty Git repository in /path/to/ledgersmb/.git/
A ledger-smb/login.pl
A ledger-smb/menu.ini
A ledger-smb/ledger-smb.gif
A ledger-smb/is.pl
A ledger-smb/VERSION
(..., ..., go get coffee)

Fixing A Bug Using Git And Bugfix Branch
========================================

While working on my local branches/1.2, I came to conversation
about a proposed trunk feature. I switched to trunk, and tested
the current state of trunk. During that test, I found a simple
bug in the schema definition, filed as SF2046815:

ERROR: column e.control_code does not exist LINE 1:
..._ap_account_id, ec.cash_account_id, ec.threshold,
e.control_... ^ QUERY: SELECT c.id, e.id, ec.entity_class,
ec.discount, ec.taxincluded, ec.creditlimit, ec.terms,
ec.meta_number, ec.business_id, ec.language_code,
ec.pricegroup_id, ec.curr, ec.startdate, ec.enddate,
ec.ar_ap_account_id, ec.cash_account_id, ec.threshold,
e.control_code, ec.id FROM company c JOIN entity e
ON (c.entity_id = e.id) JOIN entity_credit_account ec
ON (c.entity_id = ec.entity_id) WHERE e.id = $1 AND
ec.entity_class = CASE WHEN $2 = 3 THEN 2 WHEN $2 IS NULL THEN
ec.entity_class ELSE $2 END CONTEXT: PL/pgSQL
function "entity__list_credit" line 4 at FOR over SELECT rows

This is a one-liner fix, but it is still worth it to make a
branch, since fast branching and easy merging are strengths of
git. The practice scales up well when you want to maintain
multiple branches and share them with others.

I intend my branch to be against the current trunk, so I check
that branch out. I have my prompt set up to display the current
branch in parentheses.

(1.2_jfkw) $ git checkout trunk
Note: moving to "trunk" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
git checkout -b
HEAD is now at cb92467... Adding meta_number to company_billing_info return set

I am in the habit of updating the branch to the latest revision
before branching:

(cb92467...) $ git svn rebase --all
Current branch HEAD is up to date.

Now, we'll make a bugfix-branch, I prefer it to be named after
the SF bug:

(cb92467...) $ git checkout -b 1.3_SF2046815_missing_entity_control_code
Switched to a new branch "1.3_SF2046815_missing_entity_control_code"

You can use the git branch command to list all local
branches. For example, I'm keeping around all branches for bugs
and features I've worked on:

$ git branch
1.2_SF1877860_typo
1.2_SF1928336_renames
1.2_SF2013331_cookie_name
1.2_SF2025931_till_equals_1
1.2_cdog
1.2_cdog_templates
1.2_generate_salesorders_detail_default
1.2_jfkw
1.2_partnumber_like_space_delimiter
1.2_print_pdf_default
1.2_project_generate_orders
1.2_receipts_on_invoice_screen
1.2_require_customernumber
1.2_require_customernumber_set_to_name
1.2_sql_ins_customer_ins_project
1.3_SF2013331_cookie_name
1.3_SF2017284_smallgray_css
1.3_SF2043569_install_doc
* 1.3_SF2046815_missing_entity_control_code
1.3_jfkw
master

Note that the remote branches (trunk, 1.2) are seen with the git
branch -a command. You should never modify those, just think of
them as read-only. Git will keep track of the remote origin
branch your local branch came from.

Back to the bugfixing task at hand. Edit the offending file:

(1.3_SF2046815_missing_entity_control_code) $ emacsclient -n sql/Pg-database.sql

And in your editor, fix, save, test, etc. When ready, view a diff
of the branch tip (HEAD) to your working copy:

(1.3_SF2046815_missing_entity_control_code) $ git diff
diff --git a/sql/Pg-database.sql b/sql/Pg-database.sql
index e1d8251..5bf84c3 100644
--- a/sql/Pg-database.sql
b/sql/Pg-database.sql
@@ -19,6 19,7 @@ CREATE index entity_class_idx ON entity_class(lower(class));

CREATE TABLE entity (
id serial UNIQUE,
control_code text not null,
name text check (name ~ '[[:alnum:]_]'),
entity_class integer references entity_class(id) not null ,
created date not null default current_date,

At this point you encounter something unique about git. You have
an intermediary layer between your working copy and HEAD, called
the index. The index has been described variously as 'the next
commit'.

Use the git status command to see what has changed in your
working copy:

(1.3_SF2046815_missing_entity_control_code) $ git status
# On branch 1.3_SF2046815_missing_entity_control_code
# Changed but not updated:
# (use "git add ..." to update what will be committed)
#
# modified: sql/Pg-database.sql
#
no changes added to commit (use "git add" and/or "git commit -a")

And decide which files among these, in whole or just in part
should be added to the index, which is to be the next commit.

In this case, there's only one file changed, so you can add it to
the next local commit by filename, or by adding all under the current
directory (e.g. '.'):

(1.3_SF2046815_missing_entity_control_code) $ git add .

Check the status now, where you see that file added to the index
is designated 'to be committed'.

(1.3_SF2046815_missing_entity_control_code) $ git status
# On branch 1.3_SF2046815_missing_entity_control_code
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# modified: sql/Pg-database.sql
#

Commiting Your Changes
======================

Looks good, we're ready to commit:

(1.3_SF2046815_missing_entity_control_code) $ git commit -m 'add missing entity.control_code column'
Created commit a3503cb: add missing entity.control_code column
1 files changed, 1 insertions( ), 0 deletions(-)

If you have commit rights to the repository, you can git svn
dcommit your changes directly:

(1.3_SF2046815_missing_entity_control_code) $ git svn dcommit --help
git-svn - bidirectional operations between a single Subversion tree and git
Usage: /usr/bin/git-svn [options] [arguments]
dcommit Commit several diffs to merge with upstream
(...)

Or, Generate A Patch
====================

If you don't have commit rights, and you're simply patching a bug
from the tracker, make a diff of your mature/completed bug branch
to its origin branch appropriate documentation:

(1.3_SF2046815_missing_entity_control_code) $ git diff trunk > 1.3_SF2046815_missing_entity_control_code.diff

And upload 1.3_SF2046815_missing_entity_control_code.diff as a
patch with appropriate documentation.

DVCS Documentation Forthcoming
==============================

Next opportunity, I'll document the above using a git hosting
service such as gitorious or github. With a shared git repository
you can share your branches with others who may want to
collaborate or test. Best of all you can ask the LedgerSMB
committers to pull from your repository when your branch is
mature enough to be accepted upstream.

If you're interested in using DVCS to contributed to LedgerSMB,
I'll be available on #ledgersmb as jfkw or on the mailing list
ledgersmb-dev. [Less]

LedgerSMB 1.2.13 released

The LedgerSMB team is pleased to announce the release of LedgerSMB 1.2.13 which is available from the SourceForge download page.
This release corrects all known issues with running LedgerSMB 1.2.x on PostgreSQL 8.3 and although other issues may ... [More] surface, we will fix those as they are brought to our attention.

Please click 'Read more' to view the change log for 1.2.13.

Changelog for 1.2.13
* Fixed all known implicit cast issues with PostgreSQL 8.3 (Chris T)
* Fixed Vendor Info Incorrectly Escaped in Check Printing Module(1844159, Chris T)
* Fixed Serial numbers not preserved on order consolidation(1849585, Chris T)
* Adding fix for double-incrementing id sequence(Chris T)
* Fixed: DBD::Pg Error Searching for PO by description (1876963, Chris T)
* fixed syntax error in COMMENT ON INDEX statement (Seneca)
* Fixed the display of taxes with '%' in PDF invoices (Seneca)
* Fixed broken substitution in update_defaults (Seneca) [Less]

LedgerSMB 1.2.11 released

The LedgerSMB team is pleased to announce the release of LedgerSMB 1.2.11 which is available from the SourceForge download page. Some of these fixes are important for Canadian users, as it fixes some tax issues that are affected by the GST ... [More] change.

Please click 'Read more' to view the change log for 1.2.11.

Changelog for 1.2.11
* Simplified obtaining years with transactions (Chris T)
* Fixed dataset creation (Chris T)
* Tax display fixes for AR/AP transactions (Chris T, 1794077, 1790768)
* Fixed encoding errors in numeral to text conversion (Seneca)
* Fixed the displayed number format for AP invoice taxes (Seneca)
* Fixed the selection of taxes when validto is involved (Seneca, anarcat's addtion to 1818792) [Less]

LedgerSMB 1.2.10 Released

This release fixes a serious bug which can render backups unusable, and fixes nearly fourty others. (0 comments)

LedgerSMB 1.2.10 released

The LedgerSMB team is pleased to announce the release of LedgerSMB 1.2.10 which is available from the SourceForge download page.

The changelog for this release is quite long, please click 'Read more' for all the details.

Changelog ... [More] for 1.2.10
* Fixed bug 1765161, post button duplicates invoices.(Chris T)
* Adding a minor fixes to COGS edge cases for reversed invoices. (Chris T)
* Fixed bug 1811022. Closedto date problems (Seneca)
* Fixing error on parts cost display, bug 1811470 (Chris T)
* fixed oversight with required_debs.txt name (Joshua D)
* Removing stray quote from button label, bug 1814444 (Seneca)
* Increasing min DBI version (Seneca)
* Apply db_parse_numeric to the correct hashref, fixes 1815081(Seneca)
* Fixed 1815075, Subject of email improperly encoded) (Seneca)
* Set template file output to UTF8 (Seneca)
* Body encoding fixes (Seneca)
* Fixing message-id setting (Seneca)
* Drawer opening now uses correct printer designation (Chris T)
* Change issued is now entered with correct memo field. (Chris T)
* Closing tell report works as advertised (Chris T)
* Fixed 1814437, Multiple paths set causing errors (Seneca)
* Add the ampersand to the HTML escape list for parse_template (Seneca)
* fixed 1815329, $ not escaped properly for LaTeX (Seneca)
* updated Hungarian translation from Pongrácz István (patch 1814156, Seneca)
* Properly handle invoice-type quantities from customer search (Seneca)
* Correcting improper redirect when reposting POS invoices.(Chris T)
* Fixing issues relating to database queries and POS-module redirects (Seneca)
* Fixing bug which hides discount input in POS screen. (Chris T)
* Fixing bug: Obsolete items show on short parts report(Chris T)
* Fixed bugs handling floats as numbers from the database (Seneca)
* Fixing POS screen opening drawer when print/post triggers update (Chris T)
* Add missing $parts_id to query in add_items_required (Seneca)
* Fix purchase order generation screen display (Seneca)
* Shift the extraction of invnumber down a few lines (fixes 1820572, Seneca)
* Fixing bug 1831246, doubleparsing in RC.pm (Seneca)
* Fixing bug 1831410, double parsing in recurring transactions (Seneca)
* Fixed bug 1820698, DBI error: value too long (Seneca)
* Adding db fix script for 1819483 (Chris T)
* Removing duplicate drawer open (Chris T)
* Adding db fix script for primary key in recurring table (Seneca)
* Fix for bug 1831402, session expired re: recurring emails (Seneca)
* More number formatting fixes (Seneca)
* Encoding fixes for the backup routines (Seneca) [Less]

LedgerSMB 1.2.8 Released

This release corrects a number of SQL injection issues as well as a number of other bugs. The changelog is:

Changelog for 1.2.8

Fix SQL errors saving customer price lists (Chris T, 1754172)
Fixed AR/AP reversal issues (Victor ... [More] S, 1752439, 1753358)
Fixed various scoping errors (Chris T, 1703347, 1753360)
Fixed: Timecards ignore price matrix (Chris T, 1754099)
Fixed scoping issues in IS.pm (Chris T, 1754576, 1754579, 1768678)
Fixed bugs with reversing invoices (Victor S, 1756387, 1755928, 1755355)
Cause the GL report amount boxes to respect number format (Chrish T, 1754976)
Corrected cumulative tax display issues (Chris T, 1745757)
Fixed the display of non-all GL and GIFI reports (Seneca, 1758251)
Fixed SQL errors in project deletion (Seneca, 1760722)
Fixed error that caused order to invoice conversion to fail (Seneca)
Fixed SQL errors in customer search (Chris T, 1761615)
Fixed SQL errors (Chris T)
Correct display issues with number format '1.000,00' (Seneca)
Prevent AR Transaction screen from calculating sales tax (Chris T)
Populate quantities during purchase order generation (Chris T, 1750895)
Fixing COGS posts to closed dates when books closed (Chris T, 1753372)
Fix database errors in processing recurring actions (Seneca, 1773591)
Keep the closedto date in a known form (Chris T, 1763928, 1755145)
Fixed memo search bug (Seneca)
Fixed minor bug in till account selection (Chris T)
Fixed number formatting in the Inventory Activity report (Seneca)
Fixed: Add new language error in 1.2.7 (Pongracz I, 1793331)
Correct display issues with number format '1 000.00' (Seneca, 1795858)
Fixed minor documentation errors (Seneca)
Adding more NaN checks to transaction posting (Seneca, 1789169) [Less]

LedgerSMB 1.2.8 Released

LedgerSMB 1.2.8 has been released, correcting numerous bugs in previous releases. As some of the resolved issues relate to security and accounting logic, upgrades are recommended and encouraged. (0 comments)

Happy Birthday LedgerSMB!

Today is the first anniversery of LedgerSMB's first public release.

In the past year, we have released three major releases:

1.0.0: Major security enhancements

1.1.0 Moderate security enhancements, new ... [More] features

1.2.0 Major security enhancements, new features.

In addition, each of these releases has had several revisions which have
corrected various bugs and security issues. All in all, we have had nearly
25 releases in a year. We have gone from 300-500 downloads in our first few
months to 800-1200 most months currently. While this is still only half of
the downloads SQL-Ledger was seeing before the fork (at least on
Sourceforge), it is a noteworthy achievement. If such a pattern continues,
perhaps we can double the downloads again in the next year.

In the next year, we expect to release at least two more major
releases: 1.3.0 and 1.4.0. These two releases will be extremely
noteworthy.

1.3.0 will include a new MVC-like architecture for new code, and the object
model will largely be defined in the database. All contact management areas
of the software will be redesigned and moved to this architecture.
Additionally, we will have voucher processing capabilities, a redesigned
payment and reconciliation interface, and many more enhancements. This will
be the last major release which is expected to have structural security
enhancements. It is also expected that there will be a limited RESTful web
services interface available.

1.4.0 will re-design all the financial and supply chain management logic and
move it to the new framework. This is likely to be a large job but when we
are done, we will be close to 2.0.

2.0 will be a major milestone. At this point, not only will we be free from
the SQL-Ledger code, but we will also have taken the time to review every
area of the program. It will be possible to move away from framesets at
this point, and entirely redesign the UI to make the program more usable.
While I do not know for certain that we will reach this point in the next
year, current progress suggests we may. [Less]

LedgerSMB 1.2.7 Released

LedgerSMB 1.2.7 has been released which contains a number of critical
updates affecting users of LedgerSMB 1.2.x. These include a fix for a
severe security issue. All users who are currently running LedgerSMB
1.2.x are urged to upgrade ... [More] at once. A security advisory is currently
under development and will be released through these channels once it
is completed.

LedgerSMB 1.2.7 also includes a number of other bug fixes of varying
severity. The full changelog is:

Changelog for 1.2.7

Fixed user@company logins (Chris T)
Fixed closed books detection (Chris T)
Fixed AR/AP print and post endless loop (Chris T)
Fixed subtotal not working on AR/AP Transaction Report (Seneca)
Fixing incorrect tax account selection issues in POS screen (Chris T)
Fixed: Titlebar does not show user info (Seneca)
Fixing error searching for parts with sales invoice links (Chris T)
Fixed a number of COGS bugs on invoice reversal (Victor S)
Fixing bareword error with pos.conf.pl (Chris T)
Fixing SQL error when creating assembly (Seneca)
Fixing Template use check in user deletion (Seneca)
Fixing bug partial transaction commit bug wrt invoices (Chris T)
Fixed line items were dropped on order consolidation (Chris T)
Correcting errors on transaction list after posting (Chris T)
Updated ebuild files (Chris T)
Backporting POD and tests for Menu.pm from trunk (Seneca)
Fixing constraint issue deleting part (Chris T)
fixing vendor taxes displaying improperly when printing PO (Seneca)
Corrected security bypass in login.pl (Seneca) [Less]

Writing content on LedgerSMB.org (or How I learned to stop searching and wrote it myself)

Contributing to the LedgerSMB project with documentation and articles is easy. This short document will get you going in no time...

Getting started

Make sure you have created an account and logged in
Click on "Create Content" on ... [More] the menu at the left.
Choose a suitable content type - essentially FAQ entries for, well... FAQ's, or choose "Story" for most other purposes.
Start typing!

Submitting
Community submissions are moderated on LedgerSMB.org, so once you have submitted your story or FAQ entry it will go into the moderation queue. You will see your story appear on the right-hand side of the site under the "Pending Content" heading. From here, your content may be published directly (at which point it will no longer show on the right sidebar, but will become part of the site) or a moderator may post some feedback on the content with suggestions or questions.

You might like to send a quick note to the mailing lists or on IRC to let the Moderators know that your new content is ready to be reviewed.

You can add new comments to your pending content, allowing discussion to flow during the editing / moderating process.

Publishing
Once your content has been "published", it will no longer appear in the sidebar and will be available to all users within the site. You will be able to make changes to your content if necessary.

Those who have contributed a few quality items are likely to be promoted to the "Moderator" role, which allows direct publishing and moderating of other users' contributions. [Less]

LedgerSMB 1.3.0 Milestone 1 released

(From Chris Travers' post to LedgerSMB-devel list)

We have opted to release a milestone release on sourceforge with the changes towards 1.3.0 to-date. Please note that this release is largely aimed as a community update and is not suited ... [More] well to either active development (due to rapid changes of the codebase) or for production use.

Highlights include:

a new template system (Seneca)
RESTful web services interface code (Jason)
Normalized Contact Management schema to be basis for other CRM functionality (Josh D)
New Architecture (Chris T and other core members)
New Reconciliation code (Awrynn Shaw)
Vocher code (Chris T)
On-hold status for invoices (Awrynn Shaw)
More tests (Seneca)
The login page and menu are now ported to the new architecture.
And more! [Less]

LedgerSMB 1.2.6 released

The LedgerSMB team is pleased to announce that version 1.2.6 was released on June 28th

The following issues have been corrected:

customer_id field error in AP transactions
invalid HTML in ca.pl
Error searching for customer ... [More] by address
Error saving orders, projects, etc. with custom fields.
Error saving project with NULL customer id.
.po header information showing up on balance sheet.

Additionally, the following preventative measures were included:

Meta tags were added to force the use of utf-8 by default
The alias directive in the ledgersmb-httpd.conf was changed from /ledger-smb to /ledgersmb to make consistant with our naming conventions
More date tests were added [Less]

LedgerSMB 1.2.6 released

LedgerSMB 1.2.6 has been released, correcting a number of bugs of various severity in past versions. It is generally recommended that all users upgrade to this version. (0 comments)

LedgerSMB 1.2.5 released

The LedgerSMB team is pleased to announce the release of LedgerSMB 1.2.5 which is available from the SourceForge download page.

This release includes major bugfixes for users of 1.000,00 and 1000,00
number formats. Users with these ... [More] number formats are urged to upgrade
as soon as possible.

The release also includes a number of UTF-related fixes. Users who
require umlauts, multibyte charaters, and accents should also upgrade.

Finally, this release includes a number of performance enhancements,
particularly for those with large databases.

Changelog for 1.2.5

Partsgroup handling corrected on POS and Sales invoice screens (Chris T)
Closed books handling is corrected (Chris T)
Corrected intermediate rounding issues involving sales tax (Chris T)
Fixed FX issue with posting cash transfers (Chris T)
Corrected multibyte handling in form generation (Seneca)
Corrected NaN issues in invoice printing (Seneca)
Corrected PO and order number searches not working (Chris T)
Corrected Exchange Rate display issue (CHris T)
Corrected number parsing issues with 1.000,00 formats (Chris T)
Corrected a number of date handling issues and added tests (Seneca)
Applied invoice performance patch from Ashley Gittins (Chris T)
Applied performance improvements to lastname_used (Chris T) [Less]

New Architecture Approach

Please note that this may be subject to change as we get more feedback from others.

I: Base Architecture Goals
=======================
The new architecture is designed to solve the following problems with the current ... [More] codebase:

1) Maintenance difficulty. The current codebase is quite unstructured and difficult to maintain. 1.2.x has already been a bit of a mess due to the issues of fixing something one place and having it break something else.

2) Interoperability difficulty. Currently interoperating with the codebase requires very brittle and opaque interfaces. We need to change this to allow for add-ons in different languages using a number of stable methods.

3) Ease of customization. Many vertical solutions require customizations to work effectively. The current software is not easy to customize.

2: Current Approach
=====================
We are refactoring the code along the lines of an MVC architecture. This architecture, however, is slightly different than other MVC implementations and hence we have decided not to use any framework and simply refactor code as appropriate.

A) Model: Unlike most MVC implementations, the model will be defined as much as possible in the database and methods will be implemented in stored procedures. A lightweight Perl wrapper will exist to allow us to dynamically discover these methods. Essentially, the ORM will be defined in the db.

The current proof of concept uses Perl's AUTOLOAD function which is not in line with best coding practices. We intend to replace this with Module::Compile as soon as we get that stable. That may not happen by 1.3, however, but it would allow for modules to compile themselves on first run after edit (and thus require fewer database calls and more functionality).

The in-db ORM will allow the entire data model of the application to be accessible to other components possibly written in other languages. Other implementations of the entire web software could easily be written in arbitrary languages (Java and Python have both been discussed), as well as add-on components.

B) View: The current approach to the is to support a non-default subset of Template Toolkit which is in line with XML, SGML, and HTML standards. This should allow for easier access to the templates in other languages due to our use of PI tags. More mature areas may be moved over to XSLT-based templates based on XML representation.

The second point of interoperability will also be through a view component: those of RESTful web services. Many or all objects in the system will have XML representations and these can be accessed using standard HTTP operations (GET, PUT, POST, etc).

C) Controller: The controller components will be light-weight workflow scripts automating the interaction of the user with the view and model components.

3: Stored Procedure Conventions
==========================
Stored procedures will be named according to the following convention of class_method (all lower case).

Stored procedures may use named arguments corresponding to object properties. Because PostgreSQL does not allow for arguments to have the same names as columns used, all named IN variables will be prefaced with in_. The model wrapper will discover these names, strip the prefix, and match with appropriate properties.

4: Why not use a framework like Catalyst?
==============================
Most MVC frameworks assume that the MVC components are broken down along specific lines which are not condusive to our goals. In particular the ORM layers do not work well with our approach.

In general, the consensus has been that these frameworks are the wrong tool for the job, that they add needless complexity, and that using them would create pressure to abandon our architecutral goals in favor of a single-language solution. In short, we have yet to be convinced that the added complexity would be worth it. [Less]

LedgerSMB 1.2.4 Released

The LedgerSMB team is pleased to announce the release of LedgerSMB 1.2.4 which is available from the SourceForge download page.

What's changed since 1.2.3 (click 'Read More' to see all):

Fixed internal functions avgcost() and ... [More] lastcost() to not use float
Fixed error posting vendor invoice with fraction costs
Fixed sales tax display issue on invoice/order entry screen
Fixed inconsistant error when setting to recur 0 times
Fixed Access Denied when sending email
Added Makefile.PL as optional means of dependency checking (experimental)
Updated INSTALL file to use correct globaldbh syntax
Updated UNGRADE file to recommend reading INSTALL first [Less]

LedgerSMB Talk Notes

Recently, I did a talk at the Greater Toronto Area LUG (GTALUG) on LedgerSMB (experiencing MySQL problems at time of posting, tsk-tsk, should have used PostgreSQL ;-). Since I'm not an accountant, the talk focused mostly on the history, architecture ... [More] and future of the project. Some of the folks at the talk asked if I could provide them with the slides that I used. Nothing fancy, just typical point-form talk stuff. I've uploaded it to the LedgerSMB site for anyone who is interested. [Less]

Roadmap

This document is an attempt to look at where we are going from here.
It may be helpful for people who wonder when certain features will be
rewritten.

1.3.0: New architecture developed

Customers/vendors replaced with ... [More] Companies/Contacts
--Employees rewritten(and Locations [of business] added)
Users rewritten
Settings/Defaults rewritten
Real user-level security with appropriate enforcement
Database-native user accounts, allowing for passing passwords
through to ActiveDirectory (or other LDAP system). Kerberos support
will not be included in this version though.

Revised template handling
--Logging and revised error handling
--RESTful web service interface

1.4.0: Financial transaction redesign

AR/AP invoices and transactions
GL transactions
Reports
Sales Orders, Purchase Orders, and Quotations
Price matrix
Breaking POS interface off into separate, separately maintained package.

1.5.0: More redesign aspects

Business types and Pricegroups
Warehouses
Departments and Budgets (may happen earlier)
Inventory management

2.0.0: Getting rid of the last SQL-Ledger code in LSMB. Moving
everything to the new architecture. [Less]

New SQL-Ledger Help Mailing List

For those still using SQL-Ledger we now have a mailing list specifically to help support SQL-Ledger users who might not be getting the support they need elsewhere.

From Chris Travers' list email:

One of our core developers, Chris ... [More] Murtagh, had his support account (for SQL-Ledger) cancelled by DWS Systems Inc, presumably due to his involvement in our project. He has informed us that his complaints
and requests for a refund have gone unanswered. We are forced to assume that others may be in the same position and so we are setting up a new support list to help bridge what may be a gap in support
options afforded by the developer of SQL-Ledger.

In response to this problem, we have decided to set up an email list aimed at providing SQL-Ledger help. The idea is that we can provide a safety net for people who have decided to give our project a try, and
perhaps even provide quality support. The support is intended to be transitional (i.e. until they can migrate to a current version of LedgerSMB), but any type of support will be available.

The list will be uncensored, but the Ubuntu code of conduct will be upheld. The Ubuntu code of contact can be found at http://www.ubuntu.com/community/conduct/

Please join us at: http://lists.ledgersmb.org/mailman/listinfo/sql-ledger-help

Best Wishes,
Chris Travers [Less]

LedgerSMB 1.2.2 released, 1.2.0/1 pulled

Due to serious issues found in 1.2.0 and 1.2.1, we have expedited the release of 1.2.2. This release corrects serious sales tax collection issues in 1.2.0. All users are advised to upgrade immediately. (0 comments)

LedgerSMB 1.2.0 Released

LedgerSMB 1.2.0 has been released. The RPM and tarball can be verified with the group GPG key available at http://www.ledgersmb.org/download/ledgersmb.pub-key.gpg

This release adds a large number of security and data integrity enhancements ... [More] to LSMB. It also adds an enhanced POS module, Slony-I support, gettext-based localization, a credit card processing framework (both card-present and card-not-present) and more. (0 comments) [Less]

LedgerSMB 1.1.12 released

LedgerSMB 1.1.12 has been released. It fixes the following issues:
1) Upgrade overwriting user authentication info,
2) Unable to generate sales orders from timecards. (0 comments)

LedgerSMB 1.2RC2 released

This release fixes a number of bugs relating to database access and dataset creation. Testers are encouraged to upgrade as soon as possible. (0 comments)

LedgerSMB 1.2.0 RC1 released

The LedgerSMB team is pleased to announce the first release candidate of the upcoming 1.2 series. This release offers better security and data integrity, Slony support, better POS support, and more. (0 comments)

1.1.8 Released

This release fixes a couple of bugs involving the template editor and sales order consolidation. This builds on the 1.1.5 security maintenance release and some of the bugs were introduced with the security fixes there. (0 comments)

LedgerSMB 1.2 Beta 1 released

The LedgerSMB development team is proud to announce the release of beta 1 of the next version of the software, 1.2. 1.2 will add many more features including support for card-present credit card processing, more POS hardware, and ... [More] more.

Localization is now done according to open standards and uses a far more robust framework. Beta 1 has been released first as a tarball, with .RPM releases to follow. Other packages are likely to be added as we move towards 1.2. (0 comments) [Less]