public function update_facility_transaction($msg = NULL)
 {
     $option = $_POST['option'];
     //setting up the variables
     $id = $_POST['id'];
     $open = $_POST['open'];
     $recepits = $_POST['receipts'];
     $issues = $_POST['issues'];
     $adjustments = $_POST['adjustments'];
     $losses = $_POST['losses'];
     $closing = $_POST['closing'];
     $nodays = $_POST['days'];
     $drug_id = $_POST['drug_id'];
     $j = count($id);
     //updating the facility transaction table automatically
     $facility_c = $this->session->userdata('news');
     $user_id = $this->session->userdata('user_id');
     if ($option != "update stock levels") {
         for ($i = 0; $i < $j; $i++) {
             $myobj = Doctrine::getTable('Facility_Transaction_Table')->find($id[$i]);
             $myobj->Opening_Balance = $open[$i];
             $myobj->Total_Receipts = $recepits[$i];
             $myobj->Total_Issues = $issues[$i];
             $myobj->Adj = $adjustments[$i];
             $myobj->Losses = $losses[$i];
             $myobj->Closing_Stock = $closing[$i];
             $myobj->Days_Out_Of_Stock = $nodays[$i];
             $myobj->save();
         }
         $note = TRUE;
         redirect("order_management/new_order/{$note}");
     } else {
         for ($i = 0; $i < $j; $i++) {
             $myobj = Doctrine::getTable('Facility_Transaction_Table')->find($id[$i]);
             $myobj->Opening_Balance = $open[$i];
             $myobj->Total_Receipts = $recepits[$i];
             $myobj->Total_Issues = $issues[$i];
             $myobj->Adj = $adjustments[$i];
             $myobj->Losses = $losses[$i];
             $myobj->Closing_Stock = $closing[$i];
             $myobj->Days_Out_Of_Stock = $nodays[$i];
             $myobj->save();
             /*********************************************step one get the totals of the previous issues*************************/
             $qty_issued = 0;
             $inserttransaction = Doctrine_Manager::getInstance()->getCurrentConnection()->fetchAll("SELECT SUM( `qty_issued` ) AS qty_issued\n                  FROM facility_issues\n                  WHERE `facility_code` = '{$facility_c}'\n                  AND `kemsa_code` = '{$drug_id[$i]}' AND availability='1' ");
             /**********************************totals of all the issues of that particular ordering window*****************************/
             $qty_issued = $inserttransaction[0]['qty_issued'];
             if (empty($qty_issued)) {
                 $qty_issued = 0;
             }
             //	echo "qty_issued    $qty_issued <br>";
             /***********************************get the balances of the particular commodidty for that window********************************/
             $inserttransaction1 = Doctrine_Manager::getInstance()->getCurrentConnection()->fetchAll("SELECT SUM( `balance` ) AS qty_balance\n                  FROM facility_stock\n                  WHERE `facility_code` = '{$facility_c}'\n                  AND `kemsa_code` = '{$drug_id[$i]}' and status='1' ");
             /**********************************totals of balances of the particular commodidty for that window*****************************/
             $qty_bal = $inserttransaction1[0]['qty_balance'];
             //	echo "qty bal    $qty_bal <br>";
             //	 echo "number of issues $issues[$i]</br> ";
             /**********************************check if there is any difference between what the user has inputed and the acutal issues*****************************/
             $slag_qty = $issues[$i] - $qty_issued;
             //echo "slag $slag_qty <br>";
             //$real_slag=$slag_qty;
             //$real_b=0;
             if ($issues[$i] > $qty_issued && $qty_bal >= $slag_qty) {
                 //echo "ok <br>";
                 $query = Doctrine_Query::create()->select("*")->from("facility_stock")->where("Facility_Code='{$facility_c}' and status='1'")->andwhere("kemsa_code='{$drug_id[$i]}'")->orderby('expiry_date asc');
                 $drugs = $query->execute();
                 foreach ($drugs as $data) {
                     $table_bal = $data->balance;
                     $real_b = 0;
                     $update_value = 0;
                     if ($table_bal > $slag_qty && $slag_qty > 0) {
                         //echo "$table_bal>$slag_qty<br>";
                         $real_b = $table_bal - $slag_qty;
                         $update_value = $slag_qty;
                         //echo "real_b $real_b  update_value $update_value <br>";
                         //echo $update_value.'$update_value $table_bal>=$issues[$i]</br>';
                         $inserttransactiona = Doctrine_Manager::getInstance()->getCurrentConnection()->execute("update facility_stock  set balance={$real_b} where id={$data->id} ");
                         //echo  "update facility_stock  set qty_balance=$real_b where id=$data->id what to update  </br>";
                         $mydata = array('facility_code' => $facility_c, 'kemsa_code' => $drug_id[$i], 's11_No' => 'N/A', 'batch_no' => $data->batch_no, 'expiry_date' => $data->expiry_date, 'qty_issued' => $update_value, 'issued_to' => 'PHARMACY', 'balanceAsof' => $table_bal, 'date_issued' => date('y-m-d'), 'issued_by' => $user_id);
                         $u = new Facility_Issues();
                         $u->fromArray($mydata);
                         $u->save();
                         $slag_qty = 0;
                         //echo "new slag_qty $slag_qty <br>";
                     } elseif ($table_bal <= $slag_qty && $slag_qty > 0) {
                         // echo "$table_bal<=$slag_qty<br>";
                         $update_value = $table_bal;
                         $real_b = 0;
                         echo " real_b {$real_b}  update_value {$update_value} <br>";
                         echo "new slag_qty {$slag_qty} <br>";
                         $slag_qty = $slag_qty - $table_bal;
                         $inserttransactiona = Doctrine_Manager::getInstance()->getCurrentConnection()->execute("update facility_stock  set balance={$real_b} where id={$data->id} ");
                         $mydata = array('facility_code' => $facility_c, 'kemsa_code' => $drug_id[$i], 's11_No' => 'N/A', 'batch_no' => $data->batch_no, 'expiry_date' => $data->expiry_date, 'qty_issued' => $update_value, 'issued_to' => 'PHARMACY', 'balanceAsof' => $table_bal, 'date_issued' => date('y-m-d'), 'issued_by' => $user_id);
                         $u = new Facility_Issues();
                         $u->fromArray($mydata);
                         $u->save();
                     }
                     //echo $table_bal.'drug balance G8</br> ';
                     //echo $real_b.' slag after deduction  </br>';
                     //exit;
                     /**/
                 }
                 //exit;
             }
         }
         $msg = "Stock details have been updated";
         redirect("stock_management/stock_level/{$msg}");
     }
 }
