tracker items

This commit is contained in:
heama 2024-02-23 12:51:38 +05:30
parent ac56f59350
commit d4a0c7acf4
6 changed files with 127 additions and 52 deletions

View File

@ -8,7 +8,7 @@ use App\Models\InvoiceModel;
use App\Helpers\NotificationHelper; use App\Helpers\NotificationHelper;
use Mpdf\Mpdf; use Mpdf\Mpdf;
use Dompdf\Dompdf;
class Invoice extends BaseController class Invoice extends BaseController
{ {
## For Invoice Listing.. ## For Invoice Listing..
@ -670,14 +670,30 @@ $encodedUrl = urlencode($url);
// print_r($invoiceItems);die(); // print_r($invoiceItems);die();
// Create an mPDF object // Create an mPDF object
$mpdf = new Mpdf(); $mpdf = new Mpdf([
'mode' => '',
'format' => 'A5',
'default_font_size' => 0,
'default_font' => '',
'margin_left' => 2,
'margin_right' => 2,
'margin_top' => 6,
'margin_bottom' => 6,
'margin_header' => 6,
'margin_footer' =>-30,
'orientation' => 'P',
]);
$mpdf->autoLangToFont = true; $mpdf->autoScriptToLang = true; $mpdf->autoLangToFont = true; $mpdf->autoScriptToLang = true;
// Set PDF properties // Set PDF properties
$mpdf->SetTitle('Invoice'); $mpdf->SetTitle('Invoice');
$mpdf->SetAuthor($data[0]->company_name); $mpdf->SetAuthor($data[0]->company_name);
$mpdf->SetCreator(''); $mpdf->SetCreator('');
$htmlFooter='<div > $htmlFooter='<div >
<img src="https://cdn.pixabay.com/photo/2012/04/26/14/17/blue-42596_960_720.png"style=margin-left:70px;/> </div>'; <img src="https://cdn.pixabay.com/photo/2012/04/26/14/17/blue-42596_960_720.png"style=margin-top:70px;/> </div>';
$mpdf->setHTMLFooter($htmlFooter); $mpdf->setHTMLFooter($htmlFooter);
// Generate the PDF content (HTML) // Generate the PDF content (HTML)
@ -696,6 +712,50 @@ $encodedUrl = urlencode($url);
// Output the PDF to the browser for download // Output the PDF to the browser for download
$mpdf->Output('invoice_' . date('Y-m-d H-i-s') . '.pdf', 'D'); $mpdf->Output('invoice_' . date('Y-m-d H-i-s') . '.pdf', 'D');
} }
// public function generate_invoice_pdf($id)
// {
// // Fetch the invoice data based on $invoice_id
// $model = new InvoiceModel();
// $data = $model->getInvoiceData($id);
// $invoiceItems = $model->getInvoiceItems($id, 'groupby');
// foreach ($invoiceItems as $index => $singleItem) {
// $productImgs = $model->getProductImgs($singleItem->product);
// $invoiceItems[$index]->imgs = $productImgs;
// }
// $invoice_type = $data[0]->invoice_type;
// // Create a DOMPDF instance
// $dompdf = new Dompdf();
// // Set PDF properties
// $options = $dompdf->getOptions();
// $options->set("isHtml5ParserEnabled", true);
// // Set paper size and orientation
// $dompdf->setPaper('A5', 'portrait');
// // Generate the PDF content (HTML)
// if ($data[0]->status === 'Draft') {
// // Add a watermark for draft status
// $dompdf->set_option('page_script', function ($pageNumber, $pageCount, $canvas) {
// $canvas->text(20, 20, 'Draft');
// });
// }
// // Generate the PDF content (HTML) with data
// $html = view('invoice_pdf_template', ['data' => $data, 'invoiceItems' => $invoiceItems, 'invoice_type' => $invoice_type, 'invoiceTerms' => $data]);
// // Load HTML into the DOMPDF instance
// $dompdf->loadHtml($html);
// // Render PDF (first pass to get the number of pages)
// $dompdf->render();
// // Output the PDF to the browser for download
// $dompdf->stream('invoice_' . date('Y-m-d H-i-s') . '.pdf', array('Attachment' => 0));
// }
public function print_address($id) public function print_address($id)
{ {
// Fetch the invoice data based on $id // Fetch the invoice data based on $id

View File

@ -469,7 +469,7 @@ class Notifications extends BaseController
# Step 3: Replace the placeholder WINDOW_TIME with the user-provided value # Step 3: Replace the placeholder WINDOW_TIME with the user-provided value
$modifiedQuery = str_replace('WINDOW_TIME', $window_time, $ExpCustomerDetail); $modifiedQuery = str_replace('WINDOW_TIME', $window_time, $ExpCustomerDetail);
// print_r($modifiedQuery);die;
if (empty($modifiedQuery)) { if (empty($modifiedQuery)) {
$this->logger->info('There is no sub query'); $this->logger->info('There is no sub query');
return; return;
@ -482,9 +482,11 @@ class Notifications extends BaseController
$this->logger->info("There is no customer expiring on date:{$newDate}"); $this->logger->info("There is no customer expiring on date:{$newDate}");
return; return;
} }
$emailTemplateName = $NotificationModel->getTempName(EXPIRAY_NOTIFY_TEMPLATE_EMAIL); $emailTemplateName = $NotificationModel->getTempName(EXPIRAY_NOTIFY_TEMPLATE_EMAIL);
echo "Started.<br> Dated = ".$newDate." <br> There are ".count($queryResult)." persons <br>"; echo "Started.<br> Dated = ".$newDate." <br> There are ".count($queryResult)." persons <br>";
foreach ($queryResult as $inx => $row) { foreach ($queryResult as $inx => $row) {
$status = $row['status'];
$userFirstName = $row['first_name']; $userFirstName = $row['first_name'];
$userLastName = $row['last_name']; $userLastName = $row['last_name'];
$fullName = $userFirstName . ' ' . $userLastName; $fullName = $userFirstName . ' ' . $userLastName;
@ -496,7 +498,7 @@ class Notifications extends BaseController
$this->logger->info('There is no subcription Name'); $this->logger->info('There is no subcription Name');
continue; continue;
} }
if ($status === 'Approved') {
# EXPIRAY_NOTIFY_TEMPLATE_EMAIL # EXPIRAY_NOTIFY_TEMPLATE_EMAIL
$emailTemplateName = $NotificationModel->getTempName(EXPIRAY_NOTIFY_TEMPLATE_EMAIL); $emailTemplateName = $NotificationModel->getTempName(EXPIRAY_NOTIFY_TEMPLATE_EMAIL);
if (count($emailTemplateName) && !empty($emailTemplateName)) { if (count($emailTemplateName) && !empty($emailTemplateName)) {
@ -558,8 +560,13 @@ class Notifications extends BaseController
echo $history_msg."<br>"; echo $history_msg."<br>";
continue; continue;
} }
# EXPIRAY_NOTIFY_TEMPLATE_EMAIL Closed
}
else{
$this->logger->info("status is Draft");
}
# EXPIRAY_NOTIFY_TEMPLATE_EMAIL Closed
if ($status === 'Approved') {
# EXPIRAY_NOTIFY_TEMPLATE_WHATSAPP # EXPIRAY_NOTIFY_TEMPLATE_WHATSAPP
$whatsappTemplateName = $NotificationModel->getTempName(EXPIRAY_NOTIFY_TEMPLATE_WHATSAPP); $whatsappTemplateName = $NotificationModel->getTempName(EXPIRAY_NOTIFY_TEMPLATE_WHATSAPP);
// print_r($whatsappTemplateName);die; // print_r($whatsappTemplateName);die;
@ -644,11 +651,17 @@ class Notifications extends BaseController
echo "There is no Whatsapp template <br>"; echo "There is no Whatsapp template <br>";
continue; continue;
} }
# EXPIRAY_NOTIFY_TEMPLATE_WHATSAPP Closed # EXPIRAY_NOTIFY_TEMPLATE_WHATSAPP Closed
} }
else{
$this->logger->info("statsu is draft");
}
# Loop Closed # Loop Closed
echo "Process Completed <br>"; echo "Process Completed <br>";
} }
}
# getExpCustomerDetail fns Closed # getExpCustomerDetail fns Closed
################################################################ ################################################################

