551

(13 replies, posted in FA Modifications)

You can simply copy and paste it in Excel and take Print out.

From mobile the Line Item is not being added.

Its a good attempt to make whole theme Responsive. However since data feeding is usually done through desktop the desktop view shall be more Accountant Friendly.

There shall be table lines in different views. The columns shall be aligned properly i.e the data and heading shall either both be right aligned or left aligned.

If the space between rows in UI is reduced then it will be much better because instead of scrolling its good to see whole data entry form in visual area of window (desktop )

The login screen, dashboard is awesome. Menu style is good

The dashboard sections shall also be linked with security roles so that not all users can see all sections

553

(13 replies, posted in FA Modifications)

I think without an option the Group Total shall be available. For Quick Account Overview we need Group Total as well.

What is the solution to it? Temporarily I just commented following line before Continue;

if (check_value('Active'.$i) && !check_src_ext_version($ext['version']))
            {
                display_warning(sprintf(_("Package '%s' is incompatible with current application version and cannot be activated.\n")
                    . _("Check Install/Activate page for newer package version."), $ext['name']));
                //continue;
            }

But that should not be the solution. Kindly help.

After I commented this the extension is installed and working also.

555

(13 replies, posted in FA Modifications)

With Few modification we can have Group Total in Trial Balance. This is very needful in analyzing groups. Below is the code

