verifyRole('viewRecouvrement'); $data = $this->getTotalsArray(); $this->render_template('recouvrement/index', $data); } // Create an AJAX endpoint to access the fetchTotal() function public function getTotalData() { echo $this->fetchTotal(); exit; } public function fetchTotal() { $data = $this->getTotalsArray(); return $this->response->setJSON($data); } private function getTotalsArray(): array { $orders = new Orders(); $recouvrement = new Recouvrement(); $sortieCaisse = new SortieCaisse(); $avance = new Avance(); // Récupère les données brutes $paymentDataOrders = $orders->getPaymentModes(); $paymentDataAvance = $avance->getPaymentModesAvance(); $totalRecouvrement = $recouvrement->getTotalRecouvrements(); $total_sortie_caisse = $sortieCaisse->getTotalSortieCaisse(); // === EXTRACTION DES SORTIES PAR MODE DE PAIEMENT === $total_sortie_espece = isset($total_sortie_caisse->total_espece) ? (float) $total_sortie_caisse->total_espece : 0; $total_sortie_mvola = isset($total_sortie_caisse->total_mvola) ? (float) $total_sortie_caisse->total_mvola : 0; $total_sortie_virement = isset($total_sortie_caisse->total_virement) ? (float) $total_sortie_caisse->total_virement : 0; // === TOTAUX RECOUVREMENT === $me = isset($totalRecouvrement->me) ? (float) $totalRecouvrement->me : 0; $bm = isset($totalRecouvrement->bm) ? (float) $totalRecouvrement->bm : 0; $be = isset($totalRecouvrement->be) ? (float) $totalRecouvrement->be : 0; $mb = isset($totalRecouvrement->mb) ? (float) $totalRecouvrement->mb : 0; // === TOTAUX PAIEMENTS ORDERS === $total_orders = isset($paymentDataOrders->total) ? (float) $paymentDataOrders->total : 0; $mv1_orders = isset($paymentDataOrders->total_mvola1) ? (float) $paymentDataOrders->total_mvola1 : 0; $mv2_orders = isset($paymentDataOrders->total_mvola2) ? (float) $paymentDataOrders->total_mvola2 : 0; $es1_orders = isset($paymentDataOrders->total_espece1) ? (float) $paymentDataOrders->total_espece1 : 0; $es2_orders = isset($paymentDataOrders->total_espece2) ? (float) $paymentDataOrders->total_espece2 : 0; $vb1_orders = isset($paymentDataOrders->total_virement_bancaire1) ? (float) $paymentDataOrders->total_virement_bancaire1 : 0; $vb2_orders = isset($paymentDataOrders->total_virement_bancaire2) ? (float) $paymentDataOrders->total_virement_bancaire2 : 0; // === TOTAUX PAIEMENTS AVANCES === $total_avances = isset($paymentDataAvance->total) ? (float) $paymentDataAvance->total : 0; $mv_avances = isset($paymentDataAvance->total_mvola) ? (float) $paymentDataAvance->total_mvola : 0; $es_avances = isset($paymentDataAvance->total_espece) ? (float) $paymentDataAvance->total_espece : 0; $vb_avances = isset($paymentDataAvance->total_virement_bancaire) ? (float) $paymentDataAvance->total_virement_bancaire : 0; // === COMBINAISON ORDERS + AVANCES === $total_mvola = $mv1_orders + $mv2_orders + $mv_avances; $total_espece = $es1_orders + $es2_orders + $es_avances; $total_vb = $vb1_orders + $vb2_orders + $vb_avances; $total = $total_orders + $total_avances; // === AJUSTEMENTS AVEC RECOUVREMENTS ET SORTIES (PAR MODE DE PAIEMENT) === $total_mvola_final = $total_mvola - $me - $mb + $bm - $total_sortie_mvola; $total_espece_final = $total_espece + $me + $be - $total_sortie_espece; $total_virement_bancaire_final = $total_vb - $be - $bm + $mb - $total_sortie_virement; // === CALCUL DU TOTAL GÉNÉRAL === $total_sortie_global = $total_sortie_espece + $total_sortie_mvola + $total_sortie_virement; $total_final = $total - $total_sortie_global; return [ 'total' => $total_final, 'total_mvola' => $total_mvola_final, 'total_espece' => $total_espece_final, 'total_virement_bancaire' => $total_virement_bancaire_final, 'page_title' => $this->pageTitle, 'permission' => $this->permission ]; } public function fetchRecouvrementData() { helper(['url', 'form']); $Recouvrement = new Recouvrement(); // Initialiser les variables pour DataTables $draw = intval($this->request->getVar('draw')); $session = session(); $users = $session->get('user'); if($users['group_name'] === "Caissière"){ $data = $Recouvrement->getAllRecouvrements($users['id'] ); $totalRecords = count($data); // Nombre total de recouvrements $result = [ "draw" => $draw, "recordsTotal" => $totalRecords, "recordsFiltered" => $totalRecords, "data" => [] ]; foreach ($data as $key => $value) { $buttons = ''; if (in_array('updateRecouvrement', $this->permission)) { $buttons .= ''; } if (in_array('deleteRecouvrement', $this->permission)) { $buttons .= ' '; } $result['data'][$key] = [ $value['recouvrement_id'], number_format($value['recouvrement_montant'], 0, '.', ' '), $value['recouvrement_date'], $value['recouvrement_personnel'], $value['send_money'], $value['get_money'], $buttons ]; } return $this->response->setJSON($result); } $data = $Recouvrement->getAllRecouvrements(); $totalRecords = count($data); // Nombre total de recouvrements $result = [ "draw" => $draw, "recordsTotal" => $totalRecords, "recordsFiltered" => $totalRecords, "data" => [] ]; foreach ($data as $key => $value) { $buttons = ''; if (in_array('updateRecouvrement', $this->permission)) { $buttons .= ''; } if (in_array('deleteRecouvrement', $this->permission)) { $buttons .= ' '; } $result['data'][$key] = [ $value['recouvrement_id'], number_format($value['recouvrement_montant'], 0, '.', ' '), $value['recouvrement_date'], $value['recouvrement_personnel'], $value['send_money'], $value['get_money'], $buttons ]; } return $this->response->setJSON($result); } public function removeRecouvrement() { $this->verifyRole('deleteRecouvrement'); $recouvrement_id = $this->request->getPost('recouvrement_id'); $response = []; if ($recouvrement_id) { $Recouvrement = new Recouvrement(); if ($Recouvrement->deleteRecouvrement($recouvrement_id)) { $response['success'] = true; $response['messages'] = "Recouvrement supprimé avec succès !"; } else { $response['success'] = false; $response['messages'] = "Erreur lors de la suppression du recouvrement."; } } else { $response['success'] = false; $response['messages'] = "Veuillez actualiser la page."; } return $this->response->setJSON($response); } public function createRecouvrement() { $this->verifyRole('createRecouvrement'); $data['page_title'] = $this->pageTitle; // echo "
";
// die(var_dump($this->request->getPost()));
// Load validation service
$validation = \Config\Services::validation();
$validation->setRules([
'send_mode' => 'required',
'get_mode' => 'required',
'recouvrement_montant' => 'required',
'recouvrement_date' => 'required',
]);
$validationData = [
'send_mode' => $this->request->getPost('send_mode'),
'get_mode' => $this->request->getPost('get_mode'),
'recouvrement_montant' => $this->request->getPost('recouvrement_montant'),
'recouvrement_date' => $this->request->getPost('recouvrement_date'),
];
// Set validation rules
$Notification = new NotificationController();
$Recouvrement = new Recouvrement();
// $recouvrement_id = $this->request->getPost('recouvrement_id');
$session = session();
$users = $session->get('user');
if ($users && isset($users['firstname'], $users['lastname'])) {
$fullname = $users['firstname'] . ' ' . $users['lastname'];
}
// $orders = new Orders();
// $Recouvrement = new Recouvrement();
// $paymentData = $orders->getPaymentModes();
// $totalRecouvrement = $Recouvrement->getTotalRecouvrements();
// $total_recouvrement = $totalRecouvrement->total_recouvrement;
// Initialisation des totaux avec 0 au cas où il n'y aurait pas de données
// $total_mvola1 = isset($paymentData->total_mvola1) ? $paymentData->total_mvola1 : 0;
// $total_mvola2 = isset($paymentData->total_mvola2) ? $paymentData->total_mvola2 : 0;
// $total_mvola = $total_mvola1 + $total_mvola2;
// $total_mvola1 = $total_mvola - $total_recouvrement;
// die(var_dump($data['recouvrement']))
// if ($data['recouvrement_montant'] <= $total_mvola1) {
// if ($Recouvrement->addRecouvrement($data)) {
// session()->setFlashdata('success', 'Créé avec succès');
// $Notification->createNotification("Un nouveau recouvrement crée", "TOUS", 0, 'recouvrement/');
// return redirect()->to('recouvrement/');
// } else {
// session()->setFlashdata('errors', 'Error occurred while creating the product');
// return redirect()->to('recouvrement/');
// }
// } else {
// session()->setFlashdata('errors', 'Solde MVOLA insuffisant');
// return redirect()->to('recouvrement/');
// }
if ($validation->run($validationData)) {
// // Prepare data
$session = session();
$users = $session->get('user');
$data = [
'recouvrement_montant' => $this->request->getPost('recouvrement_montant'),
'recouvrement_date' => $this->request->getPost('recouvrement_date'),
'recouvrement_personnel' => $fullname,
'get_money' => $this->request->getPost('get_mode'),
'send_money' => $this->request->getPost('send_mode'),
'user_id' => $users['id'],
'store_id' => $users['store_id'],
];
if ($Recouvrement->addRecouvrement($data)) {
$Notification->createNotification("Un nouveau recouvrement a été crée", "Direction", (int)$users["store_id"], 'recouvrement');
$response['success'] = true;
$response['messages'] = 'Recouvrement créé avec succès';
} else {
$response['success'] = false;
$response['messages'] = 'Erreur lors de la création du recouvrement.';
}
} else {
// Validation failed, return error messages
$response['success'] = false;
$response['messages'] = $validation->getErrors();
}
return $this->response->setJSON($response);
}
public function updateRecouvrement($recouvrement_id)
{
$this->verifyRole('updateRecouvrement');
$data['page_title'] = $this->pageTitle;
// Load validation service
$validation = \Config\Services::validation();
// Set validation rules
$validation->setRules([
'product[]' => 'required'
]);
$validationData = [
'product[]' => $this->request->getPost('product[]')
];
$Recouvrement = new Recouvrement();
// $recouvrement_id = (int) $this->request->getPost('recouvrement_id');
if ($this->request->getMethod() === 'post') {
$data = [
'recouvrement_montant' => (int) $this->request->getPost('recouvrement_montant_edit'),
'recouvrement_date' => $this->request->getPost('recouvrement_date_edit')
];
if ($Recouvrement->updateRecouvrement($recouvrement_id, $data)) {
// $Notification->createNotification("Un nouveau recouvrement crée", "Conseil", $users['store_id'], 'recouvrement');
return $this->response->setJSON([
'success' => true,
'messages' => 'Recouvrement modifié avec succès !'
]);
} else {
return $this->response->setJSON([
'success' => false,
'messages' => 'Erreur lors de la modification du recouvrement.'
]);
}
}
}
public function fetchRecouvrementSingle($id)
{
// die(var_dump('hghjbhj'));
if ($id) {
$recouvrement = new Recouvrement();
$data = $recouvrement->getRecouvrementSingle($id);
echo json_encode($data);
}
}
public function fetchTotalRecouvrementData() {
helper(['url', 'form']);
$Recouvrement = new Recouvrement();
$start_date = $this->request->getGet('start_date');
$end_date = $this->request->getGet('end_date');
if ($start_date && $end_date) {
// Initialiser les variables pour DataTables
$draw = intval($this->request->getVar('draw'));
$session = session();
$users = $session->get('user');
if($users['group_name'] === "Caissière"){
$data = $Recouvrement->getTotalRecouvrements($users['id'] );
$result = [
"draw" => $draw,
"recordsTotal" => 1,
"recordsFiltered" => 1,
"data" => []
];
$totalRecouvrement = $Recouvrement->getTotalRecouvrements($users['id'], $start_date, $end_date );
$total_recouvrement_me = $totalRecouvrement->me;
$total_recouvrement_bm = $totalRecouvrement->bm;
$total_recouvrement_be = $totalRecouvrement->be;
$total_recouvrement_mb = $totalRecouvrement->mb;
$total_recouvrement = $total_recouvrement_me + $total_recouvrement_me + $total_recouvrement_be + $total_recouvrement_mb;
$data = [
number_format($total_recouvrement_me,0,'.',' '),
number_format($total_recouvrement_bm,0,'.',' '),
number_format($total_recouvrement_be,0,'.',' '),
number_format($total_recouvrement_mb,0,'.',' '),
number_format($total_recouvrement,0,'.',' '),
];
}
return $this->response->setJSON($result);
}
// Initialiser les variables pour DataTables
$draw = intval($this->request->getVar('draw'));
$session = session();
$users = $session->get('user');
if($users['group_name'] === "Caissière"){
$data = $Recouvrement->getTotalRecouvrements($users['id'] );
$result = [
"draw" => $draw,
"recordsTotal" => 1,
"recordsFiltered" => 1,
"data" => []
];
$totalRecouvrement = $Recouvrement->getTotalRecouvrements($users['id'] );
$total_recouvrement_me = $totalRecouvrement->me;
$total_recouvrement_bm = $totalRecouvrement->bm;
$total_recouvrement_be = $totalRecouvrement->be;
$total_recouvrement_mb = $totalRecouvrement->mb;
$total_recouvrement = $total_recouvrement_me + $total_recouvrement_me + $total_recouvrement_be + $total_recouvrement_mb;
$data = [
number_format($total_recouvrement_me,0,'.',' '),
number_format($total_recouvrement_bm,0,'.',' '),
number_format($total_recouvrement_be,0,'.',' '),
number_format($total_recouvrement_mb,0,'.',' '),
number_format($total_recouvrement,0,'.',' '),
];
}
return $this->response->setJSON($result);
}
}