Your IP : 216.73.216.40


Current Path : /var/www/html/mmishra/erp/views/
Upload File :
Current File : /var/www/html/mmishra/erp/views/anf_view.php

<?php
//if (!class_exists($erpView)) {
// face detector class
	require_once __DIR__."/erp_view.php";
//}

class anfView extends erpView {
    var $controller;
    var $model;

    public function __construct($controller, $model) {
               
		$this->controller 				= $controller;	// instantiate controller
        $this->model 					= $model;		// instantiate model
    }

    public function __destruct() {
		// throw last executed sql statement
		//if ($this->model->sqlStmt) print("<hr>" .$this->model->sqlStmt);
		
        if (!in_array($this->controller->menu, ['insurence', 'upload', 'nodeficit', 'payment', 'PGPayment', 'PGResponse', 'specimen', 'import', 'booking', 'photograph', 'photoshop']) && !in_array($this->controller->action, ['print', 'show', 'docUpload'])) {
			print(":|:" .$this->erpMenus(). ":|:" .$this->erpXupdate(). ":|:" .$this->erpError(). ":|:" .$this->erpClock(). ":|:" .$this->erpLogin());
		}
	}
	
    public function anfDashboard($action, $batchYear) {
		$app					= $this->controller->app;
		$menu					= $this->controller->menu;
		
		$str 					= $this->pageHeader($findbar, $toolbar, 1);
		
		foreach ($this->controller->degreeLevels as $degreeLevel => $desc) {
			$programs 						= $this->model->selectProgram($degreeLevel);
			foreach ($programs as $program) {
				// loop through records
				$programID 					= $program['programID'];
				$minRank1 					= 0;
				$maxRank1 					= 0;
				// initialize variables
				$aTotal 					= 0; 
				$eTotal						= 0;
				$sTotal 					= 0; 
				$wTotal 					= 0; 
				$genders 					= ''; 
				$student4 					= null;
				foreach (array_keys($this->controller->genders) as $key) {
					$applicant1[$key] 		= 0;
					$enroll1[$key]			= 0;
					$student1[$key] 		= 0;
					$withdrawal1[$key] 		= 0;
					$genders .= "<th>$key</th>";
				}
				foreach (array_keys(array_merge($this->controller->categorys, $this->controller->dasaCategorys)) as $key1) {
					if ($key1 == 'OBC-NCL') $key1 = 'OBC';
					$applicant2[$key1] 		= '';
					$student2[$key1] 		= '';
					$withdrawal2[$key1] 	= '';
					$minRank[$key1]			= '';
					$maxRank[$key1]			= '';
					foreach (array_keys($this->controller->genders) as $key2) {
						$applicant3[$key1.'-'.$key2] 	= '';
						$student3[$key1.'-'.$key2] 		= '';
						$withdrawal3[$key1.'-'.$key2] 	= '';
					}
				}
				
				$states						 = $this->model->listStates('IN');
				foreach ($states as $row) {
					$state[$programID.'-'.$row['stateID']] = 0;
				}
				
				$countrys 					= $this->model->listCountrys();
				foreach ($countrys as $row) {
					$country[$programID.'-'.$row['countryCode']] = 0;
				}

				// gender/category wise applicants breakup
				$applicants 				= $this->model->selectApplicant1($programID);
				foreach ($applicants as $applicant) {			
					if ($applicant['pwdStatus'] == 'Y') {
						$acat 				= 'PWD';
					} else {
						$acat 				= trim($applicant['offerCategory']);
					}
					if (!$acat) $acat 		= trim($applicant['category']);
					$acat 					= (strtoupper($acat) == 'OPEN' ? 'GEN' : $acat);
					$acat 					= (strtoupper($acat) == 'OBC-NCL' ? 'OBC' : $acat);
					$asex 					= trim($applicant['gender']);

					$applicant1[substr($asex, 0, 1)]++;
					if (!$applicant2[$acat]) 	$applicant2[$acat] = 0;
					$applicant2[$acat]++;
					$applicant3[$acat.'-'.$asex]++;
					$aTotal++;
				}
				$aBreakup 					= "<div align='right'>";
				foreach ($applicant1 as $key => $value) {
					$aBreakup .= $this->controller->genders[$key]. " : " .str_pad($value, 3, '0', STR_PAD_LEFT). "&nbsp;&nbsp;<br>";
				}
				$aBreakup .= "<hr width='70%' align='right'><b>Total : " .str_pad($aTotal, 3, '0', STR_PAD_LEFT). "&nbsp;&nbsp;</b></div>";
					
				// gender/category wise student breakup
				$enrolments 				= $this->model->selectEnrolment($programID);
				foreach ($enrolments as $enrolment) {
					if ($enrolment['pwdStatus'] == 'Y') {
						$ecat 				= 'PWD';
					} else {
						$ecat 				= trim($enrolment['enrolCategory']);
					}
					if (!$ecat) $ecat 		= trim($enrolment['category']);
					$ecat 					= (strtoupper($ecat) == 'OPEN' ? 'GEN' : $ecat);
					$ecat 					= (strtoupper($ecat) == 'OBC-NCL' ? 'OBC' : $ecat);
					$esex 					= trim($enrolment['gender']);
					
					$student1[$esex]++;
					$enroll1[$esex]++;
					$eTotal++;
					if (!$student2[$ecat]) $student2[$ecat] = 0;
					$student2[$ecat]++;
					$student3[$ecat. '-' .$esex]++;
					if (!$student4[trim($enrolment['loginID'])]) $student4[trim($enrolment['loginID'])] = 0;
					$student4[trim($enrolment['loginID'])]++;
					
					$state[$programID. '-' .$enrolment['homeState']]++;
					$country[$programID. '-' .$enrolment['nationality']]++;

					if (!$minRank1) {
						if (!in_array($ecat, array_keys($this->controller->dasaCategorys))) {
							$minRank1 			= $enrolment['lastScore'];
							$minRanker1			= $enrolment['enrolmentNo']. '-' .$enrolment['nameEnglish']. ' (' .$enrolment['nameHindi']. ') ' .$ecat;
						}
					}
					if (!$minRank[$ecat]) {
						$minRank[$ecat] 	= $enrolment['lastScore'];
						$minRanker[$ecat]	= $enrolment['enrolmentNo']. '-' .$enrolment['nameEnglish']. ' (' .$enrolment['nameHindi']. ')';
					}
					
					if ($enrolment['lastScore'] < $minRank1) {
						if (!in_array($ecat, array_keys($this->controller->dasaCategorys))) {
							$minRank1			= $enrolment['lastScore'];
							$minRanker1			= $enrolment['enrolmentNo']. '-' .$enrolment['nameEnglish']. ' (' .$enrolment['nameHindi']. ') ' .$ecat;
						}
					} else if ($enrolment['lastScore'] > $maxRank1) {
						$maxRank1 			= $enrolment['lastScore'];
						$maxRanker1			= $enrolment['enrolmentNo']. '-' .$enrolment['nameEnglish']. ' (' .$enrolment['nameHindi']. ') ' .$ecat;
					}
					if ($enrolment['lastScore'] < $minRank[$ecat]) {
						if (!in_array($ecat, array_keys($this->controller->dasaCategorys))) {
							$minRank[$ecat] 	= $enrolment['lastScore'];
							$minRanker[$ecat]	= $enrolment['enrolmentNo']. '-' .$enrolment['nameEnglish']. ' (' .$enrolment['nameHindi']. ')';
						}
					} else if ($enrolment['lastScore'] > $maxRank[$ecat]) {
						$maxRank[$ecat] 	= $enrolment['lastScore'];
						$maxRanker[$ecat]	= $enrolment['enrolmentNo']. '-' .$enrolment['nameEnglish']. ' (' .$enrolment['nameHindi']. ')';
					}
					$sTotal++;
				}
				$sBreakup 					= "<div align='right'>";
				foreach ($student1 as $key => $value) {
					$sBreakup .= $this->controller->genders[$key]. " : " .str_pad($value, 3, '0', STR_PAD_LEFT). "&nbsp;&nbsp;<br>";
				}
				$sBreakup .= "<hr width='70%' align='right'><b>Total : " .str_pad($sTotal, 3, '0', STR_PAD_LEFT). "&nbsp;&nbsp;</b>
				</div>";

				// gender/category wise withdrawal breakup
				$withdrawals 				= $this->model->listWithdrawals($programID);
				foreach ($withdrawals as $withdrawal) {			
					if ($withdrawal['pwdStatus'] == 'Y') {
						$wcat 				= 'PWD';
					} else { 
						$wcat 				= trim($withdrawal['enrolCategory']);
					}
					if (!$wcat) $wcat		= trim($withdrawal['category']);
					$wcat 					= (strtoupper($wcat) == 'OPEN' ? 'GEN' : $wcat);
					$wcat 					= (strtoupper($wcat) == 'OBC-NCL' ? 'OBC' : $wcat);
					$wsex 					= trim($withdrawal['gender']);

					$withdrawal1[$wsex]++;
					$enroll1[$wsex]++;
					$eTotal++;
					if (!$withdrawal2[$wcat]) 	$withdrawal2[$wcat] = 0;
					$withdrawal2[$wcat]++;
					$withdrawal3[$wcat.'-'.$wsex]++;
					$wTotal++;
				}
				$wBreakup = "<div align='right'>";
				foreach ($withdrawal1 as $key => $value) {
					$wBreakup .= $this->controller->genders[$key]. " : " .str_pad($value, 3, '0', STR_PAD_LEFT). "&nbsp;&nbsp;<br>";
				}
				$wBreakup .= "<hr width='70%' align='right'><b>Total : " .str_pad($wTotal, 3, '0', STR_PAD_LEFT). "&nbsp;&nbsp;</b>
				</div>";
					
				$eBreakup = "<div align='right'>";
				foreach ($enroll1 as $key => $value) {
					$eBreakup .= $this->controller->genders[$key]. " : " .str_pad($value, 3, '0', STR_PAD_LEFT). "&nbsp;&nbsp;<br>";
				}
				$eBreakup .= "<hr width='70%' align='right'><b>Total : " .str_pad($eTotal, 3, '0', STR_PAD_LEFT). "&nbsp;&nbsp;</b>
				</div>";

				$str .= "<table border='1' class='report'>
				<tr valign='top'><th width='10%'>Program</th><th width='8%'>Student In-roll</th><th width='8%'>Student Withdrawn</th><th width='8%'>Total Enrollment</th><th width='8%'>Candidates Reported</th><th>Category-wise Summary Table</th></tr>
				<tr valign='top'><th><br>$desc<br><br>" .$program['programCode']. "<br><br>Duration: " .$program['timeDuration']. " Year<br>Enrollment: " .$program['rollnoPrefix']. " / " .$program['lastRollno']."<br><p>Min. " .($degreeLevel == 'UG' ? 'Rank' : 'Score'). ": <a title='$minRanker1'>" .($degreeLevel == 'UG' ? intval($minRank1) : $minRank1). "</a><br> Max. " .($degreeLevel == 'UG' ? 'Rank' : 'Score'). ": <a title='$maxRanker1'>" .($degreeLevel == 'UG' ? intval($maxRank1) : $maxRank1). "</a></p></th><td>$sBreakup</td><td>$wBreakup</td><td>$eBreakup</td><td>$aBreakup</td>
				<td><table border='1' class='report'>
				<tr valign='top'><th width='10%'>Category</th><th width='10%'>Fees</th><th width='10%'>Mess</th><th>Candidates</th>$genders<th>Admissions</th>$genders<th>Withdrawals</th>$genders<th>Min" .($degreeLevel == 'UG' ? 'Rank' : 'Score'). "</th><th>Max" .($degreeLevel == 'UG' ? 'Rank' : 'Score'). "</th></tr>";

				$cats 						= array_keys(($degreeLevel == 'UG' ? array_merge($this->controller->categorys, $this->controller->dasaCategorys) : $this->controller->categorys));
				foreach ($cats as $category) {
					$no++;
					if ($category == 'OBC-NCL') continue;//$category = 'OBC';
					$fees 					= $this->model->getPayable($programID, $category, 1);
					$mess 					= $this->model->getPayable($programID, $category, 2);
										
					$aTotal1 				= $applicant2[$category];
					$sTotal1 				= $student2[$category];
					$wTotal1 				= $withdrawal2[$category];
					
					$sBreakup 				= ''; 
					$wBreakup 				= ''; 
					$aBreakup 				= '';
					foreach (array_keys($this->controller->genders) as $key) {
						$aBreakup .= "<td align='center'>" .$applicant3[$category. '-' .$key]. '</td>';
						$sBreakup .= "<td align='center'>" .$student3[$category. '-' .$key]. '</td>';
						$wBreakup .= "<td align='center'>" .$withdrawal3[$category. '-' .$key]. '</td>';
					}		
					$str .= "<tr valign='top'><td width='15%' nowrap>&nbsp;$category</td>
					<td width='15%' align='right' nowrap>" .($fees['curency'] == 'INR' ? $this->rs : $this->do). ' ' .$fees['amount']. "&nbsp;</td>
					<td width='15%' align='right' nowrap>" .($mess['curency'] == 'INR' ? $this->rs : $this->do). ' ' .$mess['amount']. "&nbsp;</td>
					<td align='center'>" .$aTotal1. "</td>" .$aBreakup. "
					<td align='center'>" .$sTotal1. "</td>" .$sBreakup. "
					<td align='center'>" .$wTotal1. "</td>" .$wBreakup;
					if (in_array($category, array_keys($this->controller->dasaCategorys))) {
						$str .= "<td align='center'>N/A</td><td align='center'>N/A</td></tr>";
					} else {
						$str .= "<td align='center'><a title='" .$minRanker[$category]. "'>" .($degreeLevel == 'UG' ? intval($minRank[$category]) : $minRank[$category]). "</a></td><td align='center'><a title='" .$maxRanker[$category]. "'>" .($degreeLevel == 'UG' ? intval($maxRank[$category]) : $maxRank[$category]). "</a></td></tr>";
					}
				}
				
				$str .= "</table></td></tr>";
				if ($sTotal) {
					$str .= "<tr><th>State-wise Count</th><td colspan='5'>";
					foreach ($states as $row) {
						$str .= ($state[$programID.'-'.$row['stateID']] ? "[" .$row['stateName']. ": " .$state[$programID.'-'.$row['stateID']]. "] " : '');
					}
					$str .= "</td></tr>
					<tr><th>Country-wise Count</th><td colspan='5'>";
					foreach ($countrys as $row) {
						$str .= ($country[$programID.'-'.$row['countryCode']] ? "[" .$row['countryName']. ": " .$country[$programID.'-'.$row['countryCode']]. "] " : '');
					}
					$str .= "</td></tr>
					<tr><th>Staff-wise Count</th><td colspan='5'>";
					foreach ($student4 as $key => $value) {
						$str .= "[" .ucwords($key) .": $value] ";
					}
					$str .= "</td></tr>";
				}			
				$str .= "</table><br>";
		
				flush();
			}
		}
		
		return $str; 
	}
    	