<?php
/**********************************************************************
    Copyright (C) FrontAccounting, LLC.
    Released under the terms of the GNU General Public License, GPL,
    as published by the Free Software Foundation, either version 3
    of the License, or (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
$page_security = 'SA_GLANALYTIC';
$path_to_root="../..";

include_once($path_to_root . "/includes/session.inc");

include_once($path_to_root . "/includes/ui.inc");
include_once($path_to_root . "/includes/date_functions.inc");
include_once($path_to_root . "/admin/db/fiscalyears_db.inc");
include_once($path_to_root . "/includes/data_checks.inc");

include_once($path_to_root . "/gl/includes/gl_db.inc");

$js = "";
if (user_use_date_picker())
    $js = get_js_date_picker();

page(_($help_context = "Trial Balance"), false, false, "", $js);

$k = 0;
$pdeb = $pcre = $cdeb = $ccre = $tdeb = $tcre = $pbal = $cbal = $tbal = 0;

//----------------------------------------------------------------------------------------------------
// Ajax updates
//
if (get_post('Show'))
{
    $Ajax->activate('balance_tbl');
}


function gl_inquiry_controls()
{
    $dim = get_company_pref('use_dimension');
    start_form();

    start_table(TABLESTYLE_NOBORDER);

    $date = today();
    if (!isset($_POST['TransToDate']))
        $_POST['TransToDate'] = end_month($date);
    if (!isset($_POST['TransFromDate']))
        $_POST['TransFromDate'] = add_days(end_month($date), -user_transaction_days());
    date_cells(_("From:"), 'TransFromDate');
    date_cells(_("To:"), 'TransToDate');
    if ($dim >= 1)
        dimensions_list_cells(_("Dimension")." 1:", 'Dimension', null, true, " ", false, 1);
    if ($dim > 1)
        dimensions_list_cells(_("Dimension")." 2:", 'Dimension2', null, true, " ", false, 2);
    check_cells(_("No zero values"), 'NoZero', null);
    check_cells(_("Only balances"), 'Balance', null);

    submit_cells('Show',_("Show"),'','', 'default');
    end_table();
    end_form();
}

//----------------------------------------------------------------------------------------------------

function display_trial_balance($type, $typename)
{
    global $path_to_root, $SysPrefs,
         $k, $pdeb, $pcre, $cdeb, $ccre, $tdeb, $tcre, $pbal, $cbal, $tbal;

    $printtitle = 0; //Flag for printing type name

    $k = 0;

    //Get Accounts directly under this group/type
    $accounts = get_gl_accounts(null, null, $type);

    $begin = get_fiscalyear_begin_for_date($_POST['TransFromDate']);
    if (date1_greater_date2($begin, $_POST['TransFromDate']))
        $begin = $_POST['TransFromDate'];
    $begin = add_days($begin, -1);

    $Apdeb=$pdeb;
        $Apcre=$pcre;
        $Acdeb=$cdeb;
        $Accre=$ccre;
        $Atdeb=$tdeb;
        $Atcre=$tcre;
        $Apbal=$pbal;
        $Acbal=$cbal;
        $Atbal=$tbal;


    while ($account = db_fetch($accounts))
    {
        //Print Type Title if it has atleast one non-zero account
        if (!$printtitle)
        {
            start_row("class='inquirybg' style='font-weight:bold'");
            label_cell(_("Group")." - ".$type ." - ".$typename, "colspan=8");
            end_row();
            $printtitle = 1;
        }

        // FA doesn't really clear the closed year, therefore the brought forward balance includes all the transactions from the past, even though the balance is null.
        // If we want to remove the balanced part for the past years, this option removes the common part from from the prev and tot figures.
        if (@$SysPrefs->clear_trial_balance_opening)
        {
            $open = get_balance($account["account_code"], $_POST['Dimension'], $_POST['Dimension2'], $begin,  $begin, false, true);
            $offset = min($open['debit'], $open['credit']);
        } else
            $offset = 0;

        $prev = get_balance($account["account_code"], $_POST['Dimension'], $_POST['Dimension2'], $begin, $_POST['TransFromDate'], false, false);
        $curr = get_balance($account["account_code"], $_POST['Dimension'], $_POST['Dimension2'], $_POST['TransFromDate'], $_POST['TransToDate'], true, true);
        $tot = get_balance($account["account_code"], $_POST['Dimension'], $_POST['Dimension2'], $begin, $_POST['TransToDate'], false, true);
        if (check_value("NoZero") && !$prev['balance'] && !$curr['balance'] && !$tot['balance'])
            continue;
        alt_table_row_color($k);

        $url = "<a href='$path_to_root/gl/inquiry/gl_account_inquiry.php?TransFromDate=" . $_POST["TransFromDate"] . "&TransToDate=" . $_POST["TransToDate"] . "&account=" . $account["account_code"] . "&Dimension=" . $_POST["Dimension"] . "&Dimension2=" . $_POST["Dimension2"] . "'>" . $account["account_code"] . "</a>";

        label_cell($url);
        label_cell($account["account_name"]);
        if (check_value('Balance'))
        {
            display_debit_or_credit_cells($prev['balance']);
            display_debit_or_credit_cells($curr['balance']);
            display_debit_or_credit_cells($tot['balance']);

        }
        else
        {
            amount_cell($prev['debit']-$offset);
            amount_cell($prev['credit']-$offset);
            amount_cell($curr['debit']);
            amount_cell($curr['credit']);
            amount_cell($tot['debit']-$offset);
            amount_cell($tot['credit']-$offset);
            $pdeb += $prev['debit'];
            $pcre += $prev['credit'];
            $cdeb += $curr['debit'];
            $ccre += $curr['credit'];
            $tdeb += $tot['debit'];
            $tcre += $tot['credit'];
        }
        $pbal += $prev['balance'];
        $cbal += $curr['balance'];
        $tbal += $tot['balance'];
        end_row();
    }

    //Get Account groups/types under this group/type
    $result = get_account_types(false, false, $type);
    while ($accounttype=db_fetch($result))
    {
        //Print Type Title if has sub types and not previously printed
        if (!$printtitle)
        {
            start_row("class='inquirybg' style='font-weight:bold'");
            label_cell(_("Group")." - ".$type ." - ".$typename, "colspan=8");
            end_row();
            $printtitle = 1;

        }
        display_trial_balance($accounttype["id"], $accounttype["name"].' ('.$typename.')');
    }

    //added by faisal for group total

    if (!check_value('Balance'))
    {
        start_row("class='inquirybg' style='font-weight:bold'");
        label_cell(_("Total") ." - ".$typename, "colspan=2");

        amount_cell($pdeb-$Apdeb );
        amount_cell($pcre-$Apcre);
        amount_cell($cdeb-$Acdeb );
        amount_cell($ccre-$Accre );
        amount_cell($tdeb-$Atdeb );
        amount_cell($tcre-$Atcre);
        end_row();
    }
    else
    {
    start_row("class='inquirybg' style='font-weight:bold'");
    label_cell(_("Total") ." - ".$typename , "colspan=2");
    display_debit_or_credit_cells($pbal-$Apbal);
    display_debit_or_credit_cells($cbal-$Acbal );
    display_debit_or_credit_cells($tbal-$Atbal);
    end_row();
    }
     //end by faisal for group total
}

//----------------------------------------------------------------------------------------------------

gl_inquiry_controls();

if (isset($_POST['TransFromDate']))
{
    $row = get_current_fiscalyear();
    if (date1_greater_date2($_POST['TransFromDate'], sql2date($row['end'])))
    {
        display_error(_("The from date cannot be bigger than the fiscal year end."));
        set_focus('TransFromDate');
        return;
    }
}
div_start('balance_tbl');
if (!isset($_POST['Dimension']))
    $_POST['Dimension'] = 0;
if (!isset($_POST['Dimension2']))
    $_POST['Dimension2'] = 0;
start_table(TABLESTYLE);
$tableheader =  "<tr>
    <td rowspan=2 class='tableheader'>" . _("Account") . "</td>
    <td rowspan=2 class='tableheader'>" . _("Account Name") . "</td>
    <td colspan=2 class='tableheader'>" . _("Brought Forward") . "</td>
    <td colspan=2 class='tableheader'>" . _("This Period") . "</td>
    <td colspan=2 class='tableheader'>" . _("Balance") . "</td>
    </tr><tr>
    <td class='tableheader'>" . _("Debit") . "</td>
    <td class='tableheader'>" . _("Credit") . "</td>
    <td class='tableheader'>" . _("Debit") . "</td>
    <td class='tableheader'>" . _("Credit") . "</td>
    <td class='tableheader'>" . _("Debit") . "</td>
    <td class='tableheader'>" . _("Credit") . "</td>
    </tr>";

echo $tableheader;

//display_trial_balance();

$classresult = get_account_classes(false);
while ($class = db_fetch($classresult))
{
    start_row("class='inquirybg' style='font-weight:bold'");
    label_cell(_("Class")." - ".$class['cid'] ." - ".$class['class_name'], "colspan=8");
    end_row();

    //Get Account groups/types under this group/type with no parents
    $typeresult = get_account_types(false, $class['cid'], -1);
    while ($accounttype=db_fetch($typeresult))
    {
        display_trial_balance($accounttype["id"], $accounttype["name"]);
    }
}

    if (!check_value('Balance'))
    {
        start_row("class='inquirybg' style='font-weight:bold'");
        label_cell(_("Total") ." - ".$_POST['TransToDate'], "colspan=2");
        amount_cell($pdeb);
        amount_cell($pcre);
        amount_cell($cdeb);
        amount_cell($ccre);
        amount_cell($tdeb);
        amount_cell($tcre);
        end_row();
    }
    start_row("class='inquirybg' style='font-weight:bold'");
    label_cell(_("Ending Balance") ." - ".$_POST['TransToDate'], "colspan=2");
    display_debit_or_credit_cells($pbal);
    display_debit_or_credit_cells($cbal);
    display_debit_or_credit_cells($tbal);
    end_row();

    end_table(1);
    if (($pbal = round2($pbal, user_price_dec())) != 0 && $_POST['Dimension'] == 0 && $_POST['Dimension2'] == 0)
        display_warning(_("The Opening Balance is not in balance, probably due to a non closed Previous Fiscalyear."));
    div_end();

//----------------------------------------------------------------------------------------------------

end_page();

May be changing following line create correct result.

//if (($no_zeros && floatcmp($trans['TotalAmount'], $trans['Allocated']) == 0)) continue;
if ($no_zeros && $show_balance && $trans['TotalAmount']== 0) continue;
if (($no_zeros && !$show_balance && floatcmp($trans['TotalAmount'], $trans['Allocated']) == 0)) continue;

If a customer transaction is not fully allocated (partially allocated), Selecting
Suppress Zeros to Yes And
Show Balances to Yes

in Customer Balances Report is giving a misleading Customer Net Balance.

Ideally Suppress Zero shall Suppress only Voided Transactions from the Report But Since it is also removing Fully Settled Transactions, the running balance is not revealing correct final balance if Show Balance is Set to Yes

For Better Understanding you may check Customer Balance of 4 Dimension in the following system

fa.boxygen.biz/fa2325

id: admin
pass: Pakistan1947
company: gp

558

(6 replies, posted in Report Bugs here)

I have located. The bug is due to one of my extension. Thanks for input

559

(6 replies, posted in Report Bugs here)

Further If you create more invoices it is allocating wrong Delivery Numbers.

560

(6 replies, posted in Report Bugs here)

Yes this is my (Boxygen) clients data.

561

(6 replies, posted in Report Bugs here)

And If you check in Customer Transaction Inquiry After Invoice Number 420 All INvoices View are showing wrong Delivery Numbers

562

(6 replies, posted in Report Bugs here)

Please check this link

http://fa.boxygen.biz/fa2325/sales/view/view_invoice.php?trans_no=643&trans_type=10

id: admin
pass: frontaccounting

In Deliveries you will find 348. But this Delivery is a voided delivery. How is this allocated to this invoice.

The Actual Delivery to this invoice is 643.

The Order Number for this Transaction is 646

How this could happen.

Once Activated URDU the Urdu Text is shown as ????????? in Fields.

A little modification to rep301 is needed.

Replace lines from 209-218 with following lines

$UnitCost = getAverageCost($trans['stock_id'], $location, $date);
$ItemTotal = $trans['QtyOnHand'] * $UnitCost;

Hence now no need of $use_costed_values in config.php

565

(24 replies, posted in Installation)

apmuthu wrote:

This error has been sorted out in FA 2.4.1+ in this commit.

How can I follow each commit in main FA Repo?

566

(24 replies, posted in Installation)

OK which version of php and xampp will support 2.3.25?

567

(24 replies, posted in Installation)

That worked for installation but after installation same error appeared when running the application. Then I made the similar changes in includes/session.inc. I changed with below code

wrote:

include_once($path_to_root . "/includes/current_user.inc");
  include_once($path_to_root . "/boxygen.php");
  include_once($path_to_root . "/admin/db/security_db.inc");
  include_once($path_to_root . "/includes/lang/language.php");
  include_once($path_to_root . "/config_db.php");
  include_once($path_to_root . "/includes/ajax.inc");
  include_once($path_to_root . "/includes/ui/ui_msgs.inc");
  include_once($path_to_root . "/includes/prefs/sysprefs.inc");
 
include_once($path_to_root . "/includes/errors.inc");
// colect all error msgs
set_error_handler('error_handler' /*, errtypes */);

