1 (edited by apmuthu 12/26/2014 10:07:07 am)

Topic: Non Field Data from tables into Reports

When we need extra parameters to be included into reports we generally extend the tables with extra fields that will break db schema compatibilities for upgrades. Instead, we add them as space separated key#value pairs into the relevant tables' notes field and partake of them within reports using the function listed herein.

@joe: please include it in any file that gets universally included into all reports.

Extra Parameters in Reports taken from formatted notes field

Include the following function into any report or it's includes:

/*
// Purpose: Function to parse a string into parameters
// Release Date: 2014-12-26
// Author: ApMuthu <apmuthu@usa.net>
// Usage:
$str = "PPFrt#2000 CID#6378465 TaxEx#2345-038 abcde ertrgdert COD#4253 jdegtd PIN#6473654";
$p = parse_notes_params($str);
echo print_r($p, true);
*/

function parse_notes_params($str, $sep=" ", $delim="#") {
    $str_params = explode($sep, $str);
    $param_array=Array('notes' => '');
    foreach ($str_params AS $str_param) {
        $param_set=explode($delim, trim($str_param));
        $key = (array_key_exists(0, $param_set) ? trim($param_set[0]) : '');
        $val = (array_key_exists(1, $param_set) ? trim($param_set[1]) : '');
        if (strlen($key) > 0 && strlen($val) > 0) {
            $param_array[$key]=$val;
        } else {
            // stop at first missing parameter set
            // break;
            // Collect the rest into notes
            $param_array['notes'] .= (" " .  $str_param);
        }
    }
    $param_array['notes'] = trim($param_array['notes']);
    return $param_array;
}

An example of usage will be in the reporting/rep110.php file at near the end just before the last $rep-Font(); statement:

    $notes_params = parse_notes_params($branch['notes']);
    if ($packing_slip == 0 && array_key_exists('CID', $notes_params)) {
        $rep->NewLine(1);
        $rep->TextCol(1, 7, "Old Customer# : " . $notes_params['CID'], - 2);
    }

Screenshot

Re: Non Field Data from tables into Reports

In my opinion, not a bad idea. I have asked Janusz to look at it also.

/Joe

3 (edited by apmuthu 12/26/2014 11:40:56 am)

Re: Non Field Data from tables into Reports

This way when we do actually include some specific fields like Person's Country Identity Number / SSN / NRIC etc / Tax Exemption Number (US) / Gender / Titular Addressing. etc., we can auto migrate them from the notes. The method stated suffers from not being able to accommodate spaces in the parameters whence some other separator values like "|" (vertical bar) can be used.

It will also help standardise every FA user's CoA to the same schema so that migration to v2.4 can be predictably smooth.

Re: Non Field Data from tables into Reports

This function will be implemented in release 2.4.

Thanks apmuthu.

/Joe

Re: Non Field Data from tables into Reports

It is actually important for v2.3 to avoid users needlessly extending tables in non-standardised manner making migration to v2.4 that much more cumbersome - yes enough work for consultants if that is what you wish to "support".

Re: Non Field Data from tables into Reports

I understand your point of view, however, doing this in 2.4 makes sense.
We are almost finished with 2.4. Testing it during these days.
This function has been included in the file /reporting/reporting.inc at the bery end.

Joe

Re: Non Field Data from tables into Reports

Thanks Joe. I've placed the code in my FAMods for now in the said file at reporting/includes/reporting.inc.

Re: Non Field Data from tables into Reports

Sorry for the wrong folder. Thanks.

Joe

Re: Non Field Data from tables into Reports

Yes, I see that it is now committed to the v2.4 unstable branch in the Hg repo.