    public function anfFeehead($action, $feeheadID) {
		$app					= $this->controller->app;
		$menu					= $this->controller->menu;
		
		$feeheadID 				= $this->controller->manageFeehead($action, $feeheadID);// initiate controller action 
		// controller locks/unlocks field through manage call
		$ro 					= $this->controller->editLock;							// ensure default edit lock

        $feeheads 				= $this->model->listFeeheads();
        $data 					= $this->model->getFeehead($feeheadID);					// get record
       	$toolbar				= $this->erpToolbar();
		
		$str = $this->pageHeader($findbar, $toolbar);
		
		$str .= "<table width='100%'>
		<tr><th width='70%'>Feehead #{$feeheadID} Detail</th><th width='30%'>Feehead List</th></tr>
        <tr valign='top'><td>
        <table class='interface'>
		<tr><td nowrap width='20%'>Feehead Code</td><td><input type='text' name='feeheadCode' size='50' value='" .$data['feeheadCode']. "' placeholder='unique 3 characters' $ro></td></tr>
       	<tr><td nowrap>Feehead Name</td><td><input type='text' name='feeheadName' size='50' value='" .$data['feeheadName']. "' placeholder='max. 255 character' $ro></td></tr>
		<tr><td nowrap>Account Type</td><td><select name='accountType' style='width: 280px'>";
		foreach ($this->controller->accountTypes as $code => $desc) {
			$str .= "<option value='$code'" .($data['accountType'] == $code ? self::SL : $this->dis). ">$desc</option>";
		}
		$str .= "</select></td></tr>
		<tr><td>Payment Term</td><td><select name='paymentTerm' style='width: 280px'>";
		foreach ($this->controller->paymentTerms as $code => $desc) {
			$str .= "<option value='$code'" .($data['paymentTerm'] == $code ? self::SL : $this->dis). ">$desc</option>";
		}
		$str .= "</select></td></tr>
        </table>
		</td><td>
		<ol class='listbar'>";		
        foreach($feeheads as $feehead) {
			$str .= "<li>" .($feehead['feeheadID'] == $feeheadID ? "<b>" .$feehead['feeheadName']. "</b>" : "<a href='' onclick=\"inner('$app/$menu/open/" .$feehead['feeheadID']."'); return false;\">" .$feehead['feeheadName']. "</a>"). " (" .$feehead['status']. ")</li>";
        }
        $str .= "</ol></td></tr>
        </table>" .$this->pageFooter('', $toolbar);
				
        return $str;
    }

