Merge branch 'new_theme' of bitbucket.org:venbainformationtechnology/ria into new_theme
This commit is contained in:
commit
c3ed0fbbbc
@ -18,7 +18,7 @@ class Email extends BaseConfig
|
||||
/**
|
||||
* The mail sending protocol: mail, sendmail, smtp
|
||||
*/
|
||||
public string $protocol = 'mail';
|
||||
public string $protocol = 'smtp';
|
||||
|
||||
/**
|
||||
* The server path to Sendmail.
|
||||
@ -28,27 +28,31 @@ class Email extends BaseConfig
|
||||
/**
|
||||
* SMTP Server Hostname
|
||||
*/
|
||||
public string $SMTPHost = '';
|
||||
|
||||
public string $SMTPHost = 'smtp.gmail.com';
|
||||
// public string $SMTPHost = 'smtppro.zoho.com';
|
||||
|
||||
/**
|
||||
* SMTP Username
|
||||
*/
|
||||
public string $SMTPUser = '';
|
||||
public string $SMTPUser = 'venbalap08@gmail.com';
|
||||
// public string $SMTPUser = 'mailadmin@resicoindustries.com';
|
||||
|
||||
/**
|
||||
* SMTP Password
|
||||
*/
|
||||
public string $SMTPPass = '';
|
||||
public string $SMTPPass = 'oykobiumkymckoir';
|
||||
// public string $SMTPPass = 'RI@feb23';
|
||||
|
||||
/**
|
||||
* SMTP Port
|
||||
*/
|
||||
public int $SMTPPort = 25;
|
||||
public int $SMTPPort = 587;
|
||||
// public int $SMTPPort = 465;
|
||||
|
||||
/**
|
||||
* SMTP Timeout (in seconds)
|
||||
*/
|
||||
public int $SMTPTimeout = 5;
|
||||
public int $SMTPTimeout = 20;
|
||||
|
||||
/**
|
||||
* Enable persistent SMTP connections
|
||||
@ -77,7 +81,7 @@ class Email extends BaseConfig
|
||||
/**
|
||||
* Type of mail, either 'text' or 'html'
|
||||
*/
|
||||
public string $mailType = 'text';
|
||||
public string $mailType = 'html';
|
||||
|
||||
/**
|
||||
* Character set (utf-8, iso-8859-1, etc.)
|
||||
|
||||
@ -8,7 +8,7 @@ use CodeIgniter\Validation\Exceptions\ValidationException;
|
||||
|
||||
use App\Models\Inwardgateregister_model;
|
||||
use App\Models\IGRRemarks_model;
|
||||
|
||||
use App\Helpers\Notification;
|
||||
use DateTime;
|
||||
|
||||
use ZipArchive;
|
||||
@ -26,6 +26,7 @@ class Inwardgateregister extends BaseController
|
||||
protected $inwardgateregister_model;
|
||||
protected $IGRRemarks_model;
|
||||
protected $session;
|
||||
protected $logger;
|
||||
|
||||
/**
|
||||
* This is default constructor of the class
|
||||
@ -38,6 +39,7 @@ class Inwardgateregister extends BaseController
|
||||
|
||||
$this->session = session();
|
||||
helper('form'); //$this->load->library('form_validation');
|
||||
$this->logger = service('logger'); // Load the logger service
|
||||
|
||||
$this->isLoggedIn();
|
||||
}
|
||||
@ -410,6 +412,7 @@ class Inwardgateregister extends BaseController
|
||||
//$IGRStatus = IGR_CREATED;//old
|
||||
$PreIGRStatus = (int)$this->request->getPost('hideIGRStatus') == 1 ? IGR_CREATED : IGR_DRAFT;
|
||||
$IGRStatus = ((int)$IsThisOpenOrderPO == 1) ? IGR_DRAFT : $PreIGRStatus;
|
||||
|
||||
$igr = array(); // For IGR Master
|
||||
$paymentstatus = NO_PAIDIGR;
|
||||
|
||||
@ -827,6 +830,7 @@ function viewIGRDetails()
|
||||
|
||||
log_message('error', 'UpdateIGR igrarr: ' . json_encode($igrarr));
|
||||
$updateigrmaster = $this->inwardgateregister_model->updateigr($igrarr, $IGRNo);
|
||||
log_message('error', "Master updated successfully: " . $updateigrmaster);
|
||||
if(!empty($tableData )){
|
||||
if($VehicleNo){
|
||||
$vecno = $this->inwardgateregister_model->get_igr_history('VehicleNo',$IGRNo);
|
||||
@ -1073,6 +1077,42 @@ function viewIGRDetails()
|
||||
|
||||
}
|
||||
}
|
||||
$result_for_email = $this->inwardgateregister_model->getDetailsforEmail($this->session->get('userId'));
|
||||
|
||||
|
||||
|
||||
if ($updateigrmaster > 0 || $updateigrlineitem > 0) {
|
||||
if ($IGRStatus == IGR_CREATED || $IGRStatus == MRIR_CREATED || $IGRStatus == MRIR_APPROVED ) {
|
||||
|
||||
$result_for_email = $this->inwardgateregister_model->getDetailsforEmail($this->session->get('userId'));
|
||||
$notification = new Notification();
|
||||
|
||||
for ($i = 0; $i < count($result_for_email['emails']); $i++) {
|
||||
$email_response = $notification->sendEmail([
|
||||
'recipient_email' => $result_for_email['emails'][$i]->email,
|
||||
'subject' => 'Resico Industries - IGR Notification',
|
||||
'description' => 'IGR Number : '.$IGRNo.' is Edited By '.($result_for_email['full_name'] ?? $this->session->get('name')),
|
||||
'company' => $result_for_email['company'],
|
||||
'from_mail'=> $result_for_email['from_mail']
|
||||
]);
|
||||
|
||||
log_message('error', 'email reponse : ' . json_encode($email_response));
|
||||
// Determine the email response
|
||||
$mail_log = isset($email_response['success']) ? 'Email sent successfully' : 'Failed to send email';
|
||||
$receiving_status = isset($email_response['success']) ? 1 : 0;
|
||||
|
||||
// Log the result
|
||||
if ($receiving_status) {
|
||||
$this->logger->info("Email ID = " . $result_for_email['emails'][$i]->email . " " . $mail_log);
|
||||
} else {
|
||||
$this->logger->error("Email ID = " . $result_for_email['emails'][$i]->email . " " . $mail_log);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($updateigrmaster > 0) {
|
||||
$finalstatement = "Successfully Updated IGR Number: $IGRNo \n";
|
||||
} else if($updateigrlineitem >0){
|
||||
|
||||
@ -41,8 +41,8 @@ use App\Models\Zohobook_api_model;
|
||||
class Report extends BaseController
|
||||
{
|
||||
protected $dahsboard_Model;
|
||||
protected $session;
|
||||
|
||||
protected $session;
|
||||
protected $logger;
|
||||
/**
|
||||
* This is default constructor of the class
|
||||
*/
|
||||
@ -54,6 +54,7 @@ class Report extends BaseController
|
||||
|
||||
$this->isLoggedIn();
|
||||
$this->session = session();
|
||||
$this->logger = service('logger');
|
||||
}
|
||||
|
||||
public function index()
|
||||
@ -987,6 +988,8 @@ class Report extends BaseController
|
||||
$frm = $this->request->getPost('from_date');
|
||||
$t = $this->request->getPost('to_date');
|
||||
$m = $this->request->getPost('month');
|
||||
$purchaseorder_number = $this->request->getPost('purchaseorder_number');
|
||||
|
||||
|
||||
$ab = $this->request->getPost('financialyear');
|
||||
$fa = substr((string)$ab, 0, -5);
|
||||
@ -996,11 +999,11 @@ class Report extends BaseController
|
||||
$headline .= (isset($prod) && !empty($prod)) ? $prod . ' ' : '';
|
||||
$headline .= (isset($ab) && !empty($ab)) ? '(' . $ab . ') ' : '';
|
||||
$headline .= (isset($m) && !empty($m)) ? '(' . $m . ') ' : '';
|
||||
$headline .= (isset($frm) && isset($t) && !empty($m) && !empty($m)) ? $frm . '-to-' . $t : '';
|
||||
|
||||
$pending_purchase_details = $this->dahsboard_Model->pending_purchase($cname, $prod, $fa, $aa, $m, $frm, $t);
|
||||
$headline .= ((isset($frm) && isset($t)) && (!empty($frm) && !empty($t))) ? $frm . '-to-' . $t : '';
|
||||
$headline .= (isset($purchaseorder_number) && !empty($purchaseorder_number)) ? '(' . $purchaseorder_number . ') ' : '';
|
||||
$pending_purchase_details = $this->dahsboard_Model->pending_purchase($cname, $prod, $fa, $aa, $m, $frm, $t, $purchaseorder_number);
|
||||
}
|
||||
|
||||
$data['pono'] = $this->dahsboard_Model->purchase_order_list();
|
||||
$data['material'] = $this->dahsboard_Model->material_name();
|
||||
$data['cust'] = $this->dahsboard_Model->customer_name();
|
||||
$data['finyear'] = $this->dahsboard_Model->report_finyear();
|
||||
|
||||
@ -1368,6 +1368,7 @@ class User extends BaseController
|
||||
$headers_new = $result['headers_new'];
|
||||
$res = json_decode($result['data'], true);
|
||||
$inv_array = $res['invoices'];
|
||||
// dd($inv_array);
|
||||
// print_r($inv_array);
|
||||
// echo "rrrr";
|
||||
// die();
|
||||
|
||||
71
app/Helpers/Notification.php
Executable file
71
app/Helpers/Notification.php
Executable file
@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
namespace App\Helpers;
|
||||
|
||||
class Notification
|
||||
{
|
||||
protected $email;
|
||||
protected $logger;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->email = service('email');
|
||||
$this->logger = service('logger');
|
||||
}
|
||||
|
||||
public function sendEmail($records)
|
||||
{
|
||||
$this->logger->error('Helper : Email Request Data type = '.gettype($records));
|
||||
|
||||
$cc = isset($records['carboncopy']) ? $records['carboncopy'] : '';
|
||||
$bcc = isset($records['blindcarboncopy']) ? $records['blindcarboncopy'] : '';
|
||||
|
||||
try {
|
||||
$this->email->clear();
|
||||
if($records['recipient_email'] == "" && $records['subject'] == ""){
|
||||
throw new \Exception("Email and Subject are Must Please Try again..");
|
||||
}
|
||||
$this->email->setTo($records['recipient_email']);
|
||||
$this->logger->error('Helper : Email recipient = '.$records['recipient_email']);
|
||||
|
||||
$this->email->setFrom($records['from_mail'], isset($records['company'])?$records['company']:"RI Pvt Ltd");
|
||||
$this->email->setSubject($records['subject']);
|
||||
$this->logger->error('Helper : Email subject = '.$records['subject']);
|
||||
|
||||
$this->email->setMessage($records['description']);
|
||||
|
||||
if ($cc !== '') {
|
||||
$ccRecipients = explode(',', trim($cc));
|
||||
$this->logger->error('Helper : Email carbon copy CC recipient = ' . implode(',', $ccRecipients));
|
||||
if (!empty($ccRecipients)) {
|
||||
$this->email->setCC($ccRecipients);
|
||||
}
|
||||
} else {
|
||||
$this->email->setCC('vadivel.j@venbainfotech.com');
|
||||
}
|
||||
|
||||
if ($bcc !== '') {
|
||||
$bccRecipients = explode(',', trim($bcc));
|
||||
$this->logger->error('Helper : Email blindcarboncopy BCC recipient = ' . implode(',', $bccRecipients));
|
||||
if(!empty($bccRecipients)) {
|
||||
$this->email->setBCC($bccRecipients);
|
||||
}
|
||||
}else{
|
||||
$this->email->setCC('gowtham.m@venbainfotech.com');
|
||||
}
|
||||
|
||||
if ($this->email->send()) {
|
||||
$message['success'] = 'Email sent successfully';
|
||||
$this->logger->error('Helper : Email Status = sent successfully');
|
||||
} else {
|
||||
throw new \Exception('Email sending failed.');
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->error('Helper : Email Error = ' . $e->getMessage());
|
||||
$message['error'] = 'Email Exception Occur : ' . $e->getMessage();
|
||||
}
|
||||
return $message;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@ -2185,7 +2185,7 @@ category = '" . $cat . "' ";
|
||||
//echo $sql;
|
||||
return $query->getResult();
|
||||
}
|
||||
function pending_purchase($cname, $prod, $fa, $aa, $m, $frm, $t)
|
||||
function pending_purchase($cname, $prod, $fa, $aa, $m, $frm, $t, $purchaseorder_number)
|
||||
{
|
||||
|
||||
$sql = "select po.PONO as po,date_format(po.PODate,'%d-%m-%Y') as pdate,sup.SupplierName as supplier,mm.MaterialName as material,mm.Category as category,pl.Quantity as quantity,pl.ReceivedQuantity as received, (pl.Quantity - pl.ReceivedQuantity) as pending
|
||||
@ -2227,6 +2227,10 @@ where po.Status != 'ST030' and po.Status = 'ST026'
|
||||
// $sql.=" and mm.Category = '".$cat."' ";
|
||||
|
||||
// }
|
||||
|
||||
if($purchaseorder_number != ''){
|
||||
$sql .= " and po.PONO = '" . $purchaseorder_number . "' ";
|
||||
}
|
||||
$sql .= "order by po.PONO";
|
||||
$query = $this->db->query($sql);
|
||||
//echo $sql;
|
||||
@ -3020,4 +3024,15 @@ function daybeforetotal($yesterday){
|
||||
$query = $this->db->query($sql);
|
||||
return $query->getResult();
|
||||
}
|
||||
|
||||
function purchase_order_list()
|
||||
{
|
||||
$sql = "select po.PONO as po,po.POType as type,date(po.PODate) as podate
|
||||
from t_purchaseorder_master po
|
||||
where po.Status != 'ST030' and po.Status = 'ST026'
|
||||
order by podate desc";
|
||||
$query = $this->db->query($sql);
|
||||
return $query->getResult();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1167,6 +1167,35 @@ class Inwardgateregister_model extends Model
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getDetailsforEmail($userId)
|
||||
{
|
||||
$query0 = $this->db->query("
|
||||
SELECT CompanyName,EmailAddress
|
||||
FROM t_company_details");
|
||||
$company = $query0->getRow();
|
||||
|
||||
$query1 = $this->db->query("
|
||||
SELECT CONCAT_WS(' ', t_employee_details.FirstName, t_employee_details.LastName) AS FullName
|
||||
FROM tbl_users
|
||||
LEFT JOIN t_employee_details ON tbl_users.EmpID = t_employee_details.EmpID
|
||||
WHERE tbl_users.userId = ?", [$userId]
|
||||
);
|
||||
$fullName = $query1->getRow();
|
||||
|
||||
$query2 = $this->db->query("
|
||||
SELECT email FROM tbl_users
|
||||
WHERE isDeleted = 0 AND roleId = 2" // hardcoded because auditor role only. refer with gwm 29/01/2025
|
||||
);
|
||||
$emails = $query2->getResult();
|
||||
|
||||
return [
|
||||
'from_mail' => $company ? $company->EmailAddress : null,
|
||||
'full_name' => $fullName ? $fullName->FullName : null,
|
||||
'company' => $company ? $company->CompanyName : null,
|
||||
'emails' => $emails
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -210,17 +210,17 @@ class Monthlypay_model extends Model
|
||||
$count = $res[0]['count'];
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($count == 0) {
|
||||
$builder = $this->db->table('t_monthly_pay_inputs');
|
||||
$builder->insert($data);
|
||||
$i = $this->db->affectedRows();
|
||||
return $i;
|
||||
} elseif ($count == 1) {
|
||||
|
||||
$this->db->table('t_monthly_pay_inputs')
|
||||
// ->where('H_date', $data['H_Date']) // ask velmurugan H_Date public hoilday table la irukku
|
||||
->where('EmpID', $data['EmpID']) // temp solution
|
||||
->where('Month_Year', $data['Month_Year'])
|
||||
->update($data);
|
||||
|
||||
$i = $this->db->affectedRows();
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
$("#client_name").select2();
|
||||
$("#item_name").select2();
|
||||
$("#purchaseorder_number").select2();
|
||||
|
||||
|
||||
});
|
||||
@ -45,22 +46,28 @@
|
||||
<!-- start page title -->
|
||||
<div>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="col-12">
|
||||
<div class="page-title-box page-title-box-alt">
|
||||
<div class="page-title-right">
|
||||
<ol class="breadcrumb m-0">
|
||||
<li class="breadcrumb-item"><a href="javascript: void(0);">Purchase</a></li>
|
||||
<li class="breadcrumb-item"><a href="javascript: void(0);">Purchase Order</a></li>
|
||||
<li class="breadcrumb-item active">
|
||||
<h4 class="page-title"><b> Pending Purchase Order </b><br><br><?php echo $headline ?></h4>
|
||||
<h4 class="page-title"><b> Pending Purchase Order </b></h4>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 text-right">
|
||||
<?php if(isset($headline)) : if(!empty($headline)) : ?>
|
||||
|
||||
<div class="col-12">
|
||||
<div class="page-title-right">
|
||||
<span>Result filter by : </span><h4 class="page-title" style="display: inline;"><?php echo $headline; ?></h4>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; endif; ?>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@ -135,7 +142,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<div class="col-2">
|
||||
<label for="from_date">
|
||||
<?php echo 'From Date'; ?>
|
||||
</label>
|
||||
@ -144,7 +151,7 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="col-2">
|
||||
<label for="to_date">
|
||||
<?php echo 'To Date'; ?>
|
||||
</label>
|
||||
@ -153,6 +160,19 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<label for="purchaseorder_number">
|
||||
<?php echo 'Purchase order number'; ?>
|
||||
</label>
|
||||
<select class="form-control" id="purchaseorder_number" name="purchaseorder_number">
|
||||
<option value="">Select PO NO</option>
|
||||
<?php
|
||||
foreach ($pono as $po): { ?>
|
||||
<option value="<?php echo $po->po; ?>"><?php echo $po->po.'-'.$po->type; ?></option>
|
||||
<?php }
|
||||
endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2"></div>
|
||||
<div class="col-md-2 text-right"><br>
|
||||
<input type="submit" class="btn btn-success" name="btn_submit"
|
||||
@ -423,7 +443,7 @@
|
||||
var table = $('#cc').DataTable({
|
||||
dom: 'Blfrtip', // Buttons, length menu, filter, table, information, pagination
|
||||
buttons: [
|
||||
'copy', 'csv', 'excel', 'pdf', 'print' // Export buttons
|
||||
'copy', 'csv' // Export buttons
|
||||
],
|
||||
pageLength: 10, // Default rows per page
|
||||
lengthMenu: [
|
||||
|
||||
@ -90,7 +90,6 @@ if (!empty($EmpCount)) {
|
||||
var sync = true
|
||||
$('#loader').show();
|
||||
$.ajax({
|
||||
// $('#loadingDiv').show();
|
||||
|
||||
url: "<?php echo base_url() ?>user/zohobooks_api_fetch_all",
|
||||
type: "post",
|
||||
|
||||
@ -356,10 +356,9 @@
|
||||
</div><!-- /.modal-dialog -->
|
||||
</div><!-- /.modal -->
|
||||
|
||||
|
||||
<!-- Igr modal fade -->
|
||||
<div id="Igrshow" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl">
|
||||
<div class="modal-dialog modal-full-width">
|
||||
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
@ -394,8 +393,8 @@
|
||||
<div class="form-group">
|
||||
<label class="col-form-label">Supplier Name <span class="text-danger">*</span></label>
|
||||
|
||||
<?php $data = array('name' => 'SupplierName', 'value' => set_value('SupplierName'), 'id' => 'Supplier', 'class' => 'form-control', 'required=>"true"', 'readonly' => 'true');
|
||||
echo form_input($data);
|
||||
<?php $data = array('name' => 'SupplierName', 'value' => set_value('SupplierName'), 'id' => 'Supplier', 'class' => 'form-control', 'required=>"true"', 'readonly' => 'true' ,'rows' => 2);
|
||||
echo form_textarea($data);
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
@ -918,7 +917,7 @@
|
||||
$("#DriverMobileNumber").val(item.DriverMobileNumber);
|
||||
$("#IGRStatus").val(item.IGRStatus);
|
||||
$("#PONo").val(item.PONO);
|
||||
$("#Supplier").val(item.SupplierName);
|
||||
$("#Supplier").val(item.SupplierName + "\n" + item.Address);
|
||||
$("#Add1").val(item.Address);
|
||||
$("#Invoice_No").val(item.DeliveryChellanOrInvoiceNo);
|
||||
console.log(typeof item.MasterFile);
|
||||
|
||||
BIN
public/assets/mixkit-bell-notification-933.wav
Normal file
BIN
public/assets/mixkit-bell-notification-933.wav
Normal file
Binary file not shown.
BIN
public/new_assets/mixkit-bell-notification-933.wav
Normal file
BIN
public/new_assets/mixkit-bell-notification-933.wav
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user