Merge remote-tracking branch 'upstream/develop' into develop

This commit is contained in:
Daniel Seichter 2019-11-14 00:18:03 +01:00
commit c2eba28f36
42 changed files with 4130 additions and 3833 deletions

29
build/exakat/README.md Normal file
View File

@ -0,0 +1,29 @@
== Install exakat ==
mkdir exakat
cd exakat
curl -o exakat.phar http://dist.exakat.io/index.php?file=latest
curl -o apache-tinkerpop-gremlin-server-3.3.5-bin.zip http://dist.exakat.io/apache-tinkerpop-gremlin-server-3.3.5-bin.zip
unzip apache-tinkerpop-gremlin-server-3.3.5-bin.zip
mv apache-tinkerpop-gremlin-server-3.3.5 tinkergraph
rm -rf apache-tinkerpop-gremlin-server-3.3.5-bin.zip
cd tinkergraph ./bin/gremlin-server.sh -i org.apache.tinkerpop neo4j-gremlin 3.3.5
cd ..
php exakat.phar version
php exakat.phar doctor
== Init project ==
php
Edit config.ini file to exclude some dirs:
ignore_dirs[] = "/htdocs/includes";
ignore_dirs[] = "/scripts";
ignore_dirs[] = "/build";
ignore_dirs[] = "/dev";
ignore_dirs[] = "/documents";
== Analyze project ==
php

File diff suppressed because it is too large Load Diff

View File

@ -380,7 +380,7 @@ if (! empty($user->rights->produit->lire) || ! empty($user->rights->service->lir
print '<input id="fillfromproduct" type="radio" '.((GETPOST("selectorforbarcode")=='fillfromproduct')?'checked ':'').'name="selectorforbarcode" value="fillfromproduct" class="radiobarcodeselect"> '.$langs->trans("FillBarCodeTypeAndValueFromProduct").' &nbsp; '; print '<input id="fillfromproduct" type="radio" '.((GETPOST("selectorforbarcode")=='fillfromproduct')?'checked ':'').'name="selectorforbarcode" value="fillfromproduct" class="radiobarcodeselect"> '.$langs->trans("FillBarCodeTypeAndValueFromProduct").' &nbsp; ';
print '<br>'; print '<br>';
print '<div class="showforproductselector">'; print '<div class="showforproductselector">';
$form->select_produits(GETPOST('productid'), 'productid', ''); $form->select_produits(GETPOST('productid'), 'productid', '', '', 0, -1, 2, '', 0, array(), 0, '1', 0, 'minwidth400imp', 1);
print ' &nbsp; <input type="submit" id="submitproduct" name="submitproduct" class="button" value="'.(dol_escape_htmltag($langs->trans("GetBarCode"))).'">'; print ' &nbsp; <input type="submit" id="submitproduct" name="submitproduct" class="button" value="'.(dol_escape_htmltag($langs->trans("GetBarCode"))).'">';
print '</div>'; print '</div>';
} }

View File

@ -265,6 +265,246 @@ class Categories extends DolibarrApi
); );
} }
/**
* Link an object to a category by id
*
* @param int $id ID of category
* @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact')
* @param int $object_id ID of object
*
* @return array
* @throws RestException
*
* @url POST {id}/objects/{type}/{object_id}
*/
public function linkObjectById($id, $type, $object_id)
{
if (empty($type) || empty($object_id)) {
throw new RestException(401);
}
if(! DolibarrApiAccess::$user->rights->categorie->lire) {
throw new RestException(401);
}
$result = $this->category->fetch($id);
if( ! $result ) {
throw new RestException(404, 'category not found');
}
// TODO Add all types
if ($type === "product") {
if(! (DolibarrApiAccess::$user->rights->produit->creer || DolibarrApiAccess::$user->rights->service->creer)) {
throw new RestException(401);
}
$object = new Product($this->db);
} else {
throw new RestException(401, "this type is not recognized yet.");
}
if (!empty($object)) {
$result = $object->fetch($object_id);
if ($result > 0) {
$result=$this->category->add_type($object, $type);
if ($result < 0) {
if ($this->category->error != 'DB_ERROR_RECORD_ALREADY_EXISTS') {
throw new RestException(500, 'Error when linking object', array_merge(array($this->category->error), $this->category->errors));
}
}
} else {
throw new RestException(500, 'Error when fetching object', array_merge(array($object->error), $object->errors));
}
return array(
'success' => array(
'code' => 200,
'message' => 'Objects succefully linked to the category'
)
);
}
throw new RestException(401);
}
/**
* Link an object to a category by ref
*
* @param int $id ID of category
* @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact')
* @param string $object_ref Reference of object
*
* @return array
* @throws RestException
*
* @url POST {id}/objects/{type}/ref/{object_ref}
*/
public function linkObjectByRef($id, $type, $object_ref)
{
if (empty($type) || empty($object_ref)) {
throw new RestException(401);
}
if(! DolibarrApiAccess::$user->rights->categorie->lire) {
throw new RestException(401);
}
$result = $this->category->fetch($id);
if( ! $result ) {
throw new RestException(404, 'category not found');
}
// TODO Add all types
if ($type === "product") {
if(! (DolibarrApiAccess::$user->rights->produit->creer || DolibarrApiAccess::$user->rights->service->creer)) {
throw new RestException(401);
}
$object = new Product($this->db);
} else {
throw new RestException(401, "this type is not recognized yet.");
}
if (!empty($object)) {
$result = $object->fetch('', $object_ref);
if ($result > 0) {
$result=$this->category->add_type($object, $type);
if ($result < 0) {
if ($this->category->error != 'DB_ERROR_RECORD_ALREADY_EXISTS') {
throw new RestException(500, 'Error when linking object', array_merge(array($this->category->error), $this->category->errors));
}
}
} else {
throw new RestException(500, 'Error when fetching object', array_merge(array($object->error), $object->errors));
}
return array(
'success' => array(
'code' => 200,
'message' => 'Objects succefully linked to the category'
)
);
}
throw new RestException(401);
}
/**
* Unlink an object from a category by id
*
* @param int $id ID of category
* @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact')
* @param int $object_id ID of the object
*
* @return array
* @throws RestException
*
* @url DELETE {id}/objects/{type}/{object_id}
*/
public function unlinkObjectById($id, $type, $object_id)
{
if (empty($type) || empty($object_id)) {
throw new RestException(401);
}
if(! DolibarrApiAccess::$user->rights->categorie->lire) {
throw new RestException(401);
}
$result = $this->category->fetch($id);
if( ! $result ) {
throw new RestException(404, 'category not found');
}
// TODO Add all types
if ($type === "product") {
if(! (DolibarrApiAccess::$user->rights->produit->creer || DolibarrApiAccess::$user->rights->service->creer)) {
throw new RestException(401);
}
$object = new Product($this->db);
} else {
throw new RestException(401, "this type is not recognized yet.");
}
if (!empty($object)) {
$result = $object->fetch((int) $object_id);
if ($result > 0) {
$result=$this->category->del_type($object, $type);
if ($result < 0) {
throw new RestException(500, 'Error when unlinking object', array_merge(array($this->category->error), $this->category->errors));
}
} else {
throw new RestException(500, 'Error when fetching object', array_merge(array($object->error), $object->errors));
}
return array(
'success' => array(
'code' => 200,
'message' => 'Objects succefully unlinked from the category'
)
);
}
throw new RestException(401);
}
/**
* Unlink an object from a category by ref
*
* @param int $id ID of category
* @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact')
* @param string $object_ref Reference of the object
*
* @return array
* @throws RestException
*
* @url DELETE {id}/objects/{type}/ref/{object_ref}
*/
public function unlinkObjectByRef($id, $type, $object_ref)
{
if (empty($type) || empty($object_ref)) {
throw new RestException(401);
}
if(! DolibarrApiAccess::$user->rights->categorie->lire) {
throw new RestException(401);
}
$result = $this->category->fetch($id);
if( ! $result ) {
throw new RestException(404, 'category not found');
}
// TODO Add all types
if ($type === "product") {
if(! (DolibarrApiAccess::$user->rights->produit->creer || DolibarrApiAccess::$user->rights->service->creer)) {
throw new RestException(401);
}
$object = new Product($this->db);
} else {
throw new RestException(401, "this type is not recognized yet.");
}
if (!empty($object)) {
$result = $object->fetch('', (string) $object_ref);
if ($result > 0) {
$result=$this->category->del_type($object, $type);
if ($result < 0) {
throw new RestException(500, 'Error when unlinking object', array_merge(array($this->category->error), $this->category->errors));
}
} else {
throw new RestException(500, 'Error when fetching object', array_merge(array($object->error), $object->errors));
}
return array(
'success' => array(
'code' => 200,
'message' => 'Objects succefully unlinked from the category'
)
);
}
throw new RestException(401);
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
/** /**

View File

@ -678,19 +678,12 @@ else
print_liste_field_titre("LineRecord", $_SERVER["PHP_SELF"], "b.rowid", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre("LineRecord", $_SERVER["PHP_SELF"], "b.rowid", "", $param, 'align="center"', $sortfield, $sortorder);
print_liste_field_titre(''); print_liste_field_titre('');
print "</tr>\n"; print "</tr>\n";
$i = 1;
$i = 1;
if ($num > 0) if ($num > 0)
{ {
while ($objp = $db->fetch_object($resql)) while ($objp = $db->fetch_object($resql))
{ {
//$account_id = $objp->bid; FIXME not used
// FIXME $accounts[$objp->bid] is a label
/*if (! isset($accounts[$objp->bid]))
$accounts[$objp->bid]=0;
$accounts[$objp->bid] += 1;*/
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td align="center">'.$i.'</td>'; print '<td align="center">'.$i.'</td>';
print '<td align="center">'.dol_print_date($db->jdate($objp->date), 'day').'</td>'; // Date operation print '<td align="center">'.dol_print_date($db->jdate($objp->date), 'day').'</td>'; // Date operation
@ -751,6 +744,15 @@ else
} }
print "</table>"; print "</table>";
// Cheque denormalized data nbcheque is similar to real number of cheque
if ($num > 0 && $i < ($object->nbcheque + 1)) {
// Show warning that some records were removed.
$langs->load("errors");
print info_admin($langs->trans("WarningSomeBankTransactionByChequeWereRemovedAfter"), 0, 0, 'warning');
// TODO Fix data ->nbcheque and ->amount
}
print "</div>"; print "</div>";
} }
else else

View File

@ -177,7 +177,7 @@ if ($id > 0 || $ref)
print '<div class="fichecenter">'; print '<div class="fichecenter">';
print '<div class="underbanner clearboth"></div>'; print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent">'; print '<table class="border centpercent tableforfield">';
//print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'.$object->getNomUrl(1).'</td></tr>'; //print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'.$object->getNomUrl(1).'</td></tr>';
print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>'; print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>';
@ -214,7 +214,7 @@ if ($id > 0 || $ref)
print '<br>'; print '<br>';
print '<div class="underbanner clearboth"></div>'; print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent">'; print '<table class="border centpercent tableforfield">';
$acc = new Account($db); $acc = new Account($db);
$result = $acc->fetch($conf->global->PRELEVEMENT_ID_BANKACCOUNT); $result = $acc->fetch($conf->global->PRELEVEMENT_ID_BANKACCOUNT);

View File

@ -74,6 +74,10 @@ class BonPrelevement extends CommonObject
public $invoice_in_error=array(); public $invoice_in_error=array();
public $thirdparty_in_error=array(); public $thirdparty_in_error=array();
const STATUS_DRAFT = 0;
const STATUS_TRANSFERED = 1;
const STATUS_CREDITED = 2;
/** /**
* Constructor * Constructor
@ -2001,49 +2005,23 @@ class BonPrelevement extends CommonObject
*/ */
public function LibStatut($status, $mode = 0) public function LibStatut($status, $mode = 0)
{ {
// phpcs:enable // phpcs:enable
if (empty($this->labelStatus)) if (empty($this->labelStatus) || empty($this->labelStatusShort))
{ {
global $langs; global $langs;
$langs->load("withdrawals"); //$langs->load("mymodule");
$this->labelStatus[0]=$langs->trans("StatusWaiting"); $this->labelStatus[self::STATUS_DRAFT] = $langs->trans('StatusWaiting');
$this->labelStatus[1]=$langs->trans("StatusTrans"); $this->labelStatus[self::STATUS_TRANSFERED] = $langs->trans('StatusTrans');
$this->labelStatus[2]=$langs->trans("StatusCredited"); $this->labelStatus[self::STATUS_CREDITED] = $langs->trans('StatusCredited');
$this->labelStatusShort[self::STATUS_DRAFT] = $langs->trans('StatusWaiting');
$this->labelStatusShort[self::STATUS_TRANSFERED] = $langs->trans('StatusTrans');
$this->labelStatusShort[self::STATUS_CREDITED] = $langs->trans('StatusCredited');
} }
if ($mode == 0 || $mode == 1) $statusType = 'status1';
{ if ($status == self::STATUS_TRANSFERED) $statusType = 'status3';
return $this->labelStatus[$status]; if ($status == self::STATUS_CREDITED) $statusType = 'status6';
}
elseif ($mode == 2) return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], '', $statusType, $mode);
{
if ($status==0) return img_picto($this->labelStatus[$status], 'statut1').' '.$this->labelStatus[$status];
elseif ($status==1) return img_picto($this->labelStatus[$status], 'statut3').' '.$this->labelStatus[$status];
elseif ($status==2) return img_picto($this->labelStatus[$status], 'statut6').' '.$this->labelStatus[$status];
}
elseif ($mode == 3)
{
if ($status==0) return img_picto($this->labelStatus[$status], 'statut1');
elseif ($status==1) return img_picto($this->labelStatus[$status], 'statut3');
elseif ($status==2) return img_picto($this->labelStatus[$status], 'statut6');
}
elseif ($mode == 4)
{
if ($status==0) return img_picto($this->labelStatus[$status], 'statut1').' '.$this->labelStatus[$status];
elseif ($status==1) return img_picto($this->labelStatus[$status], 'statut3').' '.$this->labelStatus[$status];
elseif ($status==2) return img_picto($this->labelStatus[$status], 'statut6').' '.$this->labelStatus[$status];
}
elseif ($mode == 5)
{
if ($status==0) return $this->labelStatus[$status].' '.img_picto($this->labelStatus[$status], 'statut1');
elseif ($status==1) return $this->labelStatus[$status].' '.img_picto($this->labelStatus[$status], 'statut3');
elseif ($status==2) return $this->labelStatus[$status].' '.img_picto($this->labelStatus[$status], 'statut6');
}
elseif ($mode == 6)
{
if ($status==0) return $this->labelStatus[$status].' '.img_picto($this->labelStatus[$status], 'statut1');
elseif ($status==1) return $this->labelStatus[$status].' '.img_picto($this->labelStatus[$status], 'statut3');
elseif ($status==2) return $this->labelStatus[$status].' '.img_picto($this->labelStatus[$status], 'statut6');
}
} }
} }

View File

@ -79,7 +79,7 @@ if ($prev_id > 0 || $ref)
print '<div class="fichecenter">'; print '<div class="fichecenter">';
print '<div class="underbanner clearboth"></div>'; print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent">'; print '<table class="border centpercent tableforfield">';
//print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'.$object->getNomUrl(1).'</td></tr>'; //print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'.$object->getNomUrl(1).'</td></tr>';
print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>'; print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>';
@ -111,7 +111,7 @@ if ($prev_id > 0 || $ref)
print '<br>'; print '<br>';
print '<div class="underbanner clearboth"></div>'; print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent">'; print '<table class="border centpercent tableforfield">';
$acc = new Account($db); $acc = new Account($db);
$result = $acc->fetch($conf->global->PRELEVEMENT_ID_BANKACCOUNT); $result = $acc->fetch($conf->global->PRELEVEMENT_ID_BANKACCOUNT);

View File

@ -75,7 +75,7 @@ if ($prev_id > 0 || $ref)
print '<div class="fichecenter">'; print '<div class="fichecenter">';
print '<div class="underbanner clearboth"></div>'; print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent">'."\n"; print '<table class="border centpercent tableforfield">'."\n";
//print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'.$object->getNomUrl(1).'</td></tr>'; //print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'.$object->getNomUrl(1).'</td></tr>';
print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>'; print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>';
@ -112,7 +112,7 @@ if ($prev_id > 0 || $ref)
print '<br>'; print '<br>';
print '<div class="underbanner clearboth"></div>'; print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent">'; print '<table class="border centpercent tableforfield">';
$acc = new Account($db); $acc = new Account($db);
$result = $acc->fetch($conf->global->PRELEVEMENT_ID_BANKACCOUNT); $result = $acc->fetch($conf->global->PRELEVEMENT_ID_BANKACCOUNT);

View File

@ -72,7 +72,7 @@ if ($prev_id > 0 || $ref)
print '<div class="fichecenter">'; print '<div class="fichecenter">';
print '<div class="underbanner clearboth"></div>'; print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent">'."\n"; print '<table class="border centpercent tableforfield">'."\n";
//print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'.$object->getNomUrl(1).'</td></tr>'; //print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'.$object->getNomUrl(1).'</td></tr>';
print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>'; print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>';
@ -109,7 +109,7 @@ if ($prev_id > 0 || $ref)
print '<br>'; print '<br>';
print '<div class="underbanner clearboth"></div>'; print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent">'; print '<table class="border centpercent tableforfield">';
$acc = new Account($db); $acc = new Account($db);
$result = $acc->fetch($conf->global->PRELEVEMENT_ID_BANKACCOUNT); $result = $acc->fetch($conf->global->PRELEVEMENT_ID_BANKACCOUNT);

View File

