HEX
Server: Apache/2.2.15 (CentOS)
System: Linux ip-10-0-2-146.eu-west-1.compute.internal 2.6.32-754.35.1.el6.centos.plus.x86_64 #1 SMP Sat Nov 7 11:33:42 UTC 2020 x86_64
User: root (0)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: /www/exchange0old/exchange/admin/cron/lucas_margin_calls.php
<?php
$folders = explode(DIRECTORY_SEPARATOR, pathinfo(__FILE__, PATHINFO_DIRNAME));
array_pop($folders);
array_pop($folders);

include(implode(DIRECTORY_SEPARATOR, $folders) . '/Bin/init.php');
require_once(ROOT_FOLDER . 'Bin/Security.php');
include(implode(DIRECTORY_SEPARATOR, $folders) . '/Bin/constants.php');
include('../../classes/Lib/PHPExcel.php');
include(ROOT_FOLDER . '../sfws/classes/Model/MRegister.php');
require_once ROOT_FOLDER . 'admin/classes/Model/MOrpa.php';
require_once(ROOT_FOLDER . "classes/Storage.php");
require_once(ROOT_FOLDER . "admin/classes/Model/trade_actions.php");

$db = Bin_Db::connect();
$trade = new Trade_actions();
$storage = Storage_Repository::etrByType(TYPE_CREDITOR);
$storagePo = Storage_Repository::poByType(TYPE_CREDITOR);
$inputFileName = 'import/lucas_import/2019-01-04_TK22463.xlsx';

$selectOrganisation = "SELECT * FROM organisation_details WHERE organisation_id = 618";
$organisation = $db->query($selectOrganisation)->getFirstRow();
$query = new Bin_Query();

//  Read your Excel workbook
try {
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
} catch (Exception $e) {
    die('Error loading file "' . pathinfo($inputFileName, PATHINFO_BASENAME) . '": ' . $e->getMessage());
}

/**
 * @var $objPHPExcel PHPExcel
 */
//  Get worksheet dimensions
$sheet = $objPHPExcel->getActiveSheet();
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();

$records = array();
//  Loop through each row of the worksheet in turn
for ($row = 2; $row <= $highestRow; $row++) {
    //  Read a row of data into an array
    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row);
    $rowData = $rowData[0];
    if ($rowData[0]) {
        $key = $rowData[0];
        $records[$key]['value'] += str_replace(',', '', $rowData[3]) * ($rowData[8] - $rowData[6]) / $rowData[8];
        $records[$key]['ccy'] = $rowData[4];
    }
}

$invoices = array();
foreach ($records as $key => $record) {
    $faceValue = abs(round($record['value'], 2));
    $invoiceNo = 'Margin call ' . number_format($faceValue, 2);
    $invoices[] = array(
        'debtor_reference_id' => $key,
        'face_value' => $faceValue,
        'invoice_date' => date('Y-m-d'),
        'expected_date' => date('Y-m-d', strtotime('+1 day')),
        'po_no' => $invoiceNo,
        'invoice_no' => $invoiceNo,
        'type' => TYPE_CREDITOR,
    );
}

foreach ($invoices as $invoice) {
    if (!$invoice['debtor_reference_id']) {
        continue;
    }
    $apiModel = new Model_MRegister($invoice);
    // skip validation
    $apiModel->_status = true;
    $apiModel->openCEtrTrade();

    if (!$apiModel->_status) {
        echo 'Error for ' . $invoice['debtor_reference_id'] . ' : ' . current($apiModel->_errors) . PHP_EOL;
        continue;
    }

    if ($apiModel->_invoice) {
        $pdfName = $invoice['debtor_reference_id'];
        $pdfFiles = glob(ROOT_FOLDER . 'admin/cron/import/lucas_import' . DIRECTORY_SEPARATOR . $pdfName . '.pdf');
        if ($pdfName and $pdfFiles) {
            $handle = fopen('php://memory', 'w');
            $source = fopen($pdfFiles[0], 'r');
            stream_copy_to_stream($source, $handle);
            rewind($handle);
            $content = stream_get_contents($handle);
            fclose($handle);

            $fileName = $trade->generateAttachmentLocationCreditor(
                array_get($organisation, 'organisation_refrence_id'),
                'file_invoice',
                'pdf',
                array_get($organisation, 'user_id')
            );
            $fileNamePo = $trade->generateAttachmentLocationCreditor(
                array_get($organisation, 'organisation_refrence_id'),
                'file_po',
                'pdf',
                array_get($organisation, 'user_id')
            );
            $storage->set($fileName, $content);
            $storagePo->set($fileNamePo, $content);
            $updateInvoice = "UPDATE invoice_documents id
            JOIN invoice_master im ON im.invoice_id = id.invoice_id
            SET invoice_document_path = ':file_name', purchase_order_document_path = ':file_name_po'
            WHERE im.trade_reference_id = ':trade_reference_id'";
            $db->query($updateInvoice, array(
                ':file_name' => $fileName,
                ':file_name_po' => $fileNamePo,
                ':trade_reference_id' => $apiModel->_invoice,
            ));
        } else {
            echo 'No file ' . $pdfName . PHP_EOL;
        }
        // authorise invoice
        $authoriseInvoiceQuery = "UPDATE invoice_master SET max_thirty_day_reserve = :max_thirty_day_reserve,
                                  buy_max_thirty_day_reserve = :max_thirty_day_reserve,
                                  log_status = 1,
                                  logapprove_date = NOW(),
                                  authorised_at = NOW(),
                                  spooled = 1,
                                  posting_interface = 1,
                                  etr_type = 'c'
                                  WHERE trade_reference_id = ':trade_reference_id' LIMIT 1";
        $db->query($authoriseInvoiceQuery, array(
            ':trade_reference_id' => $apiModel->_invoice,
            ':max_thirty_day_reserve' => 0,
        ));
    } else {
        exit('Error');
    }

    echo 'Added invoice for creditor ' . $invoice['debtor_reference_id'] . PHP_EOL;
}