CHANGE_TRACKER_ISSUE_PUSH : AADHAVAN

This commit is contained in:
unknown 2024-06-14 16:40:58 +05:30
parent fd18f1011d
commit 34754b55b0
17 changed files with 709 additions and 63 deletions

View File

@ -12,12 +12,17 @@ $routes->setTranslateURIDashes(false);
$routes->set404Override();
//Login//
$routes->get('/', 'Login::index');
$routes->get('log_out', 'Login::index');
$routes->get('log_out', 'Login::logout');
$routes->post("authenticate", "Login::authenticate");
$routes->get("edit_account/(:any)", "Users::edit_account/$1");
$routes->post("edit_mail/(:any)", "Users::edit_mail/$1");
$routes->post("change_password/(:any)", "Users::change_password/$1");
$routes->post("change_password_forget", "Users::change_password_forget");
$routes->post("add_account", "Users::add_account");
$routes->match(['get','post'],'/forgot_password','Users::forgot_password');
$routes->match(['get','post'],'/verify_otp','Users::verify_otp');
// $routes->get("new_user/(:any)", "Users::new_user/$1");
// $routes->get("delete_user/(:any)", "Users::delete_user/$1");
//end Login//

View File

@ -59,12 +59,12 @@ class Client extends BaseController
if(!$this->session->has('logged_user')) { return redirect()->to(base_url()); }
$ClientModel = new ClientModel();
$mobile_no = $this->request->getPost('mobile');
$data = [
'client_name' => $this->request->getPost('client_name'),
'email' => $this->request->getPost('email'),
'address' => $this->request->getPost('address'),
'mobile_no' => $this->request->getPost('mobile'),
'mobile_no' =>$mobile_no,
'city' => $this->request->getPost('city'),
'state' => $this->request->getPost('state'),
'postal_code' => $this->request->getPost('postalcode'),
@ -74,20 +74,30 @@ class Client extends BaseController
'branch_id' => $this->session->get('logged_user_branch_id')
];
// print_r($data);die;
$client_id = $this->request->getPost('client_id');
if (!empty($client_id)) {
$ClientModel->update($client_id, $data);
} else {
$update= $ClientModel->update($client_id, $data);
$ClientModel->insert($data);
if($update){
return json_encode("update");
}
} else {
if($ClientModel->where('mobile_no', $mobile_no)->first()){
$error = "Mobile number already exists";
return json_encode(false);
}else{
$ClientModel->insert($data);
return json_encode(true);
}
}
return redirect()->to('client_index');
// return redirect()->to('client_index');
}
public function delete_client($client_id)

View File

