Great work
2 10/23/2024 06:31:57 am
Re: Experiencing frequent and unexpected logouts from the application (3 replies, posted in Setup)
In session.inc comment out following lines
function preventHijacking()
{
if (!isset($_SESSION['IPaddress']) || !isset($_SESSION['userAgent']))
return false;
// if ($_SESSION['IPaddress'] != $_SERVER['REMOTE_ADDR'])
// return false;
// if ( $_SESSION['userAgent'] != @$_SERVER['HTTP_USER_AGENT'])
// return false;
return true;
}
3 06/29/2024 06:20:51 pm
Re: DB-referential integrity (1 replies, posted in Setup)
Yes you can use Foreign Keys.
FA uses Foreign Keys but not at DB Level.
The referential Integrity is maintained through Code
4 04/20/2024 04:32:52 am
Topic: Returning Ajax Failure on Add Item (3 replies, posted in Report Bugs here)
https://github.com/FrontAccountingERP/FA/commit/6c40a3be4a79826087d7abbdd11b483f19decc2a
This latest commit is returning Ajax Failure on Add Item.
I tested this on one of my installations where some clients have more that 1000 sales orders.
This updated query is taking too long to return stk_code and hence the Ajax is failing and Add Items not working.
5 03/30/2024 02:28:19 am
Re: Screen Refresh Issue (2 replies, posted in Accounts Payable)
Hello brothers,
Does anyone else face same issue?
The Ajax call reloads the page and all data is lost.
One of my client he transfers stock in bulk to another store. May be 50 plus items.
After 10-15 items the page reloads due to Ajax call when we add item
6 11/23/2023 07:03:21 am
Topic: Screen Refresh Issue (2 replies, posted in Accounts Payable)
At one of my installations I am facing a severe issue.
My client's Purchase Invoice contains a lot of Line Items.
Its happening that sometimes maybe (1 out of 10) when he enter any line item or when he press Process Invoice upon Ajax Call the Page gets refresh without saving the data. Hence the whole cart vanishes and it creates a lot of frustration with users.
Has anyone else faced this issue.
How to rescue this?
7 11/15/2023 04:14:19 am
Re: Encountering issues with modules and updates (2 replies, posted in Report Bugs here)
Actually modules are not the part of core releases. They are maintained in non official repos. Just check BraathWate repo on Github
8 11/15/2023 04:04:05 am
Re: Better sql construct in sales/includes/db/sales_order_db.inc (3 replies, posted in Accounts Receivable)
Thanks
9 11/15/2023 04:02:48 am
Re: Adding delivery-date for each item in sales-invoice (1 replies, posted in FA Modifications)
Why are you not using multiple deliveries against sales order and then merge deliveries on sales invoice?
10 11/15/2023 03:59:41 am
Re: Improvements to FA (3 replies, posted in Wish List)
Thanks
Keep sharing
11 09/22/2023 08:03:25 pm
Re: Issue With Cors in API Module (3 replies, posted in Modules/Add-on's)
I think it is built on react technology so the guy needs to access the API through browser. The CORS error is specific with browser and not with POSTMAN.
Your second point I couln't get. The above mentioned gihub link for module for API is on SLIM3 or SLIM4 I couldn't ge this?
12 09/22/2023 07:57:18 pm
Topic: Bug Found in Supplier Invoice in Calculating Unit Tax (1 replies, posted in Accounts Payable)
purchasing/includes/db/invoice_db.inc
Line # 276
The 3rd arugment is 0 but it should be $supp_trans->tax_group_id. Therefore it should be look like
$line_tax = get_full_price_for_item($entered_grn->item_code,
$entered_grn->this_quantity_inv * $entered_grn->chg_price, $supp_trans->tax_group_id, $supp_trans->tax_included) - $taxfree_line;
Otherwise the unit_tax is not calcuated correctly because
finally the function get_tax_group_rates is not reurning the rates to calculated the full_price_of_item() on above mentioned line.
13 09/08/2023 11:20:03 pm
Re: Looking for Developer (2 replies, posted in Jobs wanted/offered, non-free offers)
I have done some thing similar in Pakistan
14 09/01/2023 03:27:07 am
Re: how i can (1 replies, posted in Banking and General Ledger)
You need to check the access rights. However some access rights may be overlapping. So that may need customization
15 09/01/2023 03:25:45 am
Re: Selling new user account security module (2 replies, posted in Jobs wanted/offered, non-free offers)
Is this done without any core changes?
16 09/01/2023 03:24:20 am
Re: Stop auto updating standard cost (1 replies, posted in Items and Inventory)
That may need customization.
You may need to create sys pref in company setup like std_cost.
Once check you can apply condition to not call update_average_material_costs function defined in purchasing/includes/db/grn_db.inc.
One more controlled average costing can be just to call this function when a new item is purchased.
17 08/14/2023 06:49:02 pm
Re: KSeF system invoice (2 replies, posted in Jobs wanted/offered, non-free offers)
Hi
I have done similar thing for Pakistan.
I thing this is related to report VAT charged on each invoice to government.
18 07/27/2023 03:08:21 am
Re: Error on Sales Tab with Customer Transaction enquiry (4 replies, posted in Accounts Receivable)
Is this a fatal error or the page is still working? This may be warning for PHP 8 and may need to be fix
19 07/26/2023 06:49:24 am
Re: Supplier >> Supplier Balances and Supplier Trial Balances (7 replies, posted in Accounts Payable)
Please note my repo is very much customized.
I have tested this in core repo and it is working
But you need to recheck with core and remove my customization if any
20 07/26/2023 06:48:13 am
Re: Supplier >> Supplier Balances and Supplier Trial Balances (7 replies, posted in Accounts Payable)
<?php
/**********************************************************************
Copyright (C) Boxygen, 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_SUPPLIERANALYTIC';
// ----------------------------------------------------------------
// $ Revision: 2.0 $
// Creator: Joe Hunt
// date_: 2005-05-19
// Title: Supplier Balances
// ----------------------------------------------------------------
// $path_to_root=".."; //Fro Cron
//include_once($path_to_root . "/includes/session.inc"); //For Cron
include_once($path_to_root . "/includes/date_functions.inc");
include_once($path_to_root . "/includes/data_checks.inc");
include_once($path_to_root . "/gl/includes/gl_db.inc");
//----------------------------------------------------------------------------------------------------
print_supplier_balances();
function get_open_balance($supplier_id, $to)
{
if($to)
$to = date2sql($to);
$sql = "SELECT SUM(IF(t.type = ".ST_SUPPINVOICE." OR (t.type IN (".ST_JOURNAL." , ".ST_BANKDEPOSIT.", ".ST_BANKDEPOSIT.") AND t.ov_amount>0),
-abs(t.ov_amount + t.ov_gst + t.ov_discount), 0)) AS charges,";
$sql .= "SUM(IF(t.type != ".ST_SUPPINVOICE." AND NOT(t.type IN (".ST_JOURNAL." , ".ST_BANKDEPOSIT.", ".ST_BANKDEPOSIT.") AND t.ov_amount>0),
abs(t.ov_amount + t.ov_gst + t.ov_discount) * -1, 0)) AS credits,";
$sql .= "SUM(IF(t.type != ".ST_SUPPINVOICE." AND NOT(t.type IN (".ST_JOURNAL." , ".ST_BANKDEPOSIT." , ".ST_BANKDEPOSIT.")), t.alloc * -1, t.alloc)) AS Allocated,";
$sql .= "SUM(IF(t.type = ".ST_SUPPINVOICE.", 1, -1) *
(abs(t.ov_amount + t.ov_gst + t.ov_discount) - abs(t.alloc))) AS OutStanding
FROM ".TB_PREF."supp_trans t
WHERE t.supplier_id = ".db_escape($supplier_id);
if ($to)
$sql .= " AND t.tran_date < '$to'";
$sql .= " GROUP BY supplier_id";
$result = db_query($sql,"No transactions were returned");
return db_fetch($result);
}
function getTransactions($supplier_id, $from, $to)
{
$from = date2sql($from);
$to = date2sql($to);
//memo added by faisal
$sql = "SELECT ".TB_PREF."supp_trans.*, comments.memo_,
(".TB_PREF."supp_trans.ov_amount + ".TB_PREF."supp_trans.ov_gst + ".TB_PREF."supp_trans.ov_discount)
AS TotalAmount, ".TB_PREF."supp_trans.alloc AS Allocated,
((".TB_PREF."supp_trans.type = ".ST_SUPPINVOICE.")
AND ".TB_PREF."supp_trans.due_date < '$to') AS OverDue
FROM ".TB_PREF."supp_trans
LEFT JOIN ".TB_PREF."comments comments ON ".TB_PREF."supp_trans.type=comments.type AND ".TB_PREF."supp_trans.trans_no=comments.id
WHERE ".TB_PREF."supp_trans.tran_date >= '$from' AND ".TB_PREF."supp_trans.tran_date <= '$to'
AND ".TB_PREF."supp_trans.supplier_id = '$supplier_id' AND ".TB_PREF."supp_trans.ov_amount!=0
ORDER BY ".TB_PREF."supp_trans.tran_date";
$TransResult = db_query($sql,"No transactions were returned");
return $TransResult;
}
//----------------------------------------------------------------------------------------------------
function print_supplier_balances()
{
global $path_to_root, $systypes_array;
$from = $_POST['PARAM_0'];
$to = $_POST['PARAM_1'];
$fromsupp = $_POST['PARAM_2'];
$show_balance = $_POST['PARAM_3'];
$currency = $_POST['PARAM_4'];
$no_zeros = $_POST['PARAM_5'];
$comments = $_POST['PARAM_6'];
$orientation = $_POST['PARAM_7'];
$destination = $_POST['PARAM_8'];
if ($destination)
include_once($path_to_root . "/reporting/includes/excel_report.inc");
else
include_once($path_to_root . "/reporting/includes/pdf_report.inc");
$orientation = ($orientation ? 'L' : 'P');
if ($fromsupp == ALL_TEXT)
$supp = _('All');
else
$supp = get_supplier_name($fromsupp);
$dec = user_price_dec();
if ($currency == ALL_TEXT)
{
$convert = true;
$currency = _('Balances in Home currency');
}
else
$convert = false;
if ($no_zeros) $nozeros = _('Yes');
else $nozeros = _('No');
$cols = array(0, 80, 130, 190, 250, 320, 385, 450, 515);
$headers = array(_('Trans Type'), _('#'), _('Date'), _('Due Date'), _('Debit'),
_('Credit'), _('Allocated'), _('Outstanding'));
if ($show_balance)
$headers[7] = _('Balance');
$aligns = array('left', 'left', 'left', 'left', 'right', 'right', 'right', 'right');
$params = array( 0 => $comments,
1 => array('text' => _('Period'), 'from' => $from, 'to' => $to),
2 => array('text' => _('Supplier'), 'from' => $supp, 'to' => ''),
3 => array( 'text' => _('Currency'),'from' => $currency, 'to' => ''),
4 => array('text' => _('Suppress Zeros'), 'from' => $nozeros, 'to' => ''));
$rep = new FrontReport(_('Supplier Ledger'), "SupplierBalances", user_pagesize(), 8, $orientation);
if ($orientation == 'L')
recalculate_cols($cols);
$rep->Font();
$rep->Info($params, $cols, $headers, $aligns);
$rep->NewPage();
$total = array();
$grandtotal = array(0,0,0,0);
$sql = "SELECT supplier_id, supp_name AS name, curr_code FROM ".TB_PREF."suppliers";
if ($fromsupp != ALL_TEXT)
$sql .= " WHERE supplier_id=".db_escape($fromsupp);
$sql .= " ORDER BY supp_name";
$result = db_query($sql, "The customers could not be retrieved");
while ($myrow=db_fetch($result))
{
if (!$convert && $currency != $myrow['curr_code'])
continue;
$accumulate = 0;
$rate = $convert ? get_exchange_rate_from_home_currency($myrow['curr_code'], Today()) : 1;
$bal = get_open_balance($myrow['supplier_id'], $from);
$init[0] = $init[1] = 0.0;
$init[0] = round2(abs($bal['charges']*$rate), $dec);
$init[1] = round2(Abs($bal['credits']*$rate), $dec);
$init[2] = round2($bal['Allocated']*$rate, $dec);
if ($show_balance)
{
$init[3] = $init[1] - $init[0];
$accumulate += $init[3];
}
else
$init[3] = round2($bal['OutStanding']*$rate, $dec);
$res = getTransactions($myrow['supplier_id'], $from, $to);
if ($no_zeros && db_num_rows($res) == 0) continue;
$rep->fontSize += 2;
$rep->TextCol(0, 2, $myrow['name']);
if ($convert) $rep->TextCol(2, 3, $myrow['curr_code']);
$rep->fontSize -= 2;
$rep->TextCol(3, 4, _("Open Balance"));
$rep->AmountCol(5, 6, $init[0], $dec);
$rep->AmountCol(4, 5, $init[1], $dec);
$rep->AmountCol(6, 7, $init[2], $dec);
$rep->AmountCol(7, 8, $init[3], $dec);
$total = array(0,0,0,0);
for ($i = 0; $i < 4; $i++)
{
$total[$i] += $init[$i];
$grandtotal[$i] += $init[$i];
}
$rep->NewLine(1, 2);
$rep->Line($rep->row + 4);
if (db_num_rows($res)==0) {
$rep->NewLine(1, 2);
continue;
}
while ($trans=db_fetch($res))
{
if ($no_zeros && floatcmp(abs($trans['TotalAmount']), $trans['Allocated']) == 0) continue;
$rep->NewLine(1, 2);
$rep->TextCol(0, 1, $systypes_array[$trans['type']]);
$rep->TextCol(1, 2, $trans['reference']);
$rep->DateCol(2, 3, $trans['tran_date'], true);
if ($trans['type'] == ST_SUPPINVOICE)
$rep->DateCol(3, 4, $trans['due_date'], true);
$item[0] = $item[1] = 0.0;
if ($trans['TotalAmount'] > 0.0)
{
$item[0] = round2(abs($trans['TotalAmount']) * $rate, $dec);
$rep->AmountCol(5, 6, $item[0], $dec);
$accumulate -= $item[0];
}
else
{
$item[1] = round2(abs($trans['TotalAmount']) * $rate, $dec);
$rep->AmountCol(4, 5, $item[1], $dec);
$accumulate += $item[1];
}
$item[2] = round2($trans['Allocated'] * $rate, $dec);
$rep->AmountCol(6, 7, $item[2], $dec);
if ($trans['TotalAmount'] > 0.0)
$item[3] = $item[2] - $item[0];
else
$item[3] = ($item[2] - $item[1]) * -1;
if ($show_balance)
$rep->AmountCol(7, 8, $accumulate, $dec);
else
$rep->AmountCol(7, 8, $item[3], $dec);
for ($i = 0; $i < 4; $i++)
{
$total[$i] += $item[$i];
$grandtotal[$i] += $item[$i];
}
if ($show_balance)
$total[3] = $total[1] - $total[0];
// $gl_memo = get_gl_memo($trans['type'], -round2($trans['TotalAmount'] * $rate, $dec), $trans['trans_no'], null, $myrow['supplier_id'], PT_SUPPLIER);
$memo = $gl_memo != "" ? $gl_memo : $trans['memo_'];
if ($memo <> "")
{
$rep->NewLine(1, 2);
$rep->fontSize -= 2;
$rep->TextCol(1, 8, $memo); // added by faisal
$rep->fontSize += 2;
}
$rep->Line($rep->row - 2);
}
$rep->Line($rep->row - 8);
$rep->NewLine(2);
$rep->TextCol(0, 1, _('Total Activity'));
// $rep->TextCol(2, 6, $myrow['name']);
$rep->AmountCol(5, 6, $total[0] - $init[0], $dec);
$rep->AmountCol(4, 5, $total[1] - $init[1], $dec);
$rep->NewLine(2);
$rep->TextCol(0, 3, _('Total'));
$rep->AmountCol(5, 6, $total[0], $dec);
$rep->AmountCol(4, 5, $total[1], $dec);
for ($i = 2; $i < 4; $i++)
{
$rep->AmountCol($i + 4, $i + 5, $total[$i], $dec);
$total[$i] = 0.0;
}
$rep->Line($rep->row - 4);
$rep->NewLine(2);
}
$rep->fontSize += 2;
$rep->TextCol(0, 3, _('Grand Total'));
$rep->fontSize -= 2;
if ($show_balance)
$grandtotal[3] = $grandtotal[1] - $grandtotal[0];
$rep->AmountCol(4, 5,$grandtotal[1], $dec);
$rep->AmountCol(5, 6,$grandtotal[0], $dec);
for ($i = 2; $i < 4; $i++)
$rep->AmountCol($i + 4, $i + 5,$grandtotal[$i], $dec);
$rep->Line($rep->row - 4);
$rep->NewLine();
$rep->End();
}
?>
21 07/26/2023 06:07:06 am
Re: Supplier >> Supplier Balances and Supplier Trial Balances (7 replies, posted in Accounts Payable)
You can comment that line
22 07/26/2023 03:07:50 am
Re: I hope to find (4 replies, posted in Wish List)
1. In FA currently we can't produce multiple products from one single process. I have a customization that can produce multiple products and it disctibutes the Work In Process cost as a weighted average to all produced items taking the Selling Price of the product as a Weight.
2. Such requirements are very specific. In FA we are providing a Generic platform for masses. For specific requirements you need to create modules.
5. There are few POS available as a modules created by some developers like @notrinos. you can contact them and integrate them in your repo
23 07/26/2023 03:01:11 am
Re: Excel output error (2 replies, posted in Reporting)
Support on older versions is difficult. A lot has been changed in FA and PHP both..
24 07/26/2023 02:58:49 am
Re: Supplier Payment Entry error (1 replies, posted in Reporting)
Have you checked the proper reference is defined for this transaction type in Setup >> Transaction References?
25 07/26/2023 02:56:23 am
Re: purchase invoice on standard cost products (2 replies, posted in Items and Inventory)
Can you elaborate further?