@joe: This would be a nice integration if well done as no jquery or other heavy libraries are used.

Standard recommended versions for FA 2.4.x are PHP => 5.3.x to 5.6.x , MySQL 5.0 to 5.6
Although PHP 7.x has been used too, some ini settings may need tweaking. MySQL 5.7+ will need to have zero dates and times made acceptable with strict mode being disabled.

Duplicate references generation is addressed in this post.

@itronics: An example of "separate identifier for every user" would be useful. Otherwise, all would have to wade thru the code for it. This may be explained in the Wiki. The following lists the possibilities.

Lines 55-66 in includes/references.inc:

$refline_placeholders = array(
    'MM' => 'date',
    'YY' => 'date',
    'YYYY' => 'date',
    'UU' => 'user',
     'P' => 'pos',
//     FIXME:  for placeholders below all the code should work, but as the ref length is variable,
//       length specification in placeholder format should be implemented.
//    'C' => 'customer',
//    'B' => 'branch',
//    'S' => 'supplier',
//    'L' => 'location'

Lines 302-332:

        $regex = preg_replace(
            array(
                '/\\\{/',    // unquote placeholders
                '/\\\}/',
                '/\{MM\}/',
                '/\{YY\}/',
                '/\{YYYY\}/',
                '/\{C\}/',
                '/\{B\}/',
                '/\{S\}/',
                '/\{L\}/',
                '/\{UU\}/',
                 '/\{P\}/',
                '/\{\d+}/',
            ),
            array(
                '{',
                '}',
                $month,
                $year2,
                $year4,
                $cust,
                $branch,
                $supp,
                $location,
                $user,
                 $pos,
                '\d+',
            ), $regex);

        $regex = '"^'.$regex.'"i';

1,329

(14 replies, posted in Setup)

When multiple fiscal years remain open or get opened, the Company Setup must have it's current fiscal set to that in which transactions need to be entered / updated.

1,330

(40 replies, posted in Modules Add-on's)

The said variable is defined in config.php:

$comp_path = $path_to_root.'/company';

Line 11 in repgen_print.php includes session.inc which in turn includes the sysprefs.inc file in line 374 which in turn includes the config.php file above in line 31 which assigns the needed value to $comp_path.

Attached is the fully fixed extension from my repo.

1,331

(40 replies, posted in Modules Add-on's)

There appears to be nothing wrong with the existing line 19:

$file =  $comp_path.'/'.user_company(). '/pdf_files/'.$id.'.pdf';

There has been a couple of commits (1, 2) to rectify this error after the FA v2.4.5 release. Upgrade to FA 2.4.6 and all should be well.

If the $dim is acquired within the code, must it be declared global?
As $dim is declared global, is it necessary to acquire it again (I have disabled re-acquiring it in my commit).

The official repo has not yet been refreshed.

Retaining the same version and build numbers of the official extensions as of now, my unofficial repo has been updated.

That's probably the final commit in FA related repos for now in this year. Happy New Year ahead to all FA Members and their families.

@anoopmb: The changed files zip is a dead link.

1,335

(216 replies, posted in Modules Add-on's)

He means to have a location field for each employee for reporting purposes.

1,336

(4 replies, posted in FA Modifications)

Have you seen the ajax search box means of choosing an item, supplier or customer by using the appropriate checkboxes in the company setup form? Similar paged lists are also available for items, suppliers and customers in some other forms on pressing the search icon (magnifying glass) beside those fields.

1,337

(5 replies, posted in Setup)

The only place in the current FA 2.4.x that the said $HTTP_RAW_POST_DATA variable is used is in includes/JsHttpRequest.php twice in line 263.

@joe: any changes envisaged? If so, would it break older installs?

There is nothing in the codebase during the Nov commits that should generally invoke such a situation. Did the hosting provider change the PHP/MySQL versions? What are your current PHP/MySQL versions? Also check if the next reference number is really the next reference number in your DB tables, if not make it accordingly.

1,339

(2 replies, posted in Dimensions)

Thanks for the explanation.

1,340

(1 replies, posted in FA Modifications)

These tests can be a separate project instead of integrating with the core as it will be used by developers only. Thanks @cambell for your offerings and keep up the good work. Hope the current release tests well.

1,341

(2 replies, posted in Dimensions)

@braathwaate has a commit in his fork that incorporates Dimensions into payments.
@joe: can vet and see if it can be included in the core.

@braathwaate's commits that partakes of his custom functions are also worth a look.

1,342

(2 replies, posted in Announcements)

Attached is the set of changed files between FA 2.4.5 and FA 2.4.6.

1. SF zip Snapshot of the Release.
2. SF Release from Kent Mirror
MD5: 24b531463579a2aea5e840c97cddb81991c54253
Size: 1,574,175 bytes

JAN (Japanese Article Numbering) is another name for the EAN-13 barcode. The first two digits - the country code - must be 45 or 49 (Japan).

Upgrade notes:
1. New translation string GL # in your language
2. Index of your Exchange Rate Provider in config.php file if synched to the new config.default.php file may need to be changed.

First 2 day SF download stats shows UK, followed by India and then Indonesia. Singapore clocked 192 downloads on 2018-12-27 (and Pakistan 27 on 2019-01-09) at SF which is clearly an aberration to skew results and needs to be deducted from date range results that encompass it.

Unresolved issues hitherto are at this post.

CODE128 supports the entire ASCII set (Type B has lower and upper case as well) and would be useful if a mere character check is inculcated till a complete induction occurs. Also choice of Barcode Type may be included in the sys_prefs table. That would ofcourse preclude the use of multiple types of Barcodes in the same company.

The above test will fail if CODE128 or those other than the leading ones like EAN% and UPC% are checked since the foreach() traverses the array in order of the array elements. The earliest "true" when returned may not be right!

Whilst testing is in progress, a flag to suppress Barcode validation may be preferred.

The following should do the trick:

include $path_to_root."reporting/includes/barcode.php";

function is_valid_barcode($code, $type) {
    $barcode = new TCPDFBarcode($code, $type);
    $chk = $barcode->getBarcodeArray();
    return ($chk !== false);
}

The possible barcode types that tcpdf supports in FA are:

$barcode['C39']['name']     = 'CODE 39';
$barcode['C39+']['name']    = 'CODE 39 with checksum';
$barcode['C39E']['name']    = 'CODE 39 EXTENDED';
$barcode['C39E+']['name']   = 'CODE 39 EXTENDED with checksum';
$barcode['I25']['name']     = 'Interleaved 2 of 5';
$barcode['C128A']['name']   = 'CODE 128 A';
$barcode['C128B']['name']   = 'CODE 128 B';
$barcode['C128C']['name']   = 'CODE 128 C';
$barcode['EAN2']['name']    = '2-Digits UPC-Based Extension';
$barcode['EAN5']['name']    = '5-Digits UPC-Based Extension';
$barcode['EAN8']['name']    = 'EAN 8';
$barcode['EAN13']['name']   = 'EAN 13';
$barcode['UPCA']['name']    = 'UPC-A';
$barcode['UPCE']['name']    = 'UPC-E';
$barcode['POSTNET']['name'] = 'POSTNET';
$barcode['CODABAR']['name'] = 'CODABAR';

1,345

(11 replies, posted in Reporting)

Updated the Wiki with the screenshots.

Whilst the Suppliers Trial Balance Report has a hot key (T), the Customer Trial balance Report does not have any. Also naming styles (plurals) can be standardised.

A recent commit restricts BarCodes to be generated only if the stock_id is an integer.

This was done since the Barcode generation routine generated errors on malformed input as a stop-gap arrangement since the auto generation of Barcode stock_id was restricted to a random / sequential available number.

The file /reporting/includes/barcodes.php manages Barcode generation and is taken from the TCPDF Library.

In the said library above, each type of barcode is properly generated with the appropriate methods listing the valid ASCII codes and size range / limits along with check-digit computations and verification where enabled.

The following links in reference are in order:
1. Make BarCode
2. BarCode Resource
3. Keyence

Clearly, the stock_id and item_code fields are VARCHAR in the FA DB and several BarCode formats support alphanumeric characters (CODE128, Codabar, etc) and some even symbols too.

Currently available libraries:
1. A Zend Library Validation of BarCode "code" input is also available.
2. A JavaScript Validation of a few barcode formats are available here.

The need now is to hammer out a function to validate the stock_id before allowing the generation of the barcode in pure PHP without external dependancies so that errors don't get generated while doing so during generation.

Any suggestions?

Blindly suppressing all errors during Barcode generation and leaving it blank when not possible to generate on for whatever reason is a simplistic but effective choice for many.

1,347

(4 replies, posted in Announcements)

Unresolved issues:

1. Older issues that still remain unresolved are at this post.
2. Items Commit issue - Problem in View of an already Created Item whose Code is Same as that of any GL Code.
3. Barcode of stock_id restricted to integers as a stop gap arrangement discussed in this post. This is as of the commit on 2018-12-22.

1,348

(52 replies, posted in Modules Add-on's)

The id field of the 0_item_codes table is the Primary Key that can be used instead of the stock_id or the item_code field for linking into the additional fields extension's tables.

1,349

(52 replies, posted in Modules Add-on's)

The following is all you will need:

CREATE TABLE `0_addlflds` (
  `FldName` varchar(30) NOT NULL,
  `TblName` enum('Customers','Suppliers','Items') NOT NULL,
  `FldType` enum('Text','Number','Date','DateTime','TimeStamp','Bool') NOT NULL,
  `FldSize` varchar(255) NOT NULL,
  `FldUIType` enum('EditBox','SelectBox','TextArea','Password','CheckBox','Radio','MultiSelect') NOT NULL,
  `FldUIChoices` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`FldName`)
) ENGINE=InnoDB;

CREATE TABLE `0_addlfld_values` (
  `TblPKid` int(10) unsigned NOT NULL,
  `FldName` varchar(30) NOT NULL,
  `FldVal` varchar(255) NOT NULL,
  PRIMARY KEY (`TblPKid`,`FldName`)
) ENGINE=InnoDB;

1,350

(52 replies, posted in Modules Add-on's)

Included in my unofficial repo for FA 2.4.x extensions.

Cut down on the number of extra tables. Keep just one table for all lookup value tables. Can also use json stored in single field for it as well.