Merge branch '5.0up' into 5.0
This commit is contained in:
commit
5535daf84a
@ -19,7 +19,7 @@ use Term::ANSIColor;
|
|||||||
# Change this to defined target for option 98 and 99
|
# Change this to defined target for option 98 and 99
|
||||||
$PROJECT="dolibarr";
|
$PROJECT="dolibarr";
|
||||||
$PUBLISHSTABLE="eldy,dolibarr\@frs.sourceforge.net:/home/frs/project/dolibarr";
|
$PUBLISHSTABLE="eldy,dolibarr\@frs.sourceforge.net:/home/frs/project/dolibarr";
|
||||||
$PUBLISHBETARC="ldestailleur\@vmprod.dolibarr.org:/home/dolibarr/dolibarr.org/httpdocs/files";
|
$PUBLISHBETARC="dolibarr\@vmprod1.dolibarr.org:/home/dolibarr/dolibarr.org/httpdocs/files";
|
||||||
|
|
||||||
|
|
||||||
#@LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","APS","EXEDOLIWAMP","SNAPSHOT"); # Possible packages
|
#@LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","APS","EXEDOLIWAMP","SNAPSHOT"); # Possible packages
|
||||||
|
|||||||
@ -844,13 +844,33 @@ if (empty($reshook))
|
|||||||
// Add custom code and origin country into description
|
// Add custom code and origin country into description
|
||||||
if (empty($conf->global->MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE) && (! empty($prod->customcode) || ! empty($prod->country_code)))
|
if (empty($conf->global->MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE) && (! empty($prod->customcode) || ! empty($prod->country_code)))
|
||||||
{
|
{
|
||||||
$tmptxt = '(';
|
// Define output language
|
||||||
|
if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) {
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if (empty($newlang) && GETPOST('lang_id','alpha'))
|
||||||
|
$newlang = GETPOST('lang_id','alpha');
|
||||||
|
if (empty($newlang))
|
||||||
|
$newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
$outputlangs->load('products');
|
||||||
|
}
|
||||||
|
if (! empty($prod->customcode))
|
||||||
|
$tmptxt .= $outputlangs->transnoentitiesnoconv("CustomCode") . ': ' . $prod->customcode;
|
||||||
|
if (! empty($prod->customcode) && ! empty($prod->country_code))
|
||||||
|
$tmptxt .= ' - ';
|
||||||
|
if (! empty($prod->country_code))
|
||||||
|
$tmptxt .= $outputlangs->transnoentitiesnoconv("CountryOrigin") . ': ' . getCountry($prod->country_code, 0, $db, $outputlangs, 0);
|
||||||
|
} else {
|
||||||
if (! empty($prod->customcode))
|
if (! empty($prod->customcode))
|
||||||
$tmptxt .= $langs->transnoentitiesnoconv("CustomCode") . ': ' . $prod->customcode;
|
$tmptxt .= $langs->transnoentitiesnoconv("CustomCode") . ': ' . $prod->customcode;
|
||||||
if (! empty($prod->customcode) && ! empty($prod->country_code))
|
if (! empty($prod->customcode) && ! empty($prod->country_code))
|
||||||
$tmptxt .= ' - ';
|
$tmptxt .= ' - ';
|
||||||
if (! empty($prod->country_code))
|
if (! empty($prod->country_code))
|
||||||
$tmptxt .= $langs->transnoentitiesnoconv("CountryOrigin") . ': ' . getCountry($prod->country_code, 0, $db, $langs, 0);
|
$tmptxt .= $langs->transnoentitiesnoconv("CountryOrigin") . ': ' . getCountry($prod->country_code, 0, $db, $langs, 0);
|
||||||
|
}
|
||||||
$tmptxt .= ')';
|
$tmptxt .= ')';
|
||||||
$desc = dol_concatdesc($desc, $tmptxt);
|
$desc = dol_concatdesc($desc, $tmptxt);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -782,8 +782,8 @@ if (empty($reshook))
|
|||||||
if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) {
|
if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) {
|
||||||
$outputlangs = $langs;
|
$outputlangs = $langs;
|
||||||
$newlang = '';
|
$newlang = '';
|
||||||
if (empty($newlang) && GETPOST('lang_id'))
|
if (empty($newlang) && GETPOST('lang_id','alpha'))
|
||||||
$newlang = GETPOST('lang_id');
|
$newlang = GETPOST('lang_id','alpha');
|
||||||
if (empty($newlang))
|
if (empty($newlang))
|
||||||
$newlang = $object->thirdparty->default_lang;
|
$newlang = $object->thirdparty->default_lang;
|
||||||
if (! empty($newlang)) {
|
if (! empty($newlang)) {
|
||||||
@ -801,12 +801,33 @@ if (empty($reshook))
|
|||||||
// Add custom code and origin country into description
|
// Add custom code and origin country into description
|
||||||
if (empty($conf->global->MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE) && (! empty($prod->customcode) || ! empty($prod->country_code))) {
|
if (empty($conf->global->MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE) && (! empty($prod->customcode) || ! empty($prod->country_code))) {
|
||||||
$tmptxt = '(';
|
$tmptxt = '(';
|
||||||
|
// Define output language
|
||||||
|
if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) {
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if (empty($newlang) && GETPOST('lang_id','alpha'))
|
||||||
|
$newlang = GETPOST('lang_id','alpha');
|
||||||
|
if (empty($newlang))
|
||||||
|
$newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
$outputlangs->load('products');
|
||||||
|
}
|
||||||
|
if (! empty($prod->customcode))
|
||||||
|
$tmptxt .= $outputlangs->transnoentitiesnoconv("CustomCode") . ': ' . $prod->customcode;
|
||||||
|
if (! empty($prod->customcode) && ! empty($prod->country_code))
|
||||||
|
$tmptxt .= ' - ';
|
||||||
|
if (! empty($prod->country_code))
|
||||||
|
$tmptxt .= $outputlangs->transnoentitiesnoconv("CountryOrigin") . ': ' . getCountry($prod->country_code, 0, $db, $outputlangs, 0);
|
||||||
|
} else {
|
||||||
if (! empty($prod->customcode))
|
if (! empty($prod->customcode))
|
||||||
$tmptxt .= $langs->transnoentitiesnoconv("CustomCode") . ': ' . $prod->customcode;
|
$tmptxt .= $langs->transnoentitiesnoconv("CustomCode") . ': ' . $prod->customcode;
|
||||||
if (! empty($prod->customcode) && ! empty($prod->country_code))
|
if (! empty($prod->customcode) && ! empty($prod->country_code))
|
||||||
$tmptxt .= ' - ';
|
$tmptxt .= ' - ';
|
||||||
if (! empty($prod->country_code))
|
if (! empty($prod->country_code))
|
||||||
$tmptxt .= $langs->transnoentitiesnoconv("CountryOrigin") . ': ' . getCountry($prod->country_code, 0, $db, $langs, 0);
|
$tmptxt .= $langs->transnoentitiesnoconv("CountryOrigin") . ': ' . getCountry($prod->country_code, 0, $db, $langs, 0);
|
||||||
|
}
|
||||||
$tmptxt .= ')';
|
$tmptxt .= ')';
|
||||||
$desc = dol_concatdesc($desc, $tmptxt);
|
$desc = dol_concatdesc($desc, $tmptxt);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -611,7 +611,7 @@ if (empty($reshook))
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
foreach ($object->lines as $line)
|
foreach ($object->lines as $line)
|
||||||
{
|
{
|
||||||
if ($line->total_ht!=0)
|
if ($line->product_type < 9 && $line->total_ht != 0) // Remove lines with product_type greater than or equal to 9
|
||||||
{ // no need to create discount if amount is null
|
{ // no need to create discount if amount is null
|
||||||
$amount_ht[$line->tva_tx] += $line->total_ht;
|
$amount_ht[$line->tva_tx] += $line->total_ht;
|
||||||
$amount_tva[$line->tva_tx] += $line->total_tva;
|
$amount_tva[$line->tva_tx] += $line->total_tva;
|
||||||
@ -1504,12 +1504,33 @@ if (empty($reshook))
|
|||||||
// Add custom code and origin country into description
|
// Add custom code and origin country into description
|
||||||
if (empty($conf->global->MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE) && (! empty($prod->customcode) || ! empty($prod->country_code))) {
|
if (empty($conf->global->MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE) && (! empty($prod->customcode) || ! empty($prod->country_code))) {
|
||||||
$tmptxt = '(';
|
$tmptxt = '(';
|
||||||
|
// Define output language
|
||||||
|
if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) {
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if (empty($newlang) && GETPOST('lang_id','alpha'))
|
||||||
|
$newlang = GETPOST('lang_id','alpha');
|
||||||
|
if (empty($newlang))
|
||||||
|
$newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
$outputlangs->load('products');
|
||||||
|
}
|
||||||
|
if (! empty($prod->customcode))
|
||||||
|
$tmptxt .= $outputlangs->transnoentitiesnoconv("CustomCode") . ': ' . $prod->customcode;
|
||||||
|
if (! empty($prod->customcode) && ! empty($prod->country_code))
|
||||||
|
$tmptxt .= ' - ';
|
||||||
|
if (! empty($prod->country_code))
|
||||||
|
$tmptxt .= $outputlangs->transnoentitiesnoconv("CountryOrigin") . ': ' . getCountry($prod->country_code, 0, $db, $outputlangs, 0);
|
||||||
|
} else {
|
||||||
if (! empty($prod->customcode))
|
if (! empty($prod->customcode))
|
||||||
$tmptxt .= $langs->transnoentitiesnoconv("CustomCode") . ': ' . $prod->customcode;
|
$tmptxt .= $langs->transnoentitiesnoconv("CustomCode") . ': ' . $prod->customcode;
|
||||||
if (! empty($prod->customcode) && ! empty($prod->country_code))
|
if (! empty($prod->customcode) && ! empty($prod->country_code))
|
||||||
$tmptxt .= ' - ';
|
$tmptxt .= ' - ';
|
||||||
if (! empty($prod->country_code))
|
if (! empty($prod->country_code))
|
||||||
$tmptxt .= $langs->transnoentitiesnoconv("CountryOrigin") . ': ' . getCountry($prod->country_code, 0, $db, $langs, 0);
|
$tmptxt .= $langs->transnoentitiesnoconv("CountryOrigin") . ': ' . getCountry($prod->country_code, 0, $db, $langs, 0);
|
||||||
|
}
|
||||||
$tmptxt .= ')';
|
$tmptxt .= ')';
|
||||||
$desc = dol_concatdesc($desc, $tmptxt);
|
$desc = dol_concatdesc($desc, $tmptxt);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2878,7 +2878,7 @@ class Facture extends CommonInvoice
|
|||||||
// Cap percentages to 100
|
// Cap percentages to 100
|
||||||
if ($percent > 100) $percent = 100;
|
if ($percent > 100) $percent = 100;
|
||||||
$line->situation_percent = $percent;
|
$line->situation_percent = $percent;
|
||||||
$tabprice = calcul_price_total($line->qty, $line->subprice, $line->remise_percent, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, $line->product_type, 'HT', 0, 0, $mysoc, '', $percent);
|
$tabprice = calcul_price_total($line->qty, $line->subprice, $line->remise_percent, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 0, 'HT', 0, $line->product_type, $mysoc, '', $percent);
|
||||||
$line->total_ht = $tabprice[0];
|
$line->total_ht = $tabprice[0];
|
||||||
$line->total_tva = $tabprice[1];
|
$line->total_tva = $tabprice[1];
|
||||||
$line->total_ttc = $tabprice[2];
|
$line->total_ttc = $tabprice[2];
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
|
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
|
||||||
* Copyright (C) 2005-2011 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2011 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||||
|
* Copyright (C) 2017 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
|
||||||
@ -188,6 +189,6 @@ else
|
|||||||
print $langs->trans("ErrorUnknown");
|
print $langs->trans("ErrorUnknown");
|
||||||
}
|
}
|
||||||
|
|
||||||
$db->close();
|
|
||||||
|
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|
||||||
|
$db->close();
|
||||||
|
|||||||
@ -84,7 +84,7 @@ dol_mkdir($dir);
|
|||||||
$stats = new FactureStats($db, $socid, $mode, ($userid>0?$userid:0));
|
$stats = new FactureStats($db, $socid, $mode, ($userid>0?$userid:0));
|
||||||
if ($mode == 'customer')
|
if ($mode == 'customer')
|
||||||
{
|
{
|
||||||
if ($object_status != '' && $object_status >= -1) $stats->where .= ' AND f.fk_statut IN ('.$object_status.')';
|
if ($object_status != '' && $object_status >= 0) $stats->where .= ' AND f.fk_statut IN ('.$object_status.')';
|
||||||
}
|
}
|
||||||
if ($mode == 'supplier')
|
if ($mode == 'supplier')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -745,7 +745,8 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
|
|||||||
{
|
{
|
||||||
// Print total
|
// Print total
|
||||||
print '<tr class="liste_total">';
|
print '<tr class="liste_total">';
|
||||||
print '<td colspan="3" align="left">'.$langs->trans('TotalTTC').'</td>';
|
print '<td colspan="2" align="left">'.$langs->trans('TotalTTC').'</td>';
|
||||||
|
if (!empty($conf->multicurrency->enabled)) print '<td></td>';
|
||||||
if (!empty($conf->multicurrency->enabled)) print '<td></td>';
|
if (!empty($conf->multicurrency->enabled)) print '<td></td>';
|
||||||
if (!empty($conf->multicurrency->enabled)) print '<td></td>';
|
if (!empty($conf->multicurrency->enabled)) print '<td></td>';
|
||||||
if (!empty($conf->multicurrency->enabled)) print '<td></td>';
|
if (!empty($conf->multicurrency->enabled)) print '<td></td>';
|
||||||
|
|||||||
@ -322,7 +322,11 @@ class Contrat extends CommonObject
|
|||||||
$result=$this->thirdparty->set_as_client();
|
$result=$this->thirdparty->set_as_client();
|
||||||
|
|
||||||
// Define new ref
|
// Define new ref
|
||||||
if (! $error && (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref))) // empty should not happened, but when it occurs, the test save life
|
if ($force_number)
|
||||||
|
{
|
||||||
|
$num = $force_number;
|
||||||
|
}
|
||||||
|
else if (! $error && (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref))) // empty should not happened, but when it occurs, the test save life
|
||||||
{
|
{
|
||||||
$num = $this->getNextNumRef($this->thirdparty);
|
$num = $this->getNextNumRef($this->thirdparty);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -75,7 +75,7 @@ $opclotureyear=GETPOST('opclotureyear');
|
|||||||
$filter_opcloture=GETPOST('filter_opcloture');
|
$filter_opcloture=GETPOST('filter_opcloture');
|
||||||
|
|
||||||
// Initialize context for list
|
// Initialize context for list
|
||||||
$contextpage=GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'servicelist'.$mode;
|
$contextpage=GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'contractservicelist'.$mode;
|
||||||
|
|
||||||
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
|
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
|
||||||
$hookmanager->initHooks(array($contextpage));
|
$hookmanager->initHooks(array($contextpage));
|
||||||
|
|||||||
@ -88,6 +88,7 @@ class Conf
|
|||||||
$this->user = new stdClass();
|
$this->user = new stdClass();
|
||||||
$this->syslog = new stdClass();
|
$this->syslog = new stdClass();
|
||||||
$this->browser = new stdClass();
|
$this->browser = new stdClass();
|
||||||
|
$this->medias = new stdClass();
|
||||||
$this->multicompany = new stdClass();
|
$this->multicompany = new stdClass();
|
||||||
|
|
||||||
//! Charset for HTML output and for storing data in memory
|
//! Charset for HTML output and for storing data in memory
|
||||||
@ -328,6 +329,10 @@ class Conf
|
|||||||
$this->propal->dir_output=$rootfordata."/propale";
|
$this->propal->dir_output=$rootfordata."/propale";
|
||||||
$this->propal->dir_temp=$rootfordata."/propale/temp";
|
$this->propal->dir_temp=$rootfordata."/propale/temp";
|
||||||
|
|
||||||
|
// For medias storage
|
||||||
|
$this->medias->multidir_output = array($this->entity => $rootfordata."/medias");
|
||||||
|
$this->medias->multidir_temp = array($this->entity => $rootfordata."/medias/temp");
|
||||||
|
|
||||||
// Exception: Some dir are not the name of module. So we keep exception here
|
// Exception: Some dir are not the name of module. So we keep exception here
|
||||||
// for backward compatibility.
|
// for backward compatibility.
|
||||||
|
|
||||||
|
|||||||
@ -1275,10 +1275,10 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint=
|
|||||||
else $out.='-'.dol_print_date($histo[$key]['dateend'],'dayhour');
|
else $out.='-'.dol_print_date($histo[$key]['dateend'],'dayhour');
|
||||||
}
|
}
|
||||||
$late=0;
|
$late=0;
|
||||||
if ($histo[$key]['percent'] == 0 && $histo[$key]['datestart'] && $db->jdate($histo[$key]['datestart']) < ($now - $delay_warning)) $late=1;
|
if ($histo[$key]['percent'] == 0 && $histo[$key]['datestart'] && $histo[$key]['datestart'] < ($now - $delay_warning)) $late=1;
|
||||||
if ($histo[$key]['percent'] == 0 && ! $histo[$key]['datestart'] && $histo[$key]['dateend'] && $db->jdate($histo[$key]['datestart']) < ($now - $delay_warning)) $late=1;
|
if ($histo[$key]['percent'] == 0 && ! $histo[$key]['datestart'] && $histo[$key]['dateend'] && $histo[$key]['datestart'] < ($now - $delay_warning)) $late=1;
|
||||||
if ($histo[$key]['percent'] > 0 && $histo[$key]['percent'] < 100 && $histo[$key]['dateend'] && $db->jdate($histo[$key]['dateend']) < ($now - $delay_warning)) $late=1;
|
if ($histo[$key]['percent'] > 0 && $histo[$key]['percent'] < 100 && $histo[$key]['dateend'] && $histo[$key]['dateend'] < ($now - $delay_warning)) $late=1;
|
||||||
if ($histo[$key]['percent'] > 0 && $histo[$key]['percent'] < 100 && ! $histo[$key]['dateend'] && $histo[$key]['datestart'] && $db->jdate($histo[$key]['datestart']) < ($now - $delay_warning)) $late=1;
|
if ($histo[$key]['percent'] > 0 && $histo[$key]['percent'] < 100 && ! $histo[$key]['dateend'] && $histo[$key]['datestart'] && $histo[$key]['datestart'] < ($now - $delay_warning)) $late=1;
|
||||||
if ($late) $out.=img_warning($langs->trans("Late")).' ';
|
if ($late) $out.=img_warning($langs->trans("Late")).' ';
|
||||||
$out.="</td>\n";
|
$out.="</td>\n";
|
||||||
|
|
||||||
|
|||||||
@ -1857,7 +1857,7 @@ function dol_check_secure_access_document($modulepart,$original_file,$entity,$fu
|
|||||||
elseif ($modulepart == 'medias' && !empty($dolibarr_main_data_root))
|
elseif ($modulepart == 'medias' && !empty($dolibarr_main_data_root))
|
||||||
{
|
{
|
||||||
$accessallowed=1;
|
$accessallowed=1;
|
||||||
$original_file=$dolibarr_main_data_root.'/medias/'.$original_file;
|
$original_file=$conf->medias->multidir_output[$entity].'/'.$original_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wrapping for backups
|
// Wrapping for backups
|
||||||
|
|||||||
@ -390,7 +390,7 @@ if (empty($reshook))
|
|||||||
$localtax1_tx,
|
$localtax1_tx,
|
||||||
$localtax2_tx,
|
$localtax2_tx,
|
||||||
$idprod,
|
$idprod,
|
||||||
$productsupplier->id,
|
$productsupplier->product_fourn_price_id,
|
||||||
$productsupplier->fourn_ref,
|
$productsupplier->fourn_ref,
|
||||||
$remise_percent,
|
$remise_percent,
|
||||||
'HT',
|
'HT',
|
||||||
|
|||||||
@ -149,7 +149,7 @@ if ($action == 'create')
|
|||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
$object->fk_user = $userid;
|
$object->fk_user = $fuserid;
|
||||||
$object->description = $description;
|
$object->description = $description;
|
||||||
$object->date_debut = $date_debut;
|
$object->date_debut = $date_debut;
|
||||||
$object->date_fin = $date_fin;
|
$object->date_fin = $date_fin;
|
||||||
|
|||||||
@ -385,7 +385,7 @@ if ($showweather) $boxwork.='<th class="liste_titre hideonsmartphone" width="80"
|
|||||||
$boxwork.='</tr>'."\n";
|
$boxwork.='</tr>'."\n";
|
||||||
|
|
||||||
// Do not include sections without management permission
|
// Do not include sections without management permission
|
||||||
require DOL_DOCUMENT_ROOT.'/core/class/workboardresponse.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/workboardresponse.class.php';
|
||||||
|
|
||||||
// Number of actions to do (late)
|
// Number of actions to do (late)
|
||||||
if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->read)
|
if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->read)
|
||||||
|
|||||||
@ -56,7 +56,6 @@ $select_pricing_rules=array(
|
|||||||
);
|
);
|
||||||
if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
|
if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
|
||||||
{
|
{
|
||||||
$langs->load("admin");
|
|
||||||
$select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY'] = $langs->trans('PriceByQuantity').' ('.$langs->trans("VersionExperimental").')'; // TODO If this is enabled, price must be hidden when price by qty is enabled, also price for quantity must be used when adding product into order/propal/invoice
|
$select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY'] = $langs->trans('PriceByQuantity').' ('.$langs->trans("VersionExperimental").')'; // TODO If this is enabled, price must be hidden when price by qty is enabled, also price for quantity must be used when adding product into order/propal/invoice
|
||||||
$select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY&PRODUIT_MULTIPRICES'] = $langs->trans('MultiPricesAbility') . '+' . $langs->trans('PriceByQuantity').' ('.$langs->trans("VersionExperimental").')';
|
$select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY&PRODUIT_MULTIPRICES'] = $langs->trans('MultiPricesAbility') . '+' . $langs->trans('PriceByQuantity').' ('.$langs->trans("VersionExperimental").')';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1384,6 +1384,7 @@ class Product extends CommonObject
|
|||||||
$this->fourn_pu = $obj->price / $obj->quantity; // Unit price of product of supplier
|
$this->fourn_pu = $obj->price / $obj->quantity; // Unit price of product of supplier
|
||||||
$this->fourn_price_base_type = 'HT'; // Price base type
|
$this->fourn_price_base_type = 'HT'; // Price base type
|
||||||
$this->ref_fourn = $obj->ref_fourn; // deprecated
|
$this->ref_fourn = $obj->ref_fourn; // deprecated
|
||||||
|
$this->product_fourn_price_id = $obj->rowid; // supplier price id
|
||||||
$this->ref_supplier = $obj->ref_fourn; // Ref supplier
|
$this->ref_supplier = $obj->ref_fourn; // Ref supplier
|
||||||
$this->vatrate_supplier = $obj->tva_tx; // Vat ref supplier
|
$this->vatrate_supplier = $obj->tva_tx; // Vat ref supplier
|
||||||
$result=$obj->fk_product;
|
$result=$obj->fk_product;
|
||||||
@ -1428,6 +1429,7 @@ class Product extends CommonObject
|
|||||||
$this->fourn_qty = $obj->quantity; // min quantity for price for a virtual supplier
|
$this->fourn_qty = $obj->quantity; // min quantity for price for a virtual supplier
|
||||||
$this->fourn_pu = $obj->price / $obj->quantity; // Unit price of product for a virtual supplier
|
$this->fourn_pu = $obj->price / $obj->quantity; // Unit price of product for a virtual supplier
|
||||||
$this->fourn_price_base_type = 'HT'; // Price base type for a virtual supplier
|
$this->fourn_price_base_type = 'HT'; // Price base type for a virtual supplier
|
||||||
|
$this->product_fourn_price_id = $obj->rowid; // supplier price id
|
||||||
$this->ref_fourn = $obj->ref_supplier; // deprecated
|
$this->ref_fourn = $obj->ref_supplier; // deprecated
|
||||||
$this->ref_supplier = $obj->ref_supplier; // Ref supplier
|
$this->ref_supplier = $obj->ref_supplier; // Ref supplier
|
||||||
$this->vatrate_supplier = $obj->tva_tx; // Vat ref supplier
|
$this->vatrate_supplier = $obj->tva_tx; // Vat ref supplier
|
||||||
|
|||||||
@ -29,7 +29,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
|
||||||
require_once './lib/replenishment.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/stock/lib/replenishment.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||||
|
|
||||||
$langs->load("products");
|
$langs->load("products");
|
||||||
$langs->load("stocks");
|
$langs->load("stocks");
|
||||||
@ -44,9 +45,12 @@ $sref = GETPOST('search_ref', 'alpha');
|
|||||||
$snom = GETPOST('search_nom', 'alpha');
|
$snom = GETPOST('search_nom', 'alpha');
|
||||||
$suser = GETPOST('search_user', 'alpha');
|
$suser = GETPOST('search_user', 'alpha');
|
||||||
$sttc = GETPOST('search_ttc', 'alpha');
|
$sttc = GETPOST('search_ttc', 'alpha');
|
||||||
$sdate = GETPOST('search_date', 'alpha');
|
|
||||||
$page = GETPOST('page', 'int');
|
$page = GETPOST('page', 'int');
|
||||||
$sproduct = GETPOST('sproduct', 'int');
|
$sproduct = GETPOST('sproduct', 'int');
|
||||||
|
$search_dateyear = GETPOST('search_dateyear', 'int');
|
||||||
|
$search_datemonth = GETPOST('search_datemonth', 'int');
|
||||||
|
$search_dateday = GETPOST('search_dateday', 'int');
|
||||||
|
$search_date = dol_mktime(0, 0, 0, $search_datemonth, $search_dateday, $search_dateyear);
|
||||||
|
|
||||||
$limit = GETPOST('limit')?GETPOST('limit','int'):$conf->liste_limit;
|
$limit = GETPOST('limit')?GETPOST('limit','int'):$conf->liste_limit;
|
||||||
$sortfield = GETPOST("sortfield");
|
$sortfield = GETPOST("sortfield");
|
||||||
@ -58,7 +62,6 @@ if ($page < 0) $page = 0;
|
|||||||
$offset = $limit * $page;
|
$offset = $limit * $page;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
@ -70,7 +73,10 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP
|
|||||||
$snom="";
|
$snom="";
|
||||||
$suser="";
|
$suser="";
|
||||||
$sttc="";
|
$sttc="";
|
||||||
$sdate='';
|
$search_date='';
|
||||||
|
$search_datemonth='';
|
||||||
|
$search_dateday='';
|
||||||
|
$search_dateyear='';
|
||||||
$sproduct=0;
|
$sproduct=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,17 +131,19 @@ if ($sref) $sql .= natural_search('cf.ref', $sref);
|
|||||||
if ($snom) $sql .= natural_search('s.nom', $snom);
|
if ($snom) $sql .= natural_search('s.nom', $snom);
|
||||||
if ($suser) $sql .= natural_search('u.login', $suser);
|
if ($suser) $sql .= natural_search('u.login', $suser);
|
||||||
if ($sttc) $sql .= natural_search('cf.total_ttc', $sttc, 1);
|
if ($sttc) $sql .= natural_search('cf.total_ttc', $sttc, 1);
|
||||||
if ($sdate)
|
|
||||||
|
if ($search_datemonth > 0)
|
||||||
{
|
{
|
||||||
if (GETPOST('search_datemonth', 'int') && GETPOST('search_dateday', 'int') && GETPOST('search_dateyear', 'int'))
|
if ($search_dateyear > 0 && empty($search_dateday))
|
||||||
{
|
$sql.= " AND cf.date_creation BETWEEN '".$db->idate(dol_get_first_day($search_dateyear,$search_datemonth,false))."' AND '".$db->idate(dol_get_last_day($search_dateyear,$search_datemonth,false))."'";
|
||||||
$date = dol_mktime(0, 0, 0, GETPOST('search_datemonth', 'int'), GETPOST('search_dateday', 'int'), GETPOST('search_dateyear', 'int'));
|
else if ($search_dateyear > 0 && ! empty($search_dateday))
|
||||||
}
|
$sql.= " AND cf.date_creation BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $search_datemonth, $search_dateday, $search_dateyear))."' AND '".$db->idate(dol_mktime(23, 59, 59, $search_datemonth, $search_dateday, $search_dateyear))."'";
|
||||||
else
|
else
|
||||||
{
|
$sql.= " AND date_format(cf.date_creation, '%m') = '".$search_datemonth."'";
|
||||||
$date = dol_stringtotime($sdate);
|
|
||||||
}
|
}
|
||||||
$sql .= " AND cf.date_creation = '" . $db->idate($date) . "'";
|
else if ($search_dateyear > 0)
|
||||||
|
{
|
||||||
|
$sql.= " AND cf.date_creation BETWEEN '".$db->idate(dol_get_first_day($search_dateyear,1,false))."' AND '".$db->idate(dol_get_last_day($search_dateyear,12,false))."'";
|
||||||
}
|
}
|
||||||
if ($sall) $sql .= natural_search(array('cf.ref','cf.note'), $sall);
|
if ($sall) $sql .= natural_search(array('cf.ref','cf.note'), $sall);
|
||||||
if (!empty($socid)) $sql .= ' AND s.rowid = ' . $socid;
|
if (!empty($socid)) $sql .= ' AND s.rowid = ' . $socid;
|
||||||
@ -146,7 +154,6 @@ $sql .= ' GROUP BY cf.rowid, cf.ref, cf.date_creation, cf.fk_statut';
|
|||||||
$sql .= ', cf.total_ttc, cf.fk_user_author, u.login, s.rowid, s.nom';
|
$sql .= ', cf.total_ttc, cf.fk_user_author, u.login, s.rowid, s.nom';
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
$sql .= $db->plimit($limit+1, $offset);
|
$sql .= $db->plimit($limit+1, $offset);
|
||||||
//print $sql;
|
|
||||||
|
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
@ -158,6 +165,19 @@ if ($resql)
|
|||||||
|
|
||||||
print_barre_liste('', $page, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', $num, 0, '');
|
print_barre_liste('', $page, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', $num, 0, '');
|
||||||
|
|
||||||
|
$param='';
|
||||||
|
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage);
|
||||||
|
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
|
||||||
|
if ($sref) $param.='&search_ref='.urlencode($sref);
|
||||||
|
if ($snom) $param.='&search_nom='.urlencode($snom);
|
||||||
|
if ($suser) $param.='&search_user='.urlencode($suser);
|
||||||
|
if ($sttc) $param.='&search_ttc='.urlencode($sttc);
|
||||||
|
if ($search_dateyear) $param.='&search_dateyear='.urlencode($search_dateyear);
|
||||||
|
if ($search_datemonth) $param.='&search_datemonth='.urlencode($search_datemonth);
|
||||||
|
if ($search_dateday) $param.='&search_dateday='.urlencode($search_dateday);
|
||||||
|
if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
|
||||||
|
|
||||||
|
|
||||||
print '<form action="'.$_SERVER["PHP_SELF"].'" method="GET">';
|
print '<form action="'.$_SERVER["PHP_SELF"].'" method="GET">';
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">'.
|
print '<table class="noborder" width="100%">'.
|
||||||
@ -167,7 +187,7 @@ if ($resql)
|
|||||||
$_SERVER['PHP_SELF'],
|
$_SERVER['PHP_SELF'],
|
||||||
'cf.ref',
|
'cf.ref',
|
||||||
'',
|
'',
|
||||||
'',
|
$param,
|
||||||
'',
|
'',
|
||||||
$sortfield,
|
$sortfield,
|
||||||
$sortorder
|
$sortorder
|
||||||
@ -177,7 +197,7 @@ if ($resql)
|
|||||||
$_SERVER['PHP_SELF'],
|
$_SERVER['PHP_SELF'],
|
||||||
's.nom',
|
's.nom',
|
||||||
'',
|
'',
|
||||||
'',
|
$param,
|
||||||
'',
|
'',
|
||||||
$sortfield,
|
$sortfield,
|
||||||
$sortorder
|
$sortorder
|
||||||
@ -187,7 +207,7 @@ if ($resql)
|
|||||||
$_SERVER['PHP_SELF'],
|
$_SERVER['PHP_SELF'],
|
||||||
'u.login',
|
'u.login',
|
||||||
'',
|
'',
|
||||||
'',
|
$param,
|
||||||
'',
|
'',
|
||||||
$sortfield,
|
$sortfield,
|
||||||
$sortorder
|
$sortorder
|
||||||
@ -197,7 +217,7 @@ if ($resql)
|
|||||||
$_SERVER['PHP_SELF'],
|
$_SERVER['PHP_SELF'],
|
||||||
'cf.total_ttc',
|
'cf.total_ttc',
|
||||||
'',
|
'',
|
||||||
'',
|
$param,
|
||||||
'',
|
'',
|
||||||
$sortfield,
|
$sortfield,
|
||||||
$sortorder
|
$sortorder
|
||||||
@ -207,7 +227,7 @@ if ($resql)
|
|||||||
$_SERVER['PHP_SELF'],
|
$_SERVER['PHP_SELF'],
|
||||||
'cf.date_creation',
|
'cf.date_creation',
|
||||||
'',
|
'',
|
||||||
'',
|
$param,
|
||||||
'',
|
'',
|
||||||
$sortfield,
|
$sortfield,
|
||||||
$sortorder
|
$sortorder
|
||||||
@ -217,28 +237,29 @@ if ($resql)
|
|||||||
$_SERVER['PHP_SELF'],
|
$_SERVER['PHP_SELF'],
|
||||||
'cf.fk_statut',
|
'cf.fk_statut',
|
||||||
'',
|
'',
|
||||||
'',
|
$param,
|
||||||
'align="right"',
|
'align="right"',
|
||||||
$sortfield,
|
$sortfield,
|
||||||
$sortorder
|
$sortorder
|
||||||
);
|
);
|
||||||
|
|
||||||
print '</tr>'.
|
print '</tr>'.
|
||||||
|
|
||||||
'<tr class="liste_titre">'.
|
'<tr class="liste_titre">'.
|
||||||
'<td class="liste_titre">'.
|
'<td class="liste_titre">'.
|
||||||
'<input type="text" class="flat" name="search_ref" value="' . $sref . '">'.
|
'<input type="text" class="flat" name="search_ref" value="' . dol_escape_htmltag($sref) . '">'.
|
||||||
'</td>'.
|
'</td>'.
|
||||||
'<td class="liste_titre">'.
|
'<td class="liste_titre">'.
|
||||||
'<input type="text" class="flat" name="search_nom" value="' . $snom . '">'.
|
'<input type="text" class="flat" name="search_nom" value="' . dol_escape_htmltag($snom) . '">'.
|
||||||
'</td>'.
|
'</td>'.
|
||||||
'<td class="liste_titre">'.
|
'<td class="liste_titre">'.
|
||||||
'<input type="text" class="flat" name="search_user" value="' . $suser . '">'.
|
'<input type="text" class="flat" name="search_user" value="' . dol_escape_htmltag($suser) . '">'.
|
||||||
'</td>'.
|
'</td>'.
|
||||||
'<td class="liste_titre">'.
|
'<td class="liste_titre">'.
|
||||||
'<input type="text" class="flat" name="search_ttc" value="' . $sttc . '">'.
|
'<input type="text" class="flat" name="search_ttc" value="' . dol_escape_htmltag($sttc) . '">'.
|
||||||
'</td>'.
|
'</td>'.
|
||||||
'<td class="liste_titre">'.
|
'<td class="liste_titre">'.
|
||||||
$form->select_date('', 'search_date', 0, 0, 1, '', 1, 0, 1, 0, '').
|
$form->select_date($search_date, 'search_date', 0, 0, 1, '', 1, 0, 1, 0, '').
|
||||||
'</td>'.
|
'</td>'.
|
||||||
'<td class="liste_titre" align="right">';
|
'<td class="liste_titre" align="right">';
|
||||||
$searchpitco=$form->showFilterAndCheckAddButtons(0);
|
$searchpitco=$form->showFilterAndCheckAddButtons(0);
|
||||||
@ -247,6 +268,7 @@ if ($resql)
|
|||||||
'</tr>';
|
'</tr>';
|
||||||
|
|
||||||
$var = true;
|
$var = true;
|
||||||
|
|
||||||
$userstatic = new User($db);
|
$userstatic = new User($db);
|
||||||
|
|
||||||
while ($i < min($num,$conf->liste_limit))
|
while ($i < min($num,$conf->liste_limit))
|
||||||
|
|||||||
@ -967,7 +967,7 @@ while ($i < min($num, $limit))
|
|||||||
if (! empty($arrayfields['typent.code']['checked']))
|
if (! empty($arrayfields['typent.code']['checked']))
|
||||||
{
|
{
|
||||||
print '<td align="center">';
|
print '<td align="center">';
|
||||||
if (count($typenArray)==0) $typenArray = $formcompany->typent_array(1);
|
if (! is_array($typenArray) || count($typenArray)==0) $typenArray = $formcompany->typent_array(1);
|
||||||
print $typenArray[$obj->typent_code];
|
print $typenArray[$obj->typent_code];
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user