@ -35,14 +35,14 @@ class ChargeSociales extends CommonObject
/** /**
* @var string ID to identify managed object * @var string ID to identify managed object
*/ */
public $element='chargesociales'; public $element = 'chargesociales';
public $table='chargesociales'; public $table = 'chargesociales';
/** /**
* @var string Name of table without prefix where object is stored * @var string Name of table without prefix where object is stored
*/ */
public $table_element='chargesociales'; public $table_element = 'chargesociales';
/** /**
* @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png
@ -175,7 +175,7 @@ class ChargeSociales extends CommonObject
} }
else else
{ {
$this->error=$this->db->lasterror(); $this->error = $this->db->lasterror();
return -1; return -1;
} }
} }
@ -187,10 +187,10 @@ class ChargeSociales extends CommonObject
*/ */
public function check() public function check()
{ {
$newamount=price2num($this->amount, 'MT'); $newamount = price2num($this->amount, 'MT');
// Validation parametres // Validation parametres
if (! $newamount > 0 || empty($this->date_ech) || empty($this->periode)) if (!$newamount > 0 || empty($this->date_ech) || empty($this->periode))
{ {
return false; return false;
} }
@ -208,55 +208,55 @@ class ChargeSociales extends CommonObject
public function create($user) public function create($user)
{ {
global $conf; global $conf;
$error=0; $error = 0;
$now=dol_now(); $now = dol_now();
// Nettoyage parametres // Nettoyage parametres
$newamount=price2num($this->amount, 'MT'); $newamount = price2num($this->amount, 'MT');
if (!$this->check()) { if (!$this->check()) {
$this->error="ErrorBadParameter"; $this->error = "ErrorBadParameter";
return -2; return -2;
} }
$this->db->begin(); $this->db->begin();
$sql = "INSERT INTO ".MAIN_DB_PREFIX."chargesociales (fk_type, fk_account, fk_mode_reglement, libelle, date_ech, periode, amount, fk_projet, entity, fk_user_author, date_creation)"; $sql = "INSERT INTO ".MAIN_DB_PREFIX."chargesociales (fk_type, fk_account, fk_mode_reglement, libelle, date_ech, periode, amount, fk_projet, entity, fk_user_author, date_creation)";
$sql.= " VALUES (".$this->type; $sql .= " VALUES (".$this->type;
$sql.= ", ".($this->fk_account>0 ? $this->fk_account:'NULL'); $sql .= ", ".($this->fk_account > 0 ? $this->fk_account : 'NULL');
$sql.= ", ".($this->mode_reglement_id>0 ? $this->mode_reglement_id:"NULL"); $sql .= ", ".($this->mode_reglement_id > 0 ? $this->mode_reglement_id : "NULL");
$sql.= ", '".$this->db->escape($this->label?$this->label:$this->lib)."'"; $sql .= ", '".$this->db->escape($this->label ? $this->label : $this->lib)."'";
$sql.= ", '".$this->db->idate($this->date_ech)."'"; $sql .= ", '".$this->db->idate($this->date_ech)."'";
$sql.= ", '".$this->db->idate($this->periode)."'"; $sql .= ", '".$this->db->idate($this->periode)."'";
$sql.= ", '".price2num($newamount)."'"; $sql .= ", '".price2num($newamount)."'";
$sql.= ", ".($this->fk_project>0?$this->fk_project:'NULL'); $sql .= ", ".($this->fk_project > 0 ? $this->fk_project : 'NULL');
$sql.= ", ".$conf->entity; $sql .= ", ".$conf->entity;
$sql.= ", ".$user->id; $sql .= ", ".$user->id;
$sql.= ", '".$this->db->idate($now)."'"; $sql .= ", '".$this->db->idate($now)."'";
$sql.= ")"; $sql .= ")";
dol_syslog(get_class($this)."::create", LOG_DEBUG); dol_syslog(get_class($this)."::create", LOG_DEBUG);
$resql=$this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) { if ($resql) {
$this->id=$this->db->last_insert_id(MAIN_DB_PREFIX."chargesociales"); $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."chargesociales");
//dol_syslog("ChargesSociales::create this->id=".$this->id); //dol_syslog("ChargesSociales::create this->id=".$this->id);
$result=$this->call_trigger('SOCIALCONTRIBUTION_CREATE', $user); $result = $this->call_trigger('SOCIALCONTRIBUTION_CREATE', $user);
if ($result < 0) $error++; if ($result < 0) $error++;
if(empty($error)) { if (empty($error)) {
$this->db->commit(); $this->db->commit();
return $this->id; return $this->id;
} }
else { else {
$this->db->rollback(); $this->db->rollback();
return -1*$error; return -1 * $error;
} }
} }
else else
{ {
$this->error=$this->db->error(); $this->error = $this->db->error();
$this->db->rollback(); $this->db->rollback();
return -1; return -1;
} }
@ -271,23 +271,23 @@ class ChargeSociales extends CommonObject
*/ */
public function delete($user) public function delete($user)
{ {
$error=0; $error = 0;
$this->db->begin(); $this->db->begin();
// Get bank transaction lines for this social contributions // Get bank transaction lines for this social contributions
include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
$account=new Account($this->db); $account = new Account($this->db);
$lines_url=$account->get_url('', $this->id, 'sc'); $lines_url = $account->get_url('', $this->id, 'sc');
// Delete bank urls // Delete bank urls
foreach ($lines_url as $line_url) foreach ($lines_url as $line_url)
{ {
if (! $error) if (!$error)
{ {
$accountline=new AccountLine($this->db); $accountline = new AccountLine($this->db);
$accountline->fetch($line_url['fk_bank']); $accountline->fetch($line_url['fk_bank']);
$result=$accountline->delete_urls($user); $result = $accountline->delete_urls($user);
if ($result < 0) if ($result < 0)
{ {
$error++; $error++;
@ -296,31 +296,31 @@ class ChargeSociales extends CommonObject
} }
// Delete payments // Delete payments
if (! $error) if (!$error)
{ {
$sql = "DELETE FROM ".MAIN_DB_PREFIX."paiementcharge WHERE fk_charge=".$this->id; $sql = "DELETE FROM ".MAIN_DB_PREFIX."paiementcharge WHERE fk_charge=".$this->id;
dol_syslog(get_class($this)."::delete", LOG_DEBUG); dol_syslog(get_class($this)."::delete", LOG_DEBUG);
$resql=$this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) if (!$resql)
{ {
$error++; $error++;
$this->error=$this->db->lasterror(); $this->error = $this->db->lasterror();
} }
} }
if (! $error) if (!$error)
{ {
$sql = "DELETE FROM ".MAIN_DB_PREFIX."chargesociales WHERE rowid=".$this->id; $sql = "DELETE FROM ".MAIN_DB_PREFIX."chargesociales WHERE rowid=".$this->id;
dol_syslog(get_class($this)."::delete", LOG_DEBUG); dol_syslog(get_class($this)."::delete", LOG_DEBUG);
$resql=$this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) if (!$resql)
{ {
$error++; $error++;
$this->error=$this->db->lasterror(); $this->error = $this->db->lasterror();
} }
} }
if (! $error) if (!$error)
{ {
$this->db->commit(); $this->db->commit();
return 1; return 1;
@ -342,31 +342,31 @@ class ChargeSociales extends CommonObject
*/ */
public function update($user, $notrigger = 0) public function update($user, $notrigger = 0)
{ {
$error=0; $error = 0;
$this->db->begin(); $this->db->begin();
$sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales"; $sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales";
$sql.= " SET libelle='".$this->db->escape($this->label?$this->label:$this->lib)."'"; $sql .= " SET libelle='".$this->db->escape($this->label ? $this->label : $this->lib)."'";
$sql.= ", date_ech='".$this->db->idate($this->date_ech)."'"; $sql .= ", date_ech='".$this->db->idate($this->date_ech)."'";
$sql.= ", periode='".$this->db->idate($this->periode)."'"; $sql .= ", periode='".$this->db->idate($this->periode)."'";
$sql.= ", amount='".price2num($this->amount, 'MT')."'"; $sql .= ", amount='".price2num($this->amount, 'MT')."'";
$sql.= ", fk_projet=".($this->fk_project>0?$this->db->escape($this->fk_project):"NULL"); $sql .= ", fk_projet=".($this->fk_project > 0 ? $this->db->escape($this->fk_project) : "NULL");
$sql.= ", fk_user_modif=".$user->id; $sql .= ", fk_user_modif=".$user->id;
$sql.= " WHERE rowid=".$this->id; $sql .= " WHERE rowid=".$this->id;
dol_syslog(get_class($this)."::update", LOG_DEBUG); dol_syslog(get_class($this)."::update", LOG_DEBUG);
$resql=$this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) { if (!$resql) {
$error++; $this->errors[]="Error ".$this->db->lasterror(); $error++; $this->errors[] = "Error ".$this->db->lasterror();
} }
if (! $error) if (!$error)
{ {
if (! $notrigger) if (!$notrigger)
{ {
// Call trigger // Call trigger
$result=$this->call_trigger('SOCIALCHARGES_MODIFY', $user); $result = $this->call_trigger('SOCIALCHARGES_MODIFY', $user);
if ($result < 0) $error++; if ($result < 0) $error++;
// End call triggers // End call triggers
} }
@ -375,13 +375,13 @@ class ChargeSociales extends CommonObject
// Commit or rollback // Commit or rollback
if ($error) if ($error)
{ {
foreach($this->errors as $errmsg) foreach ($this->errors as $errmsg)
{ {
dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR); dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg); $this->error .= ($this->error ? ', '.$errmsg : $errmsg);
} }
$this->db->rollback(); $this->db->rollback();
return -1*$error; return -1 * $error;
} }
else else
{ {
@ -401,9 +401,9 @@ class ChargeSociales extends CommonObject
global $conf; global $conf;
$sql = "SELECT SUM(f.amount) as amount"; $sql = "SELECT SUM(f.amount) as amount";
$sql.= " FROM ".MAIN_DB_PREFIX."chargesociales as f"; $sql .= " FROM ".MAIN_DB_PREFIX."chargesociales as f";
$sql.= " WHERE f.entity = ".$conf->entity; $sql .= " WHERE f.entity = ".$conf->entity;
$sql.= " AND paye = 0"; $sql .= " AND paye = 0";
if ($year) { if ($year) {
$sql .= " AND f.datev >= '$y-01-01' AND f.datev <= '$y-12-31' "; $sql .= " AND f.datev >= '$y-01-01' AND f.datev <= '$y-12-31' ";
@ -441,8 +441,8 @@ class ChargeSociales extends CommonObject
{ {
// phpcs:enable // phpcs:enable
$sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales SET"; $sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales SET";
$sql.= " paye = 1"; $sql .= " paye = 1";
$sql.= " WHERE rowid = ".$this->id; $sql .= " WHERE rowid = ".$this->id;
$return = $this->db->query($sql); $return = $this->db->query($sql);
if ($return) return 1; if ($return) return 1;
else return -1; else return -1;
@ -459,8 +459,8 @@ class ChargeSociales extends CommonObject
{ {
// phpcs:enable // phpcs:enable
$sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales SET"; $sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales SET";
$sql.= " paye = 0"; $sql .= " paye = 0";
$sql.= " WHERE rowid = ".$this->id; $sql .= " WHERE rowid = ".$this->id;
$return = $this->db->query($sql); $return = $this->db->query($sql);
if ($return) return 1; if ($return) return 1;
else return -1; else return -1;
@ -549,9 +549,9 @@ class ChargeSociales extends CommonObject
{ {
global $langs, $conf, $user, $form; global $langs, $conf, $user, $form;
if (! empty($conf->dol_no_mouse_hover)) $notooltip=1; // Force disable tooltips if (!empty($conf->dol_no_mouse_hover)) $notooltip = 1; // Force disable tooltips
$result=''; $result = '';
$url = DOL_URL_ROOT.'/compta/sociales/card.php?id='.$this->id; $url = DOL_URL_ROOT.'/compta/sociales/card.php?id='.$this->id;
@ -607,20 +607,20 @@ class ChargeSociales extends CommonObject
*/ */
public function getSommePaiement() public function getSommePaiement()
{ {
$table='paiementcharge'; $table = 'paiementcharge';
$field='fk_charge'; $field = 'fk_charge';
$sql = 'SELECT sum(amount) as amount'; $sql = 'SELECT sum(amount) as amount';
$sql.= ' FROM '.MAIN_DB_PREFIX.$table; $sql .= ' FROM '.MAIN_DB_PREFIX.$table;
$sql.= ' WHERE '.$field.' = '.$this->id; $sql .= ' WHERE '.$field.' = '.$this->id;
dol_syslog(get_class($this)."::getSommePaiement", LOG_DEBUG); dol_syslog(get_class($this)."::getSommePaiement", LOG_DEBUG);
$resql=$this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) { if ($resql) {
$amount=0; $amount = 0;
$obj = $this->db->fetch_object($resql); $obj = $this->db->fetch_object($resql);
if ($obj) $amount=$obj->amount?$obj->amount:0; if ($obj) $amount = $obj->amount ? $obj->amount : 0;
$this->db->free($resql); $this->db->free($resql);
return $amount; return $amount;
@ -640,12 +640,12 @@ class ChargeSociales extends CommonObject
public function info($id) public function info($id)
{ {
$sql = "SELECT e.rowid, e.tms as datem, e.date_creation as datec, e.date_valid as datev, e.import_key,"; $sql = "SELECT e.rowid, e.tms as datem, e.date_creation as datec, e.date_valid as datev, e.import_key,";
$sql.= " e.fk_user_author, e.fk_user_modif, e.fk_user_valid"; $sql .= " e.fk_user_author, e.fk_user_modif, e.fk_user_valid";
$sql.= " FROM ".MAIN_DB_PREFIX."chargesociales as e"; $sql .= " FROM ".MAIN_DB_PREFIX."chargesociales as e";
$sql.= " WHERE e.rowid = ".$id; $sql .= " WHERE e.rowid = ".$id;
dol_syslog(get_class($this)."::info", LOG_DEBUG); dol_syslog(get_class($this)."::info", LOG_DEBUG);
$result=$this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)
{ {
if ($this->db->num_rows($result)) if ($this->db->num_rows($result))
@ -696,14 +696,14 @@ class ChargeSociales extends CommonObject
public function initAsSpecimen() public function initAsSpecimen()
{ {
// Initialize parameters // Initialize parameters
$this->id=0; $this->id = 0;
$this->ref = 'SPECIMEN'; $this->ref = 'SPECIMEN';
$this->specimen=1; $this->specimen = 1;
$this->paye = 0; $this->paye = 0;
$this->date = dol_now(); $this->date = dol_now();
$this->date_ech=$this->date+3600*24*30; $this->date_ech = $this->date + 3600 * 24 * 30;
$this->periode=$this->date+3600*24*30; $this->periode = $this->date + 3600 * 24 * 30;
$this->amount=100; $this->amount = 100;
$this->label = 'Social contribution label'; $this->label = 'Social contribution label';
$this->type = 1; $this->type = 1;
$this->type_label = 'Type of social contribution'; $this->type_label = 'Type of social contribution';

View File

@ -78,54 +78,54 @@ if ($action == 'add' && ! empty($permissiontoadd))
} }
} }
if (! $error) if (!$error)
{ {
$result=$object->create($user); $result = $object->create($user);
if ($result > 0) if ($result > 0)
{ {
// Creation OK // Creation OK
$urltogo = $backtopage ? str_replace('__ID__', $result, $backtopage) : $backurlforlist; $urltogo = $backtopage ? str_replace('__ID__', $result, $backtopage) : $backurlforlist;
$urltogo = preg_replace('/--IDFORBACKTOPAGE--/', $object->id, $urltogo); // New method to autoselect project after a New on another form object creation $urltogo = preg_replace('/--IDFORBACKTOPAGE--/', $object->id, $urltogo); // New method to autoselect project after a New on another form object creation
header("Location: ".$urltogo); header("Location: ".$urltogo);
exit; exit;
} }
else else
{ {
// Creation KO // Creation KO
if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); if (!empty($object->errors)) setEventMessages(null, $object->errors, 'errors');
else setEventMessages($object->error, null, 'errors'); else setEventMessages($object->error, null, 'errors');
$action='create'; $action = 'create';
} }
} }
else else
{ {
$action='create'; $action = 'create';
} }
} }
// Action to update record // Action to update record
if ($action == 'update' && ! empty($permissiontoadd)) if ($action == 'update' && !empty($permissiontoadd))
{ {
foreach ($object->fields as $key => $val) foreach ($object->fields as $key => $val)
{ {
if (! GETPOSTISSET($key)) continue; // The field was not submited to be edited if (!GETPOSTISSET($key)) continue; // The field was not submited to be edited
if (in_array($key, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat', 'fk_user_modif', 'import_key'))) continue; // Ignore special fields if (in_array($key, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat', 'fk_user_modif', 'import_key'))) continue; // Ignore special fields
// Set value to update // Set value to update
if (in_array($object->fields[$key]['type'], array('text', 'html'))) { if (in_array($object->fields[$key]['type'], array('text', 'html'))) {
$value = GETPOST($key, 'none'); $value = GETPOST($key, 'none');
} elseif ($object->fields[$key]['type']=='date') { } elseif ($object->fields[$key]['type'] == 'date') {
$value = dol_mktime(12, 0, 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year')); $value = dol_mktime(12, 0, 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year'));
} elseif ($object->fields[$key]['type']=='datetime') { } elseif ($object->fields[$key]['type'] == 'datetime') {
$value = dol_mktime(GETPOST($key.'hour'), GETPOST($key.'min'), 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year')); $value = dol_mktime(GETPOST($key.'hour'), GETPOST($key.'min'), 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year'));
} elseif (in_array($object->fields[$key]['type'], array('price', 'real'))) { } elseif (in_array($object->fields[$key]['type'], array('price', 'real'))) {
$value = price2num(GETPOST($key)); $value = price2num(GETPOST($key));
} else { } else {
$value = GETPOST($key, 'alpha'); $value = GETPOST($key, 'alpha');
} }
if (preg_match('/^integer:/i', $object->fields[$key]['type']) && $value == '-1') $value=''; // This is an implicit foreign key field if (preg_match('/^integer:/i', $object->fields[$key]['type']) && $value == '-1') $value = ''; // This is an implicit foreign key field
if (! empty($object->fields[$key]['foreignkey']) && $value == '-1') $value=''; // This is an explicit foreign key field if (!empty($object->fields[$key]['foreignkey']) && $value == '-1') $value = ''; // This is an explicit foreign key field
$object->$key=$value; $object->$key = $value;
if ($val['notnull'] > 0 && $object->$key == '' && is_null($val['default'])) if ($val['notnull'] > 0 && $object->$key == '' && is_null($val['default']))
{ {
$error++; $error++;
@ -133,28 +133,28 @@ if ($action == 'update' && ! empty($permissiontoadd))
} }
} }
if (! $error) if (!$error)
{ {
$result=$object->update($user); $result = $object->update($user);
if ($result > 0) if ($result > 0)
{ {
$action='view'; $action = 'view';
} }
else else
{ {
// Creation KO // Creation KO
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($object->error, $object->errors, 'errors');
$action='edit'; $action = 'edit';
} }
} }
else else
{ {
$action='edit'; $action = 'edit';
} }
} }
// Action to update one extrafield // Action to update one extrafield
if ($action == "update_extras" && ! empty($permissiontoadd)) if ($action == "update_extras" && !empty($permissiontoadd))
{ {
$object->fetch(GETPOST('id', 'int')); $object->fetch(GETPOST('id', 'int'));
@ -162,7 +162,7 @@ if ($action == "update_extras" && ! empty($permissiontoadd))
$attributekeylong = 'options_'.$attributekey; $attributekeylong = 'options_'.$attributekey;
$object->array_options['options_'.$attributekey] = GETPOST($attributekeylong, ' alpha'); $object->array_options['options_'.$attributekey] = GETPOST($attributekeylong, ' alpha');
$result = $object->insertExtraFields(empty($triggermodname)?'':$triggermodname, $user); $result = $object->insertExtraFields(empty($triggermodname) ? '' : $triggermodname, $user);
if ($result > 0) if ($result > 0)
{ {
setEventMessages($langs->trans('RecordSaved'), null, 'mesgs'); setEventMessages($langs->trans('RecordSaved'), null, 'mesgs');
@ -176,15 +176,15 @@ if ($action == "update_extras" && ! empty($permissiontoadd))
} }
// Action to delete // Action to delete
if ($action == 'confirm_delete' && ! empty($permissiontodelete)) if ($action == 'confirm_delete' && !empty($permissiontodelete))
{ {
if (! ($object->id > 0)) if (!($object->id > 0))
{ {
dol_print_error('', 'Error, object must be fetched before being deleted'); dol_print_error('', 'Error, object must be fetched before being deleted');
exit; exit;
} }
$result=$object->delete($user); $result = $object->delete($user);
if ($result > 0) if ($result > 0)
{ {
// Delete OK // Delete OK
@ -194,13 +194,13 @@ if ($action == 'confirm_delete' && ! empty($permissiontodelete))
} }
else else
{ {
if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); if (!empty($object->errors)) setEventMessages(null, $object->errors, 'errors');
else setEventMessages($object->error, null, 'errors'); else setEventMessages($object->error, null, 'errors');
} }
} }
// Remove a line // Remove a line
if ($action == 'confirm_deleteline' && $confirm == 'yes' && ! empty($permissiontoadd)) if ($action == 'confirm_deleteline' && $confirm == 'yes' && !empty($permissiontoadd))
{ {
$result = $object->deleteline($user, $lineid); $result = $object->deleteline($user, $lineid);
if ($result > 0) if ($result > 0)
@ -216,7 +216,7 @@ if ($action == 'confirm_deleteline' && $confirm == 'yes' && ! empty($permissiont
{ {
$newlang = $object->thirdparty->default_lang; $newlang = $object->thirdparty->default_lang;
} }
if (! empty($newlang)) { if (!empty($newlang)) {
$outputlangs = new Translate("", $conf); $outputlangs = new Translate("", $conf);
$outputlangs->setDefaultLang($newlang); $outputlangs->setDefaultLang($newlang);
} }
@ -248,11 +248,11 @@ if ($action == 'confirm_validate' && $confirm == 'yes' && $permissiontoadd)
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09'); if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09');
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
if (! empty($newlang)) { if (!empty($newlang)) {
$outputlangs = new Translate("", $conf); $outputlangs = new Translate("", $conf);
$outputlangs->setDefaultLang($newlang); $outputlangs->setDefaultLang($newlang);
} }
$model=$object->modelpdf; $model = $object->modelpdf;
$ret = $object->fetch($id); // Reload to get new records $ret = $object->fetch($id); // Reload to get new records
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
@ -277,11 +277,11 @@ if ($action == 'confirm_close' && $confirm == 'yes' && $permissiontoadd)
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09'); if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09');
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
if (! empty($newlang)) { if (!empty($newlang)) {
$outputlangs = new Translate("", $conf); $outputlangs = new Translate("", $conf);
$outputlangs->setDefaultLang($newlang); $outputlangs->setDefaultLang($newlang);
} }
$model=$object->modelpdf; $model = $object->modelpdf;
$ret = $object->fetch($id); // Reload to get new records $ret = $object->fetch($id); // Reload to get new records
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
@ -320,11 +320,11 @@ if ($action == 'confirm_reopen' && $confirm == 'yes' && $permissiontoadd)
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09'); if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09');
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
if (! empty($newlang)) { if (!empty($newlang)) {
$outputlangs = new Translate("", $conf); $outputlangs = new Translate("", $conf);
$outputlangs->setDefaultLang($newlang); $outputlangs->setDefaultLang($newlang);
} }
$model=$object->modelpdf; $model = $object->modelpdf;
$ret = $object->fetch($id); // Reload to get new records $ret = $object->fetch($id); // Reload to get new records
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
@ -337,30 +337,30 @@ if ($action == 'confirm_reopen' && $confirm == 'yes' && $permissiontoadd)
} }
// Action clone object // Action clone object
if ($action == 'confirm_clone' && $confirm == 'yes' && ! empty($permissiontoadd)) if ($action == 'confirm_clone' && $confirm == 'yes' && !empty($permissiontoadd))
{ {
if (1==0 && ! GETPOST('clone_content') && ! GETPOST('clone_receivers')) if (1 == 0 && !GETPOST('clone_content') && !GETPOST('clone_receivers'))
{ {
setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors');
} }
else else
{ {
$objectutil = dol_clone($object, 1); // To avoid to denaturate loaded object when setting some properties for clone or if createFromClone modifies the object. We use native clone to keep this->db valid. $objectutil = dol_clone($object, 1); // To avoid to denaturate loaded object when setting some properties for clone or if createFromClone modifies the object. We use native clone to keep this->db valid.
//$objectutil->date = dol_mktime(12, 0, 0, GETPOST('newdatemonth', 'int'), GETPOST('newdateday', 'int'), GETPOST('newdateyear', 'int')); //$objectutil->date = dol_mktime(12, 0, 0, GETPOST('newdatemonth', 'int'), GETPOST('newdateday', 'int'), GETPOST('newdateyear', 'int'));
// ... // ...
$result=$objectutil->createFromClone($user, (($object->id > 0) ? $object->id : $id)); $result = $objectutil->createFromClone($user, (($object->id > 0) ? $object->id : $id));
if (is_object($result) || $result > 0) if (is_object($result) || $result > 0)
{ {
$newid = 0; $newid = 0;
if (is_object($result)) $newid = $result->id; if (is_object($result)) $newid = $result->id;
else $newid = $result; else $newid = $result;
header("Location: ".$_SERVER['PHP_SELF'].'?id='.$newid); // Open record of new object header("Location: ".$_SERVER['PHP_SELF'].'?id='.$newid); // Open record of new object
exit; exit;
} }
else else
{ {
setEventMessages($objectutil->error, $objectutil->errors, 'errors'); setEventMessages($objectutil->error, $objectutil->errors, 'errors');
$action=''; $action = '';
} }
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -228,9 +228,10 @@ class FormWebsite
* @param int $pageid Preselected container ID * @param int $pageid Preselected container ID
* @param int $showempty Show empty record * @param int $showempty Show empty record
* @param string $action Action on page that use this select list * @param string $action Action on page that use this select list
* @param string $morecss More CSS
* @return string HTML select component with list of type of containers * @return string HTML select component with list of type of containers
*/ */
public function selectContainer($website, $htmlname = 'pageid', $pageid = 0, $showempty = 0, $action = '') public function selectContainer($website, $htmlname = 'pageid', $pageid = 0, $showempty = 0, $action = '', $morecss = 'minwidth200')
{ {
global $langs; global $langs;
@ -239,11 +240,11 @@ class FormWebsite
$out=''; $out='';
if ($atleastonepage && $action != 'editsource') if ($atleastonepage && $action != 'editsource')
{ {
$out.='<select name="'.$htmlname.'" id="'.$htmlname.'" class="minwidth200 maxwidth300">'; $out.='<select name="'.$htmlname.'" id="'.$htmlname.'" class="maxwidth300'.($morecss ? ' '.$morecss : '').'">';
} }
else else
{ {
$out.='<select name="pageidbis" id="pageid" class="minwidth200 maxwidth300" disabled="disabled">'; $out.='<select name="pageidbis" id="pageid" class="maxwidth300'.($morecss ? ' '.$morecss : '').'" disabled="disabled">';
} }
if ($showempty || ! $atleastonepage) $out.='<option value="-1">&nbsp;</option>'; if ($showempty || ! $atleastonepage) $out.='<option value="-1">&nbsp;</option>';

View File

@ -1,6 +1,7 @@
<?php <?php
/* Copyright (C) 2013-2018 Jean-François FERRY <hello@librethic.io> /* Copyright (C) 2013-2018 Jean-François FERRY <hello@librethic.io>
* Copyright (C) 2016 Christophe Battarel <christophe@altairis.fr> * Copyright (C) 2016 Christophe Battarel <christophe@altairis.fr>
* Copyright (C) 2019 Frédéric France <frederic.france@netlogic.fr>
* *
* 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
@ -180,10 +181,10 @@ function showDirectPublicLink($object)
} }
/** /**
* Generate a random id * Generate a random id
* *
* @param string $car Char to generate key * @param int $car Length of string to generate key
* @return void * @return string
*/ */
function generate_random_id($car = 16) function generate_random_id($car = 16)
{ {

View File

@ -420,6 +420,22 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
print '</td></tr>'; print '</td></tr>';
// Set variables of theme
$colorbackhmenu1 = '';
$colorbackvmenu1 = '';
$colortexttitlenotab = '';
$colorbacktitle1 = '';
$colortexttitle = '';
$colorbacklineimpair1 = '';
$colorbacklinepair1 = '';
$colortextlink = '';
$colorbacklinepairhover = '';
$colorbacklinepairhover = '';
$colorbacklinepairchecked = '';
if (file_exists(DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/theme_vars.inc.php')) {
include DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/theme_vars.inc.php';
}
// Show logo // Show logo
if ($foruserprofile) if ($foruserprofile)
{ {
@ -563,8 +579,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
} }
else else
{ {
$default='5a6482'; $default=(empty($colorbackhmenu1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbackhmenu1)));
if ($conf->theme == 'md') $default='5a3278';
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>'; print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
@ -612,8 +627,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
} }
else else
{ {
$default='f0f0f0'; $default=(empty($colorbackvmenu1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbackvmenu1)));
if ($conf->theme == 'md') $default='ffffff';
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td>'.$langs->trans("LeftMenuBackgroundColor").'</td>'; print '<td>'.$langs->trans("LeftMenuBackgroundColor").'</td>';
@ -641,6 +655,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
} }
else else
{ {
$default=(empty($colortexttitlenotab) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitlenotab)));
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td>'.$langs->trans("TextTitleColor").'</td>'; print '<td>'.$langs->trans("TextTitleColor").'</td>';
print '<td colspan="'.($colspan-1).'">'; print '<td colspan="'.($colspan-1).'">';
@ -652,7 +668,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
{ {
print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLENOTAB, $langs->trans("Default")); print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLENOTAB, $langs->trans("Default"));
} }
print ' &nbsp; <span class="nowraponall">('.$langs->trans("Default").': <strong><span style="color: #643c14">643c14</span></strong>) '; print ' &nbsp; <span class="nowraponall">('.$langs->trans("Default").': <strong><span style="color: #'.$default.'">'.$default.'</span></strong>) ';
print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
print '</span>'; print '</span>';
print '</td>'; print '</td>';
@ -666,6 +682,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
} }
else else
{ {
$default=(empty($colorbacktitle1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacktitle1)));
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td>'.$langs->trans("BackgroundTableTitleColor").'</td>'; print '<td>'.$langs->trans("BackgroundTableTitleColor").'</td>';
print '<td colspan="'.($colspan-1).'">'; print '<td colspan="'.($colspan-1).'">';
@ -677,7 +695,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
{ {
print $formother->showColor($conf->global->THEME_ELDY_BACKTITLE1, $langs->trans("Default")); print $formother->showColor($conf->global->THEME_ELDY_BACKTITLE1, $langs->trans("Default"));
} }
print ' &nbsp; <span class="nowraponall">('.$langs->trans("Default").': <strong>f0f0f0</strong>) '; // $colorbacktitle1 in CSS print ' &nbsp; <span class="nowraponall">('.$langs->trans("Default").': <strong>'.$default.'</strong>) '; // $colorbacktitle1 in CSS
print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
print '</span>'; print '</span>';
print '</td>'; print '</td>';
@ -691,6 +709,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
} }
else else
{ {
$default=(empty($colortexttitle) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitle)));
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td>'.$langs->trans("BackgroundTableTitleTextColor").'</td>'; print '<td>'.$langs->trans("BackgroundTableTitleTextColor").'</td>';
print '<td colspan="'.($colspan-1).'">'; print '<td colspan="'.($colspan-1).'">';
@ -702,7 +722,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
{ {
print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLE, $langs->trans("Default")); print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLE, $langs->trans("Default"));
} }
print ' &nbsp; <span class="nowraponall">('.$langs->trans("Default").': <strong><span style="color: #000000">000000</span></strong>) '; print ' &nbsp; <span class="nowraponall">('.$langs->trans("Default").': <strong><span style="color: #'.$default.'">'.$default.'</span></strong>) ';
print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
print '</span>'; print '</span>';
print '</td>'; print '</td>';
@ -716,8 +736,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
} }
else else
{ {
$default='ffffff'; $default=(empty($colorbacklineimpair1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklineimpair1)));
if ($conf->theme == 'md') $default='ffffff';
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td>'.$langs->trans("BackgroundTableLineOddColor").'</td>'; print '<td>'.$langs->trans("BackgroundTableLineOddColor").'</td>';
@ -745,8 +764,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
} }
else else
{ {
$default='f8f8f8'; $default=(empty($colorbacklinepair1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepair1)));
if ($conf->theme == 'md') $default='f8f8f8';
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td>'.$langs->trans("BackgroundTableLineEvenColor").'</td>'; print '<td>'.$langs->trans("BackgroundTableLineEvenColor").'</td>';
@ -794,6 +812,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
} }
else else
{ {
$default=(empty($colortextlink) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortextlink)));
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td>'.$langs->trans("LinkColor").'</td>'; print '<td>'.$langs->trans("LinkColor").'</td>';
print '<td colspan="'.($colspan-1).'">'; print '<td colspan="'.($colspan-1).'">';
@ -812,7 +832,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
print $langs->trans("Default"); print $langs->trans("Default");
} }
} }
print ' &nbsp; <span class="nowraponall">('.$langs->trans("Default").': <strong><span style="color: #000078">000078</span></strong>) '; print ' &nbsp; <span class="nowraponall">('.$langs->trans("Default").': <strong><span style="color: #'.$default.'">'.$default.'</span></strong>) ';
print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
print '</span>'; print '</span>';
print '</td>'; print '</td>';
@ -834,6 +854,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
*/ */
} }
else { else {
$default=(empty($colorbacklinepairhover) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepairhover)));
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td>'.$langs->trans("HighlightLinesColor").'</td>'; print '<td>'.$langs->trans("HighlightLinesColor").'</td>';
print '<td colspan="'.($colspan-1).'">'; print '<td colspan="'.($colspan-1).'">';
@ -841,22 +863,22 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
//print ' &nbsp; ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; //print ' &nbsp; ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
if ($edit) if ($edit)
{ {
if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='e6edf0'; if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color=colorArrayToHex(colorStringToArray($colorbacklinepairhover));
else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER, array()), ''); else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER, array()), '');
print $formother->selectColor($color, 'THEME_ELDY_USE_HOVER', 'formcolor', 1).' '; print $formother->selectColor($color, 'THEME_ELDY_USE_HOVER', 'formcolor', 1).' ';
} }
else else
{ {
if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='e6edf0'; if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color=colorArrayToHex(colorStringToArray($colorbacklinepairhover));
else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER, array()), ''); else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER, array()), '');
if ($color) if ($color)
{ {
if ($color != 'e6edf0') print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">'; if ($color != colorArrayToHex(colorStringToArray($colorbacklinepairhover))) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
else print $langs->trans("Default"); else print $langs->trans("Default");
} }
else print $langs->trans("Default"); else print $langs->trans("Default");
} }
print ' &nbsp; <span class="nowraponall">('.$langs->trans("Default").': <strong>e6edf0</strong>) '; print ' &nbsp; <span class="nowraponall">('.$langs->trans("Default").': <strong>'.$default.'</strong>) ';
print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
print '</span>'; print '</span>';
print '</td>'; print '</td>';
@ -878,6 +900,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
} }
else else
{ {
$default=(empty($colorbacklinepairchecked) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepairchecked)));
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td>'.$langs->trans("HighlightLinesChecked").'</td>'; print '<td>'.$langs->trans("HighlightLinesChecked").'</td>';
print '<td colspan="'.($colspan-1).'">'; print '<td colspan="'.($colspan-1).'">';
@ -900,7 +924,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
} }
else print $langs->trans("Default"); else print $langs->trans("Default");
} }
print ' &nbsp; <span class="nowraponall">('.$langs->trans("Default").': <strong>e6edf0</strong>) '; print ' &nbsp; <span class="nowraponall">('.$langs->trans("Default").': <strong>'.$default.'</strong>) ';
print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
print '</span>'; print '</span>';
print '</td>'; print '</td>';

