396 lines
13 KiB
PHP
396 lines
13 KiB
PHP
<script>
|
|
// function getTotalQuantity(counter) {
|
|
// var selectedMedicine = $('#medicine' + counter).val();
|
|
|
|
// console.log("Selected medicine ID: " + selectedMedicine); // Debugging line
|
|
|
|
// $.ajax({
|
|
// type: "POST",
|
|
// url: "stock_update.php",
|
|
// dataType: "json",
|
|
// data: { medicine_id: selectedMedicine, row_id: counter },
|
|
// success: function (response) {
|
|
// console.log(response);
|
|
// if (response.error) {
|
|
// alert('Error: ' + response.error);
|
|
// } else {
|
|
// $('#total_qty' + counter).val(response.total_quantity || 'Not available');
|
|
// }
|
|
// },
|
|
// error: function (jqXHR, textStatus, errorThrown) {
|
|
// console.error('AJAX error: ' + textStatus + ', ' + errorThrown);
|
|
// }
|
|
// });
|
|
// }
|
|
|
|
|
|
// Aasish add the Function to fetch total quantity using AJAX
|
|
|
|
function checkIssuedConsumeQty(counter) {
|
|
console.log(counter);
|
|
|
|
if (counter === null || counter === '') {
|
|
var count = $("#count_items1").val();
|
|
|
|
for (var i = 0; i < count; i++) {
|
|
|
|
var medicine = $("#medicine").val();
|
|
if (medicine !== undefined) {
|
|
|
|
var issued_qty = $("#issued_qty" + i).val();
|
|
var total_qty = $("#total_qty" + i).val();
|
|
|
|
if (total_qty < issued_qty) {
|
|
BootstrapDialog.alert("Stock Is Not Available !!");
|
|
}
|
|
if (issued_qty < 0) {
|
|
BootstrapDialog.alert("Issued Qty Cant be Negative!!");
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
var apt_id = $("#appointment_id").val();
|
|
var item_id = $("#medicine" + counter).val();
|
|
var batch = $("#consum_item_batch_no" + counter).val();
|
|
var miscellaneous = 'N';
|
|
$.ajax({
|
|
type: 'post',
|
|
url: 'get_prev_issue_mis_qty.php',
|
|
data: {
|
|
apt_id: apt_id,
|
|
item_id: item_id,
|
|
item_batch_no: batch,
|
|
miscellaneous: miscellaneous
|
|
},
|
|
success: function (data) {
|
|
try {
|
|
data = JSON.parse(data);
|
|
|
|
var curr_issued_qty = parseInt($("#issued_qty" + counter).val());
|
|
|
|
var prev_issue = parseInt(data);
|
|
if(isNaN(prev_issue) || prev_issue === undefined || prev_issue === '') { prev_issue = 0; }
|
|
|
|
var total_qty = parseInt($("#total_qty" + counter).val());
|
|
if (isNaN(total_qty) || total_qty === undefined || total_qty === '') { total_qty = 0; }
|
|
|
|
console.log(" curr qty " + curr_issued_qty + " total avl with prev issue " + (total_qty + prev_issue));
|
|
|
|
if ((total_qty + prev_issue) < curr_issued_qty) {
|
|
BootstrapDialog.alert("You are adding more than available stock please be careful !!");
|
|
$("#issued_qty" + counter).val('');
|
|
}
|
|
if (curr_issued_qty < 0) {
|
|
BootstrapDialog.alert("Issue Qty Cant be Negative!!");
|
|
$('#issued_qty' + counter).val('');
|
|
}
|
|
} catch (err) { }
|
|
|
|
},
|
|
error: function (data) {
|
|
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function save_consume() {
|
|
$.ajax({
|
|
url: 'save_consumables.php',
|
|
type: "POST",
|
|
data: $("#consume_form").serialize(),
|
|
success: function (data) {
|
|
|
|
|
|
BootstrapDialog.alert('Details Saved Successfully.');
|
|
|
|
},
|
|
error: function (data) {
|
|
BootstrapDialog.alert('Error Saving Details');
|
|
//return;
|
|
}
|
|
});
|
|
}
|
|
function setConsumableItemBatchNo(count, batch) {
|
|
var item_id = $('#medicine' + count).val();
|
|
$.ajax({
|
|
url: 'get_item_batch_nos.php',
|
|
type: 'POST',
|
|
data: {
|
|
item_id: item_id,
|
|
batch: batch,
|
|
},
|
|
dataType: 'json',
|
|
success: function (data) {
|
|
var content_item_batch =
|
|
"<option value=\"\" selected disabled >Please Select Batch No</option>";
|
|
var total_qty = 0;
|
|
if (data != null && data != "") {
|
|
item_batch = data;
|
|
for (var i = 0; i < data.length; i++) {
|
|
var select = '';
|
|
|
|
if ((batch == '' || batch == null) && i == 0) {
|
|
select = 'selected';
|
|
}
|
|
if (batch == data[i].item_batch_no) {
|
|
select = 'selected';
|
|
}
|
|
const expiryDate = new Date(data[i].expiry_date);
|
|
const currentDate = new Date();
|
|
const sixtyDaysLater = new Date(currentDate);
|
|
sixtyDaysLater.setDate(currentDate.getDate() + 60);
|
|
|
|
// Check if expiry is within the next 60 days
|
|
if (expiryDate > currentDate && expiryDate <= sixtyDaysLater) {
|
|
console.log("Alert condition reached.");
|
|
BootstrapDialog.alert("This " + data[i].item_batch_no + " batch no has expiry within the next 60 days");
|
|
}
|
|
|
|
total_qty += parseInt(data[i].stock_qty);
|
|
content_item_batch += "<option value='" + data[i].item_batch_no + "' " + select + ">" +
|
|
data[i]
|
|
.item_batch_no + " (Expiry Date:" + myDateFormaterMonthYear(data[i].expiry_date) +
|
|
", Stock Qty:" + data[i].stock_qty + ")</option>"
|
|
}
|
|
}
|
|
$('#total_qty' + count).val(total_qty || 'Not available');
|
|
$("#consum_item_batch_no" + count).html(content_item_batch);
|
|
},
|
|
error: function (data) { }
|
|
});
|
|
}
|
|
|
|
</script>
|
|
<div class="modal fade" id="consumables" role="dialog" aria-hidden="true">
|
|
<div class="modal-dialog modal-lg">
|
|
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
|
|
</div>
|
|
<form role="form" id="consume_form" name="consume_form" action="#" method="post">
|
|
<div class="modal-body">
|
|
|
|
|
|
<div class="row">
|
|
<div class="col-sm-12 table-responsive">
|
|
<table id="intake_table" class="table table-striped table-bordered ordered-list"
|
|
style="padding: 2px; margin: 2px;">
|
|
<thead>
|
|
<h3>
|
|
<center>CONSUMABLES</center>
|
|
</h3>
|
|
<tr class="success">
|
|
<!-- <th style="font-size: 9px; text-align: center;">Time</th> -->
|
|
<th style="font-size: 9px; text-align: center;">Item</th>
|
|
<th style="font-size: 9px; text-align: center;">Batch</th>
|
|
<!-- Aasish -->
|
|
<th style="font-size: 9px; text-align: center;">Available qty</th>
|
|
<!-- Aasish -->
|
|
<th style="font-size: 9px; text-align: center;">Issued qty</th>
|
|
<th style="font-size: 9px; text-align: center;"></th>
|
|
|
|
</tr>
|
|
</thead>
|
|
|
|
|
|
<tbody>
|
|
|
|
<?php $i = 0;
|
|
$row = null;
|
|
if (isset($_REQUEST['appointmentId'])) {
|
|
$sql_intake = "select * from opd_consumables where consume_id ='" . $_REQUEST['appointmentId'] . "'";
|
|
error_log("ksfjckesncf" . $sql_intake);
|
|
$result_intake = mysqli_query($conn, $sql_intake);
|
|
$num_intake = @mysqli_num_rows($result_intake);
|
|
$row_intake = @mysqli_fetch_array($result_intake);
|
|
}
|
|
do {
|
|
?>
|
|
|
|
|
|
<tr>
|
|
|
|
<td style="width:20%">
|
|
<select class="form-control select2" id="medicine<?php echo $i ?>"
|
|
name="medicine<?php echo $i ?>" data-placeholder="Choose a item..."
|
|
style="width: 100%;"
|
|
onchange="setConsumableItemBatchNo('<?php echo $i ?>','<?= $row_intake['consum_item_batch_no'] ?>')">
|
|
<option value=""></option>
|
|
<?php echo generate_options("SELECT item_id,trim(concat(ifnull(form_name,''),' ',item_name)) item_name FROM tbl_items i left join medicine_form f on i.item_form_id=f.form_id where status='1' and is_prescription!='1' and cat='11' order by item_name", $row_intake['medicine'], 'item_id', 'item_name', '', ''); ?>
|
|
|
|
</select>
|
|
|
|
</td>
|
|
<td style="width:20%">
|
|
<select onchange='' name="consum_item_batch_no<?php echo $i; ?>"
|
|
id="consum_item_batch_no<?php echo $i; ?>" class="form-control">
|
|
<option value="" selected>Batches</option>
|
|
</select>
|
|
</td>
|
|
<!-- Aasish -->
|
|
<td style="width:20%">
|
|
<input class="form-control" value="<?php echo $total_quantity; ?>"
|
|
name="total_qty<?php echo $i; ?>" id="total_qty<?php echo $i; ?>"
|
|
type="text" readonly />
|
|
</td>
|
|
<!-- Aasish -->
|
|
|
|
<td style="width:20%">
|
|
<input class="form-control" value="<?php echo $row_intake['issued_qty'] ?>"
|
|
name="issued_qty<?php echo $i ?>" id="issued_qty<?php echo $i ?>"
|
|
type="number" oninput="checkIssuedConsumeQty(<?php echo $i ?>)" />
|
|
|
|
|
|
</td>
|
|
|
|
|
|
<td style="width:20%; text-align:center">
|
|
<a href="#" class="btn-lg" data-toggle="tooltip" id="deletebtn"
|
|
title="Delete"><span class="glyphicon glyphicon-trash"></span></a>
|
|
</td>
|
|
|
|
</tr>
|
|
<script>
|
|
setConsumableItemBatchNo('<?php echo $i ?>', '<?= $row_intake['consum_item_batch_no'] ?>');
|
|
// getTotalQuantity(<?php //echo $i; ?>);
|
|
</script>
|
|
|
|
<?php
|
|
|
|
$i++;
|
|
} while ($row_intake = @mysqli_fetch_array($result_intake)) //end of while
|
|
?>
|
|
|
|
|
|
</tbody>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="4" style="text-align: center; width:100%">
|
|
<button type="button" class="btn btn-block btn-primary btn-sm"
|
|
id="addrow1">Add Consumable</button>
|
|
<input type="hidden" name="count_items1" id="count_items1"
|
|
value="<?php echo $i ?>" />
|
|
<input id="appointment_id" type="hidden" style="height: 30px"
|
|
class="form-control" name="appointment_id"
|
|
value="<?php echo $_REQUEST['appointmentId'] ?>" />
|
|
|
|
<input id="emp_id" name="emp_id" type="hidden" value="<?php if ($row['emp_id'] != '' || $row['emp_id'] != null) {
|
|
$emp_id = $row['emp_id'];
|
|
echo $row['emp_id'];
|
|
} else {
|
|
$emp_id = $_REQUEST['emp_id'];
|
|
echo $_REQUEST['emp_id'];
|
|
} ?>" />
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="modal-footer">
|
|
|
|
<button type="button" class="btn btn-info btn-sm save_button" onclick="save_consume();">
|
|
SAVE
|
|
</button>
|
|
|
|
<button type="button" class="btn btn-danger btn-sm" data-dismiss="modal">
|
|
<i class="ace-icon fa fa-times bigger-110"></i>CANCEL
|
|
</button>
|
|
</div>
|
|
</form>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<script type="text/javascript">
|
|
$(document).ready(function () {
|
|
|
|
var itemOptions = "<?php echo generate_options("SELECT item_id,trim(concat(ifnull(form_name,''),' ',item_name)) item_name FROM tbl_items i left join medicine_form f on i.item_form_id=f.form_id where status='1' and is_prescription!='1' and cat='11' order by item_name", $row_treatment['item_id'], 'item_id', 'item_name', '', ''); ?> ";
|
|
|
|
|
|
$("#addrow1").on("click", function () {
|
|
var newRow = $("<tr>");
|
|
var counter = $("#count_items1").val();
|
|
var cols = "";
|
|
var select_treatment = "";
|
|
select_treatment += "<select ";
|
|
select_treatment += 'onchange= " setConsumableItemBatchNo(`' + counter + '`,``)"';
|
|
select_treatment += "id=\"medicine" + counter + "\"name=\"medicine" + counter + "\" data-placeholder=\"Choose a item...\" class=\"form-control select2\" style=\"width: 100%;\" ";
|
|
//select_treatment+="style=\"display: none;\"";
|
|
select_treatment += ">";
|
|
|
|
select_treatment += "<option value=\"\"> </option>";
|
|
select_treatment += itemOptions
|
|
select_treatment += "</select>";
|
|
|
|
|
|
cols += '<td>' + select_treatment + '</td><td style="width:20%"><select name="consum_item_batch_no' + counter + '" id="consum_item_batch_no' + counter + '" class="form-control"><option value="" selected>Batches</option></select></td>';
|
|
|
|
cols += '<td><input type="text" readonly class="form-control" id="total_qty' + counter + '" name="total_qty' + counter + '"/></td>';
|
|
|
|
cols += '<td><input type="number" class="form-control" oninput=checkIssuedConsumeQty(`' + counter + '`) id="issued_qty' + counter + '" name="issued_qty' + counter + '"/></td>';
|
|
|
|
cols += '<td align="center"><a href="#" class="btn-lg" data-toggle="tooltip" id="deletebtn" title="Delete"><span class="glyphicon glyphicon-trash"></span></a></td>';
|
|
|
|
newRow.append(cols);
|
|
$("#intake_table").append(newRow);
|
|
/*$('#item_id'+counter).chosen({allow_single_deselect:true});
|
|
$('#item_id'+counter).next().css({'width': $('#item_id'+counter).parent().width()});*/
|
|
|
|
$('.date-picker').datepicker({
|
|
autoclose: true,
|
|
todayHighlight: true
|
|
})
|
|
$('#consume_time' + counter).datetimepicker({
|
|
format: 'DD/MM/YYYY h:mm A', //use this option to display seconds
|
|
defaultDate: new Date(),
|
|
maxDate: new Date(),
|
|
icons: {
|
|
time: 'fa fa-clock-o',
|
|
date: 'fa fa-calendar',
|
|
up: 'fa fa-chevron-up',
|
|
down: 'fa fa-chevron-down',
|
|
previous: 'fa fa-chevron-left',
|
|
next: 'fa fa-chevron-right',
|
|
today: 'fa fa-arrows',
|
|
clear: 'fa fa-trash',
|
|
close: 'fa fa-times'
|
|
}
|
|
}).next().on(ace.click_event, function () {
|
|
$(this).prev().focus();
|
|
});
|
|
|
|
counter++;
|
|
$('.select2').select2()
|
|
$("#count_items1").val(counter);
|
|
});
|
|
|
|
|
|
|
|
$("#intake_table").on("click", "#deletebtn", function (event) {
|
|
$(this).closest("tr").remove();
|
|
// counter -= 1
|
|
// $("#count_items1").val(counter);
|
|
});
|
|
$('.select2').select2()
|
|
|
|
});
|
|
|
|
// Aasish add the Function to fetch total quantity using AJAX
|
|
|
|
</script>
|