uniformize code and add feature

This commit is contained in:
Philippe Grand 2011-05-08 15:00:18 +00:00
parent 0eea44a1ed
commit e6e7d54431

View File

@ -74,8 +74,8 @@ class CommandeFournisseur extends Commande
var $mode_reglement_code; var $mode_reglement_code;
/** \brief Constructeur /** Constructeur
* \param DB Handler d'acces aux bases de donnees * @param DB Handler d'acces aux bases de donnees
*/ */
function CommandeFournisseur($DB) function CommandeFournisseur($DB)
{ {
@ -106,12 +106,15 @@ class CommandeFournisseur extends Commande
{ {
global $conf; global $conf;
// Check parameters
if (empty($id) && empty($ref)) return -1;
$sql = "SELECT c.rowid, c.ref, c.date_creation, c.fk_soc, c.fk_user_author, c.fk_statut, c.amount_ht, c.total_ht, c.total_ttc, c.tva,"; $sql = "SELECT c.rowid, c.ref, c.date_creation, c.fk_soc, c.fk_user_author, c.fk_statut, c.amount_ht, c.total_ht, c.total_ttc, c.tva,";
$sql.= " c.localtax1, c.localtax2, "; $sql.= " c.localtax1, c.localtax2, ";
$sql.= " c.date_commande as date_commande, c.fk_cond_reglement, c.fk_mode_reglement, c.fk_projet as fk_project, c.remise_percent, c.source, c.fk_methode_commande,"; $sql.= " c.date_commande as date_commande, c.fk_cond_reglement, c.fk_mode_reglement, c.fk_projet as fk_project, c.remise_percent, c.source, c.fk_methode_commande,";
$sql.= " c.note, c.note_public, c.model_pdf,"; $sql.= " c.note, c.note_public, c.model_pdf,";
$sql.= " cm.libelle as methode_commande,"; $sql.= " cm.libelle as methode_commande,";
$sql.= " cr.code as cond_reglement_code, cr.libelle as cond_reglement_libelle"; $sql.= " cr.code as cond_reglement_code, cr.libelle as cond_reglement_libelle,";
$sql.= " p.code as mode_reglement_code, p.libelle as mode_reglement_libelle"; $sql.= " p.code as mode_reglement_code, p.libelle as mode_reglement_libelle";
$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as c"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as c";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_payment_term as cr ON (c.fk_cond_reglement = cr.rowid)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_payment_term as cr ON (c.fk_cond_reglement = cr.rowid)";
@ -151,6 +154,7 @@ class CommandeFournisseur extends Commande
$this->cond_reglement_id = $obj->fk_cond_reglement; $this->cond_reglement_id = $obj->fk_cond_reglement;
$this->cond_reglement_code = $obj->cond_reglement_code; $this->cond_reglement_code = $obj->cond_reglement_code;
$this->cond_reglement = $obj->cond_reglement_libelle; $this->cond_reglement = $obj->cond_reglement_libelle;
$this->cond_reglement_doc = $obj->cond_reglement_libelle_doc;
$this->mode_reglement_id = $obj->fk_mode_reglement; $this->mode_reglement_id = $obj->fk_mode_reglement;
$this->mode_reglement_code = $obj->mode_reglement_code; $this->mode_reglement_code = $obj->mode_reglement_code;
$this->mode_reglement = $obj->mode_reglement_libelle; $this->mode_reglement = $obj->mode_reglement_libelle;
@ -235,12 +239,12 @@ class CommandeFournisseur extends Commande
} }
/** /**
* \brief Add a line in log table * Add a line in log table
* \param user User making action * @param user User making action
* \param statut Status of order * @param statut Status of order
* \param datelog Date of change * @param datelog Date of change
* \param comment Comment * @param comment Comment
* \return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
function log($user, $statut, $datelog, $comment='') function log($user, $statut, $datelog, $comment='')
{ {
@ -264,8 +268,8 @@ class CommandeFournisseur extends Commande
} }
/** /**
* \brief Validate an order * Validate an order
* \param user Utilisateur qui valide * @param user Utilisateur qui valide
*/ */
function valid($user) function valid($user)
{ {
@ -280,7 +284,7 @@ class CommandeFournisseur extends Commande
{ {
$this->db->begin(); $this->db->begin();
// Definition du nom de module de numerotation de commande // Definition du nom de modele de numerotation de commande
$soc = new Societe($this->db); $soc = new Societe($this->db);
$soc->fetch($this->fourn_id); $soc->fetch($this->fourn_id);
@ -305,7 +309,7 @@ class CommandeFournisseur extends Commande
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if (! $resql) if (! $resql)
{ {
dol_syslog("Commande::valid() Echec update - 10 - sql=".$sql, LOG_ERR); dol_syslog("CommandeFournisseur::valid() Echec update - 10 - sql=".$sql, LOG_ERR);
dol_print_error($this->db); dol_print_error($this->db);
$error++; $error++;
} }
@ -373,11 +377,87 @@ class CommandeFournisseur extends Commande
} }
} }
/**
* Set draft status
* @param user Object user that modify
* @return int <0 if KO, >0 if OK
*/
function set_draft($user)
{
global $conf,$langs;
$error=0;
// Protection
if ($this->statut == 0)
{
dol_syslog("CommandeFournisseur::set_draft already draft status", LOG_WARNING);
return 0;
}
if (! $user->rights->fournisseur->commande->valider)
{
$this->error='Permission denied';
return -1;
}
$this->db->begin();
$sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur";
$sql.= " SET fk_statut = 0";
$sql.= " WHERE rowid = ".$this->id;
dol_syslog("CommandeFournisseur::set_draft sql=".$sql, LOG_DEBUG);
if ($this->db->query($sql))
{
// If stock is incremented on validate order, we must redecrement it
if ($conf->stock->enabled && $conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER == 0)
{
require_once(DOL_DOCUMENT_ROOT."/product/stock/class/mouvementstock.class.php");
for ($i = 0 ; $i < sizeof($this->lines) ; $i++)
{
if ($this->lines[$i]->fk_product > 0 && $this->lines[$i]->product_type == 0)
{
$mouvP = new MouvementStock($this->db);
// We increment stock of product (and sub-products)
$entrepot_id = "1"; //Todo: ajouter possibilite de choisir l'entrepot
$result=$mouvP->reception($user, $this->lines[$i]->fk_product, $entrepot_id, $this->lines[$i]->qty, $this->lines[$i]->subprice);
if ($result < 0) { $error++; }
}
}
if (!$error)
{
$this->statut=0;
$this->db->commit();
return $result;
}
else
{
$this->error=$mouvP->error;
$this->db->rollback();
return $result;
}
}
$this->statut=0;
$this->db->commit();
return 1;
}
else
{
$this->error=$this->db->error();
$this->db->rollback();
dol_syslog($this->error, LOG_ERR);
return -1;
}
}
/** /**
* \brief Return label of the status of object * Return label of the status of object
* \param mode 0=Long label, 1=Short label, 2=Picto + Short label, 3=Picto, 4=Picto + Long label * @param mode 0=Long label, 1=Short label, 2=Picto + Short label, 3=Picto, 4=Picto + Long label
* \return string Label * @return string Label
*/ */
function getLibStatut($mode=0) function getLibStatut($mode=0)
{ {
@ -385,10 +465,10 @@ class CommandeFournisseur extends Commande
} }
/** /**
* \brief Return label of a status * Return label of a status
* \param statut Id statut * @param statut Id statut
* \param mode 0=Long label, 1=Short label, 2=Picto + Short label, 3=Picto, 4=Picto + Long label, 5=Short label + Picto * @param mode 0=Long label, 1=Short label, 2=Picto + Short label, 3=Picto, 4=Picto + Long label, 5=Short label + Picto
* \return string Label of status * @return string Label of status
*/ */
function LibStatut($statut,$mode=0) function LibStatut($statut,$mode=0)
{ {
@ -444,10 +524,10 @@ class CommandeFournisseur extends Commande
/** /**
* \brief Renvoie nom clicable (avec eventuellement le picto) * Renvoie nom clicable (avec eventuellement le picto)
* \param withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul * @param withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul
* \param option Sur quoi pointe le lien * @param option Sur quoi pointe le lien
* \return string Chaine avec URL * @return string Chaine avec URL
*/ */
function getNomUrl($withpicto=0,$option='') function getNomUrl($withpicto=0,$option='')
{ {
@ -469,10 +549,10 @@ class CommandeFournisseur extends Commande
/** /**
* \brief Renvoie la reference de commande suivante non utilisee en fonction du module * Renvoie la reference de commande suivante non utilisee en fonction du module
* de numerotation actif defini dans COMMANDE_SUPPLIER_ADDON * de numerotation actif defini dans COMMANDE_SUPPLIER_ADDON
* \param soc objet societe * @param soc objet societe
* \return string reference libre pour la facture * @return string reference libre pour la facture
*/ */
function getNextNumRef($soc) function getNextNumRef($soc)
{ {
@ -523,8 +603,8 @@ class CommandeFournisseur extends Commande
} }
/** /**
* \brief Accept an order * Accept an order
* \param user Object user * @param user Object user
*/ */
function approve($user) function approve($user)
{ {
@ -603,8 +683,8 @@ class CommandeFournisseur extends Commande
} }
/** /**
* \brief Refuse an order * Refuse an order
* \param user User making action * @param user User making action
*/ */
function refuse($user) function refuse($user)
{ {
@ -646,9 +726,9 @@ class CommandeFournisseur extends Commande
} }
/** /**
* \brief Cancel an approved order * Cancel an approved order
* \param user User making action * @param user User making action
* \remarks L'annulation se fait apres l'approbation * @remarks L'annulation se fait apres l'approbation
*/ */
function Cancel($user) function Cancel($user)
{ {
@ -761,6 +841,7 @@ class CommandeFournisseur extends Commande
$sql.= ", fk_statut"; $sql.= ", fk_statut";
$sql.= ", source"; $sql.= ", source";
$sql.= ", model_pdf"; $sql.= ", model_pdf";
$sql.= ", fk_mode_reglement";
$sql.= ") "; $sql.= ") ";
$sql.= " VALUES ("; $sql.= " VALUES (";
$sql.= "''"; $sql.= "''";
@ -771,6 +852,7 @@ class CommandeFournisseur extends Commande
$sql.= ", 0"; $sql.= ", 0";
$sql.= ", 0"; $sql.= ", 0";
$sql.= ", '".$conf->global->COMMANDE_SUPPLIER_ADDON_PDF."'"; $sql.= ", '".$conf->global->COMMANDE_SUPPLIER_ADDON_PDF."'";
$sql.= ", ".$this->mode_reglement_id;
$sql.= ")"; $sql.= ")";
dol_syslog("CommandeFournisseur::Create sql=".$sql); dol_syslog("CommandeFournisseur::Create sql=".$sql);
@ -1164,9 +1246,9 @@ class CommandeFournisseur extends Commande
} }
/** /**
* \brief Change les conditions de reglement de la commande * Change les conditions de reglement de la commande
* \param cond_reglement_id Id de la nouvelle condition de reglement * @param cond_reglement_id Id de la nouvelle condition de reglement
* \return int >0 si ok, <0 si ko * @return int >0 si ok, <0 si ko
*/ */
function cond_reglement($cond_reglement_id) function cond_reglement($cond_reglement_id)
{ {
@ -1195,11 +1277,11 @@ class CommandeFournisseur extends Commande
return -2; return -2;
} }
} }
/** /**
* \brief Change le mode de reglement * Change le mode de reglement
* \param mode Id du nouveau mode * @param mode Id du nouveau mode
* \return int >0 si ok, <0 si ko * @return int >0 si ok, <0 si ko
*/ */
function mode_reglement($mode_reglement_id) function mode_reglement($mode_reglement_id)
{ {
@ -1288,9 +1370,10 @@ class CommandeFournisseur extends Commande
return $result ; return $result ;
} }
/** \brief Cree la commande depuis une propale existante /**
\param user Utilisateur qui cree * Cree la commande depuis une propale existante
\param propale_id id de la propale qui sert de modele * @param user Utilisateur qui cree
* @param propale_id id de la propale qui sert de modele
*/ */
function updateFromCommandeClient($user, $idc, $comclientid) function updateFromCommandeClient($user, $idc, $comclientid)
{ {
@ -1327,8 +1410,8 @@ class CommandeFournisseur extends Commande
/** /**
* \brief Met a jour les notes * Met a jour les notes
* \return int <0 si ko, >=0 si ok * @return int <0 si ko, >=0 si ok
*/ */
function UpdateNote($user, $note, $note_public) function UpdateNote($user, $note, $note_public)
{ {
@ -1400,9 +1483,9 @@ class CommandeFournisseur extends Commande
/** /**
* \brief Tag order with a particular status * Tag order with a particular status
* \param user Object user that change status * @param user Object user that change status
* \return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
function setStatus($user,$status) function setStatus($user,$status)
{ {
@ -1713,8 +1796,8 @@ class CommandeFournisseurLigne extends OrderLine
} }
/** /**
* \brief Load line order * Load line order
* \param rowid id line order * @param rowid id line order
*/ */
function fetch($rowid) function fetch($rowid)
{ {
@ -1763,8 +1846,8 @@ class CommandeFournisseurLigne extends OrderLine
} }
/** /**
* \brief Mise a jour de l'objet ligne de commande en base * Mise a jour de l'objet ligne de commande en base
* \return int <0 si ko, >0 si ok * @return int <0 si ko, >0 si ok
*/ */
function update_total() function update_total()
{ {