View File

@ -25,7 +25,7 @@
* \ingroup bom * \ingroup bom
* \brief Description and activation file for module Bom * \brief Description and activation file for module Bom
*/ */
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
/** /**
@ -75,7 +75,7 @@ class modBom extends DolibarrModules
// Name of image file used for this module. // Name of image file used for this module.
// If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue'
// If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module' // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module'
$this->picto='bom'; $this->picto = 'bom';
// Define some features supported by module (triggers, login, substitutions, menus, css, etc...) // Define some features supported by module (triggers, login, substitutions, menus, css, etc...)
$this->module_parts = array( $this->module_parts = array(
@ -103,15 +103,15 @@ class modBom extends DolibarrModules
$this->config_page_url = array("bom.php"); $this->config_page_url = array("bom.php");
// Dependencies // Dependencies
$this->hidden = false; // A condition to hide module $this->hidden = false; // A condition to hide module
$this->depends = array('modProduct'); // List of module class names as string that must be enabled if this module is enabled. Example: array('always1'=>'modModuleToEnable1','always2'=>'modModuleToEnable2', 'FR1'=>'modModuleToEnableFR'...) $this->depends = array('modProduct'); // List of module class names as string that must be enabled if this module is enabled. Example: array('always1'=>'modModuleToEnable1','always2'=>'modModuleToEnable2', 'FR1'=>'modModuleToEnableFR'...)
$this->requiredby = array('modMrp'); // List of module class names as string to disable if this one is disabled. Example: array('modModuleToDisable1', ...) $this->requiredby = array('modMrp'); // List of module class names as string to disable if this one is disabled. Example: array('modModuleToDisable1', ...)
$this->conflictwith = array(); // List of module class names as string this module is in conflict with. Example: array('modModuleToDisable1', ...) $this->conflictwith = array(); // List of module class names as string this module is in conflict with. Example: array('modModuleToDisable1', ...)
$this->langfiles = array("mrp"); $this->langfiles = array("mrp");
//$this->phpmin = array(5,4); // Minimum version of PHP required by module //$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(9,0); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(9, 0); // Minimum version of Dolibarr required by module
$this->warnings_activation = array(); // Warning to show when we activate module. array('always'='text') or array('FR'='textfr','ES'='textes'...) $this->warnings_activation = array(); // Warning to show when we activate module. array('always'='text') or array('FR'='textfr','ES'='textes'...)
$this->warnings_activation_ext = array(); // Warning to show when we activate an external module. array('always'='text') or array('FR'='textfr','ES'='textes'...) $this->warnings_activation_ext = array(); // Warning to show when we activate an external module. array('always'='text') or array('FR'='textfr','ES'='textes'...)
//$this->automatic_activation = array('FR'=>'BomWasAutomaticallyActivatedBecauseOfYourCountryChoice'); //$this->automatic_activation = array('FR'=>'BomWasAutomaticallyActivatedBecauseOfYourCountryChoice');
//$this->always_enabled = true; // If true, can't be disabled //$this->always_enabled = true; // If true, can't be disabled
@ -132,10 +132,10 @@ class modBom extends DolibarrModules
'fr_FR:ParentCompany'=>'Maison mère ou revendeur' 'fr_FR:ParentCompany'=>'Maison mère ou revendeur'
)*/ )*/
if (! isset($conf->bom) || ! isset($conf->bom->enabled)) if (!isset($conf->bom) || !isset($conf->bom->enabled))
{ {
$conf->bom=new stdClass(); $conf->bom = new stdClass();
$conf->bom->enabled=0; $conf->bom->enabled = 0;
} }
@ -281,28 +281,28 @@ class modBom extends DolibarrModules
// Exports // Exports
$r=1; $r = 1;
/* BEGIN MODULEBUILDER EXPORT BILLOFMATERIALS */ /* BEGIN MODULEBUILDER EXPORT BILLOFMATERIALS */
$langs->load("mrp"); $langs->load("mrp");
$this->export_code[$r]=$this->rights_class.'_'.$r; $this->export_code[$r] = $this->rights_class.'_'.$r;
$this->export_label[$r]='BomAndBomLines'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_label[$r] = 'BomAndBomLines'; // Translation key (used only if key ExportDataset_xxx_z not found)
$this->export_icon[$r]='bom'; $this->export_icon[$r] = 'bom';
$keyforclass = 'BOM'; $keyforclassfile='/bom/class/bom.class.php'; $keyforelement='bom'; $keyforclass = 'BOM'; $keyforclassfile = '/bom/class/bom.class.php'; $keyforelement = 'bom';
include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php'; include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php';
$keyforclass = 'BOMLine'; $keyforclassfile='/bom/class/bom.class.php'; $keyforelement='bomline'; $keyforalias='tl'; $keyforclass = 'BOMLine'; $keyforclassfile = '/bom/class/bom.class.php'; $keyforelement = 'bomline'; $keyforalias = 'tl';
include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php'; include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php';
unset($this->export_fields_array[$r]['tl.fk_bom']); unset($this->export_fields_array[$r]['tl.fk_bom']);
$keyforselect ='bom_bom'; $keyforaliasextra='extra'; $keyforelement='bom'; $keyforselect = 'bom_bom'; $keyforaliasextra = 'extra'; $keyforelement = 'bom';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$keyforselect ='bom_bomline'; $keyforaliasextra='extraline'; $keyforelement='bomline'; $keyforselect = 'bom_bomline'; $keyforaliasextra = 'extraline'; $keyforelement = 'bomline';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$this->export_dependencies_array[$r]=array('bomline'=>'tl.rowid'); // To force to activate one or several fields if we select some fields that need same (like to select a unique key if we ask a field of a child to avoid the DISTINCT to discard them, or for computed field than need several other fields) $this->export_dependencies_array[$r] = array('bomline'=>'tl.rowid'); // To force to activate one or several fields if we select some fields that need same (like to select a unique key if we ask a field of a child to avoid the DISTINCT to discard them, or for computed field than need several other fields)
$this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_start[$r] = 'SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'bom_bom as t'; $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'bom_bom as t';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'bom_bomline as tl ON tl.fk_bom = t.rowid'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'bom_bomline as tl ON tl.fk_bom = t.rowid';
$this->export_sql_end[$r] .=' WHERE 1 = 1'; $this->export_sql_end[$r] .= ' WHERE 1 = 1';
$this->export_sql_end[$r] .=' AND t.entity IN ('.getEntity('bom').')'; $this->export_sql_end[$r] .= ' AND t.entity IN ('.getEntity('bom').')';
$r++; $r++;
/* END MODULEBUILDER EXPORT BILLOFMATERIALS */ /* END MODULEBUILDER EXPORT BILLOFMATERIALS */
} }
@ -319,7 +319,7 @@ class modBom extends DolibarrModules
{ {
global $conf, $langs; global $conf, $langs;
$result=$this->_load_tables('/bom/sql/'); $result = $this->_load_tables('/bom/sql/');
if ($result < 0) return -1; // Do not activate module if not allowed errors found on module SQL queries (the _load_table run sql with run_sql with error allowed parameter to 'default') if ($result < 0) return -1; // Do not activate module if not allowed errors found on module SQL queries (the _load_table run sql with run_sql with error allowed parameter to 'default')
// Create extrafields // Create extrafields

View File

@ -127,7 +127,16 @@ if ($permission) {
<?php $selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany', '', 0, '', 'minwidth300imp'); ?> <?php $selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany', '', 0, '', 'minwidth300imp'); ?>
</div> </div>
<div class="tagtd maxwidthonsmartphone noborderbottom"> <div class="tagtd maxwidthonsmartphone noborderbottom">
<?php $nbofcontacts=$form->select_contacts(($selectedCompany > 0 ? $selectedCompany : -1), '', 'contactid', 3, '', '', 1, 'minwidth100imp'); ?> <?php
$nbofcontacts=$form->select_contacts(($selectedCompany > 0 ? $selectedCompany : -1), '', 'contactid', 3, '', '', 1, 'minwidth100imp');
$newcardbutton = '';
if (! empty($object->socid) && $object->socid > 1 && $user->rights->societe->creer)
{
$newcardbutton .= '<a href="'.DOL_URL_ROOT.'/contact/card.php?socid='.$object->socid.'&action=create&backtopage='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id).'" title="'.$langs->trans('NewContact').'"><span class="fa fa-plus-circle valignmiddle paddingleft"></span></a>';
}
print $newcardbutton;
?>
</div> </div>
<div class="tagtd maxwidthonsmartphone noborderbottom"> <div class="tagtd maxwidthonsmartphone noborderbottom">
<?php <?php
@ -156,8 +165,6 @@ if ($permission) {
</form> </form>
<?php <?php
$var = false;
$arrayofsource=array('internal','external'); // Show both link to user and thirdparties contacts $arrayofsource=array('internal','external'); // Show both link to user and thirdparties contacts
foreach($arrayofsource as $source) { foreach($arrayofsource as $source) {
$tmpobject=$object; $tmpobject=$object;
@ -168,10 +175,9 @@ foreach($arrayofsource as $source) {
$i = 0; $i = 0;
while ($i < $num) { while ($i < $num) {
$var = ! $var;
?> ?>
<form class="tagtr oddeven <?php echo ($var?'impair':'pair') ?>"> <form class="tagtr oddeven">
<div class="tagtd left"> <div class="tagtd left">
<?php if ($tab[$i]['source']=='internal') echo $langs->trans("User"); ?> <?php if ($tab[$i]['source']=='internal') echo $langs->trans("User"); ?>
<?php if ($tab[$i]['source']=='external') echo $langs->trans("ThirdPartyContact"); ?> <?php if ($tab[$i]['source']=='external') echo $langs->trans("ThirdPartyContact"); ?>

View File

@ -3,8 +3,8 @@
// Protection to avoid direct call of template // Protection to avoid direct call of template
if (empty($conf) || ! is_object($conf)) if (empty($conf) || ! is_object($conf))
{ {
print "Error, template page can't be called as URL"; print "Error, template page can't be called as URL";
exit; exit;
} }
if (empty($extrafieldsobjectkey) && is_object($object)) $extrafieldsobjectkey=$object->table_element; if (empty($extrafieldsobjectkey) && is_object($object)) $extrafieldsobjectkey=$object->table_element;
@ -12,40 +12,40 @@ if (empty($extrafieldsobjectkey) && is_object($object)) $extrafieldsobjectkey=$o
// Loop to show all columns of extrafields for the search title line // Loop to show all columns of extrafields for the search title line
if (! empty($extrafieldsobjectkey)) // $extrafieldsobject is the $object->table_element like 'societe', 'socpeople', ... if (! empty($extrafieldsobjectkey)) // $extrafieldsobject is the $object->table_element like 'societe', 'socpeople', ...
{ {
if (is_array($extrafields->attributes[$extrafieldsobjectkey]['label']) && count($extrafields->attributes[$extrafieldsobjectkey]['label'])) if (is_array($extrafields->attributes[$extrafieldsobjectkey]['label']) && count($extrafields->attributes[$extrafieldsobjectkey]['label']))
{ {
if (empty($extrafieldsobjectprefix)) $extrafieldsobjectprefix = 'ef.'; if (empty($extrafieldsobjectprefix)) $extrafieldsobjectprefix = 'ef.';
if (empty($search_options_pattern)) $search_options_pattern='search_options_'; if (empty($search_options_pattern)) $search_options_pattern='search_options_';
foreach($extrafields->attributes[$extrafieldsobjectkey]['label'] as $key => $val) foreach($extrafields->attributes[$extrafieldsobjectkey]['label'] as $key => $val)
{ {
if (! empty($arrayfields[$extrafieldsobjectprefix.$key]['checked'])) { if (! empty($arrayfields[$extrafieldsobjectprefix.$key]['checked'])) {
$align=$extrafields->getAlignFlag($key); $align=$extrafields->getAlignFlag($key);
$typeofextrafield=$extrafields->attributes[$extrafieldsobjectkey]['type'][$key]; $typeofextrafield=$extrafields->attributes[$extrafieldsobjectkey]['type'][$key];
print '<td class="liste_titre'.($align?' '.$align:'').'">'; print '<td class="liste_titre'.($align?' '.$align:'').'">';
$tmpkey=preg_replace('/'.$search_options_pattern.'/', '', $key); $tmpkey=preg_replace('/'.$search_options_pattern.'/', '', $key);
if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select')) && empty($extrafields->attributes[$extrafieldsobjectkey]['computed'][$key])) if (in_array($typeofextrafield, array('varchar', 'int', 'double')) && empty($extrafields->attributes[$extrafieldsobjectkey]['computed'][$key]))
{ {
$searchclass=''; $searchclass='';
if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; if (in_array($typeofextrafield, array('varchar'))) $searchclass='searchstring';
if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum';
print '<input class="flat'.($searchclass?' '.$searchclass:'').'" size="4" type="text" name="'.$search_options_pattern.$tmpkey.'" value="'.dol_escape_htmltag($search_array_options[$search_options_pattern.$tmpkey]).'">'; print '<input class="flat'.($searchclass?' '.$searchclass:'').'" size="4" type="text" name="'.$search_options_pattern.$tmpkey.'" value="'.dol_escape_htmltag($search_array_options[$search_options_pattern.$tmpkey]).'">';
} }
elseif (in_array($typeofextrafield, array('datetime','timestamp'))) elseif (in_array($typeofextrafield, array('datetime','timestamp')))
{ {
// TODO // TODO
// Use showInputField in a particular manner to have input with a comparison operator, not input for a specific value date-hour-minutes // Use showInputField in a particular manner to have input with a comparison operator, not input for a specific value date-hour-minutes
} }
else else
{ {
// for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid')
$morecss=''; $morecss='';
if (in_array($typeofextrafield, array('link', 'sellist'))) $morecss='maxwidth200'; if (in_array($typeofextrafield, array('link', 'sellist'))) $morecss='maxwidth200';
echo $extrafields->showInputField($key, $search_array_options[$search_options_pattern.$tmpkey], '', '', $search_options_pattern, $morecss, 0, $extrafieldsobjectkey, 1); echo $extrafields->showInputField($key, $search_array_options[$search_options_pattern.$tmpkey], '', '', $search_options_pattern, $morecss, 0, $extrafieldsobjectkey, 1);
} }
print '</td>'; print '</td>';
} }
} }
} }
} }

View File

@ -21,9 +21,9 @@
*/ */
/** /**
* \file htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php * \file htdocs/core/triggers/interface_90_modSociete_ContactRoles.class.php
* \ingroup agenda * \ingroup agenda
* \brief Trigger file for agenda module * \brief Trigger file for company - contactroles
*/ */
require_once DOL_DOCUMENT_ROOT.'/core/triggers/dolibarrtriggers.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/triggers/dolibarrtriggers.class.php';
@ -35,7 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/triggers/dolibarrtriggers.class.php';
class InterfaceContactRoles extends DolibarrTriggers class InterfaceContactRoles extends DolibarrTriggers
{ {
public $family = 'agenda'; public $family = 'agenda';
public $description = "Triggers of this module add actions in agenda according to setup made in agenda setup."; public $description = "Triggers of this module auto link contact to company.";
/** /**
* Version of the trigger * Version of the trigger
@ -73,7 +73,6 @@ class InterfaceContactRoles extends DolibarrTriggers
$socid=(property_exists($object, 'socid')?$object->socid:$object->fk_soc); $socid=(property_exists($object, 'socid')?$object->socid:$object->fk_soc);
if (! empty($socid) && $socid > 0) { if (! empty($socid) && $socid > 0) {
global $db, $langs;
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
$contactdefault = new Contact($this->db); $contactdefault = new Contact($this->db);
$contactdefault->socid=$socid; $contactdefault->socid=$socid;
@ -83,7 +82,7 @@ class InterfaceContactRoles extends DolibarrTriggers
if ($object->id > 0) if ($object->id > 0)
{ {
$class = get_class($object); $class = get_class($object);
$cloneFrom = new $class($db); $cloneFrom = new $class($this->db);
$r = $cloneFrom->fetch($object->id); $r = $cloneFrom->fetch($object->id);
if (!empty($cloneFrom->id)) $TContactAlreadyLinked = array_merge($cloneFrom->liste_contact(-1, 'external'), $cloneFrom->liste_contact(-1, 'internal')); if (!empty($cloneFrom->id)) $TContactAlreadyLinked = array_merge($cloneFrom->liste_contact(-1, 'external'), $cloneFrom->liste_contact(-1, 'internal'));

File diff suppressed because it is too large Load Diff

View File

@ -35,15 +35,15 @@ $allowinstall = 0;
$allowupgrade = false; $allowupgrade = false;
$checksok = 1; $checksok = 1;
$setuplang=GETPOST("selectlang", 'aZ09', 3)?GETPOST("selectlang", 'aZ09', 3):$langs->getDefaultLang(); $setuplang = GETPOST("selectlang", 'aZ09', 3) ?GETPOST("selectlang", 'aZ09', 3) : $langs->getDefaultLang();
$langs->setDefaultLang($setuplang); $langs->setDefaultLang($setuplang);
$langs->load("install"); $langs->load("install");
// Now we load forced/pre-set values from install.forced.php file. // Now we load forced/pre-set values from install.forced.php file.
$useforcedwizard=false; $useforcedwizard = false;
$forcedfile="./install.forced.php"; $forcedfile = "./install.forced.php";
if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; if ($conffile == "/etc/dolibarr/conf.php") $forcedfile = "/etc/dolibarr/install.forced.php";
if (@file_exists($forcedfile)) { if (@file_exists($forcedfile)) {
$useforcedwizard = true; $useforcedwizard = true;
include_once $forcedfile; include_once $forcedfile;
@ -56,7 +56,7 @@ dolibarr_install_syslog("- check: Dolibarr install/upgrade process started");
* View * View
*/ */
pHeader('', ''); // No next step for navigation buttons. Next step is defined by click on links. pHeader('', ''); // No next step for navigation buttons. Next step is defined by click on links.
//print "<br>\n"; //print "<br>\n";
@ -65,28 +65,28 @@ pHeader('', ''); // No next step for navigation buttons. Next step is define
print '<h3><img class="valigntextbottom" src="../theme/common/octicons/build/svg/gear.svg" width="20" alt="Database"> '.$langs->trans("MiscellaneousChecks").":</h3>\n"; print '<h3><img class="valigntextbottom" src="../theme/common/octicons/build/svg/gear.svg" width="20" alt="Database"> '.$langs->trans("MiscellaneousChecks").":</h3>\n";
// Check browser // Check browser
$useragent=$_SERVER['HTTP_USER_AGENT']; $useragent = $_SERVER['HTTP_USER_AGENT'];
if (! empty($useragent)) if (!empty($useragent))
{ {
$tmp=getBrowserInfo($_SERVER["HTTP_USER_AGENT"]); $tmp = getBrowserInfo($_SERVER["HTTP_USER_AGENT"]);
$browserversion=$tmp['browserversion']; $browserversion = $tmp['browserversion'];
$browsername=$tmp['browsername']; $browsername = $tmp['browsername'];
if ($browsername == 'ie' && $browserversion < 7) print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("WarningBrowserTooOld")."<br>\n"; if ($browsername == 'ie' && $browserversion < 7) print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("WarningBrowserTooOld")."<br>\n";
} }
// Check PHP version // Check PHP version
$arrayphpminversionerror = array(5,5,0); $arrayphpminversionerror = array(5, 5, 0);
$arrayphpminversionwarning = array(5,5,0); $arrayphpminversionwarning = array(5, 5, 0);
if (versioncompare(versionphparray(), $arrayphpminversionerror) < 0) // Minimum to use (error if lower) if (versioncompare(versionphparray(), $arrayphpminversionerror) < 0) // Minimum to use (error if lower)
{ {
print '<img src="../theme/eldy/img/error.png" alt="Error"> '.$langs->trans("ErrorPHPVersionTooLow", versiontostring($arrayphpminversionerror)); print '<img src="../theme/eldy/img/error.png" alt="Error"> '.$langs->trans("ErrorPHPVersionTooLow", versiontostring($arrayphpminversionerror));
$checksok=0; // 0=error, 1=warning $checksok = 0; // 0=error, 1=warning
} }
elseif (versioncompare(versionphparray(), $arrayphpminversionwarning) < 0) // Minimum supported (warning if lower) elseif (versioncompare(versionphparray(), $arrayphpminversionwarning) < 0) // Minimum supported (warning if lower)
{ {
print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPVersionTooLow", versiontostring($arrayphpminversionwarning)); print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPVersionTooLow", versiontostring($arrayphpminversionwarning));
$checksok=0; // 0=error, 1=warning $checksok = 0; // 0=error, 1=warning
} }
else else
{ {
@ -97,12 +97,12 @@ print "<br>\n";
// Check PHP support for $_POST // Check PHP support for $_POST
if (! isset($_GET["testget"]) && ! isset($_POST["testpost"])) if (!isset($_GET["testget"]) && !isset($_POST["testpost"]))
{ {
print '<img src="../theme/eldy/img/warning.png" alt="Warning"> '.$langs->trans("PHPSupportPOSTGETKo"); print '<img src="../theme/eldy/img/warning.png" alt="Warning"> '.$langs->trans("PHPSupportPOSTGETKo");
print ' (<a href="'.$_SERVER["PHP_SELF"].'?testget=ok">'.$langs->trans("Recheck").'</a>)'; print ' (<a href="'.$_SERVER["PHP_SELF"].'?testget=ok">'.$langs->trans("Recheck").'</a>)';
print "<br>\n"; print "<br>\n";
$checksok=0; $checksok = 0;
} }
else else
{ {
@ -111,10 +111,10 @@ else
// Check if sessions enabled // Check if sessions enabled
if (! function_exists("session_id")) if (!function_exists("session_id"))
{ {
print '<img src="../theme/eldy/img/error.png" alt="Error"> '.$langs->trans("ErrorPHPDoesNotSupportSessions")."<br>\n"; print '<img src="../theme/eldy/img/error.png" alt="Error"> '.$langs->trans("ErrorPHPDoesNotSupportSessions")."<br>\n";
$checksok=0; $checksok = 0;
} }
else else
{ {
@ -123,7 +123,7 @@ else
// Check if GD supported (we need GD for image conversion) // Check if GD supported (we need GD for image conversion)
if (! function_exists("imagecreate")) if (!function_exists("imagecreate"))
{ {
$langs->load("errors"); $langs->load("errors");
print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPDoesNotSupportGD")."<br>\n"; print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPDoesNotSupportGD")."<br>\n";
@ -136,7 +136,7 @@ else
// Check if Curl supported // Check if Curl supported
if (! function_exists("curl_init")) if (!function_exists("curl_init"))
{ {
$langs->load("errors"); $langs->load("errors");
print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPDoesNotSupportCurl")."<br>\n"; print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPDoesNotSupportCurl")."<br>\n";
@ -148,7 +148,7 @@ else
} }
// Check if PHP calendar extension is available // Check if PHP calendar extension is available
if (! function_exists("easter_date")) if (!function_exists("easter_date"))
{ {
print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPDoesNotSupportCalendar")."<br>\n"; print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPDoesNotSupportCalendar")."<br>\n";
} }
@ -159,7 +159,7 @@ else
// Check if UTF8 supported // Check if UTF8 supported
if (! function_exists("utf8_encode")) if (!function_exists("utf8_encode"))
{ {
$langs->load("errors"); $langs->load("errors");
print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPDoesNotSupportUTF8")."<br>\n"; print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPDoesNotSupportUTF8")."<br>\n";
@ -174,7 +174,7 @@ else
// Check if intl methods are supported // Check if intl methods are supported
if (empty($_SERVER["SERVER_ADMIN"]) || $_SERVER["SERVER_ADMIN"] != 'doliwamp@localhost') if (empty($_SERVER["SERVER_ADMIN"]) || $_SERVER["SERVER_ADMIN"] != 'doliwamp@localhost')
{ {
if (! function_exists("locale_get_primary_language") || ! function_exists("locale_get_region")) if (!function_exists("locale_get_primary_language") || !function_exists("locale_get_region"))
{ {
$langs->load("errors"); $langs->load("errors");
print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPDoesNotSupportIntl")."<br>\n"; print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPDoesNotSupportIntl")."<br>\n";
@ -188,18 +188,18 @@ if (empty($_SERVER["SERVER_ADMIN"]) || $_SERVER["SERVER_ADMIN"] != 'doliwamp@loc
// Check memory // Check memory
$memrequiredorig='64M'; $memrequiredorig = '64M';
$memrequired=64*1024*1024; $memrequired = 64 * 1024 * 1024;
$memmaxorig=@ini_get("memory_limit"); $memmaxorig = @ini_get("memory_limit");
$memmax=@ini_get("memory_limit"); $memmax = @ini_get("memory_limit");
if ($memmaxorig != '') if ($memmaxorig != '')
{ {
preg_match('/([0-9]+)([a-zA-Z]*)/i', $memmax, $reg); preg_match('/([0-9]+)([a-zA-Z]*)/i', $memmax, $reg);
if ($reg[2]) if ($reg[2])
{ {
if (strtoupper($reg[2]) == 'G') $memmax=$reg[1]*1024*1024*1024; if (strtoupper($reg[2]) == 'G') $memmax = $reg[1] * 1024 * 1024 * 1024;
if (strtoupper($reg[2]) == 'M') $memmax=$reg[1]*1024*1024; if (strtoupper($reg[2]) == 'M') $memmax = $reg[1] * 1024 * 1024;
if (strtoupper($reg[2]) == 'K') $memmax=$reg[1]*1024; if (strtoupper($reg[2]) == 'K') $memmax = $reg[1] * 1024;
} }
if ($memmax >= $memrequired || $memmax == -1) if ($memmax >= $memrequired || $memmax == -1)
{ {
@ -216,37 +216,37 @@ if ($memmaxorig != '')
clearstatcache(); clearstatcache();
if (is_readable($conffile) && filesize($conffile) > 8) if (is_readable($conffile) && filesize($conffile) > 8)
{ {
dolibarr_install_syslog("check: conf file '" . $conffile . "' already defined"); dolibarr_install_syslog("check: conf file '".$conffile."' already defined");
$confexists=1; $confexists = 1;
include_once $conffile; include_once $conffile;
$databaseok=1; $databaseok = 1;
if ($databaseok) if ($databaseok)
{ {
// Already installed for all parts (config and database). We can propose upgrade. // Already installed for all parts (config and database). We can propose upgrade.
$allowupgrade=true; $allowupgrade = true;
} }
else else
{ {
$allowupgrade=false; $allowupgrade = false;
} }
} }
else else
{ {
// If not, we create it // If not, we create it
dolibarr_install_syslog("check: we try to create conf file '" . $conffile . "'"); dolibarr_install_syslog("check: we try to create conf file '".$conffile."'");
$confexists=0; $confexists = 0;
// First we try by copying example // First we try by copying example
if (@copy($conffile.".example", $conffile)) if (@copy($conffile.".example", $conffile))
{ {
// Success // Success
dolibarr_install_syslog("check: successfully copied file " . $conffile . ".example into " . $conffile); dolibarr_install_syslog("check: successfully copied file ".$conffile.".example into ".$conffile);
} }
else else
{ {
// If failed, we try to create an empty file // If failed, we try to create an empty file
dolibarr_install_syslog("check: failed to copy file " . $conffile . ".example into " . $conffile . ". We try to create it.", LOG_WARNING); dolibarr_install_syslog("check: failed to copy file ".$conffile.".example into ".$conffile.". We try to create it.", LOG_WARNING);
$fp = @fopen($conffile, "w"); $fp = @fopen($conffile, "w");
if ($fp) if ($fp)
@ -255,17 +255,17 @@ else
@fputs($fp, "\n"); @fputs($fp, "\n");
fclose($fp); fclose($fp);
} }
else dolibarr_install_syslog("check: failed to create a new file " . $conffile . " into current dir " . getcwd() . ". Please check permissions.", LOG_ERR); else dolibarr_install_syslog("check: failed to create a new file ".$conffile." into current dir ".getcwd().". Please check permissions.", LOG_ERR);
} }
// First install: no upgrade necessary/required // First install: no upgrade necessary/required
$allowupgrade=false; $allowupgrade = false;
} }
// File is missing and cannot be created // File is missing and cannot be created
if (! file_exists($conffile)) if (!file_exists($conffile))
{ {
print '<img src="../theme/eldy/img/error.png" alt="Error"> '.$langs->trans("ConfFileDoesNotExistsAndCouldNotBeCreated", $conffiletoshow); print '<img src="../theme/eldy/img/error.png" alt="Error"> '.$langs->trans("ConfFileDoesNotExistsAndCouldNotBeCreated", $conffiletoshow);
print "<br><br>"; print "<br><br>";
@ -281,7 +281,7 @@ else
{ {
print '<img src="../theme/eldy/img/error.png" alt="Warning"> '.$langs->trans("ConfFileMustBeAFileNotADir", $conffiletoshow); print '<img src="../theme/eldy/img/error.png" alt="Warning"> '.$langs->trans("ConfFileMustBeAFileNotADir", $conffiletoshow);
$allowinstall=0; $allowinstall = 0;
} }
// File exists but cannot be modified // File exists but cannot be modified
elseif (!is_writable($conffile)) elseif (!is_writable($conffile))
@ -298,7 +298,7 @@ else
print '<img src="../theme/eldy/img/tick.png" alt="Warning"> '.$langs->trans("ConfFileIsNotWritable", $conffiletoshow); print '<img src="../theme/eldy/img/tick.png" alt="Warning"> '.$langs->trans("ConfFileIsNotWritable", $conffiletoshow);
print "<br>\n"; print "<br>\n";
$allowinstall=0; $allowinstall = 0;
} }
// File exists and can be modified // File exists and can be modified
else else
@ -315,37 +315,37 @@ else
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> '.$langs->trans("ConfFileIsWritable", $conffiletoshow); print '<img src="../theme/eldy/img/tick.png" alt="Ok"> '.$langs->trans("ConfFileIsWritable", $conffiletoshow);
print "<br>\n"; print "<br>\n";
$allowinstall=1; $allowinstall = 1;
} }
print "<br>\n"; print "<br>\n";
// Requirements met/all ok: display the next step button // Requirements met/all ok: display the next step button
if ($checksok) if ($checksok)
{ {
$ok=0; $ok = 0;
// Try to create db connection // Try to create db connection
if (file_exists($conffile)) if (file_exists($conffile))
{ {
include_once $conffile; include_once $conffile;
if (! empty($dolibarr_main_db_type) && ! empty($dolibarr_main_document_root)) if (!empty($dolibarr_main_db_type) && !empty($dolibarr_main_document_root))
{ {
if (! file_exists($dolibarr_main_document_root."/core/lib/admin.lib.php")) if (!file_exists($dolibarr_main_document_root."/core/lib/admin.lib.php"))
{ {
print '<span class="error">A '.$conffiletoshow.' file exists with a dolibarr_main_document_root to '.$dolibarr_main_document_root.' that seems wrong. Try to fix or remove the '.$conffiletoshow.' file.</span><br>'."\n"; print '<span class="error">A '.$conffiletoshow.' file exists with a dolibarr_main_document_root to '.$dolibarr_main_document_root.' that seems wrong. Try to fix or remove the '.$conffiletoshow.' file.</span><br>'."\n";
dol_syslog("A '" . $conffiletoshow . "' file exists with a dolibarr_main_document_root to " . $dolibarr_main_document_root . " that seems wrong. Try to fix or remove the '" . $conffiletoshow . "' file.", LOG_WARNING); dol_syslog("A '".$conffiletoshow."' file exists with a dolibarr_main_document_root to ".$dolibarr_main_document_root." that seems wrong. Try to fix or remove the '".$conffiletoshow."' file.", LOG_WARNING);
} }
else else
{ {
require_once $dolibarr_main_document_root.'/core/lib/admin.lib.php'; require_once $dolibarr_main_document_root.'/core/lib/admin.lib.php';
// If password is encoded, we decode it // If password is encoded, we decode it
if (preg_match('/crypted:/i', $dolibarr_main_db_pass) || ! empty($dolibarr_main_db_encrypted_pass)) if (preg_match('/crypted:/i', $dolibarr_main_db_pass) || !empty($dolibarr_main_db_encrypted_pass))
{ {
require_once $dolibarr_main_document_root.'/core/lib/security.lib.php'; require_once $dolibarr_main_document_root.'/core/lib/security.lib.php';
if (preg_match('/crypted:/i', $dolibarr_main_db_pass)) if (preg_match('/crypted:/i', $dolibarr_main_db_pass))
{ {
$dolibarr_main_db_encrypted_pass = preg_replace('/crypted:/i', '', $dolibarr_main_db_pass); // We need to set this as it is used to know the password was initially crypted $dolibarr_main_db_encrypted_pass = preg_replace('/crypted:/i', '', $dolibarr_main_db_pass); // We need to set this as it is used to know the password was initially crypted
$dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass); $dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass);
} }
else $dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass); else $dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass);
@ -358,10 +358,10 @@ else
$conf->db->name = $dolibarr_main_db_name; $conf->db->name = $dolibarr_main_db_name;
$conf->db->user = $dolibarr_main_db_user; $conf->db->user = $dolibarr_main_db_user;
$conf->db->pass = $dolibarr_main_db_pass; $conf->db->pass = $dolibarr_main_db_pass;
$db=getDoliDBInstance($conf->db->type, $conf->db->host, $conf->db->user, $conf->db->pass, $conf->db->name, $conf->db->port); $db = getDoliDBInstance($conf->db->type, $conf->db->host, $conf->db->user, $conf->db->pass, $conf->db->name, $conf->db->port);
if ($db->connected && $db->database_selected) if ($db->connected && $db->database_selected)
{ {
$ok=true; $ok = true;
} }
} }
} }
@ -370,26 +370,26 @@ else
// If database access is available, we set more variables // If database access is available, we set more variables
if ($ok) if ($ok)
{ {
if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0; if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption = 0;
$conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption; $conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption;
if (empty($dolibarr_main_db_cryptkey)) $dolibarr_main_db_cryptkey=''; if (empty($dolibarr_main_db_cryptkey)) $dolibarr_main_db_cryptkey = '';
$conf->db->dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey; $conf->db->dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey;
$conf->setValues($db); $conf->setValues($db);
// Reset forced setup after the setValues // Reset forced setup after the setValues
if (defined('SYSLOG_FILE')) $conf->global->SYSLOG_FILE=constant('SYSLOG_FILE'); if (defined('SYSLOG_FILE')) $conf->global->SYSLOG_FILE = constant('SYSLOG_FILE');
$conf->global->MAIN_ENABLE_LOG_TO_HTML = 1; $conf->global->MAIN_ENABLE_LOG_TO_HTML = 1;
// Current version is $conf->global->MAIN_VERSION_LAST_UPGRADE // Current version is $conf->global->MAIN_VERSION_LAST_UPGRADE
// Version to install is DOL_VERSION // Version to install is DOL_VERSION
$dolibarrlastupgradeversionarray=preg_split('/[\.-]/', isset($conf->global->MAIN_VERSION_LAST_UPGRADE) ? $conf->global->MAIN_VERSION_LAST_UPGRADE : (isset($conf->global->MAIN_VERSION_LAST_INSTALL)?$conf->global->MAIN_VERSION_LAST_INSTALL:'')); $dolibarrlastupgradeversionarray = preg_split('/[\.-]/', isset($conf->global->MAIN_VERSION_LAST_UPGRADE) ? $conf->global->MAIN_VERSION_LAST_UPGRADE : (isset($conf->global->MAIN_VERSION_LAST_INSTALL) ? $conf->global->MAIN_VERSION_LAST_INSTALL : ''));
$dolibarrversiontoinstallarray=versiondolibarrarray(); $dolibarrversiontoinstallarray = versiondolibarrarray();
} }
// Show title // Show title
if (! empty($conf->global->MAIN_VERSION_LAST_UPGRADE) || ! empty($conf->global->MAIN_VERSION_LAST_INSTALL)) if (!empty($conf->global->MAIN_VERSION_LAST_UPGRADE) || !empty($conf->global->MAIN_VERSION_LAST_INSTALL))
{ {
print $langs->trans("VersionLastUpgrade").': <b><span class="ok">'.(empty($conf->global->MAIN_VERSION_LAST_UPGRADE)?$conf->global->MAIN_VERSION_LAST_INSTALL:$conf->global->MAIN_VERSION_LAST_UPGRADE).'</span></b> - '; print $langs->trans("VersionLastUpgrade").': <b><span class="ok">'.(empty($conf->global->MAIN_VERSION_LAST_UPGRADE) ? $conf->global->MAIN_VERSION_LAST_INSTALL : $conf->global->MAIN_VERSION_LAST_UPGRADE).'</span></b> - ';
print $langs->trans("VersionProgram").': <b><span class="ok">'.DOL_VERSION.'</span></b>'; print $langs->trans("VersionProgram").': <b><span class="ok">'.DOL_VERSION.'</span></b>';
//print ' '.img_warning($langs->trans("RunningUpdateProcessMayBeRequired")); //print ' '.img_warning($langs->trans("RunningUpdateProcessMayBeRequired"));
print '<br>'; print '<br>';
@ -400,7 +400,7 @@ else
//print $langs->trans("InstallEasy")." "; //print $langs->trans("InstallEasy")." ";
print '<h3><span class="soustitre">'.$langs->trans("ChooseYourSetupMode").'</span></h3>'; print '<h3><span class="soustitre">'.$langs->trans("ChooseYourSetupMode").'</span></h3>';
$foundrecommandedchoice=0; $foundrecommandedchoice = 0;
$available_choices = array(); $available_choices = array();
$notavailable_choices = array(); $notavailable_choices = array();
@ -417,7 +417,7 @@ else
//print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE); //print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE);
$choice .= '<div class="center"><div class="ok">'.$langs->trans("InstallChoiceSuggested").'</div></div>'; $choice .= '<div class="center"><div class="ok">'.$langs->trans("InstallChoiceSuggested").'</div></div>';
// <img src="../theme/eldy/img/tick.png" alt="Ok"> '; // <img src="../theme/eldy/img/tick.png" alt="Ok"> ';
$foundrecommandedchoice=1; // To show only once $foundrecommandedchoice = 1; // To show only once
} }
$choice .= '</td>'; $choice .= '</td>';
@ -441,14 +441,14 @@ else
} }
// Show upgrade lines // Show upgrade lines
$allowupgrade=true; $allowupgrade = true;
if (empty($dolibarr_main_db_host)) // This means install process was not run if (empty($dolibarr_main_db_host)) // This means install process was not run
{ {
$allowupgrade=false; $allowupgrade = false;
} }
if (defined("MAIN_NOT_INSTALLED")) $allowupgrade=false; if (defined("MAIN_NOT_INSTALLED")) $allowupgrade = false;
if (GETPOST('allowupgrade')) $allowupgrade=true; if (GETPOST('allowupgrade')) $allowupgrade = true;
$migrationscript=array( array('from'=>'3.0.0', 'to'=>'3.1.0'), $migrationscript = array(array('from'=>'3.0.0', 'to'=>'3.1.0'),
array('from'=>'3.1.0', 'to'=>'3.2.0'), array('from'=>'3.1.0', 'to'=>'3.2.0'),
array('from'=>'3.2.0', 'to'=>'3.3.0'), array('from'=>'3.2.0', 'to'=>'3.3.0'),
array('from'=>'3.3.0', 'to'=>'3.4.0'), array('from'=>'3.3.0', 'to'=>'3.4.0'),
@ -467,26 +467,26 @@ else
array('from'=>'10.0.0', 'to'=>'11.0.0') array('from'=>'10.0.0', 'to'=>'11.0.0')
); );
$count=0; $count = 0;
foreach ($migrationscript as $migarray) foreach ($migrationscript as $migarray)
{ {
$choice = ''; $choice = '';
$count++; $count++;
$recommended_choice = false; $recommended_choice = false;
$version=DOL_VERSION; $version = DOL_VERSION;
$versionfrom=$migarray['from']; $versionfrom = $migarray['from'];
$versionto=$migarray['to']; $versionto = $migarray['to'];
$versionarray=preg_split('/[\.-]/', $version); $versionarray = preg_split('/[\.-]/', $version);
$dolibarrversionfromarray=preg_split('/[\.-]/', $versionfrom); $dolibarrversionfromarray = preg_split('/[\.-]/', $versionfrom);
$dolibarrversiontoarray=preg_split('/[\.-]/', $versionto); $dolibarrversiontoarray = preg_split('/[\.-]/', $versionto);
// Define string newversionxxx that are used for text to show // Define string newversionxxx that are used for text to show
$newversionfrom=preg_replace('/(\.[0-9]+)$/i', '.*', $versionfrom); $newversionfrom = preg_replace('/(\.[0-9]+)$/i', '.*', $versionfrom);
$newversionto=preg_replace('/(\.[0-9]+)$/i', '.*', $versionto); $newversionto = preg_replace('/(\.[0-9]+)$/i', '.*', $versionto);
$newversionfrombis=''; $newversionfrombis = '';
if (versioncompare($dolibarrversiontoarray, $versionarray) < -2) // From x.y.z -> x.y.z+1 if (versioncompare($dolibarrversiontoarray, $versionarray) < -2) // From x.y.z -> x.y.z+1
{ {
$newversionfrombis=' '.$langs->trans("or").' '.$versionto; $newversionfrombis = ' '.$langs->trans("or").' '.$versionto;
} }
if ($ok) if ($ok)
@ -498,7 +498,7 @@ else
(versioncompare($dolibarrversiontoarray, $dolibarrlastupgradeversionarray) > 0 || versioncompare($dolibarrversiontoarray, $versionarray) < -2) (versioncompare($dolibarrversiontoarray, $dolibarrlastupgradeversionarray) > 0 || versioncompare($dolibarrversiontoarray, $versionarray) < -2)
) )
{ {
$foundrecommandedchoice=1; // To show only once $foundrecommandedchoice = 1; // To show only once
$recommended_choice = true; $recommended_choice = true;
} }
} }
@ -519,7 +519,7 @@ else
$choice .= '<br>'; $choice .= '<br>';
//print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE); //print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE);
$choice .= '<div class="center">'; $choice .= '<div class="center">';
$choice .= '<div class="ok">'.$langs->trans("InstallChoiceSuggested").'</div>'; $choice .= '<div class="ok">'.$langs->trans("InstallChoiceSuggested").'</div>';
if ($count < count($migarray)) // There are other choices after if ($count < count($migarray)) // There are other choices after
{ {
print $langs->trans("MigrateIsDoneStepByStep", DOL_VERSION); print $langs->trans("MigrateIsDoneStepByStep", DOL_VERSION);
@ -531,10 +531,10 @@ else
$choice .= '<td class="center">'; $choice .= '<td class="center">';
if ($allowupgrade) if ($allowupgrade)
{ {
$disabled=false; $disabled = false;
if ($foundrecommandedchoice == 2) if ($foundrecommandedchoice == 2)
{ {
$disabled=true; $disabled = true;
} }
if ($foundrecommandedchoice == 1) if ($foundrecommandedchoice == 1)
{ {
@ -546,7 +546,7 @@ else
} }
else else
{ {
$choice .= '<a class="button runupgrade" href="upgrade.php?action=upgrade'.($count<count($migrationscript)?'_'.$versionto:'').'&amp;selectlang='.$setuplang.'&amp;versionfrom='.$versionfrom.'&amp;versionto='.$versionto.'">'.$langs->trans("Start").'</a>'; $choice .= '<a class="button runupgrade" href="upgrade.php?action=upgrade'.($count < count($migrationscript) ? '_'.$versionto : '').'&amp;selectlang='.$setuplang.'&amp;versionfrom='.$versionfrom.'&amp;versionto='.$versionto.'">'.$langs->trans("Start").'</a>';
} }
} }
else else
@ -566,8 +566,8 @@ else
// If there is no choice at all, we show all of them. // If there is no choice at all, we show all of them.
if (empty($available_choices)) if (empty($available_choices))
{ {
$available_choices=$notavailable_choices; $available_choices = $notavailable_choices;
$notavailable_choices=array(); $notavailable_choices = array();
} }
// Array of install choices // Array of install choices
@ -621,4 +621,4 @@ $(".runupgrade").click(function() {
</script>'; </script>';
dolibarr_install_syslog("- check: end"); dolibarr_install_syslog("- check: end");
pFooter(1); // Never display next button pFooter(1); // Never display next button

View File

@ -125,7 +125,7 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_REOPEN','BOM reopen','Executed when a BOM is re-open','bom',653); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_REOPEN','BOM reopen','Executed when a BOM is re-open','bom',653);
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_DELETE','BOM deleted','Executed when a BOM deleted','bom',654); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_DELETE','BOM deleted','Executed when a BOM deleted','bom',654);
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_VALIDATE','MO validated','Executed when a MO is validated','bom',660); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_VALIDATE','MO validated','Executed when a MO is validated','bom',660);
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_PRODUCED','MO disabled','Executed when a MO is produced','bom',661); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_PRODUCED','MO produced','Executed when a MO is produced','bom',661);
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_DELETE','MO deleted','Executed when a MO is deleted','bom',662); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_DELETE','MO deleted','Executed when a MO is deleted','bom',662);
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_CANCEL','MO canceled','Executed when a MO is canceled','bom',663); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_CANCEL','MO canceled','Executed when a MO is canceled','bom',663);
-- actions not enabled by default : they are excluded when we enable the module Agenda (except TASK_...) -- actions not enabled by default : they are excluded when we enable the module Agenda (except TASK_...)

View File

@ -493,7 +493,7 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_DELETE','BOM deleted','Executed when a BOM deleted','bom',654); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_DELETE','BOM deleted','Executed when a BOM deleted','bom',654);
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_VALIDATE','MO validated','Executed when a MO is validated','bom',660); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_VALIDATE','MO validated','Executed when a MO is validated','bom',660);
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_PRODUCED','MO disabled','Executed when a MO is produced','bom',661); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_PRODUCED','MO produced','Executed when a MO is produced','bom',661);
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_DELETE','MO deleted','Executed when a MO is deleted','bom',662); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_DELETE','MO deleted','Executed when a MO is deleted','bom',662);
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_CANCEL','MO canceled','Executed when a MO is canceled','bom',663); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_CANCEL','MO canceled','Executed when a MO is canceled','bom',663);

View File

@ -5030,7 +5030,7 @@ function migrate_users_socialnetworks()
dol_print_error($db); dol_print_error($db);
$db->rollback(); $db->rollback();
} }
print '<b>'.$langs->trans('MigrationUsersSocialNetworks')."</b><br>\n"; print '<b>'.$langs->trans('MigrationFieldsSocialNetworks', 'Users')."</b><br>\n";
print '</td></tr>'; print '</td></tr>';
} }
@ -5121,7 +5121,7 @@ function migrate_members_socialnetworks()
dol_print_error($db); dol_print_error($db);
$db->rollback(); $db->rollback();
} }
print '<b>'.$langs->trans('MigrationMembersSocialNetworks')."</b><br>\n"; print '<b>'.$langs->trans('MigrationFieldsSocialNetworks', 'Members')."</b><br>\n";
print '</td></tr>'; print '</td></tr>';
} }
@ -5216,7 +5216,7 @@ function migrate_contacts_socialnetworks()
dol_print_error($db); dol_print_error($db);
$db->rollback(); $db->rollback();
} }
print '<b>'.$langs->trans('MigrationContactsSocialNetworks')."</b><br>\n"; print '<b>'.$langs->trans('MigrationFieldsSocialNetworks', 'Contacts')."</b><br>\n";
print '</td></tr>'; print '</td></tr>';
} }
@ -5306,6 +5306,6 @@ function migrate_thirdparties_socialnetworks()
dol_print_error($db); dol_print_error($db);
$db->rollback(); $db->rollback();
} }
print '<b>'.$langs->trans('MigrationThirdpartiesSocialNetworks')."</b><br>\n"; print '<b>'.$langs->trans('MigrationFieldsSocialNetworks', 'Thirdparties')."</b><br>\n";
print '</td></tr>'; print '</td></tr>';
} }

