$this->NewLine(3);
$this->Text($mcol + 100, $doc_Date);
if ($doctype == ST_SALESQUOTE || $doctype == ST_PURCHORDER || $doctype == ST_SALESORDER)
- $this->Text($mcol + 180, sql2date($myrow['ord_date']));
+ $this->Text($mcol + 180, sql2date($this->formData['ord_date']));
elseif ($doctype == ST_WORKORDER)
- $this->Text($mcol + 180, sql2date($myrow['date_']));
+ $this->Text($mcol + 180, sql2date($this->formData['date_']));
else
- $this->Text($mcol + 180, sql2date($myrow['tran_date']));
+ $this->Text($mcol + 180, sql2date($this->formData['tran_date']));
$this->NewLine();
$this->Text($mcol + 100, $doc_Invoice_no);
if ($doctype == ST_SALESQUOTE || $doctype == ST_PURCHORDER || $doctype == ST_SALESORDER) // QUOTE, PO or SO
{
if ($print_invoice_no == 1)
- $this->Text($mcol + 180, $myrow['order_no']);
+ $this->Text($mcol + 180, $this->formData['order_no']);
else
- $this->Text($mcol + 180, $myrow['reference']);
+ $this->Text($mcol + 180, $this->formData['reference']);
}
elseif ($doctype == ST_WORKORDER)
- $this->Text($mcol + 180, $myrow['id']);
- else if (isset($myrow['trans_no']) && isset($myrow['reference'])) // INV/CRE/STA
+ $this->Text($mcol + 180, $this->formData['id']);
+ else if (isset($this->formData['trans_no']) && isset($this->formData['reference'])) // INV/CRE/STA
{
if ($print_invoice_no == 1)
- $this->Text($mcol + 180, $myrow['trans_no']);
+ $this->Text($mcol + 180, $this->formData['trans_no']);
else
- $this->Text($mcol + 180, $myrow['reference']);
+ $this->Text($mcol + 180, $this->formData['reference']);
}
if ($this->pageNumber > 1 && !strstr($this->filename, "Bulk"))
$temp = $this->row;
if ($doctype == ST_SALESQUOTE || $doctype == ST_SALESORDER)
{
- $this->Text($ccol, $myrow['name'], $icol);
+ $this->Text($ccol, $this->formData['name'], $icol);
}
elseif ($doctype == ST_WORKORDER)
{
- $this->Text($ccol, $myrow['location_name'], $icol);
+ $this->Text($ccol, $this->formData['location_name'], $icol);
$this->NewLine();
- $this->TextWrapLines($ccol, $icol - $ccol, $myrow['delivery_address']);
+ $this->TextWrapLines($ccol, $icol - $ccol, $this->formData['delivery_address']);
}
else
{
if ($doctype == ST_PURCHORDER || $doctype == ST_SUPPAYMENT) {
- $name = $myrow['supp_name'];
- $addr = $myrow['address'];
+ $name = $this->formData['supp_name'];
+ $addr = $this->formData['address'];
} else {
- if (trim($branch['br_address']) != '') {
- $name = $branch['br_name'];
- $addr = $branch['br_address'];
+ if (isset($this->formData['br_address']) &&
+ trim($this->formData['br_address']) != '') {
+ $name = $this->formData['br_name'];
+ $addr = $this->formData['br_address'];
} else {
- $name = $myrow['DebtorName'];
- $addr = $myrow['address'];
+ $name = $this->formData['DebtorName'];
+ $addr = $this->formData['address'];
}
}
$this->Text($ccol, $name, $icol);
$this->NewLine();
$this->TextWrapLines($ccol, $icol - $ccol, $addr);
}
- if ($sales_order != NULL)
+ if (isset($this->formData['deliver_to']))
{
$this->row = $temp;
if ($doctype == ST_PURCHORDER)
$this->Text($mcol, $this->company['coy_name']);
- elseif ($doctype != ST_SUPPAYMENT && isset($sales_order['deliver_to']))
- $this->Text($mcol, $sales_order['deliver_to']);
+ elseif ($doctype != ST_SUPPAYMENT && isset($this->formData['deliver_to']))
+ $this->Text($mcol, $this->formData['deliver_to']);
$this->NewLine();
- if ($doctype != ST_SUPPAYMENT && isset($sales_order['deliver_to']))
- $this->TextWrapLines($mcol, $this->rightMargin - $mcol, $sales_order['delivery_address']);
+ if ($doctype != ST_SUPPAYMENT && isset($this->formData['deliver_to']))
+ $this->TextWrapLines($mcol, $this->rightMargin - $mcol, $this->formData['delivery_address']);
}
$this->row = $iline2 - $this->lineHeight - 1;
$col = $this->leftMargin;
$this->row = $iline3 - $this->lineHeight - 1;
$col = $this->leftMargin;
if ($doctype == ST_PURCHORDER || $doctype == ST_SUPPAYMENT)
- $this->TextWrap($col, $this->row, $width, $myrow['supp_account_no'], 'C');
+ $this->TextWrap($col, $this->row, $width, $this->formData['supp_account_no'], 'C');
elseif ($doctype == ST_WORKORDER)
- $this->TextWrap($col, $this->row, $width, $myrow['wo_ref'], 'C');
- elseif (isset($sales_order["customer_ref"]))
- $this->TextWrap($col, $this->row, $width, $sales_order["customer_ref"], 'C');
- elseif (isset($myrow["debtor_ref"]))
- $this->TextWrap($col, $this->row, $width, $myrow["debtor_ref"], 'C');
+ $this->TextWrap($col, $this->row, $width, $this->formData['wo_ref'], 'C');
+ elseif (isset($this->formData["customer_ref"]))
+ $this->TextWrap($col, $this->row, $width, $this->formData["customer_ref"], 'C');
+ elseif (isset($this->formData["debtor_ref"]))
+ $this->TextWrap($col, $this->row, $width, $this->formData["debtor_ref"], 'C');
$col += $width;
- if ($branch != null)
+ if (isset($this->formData['salesman']))
{
- $id = $branch['salesman'];
+ $id = $this->formData['salesman'];
//$sql = "SELECT salesman_name FROM ".TB_PREF."salesman WHERE salesman_code='$id'";
//$result = db_query($sql,"could not get sales person");
//$row = db_fetch($result);
$this->TextWrap($col, $this->row, $width, get_salesman_name($id), 'C');
}
elseif ($doctype == ST_SUPPAYMENT || $doctype == ST_CUSTPAYMENT)
- $this->TextWrap($col, $this->row, $width, $systypes_array[$myrow["type"]], 'C');
+ $this->TextWrap($col, $this->row, $width, $systypes_array[$this->formData["type"]], 'C');
elseif ($doctype == ST_WORKORDER)
- $this->TextWrap($col, $this->row, $width, $wo_types_array[$myrow["type"]], 'C');
+ $this->TextWrap($col, $this->row, $width, $wo_types_array[$this->formData["type"]], 'C');
$col += $width;
if ($doctype == ST_WORKORDER)
- $this->TextWrap($col, $this->row, $width, $myrow["StockItemName"], 'C');
- elseif ($doctype != ST_PURCHORDER && isset($myrow['tax_id']))
- $this->TextWrap($col, $this->row, $width, $myrow['tax_id'], 'C');
+ $this->TextWrap($col, $this->row, $width, $this->formData["StockItemName"], 'C');
+ elseif ($doctype != ST_PURCHORDER && isset($this->formData['tax_id']))
+ $this->TextWrap($col, $this->row, $width, $this->formData['tax_id'], 'C');
$col += $width;
if ($doctype == ST_SALESINVOICE)
{
- $deliveries = get_parent_trans(ST_SALESINVOICE, $myrow['trans_no']);
+ $deliveries = get_parent_trans(ST_SALESINVOICE, $this->formData['trans_no']);
$line = "";
foreach ($deliveries as $delivery)
{
}
elseif ($doctype == ST_CUSTDELIVERY)
{
- $ref = $myrow['order_'];
+ $ref = $this->formData['order_'];
if ($print_invoice_no == 0)
{
- $ref = get_reference(ST_SALESORDER, $myrow['order_']);
+ $ref = get_reference(ST_SALESORDER, $this->formData['order_']);
if (!$ref)
- $ref = $myrow['order_'];
+ $ref = $this->formData['order_'];
}
$this->TextWrap($col, $this->row, $width, $ref, 'C');
}
elseif ($doctype == ST_WORKORDER)
- $this->TextWrap($col, $this->row, $width, $myrow["location_name"], 'C');
- elseif (isset($myrow['order_']) && $myrow['order_'] != 0)
- $this->TextWrap($col, $this->row, $width, $myrow['order_'], 'C');
+ $this->TextWrap($col, $this->row, $width, $this->formData["location_name"], 'C');
+ elseif (isset($this->formData['order_']) && $this->formData['order_'] != 0)
+ $this->TextWrap($col, $this->row, $width, $this->formData['order_'], 'C');
$col += $width;
if ($doctype == ST_SALESORDER || $doctype == ST_SALESQUOTE)
- $this->TextWrap($col, $this->row, $width, sql2date($myrow['delivery_date']), 'C');
+ $this->TextWrap($col, $this->row, $width, sql2date($this->formData['delivery_date']), 'C');
elseif ($doctype == ST_WORKORDER)
- $this->TextWrap($col, $this->row, $width, $myrow["units_issued"], 'C');
+ $this->TextWrap($col, $this->row, $width, $this->formData["units_issued"], 'C');
elseif ($doctype != ST_PURCHORDER && $doctype != ST_CUSTCREDIT && $doctype != ST_CUSTPAYMENT &&
- $doctype != ST_SUPPAYMENT && isset($myrow['due_date']))
- $this->TextWrap($col, $this->row, $width, sql2date($myrow['due_date']), 'C');
- if (!isset($packing_slip) || $packing_slip == 0)
+ $doctype != ST_SUPPAYMENT && isset($this->formData['due_date']))
+ $this->TextWrap($col, $this->row, $width, sql2date($this->formData['due_date']), 'C');
+ if ((!isset($packing_slip) || $packing_slip == 0) && ($doctype != ST_STATEMENT)) //!
{
$this->row -= (2 * $this->lineHeight);
if ($doctype == ST_WORKORDER)
- $str = sql2date($myrow["required_by"]);
+ $str = sql2date($this->formData["required_by"]);
else
{
- $id = $myrow['payment_terms'];
+ $id = $this->formData['payment_terms'];
$sql = "SELECT terms FROM ".TB_PREF."payment_terms WHERE terms_indicator='$id'";
$result = db_query($sql,"could not get paymentterms");
$row = db_fetch($result);
$this->Font('italic');
$this->row = $iline7 - $this->lineHeight - 6;
if ($doctype != ST_WORKORDER)
- $this->TextWrap($ccol, $this->row, $right - $ccol, $doc_Please_Quote . " - " . $myrow['curr_code'], 'C');
+ $this->TextWrap($ccol, $this->row, $right - $ccol, $doc_Please_Quote . " - " . $this->formData['curr_code'], 'C');
$this->row -= $this->lineHeight;
- if (isset($bankaccount['bank_name']))
+ if (isset($this->formData['bank_name']))
{
- $txt = $doc_Bank . ": ".$bankaccount['bank_name']. ", " . $doc_Bank_Account . ": " . $bankaccount['bank_account_number'];
+ $txt = $doc_Bank . ": ".$this->formData['bank_name']. ", " . $doc_Bank_Account . ": " . $this->formData['bank_account_number'];
$this->TextWrap($ccol, $this->row, $right - $ccol, $txt, 'C');
$this->row -= $this->lineHeight;
}
- if ($doctype == ST_SALESINVOICE && $branch['disable_branch'] > 0) // payment links
+ if ($doctype == ST_SALESINVOICE && $this->formData['disable_branch'] > 0) // payment links
{
- if ($branch['disable_branch'] == 1)
+ if ($this->formData['disable_branch'] == 1)
{
- $amt = number_format($myrow["ov_freight"] + $myrow["ov_gst"] + $myrow["ov_amount"], user_price_dec());
+ $amt = number_format($this->formData["ov_freight"] + $this->formData["ov_gst"] + $this->formData["ov_amount"], user_price_dec());
$txt = $doc_Payment_Link . " PayPal: ";
- $name = urlencode($this->title . " " . $myrow['reference']);
+ $name = urlencode($this->title . " " . $this->formData['reference']);
$url = "https://www.paypal.com/xclick/business=" . $this->company['email'] . "&item_name=" .
- $name . "&amount=" . $amt . "¤cy_code=" . $myrow['curr_code'];
+ $name . "&amount=" . $amt . "¤cy_code=" . $this->formData['curr_code'];
$this->fontSize -= 2;
$this->TextWrap($ccol, $this->row, $right - $ccol, $txt, 'C');
$this->row -= $this->lineHeight;
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
-//include_once($path_to_root . "reporting/includes/class.pdf.inc");
+/*
+ TODO:
+ . add StartReport/EndReport handlers for better bulk report support, with
+ . email/printer destination option should be selected on class creation instead
+ of End()
+ . add/use setter function for Header2 parameters (currently passed globally)
+ . in report files pass already prepared options to SetCommonData() to avoid need for
+ selection inside FrontReport generic class.
+*/
include_once(dirname(__FILE__)."/class.pdf.inc");
include_once(dirname(__FILE__)."/printer_class.inc");
include_once($path_to_root . "/admin/db/company_db.inc");
include_once($path_to_root . "/admin/db/fiscalyears_db.inc");
include_once($path_to_root . "/admin/db/printers_db.inc");
include_once($path_to_root . "/config.php");
+
class FrontReport extends Cpdf
{
var $size;
var $scaleLogoWidth;
var $footerEnable; // select whether to print a page footer or not
var $footerText; // store user-generated footer text
- var $headerFunc; // store the name of the currently selected header function
+ var $headerTmpl; // store the name of the currently selected header template
+ var $tmplSize; // pdf header template size in pages
+
+ var $rep_id;
+ var $formData; // common data used for printing headers footers etc.
+ var $dest; // destination: email or printer
+
function FrontReport($title, $filename, $size = 'A4', $fontsize = 9, $orientation = 'P', $margins = NULL, $excelColWidthFactor = NULL)
{
global $page_security;
+
+ $this->rep_id = $_POST['REP_ID']; // FIXME
+
if (!$_SESSION["wa_current_user"]->can_access_page($page_security))
{
display_error(_("The security settings on your account do not permit you to print this report"));
$this->row = $this->pageHeight - $this->topMargin;
$this->currency = '';
$this->scaleLogoWidth = false; // if Logo, scale on width (else height).
- $this->headerFunc = 'Header'; // default to the original header template
-
+ $this->SetHeaderType('Header'); // default
+
$rtl = ($_SESSION['language']->dir === 'rtl' ? 'rtl' : 'ltr');
$code = $_SESSION['language']->code;
$enc = strtoupper($_SESSION['language']->encoding);
$l = array('a_meta_charset' => $enc, 'a_meta_dir' => $rtl, 'a_meta_language' => $code, 'w_page' => 'page');
$this->Cpdf($size, $l, $orientation);
}
-
+
/*
* Select the font and style to use for following output until
* it's changed again.
$this->footerEnable = $footerenable;
$this->footerText = $footertext;
}
-
+ //
+ // Header for listings
+ //
function Header()
{
$companyCol = $this->endLine - 150;
$titleCol = $this->leftMargin + 100;
- $this->pageNumber++;
- if ($this->pageNumber > 1)
- $this->newPage();
-
$this->row = $this->pageHeight - $this->topMargin;
$this->SetDrawColor(128, 128, 128);
$this->NewLine(2);
}
-
- function Header2($myrow, $branch, $sales_order, $bankaccount, $doctype)
+ /*
+ Transition function
+ */
+ function SetCommonData($myrow, $branch, $sales_order, $bankaccount, $doctype)
+ {
+// $this->formData = array_merge($myrow, $branch, $sales_order,
+// $bank_account, array('doctype' => $doctype));
+
+ $this->formData = array();
+ $datnames = array(
+ 'myrow' => array('ord_date', 'date_', 'tran_date',
+ 'order_no','reference', 'id', 'trans_no', 'name', 'location_name',
+ 'delivery_address', 'supp_name', 'address',
+ 'DebtorName', 'supp_account_no', 'wo_ref', 'debtor_ref','type', 'trans_no',
+ 'StockItemName', 'tax_id', 'order_', 'delivery_date', 'units_issued',
+ 'due_date', 'required_by', 'payment_terms', 'curr_code',
+ 'ov_freight', 'ov_gst', 'ov_amount'),
+ 'branch' => array('br_address', 'br_name', 'salesman', 'disable_branch'),
+ 'sales_order' => array('deliver_to', 'delivery_address', 'customer_ref'),
+ 'bankaccount' => array('bank_name', 'bank_account_number')
+ );
+
+ foreach($datnames as $var => $fields) {
+ if (isset($$var)) {
+ foreach($fields as $locname) {
+ if (isset(${$var}[$locname])) {
+ $this->formData[$locname] = ${$var}[$locname];
+ }
+ }
+ }
+ }
+ $this->formData['doctype'] = $doctype;
+ }
+ /*
+ Set header handler
+ */
+ function SetHeaderType($name) {
+ $this->headerTmpl = $name;
+ }
+ /*
+ Header for sales/purchase documents
+ */
+ function Header2()
{
- global $comp_path, $path_to_root, $print_as_quote, $print_invoice_no, $packing_slip;
+ global $comp_path, $path_to_root, $print_as_quote, $print_invoice_no, $packing_slip; // FIXME
- $this->pageNumber++;
- if ($this->pageNumber > 1)
- $this->newPage();
+ $doctype = $this->formData['doctype'];
$header2type = true;
// leave layout files names without path to enable including
{
global $comp_path;
- // Make this header the default for the current report ( used by NewLine() )
- $this->headerFunc = 'Header3';
-
// Turn off cell padding for the main report header, restoring the current setting later
$oldcMargin = $this->cMargin;
$this->SetCellPadding(0);
// Set some constants which control header item layout
// only set them once or the PHP interpreter gets angry
- if ($this->pageNumber == 0)
+ if ($this->pageNumber == 1)
{
define('COMPANY_WIDTH', 150);
define('LOGO_HEIGHT', 50);
$footerRow = $this->bottomMargin - FOOTER_MARGIN;
// Calling this function generates a new PDF page after the first instance
- $this->pageNumber++;
- if ($this->pageNumber > 1)
- {
+// {
// // TODO: experimenting with line drawing to highlight current period
// $this->SetLineWidth(1);
// $this->LineTo($this->cols[3], 33, $this->cols[3], 534);
// $this->LineTo($this->cols[4], 33, $this->cols[4], 534);
// $this->SetLineWidth(0.1);
- $this->newPage();
- }
+// $this->newPage();
+// }
$this->row = $this->pageHeight - $this->topMargin;
// Set the color of dividing lines we'll draw
// Check to see if we're at the bottom and should insert a page break
if ($this->row < $this->bottomMargin + ($np * $h))
- $this->{$this->headerFunc}(); // call header template chosen by current report
+ $this->NewPage();
+ }
+
+ function NewPage()
+ {
+ if ($this->pageNumber==0)
+ {
+ // check if there is pdf header template for this report
+ // and set if it is found
+ $tmpl_pdf = find_custom_file("/reporting/forms/".$this->headerTmpl.".pdf");
+ if ($tmpl_pdf) {
+ $this->tmplSize = $this->setSourceFile($tmpl_pdf);
+ }
+ }
+
+ $this->pageNumber++;
+ parent::newPage();
+
+ if ($this->tmplSize) {
+ $this->row = $this->pageHeight - $this->topMargin; // reset row
+ $id = $this->importPage(min($this->pageNumber, $this->tmplSize));
+ $this->useTemplate($id);
+ }
+
+ // include related php file if any
+ $tmpl_php = find_custom_file("/reporting/forms/".$this->headerTmpl.".php");
+ if ($tmpl_php) {
+ include($tmpl_php);
+ }
+
+ if (method_exists($this, $this->headerTmpl)) // draw predefined page layout if any
+ $this->{$this->headerTmpl}();
}
function End($email=0, $subject=null, $myrow=null, $doctype = 0)
echo '<html><body>';
echo trim($pdfcode);
echo '</body></html>';
- //header("Content-Length: $len");
- //header("Content-Disposition: inline; filename=" . $this->filename);
- //header('Expires: 0');
- //header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
- //header('Pragma: public');
-
- //$this->pdf->stream();
}
else
{
}
else
{
- $printer = get_report_printer(user_print_profile(), $_POST['REP_ID']);
+ $printer = get_report_printer(user_print_profile(), $this->rep_id);
if ($printer == false) {
if(in_ajax()) {
global $Ajax;
else
$Ajax->redirect($fname); // otherwise use faster method
} else {
- //echo '<html>
- // <head>
- // <SCRIPT LANGUAGE="JavaScript"><!--
- // function go_now () { window.location.href = "'.$fname.'"; }
- // //--></SCRIPT>
- // </head>
- // <body onLoad="go_now()"; >
- // <a href="'.$fname.'">click here</a> if you are not re-directed.
- // </body>
- // </html>';
header('Content-type: application/pdf');
header("Content-Disposition: inline; filename=$this->filename");
header('Expires: 0');