diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 2c4e6bbfe85..7f86c91ed6a 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -49,6 +49,10 @@ class CommandeFournisseur extends Commande var $ref; var $brouillon; + var $statut; // 0=Draft -> 1=Validated -> 2=Approved -> 3=Process runing -> 4=Received partially -> 5=Received totally + // -> 7=Canceled/Never received -> 3=Process + // -> 6=Canceled -> 2=Approved + // -> 9=Refused -> 1=Validated /** \brief Constructeur @@ -67,6 +71,7 @@ class CommandeFournisseur extends Commande $this->statuts[4] = 'StatusOrderReceivedPartially'; $this->statuts[5] = 'StatusOrderReceivedAll'; $this->statuts[6] = 'StatusOrderCanceled'; + $this->statuts[7] = 'StatusOrderCanceled'; $this->statuts[9] = 'StatusOrderRefused'; } @@ -373,7 +378,7 @@ class CommandeFournisseur extends Commande if ($statut==3) return img_picto($langs->trans($this->statuts[$statut]),'statut3'); if ($statut==4) return img_picto($langs->trans($this->statuts[$statut]),'statut3'); if ($statut==5) return img_picto($langs->trans($this->statuts[$statut]),'statut6'); - if ($statut==6) return img_picto($langs->trans($this->statuts[$statut]),'statut5'); + if ($statut==6 || $statut==7) return img_picto($langs->trans($this->statuts[$statut]),'statut5'); if ($statut==9) return img_picto($langs->trans($this->statuts[$statut]),'statut5'); } if ($mode == 4) @@ -384,7 +389,7 @@ class CommandeFournisseur extends Commande if ($statut==3) return img_picto($langs->trans($this->statuts[$statut]),'statut3').' '.$langs->trans($this->statuts[$statut]); if ($statut==4) return img_picto($langs->trans($this->statuts[$statut]),'statut3').' '.$langs->trans($this->statuts[$statut]); if ($statut==5) return img_picto($langs->trans($this->statuts[$statut]),'statut6').' '.$langs->trans($this->statuts[$statut]); - if ($statut==6) return img_picto($langs->trans($this->statuts[$statut]),'statut5').' '.$langs->trans($this->statuts[$statut]); + if ($statut==6 || $statut==7) return img_picto($langs->trans($this->statuts[$statut]),'statut5').' '.$langs->trans($this->statuts[$statut]); if ($statut==9) return img_picto($langs->trans($this->statuts[$statut]),'statut5').' '.$langs->trans($this->statuts[$statut]); } if ($mode == 5) @@ -395,7 +400,7 @@ class CommandeFournisseur extends Commande if ($statut==3) return $langs->trans($this->statuts[$statut]).' '.img_picto($langs->trans($this->statuts[$statut]),'statut3'); if ($statut==4) return $langs->trans($this->statuts[$statut]).' '.img_picto($langs->trans($this->statuts[$statut]),'statut3'); if ($statut==5) return $langs->trans($this->statuts[$statut]).' '.img_picto($langs->trans($this->statuts[$statut]),'statut6'); - if ($statut==6) return $langs->trans($this->statuts[$statut]).' '.img_picto($langs->trans($this->statuts[$statut]),'statut5'); + if ($statut==6 || $statut==7) return $langs->trans($this->statuts[$statut]).' '.img_picto($langs->trans($this->statuts[$statut]),'statut5'); if ($statut==9) return $langs->trans($this->statuts[$statut]).' '.img_picto($langs->trans($this->statuts[$statut]),'statut5'); } } @@ -981,6 +986,7 @@ class CommandeFournisseur extends Commande return -2; } } + /** * Supprime une ligne de la commande * @@ -1106,21 +1112,21 @@ class CommandeFournisseur extends Commande dol_syslog("CommandeFournisseur::Livraison"); - if ($user->rights->fournisseur->commande->receptionner && $date < gmmktime()) + if ($user->rights->fournisseur->commande->receptionner) { - if ($type == 'tot') $statut = 5; if ($type == 'par') $statut = 4; - if ($type == 'nev') $statut = 6; - if ($type == 'can') $statut = 6; + if ($type == 'tot') $statut = 5; + if ($type == 'nev') $statut = 7; + if ($type == 'can') $statut = 7; - if ($statut == 4 or $statut == 5 or $statut == 6) + if ($statut == 4 or $statut == 5 or $statut == 7) { $this->db->begin(); $sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur"; $sql.= " SET fk_statut = ".$statut; $sql.= " WHERE rowid = ".$this->id; - $sql.= " AND fk_statut IN (3,4)"; + $sql.= " AND fk_statut IN (3,4)"; // Process running or Partially received dol_syslog("CommandeFournisseur::Livraison sql=".$sql); $resql=$this->db->query($sql); @@ -1264,6 +1270,47 @@ class CommandeFournisseur extends Commande } + /** + * \brief Tag order with a particular status + * \param user Object user that change status + * \return int <0 if KO, >0 if OK + */ + function setStatus($user,$status) + { + global $conf,$langs; + $error=0; + + $this->db->begin(); + + $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande_fournisseur'; + $sql.= ' SET fk_statut='.$status; + $sql.= ' WHERE rowid = '.$this->id; + + dol_syslog("CommandeFournisseur::setStatus sql=".$sql); + $resql = $this->db->query($sql); + if ($resql) + { + + } + else + { + $error++; + $this->error=$this->db->lasterror(); + dol_syslog("CommandeFournisseur::setStatus ".$this->error); + } + + if (! $error) + { + $this->db->commit(); + return 1; + } + else + { + $this->db->rollback(); + return -1; + } + } + /** * \brief Update line * \param rowid Id de la ligne de facture diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 2d13e1ec99e..dd1893972f4 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -522,7 +522,6 @@ class FactureFournisseur extends Facture $this->db->begin(); - dol_syslog("FactureFournisseur::set_unpaid rowid=".$this->id, LOG_DEBUG); $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture_fourn'; $sql.= ' SET paye=0, fk_statut=1, close_code=null, close_note=null'; $sql.= ' WHERE rowid = '.$this->id; @@ -543,8 +542,8 @@ class FactureFournisseur extends Facture else { $error++; - $this->error=$this->db->error(); - dol_print_error($this->db); + $this->error=$this->db->lasterror(); + dol_syslog("FactureFournisseur::set_unpaid ".$this->error); } if (! $error) diff --git a/htdocs/fourn/commande/dispatch.php b/htdocs/fourn/commande/dispatch.php index b9ecf8ecc71..2c8269d679c 100644 --- a/htdocs/fourn/commande/dispatch.php +++ b/htdocs/fourn/commande/dispatch.php @@ -174,6 +174,11 @@ if ($id > 0 || ! empty($ref)) /* * Lignes de commandes */ + if ($commande->statut <= 2 || $commande->statut >= 6) + { + print $langs->trans("OrderStatusNotReadyToDispatch"); + } + if ($commande->statut == 3 || $commande->statut == 4 || $commande->statut == 5) { print '