    public function anfFeechart($action, $feechartID) {
		$app					= $this->controller->app;
		$menu					= $this->controller->menu;
		$programID				= $this->controller->params[0];
		$category				= $this->controller->params[1];

		$feechartID 			= $this->controller->manageFeechart($action, $feechartID);  	// initiate controller action 
		$ro						= $this->controller->editLock;
		
		$programs 				= $this->model->selectProgram();
		$feeheads 				= $this->model->selectFeehead();

       	$feecharts				= $this->model->selectFeechart($programID, $category);
				
		$toolbar 				= ($programID && $category ? $this->erpToolbar() : '');

		$findbar = "Program <select name='programID1' style='width: 200px' onchange=\"inner('$app/$menu/open/0/'+this.options[this.selectedIndex].value+'/0'); return false;\">
		<option value='0'>Select</option>";
		foreach ($programs as $program) {
			$findbar .= "<option value='" .$program['programID']. "'" .($programID == $program['programID'] ? self::SL : ''). ">" .$program['programCode']. "</option>";
			if ($programID == $program['programID']) {
				$dl = $program['degreeLevel'];
			}
		}
		asort($this->controller->categorys);
		asort($this->controller->dasaCategorys);
		$cats = ($dl == 'UG' ? array_merge($this->controller->categorys, $this->controller->dasaCategorys) : $this->controller->categorys);

		$findbar .= "</select>
		Category <select name='category1' style='width: 200px' onchange=\"inner('$app/$menu/open/0/$programID/'+this.options[this.selectedIndex].value); return false;\">
		<option value='0'>Select</option>";
		foreach ($cats as $code => $desc) {
			$findbar .= "<option value='$code'" .($category == $code ? self::SL : ''). ">$code</option>";
		}
		$findbar .= "</select>";
		
		$str = $this->pageHeader($findbar, $toolbar);
		if ($programID && $category) {
			$str .= "<table width='100%' class='interface'>
			<tr><th width='40%'>Fee #{$feechartID} Detail</th><th>Other Category/Program Having Same Fee Structure</th></tr>
			<tr valign='top'><td><table class='interface'>
			<tr><th>#</th><th>Fee Head</th><th>Payment Term</th><th>Fee Amount</th></tr>";
			foreach($feecharts as $feechart) {
				$i++;
				$heads[$i] = $feechart['feeheadID'];
				if ($feechart['paymentTerm'] == 9) {
					$total -= $feechart['feeAmount'];
				} else { 
					$total += $feechart['feeAmount'];
				}
				$str .= "<tr valign='top'><td>$i</td>";
				if ($feechart['feechartID'] == $feechartID) {
					$categorys		= explode(',', $feechart['category']);
					$programIDs		= explode(',', $feechart['programID']);

					$str .= "<td><b>" .$feechart['feeheadName']. "</b><input type='hidden' name='feeheadID' value='" .$feechart['feeheadID']. "'></td>
					<td>" .$this->controller->paymentTerms[$feechart['paymentTerm']]. "</td>
					<td align='right' nowrap><select name='currency' style='width: 50px'>";
					foreach ($this->controller->currencys as $code => $desc) {
						$str .= "<option value='$code'" .($feechart['currency'] == $code ? self::SL : $this->dis). ">$code</option>";
					}
					$str .= "</select> <input type='number' name='feeAmount' style='width: 100px' value='" .$feechart['feeAmount']. "' placeholder='decimal format' $ro></td><td>";
				} else {
					$str .= "<td><a href='' onclick=\"inner('$app/$menu/open/" .$feechart['feechartID']. "/$programID/$category'); return false;\">" .$feechart['feeheadName']. "</a></td>
					<td>" .$this->controller->paymentTerms[$feechart['paymentTerm']]. "</td>
					<td align='right'>" .($feechart['currency'] == 'INR' ? $this->rs : $this->do). $feechart['feeAmount'] ."</td>";
				}
				$str .= "</tr>";			
			}
			if ($action == 'new') {
				$str .= "<tr valign='top'><td>New</td><td colspan='2'><select name='feeheadID' style='width: 90%'>
				<option value=''>Select</option>";
				foreach ($feeheads as $feehead) {
					$str .= (in_array($feehead['feeheadID'], $heads) ? '' : "<option value='" .$feehead['feeheadID']. "' " .$this->dis. ">" .$feehead['feeheadCode']. ' - ' .$feehead['feeheadName']. ' (' .$this->controller->paymentTerms[$feehead['paymentTerm']]. ")</option>");
				}
				$str .= "</select></td><td align='right' nowrap><select name='currency' style='width: 50px'>";
				foreach ($this->controller->currencys as $code => $desc) {
					$str .= "<option value='$code' " .$this->dis. ">$code</option>";
				}
				$str .= "</select> <input type='number' name='feeAmount' style='width: 100px' value='" .$data['feeAmount']. "' placeholder='decimal format' $ro></td></tr>";
			}
			$str .= "<tr><th colspan='3'>Total Admission Fees</th><th>" .($feechart['currency'] == 'INR' ? $this->rs : $this->do). ' ' .number_format($total, 2). "</th></tr>
			</table></td><td align='center'>";

			foreach ($this->controller->degreeLevels as $code => $desc) {
				$col++;
				$degrees[$col] = $code;
				$oprograms		= $this->model->selectProgram($code);
				foreach ($oprograms as $oprogram) {
					//if ($programID != $oprogram['programID']) $progs[$code] .= "<input type='checkbox' id='prg' name='programID[]' value='" .$oprogram['programID']. "'" .(in_array($oprogram['programID'], $programIDs) ? self::CK : $this->dis). ">" .$oprogram['programCode']. '<br>';
					$progs[$code] .= "<input type='checkbox' id='prg' name='programID[]' value='" .$oprogram['programID']. "'" .((in_array($oprogram['programID'], $programIDs) || $oprogram['programID'] == $programID) ? self::CK : $this->dis). ">" .$oprogram['programCode']. '<br>';
				}
			}
			
			$str .= "<table class='report'>
			<tr valign='top'><td>";
			foreach ($this->controller->categorys as $code => $desc) {
				//if ($code != $category) $str .= "<input type='checkbox' id='cat' name='category[]' value='$code'" .(in_array($code, $categorys) ? self::CK : $this->dis). ">$code - $desc<br>";
				$str .= "<input type='checkbox' id='cat' name='category[]' value='$code'" .((in_array($code, $categorys) || $code == $category) ? self::CK : $this->dis). ">$code - $desc<br>";
			}
			if ($dl == 'UG') {
				$str .= "</td><td>";
				foreach ($this->controller->dasaCategorys as $code => $desc) {
					//if ($code != $category) $str .= "<input type='checkbox' id='cat' name='category[]' value='$code'" .(in_array($code, $categorys) ? self::CK : $this->dis). ">$code - $desc<br>";
					$str .= "<input type='checkbox' id='cat' name='category[]' value='$code'" .((in_array($code, $categorys) || $code == $category) ? self::CK : $this->dis). ">$code - $desc<br>";
				}
			}
			$str .= "</td></tr></table>
			<span class='findbar'><input type='checkbox' onclick='toggle(this,\"cat\")'> Toggle All Categorys</span>
			<table class='report'>
			<tr><th>". implode('</th><th>', $degrees). "</th></tr>
			<tr valign='top'><td>" .implode('</td><td>', $progs). "</td></tr></table>
			<span class='findbar'><input type='checkbox' onclick='toggle(this,\"prg\")'> Toggle All Programs</span>
			</td></tr></table>" .$this->pageFooter('', $toolbar);
		} else {
			$str .= "<h1 align='center'>Select program and category to proceed with.</h1>";
		}
		
        return $str;
    }