It worked but it gives following notice 6 times

wrote:

Notice: Trying to get property of non-object in C:\xampp\htdocs\fa241\includes\errors.inc on line 74


The Same I tried with FA2325 but during installation following error is showing

wrote:

Your PHP has to have MySQL extension enabled.

568

(24 replies, posted in Installation)

I am receiving the same error on Windows Installation for FA2.4.1 and XAMP 3.2.2 and PHP Version 7.05 and Windows Version 64-Bit. Any ideas?

I have gone through the post mentioned above and Uncommented following line on session.inc as suggested in the final post.

ini_set('session.save_path', dirname(__FILE__).'/../tmp/');

But still the problem is not resolved.

Hello I need help on this

You can't restrict backdated entry for any user. However with little modification in Journal Inquiry to search it via Entry Date Instead of Transaction Date you can have a monitoring over it.

571

(9 replies, posted in Announcements)

@joe, I have some custom modifications in FA 2.4 RC1. Is it possible to know exactly which files have been changed from 2.4 RC to 2.4.1 so that my custom modification remains intact.

Great Work FA Team

What do you mean by Standard FA. Is there any Premium FA as well?

I am trying to create a custom report for inventory conversion.

I added a parameter in custom report as below

global $reports;


            $reports->addReport(RC_INVENTORY, '_inventory_conversion', _('Invetory Conversion'),
                array(    _('Start Date') => 'DATEBEGINM',
                        _('End Date') => 'DATEENDM',
                        _('Inventory Category') => 'CATEGORIES',
                        _('Location') => 'LOCATIONS',
                        _('Sales Folk') => 'SALESMEN',
                        _('Conversion UOM') => 'UOM',
                        _('Show Service Items') => 'YES_NO',
                        _('Comments') => 'TEXTBOX',
                        _('Orientation') => 'ORIENTATION',
                        _('Destination') => 'DESTINATION'));

The new Parameter is UOM

Then I added following lines in reports_classes.inc

case 'UOM':
                        return stock_units_list(_('Units of Measure:'), 'units', null);

But When I try to run report it gives following error


Unknown report parameter type:UOM
D:\xampp\htdocs\boxygen\includes\ui\ui_msgs.inc:14:    trigger_error('Unknown report parameter type:UOM','256')
D:\xampp\htdocs\boxygen\reporting\includes\reports_classes.inc:153:    display_error('Unknown report parameter type:UOM')
D:\xampp\htdocs\boxygen\reporting\includes\reports_classes.inc:103:    (BoxReports Object)->getOptions((Array[10]),'_inventory_conversion')
D:\xampp\htdocs\boxygen\reporting\reports_main.php:530:    (BoxReports Object)->getDisplay()

Please see the screen shot

See Error

What am I missing?

574

(25 replies, posted in Reporting)

Thanks @apmuthu it worked.

It shall be GROUP BY ".TB_PREF."debtors_master.debtor_no

Its my pleasure. Thanks for giving us such a rich platform.