Add New Report FrontAccounting
In this case, we will create a report in Purchases Module with name Supplier Invoice Transactions. Output for this report is a summary of the supplier invoice in the period of date. Let’s begin, firstly open file “\reporting\reports_main” and add code below to create a report menu.
//Add by : Andik
$reports->addReport(RC_SUPPLIER, 211, _('Supplier Invoice &Transactions'),
array(_('Start Date') => 'DATEBEGIN',
_('End Date') => 'DATEENDM',
_('Supplier') => 'SUPPLIERS_NO_FILTER',
_('Orientation') => 'ORIENTATION',
_('Destination') => 'DESTINATION'));
//end
and this is the result.
After this, create a file in directory “\reporting” with the name “rep211.php” and add code below.
<?php
$page_security = 'SA_SUPPLIERANALYTIC';
$path_to_root="..";
include_once($path_to_root . "/includes/session.inc");
include_once($path_to_root . "/includes/date_functions.inc");
include_once($path_to_root . "/includes/data_checks.inc");
include_once($path_to_root . "/includes/db/crm_contacts_db.inc");
//----------------------------------------------------------------------------------------------------
print_invoices();
//----------------------------------------------------------------------------------------------------
function get_invoice($from, $to, $supplier)
{
$from = date2sql($from);
$to = date2sql($to);
$sql = "SELECT trans.*, supplier.supp_name, supplier.supp_ref
FROM "
.TB_PREF."supp_trans trans,"
.TB_PREF."suppliers supplier
WHERE trans.supplier_id = supplier.supplier_id
AND trans.tran_date >= ".db_escape($from)."
AND trans.tran_date <= ".db_escape($to)."
AND trans.type = ".ST_SUPPINVOICE."
AND trans.ov_amount != 0";
if($supplier)
$sql .= " AND trans.supplier_id =".db_escape($supplier);
$result = db_query($sql, "The invoice cannot be retrieved");
return $result;
}
function print_invoices()
{
global $path_to_root, $systypes_array;
$from = $_POST['PARAM_0'];
$to = $_POST['PARAM_1'];
$supplier = $_POST['PARAM_2'];
$orientation = $_POST['PARAM_3'];
$destination = $_POST['PARAM_4'];
if (!$from || !$to) return;
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');
$dec = user_price_dec();
$cols = array(0, 150, 200, 250, 300, 350, 400, 475, 550);
$headers = array(_('Supplier'), _('Invoice No.'), _('Reference'), _('Invoice Date'), _('Due Date'),
_('DPP Amount'), _('Tax Amount'), _('Invoice Amount'));
$aligns = array('left', 'left', 'left', 'left', 'left', 'right', 'right', 'right');
$params = array( 0 => $comments,
1 => array('text' => _('Period'), 'from' => $from, 'to' => $to));
$rep = new FrontReport(_('Supplier Invoice Transactions'), "SupplierInvoiceTransactions", user_pagesize(), 8, $orientation);
if ($orientation == 'L')
recalculate_cols($cols);
$rep->Font();
$rep->Info($params, $cols, $headers, $aligns);
$rep->NewPage();
$result = get_invoice($from, $to, $supplier);
while ($myrow=db_fetch($result))
{
$counter += 1;
if($counter > 1)
$rep->NewLine(1.5);
$rep->TextCol(0, 1, $myrow['supp_ref'] ." - ". $myrow['supp_name']);
$rep->TextCol(1, 2, $myrow['supp_reference']);
$rep->TextCol(2, 3, $myrow['reference']);
$rep->DateCol(3, 4, $myrow['tran_date'], true);
$rep->DateCol(4, 5, $myrow['due_date'], true);
$rep->AmountCol(5, 6, ($myrow['ov_amount'] + $myrow['ov_discount']) * $myrow['rate'], $dec);
$rep->AmountCol(6, 7, $myrow['ov_gst'] * $myrow['rate'], $dec);
$rep->AmountCol(7, 8, ($myrow['ov_amount'] + $myrow['ov_discount'] + $myrow['ov_gst']) * $myrow['rate'], $dec);
$DPPSum += ($myrow['ov_amount'] + $myrow['ov_discount']) * $myrow['rate'];
$taxSum += $myrow['ov_gst'] * $myrow['rate'];
$invSum += ($myrow['ov_amount'] + $myrow['ov_discount'] + $myrow['ov_gst']) * $myrow['rate'];
}
if($counter)
{
$rep->Line($rep->row - 4);
$rep->NewLine(1.5);
$rep->fontSize += 1;
$rep->TextCol(0, 3, _('Grand Total'));
$rep->AmountCol(5, 6, $DPPSum, $dec);
$rep->AmountCol(6, 7, $taxSum, $dec);
$rep->AmountCol(7, 8, $invSum, $dec);
$rep->Line($rep->row - 4);
$rep->NewLine();
}
$rep->End();
}
It’s done, and this is the result.
Post a Comment