Merge branch 'new_theme' of bitbucket.org:venbainformationtechnology/ria into new_theme

This commit is contained in:
vadivelJ96 2025-01-29 18:11:38 +05:30
commit c3ed0fbbbc
14 changed files with 211 additions and 30 deletions

View File

@ -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.)

View File

@ -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){

View File

@ -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();

View File

@ -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
View 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;
}
}
?>

View File

@ -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();
}
}

View File

@ -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
];
}
}

View File

@ -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();

View File

@ -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: [

View File

@ -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",

View File

@ -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);

Binary file not shown.

Binary file not shown.