diff --git a/app/Config/Email.php b/app/Config/Email.php index 4dce650b..7c3570e6 100755 --- a/app/Config/Email.php +++ b/app/Config/Email.php @@ -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.) diff --git a/app/Controllers/Inwardgateregister.php b/app/Controllers/Inwardgateregister.php index 1b58896b..65d02aaf 100755 --- a/app/Controllers/Inwardgateregister.php +++ b/app/Controllers/Inwardgateregister.php @@ -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){ diff --git a/app/Controllers/Report.php b/app/Controllers/Report.php index 4ebc9791..366c643c 100755 --- a/app/Controllers/Report.php +++ b/app/Controllers/Report.php @@ -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(); diff --git a/app/Controllers/User.php b/app/Controllers/User.php index 11b76339..94112de0 100755 --- a/app/Controllers/User.php +++ b/app/Controllers/User.php @@ -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(); diff --git a/app/Helpers/Notification.php b/app/Helpers/Notification.php new file mode 100755 index 00000000..337ea132 --- /dev/null +++ b/app/Helpers/Notification.php @@ -0,0 +1,71 @@ +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; + } +} + +?> diff --git a/app/Models/Dashboard_model.php b/app/Models/Dashboard_model.php index fd3f9a58..b9580445 100755 --- a/app/Models/Dashboard_model.php +++ b/app/Models/Dashboard_model.php @@ -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(); + } + } \ No newline at end of file diff --git a/app/Models/Inwardgateregister_model.php b/app/Models/Inwardgateregister_model.php index 245000a8..70901a0e 100755 --- a/app/Models/Inwardgateregister_model.php +++ b/app/Models/Inwardgateregister_model.php @@ -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 + ]; + } + } \ No newline at end of file diff --git a/app/Models/Monthlypay_model.php b/app/Models/Monthlypay_model.php index bfdb24f9..8e380491 100755 --- a/app/Models/Monthlypay_model.php +++ b/app/Models/Monthlypay_model.php @@ -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(); diff --git a/app/Models/PowerConsumptionSummaryModel.Php b/app/Models/PowerConsumptionSummaryModel.php similarity index 100% rename from app/Models/PowerConsumptionSummaryModel.Php rename to app/Models/PowerConsumptionSummaryModel.php diff --git a/app/Views/Report_pending_purchase.php b/app/Views/Report_pending_purchase.php index 14388065..901e3a75 100755 --- a/app/Views/Report_pending_purchase.php +++ b/app/Views/Report_pending_purchase.php @@ -3,6 +3,7 @@ $("#client_name").select2(); $("#item_name").select2(); + $("#purchaseorder_number").select2(); }); @@ -45,22 +46,28 @@
-
+
-
+ + +
+
+ Result filter by :

+
+
@@ -135,7 +142,7 @@
-
+
@@ -144,7 +151,7 @@
-
+
@@ -153,6 +160,19 @@
+
+ + +

user/zohobooks_api_fetch_all", type: "post", diff --git a/app/Views/viewinwardgateregister.php b/app/Views/viewinwardgateregister.php index 8272e912..bd6d17b9 100755 --- a/app/Views/viewinwardgateregister.php +++ b/app/Views/viewinwardgateregister.php @@ -356,10 +356,9 @@
-