function show_report($_POST) { extract($_POST); if (!isset($employee) or strlen($employee) < 1) { return "Invalid use of module."; } db_connect(); $get_employee = "SELECT * FROM employees WHERE empnum = '{$employee}' LIMIT 1"; $run_employee = db_exec($get_employee) or errDie("Unable to get employees information."); if (pg_numrows($run_employee) < 1) { return "Invalid Employee Selected."; } else { $earr = pg_fetch_array($run_employee); //extract($earr); } $finstartdate = mkdate(getYearOfFinPrd(1) - 1, $PRDMON[1], 1); $finenddate = mkldate(getYearOfFinPrd(12) - 1, $PRDMON[12]); db_connect(); #get all leave for this employee $get_leave = "SELECT * FROM empleave WHERE empnum = '{$earr['empnum']}' AND startdate > '{$finstartdate}' AND enddate < '{$finenddate}'"; $run_leave = db_exec($get_leave) or errDie("Unable to get employee leave information."); if (pg_numrows($run_leave) < 1) { $listing = "Employee did not apply for leave during the previous financial year."; } else { $total_leave_days = 0; $listing = "\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Leave Start Date</th>\n\t\t\t\t\t<th>Leave End Date</th>\n\t\t\t\t\t<th>Approved By</th>\n\t\t\t\t\t<th>Working Days</th>\n\t\t\t\t\t<th>Non Working Days</th>\n\t\t\t\t\t<th>Leave Type</th>\n\t\t\t\t</tr>\n\t\t\t"; while ($larr = pg_fetch_array($run_leave)) { $total_leave_days = $total_leave_days + $larr['workingdays']; $listing .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$larr['startdate']}</td>\n\t\t\t\t\t\t<td>{$larr['enddate']}</td>\n\t\t\t\t\t\t<td>{$larr['approvedby']}</td>\n\t\t\t\t\t\t<td>{$larr['workingdays']}</td>\n\t\t\t\t\t\t<td>{$larr['nonworking']}</td>\n\t\t\t\t\t\t<td>{$larr['type']}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t"; } $total_cost = $earr['basic_sal_annum'] / (52 * 5) * $total_leave_days; } $display = "\n\t\t\t<h2>Calculate Value Of Employee Leave</h2>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t\t<input type='hidden' name='key' value='xls'>\n\t\t\t\t<input type='hidden' name='employee' value='{$employee}'>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'>Details</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Employee:</td>\n\t\t\t\t\t<td>{$earr['fnames']} {$earr['sname']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Amount Of Annual Leave Days:</td>\n\t\t\t\t\t<td>{$earr['stdlea']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Total Days Leave Taken</td>\n\t\t\t\t\t<td>{$total_leave_days}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Total Cost Of Employee Leave</td>\n\t\t\t\t\t<td>" . CUR . " {$total_cost}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t{$listing}\n\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='4'><input type='submit' name='xls' value='Export to spreadsheet'></td>\n\t\t\t\t</tr>\n\t\t\t</form>\n\t\t\t</table>\n\t\t"; return $display; }
function get_period() { global $PRDMON; $finstartdate = mkdate(getYearOfFinPrd(1), $PRDMON[1], 1); $finenddate = mkldate(getYearOfFinPrd(12), $PRDMON[12]); db_connect(); #get vat period setting $get_set = "SELECT * FROM settings WHERE label = 'VAT Period' LIMIT 1"; $run_set = db_exec($get_set) or errDie("Unable to get vat period information."); if (pg_numrows($run_set) < 1) { return "\n\t\t\t<li class='err'>Please Set VAT Period Setting Before Continuing.</li>\n\t\t\t<p>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Quick Links</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><a href='../vat_period_setting.php'>Set VAT Period</a></td>\n\t\t\t\t</tr>\n\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t</table>"; } else { $sarr = pg_fetch_array($run_set); $periodlength = $sarr['value']; $b = 1; $period_drop = "<select name='period'>"; for ($x = 1; $b < 12; $x = $x + $periodlength) { $b = $b + $periodlength; #make sure we dont cross the 12 period limit if ($b > 12) { #set period to the last $dob = $b - 12; $b = 12; #make sure we get the last month (the -1 makes us lose 1) // $PRDMON[$b] = $PRDMON[$b] +1; } else { $dob = $b; } $start = date("Y-m-d", mktime(0, 0, 0, $PRDMON[$x], 1, getYearOfFinPrd($x))); $end = date("Y-m-d", mktime(0, 0, 0, $PRDMON[$dob], 0, getYearOfFinPrd($b))); $period_drop .= "<option value='{$start}|{$end}'>{$start} - {$end}</option>"; } $period_drop .= "</select>"; } #generate the periods dropdown based on vat period setting. $display = "\n\t\t<h2>Select VAT Period For Report</h2>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t<input type='hidden' name='key' value='confirm'>\n\t\t\t<tr>\n\t\t\t\t<td><li class='err'>NOTE: Pre Generated Values Are The Cubit Recommened Values. </li></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td><li class='err'>However these values may be changed at will.</li></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th>Period</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$period_drop}</td>\n\t\t\t</tr>\n\t\t\t<tr><td></td></tr>\n\t\t\t<tr>\n\t\t\t\t<th>Name For Report</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td><input type='text' name='returnname' value='" . date("Y-m-d") . " Report'></td>\n\t\t\t</tr>\n\t\t\t<tr><td></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td align='right'><input type='submit' value='Next'></td>\n\t\t\t</tr>\n\t\t</form>\n\t\t</table>"; return $display; }
function display($_POST) { extract($_POST); global $PRDMON; #determine the date range based on period selection if (isset($year_to_process)) { switch ($year_to_process) { case "active": $fdate_year = getYearOfFinPrd(1); $fdate_month = $PRDMON[1]; $fdate_day = "1"; $tdate_year = getYearOfFinPrd(12); $tdate_month = $PRDMON[12]; $tdate_day = date("d", mktime(0, 0, 0, $PRDMON[12] + 1, 0, $tdate_year)); break; case "previous": $fdate_year = getYearOfFinPrd(1) - 1; $fdate_month = $PRDMON[1]; $fdate_day = "1"; $tdate_year = getYearOfFinPrd(12) - 1; $tdate_month = $PRDMON[12]; $tdate_day = date("d", mktime(0, 0, 0, $PRDMON[12] + 1, 0, $tdate_year)); break; default: $fdate_year = getYearOfFinPrd(1); $fdate_month = "03"; $fdate_day = "01"; $tdate_year = getYearOfFinPrd(12); $tdate_month = "02"; $tdate_day = date("d", mktime(0, 0, 0, 3, 0, $tdate_year)); } } // ----------------------------------------------------------------------- // Sanity checks // ----------------------------------------------------------------------- require_lib("validate"); $v = new validate(); // Does this employee number actually exist db_conn("cubit"); $sql = "SELECT * FROM employees WHERE empnum='" . (int) $empnum . "' AND div='" . USER_DIV . "'"; $empinf_rslt = db_exec($sql) or errDie("Unable to retrieve employee number from Cubit."); if (pg_num_rows($empinf_rslt) == 0) { $v->addError(0, "Employee number not found in Cubit."); } $v->isOk($fdate_month, "num", 1, 2, "Invalid from date (month)"); $v->isOk($fdate_year, "num", 4, 4, "Invalid from date (year)"); $v->isOk($tdate_month, "num", 1, 2, "Invalid to date (month)"); $v->isOk($tdate_year, "num", 4, 4, "Invalid to date (year)"); if ($fdate_month > 12) { $v->addError(0, "Invalid from date (month)"); } if ($fdate_year < 1970 || $fdate_year > 2050) { $v->addError(0, "Invalid from date (year)"); } if ($tdate_month > 12) { $v->addError(0, "Invalid to date (month)"); } if ($tdate_year < 1970 || $tdate_year > 2050) { $v->addError(0, "Invalid to date (year)"); } if ($fdate_day > getDaysInMonth((int) $fdate_month, $fdate_year)) { $v->addError(0, "Invalid from date (day)"); } if ($tdate_day > getDaysInMonth((int) $tdate_month, $tdate_year)) { $v->addError(0, "Invalid to date (day)"); } $from_time = mktime(0, 0, 0, $fdate_day, $fdate_month, $fdate_year); $to_time = mktime(0, 0, 0, $tdate_day, $tdate_month, $tdate_year); if ($from_time > $to_time) { $v->addError(0, "Invalid date range specified."); } // Return the errors, if any if ($v->isError()) { $confirm = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $confirm .= "<li class='err'>{$e['msg']}</li>"; } return slct($confirm); } $from_date = "{$fdate_year}-{$fdate_month}-{$fdate_day}"; $to_date = "{$tdate_year}-{$tdate_month}-{$tdate_day}"; $gross_taxable_annual_payments = 0.0; $gross_non_taxable_income = 0.0; $gross_retirement_funding_income = 0.0; $gross_non_retirement_funding_income = 0.0; $gross_remuneration = 0.0; db_conn("cubit"); $sql = "SELECT * FROM compinfo"; $compinfo_rslt = db_exec($sql) or errDie("Unable to retrieve company information from Cubit."); $compinfo = pg_fetch_array($compinfo_rslt); db_conn("cubit"); $sql = "SELECT * FROM employees WHERE empnum='{$empnum}'"; $empinfo_rslt = db_exec($sql) or errDie("Unable to retrieve employee information from Cubit."); $empinfo = pg_fetch_array($empinfo_rslt); $header_out = "<b>Employees tax certificate</b>"; $employer_trading_name_out = array(array("<b>Trading or other name:</b> {$compinfo['compname']}")); $employer_irp5_number_out = array(array("<b>IRP 5 number:</b> {$irp5_number}")); $employer_reference_number_out = array(array("<b>Reference number:</b> {$empinfo['taxref']}")); $employer_tax_year_out = array(array("<b>Tax year:</b> " . ($fdate_year + 1))); $employer_diplomatic_indemnity_out = array(array("<b>Diplomatic indemnity:</b> {$compinfo['diplomatic_indemnity']}")); $employer_business_address_out = array(array("<b>Employer business address:</b>"), array("{$compinfo['addr1']}"), array("{$compinfo['addr2']}"), array("{$compinfo['addr3']}")); $employer_postal_code_out = array(array("col1" => "<b>Postal Code:</b>", "col2" => "{$compinfo['addr4']}")); $employer_postal_code_cols = array("col1" => array("width" => 200, "justification" => "right"), "col2" => array("width" => 40, "justification" => "right")); // Extract the employee's birth date from her id number $bd_year = 1900 + substr($empinfo["idnum"], 0, 2); $bd_month = substr($empinfo["idnum"], 2, 2); $bd_day = substr($empinfo["idnum"], 4, 2); // Period employed from // strip out the dashes from the date $prd_employed_frm = explode("-", $empinfo["hiredate"]); $prd_employed_frm = implode($prd_employed_frm); // Period employed to if (empty($empinfo["firedate"])) { $prd_employed_to = getFinYear() . "0228"; } else { $prd_employed_to = explode("-", $firedate); $prd_employed_to = implode("", $prd_employed_to); } $employee_nature_out = array(array("<b>Nature of Person:</b> {$empinfo['nature']}")); $employee_surname_out = array(array("<b>Employee surname or trading name:</b> {$empinfo['sname']}")); $employee_first_names_out = array(array("<b>First two names:</b> {$empinfo['fnames']}")); $fnames = explode(" ", $empinfo["fnames"]); $initials = ""; foreach ($fnames as $name) { $initials .= strtoupper($name[0]); } $employee_initials_out = array(array("<b>Initials:</b> {$initials}")); $employee_identity_number_out = array(array("<b>Identity number:</b> {$empinfo['idnum']}")); $employee_passport_number_out = array(array("<b>Passport number:</b> {$empinfo['passport_number']}")); $employee_date_of_birth_out = array(array("<b>Date of birth:</b> {$bd_year}-{$bd_month}-{$bd_day}")); $employee_cc_number_out = array(array("<b>Company/CC/Trust number:</b> {$empinfo['cc_number']}")); $employee_tax_number_out = array(array("<b>Income Tax number:</b> {$empinfo['tax_number']}")); $employee_residential_out = array(array("<b>Employees residential address:</b>"), array("{$empinfo['res1']}"), array("{$empinfo['res2']}"), array("{$empinfo['res3']}")); $employee_postal_code_out = array(array("col1" => "<b>Postal Code:</b>", "col2" => "{$empinfo['res4']}")); $employee_postal_code_cols = array("col1" => array("width" => 200, "justification" => "right"), "col2" => array("width" => 40, "justification" => "right")); $employee_number_out = array(array("<b>Employee Number:</b> {$empinfo['empnum']}")); $tax_prd_employed_frm_out = array(array("<b>Period employed from:</b> {$prd_employed_frm}")); $tax_prd_employed_to_out = array(array("<b>Period employed to:</b> {$prd_employed_to}")); $tax_over_deduction_out = array(array("<b>Voluntary over-deduction:</b> {$over_deduction}")); switch ($empinfo["payprd"]) { case "m": $pay_periods = 12; break; case "f": $pay_periods = 24; break; case "w": $pay_periods = 48; break; } $tax_prd_in_year_out = array(array("<b>Pay periods in year:</b> {$pay_periods}")); if ($year_to_process == "active") { $cyear = EMP_YEAR; } else { $cyear = EMP_YEAR - 1; } db_conn("cubit"); $sql = "SELECT * FROM emp_inc WHERE emp='{$empinfo['empnum']}' AND description='Basic Salary' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve the number of periods worked from Cubit."); $pay_periods_worked = pg_num_rows($rslt); $tax_prd_worked_out = array(array("<b>Number of periods worked:</b> {$pay_periods_worked}")); $tax_fixed_rate_income_out = array(array("<b>Fixed rate income:</b> {$empinfo['fixed_rate']}")); $tax_directive_number_out = array(array("<b>Directive number:</b> {$directive_number}")); // Income sources -------------------------------------------------------- $income_sources_out = array(); $income_taxable_total = 0; $income_commission_total = 0; $income_bonus_total = 0; $income_reimburse_total = 0; $income_travelallowance_total = 0; $income_subsis_total = 0; $income_otherallowance_total = 0; $deduction_motorcar_total = 0; $deduction_medical_total = 0; // $deduction_medicalaid_total = 0; db_conn("cubit"); $sql = "SELECT amount FROM emp_inc WHERE emp='{$empnum}' AND description='Basic Salary' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $income_taxable_total += $empinc_data["amount"]; } $income_sources_out[] = array("<b>CODE</b>" => "3601", "<b>DESCRIPTION</b>" => "Income Taxable", "<b>RF IND</b>" => "N", "<b>AMOUNT</b>" => (int) $income_taxable_total); $sql = "SELECT amount FROM emp_inc WHERE emp='{$empnum}' AND description='Bonus' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $income_bonus_total += $empinc_data["amount"]; } $income_sources_out[] = array("<b>CODE</b>" => "3605", "<b>DESCRIPTION</b>" => "Bonus", "<b>RF IND</b>" => "N", "<b>AMOUNT</b>" => (int) $income_bonus_total); $sql = "SELECT amount FROM emp_inc WHERE emp='{$empnum}' AND description='Commission' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $income_commission_total += $empinc_data["amount"]; } $income_sources_out[] = array("<b>CODE</b>" => "3606", "<b>DESCRIPTION</b>" => "Commission", "<b>RF IND</b>" => "N", "<b>AMOUNT</b>" => (int) $income_commission_total); #handle travel allowances .... $sql = "SELECT amount FROM emp_inc WHERE emp='{$empnum}' AND description = 'Travel Allowance' AND type = 'INCT' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $income_travelallowance_total += $empinc_data['amount']; } $income_sources_out[] = array("<b>CODE</b>" => "3701", "<b>DESCRIPTION</b>" => "Travel Allowance", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => (int) $income_travelallowance_total); #handle reimbursements .... $sql = "SELECT amount FROM emp_inc WHERE emp='{$empnum}' AND description!='Basic Salary' AND ex = 'RBS' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $income_reimburse_total += $empinc_data['amount']; } $income_sources_out[] = array("<b>CODE</b>" => "3702", "<b>DESCRIPTION</b>" => "Reimbursements", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => (int) $income_reimburse_total); #handle subsistance allowances .... $sql = "SELECT amount FROM emp_inc WHERE emp='{$empnum}' AND description != 'Basic Salary' AND ex = 'SUBS' AND type = '2' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $income_subsis_total += $empinc_data['amount']; } $income_sources_out[] = array("<b>CODE</b>" => "3704", "<b>DESCRIPTION</b>" => "Subsistance Allowance", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => (int) $income_subsis_total); #handle other allowances .... $sql = "SELECT amount FROM emp_inc WHERE emp='{$empnum}' AND description != 'Basic Salary' AND description != 'Travel Allowance' AND ex != 'SUBS' AND ex != 'RBS' AND type = '2' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $income_otherallowance_total += $empinc_data['amount']; } $income_sources_out[] = array("<b>CODE</b>" => "3713", "<b>DESCRIPTION</b>" => "Other Allowances", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => (int) $income_otherallowance_total); #handle motorcar DEDUCTIONS in income table ... $sql = "SELECT amount FROM emp_ded WHERE emp='{$empnum}' AND (description = 'Motorcar 1 Contribution for Use' OR description = 'Motorcar 2 Contribution for Use') AND (type = 'DEDA' OR type = 'DEDB') AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $deduction_motorcar_total += $empinc_data['amount']; } $income_sources_out[] = array("<b>CODE</b>" => "3802", "<b>DESCRIPTION</b>" => "Use Of Motor Vehicle", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => (int) $deduction_motorcar_total); #handle medical DEDUCTIONS in income table ... //$sql = "SELECT amount FROM emp_com WHERE emp='$empnum' AND description = 'Medical Contribution' AND type = 'DEDM'"; $sql = "SELECT amount FROM emp_com WHERE emp='{$empnum}' AND description = 'Medical Contribution' AND type = 'COMM' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $deduction_medical_total += $empinc_data['amount']; } //"<b>CODE</b>" => "3816", $income_sources_out[] = array("<b>CODE</b>" => "3810", "<b>DESCRIPTION</b>" => "Medical Contribution", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => (int) $deduction_medical_total); #handle medical aid DEDUCTIONS in income table ... // $sql = "SELECT amount FROM emp_ded WHERE emp='$empnum' AND description = 'Medical Contribution' AND type = 'DEDM'"; // $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); // while ($empinc_data = pg_fetch_array($rslt)) { // $deduction_medicalaid_total += $empinc_data['amount']; // } // $income_sources_out[] = array ( // "<b>CODE</b>" => "3802", // "<b>DESCRIPTION</b>" => "Medical aid contributions", // "<b>RF IND</b>" => "", // "<b>AMOUNT</b>" => (int)$deduction_medicalaid_total // ); // old // $sql = "SELECT * FROM emp_inc WHERE emp='$empnum' AND description!='Basic Salary'"; // $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); // while ($empinc_data = pg_fetch_array($rslt)) { // $income_sources_out[] = array ( // "<b>CODE</b>"=>"$empinc_data[code]", // "<b>DESCRIPTION</b>"=>"$empinc_data[description]", // "<b>RF IND</b>"=>"", // "<b>AMOUNT</b>"=>(int)$empinc_data["amount"] // ); // } if (!empty($nincome_description) || !empty($nincome_amount) && $nincome_code != 0) { $income_sources_out[] = array("<b>CODE</b>" => "{$nincome_code}", "<b>DESCRIPTION</b>" => "{$nincome_description}", "<b>RF IND</b>" => "{$nincome_rfind}", "<b>AMOUNT</b>" => (int) $nincome_amount); } if (isset($income_code)) { foreach ($income_code as $id => $value) { if ($income_code[$id] != 0) { $income_sources_out[] = array("<b>CODE</b>" => "{$income_code[$id]}", "<b>DESCRIPTION</b>" => "{$income_description[$id]}", "<b>RF IND</b>" => "{$income_rfind[$id]}", "<b>AMOUNT</b>" => (int) $income_amount[$id]); } else { $income_sources_out[] = array("<b>CODE</b>" => "", "<b>DESCRIPTION</b>" => "", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => ""); } } } $income_sources_cols = array("<b>CODE</b>" => array("width" => 40), "<b>DESCRIPTION</b>" => array("width" => 340), "<b>RF IND</b>" => array("width" => 70), "<b>AMOUNT</b>" => array("width" => 70)); // Gross renumeration ---------------------------------------------------- // Taxable annual payments db_conn("cubit"); $sql = "SELECT * FROM emp_inc WHERE (code='3695' OR code='3601' OR description='Bonus') AND emp = '{$empnum}' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve taxable annual payments from Cubit."); while ($emp_inc_data = pg_fetch_array($rslt)) { $gross_taxable_annual_payments += $emp_inc_data["amount"]; } db_conn("cubit"); $sql = "SELECT * FROM emp_income_sources WHERE (code='3695' OR code='3601') AND empnum = '{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve taxable annual payments from Cubit."); while ($emp_income_sources_data = pg_fetch_array($rslt)) { $gross_taxable_annual_payments += $emp_income_sources_data["amount"]; } // Non taxable annual payments db_conn("cubit"); $sql = "SELECT * FROM emp_inc WHERE (code='3602' OR code='3604' OR code='3612' OR code='3703' OR code='3705' OR code='3709' OR code='3714') AND emp = '{$empnum}' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve non taxable payments from Cubit."); while ($emp_inc_data = pg_fetch_array($rslt)) { $gross_non_taxable_income += $emp_inc_data["amount"]; } db_conn("cubit"); $sql = "SELECT * FROM emp_income_sources WHERE (code='3602' OR code='3604' OR code='3612' OR code='3703' OR code='3705' OR code='3709' OR code='3714') AND empnum = '{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve non taxable payments from Cubit."); while ($emp_income_sources_data = pg_fetch_array($rslt)) { if ($emp_income_sources_data["rf_ind"] == "Y") { $gross_non_taxable_income += $emp_income_sources_data["amount"]; } } // Gross retirement funding income db_conn("cubit"); $sql = "SELECT emp_pension, emp_ret FROM employees WHERE empnum='{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve gross retrirement funding from Cubit."); $emp_data = pg_fetch_array($rslt); // RF IND $rfind_y = 0; if (isset($income_rfind)) { foreach ($income_rfind as $id => $value) { if ($income_rfind[$id] == "Y") { $rfind_y += $income_amount[$id]; } } } //wth emp_pension is a PERCENTAGE, not some amount to add // $gross_retirement_funding_income += $emp_data["emp_pension"] + $emp_data["emp_ret"] + $rfind_y; $gross_retirement_funding_income += $gross_taxable_annual_payments / 100 * $emp_data["emp_pension"] + $emp_data["emp_ret"] + $rfind_y; // Gross non retirement funding income db_conn("cubit"); $sql = "SELECT * FROM emp_inc WHERE ((code != '3601' AND code != '3603' AND code != '3604' AND code != '3610' AND code != '3615') OR description = 'Basic Salary') AND emp = '{$empnum}' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve gross non retirement funding from Cubit."); // RF IND $rfind_n = 0; if (isset($income_rfind)) { foreach ($income_rfind as $id => $value) { if ($income_rfind[$id] == "N") { $rfind_n += $income_amount[$id]; } } } while ($emp_inc_data = pg_fetch_array($rslt)) { $gross_non_retirement_funding_income += $emp_inc_data["amount"] + $rfind_n; } db_conn("cubit"); $sql = "SELECT * FROM emp_income_sources WHERE (code != '3601' AND code != '3603' AND code != '3604' AND code != '3610' AND code!='3615') AND empnum = '{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve gross non retirement funding from Cubit."); while ($emp_income_sources_data = pg_fetch_array($rslt)) { if ($emp_income_sources_data["rf_ind"] == "N") { $gross_non_retirement_funding_income += $emp_income_sources_data["amount"]; } } // Gross Remuneration $gross_remuneration = $gross_retirement_funding_income + $gross_non_retirement_funding_income; $gross_remuneration_out = array(array("<b>CODE</b>" => "3695", "<b>DESCRIPTION</b>" => "GROSS TAXABLE ANNUAL PAYMENTS", "<b>AMOUNT</b>" => (int) $gross_taxable_annual_payments), array("<b>CODE</b>" => "3696", "<b>DESCRIPTION</b>" => "GROSS NON-TAXABLE INCOME", "<b>AMOUNT</b>" => (int) $gross_non_taxable_income), array("<b>CODE</b>" => "3697", "<b>DESCRIPTION</b>" => "GROSS RETIREMENT FUNDING INCOME", "<b>AMOUNT</b>" => (int) $gross_retirement_funding_income), array("<b>CODE</b>" => "3698", "<b>DESCRIPTION</b>" => "GROSS NON-RETIREMENT FUNDING INCOME", "<b>AMOUNT</b>" => (int) $gross_non_retirement_funding_income), array("<b>CODE</b>" => "3699", "<b>DESCRIPTION</b>" => "GROSS REMUNERATION", "<b>AMOUNT</b>" => (int) $gross_remuneration)); $gross_remuneration_cols = array("<b>CODE</b>" => array("width" => 40), "<b>DESCRIPTION</b>" => array("width" => 410), "<b>AMOUNT</b>" => array("width" => 70)); // Deductions ------------------------------------------------------------ $deductions_out = array(); $deduction_pension_total = 0; $deduction_provident_total = 0; $deduction_medicalaid_total = 0; $deduction_medical_total2 = 0; $deduction_retirementann_total = 0; $deduction_premiumpol_total = 0; db_conn("cubit"); $sql = "SELECT * FROM emp_deductions WHERE empnum='{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee deductions from Cubit."); while ($ded_data = pg_fetch_array($rslt)) { $deductions_out[] = array("<b>CODE</b>" => "{$ded_data['code']}", "<b>DESCRIPTION</b>" => "{$ded_data['description']}", "<b>CLEARANCE NO</b>" => "{$ded_data['clearance_no']}", "<b>AMOUNT</b>" => (int) $ded_data["amount"]); } #handle pension deduction ... $sql = "SELECT amount FROM emp_ded WHERE emp='{$empnum}' AND description = 'Pension' AND type = 'DEDP' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee deductions from Cubit."); while ($empded_data = pg_fetch_array($rslt)) { $deduction_pension_total += $empded_data['amount']; } $deductions_out[] = array("<b>CODE</b>" => "4001", "<b>DESCRIPTION</b>" => "Current pension fund contributions", "<b>CLEARANCE NO</b>" => "", "<b>AMOUNT</b>" => (int) $deduction_pension_total); #handle provident deduction ... $sql = "SELECT amount FROM emp_ded WHERE emp='{$empnum}' AND description = 'Provident' AND type = 'DEDV' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee deductions from Cubit."); while ($empded_data = pg_fetch_array($rslt)) { $deduction_provident_total += $empded_data['amount']; } $deductions_out[] = array("<b>CODE</b>" => "4003", "<b>DESCRIPTION</b>" => "Current provident fund contributions", "<b>CLEARANCE NO</b>" => "", "<b>AMOUNT</b>" => (int) $deduction_provident_total); #handle medical DEDUCTIONS in income table ... $sql = "SELECT amount FROM emp_ded WHERE emp='{$empnum}' AND description = 'Medical Contribution' AND type = 'DEDM' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $deduction_medical_total2 += $empinc_data['amount']; } $deductions_out[] = array("<b>CODE</b>" => "4005", "<b>DESCRIPTION</b>" => "Medical Contribution", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => (int) $deduction_medical_total2); #handle retirement annuity deduction ... $sql = "SELECT amount FROM emp_ded WHERE emp='{$empnum}' AND description = 'Retirement Annuity Fund' AND type = 'DEDR' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee deductions from Cubit."); while ($empded_data = pg_fetch_array($rslt)) { $deduction_retirementann_total += $empded_data['amount']; } $deductions_out[] = array("<b>CODE</b>" => "4006", "<b>DESCRIPTION</b>" => "Current retirement annuity fund contributions", "<b>CLEARANCE NO</b>" => "", "<b>AMOUNT</b>" => (int) $deduction_retirementann_total); $sql = "SELECT * FROM emp_ded WHERE emp='{$empnum}' AND description!='UIF' AND description!='SDL' AND description!='PAYE' AND description!='Motorcar 1 Contribution for Use' AND description!='Motorcar 2 Contribution for Use' AND description!='Medical Contribution' AND description!='Pension' AND description!='Provident' AND description!='Retirement Annuity Fund' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee deductions from Cubit."); while ($empded_data = pg_fetch_array($rslt)) { $deduction_premiumpol_total += $empded_data['amount']; } $deductions_out[] = array("<b>CODE</b>" => "4018", "<b>DESCRIPTION</b>" => "Premiums paid on loss of income policies", "<b>CLEARANCE NO</b>" => "", "<b>AMOUNT</b>" => (int) $deduction_premiumpol_total); //old all encapsulating search ... only first to description checks were orginal ... // $sql = "SELECT * FROM emp_ded WHERE emp='$empnum' AND description!='UIF' AND description!='SDL' AND description!='Motorcar 1 Contribution for Use' AND description!='Motorcar 2 Contribution for Use' AND description!='Medical Contribution' AND description!='Pension' AND description!='Provident' AND description!='Retirement Annuity Fund'"; // $rslt = db_exec($sql) or errDie("Unable to retrieve employee deductions from Cubit."); // while ($empded_data = pg_fetch_array($rslt)) { // if ($empded_data["type"] != "PAYE") { // $deductions_out[] = array ( // "<b>CODE</b>"=>"$empded_data[code]", // "<b>DESCRIPTION</b>"=>"$empded_data[description]", // "<b>CLEARANCE NO</b>"=>"", // "<b>AMOUNT</b>"=>(int)$empded_data["amount"] // ); // } // } // cant just remove whatever deductions is on system if they havent actually been applied to salary (ie. salary processed) // this value will come from same place as the rest of the income/deductions ... wth // db_conn("cubit"); // $sql = "SELECT * FROM empdeduct WHERE empnum='$empnum'"; // $empded_rslt = db_exec($sql) or errDie("Unable to retrieve employee deductions from Cubit.'"); // // while ($empded_data = pg_fetch_array($empded_rslt)) { // db_conn("cubit"); // $sql = "SELECT deduction, code FROM salded WHERE id='$empded_data[dedid]' AND deduction!='UIF'"; // $rslt = db_exec($sql) or errDie("Unable to retrieve deduction information from Cubit."); // $ded_data = pg_fetch_array($rslt); // // $deductions_out[] = array ( // "<b>CODE</b>"=>"$ded_data[code]", // "<b>DESCRIPTION</b>"=>"$ded_data[deduction]", // "<b>CLEARANCE NO</b>"=>"$empded_data[clearance_no]", // "<b>AMOUNT</b>"=>(int)$empded_data["amount"], 2 // ); // } if (!isset($deductions_out[0])) { $deductions_out = array(array("<b>CODE</b>" => "", "<b>DESCRIPTION</b>" => "", "<b>CLEARANCE NO</b>" => "", "<b>AMOUNT</b>" => "")); } $deductions_cols = array("<b>CODE</b>" => array("width" => 40), "<b>DESCRIPTION</b>" => array("width" => 340), "<b>CLEARANCE NO</b>" => array("width" => 70), "<b>AMOUNT</b>" => array("width" => 70)); // Employees Tax deductions----------------------------------------------- $tax_amt = 0; // Retrieve PAYE amount from Cubit db_conn("cubit"); $sql = "SELECT * FROM emp_ded WHERE type='PAYE' AND emp = '{$empnum}' AND year = '{$cyear}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve PAYE deductions from Cubit"); $paye_amount = 0; while ($empded_data = pg_fetch_array($rslt)) { // add 375 to site if salary, -375 if reverse salary $tax_amt += 375 * ($empded_data["amount"] > 0 ? 1 : -1); $paye_amount += $empded_data["amount"]; } if ($tax_amt > $paye_amount) { $tax_amt = $paye_amount; $paye_amount = 0; } else { $paye_amount -= $tax_amt; } $tax_deductions_amount = $paye_amount + $tax_amt; $employees_tax_deductions_out = array(array("<b>CODE</b>" => "4101", "<b>DESCRIPTION</b>" => "STANDARD INCOME TAX ON EMPLOYEES-SITE", "<b>AMOUNT</b>" => sprint($tax_amt, 2)), array("<b>CODE</b>" => "4102", "<b>DESCRIPTION</b>" => "PAY AS YOU EARN - PAYE", "<b>AMOUNT</b>" => sprint($paye_amount, 2)), array("<b>CODE</b>" => "4103", "<b>DESCRIPTION</b>" => "TOTAL EMPLOYEES TAX", "<b>AMOUNT</b>" => sprint($tax_deductions_amount, 2))); $employees_tax_deductions_cols = array("<b>CODE</b>" => array("width" => 40), "<b>DESCRIPTION</b>" => array("width" => 410), "<b>AMOUNT</b>" => array("width" => 70)); // ----------------------------------------------------------------------- // Do the actual rendering of the pdf // ----------------------------------------------------------------------- $pdf =& new Cezpdf(); global $set_mainFont; $pdf->selectFont($set_mainFont); $pdf->addInfo("Title", "IRP 5 for {$empinfo['fnames']} {$empinfo['sname']}"); $pdf->addInfo("Author", USER_NAME); $irp5_pos = drawText(&$pdf, "<b>IRP 5</b>", 14, 520 - $pdf->getTextWidth(14, "<b>IRP 5</b>"), 0); $header_pos = drawText(&$pdf, $header_out, 12, 520 - $pdf->getTextWidth(12, $header_out), $irp5_pos['y'] + 14); // Employer information -------------------------------------------------- $employer_information_head = drawText(&$pdf, "<b>EMPLOYER INFORMATION</b>", 8, 0, $irp5_pos['y'] + 14); $employer_trading_name_pos = drawTable2(&$pdf, $employer_trading_name_out, 0, $employer_information_head['y'] + 2, 520, 1); $employer_irp5_number_pos = drawTable2(&$pdf, $employer_irp5_number_out, 0, $employer_trading_name_pos['y'], 260, 1); $employer_reference_number_pos = drawTable2(&$pdf, $employer_reference_number_out, 0, $employer_irp5_number_pos['y'], 260, 1); $employer_tax_year_pos = drawTable2(&$pdf, $employer_tax_year_out, 0, $employer_reference_number_pos['y'], 260, 1); $employer_diplomatic_indemnity_pos = drawTable2(&$pdf, $employer_diplomatic_indemnity_out, 0, $employer_tax_year_pos['y'], 260, 1); $employer_business_address_pos = drawTable2(&$pdf, $employer_business_address_out, $employer_irp5_number_pos['x'] + 20, $employer_trading_name_pos['y'], 240, 4); $employer_postal_code_pos = drawTable2(&$pdf, $employer_postal_code_out, $employer_irp5_number_pos['x'] + 20, $employer_business_address_pos['y'], 240, 1, $employer_postal_code_cols); // Employee information -------------------------------------------------- $employee_information_head = drawText(&$pdf, "<b>EMPLOYEE INFORMATION</b>", 8, 0, $employer_postal_code_pos['y'] + 15); $employee_nature_pos = drawTable2(&$pdf, $employee_nature_out, 0, $employee_information_head['y'], 100, 1); $employee_surname_pos = drawTable2(&$pdf, $employee_surname_out, $employee_nature_pos['x'] + 20, $employee_information_head['y'], 400, 1); $employee_first_names_pos = drawTable2(&$pdf, $employee_first_names_out, 0, $employee_nature_pos['y'], 400, 1); $employee_initials_pos = drawTable2(&$pdf, $employee_initials_out, $employee_first_names_pos['x'] + 20, $employee_nature_pos['y'], 100, 1); $employee_identity_number_pos = drawTable2(&$pdf, $employee_identity_number_out, 0, $employee_first_names_pos['y'], 260, 1); $employee_residential_pos = drawTable2(&$pdf, $employee_residential_out, $employee_identity_number_pos['x'] + 20, $employee_first_names_pos['y'], 240, 4); $employee_postal_code_pos = drawTable2(&$pdf, $employee_postal_code_out, $employee_identity_number_pos['x'] + 20, $employee_residential_pos['y'], 240, 1, $employee_postal_code_cols); $employee_number_pos = drawTable2(&$pdf, $employee_number_out, $employee_identity_number_pos['x'] + 20, $employee_postal_code_pos['y'], 240, 1); $employee_passport_number_pos = drawTable2(&$pdf, $employee_passport_number_out, 0, $employee_identity_number_pos['y'], 260, 1); $employee_date_of_birth_pos = drawTable2(&$pdf, $employee_date_of_birth_out, 0, $employee_passport_number_pos['y'], 260, 1); $employee_cc_number_pos = drawTable2(&$pdf, $employee_cc_number_out, 0, $employee_date_of_birth_pos['y'], 260, 1); $employee_tax_number_pos = drawTable2(&$pdf, $employee_tax_number_out, 0, $employee_cc_number_pos['y'], 260, 1); // Tax calculation information ------------------------------------------- $tax_calculation_head = drawText(&$pdf, "<b>TAX CALCULATION INFORMATION</b>", 8, 0, $employee_number_pos['y'] + 15); $tax_prd_employed_frm_pos = drawTable2(&$pdf, $tax_prd_employed_frm_out, 0, $tax_calculation_head['y'], 160, 1); $tax_prd_employed_to_pos = drawTable2(&$pdf, $tax_prd_employed_to_out, $tax_prd_employed_frm_pos['x'] + 20, $tax_calculation_head['y'], 160, 1); $tax_over_deduction_pos = drawTable2(&$pdf, $tax_over_deduction_out, $tax_prd_employed_to_pos['x'] + 20, $tax_calculation_head['y'], 160, 1); $tax_prd_in_year_pos = drawTable2(&$pdf, $tax_prd_in_year_out, 0, $tax_prd_employed_frm_pos['y'], 115, 1); $tax_prd_worked_pos = drawTable2(&$pdf, $tax_prd_worked_out, $tax_prd_in_year_pos['x'] + 20, $tax_prd_employed_frm_pos['y'], 115, 1); $tax_fixed_rate_income_pos = drawTable2(&$pdf, $tax_fixed_rate_income_out, $tax_prd_worked_pos['x'] + 20, $tax_prd_employed_frm_pos['y'], 115, 1); $tax_directive_number_pos = drawTable2(&$pdf, $tax_directive_number_out, $tax_fixed_rate_income_pos['x'] + 20, $tax_prd_employed_frm_pos['y'], 115, 1); // Income sources -------------------------------------------------------- $income_sources_head = drawText(&$pdf, "<b>INCOME SOURCE</b>", 8, 0, $tax_prd_in_year_pos['y'] + 15); $income_sources_pos = drawTable2(&$pdf, $income_sources_out, 0, $income_sources_head['y'] + 2, 520, 20, $income_sources_cols, 1); $gross_remuneration_head = drawText(&$pdf, "<b>GROSS REMUNERATION</b>", 8, 0, $income_sources_pos['y'] + 15); $gross_remuneration_pos = drawTable2(&$pdf, $gross_remuneration_out, 0, $gross_remuneration_head['y'] + 2, 520, 5, $gross_remuneration_cols, 1); $deductions_head = drawText(&$pdf, "<b>DEDUCTIONS</b>", 8, 0, $gross_remuneration_pos['y'] + 15); $deductions_pos = drawTable2(&$pdf, $deductions_out, 0, $deductions_head['y'] + 2, 520, 15, $deductions_cols, 1); $employees_tax_deductions_head = drawText(&$pdf, "<b>EMPLOYEES TAX DEDUCTIONS</b>", 8, 0, $deductions_pos['y'] + 15); $employees_tax_deductions_pos = drawTable2(&$pdf, $employees_tax_deductions_out, 0, $employees_tax_deductions_head['y'] + 2, 520, 3, $employees_tax_deductions_cols, 1); // Footer note ----------------------------------------------------------- $certificate_attatch = drawText(&$pdf, "Attach this certificate to your income tax return or retain it. / ", 6, 0, $employees_tax_deductions_pos['y'] + 10); $pdf->ezStream(); }
function display($_POST) { extract($_POST); global $PRDMON; #determine the date range based on period selection if (isset($year_to_process)) { switch ($year_to_process) { case "active": $fdate_year = getYearOfFinPrd(1); $fdate_month = $PRDMON[1]; $fdate_day = "1"; $tdate_year = getYearOfFinPrd(12); $tdate_month = $PRDMON[12]; $tdate_day = date("d", mktime(0, 0, 0, $PRDMON[12] + 1, 0, $tdate_year)); break; case "previous": $fdate_year = getYearOfFinPrd(1) - 1; $fdate_month = $PRDMON[1]; $fdate_day = "1"; $tdate_year = getYearOfFinPrd(12) - 1; $tdate_month = $PRDMON[12]; $tdate_day = date("d", mktime(0, 0, 0, $PRDMON[12] + 1, 0, $tdate_year)); break; default: $fdate_year = getYearOfFinPrd(1); $fdate_month = "03"; $fdate_day = "01"; $tdate_year = getYearOfFinPrd(12); $tdate_month = "02"; $tdate_day = date("d", mktime(0, 0, 0, 3, 0, $tdate_year)); } } // ----------------------------------------------------------------------- // Sanity checks // ----------------------------------------------------------------------- require_lib("validate"); $v = new validate(); // Does this employee number actually exist db_conn("cubit"); $sql = "SELECT * FROM employees WHERE empnum='" . (int) $empnum . "' AND div='" . USER_DIV . "'"; $empinf_rslt = db_exec($sql) or errDie("Unable to retrieve employee number from Cubit."); if (pg_num_rows($empinf_rslt) == 0) { $v->addError(0, "Employee number not found in Cubit."); } $v->isOk($fdate_month, "num", 1, 2, "Invalid from date (month)"); $v->isOk($fdate_year, "num", 4, 4, "Invalid from date (year)"); $v->isOk($tdate_month, "num", 1, 2, "Invalid to date (month)"); $v->isOk($tdate_year, "num", 4, 4, "Invalid to date (year)"); if ($fdate_month > 12) { $v->addError(0, "Invalid from date (month)"); } if ($fdate_year < 1970 || $fdate_year > 2050) { $v->addError(0, "Invalid from date (year)"); } if ($tdate_month > 12) { $v->addError(0, "Invalid to date (month)"); } if ($tdate_year < 1970 || $tdate_year > 2050) { $v->addError(0, "Invalid to date (year)"); } if ($fdate_day > getDaysInMonth((int) $fdate_month, $fdate_year)) { $v->addError(0, "Invalid from date (day)"); } if ($tdate_day > getDaysInMonth((int) $tdate_month, $tdate_year)) { $v->addError(0, "Invalid to date (day)"); } $from_time = mktime(0, 0, 0, $fdate_day, $fdate_month, $fdate_year); $to_time = mktime(0, 0, 0, $tdate_day, $tdate_month, $tdate_year); if ($from_time > $to_time) { $v->addError(0, "Invalid date range specified."); } if (isset($income_code)) { foreach ($income_code as $id => $value) { $v->isOk($income_code[$id], "numeric", 1, 4, "Invalid income code."); $v->isOk($income_description[$id], "string", 1, 80, "Invalid income description."); $v->isOk($income_rfind[$id], "string", 1, 30, "Invalid RF IND."); $v->isOk($income_amount[$id], "float", 1, 9, "Invalid income amount."); } } // Return the errors, if any if ($v->isError()) { $confirm = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $confirm .= "<li class='err'>{$e['msg']}</li>"; } return slct($confirm); } $from_date = "{$fdate_year}-{$fdate_month}-{$fdate_day}"; $to_date = "{$tdate_year}-{$tdate_month}-{$tdate_day}"; $gross_taxable_annual_payments = 0.0; $gross_non_taxable_income = 0.0; $gross_retirement_funding_income = 0.0; $gross_non_retirement_funding_income = 0.0; $gross_remuneration = 0.0; db_conn("cubit"); $sql = "SELECT * FROM compinfo"; $compinfo_rslt = db_exec($sql) or errDie("Unable to retrieve company information from Cubit."); $compinfo = pg_fetch_array($compinfo_rslt); db_conn("cubit"); $sql = "SELECT * FROM employees WHERE empnum='{$empnum}'"; $empinfo_rslt = db_exec($sql) or errDie("Unable to retrieve employee information from Cubit."); $empinfo = pg_fetch_array($empinfo_rslt); $header_out = "<b>Return of payment for work & services from which no employees tax was deducted</b>"; $employer_trading_name_out = array(array("<b>Trading or other name:</b> {$compinfo['compname']}")); $employer_irp5_number_out = array(array("<b>IT 3(a) number:</b> {$irp5_number}")); $employer_reference_number_out = array(array("<b>Reference number:</b> {$empinfo['taxref']}")); $employer_tax_year_out = array(array("<b>Tax year:</b> {$fdate_year}")); $employer_diplomatic_indemnity_out = array(array("<b>Diplomatic indemnity:</b> {$compinfo['diplomatic_indemnity']}")); $employer_business_address_out = array(array("<b>Employer business address:</b>"), array("{$compinfo['addr1']}"), array("{$compinfo['addr2']}"), array("{$compinfo['addr3']}")); $employer_postal_code_out = array(array("col1" => "<b>Postal Code:</b>", "col2" => "{$compinfo['addr4']}")); $employer_postal_code_cols = array("col1" => array("width" => 200, "justification" => "right"), "col2" => array("width" => 40, "justification" => "right")); // Extract the employee's birth date from her id number $bd_year = 1900 + substr($empinfo["idnum"], 0, 2); $bd_month = substr($empinfo["idnum"], 2, 2); $bd_day = substr($empinfo["idnum"], 4, 2); $employee_nature_out = array(array("<b>Nature of Person:</b> {$empinfo['nature']}")); $employee_surname_out = array(array("<b>Employee surname or trading name:</b> {$empinfo['sname']}")); $employee_first_names_out = array(array("<b>First two names:</b> {$empinfo['fnames']}")); $fnames = explode(" ", $empinfo["fnames"]); $initials = ""; foreach ($fnames as $name) { $initials .= strtoupper($name[0]); } $employee_initials_out = array(array("<b>Initials:</b> {$initials}")); $employee_identity_number_out = array(array("<b>Identity number:</b> {$empinfo['idnum']}")); $employee_passport_number_out = array(array("<b>Passport number:</b> {$empinfo['passport_number']}")); $employee_date_of_birth_out = array(array("<b>Date of birth:</b> {$bd_year}-{$bd_month}-{$bd_day}")); $employee_cc_number_out = array(array("<b>Company/CC/Trust number:</b> {$empinfo['cc_number']}")); $employee_tax_number_out = array(array("<b>Income Tax number:</b> {$empinfo['tax_number']}")); $employee_residential_out = array(array("<b>Employees residential address:</b>"), array("{$empinfo['res1']}"), array("{$empinfo['res2']}"), array("{$empinfo['res3']}")); $employee_postal_code_out = array(array("col1" => "<b>Postal Code:</b>", "col2" => "{$empinfo['res4']}")); $employee_postal_code_cols = array("col1" => array("width" => 200, "justification" => "right"), "col2" => array("width" => 40, "justification" => "right")); $employee_number_out = array(array("<b>Employee Number:</b> {$empinfo['empnum']}")); $tax_prd_employed_frm_out = array(array("<b>Period employed from:</b> {$prd_employed_frm}")); $tax_prd_employed_to_out = array(array("<b>Period employed to:</b> {$prd_employed_to}")); $tax_directive_number_out = array(array("<b>Directive number:</b> {$directive_number}")); // Income sources -------------------------------------------------------- $income_sources_out = array(); $income_taxable_total = 0; $income_reimburse_total = 0; $income_travelallowance_total = 0; $income_subsis_total = 0; $income_otherallowance_total = 0; $deduction_motorcar_total = 0; db_conn("cubit"); $sql = "SELECT amount FROM emp_inc WHERE emp='{$empnum}' AND description='Basic Salary'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $income_taxable_total += $empinc_data["amount"]; } $income_sources_out[] = array("<b>CODE</b>" => "3601", "<b>DESCRIPTION</b>" => "Income Taxable", "<b>RF IND</b>" => "N", "<b>AMOUNT</b>" => (int) $income_taxable_total); #handle travel allowances .... $sql = "SELECT amount FROM emp_inc WHERE emp='{$empnum}' AND description = 'Travel Allowance' AND type = 'INCT'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $income_travelallowance_total += $empinc_data['amount']; } $income_sources_out[] = array("<b>CODE</b>" => "3701", "<b>DESCRIPTION</b>" => "Travel Allowance", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => (int) $income_travelallowance_total); #handle reimbursements .... $sql = "SELECT amount FROM emp_inc WHERE emp='{$empnum}' AND description!='Basic Salary' AND ex = 'RBS'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $income_reimburse_total += $empinc_data['amount']; } $income_sources_out[] = array("<b>CODE</b>" => "3702", "<b>DESCRIPTION</b>" => "Reimbursements", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => (int) $income_reimburse_total); #handle subsistance allowances .... $sql = "SELECT amount FROM emp_inc WHERE emp='{$empnum}' AND description != 'Basic Salary' AND ex = 'SUBS' AND type = '2'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $income_subsis_total += $empinc_data['amount']; } $income_sources_out[] = array("<b>CODE</b>" => "3704", "<b>DESCRIPTION</b>" => "Subsistance Allowance", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => (int) $income_subsis_total); #handle other allowances .... $sql = "SELECT amount FROM emp_inc WHERE emp='{$empnum}' AND description != 'Basic Salary' AND description != 'Travel Allowance' AND ex != 'SUBS' AND ex != 'RBS' AND type = '2'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $income_otherallowance_total += $empinc_data['amount']; } $income_sources_out[] = array("<b>CODE</b>" => "3713", "<b>DESCRIPTION</b>" => "Other Allowances", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => (int) $income_otherallowance_total); #handle motorcar DEDUCTIONS in income table ... $sql = "SELECT amount FROM emp_ded WHERE emp='{$empnum}' AND (description = 'Motorcar 1 Contribution for Use' OR description = 'Motorcar 2 Contribution for Use') AND (type = 'DEDA' OR type = 'DEDB')"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee income sources from Cubit."); while ($empinc_data = pg_fetch_array($rslt)) { $deduction_motorcar_total += $empinc_data['amount']; } $income_sources_out[] = array("<b>CODE</b>" => "3802", "<b>DESCRIPTION</b>" => "Use Of Motor Vehicle", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => (int) $deduction_motorcar_total); if (!empty($nincome_code) || !empty($nincome_description) || !empty($nincome_rfind) || !empty($nincome_amount)) { $income_sources_out[] = array("<b>CODE</b>" => "{$nincome_code}", "<b>DESCRIPTION</b>" => "{$nincome_description}", "<b>RF IND</b>" => "{$nincome_rfind}", "<b>AMOUNT</b>" => (int) $nincome_amount); } if (isset($income_code)) { foreach ($income_code as $id => $value) { if ($income_code[$id] != 0) { $income_sources_out[] = array("<b>CODE</b>" => "{$income_code[$id]}", "<b>DESCRIPTION</b>" => "{$income_description[$id]}", "<b>RF IND</b>" => "{$income_rfind[$id]}", "<b>AMOUNT</b>" => (int) $income_amount[$id]); } else { $income_sources_out[] = array("<b>CODE</b>" => "", "<b>DESCRIPTION</b>" => "", "<b>RF IND</b>" => "", "<b>AMOUNT</b>" => ""); } } } $income_sources_cols = array("<b>CODE</b>" => array("width" => 40), "<b>DESCRIPTION</b>" => array("width" => 340), "<b>RF IND</b>" => array("width" => 70), "<b>AMOUNT</b>" => array("width" => 70)); // Gross renumeration ---------------------------------------------------- // Taxable annual payments db_conn("cubit"); $sql = "SELECT * FROM emp_inc WHERE code='3695' AND emp = '{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve taxable annual payments from Cubit."); while ($emp_inc_data = pg_fetch_array($rslt)) { $gross_taxable_annual_payments += $emp_inc_data["amount"]; } db_conn("cubit"); $sql = "SELECT * FROM emp_income_sources WHERE code='3695' AND empnum = '{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve taxable annual payments from Cubit."); while ($emp_income_sources_data = pg_fetch_array($rslt)) { $gross_taxable_annual_payments += $emp_income_sources_data["amount"]; } // Non taxable annual payments db_conn("cubit"); $sql = "SELECT * FROM emp_inc WHERE (code='3602' OR code='3604' OR code='3612' OR code='3703' OR code='3705' OR code='3709' OR code='3714') AND emp = '{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve non taxable payments from Cubit."); while ($emp_inc_data = pg_fetch_array($rslt)) { $gross_non_taxable_income += $emp_inc_data["amount"]; } db_conn("cubit"); $sql = "SELECT * FROM emp_income_sources WHERE (code='3602' OR code='3604' OR code='3612' OR code='3703' OR code='3705' OR code='3709' OR code='3714') AND empnum = '{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve non taxable payments from Cubit."); while ($emp_income_sources_data = pg_fetch_array($rslt)) { $gross_non_taxable_income += $emp_income_sources_data["amount"]; } // Gross retirement funding income db_conn("cubit"); $sql = "SELECT emp_pension, emp_ret FROM employees WHERE empnum='{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve gross retrirement funding from Cubit."); $emp_data = pg_fetch_array($rslt); $gross_retirement_funding_income += $gross_non_taxable_income / 100 * $emp_data["emp_pension"] + $emp_data["emp_ret"]; // Gross non retirement funding income db_conn("cubit"); $sql = "SELECT * FROM emp_inc WHERE (code!='3603' OR code!='3604' OR code!='3610' OR code!='3615') AND emp = '{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve gross non retirement funding from Cubit."); while ($emp_inc_data = pg_fetch_array($rslt)) { $gross_non_retirement_funding_income += $emp_inc_data["amount"]; } db_conn("cubit"); $sql = "SELECT * FROM emp_income_sources WHERE (code != '3603' OR code != '3604' OR code != '3610' OR code != '3615') AND empnum = '{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve gross non retirement funding from Cubit."); while ($emp_income_sources_data = pg_fetch_array($rslt)) { $gross_non_retirement_funding_income += $emp_income_sources_data["amount"]; } // Gross Remuneration $gross_remuneration = $gross_retirement_funding_income + $gross_non_retirement_funding_income; $gross_remuneration_out = array(array("<b>CODE</b>" => "3696", "<b>DESCRIPTION</b>" => "GROSS NON-TAXABLE INCOME", "<b>AMOUNT</b>" => (int) $gross_non_taxable_income), array("<b>CODE</b>" => "3697", "<b>DESCRIPTION</b>" => "GROSS RETIREMENT FUNDING INCOME", "<b>AMOUNT</b>" => (int) $gross_retirement_funding_income), array("<b>CODE</b>" => "3698", "<b>DESCRIPTION</b>" => "GROSS NON-RETIREMENT FUNDING INCOME", "<b>AMOUNT</b>" => (int) $gross_non_retirement_funding_income), array("<b>CODE</b>" => "3699", "<b>DESCRIPTION</b>" => "GROSS REMUNERATION", "<b>AMOUNT</b>" => (int) $gross_remuneration)); $gross_remuneration_cols = array("<b>CODE</b>" => array("width" => 40), "<b>DESCRIPTION</b>" => array("width" => 410), "<b>AMOUNT</b>" => array("width" => 70)); // Deductions ------------------------------------------------------------ $deductions_out = array(); $deduction_pension_total = 0; $deduction_provident_total = 0; $deduction_medicalaid_total = 0; $deduction_retirementann_total = 0; $deduction_premiumpol_total = 0; db_conn("cubit"); #handle pension deduction ... $sql = "SELECT amount FROM emp_ded WHERE emp='{$empnum}' AND description = 'Pension' AND type = 'DEDP'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee deductions from Cubit."); while ($empded_data = pg_fetch_array($rslt)) { $deduction_pension_total += $empded_data['amount']; } $deductions_out[] = array("<b>CODE</b>" => "4001", "<b>DESCRIPTION</b>" => "Current pension fund contributions", "<b>CLEARANCE NO</b>" => "", "<b>AMOUNT</b>" => (int) $deduction_pension_total); #handle provident deduction ... $sql = "SELECT amount FROM emp_ded WHERE emp='{$empnum}' AND description = 'Provident' AND type = 'DEDV'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee deductions from Cubit."); while ($empded_data = pg_fetch_array($rslt)) { $deduction_provident_total += $empded_data['amount']; } $deductions_out[] = array("<b>CODE</b>" => "4003", "<b>DESCRIPTION</b>" => "Current provident fund contributions", "<b>CLEARANCE NO</b>" => "", "<b>AMOUNT</b>" => (int) $deduction_provident_total); #handle retirement annuity deduction ... $sql = "SELECT amount FROM emp_ded WHERE emp='{$empnum}' AND description = 'Retirement Annuity Fund' AND type = 'DEDR'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee deductions from Cubit."); while ($empded_data = pg_fetch_array($rslt)) { $deduction_retirementann_total += $empded_data['amount']; } $deductions_out[] = array("<b>CODE</b>" => "4006", "<b>DESCRIPTION</b>" => "Current retirement annuity fund contributions", "<b>CLEARANCE NO</b>" => "", "<b>AMOUNT</b>" => (int) $deduction_retirementann_total); $sql = "SELECT * FROM emp_ded WHERE emp='{$empnum}' AND description!='UIF' AND description!='SDL' AND description!='PAYE' AND description!='Motorcar 1 Contribution for Use' AND description!='Motorcar 2 Contribution for Use' AND description!='Medical Contribution' AND description!='Pension' AND description!='Provident' AND description!='Retirement Annuity Fund'"; $rslt = db_exec($sql) or errDie("Unable to retrieve employee deductions from Cubit."); while ($empded_data = pg_fetch_array($rslt)) { $deduction_premiumpol_total += $empded_data['amount']; } $deductions_out[] = array("<b>CODE</b>" => "4018", "<b>DESCRIPTION</b>" => "Premiums paid on loss of income policies", "<b>CLEARANCE NO</b>" => "", "<b>AMOUNT</b>" => (int) $deduction_premiumpol_total); // db_conn("cubit"); // $sql = "SELECT * FROM empdeduct WHERE empnum='$empnum'"; // $empded_rslt = db_exec($sql) or errDie("Unable to retrieve employee deductions from Cubit.'"); // // while ($empded_data = pg_fetch_array($empded_rslt)) { // db_conn("cubit"); // $sql = "SELECT deduction, code FROM salded WHERE id='$empded_data[dedid]'"; // $rslt = db_exec($sql) or errDie("Unable to retrieve deduction information from Cubit."); // $ded_data = pg_fetch_array($rslt); // // $deductions_out[] = array ( // "<b>CODE</b>"=>"$ded_data[code]", // "<b>DESCRIPTION</b>"=>"$ded_data[deduction]", // "<b>CLEARANCE NO</b>"=>"$empded_data[clearance_no]", // "<b>AMOUNT</b>"=>(int)$empded_data["amount"], 2 // ); // } if (!isset($deductions_out[0])) { $deductions_out = array(array("<b>CODE</b>" => "", "<b>DESCRIPTION</b>" => "", "<b>CLEARANCE NO</b>" => "", "<b>AMOUNT</b>" => "")); } $deductions_cols = array("<b>CODE</b>" => array("width" => 40), "<b>DESCRIPTION</b>" => array("width" => 340), "<b>CLEARANCE NO</b>" => array("width" => 70), "<b>AMOUNT</b>" => array("width" => 70)); // Employees Tax deductions----------------------------------------------- $site_amount = 0; // Retrieve PAYE amount from Cubit db_conn("cubit"); $sql = "SELECT * FROM emp_ded WHERE type='PAYE' AND emp = '{$empnum}'"; $rslt = db_exec($sql) or errDie("Unable to retrieve PAYE deductions from Cubit"); $paye_amount = 0; while ($empded_data = pg_fetch_array($rslt)) { $paye_amount += $empded_data["amount"]; } // Total tax deductions $tax_deductions_amount = $site_amount + $paye_amount; $non_deduction_of_tax_out = array(array("<b>CODE</b>" => "01", "<b>DESCRIPTION</b>" => "DIRECTORS REMUNERATION - PRIVATE COMPANY / CC"), array("<b>CODE</b>" => "02", "<b>DESCRIPTION</b>" => "LESS THAN THE TAX THRESHOLD"), array("<b>CODE</b>" => "03", "<b>DESCRIPTION</b>" => "INDEPENDENT CONTRACTOR"), array("<b>CODE</b>" => "04", "<b>DESCRIPTION</b>" => "NON TAXABLE EARNINGS")); $non_deduction_of_tax_cols = array("<b>CODE</b>" => array("width" => 40)); if (!isset($reason_code)) { $reason_code = ""; } $reason_out = array(array("{$reason_code}")); // ----------------------------------------------------------------------- // Do the actual rendering of the pdf // ----------------------------------------------------------------------- $pdf =& new Cezpdf(); global $set_mainFont; $pdf->selectFont($set_mainFont); $pdf->addInfo("Title", "IT 3(a) for {$empinfo['fnames']} {$empinfo['sname']}"); $pdf->addInfo("Author", USER_NAME); $irp5_pos = drawText(&$pdf, "<b>IT 3(a)</b>", 14, 520 - $pdf->getTextWidth(14, "<b>IT 3(a)</b>"), 0); $header_pos = drawText(&$pdf, $header_out, 10, 520 - $pdf->getTextWidth(10, $header_out), $irp5_pos['y'] + 14); // Employer information -------------------------------------------------- $employer_information_head = drawText(&$pdf, "<b>EMPLOYER INFORMATION</b>", 8, 0, $irp5_pos['y'] + 14); $employer_trading_name_pos = drawTable2(&$pdf, $employer_trading_name_out, 0, $employer_information_head['y'] + 2, 520, 1); $employer_irp5_number_pos = drawTable2(&$pdf, $employer_irp5_number_out, 0, $employer_trading_name_pos['y'], 260, 1); $employer_reference_number_pos = drawTable2(&$pdf, $employer_reference_number_out, 0, $employer_irp5_number_pos['y'], 260, 1); $employer_tax_year_pos = drawTable2(&$pdf, $employer_tax_year_out, 0, $employer_reference_number_pos['y'], 260, 1); $employer_diplomatic_indemnity_pos = drawTable2(&$pdf, $employer_diplomatic_indemnity_out, 0, $employer_tax_year_pos['y'], 260, 1); $employer_business_address_pos = drawTable2(&$pdf, $employer_business_address_out, $employer_irp5_number_pos['x'] + 20, $employer_trading_name_pos['y'], 240, 4); $employer_postal_code_pos = drawTable2(&$pdf, $employer_postal_code_out, $employer_irp5_number_pos['x'] + 20, $employer_business_address_pos['y'], 240, 1, $employer_postal_code_cols); // Employee information -------------------------------------------------- $employee_information_head = drawText(&$pdf, "<b>EMPLOYEE INFORMATION</b>", 8, 0, $employer_postal_code_pos['y'] + 15); $employee_nature_pos = drawTable2(&$pdf, $employee_nature_out, 0, $employee_information_head['y'], 100, 1); $employee_surname_pos = drawTable2(&$pdf, $employee_surname_out, $employee_nature_pos['x'] + 20, $employee_information_head['y'], 400, 1); $employee_first_names_pos = drawTable2(&$pdf, $employee_first_names_out, 0, $employee_nature_pos['y'], 400, 1); $employee_initials_pos = drawTable2(&$pdf, $employee_initials_out, $employee_first_names_pos['x'] + 20, $employee_nature_pos['y'], 100, 1); $employee_identity_number_pos = drawTable2(&$pdf, $employee_identity_number_out, 0, $employee_first_names_pos['y'], 260, 1); $employee_residential_pos = drawTable2(&$pdf, $employee_residential_out, $employee_identity_number_pos['x'] + 20, $employee_first_names_pos['y'], 240, 4); $employee_postal_code_pos = drawTable2(&$pdf, $employee_postal_code_out, $employee_identity_number_pos['x'] + 20, $employee_residential_pos['y'], 240, 1, $employee_postal_code_cols); $employee_number_pos = drawTable2(&$pdf, $employee_number_out, $employee_identity_number_pos['x'] + 20, $employee_postal_code_pos['y'], 240, 1); $employee_passport_number_pos = drawTable2(&$pdf, $employee_passport_number_out, 0, $employee_identity_number_pos['y'], 260, 1); $employee_date_of_birth_pos = drawTable2(&$pdf, $employee_date_of_birth_out, 0, $employee_passport_number_pos['y'], 260, 1); $employee_cc_number_pos = drawTable2(&$pdf, $employee_cc_number_out, 0, $employee_date_of_birth_pos['y'], 260, 1); $employee_tax_number_pos = drawTable2(&$pdf, $employee_tax_number_out, 0, $employee_cc_number_pos['y'], 260, 1); // Tax calculation information ------------------------------------------- $tax_calculation_head = drawText(&$pdf, "<b>TAX CALCULATION INFORMATION</b>", 8, 0, $employee_number_pos['y'] + 15); $tax_prd_employed_frm_pos = drawTable2(&$pdf, $tax_prd_employed_frm_out, 0, $tax_calculation_head['y'], 160, 1); $tax_prd_employed_to_pos = drawTable2(&$pdf, $tax_prd_employed_to_out, $tax_prd_employed_frm_pos['x'] + 20, $tax_calculation_head['y'], 160, 1); drawTable2(&$pdf, $tax_directive_number_out, $tax_prd_employed_to_pos['x'] + 20, $tax_calculation_head['y'], 160, 1); // Income sources -------------------------------------------------------- $income_sources_head = drawText(&$pdf, "<b>INCOME SOURCE</b>", 8, 0, $tax_prd_employed_frm_pos['y'] + 15); $income_sources_pos = drawTable2(&$pdf, $income_sources_out, 0, $income_sources_head['y'] + 2, 520, 20, $income_sources_cols, 1); $gross_remuneration_head = drawText(&$pdf, "<b>GROSS REMUNERATION</b>", 8, 0, $income_sources_pos['y'] + 15); $gross_remuneration_pos = drawTable2(&$pdf, $gross_remuneration_out, 0, $gross_remuneration_head['y'] + 2, 520, 4, $gross_remuneration_cols, 1); $deductions_head = drawText(&$pdf, "<b>DEDUCTIONS</b>", 8, 0, $gross_remuneration_pos['y'] + 15); $deductions_pos = drawTable2(&$pdf, $deductions_out, 0, $deductions_head['y'] + 2, 520, 15, $deductions_cols, 1); $non_deduction_of_tax_head = drawText(&$pdf, "<b>REASON FOR NON DEDUCTION OF EMPLOYEES TAX MUST BE STATED</b>", 8, 0, $deductions_pos['y'] + 15); $non_deduction_of_tax_pos = drawTable2(&$pdf, $non_deduction_of_tax_out, 0, $non_deduction_of_tax_head['y'] + 2, 420, 4, $non_deduction_of_tax_cols, 1); $reason_text = drawText(&$pdf, "<b>Reason Code</b>", 7, $non_deduction_of_tax_pos['x'] + 10, $non_deduction_of_tax_pos['y']); $reason_pos = drawTable2(&$pdf, $reason_out, $reason_text['x'] + 15, $non_deduction_of_tax_pos['y'] - 10, 40, 1); // Footer note ----------------------------------------------------------- $certificate_attatch = drawText(&$pdf, "Attach this copy to your form IT 3", 6, 0, $non_deduction_of_tax_pos['y'] + 10); $pdf->ezStream(); }