gitea init
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
require_once __DIR__ . '/../../../../includes/init.php';
|
||||
require_once __DIR__ . '/../../models/invoicesmodel.php';
|
||||
require_once __DIR__ . '/../../../../../vendor/autoload.php';
|
||||
|
||||
|
||||
|
||||
InvoicesModel::setDb($pdo);
|
||||
|
||||
// ინვოისის ნომრის გენერაცია
|
||||
$generatedInvoiceNumber = InvoicesModel::generateNextInvoiceNumber();
|
||||
|
||||
// კლიენტების სია dropdown-სთვის
|
||||
$clients = InvoicesModel::getClientsList();
|
||||
|
||||
// პროდუქტების სია
|
||||
$products = InvoicesModel::getProductList();
|
||||
|
||||
require_once __DIR__ . '/../../views/invoices/create.php';
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
// კონტროლერი: ინვოისის წაშლა
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
require_once __DIR__ . '/../../../../includes/init.php';
|
||||
require_once __DIR__ . '/../../models/invoicesmodel.php';
|
||||
require_once __DIR__ . '/../../../../../vendor/autoload.php';
|
||||
|
||||
use App\Config;
|
||||
|
||||
// ბაზასთან დაკავშირება
|
||||
InvoicesModel::setDb($pdo);
|
||||
|
||||
// GET ID გადამოწმება
|
||||
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
|
||||
exit('არასწორი ID.');
|
||||
}
|
||||
|
||||
$id = (int)$_GET['id'];
|
||||
|
||||
// წაშლა
|
||||
InvoicesModel::deleteInvoice($id);
|
||||
|
||||
// გადამისამართება ინვოისების სიაზე
|
||||
|
||||
require_once __DIR__ . '/../../views/invoices/list.php';
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
// 📄 რედაქტირება
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
require_once __DIR__ . '/../../../../includes/init.php';
|
||||
require_once __DIR__ . '/../../models/invoicesmodel.php';
|
||||
require_once __DIR__ . '/../../../../../vendor/autoload.php';
|
||||
|
||||
InvoicesModel::setDb($pdo);
|
||||
|
||||
// ID შემოწმება
|
||||
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
|
||||
exit('არასწორი ID.');
|
||||
}
|
||||
|
||||
$id = (int)$_GET['id'];
|
||||
|
||||
// ინვოისის წამოღება
|
||||
$invoice = InvoicesModel::getInvoiceById($id);
|
||||
if (!$invoice) {
|
||||
exit('ინვოისი ვერ მოიძებნა.');
|
||||
}
|
||||
|
||||
// სელექტისთვის საჭირო მონაცემები
|
||||
$clients = InvoicesModel::getClientsList();
|
||||
$products = InvoicesModel::getProductList();
|
||||
|
||||
// ვიუ ჩატვირთვა
|
||||
require_once __DIR__ . '/../../views/invoices/edit.php';
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
// 📄 ინვოისის PDF გენერაცია - Controller
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
require_once __DIR__ . '/../../../../includes/init.php';
|
||||
require_once __DIR__ . '/../../models/invoicesmodel.php';
|
||||
require_once __DIR__ . '/../../../../vendor/autoload.php';
|
||||
|
||||
use Dompdf\Dompdf;
|
||||
use Dompdf\Options;
|
||||
use App\Config;
|
||||
|
||||
InvoicesModel::setDb($pdo);
|
||||
|
||||
// 🧾 ინვოისის ID გადმოსვლა GET-ით
|
||||
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
|
||||
exit('არასწორი ID');
|
||||
}
|
||||
|
||||
$id = (int)$_GET['id'];
|
||||
|
||||
// 🧾 ინვოისის მონაცემების წამოღება
|
||||
$invoice = InvoicesModel::getInvoiceById($id);
|
||||
if (!$invoice) {
|
||||
exit('ინვოისი ვერ მოიძებნა.');
|
||||
}
|
||||
|
||||
$client_name = $invoice['first_name'] . ' ' . $invoice['last_name'];
|
||||
|
||||
// 📄 PDF კონფიგურაცია
|
||||
$options = new Options();
|
||||
$options->set('isHtml5ParserEnabled', true);
|
||||
$options->set('isRemoteEnabled', true);
|
||||
|
||||
$dompdf = new Dompdf($options);
|
||||
|
||||
// 📄 შაბლონის HTML ჩატვირთვა
|
||||
ob_start();
|
||||
require_once realpath(Config::basePath() . '/admin/modules/billing/models/invoices/invoice_template.php');
|
||||
$html = ob_get_clean();
|
||||
|
||||
$dompdf->loadHtml($html, 'UTF-8');
|
||||
$dompdf->setPaper('A4', 'portrait');
|
||||
$dompdf->render();
|
||||
|
||||
// 📄 PDF-ის შენახვა დროებით
|
||||
$pdfOutput = $dompdf->output();
|
||||
$pdfPath = '/tmp/invoice_' . $invoice['id'] . '.pdf';
|
||||
file_put_contents($pdfPath, $pdfOutput);
|
||||
|
||||
// გადამისამართება ან ჩამოტვირთვა შეგიძლიათ დაამატოთ აქ
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
require_once __DIR__ . '/../../../../includes/init.php';
|
||||
require_once __DIR__ . '/../../models/invoicesmodel.php';
|
||||
require_once __DIR__ . '/../../../../../vendor/autoload.php';
|
||||
|
||||
use App\Config;
|
||||
|
||||
// ვუკავშირებთ ბაზას მოდელს
|
||||
InvoicesModel::setDb($pdo);
|
||||
|
||||
// ინვოისების წამოღება
|
||||
$invoices = InvoicesModel::getAllInvoices();
|
||||
|
||||
// ვიუს ჩატვირთვა
|
||||
require_once __DIR__ . '/../../views/invoices/list.php';
|
||||
@@ -0,0 +1,104 @@
|
||||
<!-- გაგზავნის ლოგიკა -->
|
||||
<?php
|
||||
|
||||
// ინვოისის გაგზავნა ელფოსტაზე PDF-ით
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
require_once __DIR__ . '/../../../../includes/init.php';
|
||||
require_once __DIR__ . '/../../models/invoicesmodel.php';
|
||||
require_once __DIR__ . '/../../../../../vendor/autoload.php';
|
||||
require_once __DIR__ . '/../../../../libs/phpmailer/src/PHPMailer.php';
|
||||
require_once __DIR__ . '/../../../../libs/phpmailer/src/SMTP.php';
|
||||
require_once __DIR__ . '/../../../../libs/phpmailer/src/Exception.php';
|
||||
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
|
||||
InvoicesModel::setDb($pdo);
|
||||
|
||||
// use Dompdf\Dompdf;
|
||||
|
||||
// use Dompdf\Options;
|
||||
|
||||
// $options = new Options();
|
||||
// $options->set('isRemoteEnabled', true);
|
||||
|
||||
// // ️➡️ უთხარი Dompdf-ს სად არის შენი შრიფტი
|
||||
// $options->setChroot(__DIR__ . '/../../'); // აქედან იმუშავებს relative path-ებით
|
||||
// $options->set('defaultFont', 'bpg_glaho');
|
||||
|
||||
// $dompdf = new Dompdf($options);
|
||||
|
||||
|
||||
InvoicesModel::setDb($pdo);
|
||||
|
||||
// 1. აიდი
|
||||
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
|
||||
if (!$id) {
|
||||
exit("არასწორი ინვოისის ID.");
|
||||
}
|
||||
|
||||
// 2. მოიტანე ინვოისი და ნივთები
|
||||
$invoice = InvoicesModel::getInvoiceWithItems($id);
|
||||
if (!$invoice) {
|
||||
exit("ინვოისი ვერ მოიძებნა.");
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 3. გენერაცია PDF ფაილის
|
||||
$pdfPath = InvoicesModel::generateInvoicePDF($invoice);
|
||||
|
||||
// Email გაგზავნა
|
||||
$mail = new PHPMailer(true);
|
||||
|
||||
try {
|
||||
$mail->isSMTP();
|
||||
$mail->Host = 'vps-7146dd3a.vps.ovh.ca'; // შეცვალე
|
||||
$mail->SMTPAuth = true;
|
||||
$mail->Username = 'noreply@selfhosting.ge'; // შეცვალე
|
||||
$mail->Password = 'FSZtTIIIlubk'; // შეცვალე
|
||||
$mail->SMTPSecure = 'ssl'; // ან ssl
|
||||
$mail->Port = 465; // ან 465
|
||||
|
||||
$mail->setFrom('noreply@selfhosting.ge', 'ბილინგ სერვისი');
|
||||
$mail->addAddress($invoice['email'], $invoice['first_name'] . ' ' . $invoice['last_name']);
|
||||
|
||||
$mail->CharSet = 'UTF-8'; // ✅ ეს არის მთავარი!
|
||||
$mail->Encoding = 'base64'; // ხშირად დაეხმარება UTF-8-ის სწორ გადაცემას
|
||||
|
||||
$mail->isHTML(true);
|
||||
$mail->Subject = "ინვოისი #" . $invoice['invoice_number'];
|
||||
$mail->Body = "
|
||||
გამარჯობა {$invoice['first_name']},<br><br>
|
||||
თქვენთვის შემუშავებულია ახალი ინვოისი ჯამური თანხით <strong>{$invoice['total_amount']} ₾</strong>.<br>
|
||||
გადახდის ვადა: {$invoice['due_date']}<br><br>
|
||||
იხილეთ დეტალურად: ინვოისის სანახავად იხილეთ მიმაგრებული ფაილი<br><br>
|
||||
მადლობა თანამშრომლობისთვის.
|
||||
";
|
||||
|
||||
$invoice = InvoicesModel::getInvoiceWithClientById($id);
|
||||
|
||||
$invoice['company_name'] = $invoice['client_company_name'];
|
||||
$invoice['vat_number'] = $invoice['client_vat_number'];
|
||||
$invoice['address1'] = $invoice['client_address1'];
|
||||
$client_name = $invoice['first_name'] . ' ' . $invoice['last_name'];
|
||||
// ინვოისის HTML
|
||||
$html = InvoicesModel::renderInvoiceHTML($invoice);
|
||||
|
||||
|
||||
$mail->addAttachment($pdfPath, 'Invoice_' . $invoice['invoice_number'] . '.pdf');
|
||||
$mail->send();
|
||||
|
||||
// ✅ წარმატებული გაგზავნის შემდეგ
|
||||
header("Location: dashboard.php?module=billing&submodule=invoices&action=view&id={$invoice['id']}&sent=1");
|
||||
exit;
|
||||
} catch (Exception $e) {
|
||||
echo "შეცდომა გაგზავნისას: {$mail->ErrorInfo}";
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
// 📬 გადახდის შეხსენების გაგზავნა
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
require_once __DIR__ . '/../../../../includes/init.php';
|
||||
require_once __DIR__ . '/../../models/invoicesmodel.php';
|
||||
require '../../libs/phpmailer/src/PHPMailer.php';
|
||||
require '../../libs/phpmailer/src/SMTP.php';
|
||||
require '../../libs/phpmailer/src/Exception.php';
|
||||
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
|
||||
foreach ($invoices as $invoice) {
|
||||
$mail = new PHPMailer(true);
|
||||
|
||||
try {
|
||||
// SMTP პარამეტრები
|
||||
$mail->isSMTP();
|
||||
$mail->Host = 'vps-7146dd3a.vps.ovh.ca';
|
||||
$mail->SMTPAuth = true;
|
||||
$mail->Username = 'levan@arabuli.info';
|
||||
$mail->Password = 'Aqsxcs@1211';
|
||||
$mail->SMTPSecure = 'ssl';
|
||||
$mail->Port = 465;
|
||||
|
||||
$clientName = $invoice['first_name'] . ' ' . $invoice['last_name'];
|
||||
|
||||
$mail->setFrom('levan@arabuli.info', 'Billing System');
|
||||
$mail->addAddress($invoice['email'], $clientName);
|
||||
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->isHTML(true);
|
||||
$mail->Subject = "გადახდის შეხსენება ინვოისზე #{$invoice['invoice_number']}";
|
||||
$mail->Body = "
|
||||
გამარჯობა {$clientName},<br><br>
|
||||
გთხოვთ გადაიხადოთ ინვოისი #{$invoice['invoice_number']} <strong>{$invoice['total_amount']} ₾</strong><br>
|
||||
გადახდის ბოლო ვადაა: <strong>{$invoice['due_date']}</strong><br><br>
|
||||
იხილეთ ინვოისი: <a href='https://yourdomain.com/dashboard.php?module=billing&submodule=invoices&action=view&id={$invoice['id']}'>იხილეთ ინვოისი</a>
|
||||
";
|
||||
|
||||
$mail->send();
|
||||
echo "✅ შეხსენება გაიგზავნა {$clientName} ({$invoice['email']})<br>";
|
||||
} catch (Exception $e) {
|
||||
echo "❌ შეცდომა: {$mail->ErrorInfo}<br>";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
require_once __DIR__ . '/../../../../includes/init.php';
|
||||
require_once __DIR__ . '/../../models/invoicesmodel.php';
|
||||
|
||||
InvoicesModel::setDb($pdo);
|
||||
|
||||
// POST მონაცემების დამუშავება
|
||||
$data = $_POST;
|
||||
$data['recurring'] = isset($data['recurring']) ? 1 : 0;
|
||||
|
||||
// სტატუსის ვალიდაცია
|
||||
if (!InvoicesModel::isValidStatus($data['status'])) {
|
||||
die('არასწორი სტატუსის მნიშვნელობა');
|
||||
}
|
||||
|
||||
// 🔢 ინვოისის ნომრის გენერაცია
|
||||
if (empty($data['invoice_number'])) {
|
||||
$data['invoice_number'] = InvoicesModel::generateInvoiceNumber();
|
||||
}
|
||||
|
||||
|
||||
// დუბლიკატის შემოწმება
|
||||
if (InvoicesModel::isDuplicateInvoiceNumber($data['invoice_number'])) {
|
||||
die('ინვოისის ნომერი უკვე გამოიყენება!');
|
||||
}
|
||||
|
||||
// ჩასმა მოდელის მეშვეობით
|
||||
$invoice_id = InvoicesModel::createInvoiceWithItems($data);
|
||||
|
||||
// გადამისამართება
|
||||
header("Location: dashboard.php?module=billing&submodule=invoices&action=view&id=" . $invoice_id);
|
||||
exit;
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
// ⚙️ ინვოისის განახლება
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
require_once __DIR__ . '/../../../../includes/init.php';
|
||||
require_once __DIR__ . '/../../models/invoicesmodel.php';
|
||||
require_once __DIR__ . '/../../../../../vendor/autoload.php';
|
||||
|
||||
InvoicesModel::setDb($pdo);
|
||||
|
||||
// 📨 მონაცემების მიღება
|
||||
if (!isset($_POST['id']) || !is_numeric($_POST['id'])) {
|
||||
exit('არასწორი ID.');
|
||||
}
|
||||
|
||||
$id = (int)$_POST['id'];
|
||||
$data = $_POST;
|
||||
|
||||
// ინვოისის განახლება
|
||||
InvoicesModel::updateInvoice($id, $data);
|
||||
|
||||
// ↪️ გადამისამართება
|
||||
header("Location: dashboard.php?module=billing&submodule=invoices&action=view&id=$id");
|
||||
exit;
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
require_once __DIR__ . '/../../../../includes/init.php';
|
||||
require_once __DIR__ . '/../../models/invoicesmodel.php';
|
||||
require_once __DIR__ . '/../../../../../vendor/autoload.php';
|
||||
|
||||
use App\Config;
|
||||
|
||||
// ბაზასთან დაკავშირება
|
||||
InvoicesModel::setDb($pdo);
|
||||
|
||||
// ID შემოწმება
|
||||
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
|
||||
echo "არასწორი ID.";
|
||||
exit;
|
||||
}
|
||||
|
||||
$id = (int) $_GET['id'];
|
||||
$showAlert = isset($_GET['sent']) && $_GET['sent'] == 1;
|
||||
|
||||
// ინვოისის წამოღება
|
||||
$invoice = InvoicesModel::getInvoiceWithClient($id);
|
||||
|
||||
if (!$invoice) {
|
||||
echo "ინვოისი ვერ მოიძებნა.";
|
||||
exit;
|
||||
}
|
||||
|
||||
// პროდუქტის items
|
||||
$productItems = InvoicesModel::getInvoiceItems($id);
|
||||
|
||||
// ვიუ ფაილის ჩატვირთვა
|
||||
require_once __DIR__ . '/../../views/invoices/view.php';
|
||||
Reference in New Issue
Block a user