2024-10-16 19:18:52 +05:30
< ?
include ( 'includes/config/config.php' );
include ( 'includes/functions.php' );
header ( " Content-type:application/octet-stream " );
header ( " Content-type: application/x-msdownload " );
header ( " Content-Disposition: attachment; filename=monthly_expense_report_excel.xls " );
header ( " Pragma: no-cache " );
header ( " Expires: 0 " );
?>
< ? php
$month = $_POST [ 'month5' ];
$year = $_POST [ 'year5' ];
$ohc = $_SESSION [ 'current_ohcttype' ];
$month_name = date ( " F " , mktime ( 0 , 0 , 0 , $month , 10 ));
//echo $from_date;
//echo $hygiene_abnormal1;
?>
< link href = " includes/css-js/admin.css " rel = " stylesheet " type = " text/css " />
< style >
@ page {
margin : 15 px ;
}
. btn {
background - color : #4CAF50;
border - radius : 5 % ;
/* Green */
border : none ;
color : white ;
padding : 5 px 8 px ;
text - align : center ;
text - decoration : none ;
display : inline - block ;
font - size : 12 px ;
margin : 4 px 2 px ;
cursor : pointer ;
}
@ media print {
#printPageButton {
display : none ;
}
}
</ style >
< body >
< ? php include ( 'excel_ohc_header.php' ); ?>
< table width = " 100% " >
< tr >
< td align = " center " colspan = '2' style = " font-size: 15px " >< strong > Monthly Dispensary Consumption
Report </ strong ></ td >
</ tr >
< tr >
< td align = " left " style = " font-size: 12px " >< strong > For Month :
2024-11-19 09:59:09 +05:30
< ? php echo $month_name ; ?> , <?php echo $year; ?>
2024-10-16 19:18:52 +05:30
</ strong ></ td >
< td align = " right " style = " font-size: 15px " >< button align = " center " id = " printPageButton "
class = " btn btn-success " onClick = " window.print(); " > Print </ button ></ td >
</ tr >
</ table >
< br >
< table width = " 100% " border = " 1 " cellspacing = " 0 " >
< tr >
< th width = " 2% " align = " center " >< strong > Sr </ th >
< th align = " center " width = " 5% " >< strong > Items </ th >
< th align = " center " width = " 5% " >< strong > Items Rate Per Unit </ th >
<!-- < th align = " center " width = " 5% " >< strong > Expiry date </ th > -->
< th align = " center " width = " 5% " >< strong > Previous Balance Qty </ th >
< th align = " center " width = " 5% " >< strong > Previous Balance Amount </ th >
< th width = " 5% " align = " center " >< strong > Procured Qty </ th >
< th width = " 5% " align = " center " >< strong > Procured Amount </ th >
< th align = " center " width = " 5% " >< strong > Total Qty </ th >
< th align = " center " width = " 5% " >< strong > Total Amount </ th >
< th align = " center " width = " 5% " >< strong > Consumption Qty </ th >
< th align = " center " width = " 5% " >< strong > Consumption Amount </ th >
< th align = " center " width = " 5% " >< strong > Expired Qty </ th >
< th align = " center " width = " 5% " >< strong > Expired Amount </ th >
< th align = " center " width = " 5% " >< strong > Balance Qty </ th >
< th align = " center " width = " 5% " >< strong > Balance Amount </ th >
</ strong >
</ tr >
< ?
$prv_amt = 0 ;
$cur_amt = 0 ;
$tot_amt = 0 ;
$con_amt = 0 ;
$exp_amt = 0 ;
$bel_amt = 0 ;
//echo $to_date;
// $emp_id=$_POST['empName'];
error_reporting ( E_ERROR | E_PARSE );
$count = 0 ;
//echo $emp_id;
$data = " " ;
$ZeroAllowed = " N " ;
//error_log("key val before" . $ZeroAllowed);
$ZeroAllowedKey = getConfigKey ( " ZERO_QUANTITY_ALLOWED " );
//error_log("key val " . $ZeroAllowedKey);
if ( $ZeroAllowedKey == " TRUE " ) {
$ZeroAllowed = " Y " ;
}
//error_log("key val after " . $ZeroAllowed);
$sql = " select cat_id from tbl_categories order by sequence asc " ;
error_log ( " SSSSSSS $ $ $ $ $ $ $ $ $ " . $sql );
$result = mysqli_query ( $conn , $sql );
$med_cat = array ();
function getExpiry ( $item_id )
{
$sql_expiry = " SELECT DISTINCT(expiry_date) as expiry,item_batch_no FROM item_stock WHERE item_id=' " . $item_id . " ' " ;
$result_expiry = mysqli_query ( $GLOBALS [ 'conn' ], $sql_expiry );
$expiry_with_batch = " " ;
while ( $row_expiry = mysqli_fetch_assoc ( $result_expiry )) {
$dateStrVal = strtotime ( $row_expiry [ 'expiry' ]);
$exp_date = $row_expiry [ 'expiry' ];
$curr_date = date ( 'Y-m-d' );
// error_log("EXPIRY YEAR::" . $year_exp);
// error_log("EXPIRY MONTH::" . $month_exp);
if ( empty ( $dateStrVal )) {
$expired_date = 'NA' ;
}
if ( $exp_date < $curr_date ) {
$expired_date = " " ;
} else {
$expired_date = date_format ( date_create ( $row_expiry [ 'expiry' ]), " M-Y " );
}
$expiry_with_batch .= $expired_date . " | " ;
}
return $expiry_with_batch ;
}
function procurement_details ( $item_id , $m , $y , $ohc )
{
$sql_procurement = " select ri.received_qty from received_issue_items ri right join received_master rm on ri.received_id = rm.received_id where ri.item_id = ' $item_id ' and month(rm.received_date ) = ' $m ' and year(rm.received_date )=' $y ' and ri.ohc_location_id=' $ohc ' " ;
// error_log("procurement:" . $sql_procurement);
$result_procurement = mysqli_query ( $GLOBALS [ 'conn' ], $sql_procurement );
$procurement_qty_total = 0 ;
while ( $row_procurement = mysqli_fetch_assoc ( $result_procurement )) {
$procurement_qty_total += $row_procurement [ 'received_qty' ];
}
return $procurement_qty_total ;
}
function total ( $prev_balance , $new_received )
{
$total = $prev_balance + $new_received ;
return $total ;
}
function previous_balance ( $item_id , $m , $y )
{
if ( $m == 3 ) {
$prev_month_number = $m - 1 ;
$prev_month = date ( " F " , mktime ( 0 , 0 , 0 , $prev_month_number , 10 ));
} else if ( $m == 2 ) {
$prev_month_number = $m - 1 ;
$prev_month = date ( " F " , mktime ( 0 , 0 , 0 , $prev_month_number , 10 ));
} else {
$monthname = date ( " F " , mktime ( 0 , 0 , 0 , $m , 10 ));
$prev_month = date ( " F " , strtotime ( '-1 month' , strtotime ( $monthname )));
$prev_month_number = date ( 'm' , strtotime ( $prev_month ));
}
//("month name=>" . $monthname . " prev month name=> " . $prev_month . " prev month number=>" . $prev_month_number);
if ( $prev_month_number == '12' ) {
$Prev_year = $y - 1 ;
} else {
$Prev_year = $y ;
}
//error_log("previous month:" . $prev_month . " " . $prev_month_number);
$Last_date = new DateTime ( $prev_month . " " . $y );
$date = $Last_date -> format ( 't' );
//error_log("last date:" . $date);
$prev_balance_sql = " select stock_qty from item_stock_dispensary_daily_balance where item_id=' " . $item_id . " ' and month(record_date) = ' $prev_month_number ' and year(record_date) = ' $Prev_year ' and day(record_date) = ' $date ' and ohc_location_id=' " . $_SESSION [ 'current_ohcttype' ] . " ' " ;
// error_log('$prev_balance_sql:' . $prev_balance_sql);
$result_prev_balance = mysqli_query ( $GLOBALS [ 'conn' ], $prev_balance_sql );
$previous_balance = " " ;
while ( $row_prev_balance = mysqli_fetch_assoc ( $result_prev_balance )) {
$previous_balance += $row_prev_balance [ 'stock_qty' ];
}
if ( $previous_balance == 0 ) {
return 0 ;
} else {
return $previous_balance ;
}
}
function expiry_details ( $item_id , $m , $y , $ohc )
{
$sql_procurement = " select cleanup_qty from cleanup_item_stock where item_id = ' $item_id ' and month(cleanup_date ) = ' $m ' and year(cleanup_date )=' $y ' and ohc_type_id=' $ohc ' " ;
// error_log("exp:".$item_id . $sql_procurement);
$result_procurement = mysqli_query ( $GLOBALS [ 'conn' ], $sql_procurement );
$procurement_qty_total = 0 ;
while ( $row_procurement = mysqli_fetch_assoc ( $result_procurement )) {
$procurement_qty_total += $row_procurement [ 'cleanup_qty' ];
}
return $procurement_qty_total ;
}
function cost_latest ( $item_id , $m , $y )
{
$sql_procurement = " select * from item_rate_change_history h left join item_rate r on h.item_id=r.item_id where h.id=(select max(id) from item_rate_change_history where item_id = ' $item_id ' and month(last_modified ) = ' $m ' and year(last_modified )=' $y ') " ;
// error_log("exp_cost:".$item_id . $sql_procurement);
$result_procurement = mysqli_query ( $GLOBALS [ 'conn' ], $sql_procurement );
$procurement_qty_total = 0 ;
while ( $row_procurement = mysqli_fetch_assoc ( $result_procurement )) {
$procurement_qty_total += ( $row_procurement [ 'new_rate' ] / $row_procurement [ 'unit' ]);
}
if ( $procurement_qty_total == 0 || $procurement_qty_total == '' || $procurement_qty_total == null ){
$sql_procurement_rate = " select * from item_rate where item_id = ' $item_id ' " ;
// error_log("exp_cost:".$item_id . $sql_procurement);
$result_procurement_rate = mysqli_query ( $GLOBALS [ 'conn' ], $sql_procurement_rate );
while ( $row_procurement_rate = mysqli_fetch_assoc ( $result_procurement_rate )) {
$procurement_qty_total += ( $row_procurement_rate [ 'item_rate' ] / $row_procurement_rate [ 'unit' ]);
}
}
return $procurement_qty_total ;
}
function cost_old ( $item_id , $m , $y )
{
$sql_procurement = " select * from item_rate_change_history h left join item_rate r on h.item_id=r.item_id where h.id=(select max(id) from item_rate_change_history where item_id = ' $item_id ' and month(last_modified ) = ' $m ' and year(last_modified )=' $y ') " ;
// error_log("exp_cost:".$item_id . $sql_procurement);
$result_procurement = mysqli_query ( $GLOBALS [ 'conn' ], $sql_procurement );
$procurement_qty_total = 0 ;
while ( $row_procurement = mysqli_fetch_assoc ( $result_procurement )) {
$procurement_qty_total += ( $row_procurement [ 'old_rate' ] / $row_procurement [ 'unit' ]);
}
if ( $procurement_qty_total == 0 || $procurement_qty_total == '' || $procurement_qty_total == null ){
$sql_procurement_rate = " select * from item_rate where item_id = ' $item_id ' " ;
// error_log("exp_cost:".$item_id . $sql_procurement);
$result_procurement_rate = mysqli_query ( $GLOBALS [ 'conn' ], $sql_procurement_rate );
while ( $row_procurement_rate = mysqli_fetch_assoc ( $result_procurement_rate )) {
$procurement_qty_total += ( $row_procurement_rate [ 'item_rate' ] / $row_procurement_rate [ 'unit' ]);
}
}
return $procurement_qty_total ;
}
function consume_details ( $item_id , $a , $m , $y , $ohc )
{
$consume_detail = '' ;
$issued_qty_total = 0 ;
$sql_diect_issue_query = " SELECT ifnull(dd.issue_qty,0) as direct_issue FROM direct_medicine_issue_log_details dd LEFT JOIN direct_medicine_issue_log dm ON dd.issue_log_id = dm.issue_log_id WHERE item_id=' $item_id ' and month(dm.date_of_issue)=' $m ' and year(dm.date_of_issue)=' $y ' and ohc_location_id = ' " . $ohc . " ' " ;
// error_log("sql_diect_issue_query: " . $sql_diect_issue_query);
$result_sql_diect_issue_query = mysqli_query ( $GLOBALS [ 'conn' ], $sql_diect_issue_query );
while ( $row_result_sql_diect_issue_query = mysqli_fetch_array ( $result_sql_diect_issue_query )) {
$consume_detail .= 'DIRECT ISSUE ' . ':' . $row_result_sql_diect_issue_query [ 'direct_issue' ] . ' : ' ;
$issued_qty_total += $row_result_sql_diect_issue_query [ 'direct_issue' ];
}
// error_log("issued_qty_total:::" . $issued_qty_total);
$sql_opd_consumables = " SELECT ifnull(c.issued_qty,0) as consumable_issue,e.ticket_no FROM opd_consumables c LEFT JOIN employee_appointment e ON c.consume_id = e.appointment_id where medicine = ' $item_id ' and month(e.appointment_date) = ' $m ' and year(e.appointment_date) = ' $y ' and ohc_type_id = ' " . $ohc . " ' " ;
// error_log("sql_opd_consumables: " . $sql_opd_consumables);
$result_sql_opd_consumables = mysqli_query ( $GLOBALS [ 'conn' ], $sql_opd_consumables );
while ( $row_result_sql_opd_consumables = mysqli_fetch_array ( $result_sql_opd_consumables )) {
$consume_detail .= 'ID-' . $row_result_sql_opd_consumables [ 'ticket_no' ] . ':' . $row_result_sql_opd_consumables [ 'consumable_issue' ] . ' : ' ;
$issued_qty_total += $row_result_sql_opd_consumables [ 'consumable_issue' ];
}
// error_log("issued_qty_total_2:::" . $issued_qty_total);
$sql_consume = " select a.appointment_id, (ifnull(a.issued_qty,0)+ifnull(c.issued_qty,0)) as total_issued,b.ticket_no from treatment a left join employee_appointment b on a.appointment_id = b.appointment_id left join detention_intake c on b.appointment_id = c.det_id where item_id = ' $item_id ' and month(b.appointment_date) = ' $m ' and year(b.appointment_date) = ' $y ' and b.ohc_type_id = ' " . $ohc . " ' " ;
// error_log("consume::" . $sql_consume);
$result_consume = mysqli_query ( $GLOBALS [ 'conn' ], $sql_consume );
while ( $row_consume = mysqli_fetch_array ( $result_consume )) {
$consume_detail .= 'ID-' . $row_consume [ 'ticket_no' ] . ':' . $row_consume [ 'total_issued' ] . ' : ' ;
$issued_qty_total += $row_consume [ 'total_issued' ];
// error_log("detaiilllllllllll" . $row_consume['total_issued']);
}
//error_log("issued_qty_total_3:::" . $issued_qty_total);
if ( $a == 1 ) {
return $consume_detail ;
} else {
return $issued_qty_total ;
}
}
function balance ( $total_balance , $total_consumed )
{
$b = $total_balance - $total_consumed ;
return $b ;
}
while ( $row_m = mysqli_fetch_array ( $result )) {
array_push ( $med_cat , $row_m [ 'cat_id' ]);
}
foreach ( $med_cat as $i => $value ) {
$newCat = true ;
$query = " select i.item_id, i.item_name from tbl_items i where i.cat=' $value ' and i.status = '1' " ;
// error_log("###########QQQQQQQQ" . $query);
$result = mysqli_query ( $conn , $query );
$total = mysqli_num_rows ( $result );
if ( $total != 0 ) { ?>
<!-- < tr rowspan = " 2 " >
< th colspan = '8' >
< center >< ? = getTableFieldValue ( " tbl_categories " , " cat_name " , " cat_id " , $value ) ?> </center>
</ th >
</ tr >
< tr ></ tr > -->
< ?
while ( $row = mysqli_fetch_assoc ( $result )) {
$total_consumed = consume_details ( $row [ 'item_id' ], 0 , $month , $year , $ohc );
if ( $total_consumed == '0' && $ZeroAllowed == " N " ) {
} else {
?>
< ? php if ( $newCat ) {
$newCat = false ; ?>
< tr rowspan = " 2 " >
< th colspan = '15' >
< center >< ? = getTableFieldValue ( " tbl_categories " , " cat_name " , " cat_id " , $value ) ?> </center>
</ th >
</ tr >
< ? php } ?>
< tr >
< td align = " left " >< ? = ++ $count ?> </td>
< td align = " left " >< ? = $row [ 'item_name' ] ?> </td>
< td align = " left " >
< ? = number_format (( float ) cost_latest ( $row [ 'item_id' ], $month , $year ), 2 , '.' , '' ) ?>
</ td >
<!-- < td align = " left " >< ? = getExpiry ( $row [ 'item_id' ]) ?> </td> -->
< td align = " left " >< ? = previous_balance ( $row [ 'item_id' ], $month , $year ) ?> </td>
< td align = " left " >
< ? php
$prv_amt += number_format (( previous_balance ( $row [ 'item_id' ], $month , $year ) * ( float ) cost_old ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' ) ;
echo number_format (( previous_balance ( $row [ 'item_id' ], $month , $year ) * ( float ) cost_old ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' ) ; ?>
</ td >
< td align = " left " >< ? = procurement_details ( $row [ 'item_id' ], $month , $year , $ohc ) ?> </td>
< td align = " left " >
< ? php
$cur_amt += number_format (( procurement_details ( $row [ 'item_id' ], $month , $year , $ohc ) * ( float ) cost_latest ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' );
echo number_format (( procurement_details ( $row [ 'item_id' ], $month , $year , $ohc ) * ( float ) cost_latest ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' ); ?>
</ td >
< td align = " left " >
< ? = total ( previous_balance ( $row [ 'item_id' ], $month , $year ), procurement_details ( $row [ 'item_id' ], $month , $year , $ohc )) ?>
</ td >
< td align = " left " >
< ? php $total_amount = number_format (( float ) total ( number_format (( previous_balance ( $row [ 'item_id' ], $month , $year ) * ( float ) cost_old ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' ) , number_format (( procurement_details ( $row [ 'item_id' ], $month , $year , $ohc ) * ( float ) cost_latest ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' )), 2 , '.' , '' ) ;
$tot_amt += $total_amount ;
echo $total_amount ;
?>
</ td >
< td align = " left " >< ? = consume_details ( $row [ 'item_id' ], 0 , $month , $year , $ohc ) ?> </td>
< td align = " left " >< ? php $consume_qty = consume_details ( $row [ 'item_id' ], 0 , $month , $year , $ohc ) ;
$new_consume_qty = $consume_qty - previous_balance ( $row [ 'item_id' ], $month , $year );
if ( $new_consume_qty <= 0 ){
$consum_amount = number_format (( float ) number_format (( $consume_qty * ( float ) cost_old ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' ), 2 , '.' , '' );
$con_amt += $consum_amount ;
echo $consum_amount ;
} else {
$old_consum_price = number_format (( previous_balance ( $row [ 'item_id' ], $month , $year ) * ( float ) cost_old ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' );
$new_consume_price = number_format (( $new_consume_qty * ( float ) cost_old ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' );
$consum_amount = number_format (( float )( $new_consume_price + $old_consum_price ), 2 , '.' , '' );
$con_amt += $consum_amount ;
echo $consum_amount ;
}
?> </td>
< td align = " left " >< ? = expiry_details ( $row [ 'item_id' ], $month , $year , $ohc ) ?> </td>
< td align = " left " >
< ? php
$exp_amt += number_format (( float )( expiry_details ( $row [ 'item_id' ], $month , $year , $ohc ) * cost_latest ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' );
echo number_format (( float )( expiry_details ( $row [ 'item_id' ], $month , $year , $ohc ) * cost_latest ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' ); ?>
</ td >
< td align = " left " >
< ? = ( ceil ( balance ( total ( previous_balance ( $row [ 'item_id' ], $month , $year ), procurement_details ( $row [ 'item_id' ], $month , $year , $ohc )), consume_details ( $row [ 'item_id' ], 0 , $month , $year , $ohc ))) - expiry_details ( $row [ 'item_id' ], $month , $year , $ohc )); ?>
</ td >
< td align = " left " >
< ? php
$bel_amt += ( number_format (( float )( ceil ( balance ( $total_amount , $consum_amount ))), 2 , '.' , '' ) - number_format (( float )( expiry_details ( $row [ 'item_id' ], $month , $year , $ohc ) * cost_latest ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' ));
echo ( number_format (( float )( ceil ( balance ( $total_amount , $consum_amount ))), 2 , '.' , '' ) - number_format (( float )( expiry_details ( $row [ 'item_id' ], $month , $year , $ohc ) * cost_latest ( $row [ 'item_id' ], $month , $year )), 2 , '.' , '' )); ?>
</ td >
</ tr >
< ? php }
}
}
} ?>
< tr >
< td colspan = " 4 " >< b > Grand Total Amount </ b ></ td >
< td >< b >< ? = $prv_amt ?> </td>
< td ></ td >
< td >< b >< ? = $cur_amt ?> </td>
< td ></ td >
< td >< b >< ? = $tot_amt ?> </td>
< td ></ td >
< td >< b >< ? = $con_amt ?> </td>
< td ></ td >
< td >< b >< ? = $exp_amt ?> </td>
< td ></ td >
< td >< b >< ? = $bel_amt ?> </td>
</ tr >
</ table >
</ body >