396 lines
10 KiB
PHP
Executable File
396 lines
10 KiB
PHP
Executable File
<?php
|
|
|
|
$inv_id = $_GET['inv_id'];
|
|
if (empty($inv_id)) {
|
|
$booking_id = $_GET['book_id'];
|
|
$get_invoices_has_book_sql = mysqli_query(
|
|
$db,
|
|
"SELECT `invoices_id` FROM `invoices_has_book` WHERE `book_id` = $booking_id LIMIT 1"
|
|
);
|
|
|
|
$invoices_has_book_row = mysqli_fetch_assoc($get_invoices_has_book_sql);
|
|
$inv_id = $invoices_has_book_row['invoices_id'];
|
|
}
|
|
|
|
$get_invoices_sql = mysqli_query(
|
|
$db,
|
|
"SELECT
|
|
`invoices`.`id`,
|
|
`invoices`.`number_style`,
|
|
`branch`.`pu_name`,
|
|
`branch`.`commercial_register_number_10`,
|
|
`invoices`.`price`,
|
|
`invoices`.`date_time`,
|
|
`user`.`name` AS `user_name`
|
|
|
|
FROM `invoices`
|
|
LEFT JOIN `user` ON `invoices`.`user_id` = `user`.`id`
|
|
LEFT JOIN `emplyee` ON `user`.`emplyee_id` = `emplyee`.`id`
|
|
LEFT JOIN `branch` ON `emplyee`.`branch_id` = `branch`.`id`
|
|
|
|
WHERE `invoices`.`id` = $inv_id"
|
|
);
|
|
$invoices_row = mysqli_fetch_assoc($get_invoices_sql);
|
|
|
|
$get_book_id_sql = mysqli_query(
|
|
$db,
|
|
"SELECT `book_id` FROM `invoices_has_book` WHERE `invoices_id` = $inv_id LIMIT 1"
|
|
);
|
|
$book_id_row = mysqli_fetch_assoc($get_book_id_sql);
|
|
$book_id = $book_id_row['book_id'];
|
|
|
|
$get_tretment_sql = mysqli_query(
|
|
$db,
|
|
"SELECT
|
|
`tretment`.`name`,
|
|
`tretment`.`number`
|
|
|
|
FROM `book`
|
|
LEFT JOIN `tretment` ON `book`.`tretment_id` = `tretment`.`id`
|
|
WHERE `book`.`id` = $book_id"
|
|
);
|
|
$tretment_row = mysqli_fetch_assoc($get_tretment_sql);
|
|
|
|
$get_invoices_has_book_sql = mysqli_query(
|
|
$db,
|
|
"SELECT
|
|
`invoices_details_has_how_pay`.`pay`,
|
|
`invoices_details_has_how_pay`.`how_pay_id`
|
|
|
|
FROM `invoices_details`
|
|
INNER JOIN `invoices_details_has_how_pay` ON `invoices_details_has_how_pay`.`invoices_details_id` = `invoices_details`.`id`
|
|
WHERE `invoices_details`.`invoices_id` = $inv_id"
|
|
);
|
|
$how_pay_arr = array();
|
|
while ($invoices_has_book_row = mysqli_fetch_assoc($get_invoices_has_book_sql)) {
|
|
$how_pay_arr[$invoices_has_book_row['how_pay_id']] = $invoices_has_book_row['pay'];
|
|
}
|
|
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>طباعة الفاتورة</title>
|
|
|
|
<!-- Normalize or reset CSS with your favorite library -->
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/7.0.0/normalize.min.css">
|
|
|
|
<!-- Custom styles for this document -->
|
|
<link href="https://fonts.googleapis.com/css?family=Tangerine:700" rel="stylesheet" type="text/css">
|
|
|
|
<style>
|
|
@media print {
|
|
@page {
|
|
scroll-margin: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
body {
|
|
font-size: 7pt;
|
|
font-weight: 700;
|
|
margin: 0;
|
|
font-family: 'Cairo', sans-serif !important;
|
|
}
|
|
|
|
.mo_border {
|
|
border-bottom: #000 solid 1px;
|
|
padding-bottom: 15px;
|
|
margin-bottom: 15px;
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
|
|
|
|
<body onload="print_f()" class="A4" dir="rtl">
|
|
|
|
<section style="margin: 0 25px;">
|
|
<article>
|
|
<div style="text-align: center;">
|
|
<h1>فاتورة ضريبية مبسطة</h1>
|
|
</div>
|
|
<div style="text-align: center;">
|
|
<h3>
|
|
رقم الفاتورة:
|
|
<?= $invoices_row['number_style'] ?>
|
|
</h3>
|
|
</div>
|
|
<div style="text-align: center;">
|
|
<h2><?= $campany_info['company_name'] ?></h2>
|
|
</div>
|
|
<div style="text-align: center;">
|
|
<h4><?= $invoices_row['pu_name'] ?></h4>
|
|
</div>
|
|
|
|
<div style="text-align: right;">
|
|
<h5>
|
|
تاريخ:
|
|
<?= date('Y-m-d', strtotime($invoices_row['date_time'])) ?>
|
|
</h5>
|
|
</div>
|
|
<div style="text-align: right;">
|
|
<h5>
|
|
رقم تسجيل ضريبة القيمة المضافة:
|
|
<?= $campany_info['vat_number'] ?>
|
|
</h5>
|
|
</div>
|
|
<div style="text-align: right;">
|
|
<h5>
|
|
رقم السجل التجاري:
|
|
<?= $campany_info['commercial_register_number_10'] ?>
|
|
</h5>
|
|
</div>
|
|
|
|
|
|
<table width="100%" border="0" style="vertical-align: middle;">
|
|
<tbody>
|
|
|
|
<tr>
|
|
<td class="mo_border" style="width:150px"><b>الخدمات</b></td>
|
|
<td class="mo_border" style="text-align: center;"><b>سعر الخدمة</b></td>
|
|
<td class="mo_border" style="text-align: center;"><b>ضريبة القيمة المضافة</b></td>
|
|
<td class="mo_border" style="text-align: center;"><b>السعر شامل ضريبة القيمة المضافة</b></td>
|
|
</tr>
|
|
<?php
|
|
$invoices_details_id = 0;
|
|
$get_invoices_has_book_sql = mysqli_query(
|
|
$db,
|
|
"SELECT
|
|
`invoices_details`.`id`,
|
|
`services`.`name`,
|
|
`services`.`price`
|
|
|
|
FROM `invoices_has_book`
|
|
LEFT JOIN `book` ON `invoices_has_book`.`book_id` = `book`.`id`
|
|
LEFT JOIN `book_details` ON `book_details`.`book_id` = `book`.`id`
|
|
LEFT JOIN `services` ON `book_details`.`services_id` = `services`.`id`
|
|
LEFT JOIN `invoices_details` ON `invoices_details`.`invoices_id` = `invoices_has_book`.`invoices_id`
|
|
WHERE `invoices_has_book`.`invoices_id` = $inv_id
|
|
AND `book_details`.`id` IN (SELECT MAX(`id`) FROM `book_details` GROUP BY `book_details`.`book_id`)
|
|
AND `invoices_details`.`id` IN (SELECT MAX(`id`) FROM `invoices_details` GROUP BY `invoices_details`.`invoices_id`)"
|
|
);
|
|
$total = 0;
|
|
while ($invoices_has_book_row = mysqli_fetch_assoc($get_invoices_has_book_sql)) {
|
|
$invoices_details_id = $invoices_has_book_row['id'];
|
|
?>
|
|
<tr>
|
|
<td class="mo_border">
|
|
<b>
|
|
<?= $invoices_has_book_row['name'] ?>
|
|
</b>
|
|
</td>
|
|
<td class="mo_border" style="text-align: center;">
|
|
<?= number_format((float) round($invoices_has_book_row['price'], 2), 2, '.', ''); ?>
|
|
</td>
|
|
<td class="mo_border" style="text-align: center;">
|
|
<?= number_format((float) round(($invoices_has_book_row['price'] * $vat / 100), 2), 2, '.', ''); ?>
|
|
</td>
|
|
<td class="mo_border" style="text-align: center;">
|
|
<?= number_format((float) round($invoices_has_book_row['price'] + ($invoices_has_book_row['price'] * $vat / 100), 2), 2, '.', ''); ?>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
$total += $invoices_has_book_row['price'];
|
|
}
|
|
$get_invoices_discount_sql = mysqli_query(
|
|
$db,
|
|
"SELECT `discount` FROM `invoices_discount` WHERE `invoices_details_id` = $invoices_details_id "
|
|
);
|
|
$total_des = 0;
|
|
if (mysqli_num_rows($get_invoices_discount_sql) > 0) {
|
|
while ($invoices_discount_row = mysqli_fetch_assoc($get_invoices_discount_sql)) {
|
|
$total_des += $invoices_discount_row['discount'];
|
|
}
|
|
}
|
|
?>
|
|
|
|
</tbody>
|
|
</table>
|
|
|
|
<div style="display: flex;">
|
|
<div style="text-align: right; flex-grow: 1;">
|
|
<h5>
|
|
<b>
|
|
اجمالي المبلغ الخاضع للضريبة
|
|
</b>
|
|
</h5>
|
|
</div>
|
|
<div style="text-align: left; flex-grow: 1;">
|
|
<h5>
|
|
<b>
|
|
<?= number_format((float) round($total, 2), 2, '.', ''); ?>
|
|
</b>
|
|
</h5>
|
|
</div>
|
|
</div>
|
|
|
|
<?php
|
|
if ($total_des > 0) {
|
|
?>
|
|
<div style="display: flex;">
|
|
<div style="text-align: right; flex-grow: 1;">
|
|
<h5>
|
|
<b>
|
|
الخصم
|
|
</b>
|
|
</h5>
|
|
</div>
|
|
<div style="text-align: left; flex-grow: 1;">
|
|
<h5>
|
|
<b>
|
|
<?= number_format((float) round($total_des, 2), 2, '.', ''); ?>
|
|
</b>
|
|
</h5>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
|
|
}
|
|
?>
|
|
<div style="display: flex;">
|
|
<div style="text-align: right; flex-grow: 1;">
|
|
<h5>
|
|
<b>
|
|
المجموع قبل الضريبة
|
|
</b>
|
|
</h5>
|
|
</div>
|
|
<div style="text-align: left; flex-grow: 1;">
|
|
<h5>
|
|
<b>
|
|
<?= number_format((float) round( round($total, 2) - round($total_des, 2), 2), 2, '.', ''); ?>
|
|
</b>
|
|
</h5>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="display: flex;">
|
|
<div style="text-align: right; flex-grow: 1;">
|
|
<h5>
|
|
<b>
|
|
ضريبة القيمة المضافة (15%)
|
|
</b>
|
|
</h5>
|
|
</div>
|
|
<div style="text-align: left; flex-grow: 1;">
|
|
<h5>
|
|
<b>
|
|
<?= number_format((float) round(($total - $total_des) * $vat / 100, 2), 2, '.', ''); ?>
|
|
</b>
|
|
</h5>
|
|
</div>
|
|
</div>
|
|
<div style="display: flex;">
|
|
<div style="text-align: right; flex-grow: 1;">
|
|
<h5>
|
|
<b>
|
|
المجموع مع الضريبة (15%)
|
|
</b>
|
|
</h5>
|
|
</div>
|
|
<div style="text-align: left; flex-grow: 1;">
|
|
<h5>
|
|
<b>
|
|
<?= number_format((float) round(($total - $total_des) + (($total - $total_des) * $vat / 100), 2), 2, '.', ''); ?>
|
|
</b>
|
|
</h5>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="text-align: center;">
|
|
<h3>
|
|
--- إغلاق الفاتورة ---
|
|
</h3>
|
|
</div>
|
|
|
|
<?php
|
|
// QR code genratior
|
|
function __getLength($value)
|
|
{
|
|
return strlen($value);
|
|
}
|
|
function __toHex($value)
|
|
{
|
|
return pack("H*", sprintf("%02X", $value));
|
|
}
|
|
function __toString($__tag, $__value, $__length)
|
|
{
|
|
$value = (string) $__value;
|
|
return __toHex($__tag) . __toHex($__length) . $value;
|
|
}
|
|
function __getTLV($dataToEncode)
|
|
{
|
|
$__TLVS = '';
|
|
for ($i = 0; $i < count($dataToEncode); $i++) {
|
|
$__tag = $dataToEncode[$i][0];
|
|
$__value = $dataToEncode[$i][1];
|
|
$__length = __getLength($__value);
|
|
$__TLVS .= __toString($__tag, $__value, $__length);
|
|
}
|
|
|
|
return $__TLVS;
|
|
}
|
|
$dataToEncode = [
|
|
[1, $campany_info['company_name']],
|
|
[2, $campany_info['vat_number']],
|
|
[3, date("Y-m-d\TH:i:s", strtotime($invoices_row['date_time']))],
|
|
[4, round(($total - $total_des) + (($total - $total_des) * $vat / 100), 2)],
|
|
[5, round((($total - $total_des) * $vat / 100), 2)]
|
|
];
|
|
$__TLV = __getTLV($dataToEncode);
|
|
$__QR = base64_encode($__TLV);
|
|
require_once '../../vendor/autoload.php';
|
|
use chillerlan\QRCode\QRCode;
|
|
use chillerlan\QRCode\QROptions;
|
|
|
|
$data = $__QR;
|
|
$options = new QROptions([
|
|
'version' => 8, // Adjust if necessary
|
|
'outputType' => QRCode::OUTPUT_IMAGE_PNG,
|
|
'eccLevel' => QRCode::ECC_L,
|
|
'scale' => 3, // Scale factor, adjust as needed
|
|
'imageBase64' => true, // Output as base64
|
|
]);
|
|
$qrcode = new QRCode($options);
|
|
$qrCodeBase64 = $qrcode->render($data);
|
|
?>
|
|
|
|
|
|
<div style="text-align: center;">
|
|
<img src="<?= $qrCodeBase64 ?>" width="110" height="110">
|
|
|
|
</div>
|
|
|
|
<div style="text-align: center;">
|
|
<h3>شكراً على زيارتكم</h3>
|
|
</div>
|
|
<div style="text-align: center;">
|
|
<h3>
|
|
<?= $campany_info['link'] ?>
|
|
</h3>
|
|
</div>
|
|
|
|
|
|
</article>
|
|
</section>
|
|
|
|
<script type="text/javascript">
|
|
window.onafterprint = function (e) {
|
|
closePrintView();
|
|
};
|
|
|
|
function print_f() {
|
|
window.print();
|
|
}
|
|
|
|
function closePrintView() {
|
|
window.close();
|
|
}
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html>
|