	public function anfPayment($action, $studentID) {
		$app					= $this->controller->app;		// required for toolbar and urls
		$menu					= $this->controller->menu;		// required for toolbar and urls
		$account				= $this->controller->params[0];
		$amount					= $this->controller->params[1];
		$currency				= $this->controller->params[2];

		$paymentID				= $this->controller->managePayment($action, $studentID);
		$ro 					= '';
		$programID				= $this->model->getProgramIDByStudentID($studentID);
		
		if ($amount) {
			$toolbar = "<a href='' onclick=\"inner('$app/$menu/refresh/$studentID/$account/$amount/$currency'); return false;\" title='Refresh Page'><span class='button'><i class='fas fa-sync-alt'></i></span></a>
			<a href='' onclick=\"inner('$app/enrolment/open/$studentID/$programID'); return false;\" title='Go Back'><span class='button'><i class='fas fa-arrow-circle-left'></i></span></a>
			<a href='' onclick=\"inner('$app/$menu/save/$studentID/$account/$amount/$currency'); return false;\" title='Pay Offline'><span class='button'><i class='far fa-save'></i></span></a>";
		}
		
		$str = $this->pageHeader($findbar, $toolbar);
		$str .= $this->studentDetail($studentID);
	
		if ($amount) {
			$str .= "<hr width='50%'><h1 class='alert' align='center'>Above information are required for ONLINE " .$this->controller->accountTypes[$account]. " payment.</h1><hr width='50%'>
			<table class='interface'>
			<tr><th colspan='10'>" .$this->controller->accountTypes[$account]. " Payment</th></tr>
			<tr><td nowrap align='right'><b>Amount</b> ($currency)</td><td nowrap><input type='text' name='payAmount' size='10' value='$amount'></td>
			<td nowrap align='right'>Payment Date</td><td><input type='text' name='datePayment' size='10' value='" . date("Y-m-d"). "' placeholder='YYYY-MM-DD format'></td>
			<td nowrap align='right'>Payment Mode</td><td><select name='paymentMode' style='width: 100px' on change=\"form.no.text='UTR'; return false;\">";
			foreach ($this->controller->paymentModes as $mode) {
				$str .= "<option value='$mode'>$mode</option>";
			}
			$str .= "</select></td>
			<td align='right' nowrap><label for='tno'>Invoice No.</lable></td><td><input type='text' name='paymentNo' size='10' value='' placeholder='Payment No.'></td>
			<td align='right' nowrap><label for='bnk'>Bank Name</label></td><td><input type='text' name='bankName' size='20' value='' placeholder='Payee bank name'></td></tr>
			</table>" .$this->pageFooter('', $toolbar). "
			<ul>
			<li><u>On approval of part payments, amount may be adjusted here.</u></li>
			<li><i>Use Online Payment Gateway for credit/debit cards, net banking or Point of Sale (POS) terminal for credit/debit card swapping.</i></li>
			</ul>
			
			<script language='javascript'>
			$('select[name=paymentMode]').change(function() {
			var selected = $('option:selected', this).text().trim();

			if(selected == 'NEFT') {
				$('label[for=tno]').text('UTR No.');
				$('label[for=bnk]').text('Bank Name');
			} else if (selected == 'DD') {
				$('label[for=tno]').text('DD No.');  
				$('label[for=bnk]').text('Bank Name');
			} else if (selected == 'Alumni') {
				$('label[for=tno]').text('Alumni RollNo.');
				$('label[for=bnk]').text('Remark');
			} else {
				$('label[for=tno]').text('Invoice No');
				$('label[for=bnk]').text('Bank Name');
			}
			});
			</script>";
		} else {
			$str .= "<center><span class='plainbar'><b class='alert'>Nothing due</b></span></center>";
		}
		$str .= "</center><br><br>" .$this->anfTransactions($studentID);
		
        return $str;
	}

	public function anfTransactions($studentID) {
		$transactions 		= $this->model->listPayments($studentID);

		$str = "<table width='100%'>
		<tr><th colspan='7'>Payment #{$studentID} Transactions</th></tr>";
		if ($transactions) {
			$str .= "<tr><th>#</th><th>Account</th><th>Payment No.</th><th>Payment Date</th><th>Payment Mode</th><th>Bank Name</th><th align='right'>Amount</th></tr>";
			foreach ($transactions as $transaction) {
				$i++;
				$str .= "<tr><td>$i</td><td>" .$this->controller->accountTypes[$transaction['accountType']]. "</td><td>" . $transaction['paymentNo']. "</td><td>" .$transaction['datePayment']. "</td><td>" .$transaction['paymentMode']. "</td><td>" .$transaction['bankName']. "</td><td align='right'>" .($transaction['currency'] == 'INR' ? $this->rs : $this->do). " " .$transaction['payAmount']. "</td></tr>";
			}
		} else {
			$str .= "<tr><td colspan='7'><b class='alert'>None</b></td></tr>";
		}
		$str .= "</table>";

		return $str;
	}