Beispiel #2
0
 public function donation()
 {
     $facility_c = $this->session->userdata('news');
     $usernow = $this->session->userdata('identity');
     $kemsa_code = $_POST['drug_id'];
     $expiry_date = $_POST['expiry_date'];
     $batch_no = $_POST['batchNo'];
     $manuf = $_POST['manuf'];
     $a_stock = $_POST['qreceived'];
     $source = $_POST['source'];
     $count = count($kemsa_code);
     $orderDate = date('y-m-d H:i:s');
     for ($i = 0; $i <= $count; $i++) {
         if (isset($kemsa_code[$i]) && $kemsa_code[$i] != '') {
             $mydata = array('facility_code' => $facility_c, 'kemsa_code' => $kemsa_code[$i], 'batch_no' => $batch_no[$i], 'manufacture' => $manuf[$i], 'expiry_date' => date('y-m-d', strtotime($expiry_date[$i])), 'balance' => $a_stock[$i], 'quantity' => $a_stock[$i], 'stock_date' => $orderDate, 'sheet_no' => $source[$i], 'source' => $source[$i]);
             ////get the current balance of the same commodity before adding new stock level
             $current_bal = Facility_Stock::getAll($kemsa_code[$i], $facility_c);
             ///updating the facility stock with the new data from the donation
             Facility_Stock::update_facility_stock($mydata);
             //adding data to issues table
             $mydata = array('facility_code' => $facility_c, 'kemsa_code' => $kemsa_code[$i], 's11_No' => "(+ve Adj) Stock Addition", 'batch_no' => $batch_no[$i], 'expiry_date' => date('y-m-d', strtotime($expiry_date[$i])), 'qty_issued' => 0, 'balanceAsof' => $current_bal[0]['total_balance'], 'receipts' => $a_stock[$i], 'date_issued' => date('y-m-d'), 'issued_to' => "Source :" . $source[$i], 'issued_by' => $usernow);
             $u = new Facility_Issues();
             $u->fromArray($mydata);
             $u->save();
         }
     }
     //getting facility regarding the stocks added above ^
     $data = Facility_Stock::count_facility_stock($facility_c, $orderDate);
     foreach ($data as $infor) {
         $qty = $infor->quantity1;
         $kemsa_code_ = $infor->kemsa_code;
         $facility_has_commodity = Facility_Transaction_Table::get_if_drug_is_in_table($facility_c, $kemsa_code_);
         if ($facility_has_commodity > 0) {
             $inserttransaction_1 = Doctrine_Manager::getInstance()->getCurrentConnection()->fetchAll("select  `adj` from `facility_transaction_table`\n                                          WHERE `kemsa_code`= '{$kemsa_code_}' and availability='1' and facility_code={$facility_c}; ");
             $new_value = $inserttransaction_1[0]['adj'] + $qty;
             $inserttransaction = Doctrine_Manager::getInstance()->getCurrentConnection();
             $inserttransaction->execute("UPDATE `facility_transaction_table` SET adj ={$new_value}\n                                          WHERE `kemsa_code`= '{$kemsa_code_}' and availability='1' and facility_code={$facility_c}; ");
             $inserttransaction1 = Doctrine_Manager::getInstance()->getCurrentConnection();
             $inserttransaction1->execute("UPDATE `facility_transaction_table` SET closing_stock = (SELECT SUM(balance)\n\t\t\t FROM facility_stock WHERE kemsa_code = '{$kemsa_code_}' and status='1' and facility_code='{$facility_c}')\n                                          WHERE `kemsa_code`= '{$kemsa_code_}' and availability='1' and facility_code ='{$facility_c}'; ");
         } else {
             $mydata2 = array('Facility_Code' => $facility_c, 'Kemsa_Code' => $kemsa_code_, 'Opening_Balance' => 0, 'Total_Issues' => 0, 'Total_Receipts' => 0, 'Adj' => $qty, 'Closing_Stock' => $qty, 'availability' => 1);
             Facility_Transaction_Table::update_facility_table($mydata2);
         }
     }
     $this->send_stock_update_sms();
     $this->session->set_flashdata('system_success_message', "You have received {$count} item(s)");
     redirect('issues_main');
 }