View File

@ -247,4 +247,5 @@ WarningYourLoginWasModifiedPleaseLogin=Your login was modified. For security pur
WarningAnEntryAlreadyExistForTransKey=An entry already exists for the translation key for this language WarningAnEntryAlreadyExistForTransKey=An entry already exists for the translation key for this language
WarningNumberOfRecipientIsRestrictedInMassAction=Warning, number of different recipient is limited to <b>%s</b> when using the mass actions on lists WarningNumberOfRecipientIsRestrictedInMassAction=Warning, number of different recipient is limited to <b>%s</b> when using the mass actions on lists
WarningDateOfLineMustBeInExpenseReportRange=Warning, the date of line is not in the range of the expense report WarningDateOfLineMustBeInExpenseReportRange=Warning, the date of line is not in the range of the expense report
WarningProjectClosed=Project is closed. You must re-open it first. WarningProjectClosed=Project is closed. You must re-open it first.
WarningSomeBankTransactionByChequeWereRemovedAfter=Some bank transaction were removed after that the receipt including them were generated. So nb of cheques and total of receipt may differ from number and total in list.

View File

@ -205,10 +205,7 @@ MigrationRemiseExceptEntity=Update entity field value of llx_societe_remise_exce
MigrationUserRightsEntity=Update entity field value of llx_user_rights MigrationUserRightsEntity=Update entity field value of llx_user_rights
MigrationUserGroupRightsEntity=Update entity field value of llx_usergroup_rights MigrationUserGroupRightsEntity=Update entity field value of llx_usergroup_rights
MigrationUserPhotoPath=Migration of photo paths for users MigrationUserPhotoPath=Migration of photo paths for users
MigrationUsersSocialNetworks=Migration of users fields social networks MigrationFieldsSocialNetworks=Migration of users fields social networks (%s)
MigrationMembersSocialNetworks=Migration of members fields social networks
MigrationContactsSocialNetworks=Migration of contacts fields social networks
MigrationThirdpartiesSocialNetworks=Migration of thirdparties fields social networks
MigrationReloadModule=Reload module %s MigrationReloadModule=Reload module %s
MigrationResetBlockedLog=Reset module BlockedLog for v7 algorithm MigrationResetBlockedLog=Reset module BlockedLog for v7 algorithm
ShowNotAvailableOptions=Show unavailable options ShowNotAvailableOptions=Show unavailable options

