476 lines
12 KiB
PHP
476 lines
12 KiB
PHP
<?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">
|
|
|
|
<!-- Load paper.css for happy printing -->
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/paper-css/0.3.0/paper.css">
|
|
|
|
<!-- Custom styles for this document -->
|
|
<link href="https://fonts.googleapis.com/css?family=Tangerine:700" rel="stylesheet" type="text/css">
|
|
|
|
<link rel="stylesheet" href="assets/css/mo2_style.css">
|
|
<style>
|
|
body {
|
|
font-family: 'Cairo', sans-serif !important;
|
|
}
|
|
</style>
|
|
|
|
<style>
|
|
@page {
|
|
size: A4
|
|
}
|
|
|
|
body {
|
|
font-size: 21pt;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.mo_border {
|
|
border-bottom: #000 solid 1px;
|
|
padding-bottom: 15px;
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
/*
|
|
@media print{
|
|
div#display {
|
|
display: flex;
|
|
height: auto;
|
|
width: 100%;
|
|
align-items: center;
|
|
}
|
|
}
|
|
*/
|
|
</style>
|
|
|
|
</head>
|
|
|
|
|
|
|
|
<body onload="print_f()" class="A4" dir="rtl" style="margin: 0 320px;">
|
|
|
|
<section>
|
|
<article>
|
|
|
|
<table width="100%" border="0">
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td colspan="4" height="25px" align="center">
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><img src="<?= $campany_info['logo-sm'] ?>" style="margin-left: 25px;width: 100%;"></td>
|
|
<td colspan="3">
|
|
<div class="mo_border">
|
|
<h3>
|
|
<?= $campany_info['company_name'] ?>
|
|
</h3>
|
|
</div>
|
|
<div class="mo_border"><b>الفرع</b> :
|
|
<?= $invoices_row['pu_name'] ?>
|
|
</div>
|
|
<div class="mo_border"><b>الرقم الضريبي</b> :
|
|
<?= $campany_info['vat_number'] ?>
|
|
</div>
|
|
<div class="mo_border"><b>السجل التجاري</b> :
|
|
<?= $invoices_row['commercial_register_number_10'] ?>
|
|
</div>
|
|
<!-- <div class="mo_border" style="display: flex;justify-content: space-between;"><span><b>الموظف</b> : <?= $invoices_row['user_name'] ?></span></div> -->
|
|
<div class="mo_border"><b>طريقة السداد</b> :
|
|
<?php
|
|
if ($how_pay_arr['1'] > 0) {
|
|
?>
|
|
كاش: <?=$how_pay_arr['1']?>
|
|
<?php
|
|
}
|
|
|
|
if ($how_pay_arr['2'] > 0) {
|
|
?>
|
|
شبكة: <?=$how_pay_arr['2']?>
|
|
<?php
|
|
}
|
|
|
|
if ($how_pay_arr['3'] > 0 || $how_pay_arr['4'] > 0) {
|
|
?>
|
|
رصيد: <?=$how_pay_arr['3'] + $how_pay_arr['4']?>
|
|
<?php
|
|
}
|
|
?>
|
|
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td colspan="4" height="25px" align="center">
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<div style="text-align: center;">
|
|
<h1>فاتورة ضريبية مبسطة</h1>
|
|
<h3>Simplified Tax Invoice</h3>
|
|
</div>
|
|
|
|
<table width="100%" border="0">
|
|
<tbody>
|
|
<tr>
|
|
<td colspan="4" height="25px" align="center">
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="mo_border"><b>رقم الفاتورة</b></td>
|
|
<td class="mo_border"><b>التاريخ</b></td>
|
|
<td class="mo_border"><b>الوقت</b></td>
|
|
<td class="mo_border"><b>العميل</b></td>
|
|
<td class="mo_border"><b>جوال العميل</b></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="mo_border"><b>
|
|
<?= $invoices_row['number_style'] ?>
|
|
</b></td>
|
|
<td class="mo_border">
|
|
<?= date('d-m-y', strtotime($invoices_row['date_time'])) ?>
|
|
</td>
|
|
<td class="mo_border">
|
|
<?= date((date("H", strtotime($invoices_row['date_time'])) > 11) ? 'h:i \م' : 'h:i \ص', strtotime($invoices_row['date_time'])) ?>
|
|
</td>
|
|
<td class="mo_border">
|
|
<?= $tretment_row['name'] ?>
|
|
</td>
|
|
<td class="mo_border">0
|
|
<?= $tretment_row['number'] ?>
|
|
</td>
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
<table width="100%" border="0">
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td colspan="4" height="25px" align="center">
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="mo_border" width="9%"><b></b></td>
|
|
<td class="mo_border" width="35%"><b>نوع الخدمة</b></td>
|
|
<td class="mo_border" width="25%"><b>السعر</b></td>
|
|
<td class="mo_border" width="25%"><b>الإجمالي شامل الضريبة</b></td>
|
|
</tr>
|
|
|
|
<?php
|
|
$count = 1;
|
|
$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">
|
|
<?= $count ?>
|
|
</td>
|
|
<td class="mo_border">
|
|
<?= $invoices_has_book_row['name'] ?>
|
|
</td>
|
|
<td class="mo_border">
|
|
<?= round($invoices_has_book_row['price'], 2) ?>
|
|
</td>
|
|
<?php
|
|
if (!empty($vat)) {
|
|
?>
|
|
<td class="mo_border">
|
|
<?= round($invoices_has_book_row['price'] + ($invoices_has_book_row['price'] * $vat / 100), 2) ?>
|
|
</td>
|
|
<?php
|
|
}
|
|
?>
|
|
</tr>
|
|
<?php
|
|
$total += $invoices_has_book_row['price'];
|
|
$count++;
|
|
}
|
|
$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)) {
|
|
?>
|
|
<tr>
|
|
<td class="mo_border"></td>
|
|
<td class="mo_border">خصم</td>
|
|
<td class="mo_border">
|
|
<?= round($invoices_discount_row['discount'], 2) ?>-
|
|
</td>
|
|
<?php
|
|
if (!empty($vat)) {
|
|
?>
|
|
<td class="mo_border">
|
|
<?= round($invoices_discount_row['discount'] + ($invoices_discount_row['discount'] * $vat / 100), 2) ?>-
|
|
</td>
|
|
<?php
|
|
}
|
|
?>
|
|
</tr>
|
|
<?php
|
|
$total_des += $invoices_discount_row['discount'];
|
|
}
|
|
}
|
|
?>
|
|
|
|
|
|
<tr>
|
|
<td class="mo_border"></td>
|
|
<td class="mo_border">الإجمالي</td>
|
|
<td class="mo_border">
|
|
<?= round($total - $total_des, 2) ?>
|
|
</td>
|
|
<?php
|
|
if (!empty($vat)) {
|
|
?>
|
|
<td class="mo_border">
|
|
<?= round(($total - $total_des) + (($total - $total_des) * $vat / 100), 2) ?>
|
|
</td>
|
|
<?php
|
|
}
|
|
?>
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
<td colspan="4" height="75px" align="center">
|
|
</td>
|
|
</tr>
|
|
|
|
|
|
|
|
<?php
|
|
/*
|
|
* QR Encoding Functions
|
|
*/
|
|
|
|
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;
|
|
|
|
// The data you want to encode
|
|
$data = $__QR;
|
|
|
|
// Set up QR code options
|
|
$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
|
|
]);
|
|
|
|
// Create a new instance of QRCode
|
|
$qrcode = new QRCode($options);
|
|
|
|
// Generate the QR code as base64
|
|
$qrCodeBase64 = $qrcode->render($data);
|
|
|
|
?>
|
|
|
|
<td colspan="4" align="center" height="35px">
|
|
<img src="<?= $qrCodeBase64 ?>"
|
|
width="215" height="215">
|
|
<br>
|
|
--- Check Closed ---
|
|
</td>
|
|
<tr>
|
|
<td colspan="4" align="center">
|
|
<h3>شكراً على زيارتكم</h3>
|
|
<h3></h3>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td colspan="4" height="75px" align="center">
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td colspan="4" align="center">
|
|
<?= $campany_info['link'] ?>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td style="direction: ltr;" colspan="4" height="35px" align="center">
|
|
<?= date('d-m-Y h:i A', strtotime($date_time)); ?>
|
|
</td>
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
|
|
</article>
|
|
</section>
|
|
|
|
<script type="text/javascript">
|
|
window.onafterprint = function (e) {
|
|
closePrintView();
|
|
};
|
|
|
|
function print_f() {
|
|
window.print();
|
|
}
|
|
|
|
function closePrintView() {
|
|
window.close();
|
|
}
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html>
|