@ -19,6 +19,24 @@ class Login extends BaseController
return view('login_form');
}
public function logout()
{
// Remove specific session variables
$this->session->remove('logged_user');
$this->session->remove('logged_user_branch_id');
$this->session->remove('logged_user_business_id');
$this->session->remove('logged_user_role');
$this->session->remove('logged_user_name');
// Destroy the session
$this->session->destroy();
// Redirect to the home page or login page
return redirect()->to('/');
}
public function authenticate()
{
$loginModel = new LoginModel();

View File

@ -51,7 +51,10 @@ class Purchase extends BaseController
$PurchaseOrderModel = new PurchaseOrderModel();
$VendorModel = new VendorModel();
$vendor = $VendorModel->where('branch_id',$this->session->get('logged_user_branch_id'))->select('vendor_id,vendor_name')->findAll();
$vendor = $VendorModel->where('branch_id',$this->session->get('logged_user_branch_id'))
->where('isactive', 1)
->select('vendor_id,vendor_name')
->findAll();
@ -60,9 +63,9 @@ class Purchase extends BaseController
$branch = $BranchModel->where('branch_id', $this->session->get('logged_user_branch_id'))->get()->getRowArray();
$business = $BusinessModel->where('business_id', $this->session->get('logged_user_business_id'))->get()->getRowArray();
$ProductModel = new ProductModel();
$product=$ProductModel
->where('isactive',1)
->where('branch_id',$this->session->get('logged_user_branch_id'))->findAll();
$product=$ProductModel->where('isactive',1)
->where('branch_id',$this->session->get('logged_user_branch_id'))
->findAll();
$data['product']=$product;
$data['branch'] = $branch;
$data['business'] = $business;
@ -78,7 +81,10 @@ class Purchase extends BaseController
$purchase=$PurchaseOrderModel->where('purchase_order_id', $purchase_order_id)->get()->getRowArray();
$VendorModel = new VendorModel();
$vendor = $VendorModel->where('branch_id',$this->session->get('logged_user_business_id'))->select('vendor_id,vendor_name')->findAll();
$vendor = $VendorModel->where('branch_id',$this->session->get('logged_user_business_id'))
->where('isactive', 1)
->select('vendor_id,vendor_name')
->findAll();
$data['vendor']=$vendor;
$data['purchase'] = $purchase;
@ -88,7 +94,7 @@ class Purchase extends BaseController
$VendorModel = new VendorModel();
$vendor = $VendorModel->findAll();
$data['vendor'] = $vendor;
//
$data['vendor_id'] = $purchase['vendor_id'];
// print_r($vendor);die;
$vendorId=$purchase['vendor_id'];

View File

@ -11,6 +11,8 @@ use App\Models\JobcardModel;
use App\Models\BikemodelsModel;
use App\Models\BikemakeModel;
use App\Helpers\MailHelper;
class Users extends BaseController
{
@ -73,6 +75,86 @@ class Users extends BaseController
return view('user_list',['users' => $users, 'roleModel' => $roleModel]);
}
public function forgot_password()
{
$UsersModel = new UsersModel();
if($this->request->getmethod() == 'post')
{
$email = $this->request->getVar('email');
$staff_data = $UsersModel->where('email', $email)->find();
if ($staff_data)
{
$otp = rand(1000 , 9999);
$MailHelper = new MailHelper();
$MailHelper->send_otp_email($this->request->getVar('email') , $otp );
$data['status'] = 'success';
$data['otp'] = $otp;
echo json_encode($data);
}
else
{
$data['status'] = 'failed';
echo json_encode($data);
}
}else{
// print_r("11111111111111111111");die;
return view('forgot_password.php');
}
}
public function verify_otp()
{
$UsersModel = new UsersModel();
if($this->request->getmethod() == 'post')
{
$otp = $this->request->getVar('otp');
$verify_otp = $this->request->getVar('verify_otp');
if ($otp == $verify_otp)
{
$email = $this->request->getVar('email');
$data = $UsersModel->where('email', $email)->find();
if ($data)
{
$this->session->setTempdata('user_id',$data[0]['user_id'],3);
$this->session->setTempdata('email',$data[0]['email'],3);
$this->session->setTempdata('mail_success', "OTP verified sucessfully",3);
return view('reset_password.php');
}
}
else
{
$this->session->setTempdata('error', "You entered wrong OTP.Please retry",3);
return view('forgot_password.php');
}
}
}
public function change_password_forget()
{
$UsersModel = new UsersModel();
if($this->request->getmethod() == 'post')
{
$userData = $this->request->getVar();
$user_id = $this->request->getVar('user_id');
$userData['password'] = password_hash($userData['password'], PASSWORD_DEFAULT);
$UsersModel->where('user_id', $user_id )->set($userData)->update();
$this->session->setTempdata('mail_success', "Password set sucessfully",3);
return redirect()->to(base_url());
}
}
public function user_list($branch_id)
{

24
app/Filters/AuthMVC.php Normal file
View File

@ -0,0 +1,24 @@
<?php
namespace App\Filters;
use CodeIgniter\Filters\FilterInterface;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
class AuthMVC implements FilterInterface
{
public function before(RequestInterface $request, $arguments = null)
{
if (!check_session()) {
return redirect()->to(base_url('/login'));
}
}
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
// Do something here
}
}

View File

@ -42,6 +42,39 @@ class MailHelper
}
}
public static function send_otp_email($email_id,$otp)
{
$subject = 'BB-Sign Verify Document';
$message = "Hai ,
</br>
We have a requested forgot password OTP :".$otp;
try {
$email = \Config\Services::email();
$email->setMailType('html');
$email->setFrom('bbone@venbait.in', 'BB-Sign');
$email->setTo($email_id);
$email->setSubject($subject);
$email->setMessage($message);
if ($email->send()) {
return json_encode(['status' => 'success','code' => 200, 'message'=>'Email Sent Successfully...','data' => $email_id,],200);
} else {
return json_encode(['status' => 'failed','code' => 404,'message'=>'Email Sent Failed...','data' => $email_id ],404);
}
} catch (\Exception $e) {
return json_encode(['status' => 'failed','code' => 500,'data' => $email_id],500);
}
}
}
?>

