<?php
/* For license terms, see /license.txt */

/**
 * Print invoice of the Buy Courses plugin.
 */
$cidReset = true;

require_once '../config.php';

api_protect_admin_script();

$plugin = BuyCoursesPlugin::create();

$invoicingEnable = 'true' === $plugin->get('invoicing_enable');
if (!$invoicingEnable) {
    api_not_allowed(true, $plugin->get_lang('NoInvoiceEnable'));
}

$saleId = isset($_GET['invoice']) ? (int) $_GET['invoice'] : 0;
$isService = isset($_GET['is_service']) ? (int) $_GET['is_service'] : 0;

$globalParameters = $plugin->getGlobalParameters();
$infoSale = $plugin->getDataSaleInvoice($saleId, $isService);
$buyer = api_get_user_info($infoSale['user_id']);
$extraUserInfoData = UserManager::get_extra_user_data($infoSale['user_id']);
$infoInvoice = $plugin->getDataInvoice($saleId, $isService);

$taxAppliesTo = $globalParameters['tax_applies_to'];
$taxEnable = 'true' === $plugin->get('tax_enable') &&
    (BuyCoursesPlugin::TAX_APPLIES_TO_ALL == $taxAppliesTo ||
    (BuyCoursesPlugin::TAX_APPLIES_TO_ONLY_COURSE == $taxAppliesTo && !$isService) ||
    (BuyCoursesPlugin::TAX_APPLIES_TO_ONLY_SESSION == $taxAppliesTo && $isService));

$htmlText = '<html>';
$htmlText .= '<link rel="stylesheet" type="text/css" href="plugin.css">';
$htmlText .= '<link rel="stylesheet" type="text/css" href="'.api_get_path(WEB_CSS_PATH).'base.css">';
$htmlText .= '<body>';

// Seller and customer info
$htmlText .= '<table width="100%">';
$htmlText .= '<tr>';
$htmlText .= '<td>';
$htmlText .= '<b>'.$globalParameters['seller_name'].'</b><br/>';
$htmlText .= $globalParameters['seller_id'].'<br/>';
$htmlText .= $globalParameters['seller_address'].'<br/>';
$htmlText .= $globalParameters['seller_email'].'<br/>';
$htmlText .= '</td>';
$htmlText .= '<td style="text-align:right;">';
$htmlText .= '<b>'.$buyer['complete_name'].'</b><br/>';
$htmlText .= ($extraUserInfoData['buycourses_company'] ? $extraUserInfoData['buycourses_company'].'<br>' : '');
$htmlText .= ($extraUserInfoData['buycourses_vat'] ? $extraUserInfoData['buycourses_vat'].'<br>' : '');
$htmlText .= ($extraUserInfoData['buycourses_address'] ? $extraUserInfoData['buycourses_address'].'<br/>' : '');
$htmlText .= ($buyer['phone'] ? $buyer['phone'].'<br/>' : '');
$htmlText .= ($buyer['email'] ? $buyer['email'].'<br>' : '');
$htmlText .= '</td>';
$htmlText .= '</tr>';
$htmlText .= '</table>';

$htmlText .= '<br><br>';
$htmlText .= '<p>';
$htmlText .= $plugin->get_lang('InvoiceDate').': <span style="font-weight:bold;">'
    .api_convert_and_format_date($infoInvoice['date_invoice'], DATE_TIME_FORMAT_LONG_24H).'</span><br>';
$htmlText .= $plugin->get_lang('InvoiceNumber').': <span style="font-weight:bold;">'
    .$infoInvoice['serie'].$infoInvoice['year'].'/'.$infoInvoice['num_invoice'].'</span><br>';
$htmlText .= '</p><br><br>';

$header = [
    $plugin->get_lang('OrderReference'),
    $plugin->get_lang('ProductType'),
    $plugin->get_lang('Price'),
];

if ($taxEnable) {
    $header[] = $globalParameters['tax_name'];
    $header[] = $plugin->get_lang('Total');
}

$data = [];
$row = [
    $infoSale['reference'],
    $infoSale['product_name'],
];

//var_dump($infoSale);exit;
$isoCode = $plugin->getCurrency($infoSale['currency_id'])['iso_code'];

if ($taxEnable) {
    $row[] = $plugin->getPriceWithCurrencyFromIsoCode($infoSale['price_without_tax'], $isoCode);
    $row[] = $plugin->getPriceWithCurrencyFromIsoCode($infoSale['tax_amount'], $isoCode).' ('.(int) $infoSale['tax_perc'].'%)';
}

$totalPrice = $plugin->getPriceWithCurrencyFromIsoCode(
    $infoSale['price'],
    $plugin->getCurrency($infoSale['currency_id'])['iso_code']
);

$row[] = $totalPrice;
$data[] = $row;

$totalPrice = $plugin->getPriceWithCurrencyFromIsoCode(
    $infoSale['price'],
    $plugin->getCurrency($infoSale['currency_id'])['iso_code']
);

if ($taxEnable) {
    $row = [
        '',
        '',
        '',
        $plugin->get_lang('TotalPayout'),
        $totalPrice,
    ];
} else {
    $row = [
        '',
        $plugin->get_lang('TotalPayout'),
        $totalPrice,
    ];
}
$data[] = $row;
$attr = [];
$attr['class'] = 'table data_table';
$attr['width'] = '100%';
$htmlText .= Display::table($header, $data, $attr);
$htmlText .= '</body></html>';

$fileName = $infoInvoice['serie'].$infoInvoice['year'].'-'.$infoInvoice['num_invoice'];
$fileName = api_replace_dangerous_char($fileName);
$params = [
    'filename' => $fileName,
    'pdf_title' => $plugin->get_lang('Invoice'),
    'pdf_description' => '',
    'format' => 'A4',
    'orientation' => 'P',
];
$pdf = new PDF($params['format'], $params['orientation'], $params);
@$pdf->content_to_pdf($htmlText, null, $fileName, null, 'D', false, null, false, false, false);
exit;