View File

@ -23,7 +23,7 @@
*/ */
// Put here all includes required by your class file // Put here all includes required by your class file
require_once DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
//require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php'; //require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php';
//require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php'; //require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php';
@ -89,27 +89,27 @@ class MyObject extends CommonObject
/** /**
* @var array Array with all fields and their property. Do not use it as a static var. It may be modified by constructor. * @var array Array with all fields and their property. Do not use it as a static var. It may be modified by constructor.
*/ */
public $fields=array( public $fields = array(
'rowid' =>array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-2, 'noteditable'=>1, 'notnull'=> 1, 'index'=>1, 'position'=>1, 'comment'=>'Id'), 'rowid' =>array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-2, 'noteditable'=>1, 'notnull'=> 1, 'index'=>1, 'position'=>1, 'comment'=>'Id'),
'ref' =>array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'noteditable'=>0, 'default'=>'', 'notnull'=> 1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1, 'comment'=>'Reference of object'), 'ref' =>array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'noteditable'=>0, 'default'=>'', 'notnull'=> 1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1, 'comment'=>'Reference of object'),
'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=> 1, 'default'=>1, 'index'=>1, 'position'=>20), 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=> 1, 'default'=>1, 'index'=>1, 'position'=>20),
'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'searchall'=>1, 'css'=>'minwidth200', 'help'=>'Help text', 'showoncombobox'=>1), 'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'searchall'=>1, 'css'=>'minwidth200', 'help'=>'Help text', 'showoncombobox'=>1),
'amount' =>array('type'=>'double(24,8)', 'label'=>'Amount', 'enabled'=>1, 'visible'=>1, 'default'=>'null', 'position'=>40, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text for amount'), 'amount' =>array('type'=>'double(24,8)', 'label'=>'Amount', 'enabled'=>1, 'visible'=>1, 'default'=>'null', 'position'=>40, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text for amount'),
'qty' =>array('type'=>'real', 'label'=>'Qty', 'enabled'=>1, 'visible'=>1, 'default'=>'0', 'position'=>45, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text for quantity', 'css'=>'maxwidth75imp'), 'qty' =>array('type'=>'real', 'label'=>'Qty', 'enabled'=>1, 'visible'=>1, 'default'=>'0', 'position'=>45, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text for quantity', 'css'=>'maxwidth75imp'),
'fk_soc' =>array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'visible'=> 1, 'enabled'=>1, 'position'=>50, 'notnull'=>-1, 'index'=>1, 'help'=>'LinkToThirparty'), 'fk_soc' =>array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'visible'=> 1, 'enabled'=>1, 'position'=>50, 'notnull'=>-1, 'index'=>1, 'help'=>'LinkToThirparty'),
'fk_project' =>array('type'=>'integer:Project:projet/class/project.class.php:1', 'label'=>'Project', 'enabled'=>1, 'visible'=>-1, 'position'=>52, 'notnull'=>-1, 'index'=>1), 'fk_project' =>array('type'=>'integer:Project:projet/class/project.class.php:1', 'label'=>'Project', 'enabled'=>1, 'visible'=>-1, 'position'=>52, 'notnull'=>-1, 'index'=>1),
'description' =>array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>3, 'position'=>60), 'description' =>array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>3, 'position'=>60),
'note_public' =>array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>61), 'note_public' =>array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>61),
'note_private' =>array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>62), 'note_private' =>array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>62),
'date_creation' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'notnull'=> 1, 'position'=>500), 'date_creation' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'notnull'=> 1, 'position'=>500),
'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-2, 'notnull'=> 0, 'position'=>501), 'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-2, 'notnull'=> 0, 'position'=>501),
//'date_validation' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'position'=>502), //'date_validation' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'position'=>502),
'fk_user_creat' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserAuthor', 'enabled'=>1, 'visible'=>-2, 'notnull'=> 1, 'position'=>510, 'foreignkey'=>'user.rowid'), 'fk_user_creat' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserAuthor', 'enabled'=>1, 'visible'=>-2, 'notnull'=> 1, 'position'=>510, 'foreignkey'=>'user.rowid'),
'fk_user_modif' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModif', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'position'=>511), 'fk_user_modif' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModif', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'position'=>511),
//'fk_user_valid' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserValidation', 'enabled'=>1, 'visible'=>-1, 'position'=>512), //'fk_user_valid' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserValidation', 'enabled'=>1, 'visible'=>-1, 'position'=>512),
'import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'index'=>0, 'position'=>1000), 'import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'index'=>0, 'position'=>1000),
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'notnull'=>-1, 'position'=>1010), 'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'notnull'=>-1, 'position'=>1010),
'status' =>array('type'=>'smallint', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'notnull'=> 1, 'default'=>0, 'index'=>1, 'position'=>1000, 'arrayofkeyval'=>array(0=>'Draft', 1=>'Validated', 9=>'Canceled')), 'status' =>array('type'=>'smallint', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'notnull'=> 1, 'default'=>0, 'index'=>1, 'position'=>1000, 'arrayofkeyval'=>array(0=>'Draft', 1=>'Validated', 9=>'Canceled')),
); );
/** /**
@ -214,11 +214,11 @@ class MyObject extends CommonObject
$this->db = $db; $this->db = $db;
if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields['rowid'])) $this->fields['rowid']['visible']=0; if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields['rowid'])) $this->fields['rowid']['visible'] = 0;
if (empty($conf->multicompany->enabled) && isset($this->fields['entity'])) $this->fields['entity']['enabled']=0; if (empty($conf->multicompany->enabled) && isset($this->fields['entity'])) $this->fields['entity']['enabled'] = 0;
// Unset fields that are disabled // Unset fields that are disabled
foreach($this->fields as $key => $val) foreach ($this->fields as $key => $val)
{ {
if (isset($val['enabled']) && empty($val['enabled'])) if (isset($val['enabled']) && empty($val['enabled']))
{ {
@ -274,7 +274,7 @@ class MyObject extends CommonObject
// Load source object // Load source object
$result = $object->fetchCommon($fromid); $result = $object->fetchCommon($fromid);
if ($result > 0 && ! empty($object->table_element_line)) $object->fetchLines(); if ($result > 0 && !empty($object->table_element_line)) $object->fetchLines();
// get lines so they will be clone // get lines so they will be clone
//foreach($this->lines as $line) //foreach($this->lines as $line)
@ -287,18 +287,18 @@ class MyObject extends CommonObject
// Clear fields // Clear fields
$object->ref = empty($this->fields['ref']['default']) ? "copy_of_".$object->ref: $this->fields['ref']['default']; $object->ref = empty($this->fields['ref']['default']) ? "copy_of_".$object->ref : $this->fields['ref']['default'];
$object->label = empty($this->fields['label']['default']) ? $langs->trans("CopyOf")." ".$object->label: $this->fields['label']['default']; $object->label = empty($this->fields['label']['default']) ? $langs->trans("CopyOf")." ".$object->label : $this->fields['label']['default'];
$object->status = self::STATUS_DRAFT; $object->status = self::STATUS_DRAFT;
// ... // ...
// Clear extrafields that are unique // Clear extrafields that are unique
if (is_array($object->array_options) && count($object->array_options) > 0) if (is_array($object->array_options) && count($object->array_options) > 0)
{ {
$extrafields->fetch_name_optionals_label($this->table_element); $extrafields->fetch_name_optionals_label($this->table_element);
foreach($object->array_options as $key => $option) foreach ($object->array_options as $key => $option)
{ {
$shortkey = preg_replace('/options_/', '', $key); $shortkey = preg_replace('/options_/', '', $key);
if (! empty($extrafields->attributes[$this->element]['unique'][$shortkey])) if (!empty($extrafields->attributes[$this->element]['unique'][$shortkey]))
{ {
//var_dump($key); var_dump($clonedObj->array_options[$key]); exit; //var_dump($key); var_dump($clonedObj->array_options[$key]); exit;
unset($object->array_options[$key]); unset($object->array_options[$key]);
@ -315,7 +315,7 @@ class MyObject extends CommonObject
$this->errors = $object->errors; $this->errors = $object->errors;
} }
if (! $error) if (!$error)
{ {
// copy internal contacts // copy internal contacts
if ($this->copy_linked_contact($object, 'internal') < 0) if ($this->copy_linked_contact($object, 'internal') < 0)
@ -324,7 +324,7 @@ class MyObject extends CommonObject
} }
} }
if (! $error) if (!$error)
{ {
// copy external contacts if same company // copy external contacts if same company
if (property_exists($this, 'socid') && $this->socid == $object->socid) if (property_exists($this, 'socid') && $this->socid == $object->socid)
@ -356,7 +356,7 @@ class MyObject extends CommonObject
public function fetch($id, $ref = null) public function fetch($id, $ref = null)
{ {
$result = $this->fetchCommon($id, $ref); $result = $this->fetchCommon($id, $ref);
if ($result > 0 && ! empty($this->table_element_line)) $this->fetchLines(); if ($result > 0 && !empty($this->table_element_line)) $this->fetchLines();
return $result; return $result;
} }
@ -367,7 +367,7 @@ class MyObject extends CommonObject
*/ */
public function fetchLines() public function fetchLines()
{ {
$this->lines=array(); $this->lines = array();
$result = $this->fetchLinesCommon(); $result = $this->fetchLinesCommon();
return $result; return $result;
@ -391,40 +391,40 @@ class MyObject extends CommonObject
dol_syslog(__METHOD__, LOG_DEBUG); dol_syslog(__METHOD__, LOG_DEBUG);
$records=array(); $records = array();
$sql = 'SELECT '; $sql = 'SELECT ';
$sql .= $this->getFieldList(); $sql .= $this->getFieldList();
$sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element. ' as t'; $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) $sql .= ' WHERE t.entity IN ('.getEntity($this->table_element).')'; if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) $sql .= ' WHERE t.entity IN ('.getEntity($this->table_element).')';
else $sql .= ' WHERE 1 = 1'; else $sql .= ' WHERE 1 = 1';
// Manage filter // Manage filter
$sqlwhere = array(); $sqlwhere = array();
if (count($filter) > 0) { if (count($filter) > 0) {
foreach ($filter as $key => $value) { foreach ($filter as $key => $value) {
if ($key=='t.rowid') { if ($key == 't.rowid') {
$sqlwhere[] = $key . '='. $value; $sqlwhere[] = $key.'='.$value;
} }
elseif (strpos($key, 'date') !== false) { elseif (strpos($key, 'date') !== false) {
$sqlwhere[] = $key.' = \''.$this->db->idate($value).'\''; $sqlwhere[] = $key.' = \''.$this->db->idate($value).'\'';
} }
elseif ($key=='customsql') { elseif ($key == 'customsql') {
$sqlwhere[] = $value; $sqlwhere[] = $value;
} }
else { else {
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\''; $sqlwhere[] = $key.' LIKE \'%'.$this->db->escape($value).'%\'';
} }
} }
} }
if (count($sqlwhere) > 0) { if (count($sqlwhere) > 0) {
$sql .= ' AND (' . implode(' '.$filtermode.' ', $sqlwhere).')'; $sql .= ' AND ('.implode(' '.$filtermode.' ', $sqlwhere).')';
} }
if (!empty($sortfield)) { if (!empty($sortfield)) {
$sql .= $this->db->order($sortfield, $sortorder); $sql .= $this->db->order($sortfield, $sortorder);
} }
if (!empty($limit)) { if (!empty($limit)) {
$sql .= ' ' . $this->db->plimit($limit, $offset); $sql .= ' '.$this->db->plimit($limit, $offset);
} }
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
@ -446,8 +446,8 @@ class MyObject extends CommonObject
return $records; return $records;
} else { } else {
$this->errors[] = 'Error ' . $this->db->lasterror(); $this->errors[] = 'Error '.$this->db->lasterror();
dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR);
return -1; return -1;
} }
@ -587,51 +587,51 @@ class MyObject extends CommonObject
{ {
global $conf, $langs, $hookmanager; global $conf, $langs, $hookmanager;
if (! empty($conf->dol_no_mouse_hover)) $notooltip=1; // Force disable tooltips if (!empty($conf->dol_no_mouse_hover)) $notooltip = 1; // Force disable tooltips
$result = ''; $result = '';
$label = '<u>' . $langs->trans("MyObject") . '</u>'; $label = '<u>'.$langs->trans("MyObject").'</u>';
$label.= '<br>'; $label .= '<br>';
$label.= '<b>' . $langs->trans('Ref') . ':</b> ' . $this->ref; $label .= '<b>'.$langs->trans('Ref').':</b> '.$this->ref;
$url = dol_buildpath('/mymodule/myobject_card.php', 1).'?id='.$this->id; $url = dol_buildpath('/mymodule/myobject_card.php', 1).'?id='.$this->id;
if ($option != 'nolink') if ($option != 'nolink')
{ {
// Add param to save lastsearch_values or not // Add param to save lastsearch_values or not
$add_save_lastsearch_values=($save_lastsearch_value == 1 ? 1 : 0); $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
if ($save_lastsearch_value == -1 && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) $add_save_lastsearch_values=1; if ($save_lastsearch_value == -1 && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) $add_save_lastsearch_values = 1;
if ($add_save_lastsearch_values) $url.='&save_lastsearch_values=1'; if ($add_save_lastsearch_values) $url .= '&save_lastsearch_values=1';
} }
$linkclose=''; $linkclose = '';
if (empty($notooltip)) if (empty($notooltip))
{ {
if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
{ {
$label=$langs->trans("ShowMyObject"); $label = $langs->trans("ShowMyObject");
$linkclose.=' alt="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"';
} }
$linkclose.=' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"';
$linkclose.=' class="classfortooltip'.($morecss?' '.$morecss:'').'"'; $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"';
} }
else $linkclose = ($morecss?' class="'.$morecss.'"':''); else $linkclose = ($morecss ? ' class="'.$morecss.'"' : '');
$linkstart = '<a href="'.$url.'"'; $linkstart = '<a href="'.$url.'"';
$linkstart.=$linkclose.'>'; $linkstart .= $linkclose.'>';
$linkend='</a>'; $linkend = '</a>';
$result .= $linkstart; $result .= $linkstart;
if ($withpicto) $result.=img_object(($notooltip?'':$label), ($this->picto?$this->picto:'generic'), ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1); if ($withpicto) $result .= img_object(($notooltip ? '' : $label), ($this->picto ? $this->picto : 'generic'), ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1);
if ($withpicto != 2) $result.= $this->ref; if ($withpicto != 2) $result .= $this->ref;
$result .= $linkend; $result .= $linkend;
//if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : '');
global $action,$hookmanager; global $action, $hookmanager;
$hookmanager->initHooks(array('myobjectdao')); $hookmanager->initHooks(array('myobjectdao'));
$parameters=array('id'=>$this->id, 'getnomurl'=>$result); $parameters = array('id'=>$this->id, 'getnomurl'=>$result);
$reshook=$hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook > 0) $result = $hookmanager->resPrint; if ($reshook > 0) $result = $hookmanager->resPrint;
else $result .= $hookmanager->resPrint; else $result .= $hookmanager->resPrint;
@ -687,10 +687,10 @@ class MyObject extends CommonObject
public function info($id) public function info($id)
{ {
$sql = 'SELECT rowid, date_creation as datec, tms as datem,'; $sql = 'SELECT rowid, date_creation as datec, tms as datem,';
$sql.= ' fk_user_creat, fk_user_modif'; $sql .= ' fk_user_creat, fk_user_modif';
$sql.= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
$sql.= ' WHERE t.rowid = '.$id; $sql .= ' WHERE t.rowid = '.$id;
$result=$this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)
{ {
if ($this->db->num_rows($result)) if ($this->db->num_rows($result))
@ -701,7 +701,7 @@ class MyObject extends CommonObject
{ {
$cuser = new User($this->db); $cuser = new User($this->db);
$cuser->fetch($obj->fk_user_author); $cuser->fetch($obj->fk_user_author);
$this->user_creation = $cuser; $this->user_creation = $cuser;
} }
if ($obj->fk_user_valid) if ($obj->fk_user_valid)
@ -715,7 +715,7 @@ class MyObject extends CommonObject
{ {
$cluser = new User($this->db); $cluser = new User($this->db);
$cluser->fetch($obj->fk_user_cloture); $cluser->fetch($obj->fk_user_cloture);
$this->user_cloture = $cluser; $this->user_cloture = $cluser;
} }
$this->date_creation = $this->db->jdate($obj->datec); $this->date_creation = $this->db->jdate($obj->datec);
@ -749,7 +749,7 @@ class MyObject extends CommonObject
*/ */
public function getLinesArray() public function getLinesArray()
{ {
$this->lines=array(); $this->lines = array();
$objectline = new MyObjectLine($this->db); $objectline = new MyObjectLine($this->db);
$result = $objectline->fetchAll('ASC', 'position', 0, 0, array('customsql'=>'fk_myobject = '.$this->id)); $result = $objectline->fetchAll('ASC', 'position', 0, 0, array('customsql'=>'fk_myobject = '.$this->id));
@ -780,16 +780,16 @@ class MyObject extends CommonObject
*/ */
public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams = null) public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams = null)
{ {
global $conf,$langs; global $conf, $langs;
$langs->load("mymodule@mymodule"); $langs->load("mymodule@mymodule");
if (! dol_strlen($modele)) { if (!dol_strlen($modele)) {
$modele = 'standard'; $modele = 'standard';
if ($this->modelpdf) { if ($this->modelpdf) {
$modele = $this->modelpdf; $modele = $this->modelpdf;
} elseif (! empty($conf->global->MYOBJECT_ADDON_PDF)) { } elseif (!empty($conf->global->MYOBJECT_ADDON_PDF)) {
$modele = $conf->global->MYOBJECT_ADDON_PDF; $modele = $conf->global->MYOBJECT_ADDON_PDF;
} }
} }
@ -814,7 +814,7 @@ class MyObject extends CommonObject
$error = 0; $error = 0;
$this->output = ''; $this->output = '';
$this->error=''; $this->error = '';
dol_syslog(__METHOD__, LOG_DEBUG); dol_syslog(__METHOD__, LOG_DEBUG);

View File

@ -35,21 +35,21 @@ require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productlot.class.php';
$langs->loadLangs(array('stock', 'other', 'productbatch')); $langs->loadLangs(array('stock', 'other', 'productbatch'));
// Get parameters // Get parameters
$id = GETPOST('id', 'int'); $id = GETPOST('id', 'int');
$action = GETPOST('action', 'alpha'); $action = GETPOST('action', 'alpha');
$backtopage = GETPOST('backtopage', 'alpha'); $backtopage = GETPOST('backtopage', 'alpha');
$batch = GETPOST('batch', 'alpha'); $batch = GETPOST('batch', 'alpha');
$productid = GETPOST('productid', 'int'); $productid = GETPOST('productid', 'int');
$ref = GETPOST('ref', 'alpha'); // ref is productid_batch $ref = GETPOST('ref', 'alpha'); // ref is productid_batch
$search_entity=GETPOST('search_entity', 'int'); $search_entity = GETPOST('search_entity', 'int');
$search_fk_product=GETPOST('search_fk_product', 'int'); $search_fk_product = GETPOST('search_fk_product', 'int');
$search_batch=GETPOST('search_batch', 'alpha'); $search_batch = GETPOST('search_batch', 'alpha');
$search_fk_user_creat=GETPOST('search_fk_user_creat', 'int'); $search_fk_user_creat = GETPOST('search_fk_user_creat', 'int');
$search_fk_user_modif=GETPOST('search_fk_user_modif', 'int'); $search_fk_user_modif = GETPOST('search_fk_user_modif', 'int');
$search_import_key=GETPOST('search_import_key', 'int'); $search_import_key = GETPOST('search_import_key', 'int');
if (empty($action) && empty($id) && empty($ref)) $action='list'; if (empty($action) && empty($id) && empty($ref)) $action = 'list';
// Protection if external user // Protection if external user
@ -73,21 +73,21 @@ if ($id || $ref)
{ {
if ($ref) if ($ref)
{ {
$tmp=explode('_', $ref); $tmp = explode('_', $ref);
$productid=$tmp[0]; $productid = $tmp[0];
$batch=$tmp[1]; $batch = $tmp[1];
} }
$object->fetch($id, $productid, $batch); $object->fetch($id, $productid, $batch);
$object->ref = $object->batch; // For document management ( it use $object->ref) $object->ref = $object->batch; // For document management ( it use $object->ref)
} }
// Initialize technical object to manage hooks of modules. Note that conf->hooks_modules contains array array // Initialize technical object to manage hooks of modules. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('productlotcard','globalcard')); $hookmanager->initHooks(array('productlotcard', 'globalcard'));
$permissionnote = $user->rights->stock->creer; // Used by the include of actions_setnotes.inc.php $permissionnote = $user->rights->stock->creer; // Used by the include of actions_setnotes.inc.php
$permissiondellink = $user->rights->stock->creer; // Used by the include of actions_dellink.inc.php $permissiondellink = $user->rights->stock->creer; // Used by the include of actions_dellink.inc.php
$permissiontoadd = $user->rights->stock->creer; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php $permissiontoadd = $user->rights->stock->creer; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
$usercanread = $user->rights->produit->lire; $usercanread = $user->rights->produit->lire;
$usercancreate = $user->rights->produit->creer; $usercancreate = $user->rights->produit->creer;
@ -97,8 +97,8 @@ $usercandelete = $user->rights->produit->supprimer;
* Actions * Actions
*/ */
$parameters=array(); $parameters = array();
$reshook=$hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
if (empty($reshook)) if (empty($reshook))
@ -112,7 +112,7 @@ if (empty($reshook))
if ($action == 'setsellby' && $user->rights->stock->creer) if ($action == 'setsellby' && $user->rights->stock->creer)
{ {
$newvalue=dol_mktime(12, 0, 0, $_POST['sellbymonth'], $_POST['sellbyday'], $_POST['sellbyyear']); $newvalue = dol_mktime(12, 0, 0, $_POST['sellbymonth'], $_POST['sellbyday'], $_POST['sellbyyear']);
$result = $object->setValueFrom('sellby', $newvalue, '', null, 'date', '', $user, 'PRODUCTLOT_MODIFY'); $result = $object->setValueFrom('sellby', $newvalue, '', null, 'date', '', $user, 'PRODUCTLOT_MODIFY');
if ($result < 0) dol_print_error($db, $object->error); if ($result < 0) dol_print_error($db, $object->error);
} }
@ -125,7 +125,7 @@ if (empty($reshook))
$ret = $extrafields->setOptionalsFromPost(null, $object, GETPOST('attribute', 'none')); $ret = $extrafields->setOptionalsFromPost(null, $object, GETPOST('attribute', 'none'));
if ($ret < 0) $error++; if ($ret < 0) $error++;
if (! $error) if (!$error)
{ {
// Actions on extra fields // Actions on extra fields
$result = $object->insertExtraFields('PRODUCT_LOT_MODIFY'); $result = $object->insertExtraFields('PRODUCT_LOT_MODIFY');
@ -145,21 +145,21 @@ if (empty($reshook))
{ {
if (GETPOST('cancel', 'alpha')) if (GETPOST('cancel', 'alpha'))
{ {
$urltogo=$backtopage?$backtopage:dol_buildpath('/stock/list.php', 1); $urltogo = $backtopage ? $backtopage : dol_buildpath('/stock/list.php', 1);
header("Location: ".$urltogo); header("Location: ".$urltogo);
exit; exit;
} }
$error=0; $error = 0;
/* object_prop_getpost_prop */ /* object_prop_getpost_prop */
$object->entity=GETPOST('entity', 'int'); $object->entity = GETPOST('entity', 'int');
$object->fk_product=GETPOST('fk_product', 'int'); $object->fk_product = GETPOST('fk_product', 'int');
$object->batch=GETPOST('batch', 'alpha'); $object->batch = GETPOST('batch', 'alpha');
$object->fk_user_creat=GETPOST('fk_user_creat', 'int'); $object->fk_user_creat = GETPOST('fk_user_creat', 'int');
$object->fk_user_modif=GETPOST('fk_user_modif', 'int'); $object->fk_user_modif = GETPOST('fk_user_modif', 'int');
$object->import_key=GETPOST('import_key', 'int'); $object->import_key = GETPOST('import_key', 'int');
if (empty($object->ref)) if (empty($object->ref))
{ {
@ -167,43 +167,43 @@ if (empty($reshook))
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Ref")), null, 'errors'); setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Ref")), null, 'errors');
} }
if (! $error) if (!$error)
{ {
$result=$object->create($user); $result = $object->create($user);
if ($result > 0) if ($result > 0)
{ {
// Creation OK // Creation OK
$urltogo=$backtopage?$backtopage:dol_buildpath('/stock/list.php', 1); $urltogo = $backtopage ? $backtopage : dol_buildpath('/stock/list.php', 1);
header("Location: ".$urltogo); header("Location: ".$urltogo);
exit; exit;
} }
{ {
// Creation KO // Creation KO
if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); if (!empty($object->errors)) setEventMessages(null, $object->errors, 'errors');
else setEventMessages($object->error, null, 'errors'); else setEventMessages($object->error, null, 'errors');
$action='create'; $action = 'create';
} }
} }
else else
{ {
$action='create'; $action = 'create';
} }
} }
// Cancel // Cancel
if ($action == 'update' && GETPOST('cancel', 'alpha')) $action='view'; if ($action == 'update' && GETPOST('cancel', 'alpha')) $action = 'view';
// Action to update record // Action to update record
if ($action == 'update' && ! GETPOST('cancel', 'alpha')) if ($action == 'update' && !GETPOST('cancel', 'alpha'))
{ {
$error=0; $error = 0;
$object->entity=GETPOST('entity', 'int'); $object->entity = GETPOST('entity', 'int');
$object->fk_product=GETPOST('fk_product', 'int'); $object->fk_product = GETPOST('fk_product', 'int');
$object->batch=GETPOST('batch', 'alpha'); $object->batch = GETPOST('batch', 'alpha');
$object->fk_user_creat=GETPOST('fk_user_creat', 'int'); $object->fk_user_creat = GETPOST('fk_user_creat', 'int');
$object->fk_user_modif=GETPOST('fk_user_modif', 'int'); $object->fk_user_modif = GETPOST('fk_user_modif', 'int');
$object->import_key=GETPOST('import_key', 'int'); $object->import_key = GETPOST('import_key', 'int');
if (empty($object->ref)) if (empty($object->ref))
{ {
@ -211,31 +211,31 @@ if (empty($reshook))
setEventMessages($langs->transnoentitiesnoconv("ErrorFieldRequired", $langs->transnoentitiesnoconv("Ref")), null, 'errors'); setEventMessages($langs->transnoentitiesnoconv("ErrorFieldRequired", $langs->transnoentitiesnoconv("Ref")), null, 'errors');
} }
if (! $error) if (!$error)
{ {
$result=$object->update($user); $result = $object->update($user);
if ($result > 0) if ($result > 0)
{ {
$action='view'; $action = 'view';
} }
else else
{ {
// Creation KO // Creation KO
if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); if (!empty($object->errors)) setEventMessages(null, $object->errors, 'errors');
else setEventMessages($object->error, null, 'errors'); else setEventMessages($object->error, null, 'errors');
$action='edit'; $action = 'edit';
} }
} }
else else
{ {
$action='edit'; $action = 'edit';
} }
} }
// Action to delete // Action to delete
if ($action == 'confirm_delete') if ($action == 'confirm_delete')
{ {
$result=$object->delete($user); $result = $object->delete($user);
if ($result > 0) if ($result > 0)
{ {
// Delete OK // Delete OK
@ -245,7 +245,7 @@ if (empty($reshook))
} }
else else
{ {
if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); if (!empty($object->errors)) setEventMessages(null, $object->errors, 'errors');
else setEventMessages($object->error, null, 'errors'); else setEventMessages($object->error, null, 'errors');
} }
} }
@ -265,7 +265,7 @@ if (empty($reshook))
llxHeader('', 'ProductLot', ''); llxHeader('', 'ProductLot', '');
$form=new Form($db); $form = new Form($db);
// Part to create // Part to create
@ -310,15 +310,15 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
if ($action == 'delete') { if ($action == 'delete') {
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteBatch'), $langs->trans('ConfirmDeleteBatch'), 'confirm_delete', '', 0, 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteBatch'), $langs->trans('ConfirmDeleteBatch'), 'confirm_delete', '', 0, 1);
print $formconfirm; print $formconfirm;
} }
$linkback = '<a href="' . DOL_URL_ROOT . '/product/stock/productlot_list.php?restore_lastsearch_values=1">' . $langs->trans("BackToList") . '</a>'; $linkback = '<a href="'.DOL_URL_ROOT.'/product/stock/productlot_list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
$shownav = 1; $shownav = 1;
if ($user->socid && ! in_array('batch', explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL))) $shownav=0; if ($user->socid && !in_array('batch', explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL))) $shownav = 0;
dol_banner_tab($object, 'id', $linkback, $shownav, 'rowid', 'batch'); dol_banner_tab($object, 'id', $linkback, $shownav, 'rowid', 'batch');
@ -352,7 +352,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
// Other attributes // Other attributes
$cols = 2; $cols = 2;
include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_view.tpl.php'; include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
print '</table>'; print '</table>';
@ -363,8 +363,8 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
// Buttons // Buttons
print '<div class="tabsAction">'."\n"; print '<div class="tabsAction">'."\n";
$parameters=array(); $parameters = array();
$reshook=$hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
if (empty($reshook)) if (empty($reshook))
@ -403,12 +403,12 @@ if (empty($action))
// Documents // Documents
$filedir = $conf->productbatch->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 0, $object, 'product_batch').dol_sanitizeFileName($object->ref); $filedir = $conf->productbatch->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 0, $object, 'product_batch').dol_sanitizeFileName($object->ref);
$urlsource=$_SERVER["PHP_SELF"]."?id=".$object->id; $urlsource = $_SERVER["PHP_SELF"]."?id=".$object->id;
$genallowed=$usercanread; $genallowed = $usercanread;
$delallowed=$usercancreate; $delallowed = $usercancreate;
print $formfile->showdocuments('product_batch', dol_sanitizeFileName($object->ref), $filedir, $urlsource, $genallowed, $delallowed, '', 0, 0, 0, 28, 0, '', 0, '', $object->default_lang, '', $object); print $formfile->showdocuments('product_batch', dol_sanitizeFileName($object->ref), $filedir, $urlsource, $genallowed, $delallowed, '', 0, 0, 0, 28, 0, '', 0, '', $object->default_lang, '', $object);
$somethingshown=$formfile->numoffiles; $somethingshown = $formfile->numoffiles;
print '</div>'; print '</div>';
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -231,7 +231,24 @@ if ($action == "change") // Change customer for TakePOS
$idcustomer = GETPOST('idcustomer', 'int'); $idcustomer = GETPOST('idcustomer', 'int');
$place = (GETPOST('place', 'int') > 0 ? GETPOST('place', 'int') : 0); // $place is id of table for Ba or Restaurant $place = (GETPOST('place', 'int') > 0 ? GETPOST('place', 'int') : 0); // $place is id of table for Ba or Restaurant
// @TODO Check if draft invoice already exists, if not create it or return a warning to ask to enter at least one line to have it created automatically // Check if draft invoice already exists, if not create it
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."facture where ref='(PROV-POS".$_SESSION["takeposterminal"]."-".$place.")' AND entity IN (".getEntity('invoice').")";
$result = $db->query($sql);
$num_lines = $db->num_rows($result);
if ($num_lines==0)
{
require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php';
$invoice = new Facture($db);
$constforthirdpartyid = 'CASHDESK_ID_THIRDPARTY'.$_SESSION["takeposterminal"];
$invoice->socid = $conf->global->$constforthirdpartyid;
$invoice->date = dol_now();
$invoice->module_source = 'takepos';
$invoice->pos_source = $_SESSION["takeposterminal"];
$placeid =$invoice->create($user);
$sql="UPDATE ".MAIN_DB_PREFIX."facture set ref='(PROV-POS".$_SESSION["takeposterminal"]."-".$place.")' where rowid=".$placeid;
$db->query($sql);
}
$sql = "UPDATE ".MAIN_DB_PREFIX."facture set fk_soc=".$idcustomer." where ref='(PROV-POS".$_SESSION["takeposterminal"]."-".$place.")'"; $sql = "UPDATE ".MAIN_DB_PREFIX."facture set fk_soc=".$idcustomer." where ref='(PROV-POS".$_SESSION["takeposterminal"]."-".$place.")'";
$resql = $db->query($sql); $resql = $db->query($sql);
?> ?>

