Additional note!!!! The balance is correct if I do not select "show also allocated" as Yes.

Just evaluating 2.4.16 to see if any of the problems my client is having have been fixed. I haven't yet dug into the code.

One problem my client was having was an incorrect balance on the customer statement that looks like it resulted from a journal entry (currently at 2.4.8). Looking at 2.4.16, the outstanding balance is something completely different, but still wrong. In both versions, the customer transactions show the correct outstanding balance, *AND* the statement debits and credits are correct. If you just add them up, you get the correct balance ... it is just the aging balance report at the bottom that is wrong.

The customer I'm looking at has journal transactions, sales (invoices) and normal payments against invoices. They have 3 outstanding, unpaid invoices for a total of $318, but the aging balance is $520 (?) In the previous version, it was $117 (?).

I'm going to take a deeper look, so I can file a proper bug report, but the most confusing thing about FA is the way it sums transactions with some amounts being reversed, etc. I'm just wondering if anyone else is seeing this problem?

I'm getting this error frequently with FA 2.4.8. The check_edit_conflicts() now has a different signature, and I haven't investigated exactly why this error is popping up, but it happens when I haven't even created an invoice in my session, and nobody else is logged in.

I'm just going to turn off edit checks, for now. When I get time, I might try to gather more diagnostic information.

(edit: I forgot to mention that I am using a CENTOS 7 Linux server running Apache and PHP 5.6)

It would help to know the URL that is reporting the error, the line from the server's error log, and the permissions assigned to the file and it's parent folder(s).

FrontAccounting escapes all values before storing them. If you are storing values directly, you should use the same escaping mechanism. It can create some serious problems if you have a limited char() or varchar() field and suddenly you can't fit a 10 character string in a 15 character field because the escaping expands some characters into 4.

Having said that, it's not going to change anytime soon, so you may have to adapt your code accordingly.


(21 replies, posted in Wish List)

You can customize any report by company. That is not a problem, but I don't think I completely understand the tiered pricing scenario you describe, but you can have some control over whether an item is sold at wholesale or retail, e.g.

Sorry, I'm not sure exactly what you're asking. It does sound a bit strange.


(21 replies, posted in Wish List)

I suggest you read the Wiki on the tax configuration for FA. It should be able to accommodate what you describe quite well.

First you would create all of the taxes that could be applied, with their respective rates and whether or not they apply to shipping.
Then you create tax groups that specify which taxes will be applied to that group. You can also create tax exempt groups.
Next, you set the tax group for each customer branch, so each type of customer may have their own tax configuration.

I hope I understood your question.


(8 replies, posted in Setup)

Just disregard this entire thread. I figured out how to access the install/update languages feature in FA and I used that. Now my reports are working, again. I wonder if there was something amiss in the language files you were kind enough to zip for me.

The generated PHP file is completely different.


(8 replies, posted in Setup)

Is the generated PHP file supposed to look like this? ...

