You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
270 lines
10 KiB
270 lines
10 KiB
<?php
|
|
namespace App\Models;
|
|
|
|
use CodeIgniter\Model;
|
|
class Avance extends Model{
|
|
/**
|
|
* table name
|
|
* @var string
|
|
*/
|
|
protected $table = 'avances';
|
|
protected $primaryKey = 'avance_id';
|
|
|
|
protected $allowedFields = [
|
|
'avance_amount', 'avance_date','user_id',
|
|
'customer_name',
|
|
'customer_address',
|
|
'customer_phone',
|
|
'customer_cin','gross_amount','amount_due','product_id','is_order','active','store_id'];
|
|
|
|
public function createAvance( array $data) {
|
|
try {
|
|
return $this->insert($data);
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de l\'ajout de l\'avance : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public function updateAvance(int $id, array $data) {
|
|
|
|
if ($id <= 0) {
|
|
log_message('error', 'ID invalide pour la mise à jour du recouvrement : ' . $id);
|
|
return false;
|
|
}
|
|
|
|
try {
|
|
|
|
return $this->update($id, $data);
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la mise à jour de l\'avance : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public function getAllAvanceData(int $id=null) {
|
|
$session = session();
|
|
$users = $session->get('user');
|
|
$isAdmin = in_array($users['group_name'], ['Conseil', 'Direction']);
|
|
if($isAdmin) {
|
|
if($id){
|
|
try {
|
|
return $this->where('user_id',$id)
|
|
->where('is_order',0)
|
|
->where('active',1)
|
|
->orderBy('avance_date', 'DESC')
|
|
->findAll();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la récupération des recouvrements : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
try {
|
|
return $this
|
|
->where('is_order',0)
|
|
->where('active',1)
|
|
->orderBy('avance_date', 'DESC') ->findAll();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la récupération des recouvrements : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
else{
|
|
if($id){
|
|
try {
|
|
return $this->where('user_id',$id)
|
|
->where('is_order',0)
|
|
->where('active',1)
|
|
->where('store_id',$users['store_id'])
|
|
->orderBy('avance_date', 'DESC')
|
|
->findAll();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la récupération des recouvrements : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
try {
|
|
return $this
|
|
->where('is_order',0)
|
|
->where('active',1)
|
|
->where('store_id',$users['store_id'])
|
|
->orderBy('avance_date', 'DESC') ->findAll();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la récupération des recouvrements : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public function fetchSingleAvance(int $avance_id){
|
|
return $this->where('avance_id',$avance_id)
|
|
->first();
|
|
}
|
|
|
|
public function removeAvance(int $avance_id){
|
|
return $this->delete($avance_id);
|
|
}
|
|
|
|
public function getTotalAvance() {
|
|
$session = session();
|
|
$users = $session->get('user');
|
|
$isAdmin = in_array($users['group_name'], ['Conseil', 'Direction']);
|
|
if($isAdmin) {
|
|
try {
|
|
return $this->select('
|
|
SUM(avance_amount) AS ta,
|
|
|
|
')
|
|
->where('is_order', 0)
|
|
->get()
|
|
->getRowObject();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors du total du montant des avances : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
else{
|
|
try {
|
|
return $this->select('
|
|
SUM(avance_amount) AS ta,
|
|
|
|
')
|
|
->where('is_order', 0)
|
|
->where('store_id',$users['store_id'])
|
|
->get()
|
|
->getRowObject();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors du total du montant des avances : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public function getAllAvanceData1(int $id=null) {
|
|
$session = session();
|
|
$users = $session->get('user');
|
|
$isAdmin = in_array($users['group_name'], ['Conseil', 'Direction']);
|
|
if($isAdmin) {
|
|
if($id){
|
|
try {
|
|
return $this->where('user_id',$id)
|
|
->where('is_order',1)
|
|
->where('active',1)
|
|
->orderBy('avance_date', 'DESC')
|
|
->findAll();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la récupération des recouvrements : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
try {
|
|
return $this
|
|
->where('is_order',1)
|
|
->where('active',1)
|
|
->orderBy('avance_date', 'DESC') ->findAll();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la récupération des recouvrements : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
else{
|
|
if($id){
|
|
try {
|
|
return $this->where('user_id',$id)
|
|
->where('is_order',1)
|
|
->where('active',1)
|
|
->where('store_id',$users['store_id'])
|
|
->orderBy('avance_date', 'DESC')
|
|
->findAll();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la récupération des recouvrements : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
try {
|
|
return $this
|
|
->where('is_order',0)
|
|
->orderBy('avance_date', 'DESC') ->findAll();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la récupération des recouvrements : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getAllAvanceData2(int $id=null) {
|
|
$session = session();
|
|
$users = $session->get('user');
|
|
$isAdmin = in_array($users['group_name'], ['Conseil', 'Direction']);
|
|
if($isAdmin) {
|
|
if($id){
|
|
try {
|
|
return $this->where('user_id',$id)
|
|
->where('is_order',0)
|
|
->where('active',0)
|
|
->orderBy('avance_date', 'DESC')
|
|
->findAll();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la récupération des recouvrements : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
try {
|
|
return $this
|
|
->where('is_order',0)
|
|
->where('active',0)
|
|
->orderBy('avance_date', 'DESC') ->findAll();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la récupération des recouvrements : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
else{
|
|
if($id){
|
|
try {
|
|
return $this->where('user_id',$id)
|
|
->where('is_order',0)
|
|
->where('active',0)
|
|
->where('store_id',$users['store_id'])
|
|
->orderBy('avance_date', 'DESC')
|
|
->findAll();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la récupération des recouvrements : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
try {
|
|
return $this
|
|
->where('is_order',0)
|
|
->where('active',0)
|
|
->where('store_id',$users['store_id'])
|
|
->orderBy('avance_date', 'DESC') ->findAll();
|
|
} catch (\Exception $e) {
|
|
log_message('error', 'Erreur lors de la récupération des recouvrements : ' . $e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function checkExpiredAvance()
|
|
{
|
|
$now = date('Y-m-d');
|
|
$avances = $this->where('active', '1')
|
|
->where('DATE_ADD(avance_date, INTERVAL 15 DAY) <', $now)
|
|
->findAll();
|
|
|
|
if (!empty($avances)) {
|
|
$productModel = new Products();
|
|
|
|
foreach ($avances as $avance) {
|
|
// Mettre l'avance à expirée
|
|
$this->update($avance['id'], ['active' => '0']);
|
|
|
|
// Remettre le produit disponible
|
|
$productModel->update($avance['product_id'], ['product_sold' => 0]);
|
|
}
|
|
}
|
|
}
|
|
}
|