View File

@ -10,4 +10,13 @@ if (!function_exists('get_branch_id')) {
}
}
if (!function_exists('check_session')) {
function check_session()
{
// $ci =& get_instance();
$session = \Config\Services::session();
return $session->get('isLoggedIn');
}
}
?>

View File

@ -15,7 +15,7 @@
<div class="col-md-12">
<div class="card">
<div class="card-body">
<form action="<?= base_url() . "add_client"; ?>" method="post">
<form id="client_form" method="post">
<h4 class="header-title">Client Details :</h4>
<div class="form-row">
<div class="form-group col-md-4">
@ -24,7 +24,8 @@
</div>
<div class="form-group col-md-4">
<label for="inputAddress" class="col-form-label">Mobile<span class="text-danger">*</span></label>
<input type="text" class="form-control" name="mobile" placeholder="Mobile" value="<?= isset($client['mobile_no']) ? $client['mobile_no'] : '' ?>" maxlength="16" minlength="6" onkeypress = "return onlyNumbers(event)" required/>
<span id="mobile_error" style="color:red;"></span>
<input type="text" class="form-control" name="mobile" id="mobile" placeholder="Mobile" value="<?= isset($client['mobile_no']) ? $client['mobile_no'] : '' ?>" maxlength="16" minlength="6" onkeypress = "return onlyNumbers(event)" required/>
</div>
<div class="form-group col-md-4">
<label for="inputPassword4" class="col-form-label">Client Type<span class="text-danger">*</span></label>
@ -68,7 +69,7 @@
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
<button type="submit" id="client_form_submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
@ -83,4 +84,45 @@
if(charcode>= 48 && charcode <= 57)return true;
return false;
}
$('#client_form_submit').click(function (event) {
event.preventDefault();
// action="<?= base_url() . "add_client"; ?>"
var formData = $('#client_form').serialize();
$.ajax({
type: 'POST',
url: '<?php echo base_url()."add_client"?>',
data: formData,
dataType: 'json',
success: function(response) {
console.log(response);
if(response == 'update'){
toastr.success('Client Updated Succssfully');
window.location.href = '<?= base_url() . "client_index"; ?>';
}else if(response){
toastr.success('Client Added Succssfully');
window.location.href = '<?= base_url() . "client_index"; ?>';
}else{
toastr.warning('Mobile number already exists');
$('#mobile_error').html('Mobile number already exists');
$('#mobile').css('border', '1px solid red');
$('#mobile').focus();
setTimeout(() => {
$('#mobile').css('border', '1px solid #ced4da');
}, 2000);
}
},
error: function(xhr, status, error) {
// Handle error response here
console.error(xhr.responseText);
}
});
})
</script>

View File