return array(
    '' => 'Cannot update work orders costs:
    'Main  Menu' => '',
    'Logout' => '',
    'Restricted access' => '',
    'Login as user: demouser and password: password' => '',


(8 replies, posted in Setup)

I'm getting 4 calls to gettext_php_support->set_language() (trying to generate an invoice) as follows:

[17-Sep-2019 13:43:16 America/New_York] set_language(en_US,iso-8859-1)
[17-Sep-2019 13:43:17 America/New_York] set_language(en_US,ISO-8859-1)
[17-Sep-2019 13:43:18 America/New_York] set_language(en_US,ISO-8859-1)
[17-Sep-2019 13:43:18 America/New_York] set_language(,)


(8 replies, posted in Setup)

I guess I spoke too soon. When I put those files into my language folder, the system seems to hang/timeout at line 307 of includes/lang/

It just keeps returning to this block:

if (!$this->_lang_code) 
    $this->_jobs[] = array($domain, $path); 

and the value of $this->_jobs[] =

[17-Sep-2019 13:36:41 America/New_York] Array
    [0] => Array
            [0] => en_US
            [1] => ../lang

    [1] => Array
            [0] => en_US
            [1] => ../lang



(8 replies, posted in Setup)

Thank you!


(8 replies, posted in Setup)

On a related note: I'm not sure what would happen if I ran the install wizard over the top of an existing multi-company installation. I don't want to add any new companies or change any of my settings.

The upgrade guide makes no mention of language files. I cannot locate any download on Sourceforge that references language packs.

I apologize if I'm missing something obvious. I have searched my filesystem, read the Wiki and googled this.

I know this is a really basic issue, but I am continuously getting errors about en_US.po not found and I cannot find that file anywhere. It is not in the 2.4.7 distribution. It was in the 2.4.4 distro, but that one breaks 2.4.7.

It doesn't seem to be required for the system to function, but the tmp/errors.log just grows and grows.

Everything I've read says the the .mo file is the compiled version of the .po file and the .po file shouldn't be needed. I need clarification on this, please!


(3 replies, posted in Setup)

Thank you. I would not have looked there.


(3 replies, posted in Setup)

I discovered that I did not create an empty company, but I meant to. I had to clean out all of the sample transactions. I assume there is an option for leaving those out when creating a new company. I must have missed it.

Anyway, I cleared out all of the existing customer and transaction, inventory, etc. and entered the fiscal year into the database manually. I will need to repeat this process several times, so I hope I can figure out how to create a clean/empty company.


(3 replies, posted in Setup)

I've read the Wiki. Maybe I'm missing something obvious, but there should be a way for me to configure the fiscal year on a new company without going into the database and manipulating records.

Here is the situation:
After installing a new company with 2.4.7, I have 2 fiscal years that are 1/1/2018 to 12/31/2018 and 1/1/2019 to 12/31/2019.
If I select 2018 as my current fiscal year, I can't delete 2019 because 2018 exists.
If I select 2019 as my current fiscal year, I can't delete 2019 because it's the current fiscal year.
If I try to create the current fiscal year (10/1/2018 - 09/30/2019), I cannot, because it overlaps with an existing fiscal year.

So, I cannot create the fiscal year I need, and I cannot remove the 2 stupid entries that were blindly put there for me by the setup script.

The company has no transactions. It should not care if I delete and add fiscal years.

Yes, I can go under the covers and fix this, but I should not have to.

Reconciling an account involves accounting for outstanding items. I'm not sure where exactly the problem lies?

You reconcile the items on the statement expecting to reach the balance on the statement, then you add/subtract outstanding items to get to the current balance you will carry forward.

If I understand what you are saying, your balance carried forward should account for transactions in the previous period. You should have reconciled the earlier transactions in the previous system before you determined the opening balance for FA, so you should only have to reconcile transactions that occur after the switch.

There is no way to reconcile transactions that aren't in the system.


(2 replies, posted in FA Modifications)

It's a hack that may require extra permissions to work, but without it, the restore always fails if there are views, because the 2.4.7 code treats views like tables. I would think if a user is savvy enough to create views (which would break the backup/restore), they would make sure they have permission to create them. smile

I'm accessing some FA data from outside of FA, so the views allow me to abstract some of the complexities in FA and hide them from the external function.

Anyway, the purpose of this reply is to tell you that I don't know how to submit code changes for FA.

The way I check to be sure on those things is I make a database backup, change something, make another backup, and diff the two backups to be sure there is nothing I missed.

In this case, you're not generating transactions that have all sorts of side effects, like stock-moves, GL entries, etc.

That is correct. Were you expecting it to update previous transactions?


(2 replies, posted in FA Modifications)

I created a view to simplify my SQL and discovered that views are not supported in the 2.4.7 backup utility, so I coded in generic support for backing up and restoring views.

I made changes in /admin/include/db/ and in /includes/db/

I don't know if my changes are generally useful, since FA seems to avoid views. If my changes are useful to anyone else, please let me know how/where I can post the changes.

p.s. The changes are pretty trivial and they are isolated to the backup/restore functions.

I spoke too soon on my previous answer. It appears, in FA 2.4.7, if you leave the branch billing address blank, the invoice will use the customer billing address on the invoice.
The only thing I don't see how to change is the branch name still appears above the customer billing address, but if the branch name is the same as the company name that may not be a problem.

If I understand what you're asking, you're wanting the company's billing address on the invoice regardless of which branch is selected?
As far as I can tell, you would need to change the invoice header format. The name and address that is pulled into the invoice data record in debtor_trans is from the selected branch. Maybe that could be an option in the future, to always bill to the customer address, but without a code change, I'm pretty sure the header format is your only option. You might have to call a function to get the customer address based on the debtor_no in the invoice, but it could be done.