View File

@ -96,11 +96,11 @@
</div> </div>
<?php if ($invoice_type === '2') : ?> <?php if ($invoice_type === '2') : ?>
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label for="fromsubcription">From Subcription<span class="text-danger"> *</span></label> <label for="fromsubcription">From Subscription<span class="text-danger"> *</span></label>
<input type="date" class="form-control" id="fromsubcription" name="from_subscription" value="<?= isset($invoice_item_details[0]['from_subscription']) ? $invoice_item_details[0]['from_subscription'] : '' ?>" required onchange="updateToDateMinDate(this.value)"> <input type="date" class="form-control" id="fromsubcription" name="from_subscription" value="<?= isset($invoice_item_details[0]['from_subscription']) ? $invoice_item_details[0]['from_subscription'] : '' ?>" required onchange="updateToDateMinDate(this.value)">
</div> </div>
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label for="tosubcription">To Subcription<span class="text-danger"> *</span></label> <label for="tosubcription">To Subscription<span class="text-danger"> *</span></label>
<input type="date" class="form-control" id="tosubcription" name="to_subscription" value="<?= isset($invoice_item_details[0]['to_subscription']) ? $invoice_item_details[0]['to_subscription'] : '' ?>" required> <input type="date" class="form-control" id="tosubcription" name="to_subscription" value="<?= isset($invoice_item_details[0]['to_subscription']) ? $invoice_item_details[0]['to_subscription'] : '' ?>" required>
</div> </div>
<?php endif; ?> <?php endif; ?>