	public function anfGateway($action, $studentID) {
		$app				= $this->controller->app;				// required for toolbar and urls
		$menu				= $this->controller->menu;				// required for toolbar and urls
        $account			= $this->controller->params[0];
		
		$applicantID		= $this->model->getApplicantIDByStudentID($studentID);
        $data 				= $this->model->getApplicant($applicantID);	// get record
		
		$programID			= $data['programID'];			// to get program detail
		
		$offerCategory 		= $data['offerCategory'];
		$category 			= $data['category'] ? $data['category'] : $offerCategory; // for DASA candidates
		$category 			= ($data['pwdStatus'] == 'Y' ? 'PWD' : $category);

		$program			= $this->model->getProgram($programID); 
		$dLevel				= $program['degreeLevel'];
		
		$amount				= $_POST['amount'];
		$currency			= $_POST['currency'];
		
		// save payments in database
		$toolbar = "<a href='' onclick=\"inner('$app/$menu/new/$studentID/$account/$amount/$currency'); return false;\" title='Refresh Page'><span class='button'><i class='fas fa-sync-alt'></i></span></a>
		<a href='' onclick=\"inner('$app/payment/new/$studentID/$account/$amount/$currency'); return false;\" title='Go Back'><span class='button'><i class='fas fa-arrow-circle-left'></i></span></a>";

		// ============================ HDFC Bank PG
		$HASHING_METHOD 		= "sha512"; // md5,sha1

		if (strtoupper($action) == 'FEES') {
			// fees account
			$hashData			= "020bc4ca9304d76f471b03213f73d035";
			$pg1['account_id'] 	= "25146";
			$accountType		= 1;
			$reference			= $data['rollNo']. '-Fees';
		} else {
			// mess account
			$hashData			= "7bd65b21e13f2446b64d2594029fd957";
			$pg1['account_id'] 	= "28546";	
			$accountType		= 2;
			$reference			= $data['rollNo']. '-Mess';
		}
		
		$pg1['mode'] 			= "LIVE";
		$pg1['channel'] 		= "10";

		$pg1['reference_no'] 	= $reference;
		$pg1['description'] 	= $data['batchYear']. "-" .$program['programCode'];
		$pg1['amount'] 			= $amount;
		$pg1['currency'] 		= $currency;
		$pg1['return_url'] 		= "https://erp.iiita.ac.in/outer/anf/PGResponse/online/$studentID/HDFC/$accountType";

		$pg1['name'] 			= $data['nameEnglish']; 	
		$pg1['phone'] 			= $data['phoneNo'];
		$pg1['email'] 			= $data['email']; 	
		$pg1['address'] 		= $data['homeAddress'];
		$pg1['city'] 			= $this->model->getDistrictNameByDistrictID($data['homeDistrict']); 	
		$pg1['state'] 			= $this->model->getStateNameByStateID($data['homeState']); 	
		$pg1['postal_code'] 	= $data['homePIN']; 	
		$pg1['country'] 		= $data['nationality']; 	

		unset($_POST['securekey']);
		unset($_POST['submitted']);
		unset($_POST['curency']);
		unset($_POST['studentID']);

		ksort($pg1);
		foreach ($pg1 as $key => $value){
			//echo '[' .$key. '-' .$value. ']';
			if (strlen($value) > 0) {
				$hashData .= '|'.$value;
			}
		}
		if (strlen($hashData) > 0) {
			$secureHash = strtoupper(hash($HASHING_METHOD, $hashData));
		}

		// ========================= CANARA Bank PG

		$pg2['prodid'] 			= 'IIIT';
		$pg2['amt'] 			= $amount;
		$pg2['txncurr'] 		= $currency;
		$pg2['txnscamt'] 		= $amount;
		$pg2['ru']				= "https://erp.iiita.ac.in/outer/anf/PGResponse/online/$studentID/ATOM/1";
		$pg2['clientcode']		= $data['rollNo']; 		//rollno
		$pg2['txnid']			= $data['rollNo']; 		//rollno
		$pg2['date']			= date("Y-d-m");

		$pg2['TType'] 			= 'NBFundTransfer';
		$pg2['custacc'] 		= '0627101019766';
		$pg2['bookingid'] 		= '100001';
		
		$pg2['udf1'] 			= $data['nameEnglish']; 	
		$pg2['udf2'] 			= $data['email']; 	
		$pg2['udf3'] 			= $data['phoneNo'];
		$pg2['udf4'] 			= $reference;
		$pg2['udf5'] 			= $data['batchYear']. "-" .$program['programCode'];
		$pg2['udf6'] 			= $studentID;	
		$pg2['udf9'] 			= 1;	// semester
		
		foreach ($pg2 as $key => $value) {
			$queryString .= $key . '=' .$value. '&';
		}
		
		$str = $this->pageHeader($findbar, $toolbar);
		$str .= $this->candidateProfile($studentID);
		
		$str .= "<table class='interface'>
		<tr><td width='8%' nowrap>". $program['entranceName']. " Roll No.</td><td width='12%'><b>" .$data['rollNo']. "</b></td>
		<td width='8%' nowrap align='right'>Name</td><td colspan='3'><b>" .$data['nameEnglish']. ' (' .$data['nameHindi']. ")</b></td>
		<td width='8%' nowrap align='right'>Contact</td><td width='12%'><b>" .$data['phoneNo']. ", " .$data['email']. "</b></td>
		<td width='8%' align='right'>Aadhaar No.</td><td width='12%'><b>" .$data['aadhaarNo']. "</b></td></tr>
		</table>Above information are required for online payment.
		<div align='center'><h1>" .$this->controller->accountTypes[$account]. "</h1>
		<h4>Payable Amount: $currency " .number_format($_POST['amount'], 2). "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
		if ($account == 2 || $dLevel == 'UG') {
			$str .= "<a href='' onclick=\"document.erpForm.submit(); return false;\" target='new' title='Confirm Payment'><img src='images/hdfc.png' width='60' height='20'></a>"; 
		} else {
			$str .= "<a href='https://erp.iiita.ac.in/atom.php?{$queryString}proceed=1' title='Confirm Payment' target='new'><img src='images/atom.png' width='60' height='20'></a>";
		}
		$str .= "</h4>
		<h5>For payment you may route through either HDFC or ATOM Gateway, accordingly bank may charge for online transactions.</h5>
		</div>";

		foreach($pg1 as $key => $value) {
			$str .= "<input type='hidden' name='" .$key. "' value='" .$value. "'>";
		}
		$str .= "<input type='hidden' name='secure_hash' value='" .$secureHash. "'>" .$this->pageFooter('', $toolbar);
		