@ -132,6 +132,8 @@
if (!complaint_id) {
complaint_id = 0;
}
$(params).attr('disabled', true);
$.ajax({
type: 'POST',
url: '<?php echo base_url()."create_complaint/"?>' + complaint_id,

View File

@ -242,21 +242,36 @@
</script>
<script>
document.addEventListener('DOMContentLoaded', function() {
var oldPasswordField = document.getElementById('old_password');
var newPasswordField = document.getElementById('new_password');
var confirmPasswordField = document.getElementById('confirm_password');
var submitButton = document.getElementById('submit_password');
// Add an event listener to the "Confirm Password" field
confirmPasswordField.addEventListener('input', function() {
// Check if the passwords match
if (newPasswordField.value === confirmPasswordField.value) {
// Enable the submit button
submitButton.disabled = false;
} else {
// Disable the submit button
// Function to validate the password fields
function validatePasswords() {
var oldPassword = oldPasswordField.value;
var newPassword = newPasswordField.value;
var confirmPassword = confirmPasswordField.value;
if(oldPassword !== newPassword && newPassword !== ''){
console.log(oldPassword);
console.log(newPassword);
console.log(confirmPassword);
if (newPassword === confirmPassword) {
submitButton.disabled = false;
} else {
submitButton.disabled = true;
}
}else{
submitButton.disabled = true;
}
});
}
// Add event listeners to all relevant fields
oldPasswordField.addEventListener('input', validatePasswords);
newPasswordField.addEventListener('input', validatePasswords);
confirmPasswordField.addEventListener('input', validatePasswords);
});
</script>

View File

@ -0,0 +1,171 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Forgotpassword</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta content="A fully featured admin theme which can be used to build CRM, CMS, etc." name="description" />
<meta content="Coderthemes" name="author" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- App favicon -->
<link rel="shortcut icon" href="public/assets/images/favicon.ico">
<!-- App css -->
<link href="<?= base_url()."public"; ?>/assets/css/bootstrap-material.min.css" rel="stylesheet" type="text/css" id="bs-default-stylesheet" />
<link href="<?= base_url()."public"; ?>/assets/css/app-material.min.css" rel="stylesheet" type="text/css" id="app-default-stylesheet" />
<link href="<?= base_url()."public"; ?>/assets/css/bootstrap-material-dark.min.css" rel="stylesheet" type="text/css" id="bs-dark-stylesheet" />
<link href="<?= base_url()."public"; ?>/assets/css/app-material-dark.min.css" rel="stylesheet" type="text/css" id="app-dark-stylesheet" />
<!-- icons -->
<link href="<?= base_url()."public"; ?>/assets/css/icons.min.css" rel="stylesheet" type="text/css" />
<!-- css -->
<link href="<?= base_url()."/public"; ?>/assets/css/style.css" rel="stylesheet" type="text/css" />
<!-- jquery -->
<!-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script> -->
</head>
<body class="loading">
<div class="account-pages mt-5 mb-5">
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8 col-lg-6 col-xl-5">
<div class="card">
<div class="card-body p-4">
<div class="text-center w-75 m-auto">
<div class="auth-logo">
<a href="index.html" class="logo logo-dark text-center">
<span class="logo-lg">
<img src="<?php base_url()?>public/assets/images/logo.png" alt="" height="22" style="width: 305px; height: 190px;">
</span>
</a>
<a href="index.html" class="logo logo-light text-center">
<span class="logo-lg">
<img src="<?php base_url()?>public/assets/images/logo.png" alt="" height="22" style="width: 305px; height: 190px;">
</span>
</a>
</div>
</div>
<div class="text-center w-75 m-auto">
<h3>Account recovery</h3>
</div>
</br>
<form method="post" action="<?php echo base_url();?>verify_otp" method="post">
<input type="hidden" id="verify_otp" name="verify_otp" value="">
<?php if(session()->getTempdata('error')):?>
<div class="alert alert-danger" id="alert">
<?= session()->getTempdata('error'); ?>
</div>
<?php endif;?>
<div class="form-group mb-3">
<label for="emailaddress">Email address</label>
<input class="form-control" type="email" name="email" id="email" required="required" value="" placeholder="Enter your email">
</div>
<div id="alert1" style="text-align:center;"></div>
<div class="form-group mb-3 disable" id="disable">
<label for="otp">OTP</label>
<div class="input-group input-group-merge">
<input type="text" id="otp" name="otp" value="" required="required" class="form-control" placeholder="Enter your otp">
</div>
</div>
</br>
<div class="form-group mb-0 text-center" id="re-sub">
<button class="btn btn-primary" type="submit" id="submit1"> Get OTP </button>
</div>
</form>
</div> <!-- end card-body -->
</div>
<!-- end card -->
<div class="row mt-3">
<div class="col-12 text-center">
<p> <a href="<?= base_url(); ?>" class="text-primary font-weight-medium ml-1">Back to login</a></p>
</div>
</div>
</div> <!-- end col -->
</div>
<!-- end row -->
</div>
<!-- end container -->
</div>
<!-- end page -->
<footer class="footer footer-alt">
<script>document.write(new Date().getFullYear())</script> &copy; <a href="" class="text-dark"></a>
</footer>
<!-- Vendor js -->
<script src="<?= base_url()."public"; ?>/assets/js/vendor.min.js"></script>
<!-- App js -->
<script src="<?= base_url()."public"; ?>/assets/js/app.min.js"></script>
</body>
<script>
// jQuery autohide element after 5 seconds
$('#alert').delay(3000).fadeOut('slow');
// This will disable just the div
$(".disable").hide();
$(document).on('click','#submit1',function(event){
$('#alert1').html('Please wait...');
var email = $("#email").val();
var url = "<?php echo base_url();?>forgot_password";
$.ajax({
type: "POST",
url: url,
data: { email : email },
json: true,
success: function(response) {
console.log(response);
response = jQuery.parseJSON(response);
if (response.status == "success")
{
$('#alert1').html('');
$(".disable").show();
$('#verify_otp').val(response.otp);
$("#re-sub").html('<button class="btn btn-primary btn-block" type="submit"> Submit </button>');
window.stop();
}
else
{
$('#alert1').html('Invalid email , Please try again.');
}
},
error: function(jqXHR, textStatus, err) { alert('text status '+textStatus+', err '+err) }
});
});
</script>
</html>

View File

@ -60,11 +60,18 @@
<?php endif; ?>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" class="form-control" id="email" name="email" value="<?= session()->getFlashdata('email_input') ?>" required>
<input type="email" class="form-control" id="email" name="email" placeholder="Enter your email" value="<?= session()->getFlashdata('email_input') ?>" required>
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="password" class="form-control" id="password" name="password" required>
<label for="password">Password</label>
<div class="input-group input-group-merge">
<input type="password" id="password" class="form-control" name="password" placeholder="Enter your password">
<div class="input-group-append" data-password="false">
<div class="input-group-text">
<span class="password-eye"></span>
</div>
</div>
</div>
</div>
<div class="form-group mb-0 text-center">
<button class="btn btn-primary btn-block" type="submit"> Log In </button>
@ -84,9 +91,11 @@
<div class="row mt-3">
<div class="col-12 text-center">
<!-- <p> <a href="auth-recoverpw.html" class="text-muted ml-1">Forgot your password?</a></p> -->
<p> <a href="<?= base_url('forgot_password'); ?>" class="text-primary font-weight-medium ml-1">Forgot your password?</a></p>
</div> <!-- end col -->
</div>
<!-- end row -->
</div> <!-- end col -->

View File

@ -0,0 +1,181 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Reset Password</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta content="A fully featured admin theme which can be used to build CRM, CMS, etc." name="description" />
<meta content="Coderthemes" name="author" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- App favicon -->
<link rel="shortcut icon" href="<?= base_url()."/public"; ?>/assets/images/favicon.ico">
<!-- App css -->
<link href="<?= base_url()."/public"; ?>/assets/css/bootstrap-corporate.min.css" rel="stylesheet" type="text/css" id="bs-default-stylesheet" />
<link href="<?= base_url()."/public"; ?>/assets/css/app-corporate.min.css" rel="stylesheet" type="text/css" id="app-default-stylesheet" />
<link href="<?= base_url()."/public"; ?>/assets/css/bootstrap-corporate-dark.min.css" rel="stylesheet" type="text/css" id="bs-dark-stylesheet" />
<link href="<?= base_url()."/public"; ?>/assets/css/app-corporate-dark.min.css" rel="stylesheet" type="text/css" id="app-dark-stylesheet" />
<!-- icons -->
<link href="<?= base_url()."/public"; ?>/assets/css/icons.min.css" rel="stylesheet" type="text/css" />
<style>
.text-danger {
color: red !important;
}
.parsley-errors-list>li {
color: red !important;
}
.field-icon {
float: right;
margin-left: -35px;
margin-top: 12px;
margin-right: 12px;
position: relative;
z-index: 3;
}
</style>
</head>
<body class="loading">
<div class="account-pages mt-5 mb-5">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<div class="text-center w-75 m-auto">
<div class="auth-logo">
<a href="index.html" class="logo logo-dark text-center">
<span class="logo-lg">
<img src="<?php base_url()?>public/assets/images/logo.png" alt="" height="22" style="width: 305px; height: 190px;">
</span>
</a>
<a href="index.html" class="logo logo-light text-center">
<span class="logo-lg">
<img src="<?php base_url()?>public/assets/images/logo.png" alt="" height="22" style="width: 305px; height: 190px;">
</span>
</a>
</div>
</div>
<div class="text-center w-75 m-auto">
<h3>Reset Password</h3>
</div>
<p class="sub-header">
</p>
<form method="post" action="<?= base_url()."change_password_forget"; ?>" role="form" class="parsley-examples">
<input id="id" type="hidden" value="<?= session()->getTempdata('user_id'); ?>" name="user_id">
<?php if(session()->getTempdata('mail_success')):?>
<div class="alert alert-success" >
<?= session()->getTempdata('mail_success'); ?>
</div>
<?php endif;?>
<?php if(session()->getTempdata('error')):?>
<div class="alert alert-danger" >
<?= session()->getTempdata('error'); ?>
</div>
<?php endif;?>
<div class="form-group row">
<label for="hori-pass1" class="col-3 col-form-label">Email<span class="text-danger">*</span></label>
<div class="col-9">
<input type="text" class="form-control" value="<?= session()->getTempdata('email'); ?>" readonly>
</div>
</div>
<div class="form-group row">
<label for="hori-pass1" class="col-3 col-form-label">Password<span class="text-danger">*</span></label>
<div class="col-9">
<input id="hori-pass1" type="password" placeholder="Password"
title="Must contain at least one number and one uppercase and lowercase letter, and at least 8 or more characters"
required class="form-control" name="password">
</div>
<span toggle="#hori-pass1" id="toggle-password" class="fa fa-fw fa-eye field-icon toggle-password"></span>
</div>
<div class="form-group row">
<label for="hori-pass2" class="col-3 col-form-label">Confirm Password
<span class="text-danger">*</span></label>
<div class="col-9">
<input data-parsley-equalto="#hori-pass1" type="password" required
placeholder="Password" class="form-control" id="hori-pass2">
</div>
</div>
<div class="form-group mb-0 text-center">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1" style="background-color: #1aa79c; border-color: #1aa79c;">
Submit
</button>
</div>
</form>
</div>
</div> <!-- end card-box -->
<div class="row mt-3">
<div class="col-12 text-center">
<p> <a href="<?= base_url('forgot_password'); ?>" class="text-primary font-weight-medium ml-1">Want to change Mail id ?</a></p>
</div>
</div>
</div> <!-- end col -->
</div>
<!-- end row -->
</div>
<!-- end container -->
</div>
<!-- end page -->
<!-- Right bar overlay-->
<div class="rightbar-overlay"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$("#toggle-password").click(function() {
$(this).toggleClass("fa-eye fa-eye-slash");
var input = $($(this).attr("toggle"));
if (input.attr("type") == "password") {
input.attr("type", "text");
}
else {
input.attr("type", "password");
}
});
</script>
<!-- Vendor js -->
<script src="<?= base_url()."/public"; ?>/assets/js/vendor.min.js"></script>
<!-- Plugin js-->
<script src="<?= base_url()."/public"; ?>/assets/libs/parsleyjs/parsley.min.js"></script>
<!-- Validation init js-->
<script src="<?= base_url()."/public"; ?>/assets/js/pages/form-validation.init.js"></script>
<!-- App js -->
<script src="<?= base_url()."/public"; ?>/assets/js/app.min.js"></script>
</body>
</html>

View File

@ -1,4 +1,14 @@
<?php include('layout/header.php'); ?>
<style>
.fixed-dropdown-container {
/* position: fixed; */
/* top: 50px; Adjust as needed */
/* left: 50px; Adjust as needed */
width: 300px; /* Adjust as needed */
}
</style>
<div class="row">
<div class="col-12">
<div class="page-title-box page-title-box-alt">
@ -152,11 +162,11 @@
<th>Item Details</th>
<th>Rate</th>
<th>Qty</th>
<th>Taxable Amount</th>
<th>Taxable Amt</th>
<th>Tax</th>
<th>Tax Amount</th>
<th>Tax Amt</th>
<!-- <th style="text-align: center !important" colspan="2">Discount</th> -->
<th>Total Amount</th>
<th>Tot Amt</th>
<th hidden></th>
<th></th>
</tr>
@ -168,7 +178,7 @@
<?php foreach ($sales_product as $salechild) :
if ($salechild['isactive'] == 1) : ?>
<tr>
<td style="width:5%;">
<td style="width:30%;" class="fixed-dropdown-container">
<select class="form-control book-select SelExample" name="item_details[]"
required data-toggle="select2" id="" style="width: 249px !important;">
<option value="">Select a Product</option>
@ -188,7 +198,7 @@
<?php endforeach; ?>
</select>
</td>
<td style="width:10%;">
<td style="width:12%;">
<input type="text" class="form-control item-rate" name="unit-price[]"
readonly
value="<?= isset($salechild['net_price']) ? $salechild['net_price'] : '' ?>">
@ -198,17 +208,17 @@
min="0"
value="<?= isset($salechild['qty']) ? $salechild['qty'] : '1' ?>" onchange="updateThirdColumnValue(this); updateTaxAmount(this)">
</td>
<td style="width:12%;">
<td style="width:14%;">
<?php if (isset($salechild['net_price']) && isset($salechild['qty'])) {
$result = $salechild['net_price'] * $salechild['qty'];
echo '<input type="text" class="form-control item-result" value="' . $result . '" readonly>';
} ?>
</td>
<td style="width:10%;">
<td style="width:8%;">
<input type="text" class="form-control item-tax" name="item-tax[]"
value="<?= isset($salechild['tax']) ? $salechild['tax'] : '' ?>" onchange="updateTaxAmount(this)">
</td>
<td>
<td style="width:13%;">
<?php if (isset($salechild['tax']) && isset($result) ) {
$tax_amount= $result * $salechild['tax'] / 100;
} else {
@ -218,15 +228,15 @@
<input type="text" class="form-control" name="tax-amount[]" value="<?= number_format($tax_amount,2); ?>" readonly>
</td>
<!-- <td style="width:12%;">
<input type="number" class="form-control item-discount-amount" min="0" name="discount_amount[]" value="<?= isset($salechild['discount']) ? $salechild['discount'] : '' ?>">
</td>
<td style="width:10%;">
<select class="form-control item-discount-type" name="discount_type[]">
<option value="" <?= isset($salechild['discount_type']) && $salechild['discount_type'] == '₹' ? 'selected' : '' ?>>₹</option>
<option value="%" <?= isset($salechild['discount_type']) && $salechild['discount_type'] == '%' ? 'selected' : '' ?>>%</option>
</select>
</td> -->
<td style="width:12%;">
<input type="number" class="form-control item-discount-amount" min="0" name="discount_amount[]" value="<?= isset($salechild['discount']) ? $salechild['discount'] : '' ?>">
</td>
<td style="width:10%;">
<select class="form-control item-discount-type" name="discount_type[]">
<option value="" <?= isset($salechild['discount_type']) && $salechild['discount_type'] == '₹' ? 'selected' : '' ?>>₹</option>
<option value="%" <?= isset($salechild['discount_type']) && $salechild['discount_type'] == '%' ? 'selected' : '' ?>>%</option>
</select>
</td> -->
<td style="width:13%;">
<input type="text" class="form-control item-amount" name="amount[]"
value="<?= isset($salechild['amount']) ? $salechild['amount'] : '' ?>">
</td>
@ -445,8 +455,11 @@ $(document).ready(function() {
var makeAndModel = response.makeName + ' ' + response.modelName;
$('#makeAndModel').val(makeAndModel);
productarray = response.product;
if(response.product.length){
productarray = response.product;
}else{
productarray = "No Product";
}
},
error: function(xhr, status, error) {
@ -567,8 +580,8 @@ $(document).ready(function() {
var cgst = parseInt(product.cgst);
var sgst = parseInt(product.sgst);
var totalTax = cgst + sgst;
// var total_tax_amount = product.unit_price * totalTax / 100;
var total_tax_amount = product.total_amount;
var total_tax_amount = product.unit_price * totalTax / 100;
// var total_tax_amount = product.total_amount;
$(this).closest('tr').find('.item-quantity').attr('max', product.qty_stock);
@ -595,9 +608,18 @@ $(document).ready(function() {
function calculateSubtotal() {
var subtotal = 0;
$('.item-amount').each(function() {
subtotal += parseFloat($(this).val()) || 0;
// subtotal += parseFloat($(this).val()) || 0;
var value1 = $(this).val();
var qty = $(this).parent().parent().find('.item-quantity').val();
var rate = $(this).parent().parent().find('.item-rate').val();
// console.log(value1);
// console.log(value2);
subtotal += qty * rate;
});
return subtotal;
}
// Function to calculate total tax
@ -671,10 +693,12 @@ $(document).ready(function() {
// Event listener for "Add More Item" button
$('#addItem').click(function() {
console.log(productarray.length);
if (productarray.length > 0) {
console.log(productarray);
if(productarray == 'No Product'){
toastr.warning("First Add the Product!");
}else if (productarray.length > 0) {
var newRow = '<tr>' +
'<td style="width:30%"><select class="form-control book-select SelExample" name="item_details[]" required data-toggle="select2" style="width: 249px !important;"><option value="">Select a Product</option>';
'<td style="width:30%" class="fixed-dropdown-container"><select class="form-control book-select SelExample" name="item_details[]" required data-toggle="select2" style="width: 2px !important;"><option value="">Select a Product</option>';
for (var i = 0; i < productarray.length; i++) {
var product = productarray[i];
@ -692,8 +716,8 @@ $(document).ready(function() {
'<td style="width:10%;"><input type="number" class="form-control item-quantity" min="0" max="" name="quantity[]" onchange="updateThirdColumnValue(this); updateTaxAmount(this)" /></td>' +
'<td style="width:14%;"><input type="text" class="form-control item-result" readonly /></td>' +
'<td style="width:8%;"><input type="text" class="form-control item-tax" name="item-tax[]" readonly /></td>' +
'<td style="width:12%;"><input type="text" class="form-control tax-amount" name="tax-amount[]" readonly /></td>' +
'<td style="width:12%;"><input type="text" class="form-control item-amount" name="amount[]"/></td>' +
'<td style="width:13%;"><input type="text" class="form-control tax-amount" name="tax-amount[]" readonly /></td>' +
'<td style="width:13%;"><input type="text" class="form-control item-amount" name="amount[]"/></td>' +
'<td hidden><input type="hidden"></td>' +
'<td><center><i class="fa fa-trash remove-item"></i></center></td>' +
'</tr>';
@ -818,12 +842,15 @@ function onlyNumbers(event) {
<script>
$(document).ready(function() {
// Initialize select2
$(".SelExample").select2();
$(".SelExample").select2({
// dropdownParent: $('.fixed-dropdown-container')
});
});
function initializeSelect2() {
$('.SelExample').select2({
width: '249px' // Adjust width as needed
// dropdownParent: $('.fixed-dropdown-container'),
width: '150px'
});
}
</script>
@ -919,7 +946,9 @@ $(document).ready(function() {
});
</script>
<script>
$(".SelExample").select2();
$(".SelExample").select2({
// dropdownParent: $('.fixed-dropdown-container')
});
// Event listener for change in make select dropdown
$("#make").on('change', function() {

View File

@ -73,7 +73,7 @@
<select class="form-control cleint-select SelExample" id="clientData" name="client_name" required data-toggle="select2" >
<option value="">Select a Client</option>
<?php foreach ($client as $value) : ?>
<?php if ($value["isactive"] === 1) : ?>
<?php if ($value["isactive"] == 1) : ?>
<option value="<?= $value["client_id"] ?>" <?= isset($vehicle['client_id']) && $vehicle['client_id'] == $value["client_id"] ? 'selected' : '' ?>>
<?= $value["client_name"]; ?>
</option>

View File

@ -20,7 +20,7 @@
<div class="card">
<div class="card-body">
<form action="<?= base_url() . "add_vendor"; ?>" method="post">
<form id="vendor_form" action="<?= base_url() . "add_vendor"; ?>" method="post">
<h4 class="header-title">Vendor Details :</h4>
<div class="form-row">
<div class="form-group col-md-4">
@ -143,7 +143,7 @@
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
<button type="submit" id="vendor_add_submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
@ -214,6 +214,16 @@ $(document).ready(function() {
}
});
});
$('#vendor_add_submit').click(function (event) {
var form = document.getElementById('vendor_form');
if (form.checkValidity()) {
$(this).attr('disabled', true);
$('#vendor_form').submit();
}
})
});
</script>
<style>