View File

@ -233,13 +233,7 @@ td.invoice-number {
<td><?= $item->quantity ?></td> <td><?= $item->quantity ?></td>
<td><?= number_format($item->unit_price, 2, '.', ',') ?></td> <td><?= number_format($item->unit_price, 2, '.', ',') ?></td>
<td>
<?php if ($item->discount_type === '%') : ?>
<?= $item->discount_amount ?>%
<?php elseif ($item->discount_type === '₹') : ?>
<?= number_format((float)$item->discount_amount, 2, '.', ',') ?>
<?php endif; ?>
</td>
<td><?= number_format($item->subtotal, 2, '.', ',') ?></td> <td><?= number_format($item->subtotal, 2, '.', ',') ?></td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>

View File

@ -73,7 +73,7 @@ $(document).ready(function() {
buttons: [ buttons: [
{ {
extend: 'print', extend: 'print',
title: 'Experired Invoice Report', title: 'Expired Invoice Report',
text: 'Print', text: 'Print',
customize: function(win) { customize: function(win) {
// Exclude the first and last columns // Exclude the first and last columns

View File

@ -271,48 +271,56 @@ $(document).ready(function () {
</script> </script>
<script> <script>
$(document).ready(function () { $(document).ready(function () {
// Assuming you trigger the AJAX on the change event of the role dropdown // ...
$('#role').on('change', function () {
var selectedRole = $(this).val();
// Check if the selected role is "manager" before making the AJAX request // Assuming you trigger the AJAX on the change event of the role dropdown
if (selectedRole === 'manager') { $('#role').on('change', function () {
var storedEventId = '<?= isset($details['event_id']) ? $details['event_id'] : '' ?>'; var selectedRole = $(this).val();
var storedEventId = '<?= isset($details['event_id']) ? $details['event_id'] : '' ?>';
// Perform AJAX request to fetch event names based on the selected role // Check if the selected role is "manager" before making the AJAX request
$.ajax({ if (selectedRole === 'manager') {
url: "<?= base_url('users/fetch_event_names') ?>", // Perform AJAX request to fetch event names based on the selected role
type: 'GET', $.ajax({
dataType: 'json', url: "<?= base_url('users/fetch_event_names') ?>",
success: function (data) { type: 'GET',
// Assuming your response has an array of event names dataType: 'json',
var eventNames = data.eventNames; success: function (data) {
// Assuming your response has an array of event names
var eventNames = data.eventNames;
// Clear existing options and add the default option // Clear existing options and add the default option
$('#event_id').empty().append('<option value="">Select Event</option>'); $('#event_id').empty().append('<option value="">Select Event</option>');
// Add new options based on the fetched data // Add new options based on the fetched data
for (var i = 0; i < eventNames.length; i++) { for (var i = 0; i < eventNames.length; i++) {
$('#event_id').append('<option value="' + eventNames[i].event_id + '">' + eventNames[i].event_name + '</option>'); $('#event_id').append('<option value="' + eventNames[i].event_id + '">' + eventNames[i].event_name + '</option>');
}
// Set the selected option based on the stored event ID
if (storedEventId) {
$('#event_id').val(storedEventId);
}
},
error: function (error) {
console.error(error); // Log any errors to the console
} }
});
} else {
// Clear event names dropdown if the selected role is not "manager"
$('#event_id').empty().append('<option value="">Select Event</option>');
}
});
// Trigger the change event initially to populate event names on page load // Set the selected option based on the stored event ID
$('#role').change(); if (storedEventId && $('#event_id option[value="' + storedEventId + '"]').length > 0) {
// Set the stored event ID if it exists in the new options
$('#event_id').val(storedEventId);
} else {
// Set the default "Select Event" option
$('#event_id').val('');
}
},
error: function (error) {
console.error(error); // Log any errors to the console
}
});
} else {
// Clear event names dropdown if the selected role is not "manager"
$('#event_id').empty().append('<option value="">Select Event</option>');
}
}); });
// Trigger the change event initially to populate event names on page load
$('#role').change();
// ...
});
</script> </script>