inwardgateregister_model = new Inwardgateregister_model();
$this->IGRRemarks_model = new IGRRemarks_model();
$this->session = session();
helper('form'); //$this->load->library('form_validation');
$this->logger = service('logger'); // Load the logger service
$this->isLoggedIn();
}
/**
* This function used to load the first screen of the user
*/
public function index()
{
$this->global['pageTitle'] = 'Inward Gate Register';
$this->loadViews("viewinwardgateregister", $this->global, NULL, NULL);
}
function viewIGR()
{
if ($this->request->getMethod() === 'GET')
{
$toDate = date('Y-m-d');
$fromDate = date('Y-m-d', strtotime('-90 days', strtotime($toDate)));
} elseif ($this->request->getMethod() === 'POST') {
$fromDate = $this->request->getPost('fromDate');
$toDate = $this->request->getPost('toDate');
$fromDate = date('Y-m-d', strtotime($fromDate));
$toDate = date('Y-m-d', strtotime($toDate));
}
$this->global['pageTitle'] = 'View Inward Gate Register';
$result = $this->inwardgateregister_model->ViewigrListing($fromDate, $toDate);
$igrList = $result[0];
foreach ($igrList as &$igr) {
$igrNo = $igr->IGRNO;
$fileDetails = $this->inwardgateregister_model->getAllIgrFileDetails($igrNo);
$igr->isIgrFilePresent = false; // Initialize the key
foreach ($fileDetails as $file) {
if (!empty($file->file)) {
$igr->isIgrFilePresent = true;
break;
}
}
}
// Unset reference to avoid side effects
unset($igr);
$data['IGR'] = $igrList;
$data['IGRDownload'] = $result[1];
$data['userRole'] = $this->session->get('role');
$data['transporter'] = $this->inwardgateregister_model->transporter();
$data['fromDate'] = date('d-m-Y', strtotime($fromDate));
$data['toDate'] = date('d-m-Y', strtotime($toDate));
$data['driverlist'] = $this->inwardgateregister_model->getdriverlist();
$this->loadViews("viewinwardgateregister", $this->global, $data, NULL);
}
function accountsDashboard(){
$toDate = date('Y-m-d');
$fromDate = date('Y-m-d');
$this->global['pageTitle'] = 'Accounts Dashboard';
$result = $this->inwardgateregister_model->customViewigrListing($fromDate, $toDate);
$igrList = $result[0];
foreach ($igrList as &$igr) {
$igrNo = $igr->IGRNO;
$fileDetails = $this->inwardgateregister_model->getAllIgrFileDetails($igrNo);
$igr->isIgrFilePresent = false;
foreach ($fileDetails as $file) {
if (!empty($file->file)) {
$igr->isIgrFilePresent = true;
break;
}
}
}
// Unset reference to avoid side effects
unset($igr);
$data['IGR'] = $igrList;
$data['IGRDownload'] = $result[1];
$data['userRole'] = $this->session->get('role');
$data['transporter'] = $this->inwardgateregister_model->transporter();
$data['fromDate'] = date('d-m-Y', strtotime($fromDate));
$data['toDate'] = date('d-m-Y', strtotime($toDate));
$this->loadViews("accountsDashboard" , $this->global, $data, NULL);
}
function addIGR()
{
$this->inwardgateregister_model = new inwardgateregister_model();
$this->global['pageTitle'] = 'Add Inward Gate Register';
$result = $this->inwardgateregister_model->getpurchaseorder();
$result1 = $this->inwardgateregister_model->transporter();
$data['driverlist'] = $this->inwardgateregister_model->getdriverlist();
$data['transporter'] = array_filter($result1 , function($item) {
return ($item->isactive == 1);
});
// $data['PO_NO'] = array_filter($result, function($item) {
// return !($item->status === 'ST027' && $item->IsOpenOrder === null);
// });
$data['PO_NO'] = array_filter($result, function($item) {
return !($item->status === 'ST027');
});
$data['emp_data'] = [];
// $data['emp_data'] = $this->inwardgateregister_model->getAdditionalIGRFile();
// dd($data['driverlist']);die;
$this->loadViews("inwardgateregister", $this->global, $data, NULL);
}
function addoutwardgateregister()
{
$this->inwardgateregister_model = new inwardgateregister_model();
$this->global['pageTitle'] = 'Add Outward Gate Register';
$data['Customer'] = $this->inwardgateregister_model->getCustomer();
$data['Supplier'] = $this->inwardgateregister_model->getSupplier();
//$data['Invoice'] = $this->inwardgateregister_model->getInvoice();
$data['storedmaterialcode'] = $this->inwardgateregister_model->getstoredmaterialcode();
//print_r($data['PO_NO']);
$this->loadViews("ogr", $this->global, $data, NULL);
}
function ViewOgr()
{
$this->inwardgateregister_model = new inwardgateregister_model();
$this->global['pageTitle'] = 'View Outward Gate Register';
$data['OGR_Data'] = $this->inwardgateregister_model->getOGRData();
//print_r($data['OGR_Data']);
$this->loadViews("ogrlist", $this->global, $data, NULL);
}
function EditOGR()
{
$OGRNO = $_GET['OGRNO'];
$MRIRNO = $_GET['MRIRNO'];
$this->global['pageTitle'] = 'View Outward Gate Register';
$data['OGR_Data'] = $this->inwardgateregister_model->getOGRDataforedit($OGRNO);
$data['OGR_line'] = $this->inwardgateregister_model->getOGRlineDataforedit($OGRNO, $MRIRNO);
$this->loadViews("editogr", $this->global, $data, NULL);
}
function GetInvoices()
{
$CustomerId = $this->request->getPost('customerId');
$data = $this->inwardgateregister_model->getInvoice($CustomerId);
echo json_encode($data);
}
function GetPO()
{
$supplierId = $this->request->getPost('supplierId');
$data = $this->inwardgateregister_model->getPO($supplierId);
echo json_encode($data);
}
function getPODetails()
{
$PONO = $this->request->getPost('PONO');
$data = $this->inwardgateregister_model->getPODetails($PONO);
//$data['poout'] = $this->inwardgateregister_model->getPODetails($PONO);
echo json_encode($data);
}
function getMRIRDetails()
{
$MRIRno = $this->request->getPost('mrirno');
$PONO = $this->request->getPost('PONO');
$materialcode = $this->request->getPost('materialcode');
$data = $this->inwardgateregister_model->getPOMRIRDetails($MRIRno, $PONO, $materialcode);
//$data['outqty'] = $this->inwardgateregister_model->gettotalout($PONO,$materialcode);
//$data['poout'] = $this->inwardgateregister_model->getPODetails($PONO);
echo json_encode($data);
}
function getMRIR()
{
$MRIRno = $this->request->getPost('MRIRNO');
$PONO = $this->request->getPost('PONO');
$data = $this->inwardgateregister_model->getPOMRIRMaterial($MRIRno, $PONO);
//$data['poout'] = $this->inwardgateregister_model->getPODetails($PONO);
echo json_encode($data);
}
function getPOmrir()
{
$PONO = $this->request->getPost('PONO');
$data = $this->inwardgateregister_model->getPOmrir($PONO);
//$data['poout'] = $this->inwardgateregister_model->getPODetails($PONO);
echo json_encode($data);
}
function getPOmaterialDetails()
{
$PONO = $this->request->getPost('PONO');
$materialcode = $this->request->getPost('materialcode');
$data = $this->inwardgateregister_model->getPOmaterialDetails($PONO, $materialcode);
echo json_encode($data);
}
function getPOmaterial()
{
$PONO = $this->request->getPost('PONO');
$data = $this->inwardgateregister_model->getPOmaterial($PONO);
//$data['poout'] = $this->inwardgateregister_model->getPODetails($PONO);
echo json_encode($data);
}
function getIGRLineItemDetails()
{
$PO = $this->request->getPost('id');
$CreatedBy = $this->session->get('userId');
$this->inwardgateregister_model->UpdatePOMaster($PO, $CreatedBy,IGR_CREATED);
$data = $this->inwardgateregister_model->viewpurchaseorder($PO);
echo json_encode($data);
}
function getAdditionalIGRFile()
{
$lastinsertbillid = 0;
$pono = $this->request->getPost('PONO');
$igr = $this->request->getPost('igr');
$file = $this->request->getFile('file');
$requestfilename = $file->getName();
$files = $this->inwardgateregister_model->getAdditionalIGRFile($igr);
$fcount = 0;
foreach ($files as $value) {
$lastfile = $value->FilePath;// not a file path just file name only
if ($lastfile == $requestfilename) {
$fcount++;
}
}
if ($fcount == 0) {
if (!empty($requestfilename)) {
if ($file->isValid() && !$file->hasMoved()) {
$path = ROOTPATH.'public/uploads/Igrfiles/';
if(!is_dir($path)) { mkdir($path, 0777, true); }
$Picture = $file->getName();
$file->move($path, $Picture);
}else{
$Picture = "";
}
$myfiles = array('PONO' => $pono, 'IGRNO' => $igr, 'FilePath' => $Picture);
$lastinsertbillid = $this->inwardgateregister_model->uploadAdditionalFile($myfiles);
}
}
if ($lastinsertbillid > 0) {
echo "File updated Successfully!-".$lastinsertbillid;
} else {
echo "File name already Exist";
}
}
function deleteAdditionalIGRFile(){
$deleteAdditionalFile = false;
$fileid = $this->request->getPost('id');
$deleteAdditionalFile = $this->inwardgateregister_model->deleteAdditionalFile($fileid);
return $this->response->setJSON([
'status' => 'success',
'message' => 'Operation successful',
'data' => $deleteAdditionalFile
]);
}
function edituploadfile()
{
$bill = $this->request->getPost('param1');
$oldfile = $this->request->getPost('param2');
$newfile = $this->request->getFile('file');
if ($newfile->isValid() && !$newfile->hasMoved()) {
$path = ROOTPATH . 'public/uploads/Igrfiles/';
$newfilename = $newfile->getName();
if(!is_dir($path)) { mkdir($path, 0777, true); }
$Picture = str_replace(" ", "", $newfilename);
$newfile->move($path,$Picture);
} else {
$Picture = $oldfile;
}
$uploadfile = $this->inwardgateregister_model->updatefile($bill, $Picture, $oldfile);
// if($uploadfile > 0){
echo "updated successfully!";
// }
// else{
// echo "updated successfully!";
// }
}
function SaveIGR()
{
#Step 1 IGR Details
$PONO = $this->request->getPost('PONO');
$IsThisOpenOrderPO = $this->request->getPost('hiddenIsOpenOrder');
$DeliveryChellanOrInvoiceNo = $this->request->getPost('InvoiceNo');
$DeliveryChellan = (string)$this->request->getPost('InvoiceDate');
$DeliveryChellanDate = !$DeliveryChellan || $DeliveryChellan === null ? NULL : get_date_time_format($DeliveryChellan);
$Mat_Rcvd_Dt = (string)$this->request->getPost('MaterialRcvdDate');
$MaterialRcvdDt = !$Mat_Rcvd_Dt || $Mat_Rcvd_Dt === null ? NULL : get_date_time_format($Mat_Rcvd_Dt);
$VehicleNo = $this->request->getPost('VehicleNo');
$TransporterId = $this->request->getPost('TransporterId');
$DriverName = $this->request->getPost('DriverName');
$DriverMobileNumber = $this->request->getPost('DriverMobileNumber');
$CreatedBy = $this->session->get('userId');
$RowCount = $this->request->getPost('txtRowCount');
$MasterRemarks = $this->request->getPost('MasterRemarks');
$createddt = get_current_date_time();
//$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;
$fileupdated_count = 0;
$fileupdated_name = [];
#Step 1 File Path Creation
$path = ROOTPATH.'public/uploads/Igrfiles/';
if(!is_dir($path)) { mkdir($path, 0777, true); }
#Step 2 Master File and Its Details Gathering
$MasterFile = $this->request->getFile('MasterFile');
$requestMasterFileName = NULL;
if (!empty($MasterFile)) {
$requestMasterFileName = $MasterFile->getName();
if ($MasterFile && $MasterFile->isValid() && !$MasterFile->hasMoved()) {
if (!empty($this->inwardgateregister_model->isFileExistsInIGRmaster(filename: $requestMasterFileName))) {
log_message('error', 'File already exists in the database'.$requestMasterFileName);
}
else{
$MasterFile->move($path, $requestMasterFileName);
$fileupdated_count++;
$fileupdated_name[] = $requestMasterFileName;
}
}
}
#Step 3 Master Details Gathering to Save In DB
$igr = array('PONO' => $PONO, 'VehicleNo' => $VehicleNo, 'TransporterId'=>$TransporterId,'DeliveryChellanOrInvoiceNo' => $DeliveryChellanOrInvoiceNo, 'DeliveryChellanDate' => $DeliveryChellanDate, 'MaterialRcvdDate' => $MaterialRcvdDt, 'DriverName' => $DriverName, 'DriverMobileNumber' => $DriverMobileNumber,'IGRStatus' => $IGRStatus, 'CreatedBy' => $CreatedBy, 'CreatedDate' => $createddt, 'PaymentStatus' => $paymentstatus, 'Remark'=>$MasterRemarks);
$igr['MasterFile'] = $requestMasterFileName;
#Step 4 Calling DB to Save IGR Master
$IGRNO = $this->inwardgateregister_model->addigrM($igr);
if($IGRNO){
$files = $this->request->getFiles();
$fileNames = $this->request->getPost('file_name'); // Get user-entered file names
if(isset($files['emp_file']))
{
foreach ($files['emp_file'] as $index => $file) {
if ($file->isValid() && !$file->hasMoved()) {
// Move the file to the desired directory
$finallyfilename = (!empty($fileNames[$index])) ? $fileNames[$index] : $file->getName();
$newName = $file->getRandomName();
$file->move($path, $newName);
// Store the file information in the database
$additionalFiles = array(
'Remarks' => $finallyfilename,
'FilePath' => $newName,
'IGRNO' => $IGRNO,
'PONO' => $PONO
);
$lastInsertFileId = $this->inwardgateregister_model->uploadAdditionalFile($additionalFiles);
if ($lastInsertFileId) {
$fileupdated_count++;
$fileupdated_name[] = $finallyfilename;
}
}
}
}
#Step 5 Save Master Detail On Stored on History Table
# - Check Step 9 After I Insert.
#Step 6 Updating OGR Details
$OGRStatus = $IGRStatus;
$check_OGRPO = $this->inwardgateregister_model->update_OGR($PONO, $OGRStatus);
// echo "uuu".(int)$check_OGRPO;
$IGRItemStatus = REQITEM_NEW;
$TotalPendingQty = '';
$TotalPendingQty = (int)$TotalPendingQty;
#Step 7 To Update the Date PO MASTER , Material Master , Historydetails and IGR line Item Details Updating OGR Details
for ($i = 1; $i <= (int)$RowCount; $i++) {
$MaterialCode = $this->request->getPost('MaterialCode' . $i);
$MaterialCode = $MaterialCode !== null && is_string($MaterialCode) ? trim($MaterialCode) : null;
$QuantityAsPerInvoice = $this->request->getPost('txtQuantityAsPerInvoice' . $i);
$QuantityAsPerInvoice = $QuantityAsPerInvoice !== null && is_string($QuantityAsPerInvoice) ? trim($QuantityAsPerInvoice) : null;
$OrderedQuantity = $this->request->getPost('OrderedQuantity' . $i);
$OrderedQuantity = $OrderedQuantity !== null && is_string($OrderedQuantity) ? trim($OrderedQuantity) : null;
$ReceivedQty = $this->request->getPost('txtReceivedQuantity' . $i);
$ReceivedQty = $ReceivedQty !== null && is_string($ReceivedQty) ? trim($ReceivedQty) : null;
$PendingQty = $this->request->getPost('txtPendingQty' . $i);
$TotalPendingQty = $TotalPendingQty + $PendingQty;
$GrossWeight = $this->request->getPost('txtGrossWeight' . $i);
$grossWeightDate= $this->request->getPost('txtGrossWeightDate' . $i);
$TareWeight= $this->request->getPost('txtTareWeight' . $i);
$tareWeightDate= $this->request->getPost('txtTareWeightDate' . $i);
$NetWeight= $this->request->getPost('txtNetWeight' . $i);
// var_dump($grossWeightDate);
// var_dump($tareWeightDate);
#Step 8 Saving Weight File and Its Details Gathering
$WeightFile = $this->request->getFile('txtWeightFile' . $i);
$requestWeightFileName = $WeightFile->getName();
// echo $i.$requestWeightFileName;die;
if (!empty($requestWeightFileName)) {
if ($WeightFile && $WeightFile->isValid() && !$WeightFile->hasMoved()) {
// $WeightFile->move($path, $requestWeightFileName);
if (!empty($this->inwardgateregister_model->isFileExistsInIGRdetails($requestWeightFileName))) {
log_message('error', 'File already exists in the database'.$requestWeightFileName);
$requestWeightFileName = NULL;
}
else{
$WeightFile->move($path, $requestWeightFileName);
$fileupdated_count++;
$fileupdated_name[] = $requestWeightFileName;
}
}else{
$requestWeightFileName = NULL;
}
}else{
$requestWeightFileName = NULL;
}
$GrossWeightDate = !empty($grossWeightDate) && is_string($grossWeightDate) ? date('Y-m-d H:i:s', strtotime($grossWeightDate)) : null;
$TareWeightDate = !empty($tareWeightDate) && is_string($tareWeightDate) ? date('Y-m-d H:i:s', strtotime($tareWeightDate)) : null;
log_message('error', "TareWeightDate" . $TareWeightDate);
$Remarks = $this->request->getPost('txtRemarks' . $i);
$ItemStatus = '';
if (strlen($QuantityAsPerInvoice) > 0 && $QuantityAsPerInvoice != '0') {
if ($PendingQty == 0.00) {
$ItemStatus = $IGRStatus;
} else {
$ItemStatus = POLINEITEM_IGRPARTIAL_CREATED;
}
}
else if ((int)$IsThisOpenOrderPO == 1) {
$ItemStatus = POLINEITEM_IGRPARTIAL_CREATED;
}
$CreatedBy = $this->session->get('userId');
$igrDetails = array('IGRNO' => $IGRNO, 'MaterialCode' => $MaterialCode, 'QuantityAsPerInvoice' => $QuantityAsPerInvoice, 'Remarks' => $Remarks, 'IGRItemStatus' => $IGRItemStatus,'GrossWeight' => (float)$GrossWeight ,'GrossWeightDate'=> $GrossWeightDate,'TareWeight' => (float)$TareWeight ,'TareWeightDate' => $TareWeightDate ,'NetWeight' => (float)$NetWeight, 'CreatedBy' => $CreatedBy, 'CreatedDate' => $createddt);
$igrDetails['WeightFile'] = $requestWeightFileName;
log_message('error', 'SaveIGR igrDetails result : ' . json_encode($igrDetails));
$igrlineno = "";
if (strlen($QuantityAsPerInvoice) > 0 && $QuantityAsPerInvoice != '0' && ((int)$IsThisOpenOrderPO != 1)){
$igrD = $this->inwardgateregister_model->addigrD($igrDetails);
$igrlineno = !empty($igrD) ? $igrD : '';
}else if((int)$IsThisOpenOrderPO == 1){
$igrD = $this->inwardgateregister_model->addigrD($igrDetails);
$igrlineno = !empty($igrD) ? $igrD : '';
}
if($igrlineno){
$itemvalue = '';
$SupplierId = '';
$polineitemvalue = $this->inwardgateregister_model->getitemvalue($PONO, $MaterialCode);
foreach ($polineitemvalue as $it) {
$itemvalue = $it->Rate;
$SupplierId = $it->SupplierID;
}
$historydetails = array('MaterialCode' => $MaterialCode, 'Transaction_type' => "Add", 'Ref_Type' => "IGR", 'Ref_No' => $igrlineno, 'Quantity' => $QuantityAsPerInvoice, 'CreatedBy' => $CreatedBy, 'CreatedOn' => $createddt, 'SupplierID' => $SupplierId, 'ItemValue' => $itemvalue);
$this->inwardgateregister_model->addmaterialhistory($historydetails);
$get_pre_qty = $this->inwardgateregister_model->get_CurrentQty($MaterialCode);
$av_qty = 0; //$av_qty means Avaliable Quantity
if (!empty($get_pre_qty)) {
foreach ($get_pre_qty as $gt) {
$av_qty = $gt->Current_stock;
}
}
$currentav_qty = (int)$QuantityAsPerInvoice + (int)$av_qty;
$current_qty = array('Current_stock' => $currentav_qty);
$this->inwardgateregister_model->addmaterialmaster($current_qty, $MaterialCode);
$Recqty = $this->inwardgateregister_model->getPOLineItemReceivedQty($PONO, $MaterialCode);
$ReceivedQuantity = 0.00;
if (count($Recqty) > 0) {
foreach ($Recqty as $key) {
$ReceivedQuantity = $key->ReceivedQuantity;
}
}
$totalReceivedqty = (int)$IsThisOpenOrderPO == 1 ? 0 : (int)$ReceivedQuantity + (int)$QuantityAsPerInvoice ;
// $totalReceivedqty = $ReceivedQuantity + $QuantityAsPerInvoice;
if(((int)$totalReceivedqty > 0) && ((int)$IsThisOpenOrderPO != 1)){
$POLineItem = array('ReceivedQuantity' => $totalReceivedqty, 'Status' => $ItemStatus, 'UpdateBY' => $CreatedBy, 'UpdatedOn' => $createddt);
$this->inwardgateregister_model->UpdatePOLineItem($POLineItem, $PONO, $MaterialCode);
}else if((int)$IsThisOpenOrderPO == 1){
$POLineItem = array('ReceivedQuantity' => $totalReceivedqty, 'Status' => $ItemStatus, 'UpdateBY' => $CreatedBy, 'UpdatedOn' => $createddt);
$this->inwardgateregister_model->UpdatePOLineItem($POLineItem, $PONO, $MaterialCode);
}
}
}
$this->inwardgateregister_model->UpdatePOMaster($PONO, $CreatedBy,$IGRStatus);
#Step 9 Updating Pending Quantity IN PO Master amd Line Item Details.
if ((int)$IsThisOpenOrderPO != 1) {
if ($TotalPendingQty == 0.00) {
$Newstatus = array('Status' => $IGRStatus);
$this->inwardgateregister_model->POLineItemsupdatestatus($PONO, $Newstatus);
$this->inwardgateregister_model->pomasterupdatestatus($PONO, $Newstatus);
} else {
/*echo 'error' ;*/
}}
#finally
$finalstatement = "Successfully Created IGR Number: $IGRNO \n";
# Step 5 Shifted Here
if($IGRNO){
$igr_history = [
'field' => NULL,
'history_dated' => get_current_date_time(),
'by' => $this->session->get('userId'),
'IGR_No' => $IGRNO,
'is_add' => 1
];
// Insert history entry
$history_id = $this->inwardgateregister_model->igr_history($igr_history);
if ($history_id) {
log_message('error', "History Newly Created for IGR No: $IGRNO. History ID: $history_id. ");
}
}
if ($fileupdated_count > 0) {
$finalstatement .= "Number of files updated: $fileupdated_count \n";
$finalstatement .= "Files: \n" . implode(PHP_EOL, $fileupdated_name);
} else {
$finalstatement .= "No files to update";
}
} else {
$finalstatement = 'No data available to process IGR.';
}
// Escape newlines and quotes for the JavaScript alert
$finalstatement = json_encode($finalstatement);
echo "";
}
function drivernameautocomplete(){
$dr = $this->request->getGet('query');
$query = $this->inwardgateregister_model->checkdrivername($dr);
echo json_encode($query);
}
public function drivermobileautocomplete() {
$dr = $this->request->getGet('query');
$drName = $this->request->getGet('driverName');
$query = $this->inwardgateregister_model->checkdriverMobile($dr, $drName);
echo json_encode($query);
}
public function drivermobileautocomplete2() {
$driverName = $this->request->getGet('drivername');
$term = $this->request->getGet('term');
// Debugging
if (!$driverName || !$term) {
return $this->response->setJSON(['error' => 'Missing parameters']);
}
$query = $this->inwardgateregister_model->checkdriverMobile($driverName, $term);
// Check the output
if (is_array($query)) {
return $this->response->setJSON($query);
} else {
return $this->response->setJSON(['error' => 'Invalid response from model']);
}
}
function viewIGRDetails()
{
$IGRNO = $this->request->getPost('id');
$data['details'] = $this->inwardgateregister_model->viewigr($IGRNO);
$TaxInPercentage = 0;
for ($i = 0; $i < count($data['details']); $i++) {
$details = $data['details'][$i];
if ($details->POType == 'IMPORT') {
$TaxInPercentage = isset($details->import_igst) ? $details->import_igst : 0;
}
if ($details->POType == 'CAPITAL' && $details->CapitalRange == 0) {
$TaxInPercentage = isset($details->import_igst) ? $details->import_igst : 0;
}
if ($details->POType == 'CAPITAL' && $details->CapitalRange == 1) {
$TaxInPercentage =
(isset($details->service_cgst) ? $details->service_cgst : 0) +
(isset($details->service_sgst) ? $details->service_sgst : 0) +
(isset($details->service_igst) ? $details->service_igst : 0);
}
if ($details->POType == 'REVENUE') {
$TaxInPercentage =
(isset($details->revenue_cgst) ? $details->revenue_cgst : 0) +
(isset($details->revenue_sgst) ? $details->revenue_sgst : 0) +
(isset($details->revenue_igst) ? $details->revenue_igst : 0);
}
if ($details->POType == 'SERVICE') {
$TaxInPercentage =
(isset($details->service_cgst) ? $details->service_cgst : 0) +
(isset($details->service_sgst) ? $details->service_sgst : 0) +
(isset($details->service_igst) ? $details->service_igst : 0);
}
$data['details'][$i]->TaxInPercentage = $TaxInPercentage;
}
$data['files'] = $this->inwardgateregister_model->viewIGRFile($IGRNO);
echo json_encode($data);
}
function ViewIGRfile()
{
$IGRNO = $this->request->getPost('id');
$igrfile = $this->inwardgateregister_model->viewIGRFile($IGRNO);
$billfile = []; // $this->inwardgateregister_model->ViewIGRfile1($IGRNO);
$data = array_merge($igrfile, $billfile);
echo json_encode($data);
}
function ViewIGRHistory()
{
$IGRNO = $this->request->getPost('igr');
$result = $this->inwardgateregister_model->ViewIGRHistory($IGRNO);
return $this->response->setJSON($result);
}
function getCostCenterData()
{
$pono = $this->request->getPost('pono');
$result = $this->inwardgateregister_model->getCostCenterData($pono);
return $this->response->setJSON($result);
}
function UpdateIGR()
{
$IGRNo = $this->request->getPost('igr');
$PONo = $this->request->getPost('po');
$DeliveryChellanOrInvoiceNo = $this->request->getPost('invno');
$DeliveryChellan = $this->request->getPost('invdate');
$DeliveryChellanDate = !$DeliveryChellan || $DeliveryChellan === null ? NULL : get_date_time_format($DeliveryChellan);
$Mat_Rcvd_Dt = $this->request->getPost('mrc');
$MaterialRcvdDt = !$Mat_Rcvd_Dt || $Mat_Rcvd_Dt === null ? NULL : get_date_time_format($Mat_Rcvd_Dt);
$VehicleNo = $this->request->getPost('vehicle_no');
$TransporterId = $this->request->getPost('Transporter_Id');
$DriverName = $this->request->getPost('driver');
$DriverMobileNumber = $this->request->getPost('driver_mobile');
$IGRStatus = (int)$this->request->getPost('status') == 1 ? IGR_CREATED : IGR_DRAFT;
$tableData = $this->request->getPost('tableData');
if (is_string($tableData)) {
$tableData = json_decode($tableData, true);
}
$updateby = $this->session->get('userId');
$path = ROOTPATH.'public/uploads/Igrfiles/';
if(!is_dir($path)) { mkdir($path, 0777, true); }
$MasterRemarks = $this->request->getPost('MasterRemarks');
$igrarr = array('DeliveryChellanDate' => $DeliveryChellanDate, 'MaterialRcvdDate' => $MaterialRcvdDt,'VehicleNo'=>$VehicleNo,'TransporterId'=>$TransporterId,'DriverMobileNumber'=>$DriverMobileNumber,'DriverName'=>$DriverName, 'IGRStatus' => $IGRStatus,'UpdateBY' => $updateby,'DeliveryChellanOrInvoiceNo'=>$DeliveryChellanOrInvoiceNo,'Remark'=>$MasterRemarks);
$MasterFile = $this->request->getfile('MasterFile');
if ($MasterFile) {
$requestMasterFileName = $MasterFile->getName();
if ($MasterFile && $MasterFile->isValid() && !$MasterFile->hasMoved()) {
if (!empty($this->inwardgateregister_model->isFileExistsInIGRmaster($requestMasterFileName))) {
log_message('error', 'File already exists in the database'.$requestMasterFileName);
}
else{
$MasterFile->move($path, $requestMasterFileName);
$igrarr['MasterFile'] = $requestMasterFileName;
}
}
}
$fileupdated_count = 0;
$fileupdated_name = [];
$fileNames = $this->request->getPost('file_name');
$files = $this->request->getFileMultiple('emp_file');
if(isset($files))
{
foreach ($files as $index => $file) {
if ($file->isValid() && !$file->hasMoved()) {
// Move the file to the desired directory
$finallyfilename = (!empty($fileNames[$index])) ? $fileNames[$index] : $file->getName();
$newName = $file->getRandomName();
$file->move($path, $newName);
// Store the file information in the database
$additionalFiles = array(
'Remarks' => $finallyfilename,
'FilePath' => $newName,
'IGRNO' => $IGRNo,
'PONO' => $PONo
);
$lastInsertFileId = $this->inwardgateregister_model->uploadAdditionalFile($additionalFiles);
if ($lastInsertFileId) {
$fileupdated_count++;
$fileupdated_name[] = $finallyfilename;
}
}
}
}
$this->saveIGRMasterHistory($igrarr,$IGRNo);
$getigrstatus = $this->inwardgateregister_model->getigrstatus($IGRNo);
$getigrstatus = $getigrstatus->IGRStatus;
$updateigrmaster = $this->inwardgateregister_model->updateigr($igrarr, $IGRNo);
log_message('error', "Master updated successfully: " . $updateigrmaster);
if(!empty($tableData )){
foreach ($tableData as $row) {
$quantityAsPerInvoice = $row['QuantityAsPerInvoice'];
$remarks = $row['Remarks'];
$grossWeight = $row['GrossWeight'];
$grossWeightDate = $row['GrossWeightDate'];
$tareWeight = $row['TareWeight'];
$tareWeightDate = $row['TareWeightDate'];
$netWeight = $row['NetWeight'];
$igrItemNo = $row['IGRItemNo'];
$GrossWtDt = !empty($grossWeightDate) && strtolower($grossWeightDate) !== 'null' ? get_date_time_format($grossWeightDate) : NULL;
$TareWtDt = !empty($tareWeightDate) && strtolower($tareWeightDate) !== 'null' ? get_date_time_format($tareWeightDate) : NULL;
$igrline = array(
'QuantityAsPerInvoice' => $quantityAsPerInvoice,
'Remarks' => $remarks,
'GrossWeight' => $grossWeight,
'GrossWeightDate' => $GrossWtDt,
'TareWeight' => $tareWeight,
'TareWeightDate' => $TareWtDt,
'NetWeight' => $netWeight,
'IGRItemNo' => $igrItemNo,
'UpdateBY' => $updateby
);
$this->saveIGRLineitemHistory($igrline, $IGRNo,$igrItemNo);
// $WeightFile = $this->request->getfile('WeightFile');
// $requestWeightFileName = $WeightFile->getName();
// if (!empty($requestWeightFileName)) {
// if ($WeightFile && $WeightFile->isValid() && !$WeightFile->hasMoved()) {
// if (!empty($this->inwardgateregister_model->isFileExistsInIGRdetails($requestWeightFileName))) {
// log_message('error', 'File already exists in the database'.$requestWeightFileName);
// }
// else{
// $WeightFile->move($path, $requestWeightFileName);
// $igrline['WeightFile'] = $requestWeightFileName;
// }
// }
// }
$updateigrlineitem = $this->inwardgateregister_model->updateIGRLineItem($igrline, $igrItemNo);
log_message('error', "lineitem updated successfully: " . $updateigrlineitem);
log_message('error', 'UpdateIGR updateigrlineitem: ' . json_encode($igrline));
}
}
if ($getigrstatus == 'ST027' && ($updateigrmaster > 0 || $updateigrlineitem > 0)) {
$result_for_email = $this->inwardgateregister_model->getDetailsforEmail($this->session->get('userId'));
$result_for_history = $this->inwardgateregister_model->getHistoryDetailsforEmail($IGRNo);
$notification = new Notification();
$history_content = "
IGR History