mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
This is to be more portable, to solve problem when database server time differs from PHP server and to prepare for TZ support.
301 lines
7.3 KiB
PHP
301 lines
7.3 KiB
PHP
<?php
|
|
/* Copyright (C) 2002-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
|
* Copyright (C) 2006-2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
/**
|
|
\file htdocs/adherents/cotisation.class.php
|
|
\ingroup adherent
|
|
\brief Fichier de la classe permettant de gèrer les cotisations
|
|
\version $Id$
|
|
*/
|
|
|
|
|
|
/**
|
|
\class Cotisation
|
|
\brief Classe permettant de gèrer les cotisations
|
|
*/
|
|
class Cotisation extends CommonObject
|
|
{
|
|
var $id;
|
|
var $db;
|
|
var $error;
|
|
var $errors;
|
|
|
|
var $datec;
|
|
var $datem;
|
|
var $dateh; // Subscription start date
|
|
var $datef; // Subscription end date
|
|
var $fk_adherent;
|
|
var $amount;
|
|
var $note;
|
|
var $fk_bank;
|
|
|
|
|
|
/**
|
|
\brief Cotisation
|
|
\param DB Handler base de données
|
|
*/
|
|
function Cotisation($DB)
|
|
{
|
|
$this->db = $DB;
|
|
}
|
|
|
|
|
|
/**
|
|
\brief Fonction qui permet de créer le don
|
|
\param userid userid de celui qui insere
|
|
\return int <0 si KO, Id cotisation créé si OK
|
|
*/
|
|
function create($userid)
|
|
{
|
|
// Check parameters
|
|
if ($this->datef <= $this->dateh)
|
|
{
|
|
$this->error="Error: Bad value for datef or dateh";
|
|
return -1;
|
|
}
|
|
|
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX."cotisation (fk_adherent, datec, dateadh, datef, cotisation, note)";
|
|
$sql.= " VALUES (".$this->fk_adherent.", ".$this->db->idate(mktime()).",";
|
|
$sql.= " ".$this->db->idate($this->dateh).",";
|
|
$sql.= " ".$this->db->idate($this->datef).",";
|
|
$sql.= " ".$this->amount.",'".$this->note."')";
|
|
|
|
dolibarr_syslog("Cotisation::create sql=".$sql);
|
|
$resql = $this->db->query($sql);
|
|
if ($resql)
|
|
{
|
|
return $this->db->last_insert_id(MAIN_DB_PREFIX."cotisation");
|
|
}
|
|
else
|
|
{
|
|
$this->error=$this->db->error();
|
|
dolibarr_syslog($this->error);
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
\brief Fonction qui permet de récupèrer une cotisation
|
|
\param rowid Id cotisation
|
|
\return int <0 si KO, =0 si OK mais non trouve, >0 si OK
|
|
*/
|
|
function fetch($rowid)
|
|
{
|
|
$sql ="SELECT rowid, fk_adherent, ".$this->db->pdate("datec")." as datec,";
|
|
$sql.=" tms,";
|
|
$sql.=" ".$this->db->pdate("dateadh")." as dateadh,";
|
|
$sql.=" ".$this->db->pdate("datef")." as datef,";
|
|
$sql.=" cotisation, note, fk_bank";
|
|
$sql.=" FROM ".MAIN_DB_PREFIX."cotisation";
|
|
$sql.=" WHERE rowid=".$rowid;
|
|
|
|
dolibarr_syslog("Cotisation::fetch sql=".$sql);
|
|
$resql=$this->db->query($sql);
|
|
if ($resql)
|
|
{
|
|
if ($this->db->num_rows($resql))
|
|
{
|
|
$obj = $this->db->fetch_object($resql);
|
|
|
|
$this->id = $obj->rowid;
|
|
$this->ref = $obj->rowid;
|
|
|
|
$this->fk_adherent = $obj->fk_adherent;
|
|
$this->datec = $obj->datec;
|
|
$this->datem = $obj->tms;
|
|
$this->dateh = $obj->dateadh;
|
|
$this->datef = $obj->datef;
|
|
$this->amount = $obj->cotisation;
|
|
$this->note = $obj->note;
|
|
$this->fk_bank = $obj->fk_bank;
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$this->error=$this->db->error();
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* \brief Met a jour en base la cotisation
|
|
* \param user Objet user qui met a jour
|
|
* \param notrigger 0=Desactive les triggers
|
|
* \param int <0 if KO, >0 if OK
|
|
*/
|
|
function update($user,$notrigger=0)
|
|
{
|
|
$this->db->begin();
|
|
|
|
$sql = "UPDATE ".MAIN_DB_PREFIX."cotisation SET ";
|
|
$sql .= " fk_adherent = ".$this->fk_adherent.",";
|
|
$sql .= " fk_bank = ".($this->fk_bank ? $this->fk_bank : 'null').",";
|
|
$sql .= " note=".($this->note ? "'".addslashes($this->note)."'" : 'null').",";
|
|
$sql .= " cotisation = '".price2num($this->amount)."',";
|
|
$sql .= " dateadh='".$this->db->idate($this->dateh)."',";
|
|
$sql .= " datef='".$this->db->idate($this->datef)."',";
|
|
$sql .= " datec='".$this->db->idate($this->datec)."'";
|
|
$sql .= " WHERE rowid = ".$this->id;
|
|
|
|
dolibarr_syslog("Cotisation::update sql=".$sql);
|
|
$resql = $this->db->query($sql);
|
|
if ($resql)
|
|
{
|
|
$member=new Adherent($this->db);
|
|
$result=$member->fetch($this->fk_adherent);
|
|
$result=$member->update_end_date($user);
|
|
|
|
$this->db->commit();
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
$this->db->rollback();
|
|
$this->error=$this->db->error();
|
|
dolibarr_syslog("Cotisation::update ".$this->error);
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
/**
|
|
\brief Fonction qui permet de supprimer la cotisation
|
|
\param rowid Id cotisation
|
|
\return int <0 si KO, 0 si OK mais non trouve, >0 si OK
|
|
*/
|
|
function delete()
|
|
{
|
|
// Verification
|
|
if ($this->fk_bank)
|
|
{
|
|
require_once(DOL_DOCUMENT_ROOT."/compta/bank/account.class.php");
|
|
$accountline=new AccountLine($this->db);
|
|
$result=$accountline->fetch($this->fk_bank);
|
|
}
|
|
|
|
$this->db->begin();
|
|
|
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."cotisation WHERE rowid = ".$this->id;
|
|
dolibarr_syslog("Cotisation::delete sql=".$sql);
|
|
$resql=$this->db->query($sql);
|
|
if ($resql)
|
|
{
|
|
$num=$this->db->affected_rows($resql);
|
|
if ($num)
|
|
{
|
|
if ($this->fk_bank)
|
|
{
|
|
$result=$accountline->delete(); // Renvoi faux si ligne rapprocher
|
|
if ($result > 0)
|
|
{
|
|
$this->db->commit();
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
$this->error=$accountline->error;
|
|
$this->db->rollback();
|
|
return -1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$this->db->commit();
|
|
return 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$this->db->commit();
|
|
return 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$this->error=$this->db->lasterror();
|
|
$this->db->rollback();
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* \brief Renvoie nom clicable (avec eventuellement le picto)
|
|
* \param withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul
|
|
* \return string Chaine avec URL
|
|
*/
|
|
function getNomUrl($withpicto=0)
|
|
{
|
|
global $langs;
|
|
|
|
$result='';
|
|
|
|
$lien = '<a href="'.DOL_URL_ROOT.'/adherents/fiche_subscription.php?rowid='.$this->id.'">';
|
|
$lienfin='</a>';
|
|
|
|
$picto='payment';
|
|
$label=$langs->trans("ShowSubscription");
|
|
|
|
if ($withpicto) $result.=($lien.img_object($label,$picto).$lienfin);
|
|
if ($withpicto && $withpicto != 2) $result.=' ';
|
|
$result.=$lien.$this->ref.$lienfin;
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* \brief Charge les informations d'ordre info dans l'objet cotisation
|
|
* \param id Id adhesion a charger
|
|
*/
|
|
function info($id)
|
|
{
|
|
$sql = 'SELECT c.rowid, '.$this->db->pdate('c.datec').' as datec,';
|
|
$sql.= ' '.$this->db->pdate('c.tms').' as datem';
|
|
$sql.= ' FROM '.MAIN_DB_PREFIX.'cotisation as c';
|
|
$sql.= ' WHERE c.rowid = '.$id;
|
|
|
|
$result=$this->db->query($sql);
|
|
if ($result)
|
|
{
|
|
if ($this->db->num_rows($result))
|
|
{
|
|
$obj = $this->db->fetch_object($result);
|
|
$this->id = $obj->rowid;
|
|
|
|
$this->date_creation = $obj->datec;
|
|
$this->date_modification = $obj->datem;
|
|
}
|
|
|
|
$this->db->free($result);
|
|
|
|
}
|
|
else
|
|
{
|
|
dolibarr_print_error($this->db);
|
|
}
|
|
}
|
|
}
|
|
?>
|