        return $str;
	}

	public function anfReceipt($action, $studentID) {
		$app					= $this->controller->app;
		$menu					= $this->controller->menu;
		$withdrawal				= $this->controller->params[0];
		
		$enrolmentID			= $this->model->getEnrolmentIDByStudentID($studentID);
		$enrolment				= $this->model->getEnrolment($enrolmentID);

		if ($enrolment) {
			$studentID			= $enrolment['studentID'];
			$programID			= $enrolment['programID'];
			$enrolmentNo		= $enrolment['enrolmentNo'];
			$category			= $enrolment['category'];
			$enrolCategory 		= $enrolment['enrolCategory'];
			$pwdStatus			= $enrolment['pwdStatus'];
			$accountNo			= $enrolment['accountNo'];
			$holderName			= $enrolment['holderName'];
			$bankName			= $enrolment['bankName'];
			$ifscCode			= $enrolment['ifscCode'];
			$districtName		= $this->model->getDistrictNameByDistrictID($enrolment['homeDistrict']);    
			$stateName 			= $this->model->getStateNameByStateID($enrolment['homeState']);
			$countryName		= strtoupper($this->model->getCountryNameByCountryCode($enrolment['nationality']));
			
			$allotteeID		 	= $this->model->getAllotteeIDByAllotteeNo($enrolmentNo);
			$allottee			= $this->model->getAllottee($allotteeID);
			$hostelID			= $allottee['hostelID'];
			$roomID				= $allottee['roomID'];
		
			$hostelCode			= $this->model->getHostelCodeByHostelID($hostelID);

			$room				= $this->model->getRoom($roomID);
			$roomNo				= $room['roomNo'];
			$floorNo			= $room['floorNo'];
			$hostelRoom			= "$roomNo in $hostelCode (" .$this->controller->floorNos[$floorNo]. " floor)";
			
			try {
				$photo 			= $this->model->getMyUpload($studentID, 'PHO');
				$psign 			= $this->model->getMyUpload($studentID, 'SIG');
			} catch (Exception $e) {
				print $e->__toString();
			}
			$institute			= $this->model->getInstitute();
			$program 			= $this->model->getProgram($programID);

			// generate pdf file of receipt
			$pdf 				= new erpLetterPad([], $institute);
			$pdf->autoScriptToLang 	= true;
			$pdf->autoLangToFont 	= true;
			$pdf->SetDisplayMode(real, 'default');
			// create first page
			$pdf->AddPage();
			$pdf->SetTitle('ERP PDF Generator');
			$pdf->SetAuthor('IIIT-A');
			$pdf->SetAutoPageBreak(0);
			
			$pdf->SetXY(20, 38);
			$pdf->SetFont('Times', 'I', 8);
			$pdf->Cell(178, 5, "Ref. No.: IIITA/A&F/" .$_SESSION["batchYear"]. '/' .$enrolmentNo. '/' .$studentID, 0, 0, 'R');

			$pdf->SetXY(20, 45);
			$pdf->SetFont('Times', 'U', 13);
			$pdf->Cell(0, 0, 'Provisional Fee Receipt - ' .$enrolment['batchYear'], 0, 1, 'C');
			$pdf->SetFont('Times', 'I', 11);
			$pdf->Cell(0, 12, '( Under ' .$enrolment['enrolCategory']. ' Category )', 0, 1, 'C');
			$pdf->Ln(3);

			try {
				$pdf->Image(($photo ? "https://erp.iiita.ac.in/uploads/photos/{$photo}" : "https://erp.iiita.ac.in/images/dummy.jpg"), 175, 48, 22, 28);
			} catch (Exception $e) {
				$pdf->cell(175, 48, $e->getMessage(), 0, 1, 'L');
			}	
			
			$passYear = $enrolment['batchYear'] + $program['timeDuration'];

			$y = 60;
			$pdf->SetXY(20, $y);


			foreach ($this->controller->dasaCategorys as $key => $value) {
				if ($key == $enrolCategory) $feesCategory = $enrolCategory;
			} 
			if (!$feesCategory) $feesCategory = ($pwdStatus == 'Y' ? 'PWD' : $category);
		
			$candidateID	= $this->model->getCandidateIDByRollNo($this->model->getRollNoByStudentID($studentID));
			$candidate		= $this->model->getCandidate($candidateID);					
			
			$payables = $this->model->listPayables($enrolment['programID'], $feesCategory);
			foreach ($payables as $payable) {
				if ($candidate['alumni'] == 'Y' && $payable['feeheadName'] == 'Alumni Fund') {
				} else {
					$fees .= "<tr><td>" .$payable['feeheadName']. "</td><td>(" .explode(' ', $this->controller->accountTypes[$payable['accountType']])[0]. ")</td><td>" .$this->controller->paymentTerms[$payable['paymentTerm']]. "</td><td align='right' nowrap>" .$payable['currency']. ' ' .number_format($payable['feeAmount'], 2). "</td></tr>";
					if ($payable['paymentTerm'] < 9) {
						$totalFees += $payable['feeAmount'];
					} else {
						$totalFees -= $payable['feeAmount'];
					}
					$y += 5;
				}
			}
			$fees .= "<tr><td colspan='3' align='right'><br><b>Total</b></td><td align='right'><hr><b>" .($payable['currency'] ? $payable['currency'] : $this->rs). ' ' .number_format($totalFees, 2). "</b></td></tr>";

			$prepaids = $this->model->listPrepaids($programID, $feesCategory);
			foreach ($prepaids as $prepaid) {
				$paid .= "<tr><td>Fees</td><td>" .$prepaid['feeheadName']. "</td><td>Counselling</td><td>(Direct)</td><td align='right'>" .$prepaid['currency']. ' ' .number_format($prepaid['feeAmount'], 2). "</td></tr>";
				$totalPaid += $prepaid['feeAmount'];
			}
			$payments = $this->model->listPayments($studentID);
			foreach ($payments as $payment) {
				$paid .= "<tr><td>" .explode(' ', $this->controller->accountTypes[$payment['accountType']])[0]. "</td><td>" .$payment['paymentNo']. "</td><td>" .$payment['datePayment']. "</td><td>(" .$payment['paymentMode']. ")</td><td align='right' nowrap>" .($payment['currency'] ? $payment['currency'] : 'INR'). ' ' .number_format($payment['payAmount'], 2). "</td></tr>";
				$totalPaid += $payment['payAmount'];
			}
			if ($this->model->getMyExemption($studentID, 1)) {
				$paid .= "<tr><td colspan='5'>Fees payment exempted by competent authority temporarily (till " .$this->model->getMyExemption($studentID, 1). ") on written equest of student.</td></tr>";
			}
			
			if ($this->model->getMyExemption($studentID, 2)) {
				$y += 5;
				$paid .= "<tr><td colspan='5'>Mess charge payment exempted by competent authority temporarily (till " .$this->model->getMyExemption($studentID, 2). ") on written request of student.</td></tr>";
			}

			$paid .= "<tr><td colspan='4' align='right'><br><b>Total</b></td><td align='right'><hr><b>" .($payment['currency'] ? $payment['currency'] : $this->rs). ' ' .number_format($totalPaid, 2). "</b></td></tr>";

			$pdf->SetFont('Times', '', 10);
			$y = 60;
			$pdf->SetXY(20, $y);
			$pdf->WriteHTML("
			<table width='100%' cellspecing='5' cellpadding='0' style='font-size: 11px;'>
			<tr><td colspan='3' style='padding-top: 15px; padding-bottom: 5px'><h3>Student Detail</h3></td></tr>
			<tr><td width='17%' nowrap style='padding-left: 10px'>Program Name</td><td width='3%'>:</td><td width='80%'>" .$program['programCode']. "</td></tr>			
			<tr><td nowrap style='padding-left: 10px'>Batch Year</td><td>:</td><td>" .$enrolment['batchYear']. ' - ' . $passYear. "</td></tr>
			<tr><td nowrap style='padding-left: 10px'>Enrollment No.</td><td>:</td><td>" .$enrolment['enrolmentNo']. "<br></td></tr>");
			if ($enrolment['hbookNo']) $pdf->WriteHTML("<tr><td nowrap style='padding-left: 10px'>Health Booklet No.</td><td>:</td><td>" .str_pad($enrolment['hbookNo'], 5, '0', STR_PAD_LEFT). "</td></tr>");

			$pdf->WriteHTML("<tr><td colspan='3' style='padding-top: 15px; padding-bottom: 5px'><h3>Personal Detail</h3></td></tr>
			<tr><td nowrap style='padding-left: 10px'>Student Name</td><td>:</td><td>" .$enrolment['nameEnglish']. ' (' .trim($enrolment['nameHindi']). ')' .($enrolment['gender'] == 'F' ? ' D/o ' : ' S/o '). $enrolment['fatherName']. "</td><tr>
			<tr><td nowrap style='padding-left: 10px'>Address</td><td>:</td><td>" .$enrolment['homeAddress']. $districtName. '-' .$enrolment['homePIN']. ' (' .$stateName. ') ' .strtoupper($nationality). "</td></tr>
			
			<tr><td colspan='3' style='padding-top: 15px; padding-bottom: 5px'><h3>Fees Detail</h3></td></tr>
			<tr><td colspan='3' style='padding-left: 10px'><table width='100%' cellspecing='5' cellpadding='0' style='font-size: 11px;'>
			<tr><td width='55%'><b>Fee Heads</b></td><td width='10%'><b>(Account)</b></td><td width='15%' nowrap><b>Payment Term</b></td><td width='20%' nowrap align='right'><b>Amount</b></td></tr>
			$fees
			</table></td></tr>
			<tr><td colspan='3' style='padding-top: 15px; padding-bottom: 5px'><h3>Payment Detail</h3></td></tr>
			<tr><td colspan='3' style='padding-left: 10px'><table width='100%' cellspecing='5' cellpadding='0' style='font-size: 11px;'>
			<tr><td width='20%'><b>Account</b></td><td width='20%'><b>Payment No.</b></td><td width='20%'><b>Dated</b></td><td width='20%'><b>(Payment Mode)</b></td><td width='20%' nowrap align='right'><b>Amount</b></td></tr>
			$paid
			</table></td></tr>
			<tr><td colspan='2' style='padding-top: 15px; padding-bottom: 5px'><h3>Account Detail</h3></td><td><i>(for refund purposes)</i></td></tr>
			<tr><td colspan='3' style='padding-left: 10px'><table width='100%' cellspecing='5' cellpadding='0' style='font-size: 11px;'>
			<tr><td width='20%'><b>Account No.</b></td><td width='30%'><b>Holder Name</b></td><td width='30%'><b>Bank Name</b></td><td width='20%'><b>IFSC Code</b></td></tr>
			<tr><td>$accountNo</td><td>$holderName</td><td>$bankName</td><td>$ifscCode</td></tr>
			</table></td></tr>
			</table>");

			$y = 267;
			$pdf->SetTextColor(0, 0, 0);
			$pdf->SetFont('Times', 'B', 10);
			$pdf->SetXY(10, $y);
			$pdf->Cell(0, 10, '[ Seal & Signatures ]', 0, 1, 'C');
			$y += 8;
			$pdf->SetDrawColor(0, 0, 0);
			$pdf->Line(0, $y, 500, $y);

			$pdf->SetFont('Helvetica', 'B', 9);
			try {
				$pdf->Image(($psign ? 'https://erp.iiita.ac.in/uploads/signatures/' .$psign : 'https://erp.iiita.ac.in/images/fake.png'), 22, 276, 15, 8);
			} catch (Exception $e) {
				$pdf->cell(22, $y, $e->getMessage(), 0, 1, 'L');
			}	
			$y += 5;
			$pdf->SetXY(14, $y);
			$pdf->Cell(0, 10, '(Student)                                                   (Parent/Guardian)                                                    (A/c Office)', 0, 1, 'C');
			
			$y += 8;
			$pdf->Line(0, $y, 500, $y);

			$pdf->SetFont('Helvetica', 'I', 6.5);
			$pdf->SetXY(150, $y);
			$pdf->Cell(0, 5, 'Processed by: ' .$_SESSION['loginID']. ' (dated: ' .substr($enrolment['dateEnrolment'], 0, 10). ')', 0, 1, 'R');

			$outFile 		= 'receipt-' .strtolower($enrolmentNo). '.pdf';
			$pdf->Output(__DIR__ ."/../uploads/receipts/$outFile", 'F');

			$str = $this->showPDF('receipts', $outFile);
		}
			
	    return $str;
	}

	public function anfPGPayment($action, $studentID) {
		$app					= $this->controller->app;
		$menu					= $this->controller->menu;
        $account				= $this->controller->params[0];
        $amount					= $this->controller->params[1];
        $currency				= $this->controller->params[2];
		
        $applicantID			= $this->model->getApplicantIDByStudentID($studentID);
        $data 					= $this->model->getApplicant($applicantID);	// get record
		$programID				= $data['programID'];		
		
		$program				= $this->model->getProgram($programID);
		$dLevel					= $program['degreeLevel'];
		
		$str = "<form name='payment' method='POST' action='https://secure.ebs.in/pg/ma/payment/request/' target='self'>";
		
		$HASHING_METHOD 		= "sha512";
		
		// HDFC Bank PG details
		if ($account == 1) {
			// fees account
			$hashData			= "020bc4ca9304d76f471b03213f73d035";
			$pg1['account_id'] 	= "25146";
			$account			= 1;
			$pg1['reference_no']= $data['rollNo']. "-Fees";
		} else {
			// COW account
			$hashData			= "7bd65b21e13f2446b64d2594029fd957";
			$pg1['account_id'] 	= "28546";
			$account			= 2;
			$pg1['reference_no']= $data['rollNo']. "-Mess";
		}

		$pg1['channel']			= "10";
		$pg1['mode'] 			= "LIVE";

		$pg1['description']		= $data['batchYear']. "-" .$program['programCode'];
		$pg1['amount'] 			= $amount;
		$pg1['currency'] 		= $currency;
		$pg1['return_url'] 		= "https://erp.iiita.ac.in/outer/anf/PGResponse/online/$studentID/HDFC/$account";

		$pg1['name'] 			= trim($data['nameEnglish']); 	
		$pg1['phone'] 			= trim($data['phoneNo']);
		$pg1['email'] 			= trim($data['email']); 	
		$pg1['address'] 		= trim($data['homeAddress']);
		$pg1['city'] 			= $this->model->getDistrictNameByDistrictID($data['homeDistrict']); 	
		$pg1['state'] 			= $this->model->getStateNameByStateID($data['homeState']); 	
		$pg1['postal_code'] 	= trim($data['homePIN']); 	
		$pg1['country'] 		= trim($data['nationality']); 	

		unset($_POST['securekey']);
		unset($_POST['submitted']);

		ksort($pg1);
		foreach ($pg1 as $key => $value){
			$str .= "<input type='hidden' name='$key' value='$value'>";
			if (strlen($value) > 0) {
				$hashData .= '|' .$value;
			}
		}
		if (strlen($hashData) > 0) {
			$secureHash 		= strtoupper(hash($HASHING_METHOD, $hashData));
		}
		$str .= "<input type='hidden' name='secure_hash' value='$secureHash'>";
		
		// CANARA Bank PG details
		$pg2['product'] 		= "IIIT";
		$pg2['TType'] 			= "NBFundTransfer";
		$pg2['AccountNo'] 		= "0627101019766";
		$pg2['ru']				= "https://erp.iiita.ac.in/outer/anf/PGResponse/online/$studentID/ATOM/1";
		$pg2['bookingid'] 		= "100001";
		
		$pg2['clientcode']		= trim($data['rollNo']); 		//urlencode(base64_encode(rollno))
		$pg2['udf1'] 			= trim($data['nameEnglish']); 	
		$pg2['udf2'] 			= trim($data['email']); 	
		$pg2['udf3'] 			= trim($data['phoneNo']);
		$pg2['udf4'] 			= trim($data['rollNo']). '-Fees';
		$pg2['udf5'] 			= $data['batchYear']. "-" .$program['programCode'];
		$pg2['udf6'] 			= $studentID;	
		$pg2['udf9'] 			= 1;	// semester
		$pg2['amount'] 			= $amount;

		ksort($pg2);
		foreach ($pg2 as $key => $value) {
			$queryString .= $key. '=' .$value. '&';
		}
		
		$str .= "<b style='text-align: center'> Payable amount: $currency " .number_format($amount, 2). "  [ Pay by ";
		if ($account == 2 || $dLevel == 'UG') {
			$str .= "<a href='' onclick=\"document.payment.submit(); return false;\" target='_top' title='Confirm Fees Payment'><img src='/images/hdfc.png' width='60' height='20'></a>";
		} else {
			$str .= "<a href='https://erp.iiita.ac.in/atom.php?{$queryString}action=$action' title='Confirm Fees Payment' target='_new'><img src='/images/atom.png' width='60' height='20'></a>";
		}
		$str .= " ] $status</b>
		</form>";

        return $str;
	}
	
	public function anfPGResponse($action, $studentID) {
		$app					= $this->controller->app;				// required for toolbar and urls
		$menu					= $this->controller->menu;				// required for toolbar and urls
		$pg						= $this->controller->params[0];
		$accountType			= $this->controller->params[1];
		
		$studentID				= $this->controller->managePayment($action, $studentID);
		
		$str = $this->pageHeader($menu);
		$str .= "<br>" .$this->controller->accountTypes[$accountType]. " Payment of Roll No. " .$this->model->getRollNoByStudentID($studentID). " thru $pg Payment Gateway
		<br><span class='findbar'><span class='alert'>Status: " .$this->controller->errorText. "</span></span><br><br>
		<b>Parameters received:</b>
		<table class='report'>";
		
		foreach ($_REQUEST as $key => $value) {
			$str .= "<tr><td>$key</td><td>: $value</td></tr>";
		}
		$str .= "</table>
		<a href='https://paynetzuat.atomtech.in/paynetz/vfts?merchantid=18589&merchanttxnid=" .$_REQUEST['mer_txn']. "&amt=" .$_REQUEST['amt']. "&tdate=" .date("Y-m-d"). "' target='_blank' title='Check Tansaction'>Check Transaction Status</a>";		
		//transaction tracking url

		return $str;
	}


	public function anfFeecharts($action, $programID) {
		$app	 				= $this->controller->app;					// application envoked        
		$menu 					= $this->controller->menu;					// menu envoked        
						
		$programs				= $this->model->selectProgram();	// get record		
		$program				= $this->model->getProgram($programID);	// get record
		$dl 					= $program['degreeLevel'];

		$toolbar				= $this->erpPrintbar();
		$cats 					= ($dl == 'UG' ? array_merge($this->controller->categorys, $this->controller->dasaCategorys) : $this->controller->categorys);

		$str = $this->pageHeader($findbar, $toolbar);
		$str .= "<table class='report' width='100%'>";
		
		if ($programID) {
			$feecharts 				= $this->model->selectFeechart($programID);
			$str .= "<tr><th width='25%'>Fee Head/Category</th><th>Account</th><th>Term</th><th nowrap>" .implode('</th><th nowrap>', array_keys($cats))."</th></tr>";
			foreach ($feecharts as $feechart) {
				if ($feechart['feeheadID'] != $feeheadID) {
					if ($feeheadID) $str .= "</tr>";
					$str .= "<tr><th>" .$feechart['feeheadName']. "</th><td nowrap>" .$this->controller->accountTypes[$feechart['accountType']]. "</td><td nowrap>" .$this->controller->paymentTerms[$feechart['paymentTerm']]. "</td>";
				}
				$categorys		= explode(',', $feechart['category']);
				foreach (array_keys($cats) as $code) {
					if (in_array($code, $categorys)) {
						$currency= ($feechart['currency'] == 'INR' ? $this->rs : $this->do);
						$str .= "<td style='font-size: 10px; text-align: right' nowrap>$currency " .number_format($feechart['feeAmount'], 2). "</td>";
						$curency[$code]	= $currency;
						$total[$code] += $feechart['feeAmount'];
					}
				}
				$feeheadID 		= $feechart['feeheadID'];
			}
			$str .= "<tr><th colspan='3'>Total (Fees + Mess Charge)</th><th nowrap>$currency" .implode("</th><th nowrap>$currency", array_map("number_format", $total, array_fill(0, count($total), 2))). "</th></tr>";
		} else {
			$fees	 			= $this->model->listFeecharts();
			foreach ($fees as $fee) {
				$programIDs 	= explode(',', $fee['programID']);
				$categorys 		= explode(',', $fee['category']);
				foreach ($programIDs as $programID) {
					foreach ($categorys as $category) {
						$curency[$programID][$category] = ($fee['currency'] == 'INR' ? $this->rs : $this->do);
						$amount[$programID][$category] += $fee['feeAmount'];
					}
				}
			}
			$str .= "<tr><th width='25%'>Program/Category</th><th nowrap>" .implode('</th><th nowrap>', array_keys($cats)). "</th></tr>";
			foreach ($programs as $program) {
				$programID		= $program['programID'];
				$str .= "<tr><th><a href='' onclick=\"inner('$app/$menu/print/" .$program['programID']. "'); return false;\">" .$program['programCode']. "</a></th>";
				foreach ($cats as $code => $desc) {
					$str .= "<td style='font-size: 10px; text-align: center' nowrap>" .$curency[$programID][$code] . ' ' .number_format($amount[$programID][$code], 2). "</td>";
				} 
				$str .= "</tr>";
			}
		}
		$str .= "</table>";	
		
        return $str;
	}

	
	public function anfPayments($action, $programID) {
		$app 					= $this->controller->app;					// application envoked        
		$menu 					= $this->controller->menu;					// menu envoked        
						
		$programs				= $this->model->selectProgram();	// get record
		
		$findbar = "Program <select name='programID' style='width: 200px' onchange=\"inner('$app/$menu/print/'+this.value); return false;\">
		<option value='0'>Select</option>";
		foreach ($programs as $program) {
			$findbar .= "<option value='" .$program['programID']. "'" .($program['programID'] == $programID ? self::SL : ''). ">" .$program['programCode']. "</option>";
		}
		$findbar .= "</select> ";
		if ($programID) {
			foreach ($this->controller->accountTypes as $key => $desc) {
				$findbar .= "[ $desc: " .str_replace('INR', $this->rs, $this->model->getPaidAmount($programID, $key)). " ]";
			}
		}

		$rows = $this->model->paymentSummary($programID);
		$str = $this->pageHeader($findbar, $toolbar);
		$str .= $this->printReport($rows);	
		
        return $str;
	}

}

?>