Merge pull request #2504 from marcosgdf/constants

Implemented constants for some object types and statuses
This commit is contained in:
Laurent Destailleur 2015-03-30 09:25:18 +02:00
commit 86603b01dd
38 changed files with 267 additions and 181 deletions

View File

@ -70,7 +70,7 @@ $myproduct->libelle = 'libelle';
$myproduct->price = '10'; $myproduct->price = '10';
$myproduct->price_base_type = 'HT'; $myproduct->price_base_type = 'HT';
$myproduct->tva_tx = '19.6'; $myproduct->tva_tx = '19.6';
$myproduct->type = 0; $myproduct->type = Product::TYPE_PRODUCT;
$myproduct->status = 1; $myproduct->status = 1;
$myproduct->description = 'Description'; $myproduct->description = 'Description';
$myproduct->note = 'Note'; $myproduct->note = 'Note';

View File

@ -343,7 +343,7 @@ else if ($id || $ref)
$head=product_prepare_head($product, $user); $head=product_prepare_head($product, $user);
$titre=$langs->trans("CardProduct".$product->type); $titre=$langs->trans("CardProduct".$product->type);
$picto=($product->type==1?'service':'product'); $picto=($product->type== Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'category', $titre,0,$picto); dol_fiche_head($head, 'category', $titre,0,$picto);

View File

@ -144,7 +144,7 @@ if (empty($reshook))
// Reopen a closed order // Reopen a closed order
else if ($action == 'reopen' && $user->rights->commande->creer) else if ($action == 'reopen' && $user->rights->commande->creer)
{ {
if ($object->statut == 3) if ($object->statut == Commande::STATUS_CLOSED)
{ {
$result = $object->set_reopen($user); $result = $object->set_reopen($user);
if ($result > 0) if ($result > 0)
@ -1810,7 +1810,7 @@ if ($action == 'create' && $user->rights->commande->creer)
$absolute_discount = price2num($absolute_discount, 'MT'); $absolute_discount = price2num($absolute_discount, 'MT');
$absolute_creditnote = price2num($absolute_creditnote, 'MT'); $absolute_creditnote = price2num($absolute_creditnote, 'MT');
if ($absolute_discount) { if ($absolute_discount) {
if ($object->statut > 0) { if ($object->statut > Commande::STATUS_DRAFT) {
print $langs->trans("CompanyHasAbsoluteDiscount", price($absolute_discount), $langs->transnoentities("Currency" . $conf->currency)); print $langs->trans("CompanyHasAbsoluteDiscount", price($absolute_discount), $langs->transnoentities("Currency" . $conf->currency));
} else { } else {
// Remise dispo de type remise fixe (not credit note) // Remise dispo de type remise fixe (not credit note)
@ -2105,7 +2105,7 @@ if ($action == 'create' && $user->rights->commande->creer)
<input type="hidden" name="id" value="' . $object->id . '"> <input type="hidden" name="id" value="' . $object->id . '">
'; ';
if (! empty($conf->use_javascript_ajax) && $object->statut == 0) { if (! empty($conf->use_javascript_ajax) && $object->statut == Commande::STATUS_DRAFT) {
include DOL_DOCUMENT_ROOT . '/core/tpl/ajaxrow.tpl.php'; include DOL_DOCUMENT_ROOT . '/core/tpl/ajaxrow.tpl.php';
} }
@ -2120,7 +2120,7 @@ if ($action == 'create' && $user->rights->commande->creer)
/* /*
* Form to add new line * Form to add new line
*/ */
if ($object->statut == 0 && $user->rights->commande->creer) if ($object->statut == Commande::STATUS_DRAFT && $user->rights->commande->creer)
{ {
if ($action != 'editline') if ($action != 'editline')
{ {
@ -2150,7 +2150,7 @@ if ($action == 'create' && $user->rights->commande->creer)
// modified by hook // modified by hook
if (empty($reshook)) { if (empty($reshook)) {
// Valid // Valid
if ($object->statut == 0 && $object->total_ttc >= 0 && $numlines > 0 && if ($object->statut == Commande::STATUS_DRAFT && $object->total_ttc >= 0 && $numlines > 0 &&
((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->creer)) ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->creer))
|| (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->validate))) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->validate)))
) )
@ -2158,7 +2158,7 @@ if ($action == 'create' && $user->rights->commande->creer)
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=validate">' . $langs->trans('Validate') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=validate">' . $langs->trans('Validate') . '</a></div>';
} }
// Edit // Edit
if ($object->statut == 1 && $user->rights->commande->creer) { if ($object->statut == Commande::STATUS_VALIDATED && $user->rights->commande->creer) {
print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id=' . $object->id . '&amp;action=modif">' . $langs->trans('Modify') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id=' . $object->id . '&amp;action=modif">' . $langs->trans('Modify') . '</a></div>';
} }
// Create event // Create event
@ -2169,7 +2169,7 @@ if ($action == 'create' && $user->rights->commande->creer)
print '<a class="butAction" href="' . DOL_URL_ROOT . '/comm/action/card.php?action=create&amp;origin=' . $object->element . '&amp;originid=' . $object->id . '&amp;socid=' . $object->socid . '">' . $langs->trans("AddAction") . '</a>'; print '<a class="butAction" href="' . DOL_URL_ROOT . '/comm/action/card.php?action=create&amp;origin=' . $object->element . '&amp;originid=' . $object->id . '&amp;socid=' . $object->socid . '">' . $langs->trans("AddAction") . '</a>';
} }
// Send // Send
if ($object->statut > 0) { if ($object->statut > Commande::STATUS_DRAFT) {
if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send)) { if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send)) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=presend&amp;mode=init">' . $langs->trans('SendByMail') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=presend&amp;mode=init">' . $langs->trans('SendByMail') . '</a></div>';
} else } else
@ -2181,7 +2181,7 @@ if ($action == 'create' && $user->rights->commande->creer)
if (! empty($conf->expedition->enabled)) { if (! empty($conf->expedition->enabled)) {
$numshipping = $object->nb_expedition(); $numshipping = $object->nb_expedition();
if ($object->statut > 0 && $object->statut < 3 && $object->getNbOfProductsLines() > 0) { if ($object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && $object->getNbOfProductsLines() > 0) {
if (($conf->expedition_bon->enabled && $user->rights->expedition->creer) || ($conf->livraison_bon->enabled && $user->rights->expedition->livraison->creer)) { if (($conf->expedition_bon->enabled && $user->rights->expedition->creer) || ($conf->livraison_bon->enabled && $user->rights->expedition->livraison->creer)) {
if ($user->rights->expedition->creer) { if ($user->rights->expedition->creer) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/expedition/shipment.php?id=' . $object->id . '">' . $langs->trans('ShipProduct') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/expedition/shipment.php?id=' . $object->id . '">' . $langs->trans('ShipProduct') . '</a></div>';
@ -2199,7 +2199,7 @@ if ($action == 'create' && $user->rights->commande->creer)
if ($conf->ficheinter->enabled) { if ($conf->ficheinter->enabled) {
$langs->load("interventions"); $langs->load("interventions");
if ($object->statut > 0 && $object->statut < 3 && $object->getNbOfServicesLines() > 0) { if ($object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && $object->getNbOfServicesLines() > 0) {
if ($user->rights->ficheinter->creer) { if ($user->rights->ficheinter->creer) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/fichinter/card.php?action=create&amp;origin=' . $object->element . '&amp;originid=' . $object->id . '&amp;socid=' . $object->socid . '">' . $langs->trans('AddIntervention') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/fichinter/card.php?action=create&amp;origin=' . $object->element . '&amp;originid=' . $object->id . '&amp;socid=' . $object->socid . '">' . $langs->trans('AddIntervention') . '</a></div>';
} else { } else {
@ -2209,12 +2209,12 @@ if ($action == 'create' && $user->rights->commande->creer)
} }
// Reopen a closed order // Reopen a closed order
if ($object->statut == 3 && $user->rights->commande->creer) { if ($object->statut == Commande::STATUS_CLOSED && $user->rights->commande->creer) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&amp;action=reopen">' . $langs->trans('ReOpen') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&amp;action=reopen">' . $langs->trans('ReOpen') . '</a></div>';
} }
// Create contract // Create contract
if ($conf->contrat->enabled && ($object->statut == 1 || $object->statut == 2)) { if ($conf->contrat->enabled && ($object->statut == Commande::STATUS_VALIDATED || $object->statut == Commande::STATUS_ACCEPTED)) {
$langs->load("contracts"); $langs->load("contracts");
if ($user->rights->contrat->creer) { if ($user->rights->contrat->creer) {
@ -2224,17 +2224,17 @@ if ($action == 'create' && $user->rights->commande->creer)
// Create bill and Classify billed // Create bill and Classify billed
// Note: Even if module invoice is not enabled, we should be able to use button "Classified billed" // Note: Even if module invoice is not enabled, we should be able to use button "Classified billed"
if ($object->statut > 0 && ! $object->billed) { if ($object->statut > Commande::STATUS_DRAFT && ! $object->billed) {
if (! empty($conf->facture->enabled) && $user->rights->facture->creer && empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) { if (! empty($conf->facture->enabled) && $user->rights->facture->creer && empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/compta/facture.php?action=create&amp;origin=' . $object->element . '&amp;originid=' . $object->id . '&amp;socid=' . $object->socid . '">' . $langs->trans("CreateBill") . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/compta/facture.php?action=create&amp;origin=' . $object->element . '&amp;originid=' . $object->id . '&amp;socid=' . $object->socid . '">' . $langs->trans("CreateBill") . '</a></div>';
} }
if ($user->rights->commande->creer && $object->statut > 2 && empty($conf->global->WORKFLOW_DISABLE_CLASSIFY_BILLED_FROM_ORDER) && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT)) { if ($user->rights->commande->creer && $object->statut > Commande::STATUS_ACCEPTED && empty($conf->global->WORKFLOW_DISABLE_CLASSIFY_BILLED_FROM_ORDER) && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT)) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=classifybilled">' . $langs->trans("ClassifyBilled") . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=classifybilled">' . $langs->trans("ClassifyBilled") . '</a></div>';
} }
} }
// Set to shipped // Set to shipped
if (($object->statut == 1 || $object->statut == 2) && $user->rights->commande->cloturer) { if (($object->statut == Commande::STATUS_VALIDATED || $object->statut == Commande::STATUS_ACCEPTED) && $user->rights->commande->cloturer) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=shipped">' . $langs->trans('ClassifyShipped') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=shipped">' . $langs->trans('ClassifyShipped') . '</a></div>';
} }
@ -2244,7 +2244,7 @@ if ($action == 'create' && $user->rights->commande->creer)
} }
// Cancel order // Cancel order
if ($object->statut == 1 && if ($object->statut == Commande::STATUS_VALIDATED &&
((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->cloturer)) ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->cloturer))
|| (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->annuler))) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->annuler)))
) )