File diff suppressed because it is too large Load Diff

View File

@ -178,7 +178,7 @@ class Stripe extends CommonObject
global $stripearrayofkeysbyenv; global $stripearrayofkeysbyenv;
\Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$status]['secret_key']); \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$status]['secret_key']);
dol_syslog(get_class($this)."::customerStripe found stripe customer key_account = ".$tiers." with publishable_key = ".$stripearrayofkeysbyenv[$status]['publishable_key']); dol_syslog(get_class($this)."::customerStripe found stripe customer key_account = ".$tiers.". We will try to read it on Stripe with publishable_key = ".$stripearrayofkeysbyenv[$status]['publishable_key']);
try { try {
if (empty($key)) { // If the Stripe connect account not set, we use common API usage if (empty($key)) { // If the Stripe connect account not set, we use common API usage

View File

@ -2120,9 +2120,9 @@ img.login, img.printer, img.entity {
background-size: contain; background-size: contain;
} }
img.userphoto { /* size for user photo in lists */ img.userphoto { /* size for user photo in lists */
border-radius: 0.75em; border-radius: 0.725em;
width: 1.5em; width: 1.45em;
height: 1.5em; height: 1.45em;
background-size: contain; background-size: contain;
vertical-align: middle; vertical-align: middle;
} }

View File

@ -2738,7 +2738,7 @@ div.colorback
border-left: 1px solid #ccc; border-left: 1px solid #ccc;
} }
table.liste, table.noborder, table.formdoc, div.noborder { table.liste, table.noborder, table.formdoc, div.noborder {
width: 100%; width: calc(100% - 1px); /* -1 to fix a bug. Without, a scroll appears dur to overflow-x: auto; of div-tableèresponsive
border-collapse: separate !important; border-collapse: separate !important;
border-spacing: 0px; border-spacing: 0px;

View File

@ -1,6 +1,7 @@
<?php <?php
/* Copyright (C) 2013-2018 Jean-François Ferry <hello@librethic.io> /* Copyright (C) 2013-2018 Jean-François Ferry <hello@librethic.io>
* Copyright (C) 2016 Christophe Battarel <christophe@altairis.fr> * Copyright (C) 2016 Christophe Battarel <christophe@altairis.fr>
* Copyright (C) 2019 Frédéric France <frederic.france@netlogic.fr>
* *
* 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
@ -120,7 +121,7 @@ class Ticket extends CommonObject
public $progress; public $progress;
/** /**
* @var int Duration for ticket * @var string Duration for ticket
*/ */
public $timing; public $timing;
@ -250,11 +251,11 @@ class Ticket extends CommonObject
} }
if (isset($this->fk_soc)) { if (isset($this->fk_soc)) {
$this->fk_soc = trim($this->fk_soc); $this->fk_soc = (int) $this->fk_soc;
} }
if (isset($this->fk_project)) { if (isset($this->fk_project)) {
$this->fk_project = trim($this->fk_project); $this->fk_project = (int) $this->fk_project;
} }
if (isset($this->origin_email)) { if (isset($this->origin_email)) {
@ -262,11 +263,11 @@ class Ticket extends CommonObject
} }
if (isset($this->fk_user_create)) { if (isset($this->fk_user_create)) {
$this->fk_user_create = trim($this->fk_user_create); $this->fk_user_create = (int) $this->fk_user_create;
} }
if (isset($this->fk_user_assign)) { if (isset($this->fk_user_assign)) {
$this->fk_user_assign = trim($this->fk_user_assign); $this->fk_user_assign = (int) $this->fk_user_assign;
} }
if (isset($this->subject)) { if (isset($this->subject)) {
@ -278,7 +279,7 @@ class Ticket extends CommonObject
} }
if (isset($this->fk_statut)) { if (isset($this->fk_statut)) {
$this->fk_statut = trim($this->fk_statut); $this->fk_statut = (int) $this->fk_statut;
} }
if (isset($this->resolution)) { if (isset($this->resolution)) {
@ -746,11 +747,11 @@ class Ticket extends CommonObject
} }
if (isset($this->fk_soc)) { if (isset($this->fk_soc)) {
$this->fk_soc = trim($this->fk_soc); $this->fk_soc = (int) $this->fk_soc;
} }
if (isset($this->fk_project)) { if (isset($this->fk_project)) {
$this->fk_project = trim($this->fk_project); $this->fk_project = (int) $this->fk_project;
} }
if (isset($this->origin_email)) { if (isset($this->origin_email)) {
@ -758,11 +759,11 @@ class Ticket extends CommonObject
} }
if (isset($this->fk_user_create)) { if (isset($this->fk_user_create)) {
$this->fk_user_create = trim($this->fk_user_create); $this->fk_user_create = (int) $this->fk_user_create;
} }
if (isset($this->fk_user_assign)) { if (isset($this->fk_user_assign)) {
$this->fk_user_assign = trim($this->fk_user_assign); $this->fk_user_assign = (int) $this->fk_user_assign;
} }
if (isset($this->subject)) { if (isset($this->subject)) {
@ -774,7 +775,7 @@ class Ticket extends CommonObject
} }
if (isset($this->fk_statut)) { if (isset($this->fk_statut)) {
$this->fk_statut = trim($this->fk_statut); $this->fk_statut = (int) $this->fk_statut;
} }
if (isset($this->resolution)) { if (isset($this->resolution)) {
@ -1002,12 +1003,12 @@ class Ticket extends CommonObject
$this->ref = 'TI0501-001'; $this->ref = 'TI0501-001';
$this->track_id = 'XXXXaaaa'; $this->track_id = 'XXXXaaaa';
$this->origin_email = 'email@email.com'; $this->origin_email = 'email@email.com';
$this->fk_project = '1'; $this->fk_project = 1;
$this->fk_user_create = '1'; $this->fk_user_create = 1;
$this->fk_user_assign = '1'; $this->fk_user_assign = 1;
$this->subject = 'Subject of ticket'; $this->subject = 'Subject of ticket';
$this->message = 'Message of ticket'; $this->message = 'Message of ticket';
$this->fk_statut = '0'; $this->fk_statut = 0;
$this->resolution = '1'; $this->resolution = '1';
$this->progress = '10'; $this->progress = '10';
$this->timing = '30'; $this->timing = '30';

View File

@ -3059,9 +3059,10 @@ if ($action == 'editmeta' || $action == 'createcontainer')
} }
elseif ($result > 0) elseif ($result > 0)
{ {
$translationof = $sourcepage->id; $translationof = 0;
//$translationof = $sourcepage->id;
print '<span class="opacitymedium">'.$langs->trans('ThisPageIsTranslationOf').'</span> '; print '<span class="opacitymedium">'.$langs->trans('ThisPageIsTranslationOf').'</span> ';
print $formwebsite->selectContainer($website, 'pageidfortranslation', $sourcepage->id, 1, $action); print $formwebsite->selectContainer($website, 'pageidfortranslation', $translationof, 1, $action, 'minwidth300');
} }
} }
print '</td></tr>'; print '</td></tr>';