File: /www/exchange0old/exchange/classes/Controller/COrpa.php
<?php
/**
* Created by PhpStorm.
* User: Admin
* Date: 23.09.2016
* Time: 13:18
*/
class Controller_COrpa
{
public function Controller_COrpa()
{
if (!isset($_SESSION['user']['userid']))
header("Location:?do=login");
include_once(ROOT_FOLDER . 'classes/Model/MHelpers.php');
include_once(ROOT_FOLDER . 'classes/Model/MUserOrpa.php');
include_once(ROOT_FOLDER . 'classes/Model/MTrade.php');
include_once(ROOT_FOLDER . 'classes/Model/MOriginatorApplication.php');
$originatorModel = new Model_MOriginatorApplication();
$orpaEnabled = $originatorModel->isOrpaEnabled($_SESSION['user']['userid']);
if ($orpaEnabled === false) {
header("Location:?do=originatorhome");
}
}
public function createOetr()
{
include_once("classes/Model/MTrade.php");
include_once("classes/Lib/HandleErrors.php");
$help = Model_MTrade::getHelpLinks(27);
$sweepTime = Model_MHelpers::clearSweepOutTime();
$agreed_rate = Model_MTrade::getAgreedRate();
$credit_agreed_rate = Model_MTrade::getCreditAgreedRate();
$output = array();
if (!empty($Err->values)) {
$output['messages'] = $Err->messages;
$output['values'] = $Err->values;
}
$output['help'] = $help;
$output['usr'] = $_SESSION["user"]["username"];
$output['clearSweepIn'] = $sweepTime['clearSweepIn'];
$output['clearSweepOut'] = $sweepTime['clearSweepOut'];
$output['values']['discount_price'] = $agreed_rate;
$output['values']['buyout_discount_price'] = $credit_agreed_rate;
unset($_SESSION['orpa_file_support']);
Bin_Template::createTemplate('create_orpa.html', $output);
}
public function editOetr()
{
include_once("classes/Model/MTrade.php");
include_once("classes/Lib/HandleErrors.php");
$orpaId = isset($_REQUEST['orpa_id']) ? (int)$_REQUEST['orpa_id'] : null;
$originatorId = $_SESSION['user']['userid'];
$trade = new Model_MUserOrpa();
$checkOetr = $trade->checkOrpa($orpaId, $originatorId);
if ($checkOetr === false) {
header("Location:?do=originatorhome");
}
$help = Model_MTrade::getHelpLinks(27);
$sweepTime = Model_MHelpers::clearSweepOutTime();
$agreed_rate = Model_MTrade::getAgreedRate();
$credit_agreed_rate = Model_MTrade::getCreditAgreedRate();
$output = array();
if (!empty($Err->values)) {
$output['messages'] = $Err->messages;
$output['values'] = $Err->values;
}
$output['orpa'] = $trade->getOrpaById($orpaId);
$output['po_documents'] = $trade->getPoByOrpaId($orpaId);
$output['help'] = $help;
$output['usr'] = $_SESSION["user"]["username"];
$output['clearSweepIn'] = $sweepTime['clearSweepIn'];
$output['clearSweepOut'] = $sweepTime['clearSweepOut'];
$output['values']['discount_price'] = $agreed_rate;
$output['values']['buyout_discount_price'] = $credit_agreed_rate;
unset($_SESSION['orpa_file_support']);
Bin_Template::createTemplate('create_orpa.html', $output);
}
public function saveOetr()
{
include_once('classes/Model/Validation/CheckInputs.php');
include_once('classes/Model/Validation/FormValidation.php');
include_once('classes/Model/MTrade.php');
$security = new Bin_Security();
$security->escapePost();
$orpaId = isset($_REQUEST['orpa_id']) ? (int)$_REQUEST['orpa_id'] : null;
$originatorId = $_SESSION['user']['userid'];
$trade = new Model_MUserOrpa();
$checkOetr = $orpaId ? $trade->checkOrpa($orpaId, $originatorId) : true;
if ($checkOetr === false) {
header("Location:?do=originatorhome");
}
new Model_Validation_CheckInputs('save_orpa');
$organisationRates = Model_MTrade::getOrganisationRates();
$data = array(
'orpa_id' => $orpaId,
'originator_id' => $_SESSION['user']['userid'],
'edso' => $_POST['edso'],
'orpa_date' => date('Y-m-d'),
'ex_date' => $_POST['ex_year'] . '-' . $_POST['ex_month'] . '-' . $_POST['ex_date'],
'created_by' => $_SESSION['user']['userid'],
'modified_by' => $_SESSION['user']['userid'],
'status' => isset($_POST['submit']) ? Model_MUserOrpa::STATUS_SUBMITTED : Model_MUserOrpa::STATUS_CREATED,
'd_etr_sell_rate' => Bin_Array::get($organisationRates, 'agreed_rate'),
'c_etr_sell_rate' => Bin_Array::get($organisationRates, 'credit_agreed_rate'),
'd_etr_purchase_discount' => Bin_Array::get($organisationRates, 'purchase_price'),
'c_etr_early_payment_discount' => Bin_Array::get($organisationRates, 'c_etr_early_payment_discount'),
'friendly_name'=>$_POST['friendly_name']
);
$fileSupport = Bin_Array::get($_SESSION, 'orpa_file_support');
if ($fileSupport) {
$data['file_support'] = $fileSupport;
}
$orpaId = $trade->saveOrpa($data);
unset($_SESSION['orpa_file_support']);
if (isset($_POST['save'])) {
header("Location:?do=upload_revolving_oetr&orpa_id=" . $orpaId);
} else {
header("Location:?do=oetr_list");
}
}
public function uploadOetrPo()
{
include_once('classes/Model/MTrade.php');
$orpaId = isset($_REQUEST['orpa_id']) ? (int)$_REQUEST['orpa_id'] : null;
$originatorId = $_SESSION['user']['userid'];
$trade = new Model_MUserOrpa();
$checkOetr = $trade->checkOrpa($orpaId, $originatorId);
if ($checkOetr === false) {
header("Location:?do=originatorhome");
}
$help = Model_MTrade::getHelpLinks(27);
$debtor = Model_MTrade::getRevolvingDebtor('debtor');
for ($i = 0; $i < count($debtor); $i++) {
if ($debtor[$i]['trade_name'] != '' && $debtor[$i]['debtor_name'] == '') {
$split_trade = $debtor[$i]['trade_name'];
$debtor[$i]['debtor_name'] = $split_trade;
} elseif ($debtor[$i]['trade_name'] != '' && $debtor[$i]['debtor_name'] != '') {
$debtor[$i]['debtor_name'] = substr($debtor[$i]['trade_name'], 0, 14) . ' - ' . substr($debtor[$i]['debtor_name'], 0, 12);
} else {
$debtor[$i]['debtor_name'] = $debtor[$i]['debtor_name'];
}
}
$poDocuments = $trade->getPoByOrpaId($orpaId);
$output = array(
'debtor' => $debtor,
'orpa_id' => $orpaId,
'orpa' => $trade->getOrpaById($orpaId),
'po_documents' => $poDocuments,
'help' => $help,
);
Bin_Template::createTemplate('upload_orpa_po.html', $output);
}
public function saveUploadOetrPo()
{
$orpaId = isset($_REQUEST['orpa_id']) ? (int)$_REQUEST['orpa_id'] : null;
$debtorIds = (isset($_REQUEST['debtor_id']) and is_array($_REQUEST['amount'])) ? $_REQUEST['debtor_id'] : array();
$currencyIds = (isset($_REQUEST['currency_id']) and is_array($_REQUEST['currency_id'])) ? $_REQUEST['currency_id'] : array();
$amounts = (isset($_REQUEST['amount']) and is_array($_REQUEST['amount'])) ? $_REQUEST['amount'] : array();
$poNumbers = (isset($_REQUEST['po']) and is_array($_REQUEST['po'])) ? $_REQUEST['po'] : array();
$files = (isset($_FILES['file_po']) and is_array($_FILES['file_po'])) ? $_FILES['file_po'] : array();
$originatorId = $_SESSION['user']['userid'];
$trade = new Model_MUserOrpa();
foreach ($debtorIds as $key => $debtorId) {
$checkOetr = $trade->checkOrpa($orpaId, $originatorId);
$checkDebtor = $trade->checkDebtor($debtorId, $originatorId);
if (!$checkOetr || !$checkDebtor) {
header("Location:?do=originatorhome");
}
$data = array(
'orpa_id' => $orpaId,
'debtor_id' => $debtorId,
'currency_id' => $currencyIds[$key],
);
$filesData = array(
array(
'amount' => $amounts[$key],
'po' => $poNumbers[$key],
'file_po' => array(
'name' => $files['name'][$key],
'tmp_name' => $files['tmp_name'][$key],
)
),
);
$trade->savePoFiles($data, $filesData);
}
header("Location:?do=oetr_list");
}
public function validateUploadOetrPo()
{
include_once('classes/Model/Validation/CheckInputs.php');
include_once('classes/Model/Validation/FormValidation.php');
$orpaId = isset($_REQUEST['orpa_id']) ? (int)$_REQUEST['orpa_id'] : null;
$originatorId = $_SESSION['user']['userid'];
$trade = new Model_MUserOrpa();
$checkOetr = $trade->checkOrpa($orpaId, $originatorId);
if (!$checkOetr) exit();
new Model_Validation_CheckInputs('save_upload_orpa');
}
public function validateRevolvingOetrPo()
{
include_once('classes/Model/Validation/CheckInputs.php');
include_once('classes/Model/Validation/FormValidation.php');
$orpaId = isset($_REQUEST['orpa_id']) ? (int)$_REQUEST['orpa_id'] : null;
$originatorId = $_SESSION['user']['userid'];
$trade = new Model_MUserOrpa();
$checkOetr = $orpaId ? $trade->checkOrpa($orpaId, $originatorId) : true;
if (!$checkOetr) exit();
new Model_Validation_CheckInputs('save_revolving_orpa');
}
public function oetrReport()
{
$orpaId = (int)$_REQUEST['orpa_id'];
$xls = isset($_REQUEST['xls']) ? (int)$_REQUEST['xls'] : 0;
$model = new Model_MOrpa();
if( $xls )
{
$template = new Bin_Template();
$template_name = 'reports/orpa_report_excel.html';
$output = array(
'report' => $model->getReportData($orpaId, $_SESSION['user']['userid'])
);
$html = $template->createTemplate($template_name, $output, false);
require('classes/Lib/PHPExcel.php');
$filename = "DownloadReport_o_etr_" . date('Y_m_d_H_i') . '.xlsx';
$table = utf8_encode($html);
ini_set('zlib.output_compression','Off');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
//the folowing two lines make sure it is saved as a xls file
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename='.$filename);
// save $table inside temporary file that will be deleted later
$tmpfile = tempnam(sys_get_temp_dir(), 'html');
file_put_contents($tmpfile, $table);
// insert $table into $objPHPExcel's Active Sheet through $excelHTMLReader
/**
* @var $excelHTMLReader PHPExcel_Reader_HTML
*/
$objPHPExcel = new PHPExcel();
$excelHTMLReader = PHPExcel_IOFactory::createReader('HTML');
$excelHTMLReader->loadIntoExisting($tmpfile, $objPHPExcel);
$reportName = 'Originator o-ETR Report';
$activeSheet = $objPHPExcel->getActiveSheet();
$activeSheet->setTitle('Report'); // Change sheet's title if you want
$activeSheet->getCell()->setValue($reportName)->getStyle()->getAlignment()->setWrapText(true);
$activeSheet->getRowDimension()->setRowHeight();
$cells = $activeSheet->getCellCollection();
$lastRow = $activeSheet->getHighestRow();
$lastColumn = $activeSheet->getHighestDataColumn();
$firstColumn = 'A1:A' . $lastRow;
$headerRange = 'A2:' . $lastColumn . '2';
$row = $activeSheet->getRowIterator()->current();
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$columnArray = array();
foreach ($cellIterator as $cell) {
$columnArray[] = $cell->getColumn();
}
$range = current($cells) . ':' . end($cells);
$headerStyle = array(
'fill' => array(
'type' => PHPExcel_Style_Fill::FILL_SOLID,
'color' => array('rgb' => 'A9A9A9'),
),
'font' => array('bold' => true)
);
$allStyle = array(
'font' => array(
'name' => 'Verdana',
'size' => 8
)
);
$boldStyle = array(
'font' => array(
'bold' => true
)
);
$borderStyle = array(
'borders' => array(
'top' => array(
'style' => PHPExcel_Style_Border::BORDER_THIN
),
'bottom' => array(
'style' => PHPExcel_Style_Border::BORDER_THIN
),
'left' => array(
'style' => PHPExcel_Style_Border::BORDER_THIN
),
'right' => array(
'style' => PHPExcel_Style_Border::BORDER_THIN
),
)
);
$activeSheet->getStyle($headerRange)->applyFromArray($headerStyle);
$activeSheet->getStyle($range)->applyFromArray($allStyle);
$activeSheet->getStyle($range)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00);
$activeSheet->getStyle($firstColumn)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
$activeSheet->getStyle($range)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('A2:D' . $lastRow)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
foreach ($columnArray as $col) {
$activeSheet->getColumnDimension($col)->setAutoSize(true);
for ($row = 2; $row <= $lastRow; $row++) {
$cell = $activeSheet->getCell($col . $row);
$cell->getStyle()->getAlignment()->setWrapText();
}
}
$activeSheet->getColumnDimension('B')->setAutoSize()->setWidth(20);
$sectionStyle = array(
'fill' => array(
'type' => PHPExcel_Style_Fill::FILL_SOLID,
'color' => array('rgb' => 'A9A9A9'),
),
'font' => array('bold' => true)
);
$headerStyle = array(
'fill' => array(
'type' => PHPExcel_Style_Fill::FILL_SOLID,
'color' => array('rgb' => 'd9d9d9'),
),
'font' => array('bold' => true)
);
$activeSheet->getStyle('A1:T'.$lastRow)->applyFromArray($allStyle);
$activeSheet->getStyle($headerRange)->applyFromArray(array('fill' => array(
'type' => PHPExcel_Style_Fill::FILL_NONE,
),));
$activeSheet->getStyle('A1:' . $lastColumn . $lastRow)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_GENERAL);
// header
$activeSheet->getStyle('A2:' . $lastColumn . '3')->applyFromArray($boldStyle);
$activeSheet->getStyle('B5')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
$activeSheet->getStyle('B6:B7')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_XLXS);
$activeSheet->getStyle('B8:B12')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
for ($row = 5; $row <= 14; $row++) {
$activeSheet->getCell('F' . $row)->setValue();
}
// o-ETR Amoun, o-ETR Balance, Margin Amount, Deposit Amount, Received Deposit, Deposit Balance
$activeSheet->getStyle('E5:E14')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// o-ETR Margin
$activeSheet->getStyle('E8')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00);
// Deposit %
if (isset($_REQUEST['orpa_id'])) {
$selectMarginHistory = "SELECT * FROM orpa_margin_change_history
WHERE orpa_id = ':orpa_id' ORDER BY id DESC LIMIT 2";
$db = Bin_Db::connect();
$marginResult = $db->query($selectMarginHistory, array(
':orpa_id' => $_REQUEST['orpa_id'],
));
}
if (isset($marginResult) and $marginResult->getNumRows() === 2) {
$activeSheet->getStyle('E11')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00);
} else {
$activeSheet->getStyle('E10')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00);
}
$activeSheet->getStyle('A5:F14')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('A5:A12')->applyFromArray($boldStyle);
$activeSheet->getStyle('C5:C14')->applyFromArray($boldStyle);
// blocks
$headerValuesArray = array(
'Deposits' => 'deposit',
'c-ETR' => 'cetr',
'd-ETR' => 'detr',
'Purchase Orders' => 'po',
'Available Payments' => 'payment',
'Used Deposits' => 'used_payment',
);
$blocksArray = array();
for ($row = 15; $row <= $lastRow; $row++) {
$cell = $activeSheet->getCell('A' . $row);
$cellValue = $cell->getValue();
if (in_array($cellValue, array_keys($headerValuesArray))) {
$type = $headerValuesArray[$cellValue];
$blocksArray[$type]['row_start'] = $row + 2;
} elseif (empty($cellValue) and isset($type) and empty($blocksArray[$type]['row_end'])) {
$blocksArray[$type]['row_end'] = $row - 1;
} elseif ($row == $lastRow and isset($type) and empty($blocksArray[$type]['row_end'])) {
$blocksArray[$type]['row_end'] = $row;
}
}
if (isset($blocksArray['deposit']) or isset($blocksArray['cetr']) or isset($blocksArray['detr']) OR isset($blocksArray['po'])) {
foreach ($blocksArray as $key => $block) {
$rowStart = $block['row_start'];
$rowEnd = $block['row_end'];
$activeSheet->getStyle('A' . ($rowStart - 2))->applyFromArray($sectionStyle)->applyFromArray($borderStyle);
switch ($key) {
case 'used_payment':
case 'deposit':{
// Headers
$activeSheet->getStyle('A' . ($rowStart - 1) . ':G' . ($rowStart - 1))->applyFromArray($headerStyle)->applyFromArray($borderStyle);
// Border
$activeSheet->getStyle('A' . $rowStart . ':G' . $rowEnd)->applyFromArray($borderStyle);
// Id
$activeSheet->getStyle('A' . $rowStart . ':A' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
// Fx Rate
$activeSheet->getStyle('E' . $rowStart . ':E' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
// Amount
$activeSheet->getStyle('D' . $rowStart . ':D' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('D' . $rowStart . ':D' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// EUR Amount
$activeSheet->getStyle('F' . $rowStart . ':F' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('F' . $rowStart . ':F' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
$activeSheet->getStyle('G' . $rowStart . ':G' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// Total
$postBlockRow = $rowEnd + 1;
$activeSheet->getStyle('E' . $postBlockRow . ':F' . $postBlockRow)->applyFromArray($boldStyle)->applyFromArray($borderStyle);
$activeSheet->getStyle('E' . $postBlockRow)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$activeSheet->getStyle('F' . $postBlockRow)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// Currency totals
$ctBlockStart = $rowEnd + 2;
$ctBlockEnd = $lastRow;
for ($tempRow = $ctBlockStart; $tempRow <= $lastRow; $tempRow++) {
$cell = $activeSheet->getCell('A' . $tempRow);
if ($cell->getValue()) {
$ctBlockEnd = $tempRow - 2;
break;
}
}
$activeSheet->getStyle('C' . $postBlockRow . ':F' . $ctBlockEnd)->applyFromArray($boldStyle)->applyFromArray($borderStyle);
$activeSheet->getStyle('C' . $ctBlockStart . ':C' . $ctBlockEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$activeSheet->getStyle('D' . $ctBlockStart . ':D' . $ctBlockEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('D' . $ctBlockStart . ':F' . $ctBlockEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
break;
}
case 'cetr':{
// Headers
$activeSheet->getStyle('A' . ($rowStart - 1) . ':T' . ($rowStart - 1))->applyFromArray($headerStyle)->applyFromArray($borderStyle);
$activeSheet->getStyle('A' . ($rowStart - 1) . ':T' . ($rowStart - 1))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// Border
$activeSheet->getStyle('A' . $rowStart . ':T' . $rowEnd)->applyFromArray($borderStyle);
$activeSheet->getStyle('A' . $rowStart . ':T' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// Trade ID
$activeSheet->getStyle('A' . $rowStart . ':A' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
// Amount, Fx Rate, EUR Amount
$activeSheet->getStyle('D' . $rowStart . ':H' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('N' . $rowStart . ':P' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
// Amount
$activeSheet->getStyle('D' . $rowStart . ':E' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
$activeSheet->getStyle('F' . $rowStart . ':F' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00);
// EUR Amount
$activeSheet->getStyle('H' . $rowStart . ':H' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// Discount
$activeSheet->getStyle('I' . $rowStart . ':I' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00);
// SR
$activeSheet->getStyle('J' . $rowStart . ':J' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00);
// o\s Balance
$activeSheet->getStyle('Q' . $rowStart . ':Q' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
$activeSheet->getStyle('Q' . $rowStart . ':Q' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
// Status
$activeSheet->getStyle('R' . $rowStart . ':R' . $rowEnd)->applyFromArray($boldStyle);
// Paid
$activeSheet->mergeCells('K' . ($rowStart - 1) . ':L' . ($rowStart - 1));
$activeSheet->getStyle('K' . $rowStart . ':K' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
$activeSheet->getStyle('K' . $rowStart . ':K' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
// Commission
// $activeSheet->getStyle('Q' . $rowStart . ':Q' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// Creditor ID
$activeSheet->getStyle('S' . $rowStart . ':S' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
// Total
$postBlockRow = $rowEnd + 1;
$activeSheet->getStyle('G' . $postBlockRow . ':H' . $postBlockRow)->applyFromArray($boldStyle)->applyFromArray($borderStyle);
$activeSheet->getStyle('G' . $postBlockRow)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$activeSheet->getStyle('H' . $postBlockRow)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// Currency totals
$ctBlockStart = $rowEnd + 2;
$ctBlockEnd = (isset($blocksArray['detr'])) ? $blocksArray['detr']['row_start'] - 4 : $lastRow;
$activeSheet->getStyle('C' . $postBlockRow . ':S' . $ctBlockEnd)->applyFromArray($boldStyle)->applyFromArray($borderStyle);
$activeSheet->getStyle('C' . $ctBlockStart . ':C' . $ctBlockEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$activeSheet->getStyle('D' . $ctBlockStart . ':D' . $ctBlockEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('D' . $ctBlockStart . ':S' . $ctBlockEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
break;
}
case 'detr':{
// Headers
$activeSheet->getStyle('A' . ($rowStart - 1) . ':T' . ($rowStart - 1))->applyFromArray($headerStyle)->applyFromArray($borderStyle);
$activeSheet->getStyle('A' . ($rowStart - 1) . ':T' . ($rowStart - 1))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// Border
$activeSheet->getStyle('A' . $rowStart . ':T' . $rowEnd)->applyFromArray($borderStyle);
$activeSheet->getStyle('A' . $rowStart . ':T' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// Trade ID
$activeSheet->getStyle('A' . $rowStart . ':A' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
// Amount, Fx Rate, EUR Amount
$activeSheet->getStyle('D' . $rowStart . ':H' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('L' . $rowStart . ':N' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
// Amount
$activeSheet->getStyle('D' . $rowStart . ':D' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// EUR Amount
$activeSheet->getStyle('F' . $rowStart . ':F' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// PP
$activeSheet->getStyle('G' . $rowStart . ':G' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00);
// SR
$activeSheet->getStyle('H' . $rowStart . ':H' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00);
// Purchased
$activeSheet->mergeCells('I' . ($rowStart - 1) . ':J' . ($rowStart - 1));
$activeSheet->getStyle('I' . $rowStart . ':I' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
$activeSheet->getStyle('I' . $rowStart . ':I' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
// o\s Balance
$activeSheet->getStyle('O' . $rowStart . ':O' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
$activeSheet->getStyle('O' . $rowStart . ':O' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
// Paid
$activeSheet->mergeCells('I' . ($rowStart - 1) . ':J' . ($rowStart - 1));
$activeSheet->getStyle('I' . $rowStart . ':I' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
//Status
$activeSheet->getStyle('P' . $rowStart . ':P' . $rowEnd)->applyFromArray($boldStyle);
// EPR
$activeSheet->mergeCells('Q' . ($rowStart - 1) . ':R' . ($rowStart - 1));
$activeSheet->getStyle('Q' . $rowStart . ':Q' . $rowEnd)->applyFromArray($boldStyle);
$activeSheet->getStyle('R' . $rowStart . ':R' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
$activeSheet->getStyle('R' . $rowStart . ':R' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
// Creditor ID
$activeSheet->getStyle('S' . $rowStart . ':S' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
// Total
$postBlockRow = $rowEnd +1;
$activeSheet->getStyle('E' . $postBlockRow . ':F' . $postBlockRow)->applyFromArray($boldStyle)->applyFromArray($borderStyle);
$activeSheet->getStyle('E' . $postBlockRow)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$activeSheet->getStyle('F' . $postBlockRow)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// Currency totals
$ctBlockStart = $rowEnd + 2;
$ctBlockEnd = $lastRow;
$activeSheet->getStyle('C' . $postBlockRow . ':R' . $lastRow)->applyFromArray($boldStyle)->applyFromArray($borderStyle);
$activeSheet->getStyle('C' . $ctBlockStart . ':C' . $ctBlockEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$activeSheet->getStyle('D' . $ctBlockStart . ':D' . $ctBlockEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('D' . $ctBlockStart . ':R' . $ctBlockEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
break;
}
case 'po':{
// Headers
$activeSheet->getStyle('A' . ($rowStart - 1) . ':J' . ($rowStart - 1))->applyFromArray($headerStyle)->applyFromArray($borderStyle);
$activeSheet->getStyle('A' . ($rowStart - 1) . ':J' . ($rowStart - 1))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// Border
$activeSheet->getStyle('A' . $rowStart . ':J' . $rowEnd)->applyFromArray($borderStyle);
$activeSheet->getStyle('A' . $rowStart . ':J' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// Po No.
$activeSheet->getStyle('A' . $rowStart . ':A' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// PO Date
$activeSheet->getStyle('B' . $rowStart . ':B' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// Ccy
$activeSheet->getStyle('C' . $rowStart . ':C' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// Amount
$activeSheet->getStyle('D' . $rowStart . ':D' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('D' . $rowStart . ':D' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// Amount EUR
$activeSheet->getStyle('F' . $rowStart . ':F' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('F' . $rowStart . ':F' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// Debtor Name
$activeSheet->getStyle('H' . $rowStart . ':H' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// Debtor ID
$activeSheet->getStyle('G' . $rowStart . ':G' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
$activeSheet->getStyle('G' . $rowStart . ':G' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// CS Limit
$activeSheet->getStyle('I' . $rowStart . ':I' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
$activeSheet->getStyle('J' . $rowStart . ':J' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('J' . $rowStart . ':J' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// Total
$postBlockRow = $rowEnd +1;
$activeSheet->getStyle('E' . $postBlockRow . ':F' . $postBlockRow)->applyFromArray($boldStyle)->applyFromArray($borderStyle);
$activeSheet->getStyle('E' . $postBlockRow)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$activeSheet->getStyle('F' . $postBlockRow)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
// Currency totals
$ctBlockStart = $rowEnd + 2;
$ctBlockEnd = $lastRow;
for ($tempRow = $ctBlockStart; $tempRow <= $lastRow; $tempRow++) {
$cell = $activeSheet->getCell('A' . $tempRow);
if ($cell->getValue()) {
$ctBlockEnd = $tempRow - 2;
break;
}
}
$activeSheet->getStyle('C' . $postBlockRow . ':J' . $ctBlockEnd)->applyFromArray($boldStyle)->applyFromArray($borderStyle);
$activeSheet->getStyle('C' . $ctBlockStart . ':C' . $ctBlockEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$activeSheet->getStyle('D' . $ctBlockStart . ':D' . $ctBlockEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('D' . $ctBlockStart . ':J' . $ctBlockEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
break;
}
case 'payment': {
// Headers
$activeSheet->getStyle('A' . ($rowStart - 1) . ':D' . ($rowStart - 1))->applyFromArray($headerStyle)->applyFromArray($borderStyle);
// Border
$activeSheet->getStyle('A' . $rowStart . ':D' . $rowEnd)->applyFromArray($borderStyle);
// Type
$activeSheet->getStyle('A' . $rowStart . ':A' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
// Amount
$activeSheet->getStyle('D' . $rowStart . ':D' . $rowEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
$activeSheet->getStyle('D' . $rowStart . ':D' . $rowEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
// Currency totals
$ctBlockStart = $rowEnd + 1;
$ctBlockEnd = $lastRow;
for ($tempRow = $ctBlockStart; $tempRow <= $lastRow; $tempRow++) {
$cell = $activeSheet->getCell('A' . $tempRow);
if ($cell->getValue()) {
$ctBlockEnd = $tempRow - 2;
break;
}
}
$activeSheet->getStyle('C' . $ctBlockStart . ':D' . $ctBlockEnd)->applyFromArray($boldStyle)->applyFromArray($borderStyle);
$activeSheet->getStyle('C' . $ctBlockStart . ':C' . $ctBlockEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$activeSheet->getStyle('D' . $ctBlockStart . ':D' . $ctBlockEnd)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$activeSheet->getStyle('D' . $ctBlockStart . ':D' . $ctBlockEnd)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2);
break;
}
}
}
}
$activeSheet->mergeCells('A1:C1');
$activeSheet->calculateColumnWidths();
foreach ($columnArray as $col) {
$width = $activeSheet->getColumnDimension($col)->getWidth();
if (!in_array($col, array('B'))) {
$activeSheet->getColumnDimension($col)->setAutoSize()->setWidth(1.18 * $width);
if ($col === 'G' and $width > 50) {
$activeSheet->getColumnDimension($col)->setAutoSize()->setWidth(50);
}
} elseif ($col == 'B') {
$activeSheet->getColumnDimension($col)->setAutoSize()->setWidth(1.3 * $width);
}
}
unlink($tmpfile); // delete temporary file because it isn't needed anymore
// Creates a writer to output the $objPHPExcel's content
$writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$writer->save('php://output');
exit;
}
else
{
Bin_Template::CreateTemplate('orpa_report.html', array(
'report' => $model->getReportData($orpaId, $_SESSION['user']['userid']),
'dataTables' => true,
));
}
}
public function oetrList()
{
include_once('classes/Model/MDebtor.php');
$request = Bin_Request::getInstance();
$search = $request->query('search');
$credebtor = $request->query('credebtor');
$trade = new Model_MUserOrpa();
$output = array(
'do' => $request->query('do'),
'orpa_list' => $trade->getOrpaList($search, $credebtor),
'credebtors' => Model_MDebtor::getAllDebtorByUserId($_SESSION['user']['userid']),
'search' => $search,
'credebtorId' => $credebtor,
);
Bin_Template::createTemplate('orpa_list.html', $output);
}
public function rejectedOetrList()
{
$trade = new Model_MUserOrpa();
$output = array(
'orpa_list' => $trade->getOrpaByUserId($_SESSION['user']['userid'], $trade::STATUS_REJECTED),
);
Bin_Template::createTemplate('orpa_list.html', $output);
}
public function deleteOetrPo()
{
$orpaPoId = isset($_REQUEST['orpa_po_id']) ? (int)$_REQUEST['orpa_po_id'] : null;
$originatorId = $_SESSION['user']['userid'];
$trade = new Model_MUserOrpa();
$checkOetrPo = $trade->checkOrpaPo($orpaPoId, $originatorId);
if (!$checkOetrPo) exit();
$trade->deleteOrpaPo($orpaPoId);
}
public function uploadRevolvingOetr()
{
include_once('classes/Model/MTrade.php');
$orpaId = isset($_REQUEST['orpa_id']) ? (int)$_REQUEST['orpa_id'] : null;
$originatorId = $_SESSION['user']['userid'];
$trade = new Model_MUserOrpa();
$checkOetr = $orpaId ? $trade->checkOrpa($orpaId, $originatorId) : true;
if ($checkOetr === false) {
header("Location:?do=oetr_list");
}
$orpaArray = array();
$orpaList = $trade->getOrpaByUserId($_SESSION['user']['userid'], $trade::STATUS_CREATED);
foreach ($orpaList as $orpa){
$orpaArray[$orpa['id']]=($orpa['friendly_name'])?($orpa['friendly_name'] . ' (' . $orpa['reference'].')'):($orpa['reference'] . ' (' . $orpa['expected_date'].')');
}
$help = Model_MTrade::getHelpLinks(27);
$debtor = Model_MTrade::getDebtor('debtor');
for ($i = 0; $i < count($debtor); $i++) {
if ($debtor[$i]['trade_name'] != '' && $debtor[$i]['debtor_name'] == '') {
$split_trade = $debtor[$i]['trade_name'];
$debtor[$i]['debtor_name'] = $split_trade;
} elseif ($debtor[$i]['trade_name'] != '' && $debtor[$i]['debtor_name'] != '') {
$debtor[$i]['debtor_name'] = substr($debtor[$i]['trade_name'], 0, 14) . ' - ' . substr($debtor[$i]['debtor_name'], 0, 12);
} else {
$debtor[$i]['debtor_name'] = $debtor[$i]['debtor_name'];
}
}
$output = array(
'help' => $help,
'debtor' => $debtor,
'orpa_id' => $orpaId,
'orpa_list' => $orpaArray,
);
Bin_Template::createTemplate('upload_revolving_orpa.html', $output);
}
public function saveRevolvingOetr()
{
$orpaId = isset($_REQUEST['orpa_id']) ? (int)$_REQUEST['orpa_id'] : null;
$debtorId = (isset($_REQUEST['debtor_id'])) ? (int)$_REQUEST['debtor_id'] : null;
$currencyId = (isset($_REQUEST['currency_id'])) ? (int)$_REQUEST['currency_id'] : null;
$amount = (isset($_REQUEST['amount'])) ? (int)$_REQUEST['amount'] : null;
$poNumber = (isset($_REQUEST['po'])) ? $_REQUEST['po'] : null;
$poDate = $_REQUEST['po_year'] . '-' . $_REQUEST['po_month'] . '-' . $_REQUEST['po_date'];
$files = (isset($_FILES['file_po']) and is_array($_FILES['file_po'])) ? $_FILES['file_po'] : array();
$saveType = isset($_POST['save_type']) ? $_POST['save_type'] : null;
$originatorId = $_SESSION['user']['userid'];
$trade = new Model_MUserOrpa();
$checkOetr = $trade->checkOrpa($orpaId, $originatorId);
$checkDebtor = $trade->checkDebtor($debtorId, $originatorId);
if (!$checkOetr || !$checkDebtor) {
header("Location:?do=originatorhome");
}
$data = array(
'id' => null,
'orpa_id' => $orpaId,
'debtor_id' => $debtorId,
);
$filesData = array(
array(
'amount' => $amount,
'po' => $poNumber,
'po_date' => $poDate,
'file_po' => array(
'name' => $files['name'],
'tmp_name' => $files['tmp_name'],
)
),
);
$trade->savePoFiles($data, $filesData);
if ($saveType === 'finish') {
$trade->submit($orpaId);
header("Location:?do=oetr_list");
} else {
header("Location:?do=upload_revolving_oetr&orpa_id=" . $orpaId);
}
}
public function saveOetrPo()
{
return;
}
public function uploadOetrFileSupport()
{
$file = Bin_Array::get($_FILES, 'file');
if (!$file) {
return false;
}
require_once ROOT_FOLDER . 'classes/Storage.php';
$namePrefix = $_SESSION['org_id'] . "_" . $_SESSION['user']['userid'];
$dirPath = "/documents/org/" . $namePrefix;
$storage = Storage_Repository::get(Storage_Repository::ORG_DOCS);
$fileName = $namePrefix . "_ORPA_SUPPORT_" . time() . "." . pathinfo($file["name"], PATHINFO_EXTENSION);
$filePath = $dirPath . "/" . $fileName;
$storage->setFromUpload($filePath, $file);
$_SESSION['orpa_file_support'] = $filePath;
return true;
}
public function getOrpaForCetr()
{
$request = Bin_Request::getInstance();
if ($request->isAjax()) {
$originator_id = isset($_SESSION['user']['userid']) ? $_SESSION['user']['userid'] : null;
$orpaModel = new Model_MUserOrpa();
$orpaList = $orpaModel->getOrpaForCEtr($originator_id);
$result = json_encode($orpaList);
exit($result);
}
}
public function getOrpaForDetr()
{
$request = Bin_Request::getInstance();
if ($request->isAjax()) {
$debtor_id = isset($_POST['debtor_id']) ? (int)$_POST['debtor_id'] : null;
$orpaModel = new Model_MUserOrpa();
$orpaList = $orpaModel->getOrpaForDEtr($debtor_id);
$result = json_encode($orpaList);
exit($result);
}
}
public function submitOetr()
{
$orpaId = isset($_REQUEST['orpa_id']) ? (int)$_REQUEST['orpa_id'] : null;
$originatorId = $_SESSION['user']['userid'];
$trade = new Model_MUserOrpa();
$checkOetr = $trade->checkOrpa($orpaId, $originatorId);
if (!$checkOetr) {
header("Location:?do=originatorhome");
}
$trade->submit($orpaId);
header("Location:?do=oetr_list");
}
public function getPoForDetr()
{
$request = Bin_Request::getInstance();
if ($request->isAjax()) {
$debtor_id = $request->post('debtor_id');
$orpa_id = $request->post('orpa_id');
if ($debtor_id and Model_MUserOrpa::isUserOrpa($_SESSION['user']['userid'], $orpa_id)) {
$orpaModel = new Model_MUserOrpa();
$poList = $orpaModel->getPoByOrpaId($orpa_id, $debtor_id);
$poList = array_map(function ($el) {
return array(
'id' => $el['id'],
'po_no' => $el['po_no'],
'available_amount' => sprintf("%01.2f",$el['amount'] - $el['traded_amount']),
'currency_code' => $el['currency_code']
);
}, $poList);
echo json_encode($poList);
}
}
exit();
}
public function getEarlyPaymentForOrpa()
{
include_once(ROOT_FOLDER . 'admin/classes/Model/MOrpa.php');
$orpaId = $_REQUEST['orpa_id'];
$orpaModel = new Model_MUserOrpa();
echo $orpaModel->getEarlyPaymentForOrpa($orpaId);
}
public function reconcileOrpa()
{
Bin_Config::requireAdminModel('MCEtrReconciliation');
Bin_Config::requireAdminModel('MOrpa');
$orpaModel = new Model_MOrpa();
$request = Bin_Request::getInstance();
$orpaId = (int)$request->query('id');
$originatorId = $_SESSION['user']['userid'];
$step = $request->query('step');
$payments = $request->post('payments');
$invoices = $request->post('invoices');
if (empty($orpaId) or empty($originatorId) or !$orpaModel->isOriginatorsOrpa($orpaId, $originatorId)) {
return;
}
if ($step == 2 or $step==3) {
$paymentsDTOArray = Model_MCEtrReconciliation::fetchPaymentsAsDTO($payments);
$invoicesDTOArray = Model_MCEtrReconciliation::fetchInvoicesAsDTO($invoices);
$rec = new Model_MCEtrReconciliation($paymentsDTOArray,$invoicesDTOArray);
if($step == 2){
Bin_Template::CreateTemplate('orpa/reconcileorpa_step2.html', array(
'selectedPayments' => $payments,
'selectedInvoices' => $invoices,
'instructions' => $rec->makeInstructions()
));
}else{
$rec->makeReconcile();
echo "<script>window.opener.location.reload(); window.close()</script>";
}
} else {
Bin_Template::CreateTemplate('orpa/reconcileorpa.html', array(
'payments' => Model_MOrpa::getPayments($orpaId, $originatorId),
'invoices' => Model_MOrpa::getUnreconciledInvoices($orpaId),
));
}
}
public function reconcileOrpaStatement()
{
Bin_Config::requireAdminModel('MOrpa');
$request = Bin_Request::getInstance();
$orpaId = (int)$request->query('id');
$originatorId = (int)$request->query('originator_id');
$orpaModel = new Model_MOrpa();
if (!$orpaModel->isOriginatorsOrpa($orpaId, $originatorId)) {
return;
}
Bin_Template::CreateTemplate('orpa/orpa_reconciliation_statement.html', array(
'invoices' => $orpaModel->getReconciledInvoices($orpaId),
));
}
public function marginReduction()
{
Bin_Config::requireAdminModel('MOrpa');
$request = Bin_Request::getInstance();
$orpaModel = new Model_MOrpa();
$orpaId = (int)$request->query('id');
Bin_Template::CreateTemplate('orpa/orpa_margin_reduction.html', array(
'margin_reduction_history' => $orpaModel->getOrpaMarginHistory($orpaId),
));
}
public function depositReduction()
{
Bin_Config::requireAdminModel('MOrpa');
$request = Bin_Request::getInstance();
$orpaModel = new Model_MOrpa();
$orpaId = (int)$request->query('id');
Bin_Template::CreateTemplate('orpa/orpa_deposit_reduction.html', array(
'deposit_reduction_history' => $orpaModel->getOrpaDepositHistory($orpaId),
));
}
public function oetrHistory()
{
Bin_Config::requireAdminModel('MOrpa');
$request = Bin_Request::getInstance();
$orpaModel = new Model_MOrpa();
$orpaId = (int)$request->query('id');
Bin_Template::CreateTemplate('orpa/oetr_history.html', array(
'amount_history' => $orpaModel->getAmountHistory($orpaId),
));
}
}