View File

@ -60,10 +60,39 @@ class Commande extends CommonOrder
var $ref_int; var $ref_int;
var $contactid; var $contactid;
var $fk_project; var $fk_project;
var $statut; // -1=Canceled, 0=Draft, 1=Validated, (2=Accepted/On process not managed for customer orders), 3=Closed (Sent/Received, billed or not) /**
* Status of the order. Check the following constants:
* - STATUS_CANCELED
* - STATUS_DRAFT
* - STATUS_ACCEPTED
* - STATUS_CLOSED
* @var int
*/
var $statut;
var $facturee; // deprecated var $facturee; // deprecated
var $billed; // billed or not var $billed; // billed or not
/**
* Canceled status
*/
const STATUS_CANCELED = -1;
/**
* Draft status
*/
const STATUS_DRAFT = 0;
/**
* Validated status
*/
const STATUS_VALIDATED = 1;
/**
* Accepted/On process not managed for customer orders
*/
const STATUS_ACCEPTED = 2;
/**
* Closed (Sent/Received, billed or not)
*/
const STATUS_CLOSED = 3;
var $brouillon; var $brouillon;
var $cond_reglement_id; var $cond_reglement_id;
var $cond_reglement_code; var $cond_reglement_code;
@ -212,7 +241,7 @@ class Commande extends CommonOrder
$error=0; $error=0;
// Protection // Protection
if ($this->statut == 1) if ($this->statut == self::STATUS_VALIDATED)
{ {
dol_syslog(get_class($this)."::valid no draft status", LOG_WARNING); dol_syslog(get_class($this)."::valid no draft status", LOG_WARNING);
return 0; return 0;
@ -251,7 +280,7 @@ class Commande extends CommonOrder
// Validate // Validate
$sql = "UPDATE ".MAIN_DB_PREFIX."commande"; $sql = "UPDATE ".MAIN_DB_PREFIX."commande";
$sql.= " SET ref = '".$num."',"; $sql.= " SET ref = '".$num."',";
$sql.= " fk_statut = 1,"; $sql.= " fk_statut = ".self::STATUS_VALIDATED.",";
$sql.= " date_valid='".$this->db->idate($now)."',"; $sql.= " date_valid='".$this->db->idate($now)."',";
$sql.= " fk_user_valid = ".$user->id; $sql.= " fk_user_valid = ".$user->id;
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
@ -341,7 +370,7 @@ class Commande extends CommonOrder
if (! $error) if (! $error)
{ {
$this->ref = $num; $this->ref = $num;
$this->statut = 1; $this->statut = self::STATUS_VALIDATED;
} }
if (! $error) if (! $error)
@ -370,7 +399,7 @@ class Commande extends CommonOrder
$error=0; $error=0;
// Protection // Protection
if ($this->statut <= 0) if ($this->statut <= self::STATUS_DRAFT)
{ {
return 0; return 0;
} }
@ -385,7 +414,7 @@ class Commande extends CommonOrder
$this->db->begin(); $this->db->begin();
$sql = "UPDATE ".MAIN_DB_PREFIX."commande"; $sql = "UPDATE ".MAIN_DB_PREFIX."commande";
$sql.= " SET fk_statut = 0"; $sql.= " SET fk_statut = ".self::STATUS_DRAFT;
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
dol_syslog(get_class($this)."::set_draft", LOG_DEBUG); dol_syslog(get_class($this)."::set_draft", LOG_DEBUG);
@ -411,7 +440,7 @@ class Commande extends CommonOrder
if (!$error) if (!$error)
{ {
$this->statut=0; $this->statut=self::STATUS_DRAFT;
$this->db->commit(); $this->db->commit();
return $result; return $result;
} }
@ -423,7 +452,7 @@ class Commande extends CommonOrder
} }
} }
$this->statut=0; $this->statut=self::STATUS_DRAFT;
$this->db->commit(); $this->db->commit();
return 1; return 1;
} }
@ -448,7 +477,7 @@ class Commande extends CommonOrder
global $conf,$langs; global $conf,$langs;
$error=0; $error=0;
if ($this->statut != 3) if ($this->statut != self::STATUS_CLOSED)
{ {
dol_syslog(get_class($this)."::set_reopen order has not status closed", LOG_WARNING); dol_syslog(get_class($this)."::set_reopen order has not status closed", LOG_WARNING);
return 0; return 0;
@ -457,7 +486,7 @@ class Commande extends CommonOrder
$this->db->begin(); $this->db->begin();
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commande'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande';
$sql.= ' SET fk_statut=1, facture=0'; $sql.= ' SET fk_statut='.self::STATUS_VALIDATED.', facture=0';
$sql.= ' WHERE rowid = '.$this->id; $sql.= ' WHERE rowid = '.$this->id;
dol_syslog(get_class($this)."::set_reopen", LOG_DEBUG); dol_syslog(get_class($this)."::set_reopen", LOG_DEBUG);
@ -478,7 +507,7 @@ class Commande extends CommonOrder
if (! $error) if (! $error)
{ {
$this->statut = 1; $this->statut = self::STATUS_VALIDATED;
$this->billed = 0; $this->billed = 0;
$this->facturee = 0; // deprecated $this->facturee = 0; // deprecated
@ -517,10 +546,10 @@ class Commande extends CommonOrder
$now=dol_now(); $now=dol_now();
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commande'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande';
$sql.= ' SET fk_statut = 3,'; $sql.= ' SET fk_statut = '.self::STATUS_CLOSED.',';
$sql.= ' fk_user_cloture = '.$user->id.','; $sql.= ' fk_user_cloture = '.$user->id.',';
$sql.= " date_cloture = '".$this->db->idate($now)."'"; $sql.= " date_cloture = '".$this->db->idate($now)."'";
$sql.= ' WHERE rowid = '.$this->id.' AND fk_statut > 0'; $sql.= ' WHERE rowid = '.$this->id.' AND fk_statut > '.self::STATUS_DRAFT;
if ($this->db->query($sql)) if ($this->db->query($sql))
{ {
@ -531,7 +560,7 @@ class Commande extends CommonOrder
if (! $error) if (! $error)
{ {
$this->statut=3; $this->statut=self::STATUS_CLOSED;
$this->db->commit(); $this->db->commit();
return 1; return 1;
@ -568,9 +597,9 @@ class Commande extends CommonOrder
$this->db->begin(); $this->db->begin();
$sql = "UPDATE ".MAIN_DB_PREFIX."commande"; $sql = "UPDATE ".MAIN_DB_PREFIX."commande";
$sql.= " SET fk_statut = -1"; $sql.= " SET fk_statut = ".self::STATUS_CANCELED;
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
$sql.= " AND fk_statut = 1"; $sql.= " AND fk_statut = ".self::STATUS_VALIDATED;
dol_syslog(get_class($this)."::cancel", LOG_DEBUG); dol_syslog(get_class($this)."::cancel", LOG_DEBUG);
if ($this->db->query($sql)) if ($this->db->query($sql))
@ -609,7 +638,7 @@ class Commande extends CommonOrder
if (! $error) if (! $error)
{ {
$this->statut=-1; $this->statut=self::STATUS_CANCELED;
$this->db->commit(); $this->db->commit();
return 1; return 1;
} }
@ -933,7 +962,7 @@ class Commande extends CommonOrder
} }
$this->id=0; $this->id=0;
$this->statut=0; $this->statut=self::STATUS_DRAFT;
// Clear fields // Clear fields
$this->user_author_id = $user->id; $this->user_author_id = $user->id;
@ -1178,7 +1207,7 @@ class Commande extends CommonOrder
// Check parameters // Check parameters
if ($type < 0) return -1; if ($type < 0) return -1;
if ($this->statut == 0) if ($this->statut == self::STATUS_DRAFT)
{ {
$this->db->begin(); $this->db->begin();
@ -1494,7 +1523,7 @@ class Commande extends CommonOrder
$this->lines = array(); $this->lines = array();
if ($this->statut == 0) $this->brouillon = 1; if ($this->statut == self::STATUS_DRAFT) $this->brouillon = 1;
// Retreive all extrafield for invoice // Retreive all extrafield for invoice
// fetch optionals attributes and labels // fetch optionals attributes and labels
@ -1806,7 +1835,7 @@ class Commande extends CommonOrder
* *
* TODO deprecated, move to Shipping class * TODO deprecated, move to Shipping class
*/ */
function livraison_array($filtre_statut=-1) function livraison_array($filtre_statut=self::STATUS_CANCELED)
{ {
$delivery = new Livraison($this->db); $delivery = new Livraison($this->db);
$deliveryArray = $delivery->livraison_array($filtre_statut); $deliveryArray = $delivery->livraison_array($filtre_statut);
@ -1821,7 +1850,7 @@ class Commande extends CommonOrder
* *
* TODO FONCTION NON FINIE A FINIR * TODO FONCTION NON FINIE A FINIR
*/ */
function stock_array($filtre_statut=-1) function stock_array($filtre_statut=self::STATUS_CANCELED)
{ {
$this->stocks = array(); $this->stocks = array();
@ -1863,7 +1892,7 @@ class Commande extends CommonOrder
{ {
global $user; global $user;
if ($this->statut == 0) if ($this->statut == self::STATUS_DRAFT)
{ {
$this->db->begin(); $this->db->begin();
@ -1946,7 +1975,7 @@ class Commande extends CommonOrder
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commande'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande';
$sql.= ' SET remise_percent = '.$remise; $sql.= ' SET remise_percent = '.$remise;
$sql.= ' WHERE rowid = '.$this->id.' AND fk_statut = 0 ;'; $sql.= ' WHERE rowid = '.$this->id.' AND fk_statut = '.self::STATUS_DRAFT.' ;';
if ($this->db->query($sql)) if ($this->db->query($sql))
{ {
@ -1980,7 +2009,7 @@ class Commande extends CommonOrder
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commande'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande';
$sql.= ' SET remise_absolue = '.$remise; $sql.= ' SET remise_absolue = '.$remise;
$sql.= ' WHERE rowid = '.$this->id.' AND fk_statut = 0 ;'; $sql.= ' WHERE rowid = '.$this->id.' AND fk_statut = '.self::STATUS_DRAFT.' ;';
dol_syslog(get_class($this)."::set_remise_absolue", LOG_DEBUG); dol_syslog(get_class($this)."::set_remise_absolue", LOG_DEBUG);
@ -2012,7 +2041,7 @@ class Commande extends CommonOrder
{ {
$sql = "UPDATE ".MAIN_DB_PREFIX."commande"; $sql = "UPDATE ".MAIN_DB_PREFIX."commande";
$sql.= " SET date_commande = ".($date ? $this->db->idate($date) : 'null'); $sql.= " SET date_commande = ".($date ? $this->db->idate($date) : 'null');
$sql.= " WHERE rowid = ".$this->id." AND fk_statut = 0"; $sql.= " WHERE rowid = ".$this->id." AND fk_statut = ".self::STATUS_DRAFT;
dol_syslog(get_class($this)."::set_date",LOG_DEBUG); dol_syslog(get_class($this)."::set_date",LOG_DEBUG);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
@ -2156,7 +2185,7 @@ class Commande extends CommonOrder
$sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
} }
if ($socid) $sql.= " AND s.rowid = ".$socid; if ($socid) $sql.= " AND s.rowid = ".$socid;
if ($draft) $sql.= " AND c.fk_statut = 0"; if ($draft) $sql.= " AND c.fk_statut = ".self::STATUS_DRAFT;
if (is_object($excluser)) $sql.= " AND c.fk_user_author <> ".$excluser->id; if (is_object($excluser)) $sql.= " AND c.fk_user_author <> ".$excluser->id;
$sql.= $this->db->order($sortfield,$sortorder); $sql.= $this->db->order($sortfield,$sortorder);
$sql.= $this->db->plimit($limit,$offset); $sql.= $this->db->plimit($limit,$offset);
@ -2207,7 +2236,7 @@ class Commande extends CommonOrder
function availability($availability_id) function availability($availability_id)
{ {
dol_syslog('Commande::availability('.$availability_id.')'); dol_syslog('Commande::availability('.$availability_id.')');
if ($this->statut >= 0) if ($this->statut >= self::STATUS_DRAFT)
{ {
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commande'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande';
$sql .= ' SET fk_availability = '.$availability_id; $sql .= ' SET fk_availability = '.$availability_id;
@ -2241,7 +2270,7 @@ class Commande extends CommonOrder
function demand_reason($demand_reason_id) function demand_reason($demand_reason_id)
{ {
dol_syslog('Commande::demand_reason('.$demand_reason_id.')'); dol_syslog('Commande::demand_reason('.$demand_reason_id.')');
if ($this->statut >= 0) if ($this->statut >= self::STATUS_DRAFT)
{ {
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commande'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande';
$sql .= ' SET fk_input_reason = '.$demand_reason_id; $sql .= ' SET fk_input_reason = '.$demand_reason_id;
@ -2312,7 +2341,7 @@ class Commande extends CommonOrder
$this->db->begin(); $this->db->begin();
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commande SET facture = 1'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande SET facture = 1';
$sql.= ' WHERE rowid = '.$this->id.' AND fk_statut > 0'; $sql.= ' WHERE rowid = '.$this->id.' AND fk_statut > '.self::STATUS_DRAFT;
dol_syslog(get_class($this)."::classifyBilled", LOG_DEBUG); dol_syslog(get_class($this)."::classifyBilled", LOG_DEBUG);
if ($this->db->query($sql)) if ($this->db->query($sql))
@ -2790,7 +2819,7 @@ class Commande extends CommonOrder
} }
$sql.= $clause." c.entity = ".$conf->entity; $sql.= $clause." c.entity = ".$conf->entity;
//$sql.= " AND c.fk_statut IN (1,2,3) AND c.facture = 0"; //$sql.= " AND c.fk_statut IN (1,2,3) AND c.facture = 0";
$sql.= " AND ((c.fk_statut IN (1,2)) OR (c.fk_statut = 3 AND c.facture = 0))"; // If status is 2 and facture=1, it must be selected $sql.= " AND ((c.fk_statut IN (".self::STATUS_VALIDATED.",".self::STATUS_ACCEPTED.")) OR (c.fk_statut = ".self::STATUS_CLOSED." AND c.facture = 0))"; // If status is 2 and facture=1, it must be selected
if ($user->societe_id) $sql.=" AND c.fk_soc = ".$user->societe_id; if ($user->societe_id) $sql.=" AND c.fk_soc = ".$user->societe_id;
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
@ -2864,57 +2893,57 @@ class Commande extends CommonOrder
//print 'x'.$statut.'-'.$billed; //print 'x'.$statut.'-'.$billed;
if ($mode == 0) if ($mode == 0)
{ {
if ($statut==-1) return $langs->trans('StatusOrderCanceled'); if ($statut==self::STATUS_CANCELED) return $langs->trans('StatusOrderCanceled');
if ($statut==0) return $langs->trans('StatusOrderDraft'); if ($statut==self::STATUS_DRAFT) return $langs->trans('StatusOrderDraft');
if ($statut==1) return $langs->trans('StatusOrderValidated'); if ($statut==self::STATUS_VALIDATED) return $langs->trans('StatusOrderValidated');
if ($statut==2) return $langs->trans('StatusOrderSentShort'); if ($statut==self::STATUS_ACCEPTED) return $langs->trans('StatusOrderSentShort');
if ($statut==3 && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderToBill'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderToBill');
if ($statut==3 && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed'); if ($statut==self::STATUS_CLOSED && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed');
} }
elseif ($mode == 1) elseif ($mode == 1)
{ {
if ($statut==-1) return $langs->trans('StatusOrderCanceledShort'); if ($statut==self::STATUS_CANCELED) return $langs->trans('StatusOrderCanceledShort');
if ($statut==0) return $langs->trans('StatusOrderDraftShort'); if ($statut==self::STATUS_DRAFT) return $langs->trans('StatusOrderDraftShort');
if ($statut==1) return $langs->trans('StatusOrderValidatedShort'); if ($statut==self::STATUS_VALIDATED) return $langs->trans('StatusOrderValidatedShort');
if ($statut==2) return $langs->trans('StatusOrderSentShort'); if ($statut==self::STATUS_ACCEPTED) return $langs->trans('StatusOrderSentShort');
if ($statut==3 && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderToBillShort'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderToBillShort');
if ($statut==3 && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed'); if ($statut==self::STATUS_CLOSED && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed');
} }
elseif ($mode == 2) elseif ($mode == 2)
{ {
if ($statut==-1) return img_picto($langs->trans('StatusOrderCanceled'),'statut5').' '.$langs->trans('StatusOrderCanceledShort'); if ($statut==self::STATUS_CANCELED) return img_picto($langs->trans('StatusOrderCanceled'),'statut5').' '.$langs->trans('StatusOrderCanceledShort');
if ($statut==0) return img_picto($langs->trans('StatusOrderDraft'),'statut0').' '.$langs->trans('StatusOrderDraftShort'); if ($statut==self::STATUS_DRAFT) return img_picto($langs->trans('StatusOrderDraft'),'statut0').' '.$langs->trans('StatusOrderDraftShort');
if ($statut==1) return img_picto($langs->trans('StatusOrderValidated'),'statut1').' '.$langs->trans('StatusOrderValidatedShort'); if ($statut==self::STATUS_VALIDATED) return img_picto($langs->trans('StatusOrderValidated'),'statut1').' '.$langs->trans('StatusOrderValidatedShort');
if ($statut==2) return img_picto($langs->trans('StatusOrderSent'),'statut3').' '.$langs->trans('StatusOrderSentShort'); if ($statut==self::STATUS_ACCEPTED) return img_picto($langs->trans('StatusOrderSent'),'statut3').' '.$langs->trans('StatusOrderSentShort');
if ($statut==3 && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill'),'statut7').' '.$langs->trans('StatusOrderToBillShort'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill'),'statut7').' '.$langs->trans('StatusOrderToBillShort');
if ($statut==3 && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6').' '.$langs->trans('StatusOrderProcessedShort'); if ($statut==self::STATUS_CLOSED && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6').' '.$langs->trans('StatusOrderProcessedShort');
} }
elseif ($mode == 3) elseif ($mode == 3)
{ {
if ($statut==-1) return img_picto($langs->trans('StatusOrderCanceled'),'statut5'); if ($statut==self::STATUS_CANCELED) return img_picto($langs->trans('StatusOrderCanceled'),'statut5');
if ($statut==0) return img_picto($langs->trans('StatusOrderDraft'),'statut0'); if ($statut==self::STATUS_DRAFT) return img_picto($langs->trans('StatusOrderDraft'),'statut0');
if ($statut==1) return img_picto($langs->trans('StatusOrderValidated'),'statut1'); if ($statut==self::STATUS_VALIDATED) return img_picto($langs->trans('StatusOrderValidated'),'statut1');
if ($statut==2) return img_picto($langs->trans('StatusOrderSentShort'),'statut3'); if ($statut==self::STATUS_ACCEPTED) return img_picto($langs->trans('StatusOrderSentShort'),'statut3');
if ($statut==3 && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill'),'statut7'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill'),'statut7');
if ($statut==3 && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6'); if ($statut==self::STATUS_CLOSED && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6');
} }
elseif ($mode == 4) elseif ($mode == 4)
{ {
if ($statut==-1) return img_picto($langs->trans('StatusOrderCanceled'),'statut5').' '.$langs->trans('StatusOrderCanceled'); if ($statut==self::STATUS_CANCELED) return img_picto($langs->trans('StatusOrderCanceled'),'statut5').' '.$langs->trans('StatusOrderCanceled');
if ($statut==0) return img_picto($langs->trans('StatusOrderDraft'),'statut0').' '.$langs->trans('StatusOrderDraft'); if ($statut==self::STATUS_DRAFT) return img_picto($langs->trans('StatusOrderDraft'),'statut0').' '.$langs->trans('StatusOrderDraft');
if ($statut==1) return img_picto($langs->trans('StatusOrderValidated'),'statut1').' '.$langs->trans('StatusOrderValidated'); if ($statut==self::STATUS_VALIDATED) return img_picto($langs->trans('StatusOrderValidated'),'statut1').' '.$langs->trans('StatusOrderValidated');
if ($statut==2) return img_picto($langs->trans('StatusOrderSentShort'),'statut3').' '.$langs->trans('StatusOrderSent'); if ($statut==self::STATUS_ACCEPTED) return img_picto($langs->trans('StatusOrderSentShort'),'statut3').' '.$langs->trans('StatusOrderSent');
if ($statut==3 && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill'),'statut7').' '.$langs->trans('StatusOrderToBill'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill'),'statut7').' '.$langs->trans('StatusOrderToBill');
if ($statut==3 && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6').' '.$langs->trans('StatusOrderProcessed'); if ($statut==self::STATUS_CLOSED && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6').' '.$langs->trans('StatusOrderProcessed');
} }
elseif ($mode == 5) elseif ($mode == 5)
{ {
if ($statut==-1) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderCanceledShort').' </span>'.img_picto($langs->trans('StatusOrderCanceled'),'statut5'); if ($statut==self::STATUS_CANCELED) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderCanceledShort').' </span>'.img_picto($langs->trans('StatusOrderCanceled'),'statut5');
if ($statut==0) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderDraftShort').' </span>'.img_picto($langs->trans('StatusOrderDraft'),'statut0'); if ($statut==self::STATUS_DRAFT) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderDraftShort').' </span>'.img_picto($langs->trans('StatusOrderDraft'),'statut0');
if ($statut==1) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderValidatedShort').' </span>'.img_picto($langs->trans('StatusOrderValidated'),'statut1'); if ($statut==self::STATUS_VALIDATED) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderValidatedShort').' </span>'.img_picto($langs->trans('StatusOrderValidated'),'statut1');
if ($statut==2) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderSentShort').' </span>'.img_picto($langs->trans('StatusOrderSent'),'statut3'); if ($statut==self::STATUS_ACCEPTED) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderSentShort').' </span>'.img_picto($langs->trans('StatusOrderSent'),'statut3');
if ($statut==3 && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderToBillShort').' </span>'.img_picto($langs->trans('StatusOrderToBill'),'statut7'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderToBillShort').' </span>'.img_picto($langs->trans('StatusOrderToBill'),'statut7');
if ($statut==3 && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderProcessedShort').' </span>'.img_picto($langs->trans('StatusOrderProcessed'),'statut6'); if ($statut==self::STATUS_CLOSED && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderProcessedShort').' </span>'.img_picto($langs->trans('StatusOrderProcessed'),'statut6');
} }
} }

View File

@ -147,16 +147,16 @@ if ($id > 0 || ! empty($ref))
if ($absolute_discount > 0) if ($absolute_discount > 0)
{ {
print '. '; print '. ';
if ($object->statut > 0 || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT) if ($object->statut > Facture::STATUS_DRAFT || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT)
{ {
if ($object->statut == 0) if ($object->statut == Facture::STATUS_DRAFT)
{ {
print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency)); print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency));
print '. '; print '. ';
} }
else else
{ {
if ($object->statut < 1 || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT) if ($object->statut < Facture::STATUS_VALIDATED || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT)
{ {
$text=$langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency)); $text=$langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency));
print '<br>'.$text.'.<br>'; print '<br>'.$text.'.<br>';
@ -181,7 +181,7 @@ if ($id > 0 || ! empty($ref))
{ {
if ($absolute_creditnote > 0) // If not linked will be added later if ($absolute_creditnote > 0) // If not linked will be added later
{ {
if ($object->statut == 0 && $object->type != Facture::TYPE_CREDIT_NOTE && $object->type != Facture::TYPE_DEPOSIT) print ' - '.$addabsolutediscount.'<br>'; if ($object->statut == Facture::STATUS_DRAFT && $object->type != Facture::TYPE_CREDIT_NOTE && $object->type != Facture::TYPE_DEPOSIT) print ' - '.$addabsolutediscount.'<br>';
else print '.'; else print '.';
} }
else print '. '; else print '. ';
@ -189,9 +189,9 @@ if ($id > 0 || ! empty($ref))
if ($absolute_creditnote > 0) if ($absolute_creditnote > 0)
{ {
// If validated, we show link "add credit note to payment" // If validated, we show link "add credit note to payment"
if ($object->statut != 1 || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT) if ($object->statut != Facture::STATUS_VALIDATED || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT)
{ {
if ($object->statut == 0 && $object->type != Facture::TYPE_DEPOSIT) if ($object->statut == Facture::STATUS_DRAFT && $object->type != Facture::TYPE_DEPOSIT)
{ {
$text=$langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency)); $text=$langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency));
print $form->textwithpicto($text,$langs->trans("CreditNoteDepositUse")); print $form->textwithpicto($text,$langs->trans("CreditNoteDepositUse"));
@ -212,7 +212,7 @@ if ($id > 0 || ! empty($ref))
if (! $absolute_discount && ! $absolute_creditnote) if (! $absolute_discount && ! $absolute_creditnote)
{ {
print $langs->trans("CompanyHasNoAbsoluteDiscount"); print $langs->trans("CompanyHasNoAbsoluteDiscount");
if ($object->statut == 0 && $object->type != Facture::TYPE_CREDIT_NOTE && $object->type != Facture::TYPE_DEPOSIT) print ' - '.$addabsolutediscount.'<br>'; if ($object->statut == Facture::STATUS_DRAFT && $object->type != Facture::TYPE_CREDIT_NOTE && $object->type != Facture::TYPE_DEPOSIT) print ' - '.$addabsolutediscount.'<br>';
else print '. '; else print '. ';
} }
/*if ($object->statut == 0 && $object->type != 2 && $object->type != 3) /*if ($object->statut == 0 && $object->type != 2 && $object->type != 3)

View File

@ -260,7 +260,7 @@ class FactureRec extends Facture
$this->rang = $obj->rang; $this->rang = $obj->rang;
$this->special_code = $obj->special_code; $this->special_code = $obj->special_code;
if ($this->statut == 0) $this->brouillon = 1; if ($this->statut == self::STATUS_DRAFT) $this->brouillon = 1;
/* /*
* Lines * Lines

View File

@ -95,10 +95,15 @@ class Facture extends CommonInvoice
var $note; var $note;
var $note_private; var $note_private;
var $note_public; var $note_public;
//! 0=draft,
//! 1=validated (need to be paid), /**
//! 2=classified paid partially (close_code='discount_vat','badcustomer') or completely (close_code=null), * Check constants for more info:
//! 3=classified abandoned and no payment done (close_code='badcustomer','abandon' or 'replaced') * - STATUS_DRAFT
* - STATUS_VALIDATED
* - STATUS_PAID
* - STATUS_ABANDONED
* @var int
*/
var $statut; var $statut;
//! Fermeture apres paiement partiel: discount_vat, badcustomer, abandon //! Fermeture apres paiement partiel: discount_vat, badcustomer, abandon
//! Fermeture alors que aucun paiement: replaced (si remplace), abandon //! Fermeture alors que aucun paiement: replaced (si remplace), abandon
@ -182,6 +187,39 @@ class Facture extends CommonInvoice
*/ */
const TYPE_SITUATION = 5; const TYPE_SITUATION = 5;
/**
* Draft
*/
const STATUS_DRAFT = 0;
/**
* Validated (need to be paid)
*/
const STATUS_VALIDATED = 1;
/**
* Classified paid.
* If paid partially, $this->close_code can be:
* - CLOSECODE_DISCOUNTVAT
* - CLOSECODE_BADDEBT
* If paid completelly, this->close_code will be null
*/
const STATUS_CLOSED = 2;
/**
* Classified abandoned and no payment done.
* $this->close_code can be:
* - CLOSECODE_BADDEBT
* - CLOSECODE_ABANDONED
* - CLOSECODE_REPLACED
*/
const STATUS_ABANDONED = 3;
const CLOSECODE_DISCOUNTVAT = 'discount_vat';
const CLOSECODE_BADDEBT = 'badcustomer';
const CLOSECODE_ABANDONED = 'abandon';
const CLOSECODE_REPLACED = 'replaced';
/** /**
* Constructor * Constructor
* *
@ -680,7 +718,7 @@ class Facture extends CommonInvoice
} }
$this->id=0; $this->id=0;
$this->statut=0; $this->statut= self::STATUS_DRAFT;
// Clear fields // Clear fields
$this->date = dol_now(); // Date of invoice is set to current date when cloning. // TODO Best is to ask date into confirm box $this->date = dol_now(); // Date of invoice is set to current date when cloning. // TODO Best is to ask date into confirm box
@ -1005,7 +1043,7 @@ class Facture extends CommonInvoice
$this->location_incoterms = $obj->location_incoterms; $this->location_incoterms = $obj->location_incoterms;
$this->libelle_incoterms = $obj->libelle_incoterms; $this->libelle_incoterms = $obj->libelle_incoterms;
if ($this->statut == 0) $this->brouillon = 1; if ($this->statut == self::STATUS_DRAFT) $this->brouillon = 1;
// Retreive all extrafield for invoice // Retreive all extrafield for invoice
// fetch optionals attributes and labels // fetch optionals attributes and labels
@ -1542,7 +1580,7 @@ class Facture extends CommonInvoice
dol_syslog(get_class($this)."::set_paid rowid=".$this->id, LOG_DEBUG); dol_syslog(get_class($this)."::set_paid rowid=".$this->id, LOG_DEBUG);
$sql = 'UPDATE '.MAIN_DB_PREFIX.'facture SET'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture SET';
$sql.= ' fk_statut=2'; $sql.= ' fk_statut='.self::STATUS_CLOSED;
if (! $close_code) $sql.= ', paye=1'; if (! $close_code) $sql.= ', paye=1';
if ($close_code) $sql.= ", close_code='".$this->db->escape($close_code)."'"; if ($close_code) $sql.= ", close_code='".$this->db->escape($close_code)."'";
if ($close_note) $sql.= ", close_note='".$this->db->escape($close_note)."'"; if ($close_note) $sql.= ", close_note='".$this->db->escape($close_note)."'";
@ -1597,7 +1635,7 @@ class Facture extends CommonInvoice
$this->db->begin(); $this->db->begin();
$sql = 'UPDATE '.MAIN_DB_PREFIX.'facture'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture';
$sql.= ' SET paye=0, fk_statut=1, close_code=null, close_note=null'; $sql.= ' SET paye=0, fk_statut='.self::STATUS_VALIDATED.', close_code=null, close_note=null';
$sql.= ' WHERE rowid = '.$this->id; $sql.= ' WHERE rowid = '.$this->id;
dol_syslog(get_class($this)."::set_unpaid", LOG_DEBUG); dol_syslog(get_class($this)."::set_unpaid", LOG_DEBUG);
@ -1650,7 +1688,7 @@ class Facture extends CommonInvoice
$this->db->begin(); $this->db->begin();
$sql = 'UPDATE '.MAIN_DB_PREFIX.'facture SET'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture SET';
$sql.= ' fk_statut=3'; $sql.= ' fk_statut='.self::STATUS_ABANDONED;
if ($close_code) $sql.= ", close_code='".$this->db->escape($close_code)."'"; if ($close_code) $sql.= ", close_code='".$this->db->escape($close_code)."'";
if ($close_note) $sql.= ", close_note='".$this->db->escape($close_note)."'"; if ($close_note) $sql.= ", close_note='".$this->db->escape($close_note)."'";
$sql.= ' WHERE rowid = '.$this->id; $sql.= ' WHERE rowid = '.$this->id;
@ -1801,7 +1839,7 @@ class Facture extends CommonInvoice
// Validate // Validate
$sql = 'UPDATE '.MAIN_DB_PREFIX.'facture'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture';
$sql.= " SET facnumber='".$num."', fk_statut = 1, fk_user_valid = ".$user->id.", date_valid = '".$this->db->idate($now)."'"; $sql.= " SET facnumber='".$num."', fk_statut = ".self::STATUS_VALIDATED.", fk_user_valid = ".$user->id.", date_valid = '".$this->db->idate($now)."'";
if (! empty($conf->global->FAC_FORCE_DATE_VALIDATION)) // If option enabled, we force invoice date if (! empty($conf->global->FAC_FORCE_DATE_VALIDATION)) // If option enabled, we force invoice date
{ {
$sql.= ", datef='".$this->db->idate($this->date)."'"; $sql.= ", datef='".$this->db->idate($this->date)."'";
@ -1902,7 +1940,7 @@ class Facture extends CommonInvoice
{ {
$this->ref = $num; $this->ref = $num;
$this->facnumber=$num; $this->facnumber=$num;
$this->statut=1; $this->statut= self::STATUS_VALIDATED;
$this->brouillon=0; $this->brouillon=0;
$this->date_validation=$now; $this->date_validation=$now;
$i = 0; $i = 0;
@ -1946,7 +1984,7 @@ class Facture extends CommonInvoice
$error=0; $error=0;
if ($this->statut == 0) if ($this->statut == self::STATUS_DRAFT)
{ {
dol_syslog(get_class($this)."::set_draft already draft status", LOG_WARNING); dol_syslog(get_class($this)."::set_draft already draft status", LOG_WARNING);
return 0; return 0;
@ -1955,7 +1993,7 @@ class Facture extends CommonInvoice
$this->db->begin(); $this->db->begin();
$sql = "UPDATE ".MAIN_DB_PREFIX."facture"; $sql = "UPDATE ".MAIN_DB_PREFIX."facture";
$sql.= " SET fk_statut = 0"; $sql.= " SET fk_statut = ".self::STATUS_DRAFT;
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
dol_syslog(get_class($this)."::set_draft", LOG_DEBUG); dol_syslog(get_class($this)."::set_draft", LOG_DEBUG);
@ -1986,7 +2024,7 @@ class Facture extends CommonInvoice
{ {
$old_statut=$this->statut; $old_statut=$this->statut;
$this->brouillon = 1; $this->brouillon = 1;
$this->statut = 0; $this->statut = self::STATUS_DRAFT;
// Call trigger // Call trigger
$result=$this->call_trigger('BILL_UNVALIDATE',$user); $result=$this->call_trigger('BILL_UNVALIDATE',$user);
if ($result < 0) if ($result < 0)
@ -2478,7 +2516,7 @@ class Facture extends CommonInvoice
$sql = 'UPDATE '.MAIN_DB_PREFIX.'facture'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture';
$sql.= ' SET remise_percent = '.$remise; $sql.= ' SET remise_percent = '.$remise;
$sql.= ' WHERE rowid = '.$this->id; $sql.= ' WHERE rowid = '.$this->id;
$sql.= ' AND fk_statut = 0'; $sql.= ' AND fk_statut = '.self::STATUS_DRAFT;
if ($this->db->query($sql)) if ($this->db->query($sql))
{ {
@ -2513,7 +2551,7 @@ class Facture extends CommonInvoice
$sql = 'UPDATE '.MAIN_DB_PREFIX.'facture'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture';
$sql.= ' SET remise_absolue = '.$remise; $sql.= ' SET remise_absolue = '.$remise;
$sql.= ' WHERE rowid = '.$this->id; $sql.= ' WHERE rowid = '.$this->id;
$sql.= ' AND fk_statut = 0'; $sql.= ' AND fk_statut = '.self::STATUS_DRAFT;
dol_syslog(get_class($this)."::set_remise_absolue", LOG_DEBUG); dol_syslog(get_class($this)."::set_remise_absolue", LOG_DEBUG);
@ -2813,7 +2851,7 @@ class Facture extends CommonInvoice
return $last; return $last;
} }
} }
else if ($this->statut == 0 && $facref == 'PROV') // Si facture brouillon et provisoire else if ($this->statut == self::STATUS_DRAFT && $facref == 'PROV') // Si facture brouillon et provisoire
{ {
return 1; return 1;
} }
@ -2853,7 +2891,7 @@ class Facture extends CommonInvoice
$sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
} }
if ($socid) $sql.= " AND s.rowid = ".$socid; if ($socid) $sql.= " AND s.rowid = ".$socid;
if ($draft) $sql.= " AND f.fk_statut = 0"; if ($draft) $sql.= " AND f.fk_statut = ".self::STATUS_DRAFT;
if (is_object($excluser)) $sql.= " AND f.fk_user_author <> ".$excluser->id; if (is_object($excluser)) $sql.= " AND f.fk_user_author <> ".$excluser->id;
$sql.= $this->db->order($sortfield,$sortorder); $sql.= $this->db->order($sortfield,$sortorder);
$sql.= $this->db->plimit($limit,$offset); $sql.= $this->db->plimit($limit,$offset);
@ -2914,7 +2952,7 @@ class Facture extends CommonInvoice
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f"; $sql.= " FROM ".MAIN_DB_PREFIX."facture as f";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid = pf.fk_facture"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid = pf.fk_facture";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture as ff ON f.rowid = ff.fk_facture_source"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture as ff ON f.rowid = ff.fk_facture_source";
$sql.= " WHERE (f.fk_statut = 1 OR (f.fk_statut = 3 AND f.close_code = 'abandon'))"; $sql.= " WHERE (f.fk_statut = ".self::STATUS_VALIDATED." OR (f.fk_statut = ".self::STATUS_ABANDONED." AND f.close_code = '".self::CLOSECODE_ABANDONED."'))";
$sql.= " AND f.entity = ".$conf->entity; $sql.= " AND f.entity = ".$conf->entity;
$sql.= " AND f.paye = 0"; // Pas classee payee completement $sql.= " AND f.paye = 0"; // Pas classee payee completement
$sql.= " AND pf.fk_paiement IS NULL"; // Aucun paiement deja fait $sql.= " AND pf.fk_paiement IS NULL"; // Aucun paiement deja fait
@ -2962,7 +3000,7 @@ class Facture extends CommonInvoice
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid = pf.fk_facture"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid = pf.fk_facture";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture as ff ON (f.rowid = ff.fk_facture_source AND ff.type=".self::TYPE_REPLACEMENT.")"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture as ff ON (f.rowid = ff.fk_facture_source AND ff.type=".self::TYPE_REPLACEMENT.")";
$sql.= " WHERE f.entity = ".$conf->entity; $sql.= " WHERE f.entity = ".$conf->entity;
$sql.= " AND f.fk_statut in (1,2)"; $sql.= " AND f.fk_statut in (".self::STATUS_VALIDATED.",".self::STATUS_CLOSED.")";
// $sql.= " WHERE f.fk_statut >= 1"; // $sql.= " WHERE f.fk_statut >= 1";
// $sql.= " AND (f.paye = 1"; // Classee payee completement // $sql.= " AND (f.paye = 1"; // Classee payee completement
// $sql.= " OR f.close_code IS NOT NULL)"; // Classee payee partiellement // $sql.= " OR f.close_code IS NOT NULL)"; // Classee payee partiellement
@ -2978,8 +3016,8 @@ class Facture extends CommonInvoice
while ($obj=$this->db->fetch_object($resql)) while ($obj=$this->db->fetch_object($resql))
{ {
$qualified=0; $qualified=0;
if ($obj->fk_statut == 1) $qualified=1; if ($obj->fk_statut == self::STATUS_VALIDATED) $qualified=1;
if ($obj->fk_statut == 2) $qualified=1; if ($obj->fk_statut == self::STATUS_CLOSED) $qualified=1;
if ($qualified) if ($qualified)
{ {
//$ref=$obj->facnumber; //$ref=$obj->facnumber;
@ -3010,7 +3048,7 @@ class Facture extends CommonInvoice
dol_syslog(get_class($this)."::demande_prelevement", LOG_DEBUG); dol_syslog(get_class($this)."::demande_prelevement", LOG_DEBUG);
if ($this->statut > 0 && $this->paye == 0) if ($this->statut > self::STATUS_DRAFT && $this->paye == 0)
{ {
require_once DOL_DOCUMENT_ROOT . '/societe/class/companybankaccount.class.php'; require_once DOL_DOCUMENT_ROOT . '/societe/class/companybankaccount.class.php';
$bac = new CompanyBankAccount($this->db); $bac = new CompanyBankAccount($this->db);
@ -3143,7 +3181,7 @@ class Facture extends CommonInvoice
} }
$sql.= $clause." f.paye=0"; $sql.= $clause." f.paye=0";
$sql.= " AND f.entity = ".$conf->entity; $sql.= " AND f.entity = ".$conf->entity;
$sql.= " AND f.fk_statut = 1"; $sql.= " AND f.fk_statut = ".self::STATUS_VALIDATED;
if ($user->societe_id) $sql.= " AND f.fk_soc = ".$user->societe_id; if ($user->societe_id) $sql.= " AND f.fk_soc = ".$user->societe_id;
$resql=$this->db->query($sql); $resql=$this->db->query($sql);

View File

@ -523,12 +523,12 @@ else
*/ */
print '<div class="tabsAction">'; print '<div class="tabsAction">';
if ($object->statut == 0 && $user->rights->facture->creer) if ($object->statut == Facture::STATUS_DRAFT && $user->rights->facture->creer)
{ {
echo '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/compta/facture.php?action=create&amp;socid='.$object->thirdparty->id.'&amp;fac_rec='.$object->id.'">'.$langs->trans("CreateBill").'</a></div>'; echo '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/compta/facture.php?action=create&amp;socid='.$object->thirdparty->id.'&amp;fac_rec='.$object->id.'">'.$langs->trans("CreateBill").'</a></div>';
} }
if ($object->statut == 0 && $user->rights->facture->supprimer) if ($object->statut == Facture::STATUS_DRAFT && $user->rights->facture->supprimer)
{ {
print '<div class="inline-block divButAction"><a class="butActionDelete" href="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a></div>'; print '<div class="inline-block divButAction"><a class="butActionDelete" href="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a></div>';
} }

View File

@ -95,7 +95,7 @@ if ($action == 'presend' && GETPOST('sendmail'))
if ($result > 0) // Invoice was found if ($result > 0) // Invoice was found
{ {
if ($object->statut != 1) if ($object->statut != Facture::STATUS_VALIDATED)
{ {
continue; // Payment done or started or canceled continue; // Payment done or started or canceled
} }

View File

@ -229,15 +229,15 @@ if ($object->id > 0)
print '. '; print '. ';
if ($absolute_discount > 0) if ($absolute_discount > 0)
{ {
if ($object->statut > 0 || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT) if ($object->statut > Facture::STATUS_DRAFT || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT)
{ {
if ($object->statut == 0) if ($object->statut == Facture::STATUS_DRAFT)
{ {
print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency)).'. '; print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency)).'. ';
} }
else else
{ {
if ($object->statut < 1 || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT) if ($object->statut < Facture::STATUS_VALIDATED || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT)
{ {
$text=$langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency)); $text=$langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency));
print '<br>'.$text.'.<br>'; print '<br>'.$text.'.<br>';
@ -261,9 +261,9 @@ if ($object->id > 0)
if ($absolute_creditnote > 0) if ($absolute_creditnote > 0)
{ {
// If validated, we show link "add credit note to payment" // If validated, we show link "add credit note to payment"
if ($object->statut != 1 || $object->type == Facture::TYPE_DEPOSIT || $object->type == Facture::TYPE_CREDIT_NOTE) if ($object->statut != Facture::STATUS_VALIDATED || $object->type == Facture::TYPE_DEPOSIT || $object->type == Facture::TYPE_CREDIT_NOTE)
{ {
if ($object->statut == 0 && $object->type != Facture::TYPE_DEPOSIT) if ($object->statut == Facture::STATUS_DRAFT && $object->type != Facture::TYPE_DEPOSIT)
{ {
$text=$langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency)); $text=$langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency));
print $form->textwithpicto($text,$langs->trans("CreditNoteDepositUse")); print $form->textwithpicto($text,$langs->trans("CreditNoteDepositUse"));
@ -350,7 +350,7 @@ if ($object->id > 0)
else else
{ {
print dol_print_date($object->date_lim_reglement,'daytext'); print dol_print_date($object->date_lim_reglement,'daytext');
if ($object->date_lim_reglement < ($now - $conf->facture->client->warning_delay) && ! $object->paye && $object->statut == 1 && ! isset($object->am)) print img_warning($langs->trans('Late')); if ($object->date_lim_reglement < ($now - $conf->facture->client->warning_delay) && ! $object->paye && $object->statut == Facture::STATUS_VALIDATED && ! isset($object->am)) print img_warning($langs->trans('Late'));
} }
} }
else else
@ -473,7 +473,7 @@ if ($object->id > 0)
print "\n<div class=\"tabsAction\">\n"; print "\n<div class=\"tabsAction\">\n";
// Add a withdraw request // Add a withdraw request
if ($object->statut > 0 && $object->paye == 0 && $num == 0) if ($object->statut > Facture::STATUS_DRAFT && $object->paye == 0 && $num == 0)
{ {
if ($user->rights->prelevement->bons->creer) if ($user->rights->prelevement->bons->creer)
{ {
@ -488,7 +488,7 @@ if ($object->id > 0)
{ {
if ($num == 0) if ($num == 0)
{ {
if ($object->statut > 0) print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("AlreadyPayed")).'">'.$langs->trans("MakeWithdrawRequest").'</a>'; if ($object->statut > Facture::STATUS_DRAFT) print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("AlreadyPayed")).'">'.$langs->trans("MakeWithdrawRequest").'</a>';
else print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("Draft")).'">'.$langs->trans("MakeWithdrawRequest").'</a>'; else print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("Draft")).'">'.$langs->trans("MakeWithdrawRequest").'</a>';
} }
else print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("RequestAlreadyDone")).'">'.$langs->trans("MakeWithdrawRequest").'</a>'; else print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("RequestAlreadyDone")).'">'.$langs->trans("MakeWithdrawRequest").'</a>';

View File

@ -142,7 +142,7 @@ if ($socid > 0)
print '<td aling="left">'.$fac->getLibStatut(2,$totalpaye).'</td>'; print '<td aling="left">'.$fac->getLibStatut(2,$totalpaye).'</td>';
print '<td align="right">'.price($fac->total_ttc)."</td>\n"; print '<td align="right">'.price($fac->total_ttc)."</td>\n";
if (($fac->statut == 3 ) || ($fac->statut == 2 && ! $fact->close_code) ) $solde = $solde = $solde + $totalpaye; if (($fac->statut == Facture::STATUS_ABANDONED ) || ($fac->statut == Facture::STATUS_CLOSED && ! $fact->close_code) ) $solde = $solde = $solde + $totalpaye;
else $solde = $solde + $fac->total_ttc; else $solde = $solde + $fac->total_ttc;
print '<td align="right">&nbsp;</td>'; print '<td align="right">&nbsp;</td>';

View File

@ -3872,7 +3872,7 @@ class Form
{ {
$prodstatic=new Product($this->db); $prodstatic=new Product($this->db);
$prodstatic->fetch($idprod); $prodstatic->fetch($idprod);
if ($prodstatic->type == 1) // We know product is a service if ($prodstatic->type == Product::TYPE_SERVICE) // We know product is a service
{ {
$code_country.=",'".$societe_acheteuse->country_code."'"; $code_country.=",'".$societe_acheteuse->country_code."'";
} }

View File

@ -1216,7 +1216,7 @@ class pdf_crabe extends ModelePDFFactures
} }
// Escompte // Escompte
if ($object->close_code == 'discount_vat') if ($object->close_code == Facture::CLOSECODE_DISCOUNTVAT)
{ {
$index++; $index++;
$pdf->SetFillColor(255,255,255); $pdf->SetFillColor(255,255,255);

View File

@ -70,8 +70,8 @@ if ($id > 0)
$result = $object->fetch($id); $result = $object->fetch($id);
if ($result <= 0) dol_print_error($db,'Failed to load object'); if ($result <= 0) dol_print_error($db,'Failed to load object');
$dir=$conf->product->multidir_output[$object->entity]; // By default $dir=$conf->product->multidir_output[$object->entity]; // By default
if ($object->type == 0) $dir=$conf->product->multidir_output[$object->entity]; if ($object->type == Product::TYPE_PRODUCT) $dir=$conf->product->multidir_output[$object->entity];
if ($object->type == 1) $dir=$conf->service->multidir_output[$object->entity]; if ($object->type == Product::TYPE_SERVICE) $dir=$conf->service->multidir_output[$object->entity];
} }
/* /*

View File

@ -216,7 +216,7 @@ if ($id > 0 || ! empty($ref))
$absolute_creditnote=price2num($absolute_creditnote,'MT'); $absolute_creditnote=price2num($absolute_creditnote,'MT');
if ($absolute_discount) if ($absolute_discount)
{ {
if ($commande->statut > 0) if ($commande->statut > Commande::STATUS_DRAFT)
{ {
print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency)); print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency));
} }
@ -606,7 +606,7 @@ if ($id > 0 || ! empty($ref))
print '<div class="tabsAction">'; print '<div class="tabsAction">';
// Bouton expedier sans gestion des stocks // Bouton expedier sans gestion des stocks
if (empty($conf->stock->enabled) && ($commande->statut > 0 && $commande->statut < 3)) if (empty($conf->stock->enabled) && ($commande->statut > Commande::STATUS_DRAFT && $commande->statut < Commande::STATUS_CLOSED))
{ {
if ($user->rights->expedition->creer) if ($user->rights->expedition->creer)
{ {
@ -626,7 +626,7 @@ if ($id > 0 || ! empty($ref))
// Bouton expedier avec gestion des stocks // Bouton expedier avec gestion des stocks
if (! empty($conf->stock->enabled) && ($commande->statut > 0 && $commande->statut < 3)) if (! empty($conf->stock->enabled) && ($commande->statut > Commande::STATUS_DRAFT && $commande->statut < Commande::STATUS_CLOSED))
{ {
if ($user->rights->expedition->creer) if ($user->rights->expedition->creer)
{ {

View File

@ -79,7 +79,7 @@ if ($id > 0 || ! empty($ref))
{ {
$head=product_prepare_head($object, $user); $head=product_prepare_head($object, $user);
$titre=$langs->trans("CardProduct".$object->type); $titre=$langs->trans("CardProduct".$object->type);
$picto=($object->type==1?'service':'product'); $picto=($object->type== Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'margin', $titre, 0, $picto); dol_fiche_head($head, 'margin', $titre, 0, $picto);
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';

View File

@ -143,7 +143,7 @@ class ActionsCardProduct
$this->tpl['showrefnav'] = $form->showrefnav($this->object,'ref','',1,'ref'); $this->tpl['showrefnav'] = $form->showrefnav($this->object,'ref','',1,'ref');
$titre=$langs->trans("CardProduct".$this->object->type); $titre=$langs->trans("CardProduct".$this->object->type);
$picto=($this->object->type==1?'service':'product'); $picto=($this->object->type==Product::TYPE_SERVICE?'service':'product');
$this->tpl['showhead']=dol_get_fiche_head($head, 'card', $titre, 0, $picto); $this->tpl['showhead']=dol_get_fiche_head($head, 'card', $titre, 0, $picto);
$this->tpl['showend']=dol_get_fiche_end(); $this->tpl['showend']=dol_get_fiche_end();

View File

@ -142,7 +142,7 @@ class ActionsCardService
$this->tpl['showrefnav'] = $form->showrefnav($this->object,'ref','',1,'ref'); $this->tpl['showrefnav'] = $form->showrefnav($this->object,'ref','',1,'ref');
$titre=$langs->trans("CardProduct".$this->object->type); $titre=$langs->trans("CardProduct".$this->object->type);
$picto=($this->object->type==1?'service':'product'); $picto=($this->object->type==Product::TYPE_SERVICE?'service':'product');
$this->tpl['showhead']=dol_get_fiche_head($head, 'card', $titre, 0, $picto); $this->tpl['showhead']=dol_get_fiche_head($head, 'card', $titre, 0, $picto);
$this->tpl['showend']=dol_get_fiche_end(); $this->tpl['showend']=dol_get_fiche_end();

View File

@ -461,7 +461,7 @@ if (empty($reshook))
if ($action == 'confirm_delete' && $confirm != 'yes') { $action=''; } if ($action == 'confirm_delete' && $confirm != 'yes') { $action=''; }
if ($action == 'confirm_delete' && $confirm == 'yes') if ($action == 'confirm_delete' && $confirm == 'yes')
{ {
if (($object->type == 0 && $user->rights->produit->supprimer) || ($object->type == 1 && $user->rights->service->supprimer)) if (($object->type == Product::TYPE_PRODUCT && $user->rights->produit->supprimer) || ($object->type == Product::TYPE_SERVICE && $user->rights->service->supprimer))
{ {
$result = $object->delete($object->id); $result = $object->delete($object->id);
} }
@ -768,8 +768,8 @@ if (GETPOST("cancel") == $langs->trans("Cancel"))
*/ */
$helpurl=''; $helpurl='';
if (GETPOST("type") == '0' || ($object->type == '0')) $helpurl='EN:Module_Products|FR:Module_Produits|ES:M&oacute;dulo_Productos'; if (GETPOST("type") == '0' || ($object->type == Product::TYPE_PRODUCT)) $helpurl='EN:Module_Products|FR:Module_Produits|ES:M&oacute;dulo_Productos';
if (GETPOST("type") == '1' || ($object->type == '1')) $helpurl='EN:Module_Services_En|FR:Module_Services|ES:M&oacute;dulo_Servicios'; if (GETPOST("type") == '1' || ($object->type == Product::TYPE_SERVICE)) $helpurl='EN:Module_Services_En|FR:Module_Services|ES:M&oacute;dulo_Servicios';
if (isset($_GET['type'])) $title = $langs->trans('CardProduct'.GETPOST('type')); if (isset($_GET['type'])) $title = $langs->trans('CardProduct'.GETPOST('type'));
else $title = $langs->trans('ProductServiceCard'); else $title = $langs->trans('ProductServiceCard');
@ -1193,7 +1193,7 @@ else
}*/ }*/
// Nature // Nature
if($object->type!=1) if($object->type!= Product::TYPE_SERVICE)
{ {
print '<tr><td>'.$langs->trans("Nature").'</td><td colspan="3">'; print '<tr><td>'.$langs->trans("Nature").'</td><td colspan="3">';
$statutarray=array('-1'=>'&nbsp;', '1' => $langs->trans("Finished"), '0' => $langs->trans("RowMaterial")); $statutarray=array('-1'=>'&nbsp;', '1' => $langs->trans("Finished"), '0' => $langs->trans("RowMaterial"));
@ -1308,7 +1308,7 @@ else
{ {
$head=product_prepare_head($object, $user); $head=product_prepare_head($object, $user);
$titre=$langs->trans("CardProduct".$object->type); $titre=$langs->trans("CardProduct".$object->type);
$picto=($object->type==1?'service':'product'); $picto=($object->type== Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'card', $titre, 0, $picto); dol_fiche_head($head, 'card', $titre, 0, $picto);
$showphoto=$object->is_photo_available($conf->product->multidir_output[$object->entity]); $showphoto=$object->is_photo_available($conf->product->multidir_output[$object->entity]);
@ -1331,7 +1331,7 @@ else
$nblignes=7; $nblignes=7;
if (! empty($conf->produit->enabled) && ! empty($conf->service->enabled)) $nblignes++; if (! empty($conf->produit->enabled) && ! empty($conf->service->enabled)) $nblignes++;
if ($showbarcode) $nblignes+=2; if ($showbarcode) $nblignes+=2;
if ($object->type!=1) $nblignes++; if ($object->type!= Product::TYPE_SERVICE) $nblignes++;
if (empty($conf->global->PRODUCT_DISABLE_CUSTOM_INFO)) $nblignes+=2; if (empty($conf->global->PRODUCT_DISABLE_CUSTOM_INFO)) $nblignes+=2;
if ($object->isservice()) $nblignes++; if ($object->isservice()) $nblignes++;
else $nblignes+=4; else $nblignes+=4;
@ -1464,7 +1464,7 @@ else
print '</td></tr>'; print '</td></tr>';
// Nature // Nature
if($object->type!=1) if($object->type!= Product::TYPE_SERVICE)
{ {
print '<tr><td>'.$langs->trans("Nature").'</td><td colspan="2">'; print '<tr><td>'.$langs->trans("Nature").'</td><td colspan="2">';
print $object->getLibFinished(); print $object->getLibFinished();
@ -1628,8 +1628,8 @@ if (empty($reshook))
} }
$object_is_used = $object->isObjectUsed($object->id); $object_is_used = $object->isObjectUsed($object->id);
if (($object->type == 0 && $user->rights->produit->supprimer) if (($object->type == Product::TYPE_PRODUCT && $user->rights->produit->supprimer)
|| ($object->type == 1 && $user->rights->service->supprimer)) || ($object->type == Product::TYPE_SERVICE && $user->rights->service->supprimer))
{ {
if (empty($object_is_used) && (! isset($object->no_button_delete) || $object->no_button_delete <> 1)) if (empty($object_is_used) && (! isset($object->no_button_delete) || $object->no_button_delete <> 1))
{ {

View File

@ -61,8 +61,12 @@ class Product extends CommonObject
var $libelle; // TODO deprecated var $libelle; // TODO deprecated
var $label; var $label;
var $description; var $description;
//! Type 0 for regular product, 1 for service (Advanced feature: 2 for assembly kit, 3 for stock kit)
var $type; /**
* Check TYPE constants
* @var int
*/
var $type = self::TYPE_PRODUCT;
//! Selling price //! Selling price
var $price; // Price net var $price; // Price net
var $price_ttc; // Price with tax var $price_ttc; // Price with tax
@ -171,6 +175,23 @@ class Product extends CommonObject
var $fk_price_expression; var $fk_price_expression;
/**
* Regular product
*/
const TYPE_PRODUCT = 0;
/**
* Service
*/
const TYPE_SERVICE = 1;
/**
* Advanced feature: assembly kit
*/
const TYPE_ASSEMBLYKIT = 2;
/**
* Advanced feature: stock kit
*/
const TYPE_STOCKKIT = 3;
/** /**
* Constructor * Constructor
* *
@ -233,7 +254,6 @@ class Product extends CommonObject
// Clean parameters // Clean parameters
$this->ref = dol_string_nospecial(trim($this->ref)); $this->ref = dol_string_nospecial(trim($this->ref));
$this->libelle = trim($this->libelle); $this->libelle = trim($this->libelle);
if (empty($this->type)) $this->type=0;
$this->price_ttc=price2num($this->price_ttc); $this->price_ttc=price2num($this->price_ttc);
$this->price=price2num($this->price); $this->price=price2num($this->price);
$this->price_min_ttc=price2num($this->price_min_ttc); $this->price_min_ttc=price2num($this->price_min_ttc);
@ -795,7 +815,7 @@ class Product extends CommonObject
$this->error = "Object must be fetched before calling delete"; $this->error = "Object must be fetched before calling delete";
return -1; return -1;
} }
if (($this->type == 0 && empty($user->rights->produit->supprimer)) || ($this->type == 1 && empty($user->rights->service->supprimer))) if (($this->type == Product::TYPE_PRODUCT && empty($user->rights->produit->supprimer)) || ($this->type == Product::TYPE_SERVICE && empty($user->rights->service->supprimer)))
{ {
$this->error = "ErrorForbidden"; $this->error = "ErrorForbidden";
return 0; return 0;
@ -2932,8 +2952,8 @@ class Product extends CommonObject
$result=''; $result='';
$newref=$this->ref; $newref=$this->ref;
if ($maxlength) $newref=dol_trunc($newref,$maxlength,'middle'); if ($maxlength) $newref=dol_trunc($newref,$maxlength,'middle');
if ($this->type == 0) $label = '<u>' . $langs->trans("ShowProduct") . '</u>'; if ($this->type == Product::TYPE_PRODUCT) $label = '<u>' . $langs->trans("ShowProduct") . '</u>';
if ($this->type == 1) $label = '<u>' . $langs->trans("ShowService") . '</u>'; if ($this->type == Product::TYPE_SERVICE) $label = '<u>' . $langs->trans("ShowService") . '</u>';
if (! empty($this->ref)) if (! empty($this->ref))
$label .= '<br><b>' . $langs->trans('ProductRef') . ':</b> ' . $this->ref; $label .= '<br><b>' . $langs->trans('ProductRef') . ':</b> ' . $this->ref;
if (! empty($this->label)) if (! empty($this->label))
@ -2968,8 +2988,8 @@ class Product extends CommonObject
} }
if ($withpicto) { if ($withpicto) {
if ($this->type == 0) $result.=($link.img_object($langs->trans("ShowProduct").' '.$this->label, 'product', 'class="classfortooltip"').$linkend.' '); if ($this->type == Product::TYPE_PRODUCT) $result.=($link.img_object($langs->trans("ShowProduct").' '.$this->label, 'product', 'class="classfortooltip"').$linkend.' ');
if ($this->type == 1) $result.=($link.img_object($langs->trans("ShowService").' '.$this->label, 'service', 'class="classfortooltip"').$linkend.' '); if ($this->type == Product::TYPE_SERVICE) $result.=($link.img_object($langs->trans("ShowService").' '.$this->label, 'service', 'class="classfortooltip"').$linkend.' ');
} }
$result.=$link.$newref.$linkend; $result.=$link.$newref.$linkend;
return $result; return $result;
@ -3666,7 +3686,7 @@ class Product extends CommonObject
*/ */
function isproduct() function isproduct()
{ {
return ($this->type != 1 ? true : false); return ($this->type != Product::TYPE_PRODUCT ? true : false);
} }
/** /**
@ -3676,7 +3696,7 @@ class Product extends CommonObject
*/ */
function isservice() function isservice()
{ {
return ($this->type == 1 ? true : false); return ($this->type == Product::TYPE_SERVICE ? true : false);
} }
/** /**
@ -3733,7 +3753,6 @@ class Product extends CommonObject
$this->tosell=1; $this->tosell=1;
$this->tobuy=1; $this->tobuy=1;
$this->tobatch=0; $this->tobatch=0;
$this->type=0;
$this->note='This is a comment (private)'; $this->note='This is a comment (private)';
$this->barcode=-1; // Create barcode automatically $this->barcode=-1; // Create barcode automatically

View File

@ -176,7 +176,7 @@ llxHeader("","",$langs->trans("CardProduct".$object->type));
$head=product_prepare_head($object, $user); $head=product_prepare_head($object, $user);
$titre=$langs->trans("CardProduct".$object->type); $titre=$langs->trans("CardProduct".$object->type);
$picto=($object->type==1?'service':'product'); $picto=($object->type==Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'subproduct', $titre, 0, $picto); dol_fiche_head($head, 'subproduct', $titre, 0, $picto);
@ -207,7 +207,7 @@ if ($id > 0 || ! empty($ref))
print '</tr>'; print '</tr>';
// Nature // Nature
if($object->type!=1) if($object->type!=Product::TYPE_SERVICE)
{ {
print '<tr><td>'.$langs->trans("Nature").'</td><td colspan="2">'; print '<tr><td>'.$langs->trans("Nature").'</td><td colspan="2">';
print $object->getLibFinished(); print $object->getLibFinished();
@ -474,7 +474,7 @@ if ($id > 0 || ! empty($ref))
// check if a product is not already a parent product of this one // check if a product is not already a parent product of this one
$prod_arbo=new Product($db); $prod_arbo=new Product($db);
$prod_arbo->id=$objp->rowid; $prod_arbo->id=$objp->rowid;
if ($prod_arbo->type==2 || $prod_arbo->type==3) if ($prod_arbo->type==Product::TYPE_ASSEMBLYKIT || $prod_arbo->type== Product::TYPE_STOCKKIT)
{ {
$is_pere=0; $is_pere=0;
$prod_arbo->get_sousproduits_arbo(); $prod_arbo->get_sousproduits_arbo();

View File

@ -102,7 +102,7 @@ if ($object->id)
{ {
$head=product_prepare_head($object, $user); $head=product_prepare_head($object, $user);
$titre=$langs->trans("CardProduct".$object->type); $titre=$langs->trans("CardProduct".$object->type);
$picto=($object->type==1?'service':'product'); $picto=($object->type== Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'documents', $titre, 0, $picto); dol_fiche_head($head, 'documents', $titre, 0, $picto);
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
@ -146,7 +146,7 @@ if ($object->id)
print '</div>'; print '</div>';
$modulepart = 'produit'; $modulepart = 'produit';
$permission = (($object->type == 0 && $user->rights->produit->creer) || ($object->type == 1 && $user->rights->service->creer)); $permission = (($object->type == Product::TYPE_PRODUCT && $user->rights->produit->creer) || ($object->type == Product::TYPE_SERVICE && $user->rights->service->creer));
$param = '&id=' . $object->id; $param = '&id=' . $object->id;
include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php'; include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php';
} }

View File

@ -259,7 +259,7 @@ if ($id || $ref)
$head=product_prepare_head($product, $user); $head=product_prepare_head($product, $user);
$titre=$langs->trans("CardProduct".$product->type); $titre=$langs->trans("CardProduct".$product->type);
$picto=($product->type==1?'service':'product'); $picto=($product->type== Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'suppliers', $titre, 0, $picto); dol_fiche_head($head, 'suppliers', $titre, 0, $picto);

View File

@ -102,7 +102,7 @@ if ($object->id)
*/ */
$head=product_prepare_head($object, $user); $head=product_prepare_head($object, $user);
$titre=$langs->trans("CardProduct".$object->type); $titre=$langs->trans("CardProduct".$object->type);
$picto=($object->type==1?'service':'product'); $picto=($object->type== Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'photos', $titre, 0, $picto); dol_fiche_head($head, 'photos', $titre, 0, $picto);
/* /*
@ -145,8 +145,8 @@ if ($object->id)
$permtoedit=0; $permtoedit=0;
if ($user->rights->produit->creer && $object->type == 0) $permtoedit=1; if ($user->rights->produit->creer && $object->type == Product::TYPE_PRODUCT) $permtoedit=1;
if ($user->rights->service->creer && $object->type == 1) $permtoedit=1; if ($user->rights->service->creer && $object->type == Product::TYPE_SERVICE) $permtoedit=1;
if (empty($conf->global->MAIN_UPLOAD_DOC)) $permtoedit=0; if (empty($conf->global->MAIN_UPLOAD_DOC)) $permtoedit=0;
/* ************************************************************************** */ /* ************************************************************************** */

View File

@ -347,7 +347,7 @@ llxHeader("", "", $langs->trans("CardProduct" . $object->type));
$head = product_prepare_head($object, $user); $head = product_prepare_head($object, $user);
$titre = $langs->trans("CardProduct" . $object->type); $titre = $langs->trans("CardProduct" . $object->type);
$picto = ($object->type == 1 ? 'service' : 'product'); $picto = ($object->type == Product::TYPE_SERVICE ? 'service' : 'product');
dol_fiche_head($head, 'price', $titre, 0, $picto); dol_fiche_head($head, 'price', $titre, 0, $picto);
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';

View File

@ -69,7 +69,7 @@ if (! empty($id) || ! empty($ref))
{ {
$head=product_prepare_head($object, $user); $head=product_prepare_head($object, $user);
$titre=$langs->trans("CardProduct".$object->type); $titre=$langs->trans("CardProduct".$object->type);
$picto=($object->type==1?'service':'product'); $picto=($object->type==Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'stats', $titre, 0, $picto); dol_fiche_head($head, 'stats', $titre, 0, $picto);

View File

@ -91,7 +91,7 @@ if ($id > 0 || ! empty($ref))
{ {
$head=product_prepare_head($product, $user); $head=product_prepare_head($product, $user);
$titre=$langs->trans("CardProduct".$product->type); $titre=$langs->trans("CardProduct".$product->type);
$picto=($product->type==1?'service':'product'); $picto=($product->type==Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'referers', $titre, 0, $picto); dol_fiche_head($head, 'referers', $titre, 0, $picto);
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$product,$action); // Note that $action and $object may have been modified by hook $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$product,$action); // Note that $action and $object may have been modified by hook

View File

@ -98,7 +98,7 @@ if ($id > 0 || ! empty($ref)) {
if ($result > 0) { if ($result > 0) {
$head = product_prepare_head($product, $user); $head = product_prepare_head($product, $user);
$titre = $langs->trans("CardProduct" . $product->type); $titre = $langs->trans("CardProduct" . $product->type);
$picto = ($product->type == 1 ? 'service' : 'product'); $picto = ($product->type == Product::TYPE_SERVICE ? 'service' : 'product');
dol_fiche_head($head, 'referers', $titre, 0, $picto); dol_fiche_head($head, 'referers', $titre, 0, $picto);
$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $product, $action); // Note that $action and $object may have been modified by hook $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $product, $action); // Note that $action and $object may have been modified by hook

View File

@ -81,7 +81,7 @@ if ($id > 0 || ! empty($ref))
{ {
$head=product_prepare_head($product,$user); $head=product_prepare_head($product,$user);
$titre=$langs->trans("CardProduct".$product->type); $titre=$langs->trans("CardProduct".$product->type);
$picto=($product->type==1?'service':'product'); $picto=($product->type==Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'referers', $titre, 0, $picto); dol_fiche_head($head, 'referers', $titre, 0, $picto);
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$product,$action); // Note that $action and $object may have been modified by hook $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$product,$action); // Note that $action and $object may have been modified by hook

View File

@ -92,7 +92,7 @@ if ($id > 0 || ! empty($ref))
{ {
$head=product_prepare_head($product, $user); $head=product_prepare_head($product, $user);
$titre=$langs->trans("CardProduct".$product->type); $titre=$langs->trans("CardProduct".$product->type);
$picto=($product->type==1?'service':'product'); $picto=($product->type==Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'referers', $titre, 0, $picto); dol_fiche_head($head, 'referers', $titre, 0, $picto);
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$product,$action); // Note that $action and $object may have been modified by hook $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$product,$action); // Note that $action and $object may have been modified by hook

View File

@ -93,7 +93,7 @@ if ($id > 0 || ! empty($ref))
{ {
$head = product_prepare_head($product, $user); $head = product_prepare_head($product, $user);
$titre = $langs->trans("CardProduct" . $product->type); $titre = $langs->trans("CardProduct" . $product->type);
$picto = ($product->type == 1 ? 'service' : 'product'); $picto = ($product->type == Product::TYPE_SERVICE ? 'service' : 'product');
dol_fiche_head($head, 'referers', $titre, 0, $picto); dol_fiche_head($head, 'referers', $titre, 0, $picto);
$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $product, $action); // Note that $action and $object may have been modified by hook $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $product, $action); // Note that $action and $object may have been modified by hook

View File

@ -91,7 +91,7 @@ if ($id > 0 || ! empty($ref))
{ {
$head = product_prepare_head($product, $user); $head = product_prepare_head($product, $user);
$titre = $langs->trans("CardProduct" . $product->type); $titre = $langs->trans("CardProduct" . $product->type);
$picto = ($product->type == 1 ? 'service' : 'product'); $picto = ($product->type == Product::TYPE_SERVICE ? 'service' : 'product');
dol_fiche_head($head, 'referers', $titre, 0, $picto); dol_fiche_head($head, 'referers', $titre, 0, $picto);
$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $product, $action); // Note that $action and $object may have been modified by hook $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $product, $action); // Note that $action and $object may have been modified by hook

View File

@ -117,7 +117,7 @@ class MouvementStock extends CommonObject
// Define if we must make the stock change (If product type is a service or if stock is used also for services) // Define if we must make the stock change (If product type is a service or if stock is used also for services)
$movestock=0; $movestock=0;
if ($product->type != 1 || ! empty($conf->global->STOCK_SUPPORTS_SERVICES)) $movestock=1; if ($product->type != Product::TYPE_SERVICE || ! empty($conf->global->STOCK_SUPPORTS_SERVICES)) $movestock=1;
if ($movestock && $entrepot_id > 0) // Change stock for current product, change for subproduct is done after if ($movestock && $entrepot_id > 0) // Change stock for current product, change for subproduct is done after
{ {

View File

@ -7,6 +7,7 @@
* Copyright (C) 2013 Cédric Salvador <csalvador.gpcsolutions.fr> * Copyright (C) 2013 Cédric Salvador <csalvador.gpcsolutions.fr>
* Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2014-2015 Cédric Gross <c.gross@kreiz-it.fr> * Copyright (C) 2014-2015 Cédric Gross <c.gross@kreiz-it.fr>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@ -385,7 +386,7 @@ if ($id > 0 || $ref)
{ {
$head=product_prepare_head($product, $user); $head=product_prepare_head($product, $user);
$titre=$langs->trans("CardProduct".$product->type); $titre=$langs->trans("CardProduct".$product->type);
$picto=($product->type==1?'service':'product'); $picto=($product->type==Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'stock', $titre, 0, $picto); dol_fiche_head($head, 'stock', $titre, 0, $picto);
dol_htmloutput_events(); dol_htmloutput_events();

View File

@ -170,7 +170,7 @@ $formadmin=new FormAdmin($db);
$head=product_prepare_head($product, $user); $head=product_prepare_head($product, $user);
$titre=$langs->trans("CardProduct".$product->type); $titre=$langs->trans("CardProduct".$product->type);
$picto=($product->type==1?'service':'product'); $picto=($product->type==Product::TYPE_SERVICE?'service':'product');
dol_fiche_head($head, 'translation', $titre, 0, $picto); dol_fiche_head($head, 'translation', $titre, 0, $picto);
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';

View File

@ -241,7 +241,6 @@ class Societe extends CommonObject
var $specimen; var $specimen;
/** /**
* 0=no customer, 1=customer, 2=prospect, 3=customer and prospect * 0=no customer, 1=customer, 2=prospect, 3=customer and prospect
* @var int * @var int

View File

@ -522,7 +522,7 @@ function createInvoice($authentication,$invoice)
$newobject->date=dol_stringtotime($invoice['date'],'dayrfc'); $newobject->date=dol_stringtotime($invoice['date'],'dayrfc');
$newobject->note_private=$invoice['note_private']; $newobject->note_private=$invoice['note_private'];
$newobject->note_public=$invoice['note_public']; $newobject->note_public=$invoice['note_public'];
$newobject->statut=0; // We start with status draft $newobject->statut= Facture::STATUS_DRAFT; // We start with status draft
$newobject->fk_project=$invoice['project_id']; $newobject->fk_project=$invoice['project_id'];
$newobject->date_creation=$now; $newobject->date_creation=$now;

View File

@ -687,7 +687,7 @@ function createOrder($authentication,$order)
$newobject->date_lim_reglement=dol_stringtotime($order['date_due'],'dayrfc'); $newobject->date_lim_reglement=dol_stringtotime($order['date_due'],'dayrfc');
$newobject->note_private=$order['note_private']; $newobject->note_private=$order['note_private'];
$newobject->note_public=$order['note_public']; $newobject->note_public=$order['note_public'];
$newobject->statut=0; // We start with status draft $newobject->statut=Commande::STATUS_DRAFT; // We start with status draft
$newobject->billed=$order['billed']; $newobject->billed=$order['billed'];
$newobject->fk_project=$order['project_id']; $newobject->fk_project=$order['project_id'];
$newobject->fk_delivery_address=$order['fk_delivery_address']; $newobject->fk_delivery_address=$order['fk_delivery_address'];