You could also insert the URL as a QR code. There are libraries available to generate and insert them into TCPDF's output, but it might require changing the layout a bit. (I don't use FA's invoices, but I've done something quite similar elsewhere with FPDF.)

A more keyboard-friendly approach would be building a simple URL shortening and redirection service, but that would involve interfacing with a publicly accessible web server.

77

(9 replies, posted in Setup)

In that case you can disable the check in includes/session.inc

Look for the function preventHijacking() and comment out the lines

  if ($_SESSION['IPaddress'] != $_SERVER['REMOTE_ADDR'])
    return false;

I don't think you need to worry if all items have the same VAT rate, and that rate is shown along with the (total) net and VAT amounts somewhere on the page. (I'm just assuming it is. I don't use FA's invoices myself.)

According to section 5.1, you need to show "for each description, the quantity of the goods or the extent of the services, and the rate of VAT and the amount payable, excluding VAT, expressed in any currency". It doesn't actually mention the VAT amount, so I wouldn't bother.

79

(12 replies, posted in Report Bugs here)

Well... Just make it an unsigned TINYINT, then. That really should be enough for anybody. (I would have thought 7 bits would be enough, but...)

There is no reason to allow negative values for any "size", and it shouldn't affect data already stored in the database.

80

(12 replies, posted in Report Bugs here)

On my system (2.3.15) the query_size column is defined as a TINYINT, which is a signed 8 bit integer. So, 128 would indeed be outside its range.

Since mfaa98 didn't have this problem, I guess it's been fixed in a later version. Easiest solution would be upgrading. (I'm just waiting for the new year, before I do that.)

If that's not an option, I suggest you google "mysql alter table".

Not sure why you want subdomains, but assuming you want to provide access to different companies under different subdomains (client1.domain.tld, client2.domain.tld etc.) I think it would be best to install separate FA instances, configuring each with a separate database.

If you'd rather use one database with multiple companies, you should be able to point all the subdomains to the same FA instance and edit the login page to select the company based on the URL of the request. That would probably expose the other companies through the backup script, though. Not to mention the mess that you would face if one client decided to restore the entire database, overwriting whatever had been entered by the other clients.

For a really complicated solution, you might be able to share the code through some file system trickery, while keeping separate configuration files. But that would most likely end up being more confusing than anything else.

Unless you had enough clients/companies to justify the effort, I would go with separate instances.

Fair enough. Removing the space, your code becomes:

    $match = get_post ('dimension_id');
    $match = preg_replace ('/^\d+\s+/', '', $match);
    if (get_post('branch_id') != $match)
    {
        display_error(_("The Branch does not match the Dimension chosen."));
        set_focus ('dimension_id');
        return false;
    }

See if that works.

The obvious problem with that code is that you are replacing the matched section with a space, rather than an empty string.

If it's just a number followed by a space followed by the string you want to match, I would suggest a regex.

Substr() will fail when you get more than 9 (or 99 and so on) branches/dimensions, and the branch name moves further right in the string.

So just strip off something like [0-9]+\s+ (any number of digits followed by any amount of whitespace) from the start of the dimension string before comparing it to the branch string.

Could it be "la versión para España", perhaps?

Or as the thread title says, "Spanish(Spain) Translation (es_ES)"

Write permissions, perhaps?
https://frontaccounting.com/punbb/viewtopic.php?pid=18510#p18510

I suspect you're missing the php5-curl package.

88

(10 replies, posted in Report Bugs here)

I think you need to have curl installed to download files from the repo.

Check your phpinfo and ask the provider to install it if it's not there.

https://frontaccounting.com/punbb/viewtopic.php?pid=18394#p18394

I don't know of any module, but if you have a (machine readable) file from the bank, containing some identifier (invoice or reference number) which could be looked up and matched against a particular order, you could query the database and generate the required transactions automatically. Either through some API or directly against the database. There's a module to import CSV data, which I use to import sales figures through a curl session.

It seems to support importing deposits, but I don't know how (or if) it can be made to allocate the payments to invoices.

If you invoice your customers monthly, you should be able to conditionally insert a discount. It would require some programming, and to be more generally applicable you would need to keep track of an arbitrary number of rules, but I can't see any reason why it could not be done.

If there is a market, it would be an opportunity for someone with experience/understanding of FA modules.

You might want to have a look at
https://frontaccounting.com/punbb/viewtopic.php?id=4480

93

(15 replies, posted in Installation)

I have no idea now how I actually installed it, but I do remember it didn't feel very straightforward...

Looking at the "Install/Activate extensions" page, there is a dropdown at the top. If you select "Activated for <company>", you should be able to activate the extensions you have installed.

Once you do, I would expect it to be available in the access setup.

94

(15 replies, posted in Installation)

http://www.php.net/manual/en/function.is-dir.php says "If you have enabled safe mode, or open_basedir further restrictions may apply."

Could this be one of those restrictions?

95

(15 replies, posted in Installation)

I was wondering if there could be a problem with the path. Just what is the script's current directory when it tries to create "_init"?


http://www.php.net/manual/en/function.is-dir.php
http://php.net/manual/en/function.mkdir.php

96

(15 replies, posted in Installation)

The error suggests that the string passed to is_dir is not a valid path, but that doesn't make any sense. My best guess is a problem with permissions.

If it's not that, then I'd like to know what the offending string contains.

I think Elax is right, but you could script it using a daily cron job.

Query the database for overdue payments (or customers whose credit exceed the limit), and add or update an "interest" item with a percentage of the amount. Directly against the database, or using some suitable api. In the worst case you could always script a session using curl.

Logging the IP address does not hurt, but for users in a small office behind a NAT router connecting to a remote server (not at all an unlikely scenario) it does not help either. And in the case of dynamically assigned addresses, the log would need to be matched against the logs from the DHCP server. I'm not sure how many companies would even keep such a log.

As for duplicated sessions, the usual way to handle them is to destroy/invalidate the first when the second is created. That way a user can log on from home even if he left the office computer logged in. (FA does have a session timeout which allows this, as long as the value is not set too high.)

The answer is still to have one account per user. And hold the user responsible for anything done using that account.

But surely they have unique passwords?

Why not just give each user an account?