Merge branch 'develop' into label_for_MAIN_SHOW_REGION_IN_STATE
This commit is contained in:
commit
e3c939ac83
@ -9,6 +9,9 @@ FIX: #7379: Compatibility with PRODUCT_USE_OLD_PATH_FOR_PHOTO variable
|
||||
FIX: #7903
|
||||
FIX: #7933
|
||||
FIX: #8029 Unable to make leave request in holyday module
|
||||
FIX: #8093
|
||||
FIX: Bad name alias showing in name of third column
|
||||
FIX: Cashdesk should not sell to inactive third parties
|
||||
FIX: Edit accountancy account and warning message on loan
|
||||
FIX: $accounts[$bid] is a label !
|
||||
FIX: $oldvatrateclean & $newvatrateclean must be set if preg_match === false
|
||||
@ -16,6 +19,10 @@ FIX: product best price on product list
|
||||
FIX: search on contact list
|
||||
FIX: stats trad for customerinvoice
|
||||
FIX: translate unactivate on contractline
|
||||
FIX: email sent was not in HTML
|
||||
FIX: missing hook invoice index
|
||||
FIX: subject mail sepa
|
||||
|
||||
|
||||
***** ChangeLog for 6.0.4 compared to 6.0.3 *****
|
||||
FIX: #7737
|
||||
|
||||
@ -19,7 +19,7 @@ use Term::ANSIColor;
|
||||
# Change this to defined target for option 98 and 99
|
||||
$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
|
||||
|
||||
@ -742,7 +742,9 @@ class BlockedLog
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a string for signature
|
||||
* Return a string for signature.
|
||||
* Note: rowid of line not included as it is not a business data and this allow to make backup of a year
|
||||
* and restore it into another database with different id wihtout comprimising checksums
|
||||
*
|
||||
* @return string Key for signature
|
||||
*/
|
||||
|
||||
@ -618,6 +618,7 @@ function security_prepare_head()
|
||||
|
||||
|
||||
// Show permissions lines
|
||||
$nbPerms=0;
|
||||
$sql = "SELECT COUNT(r.id) as nb";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."rights_def as r";
|
||||
$sql.= " WHERE r.libelle NOT LIKE 'tou%'"; // On ignore droits "tous"
|
||||
|
||||
@ -5634,7 +5634,11 @@ function getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $ob
|
||||
|
||||
/**
|
||||
* Make substitution into a text string, replacing keys with vals from $substitutionarray (oldval=>newval).
|
||||
* Texts like __(TranslationKey|langfile)__ and __[ConstantKey]__ are also replaced
|
||||
* Texts like __(TranslationKey|langfile)__ and __[ConstantKey]__ are also replaced.
|
||||
* Example of usage:
|
||||
* $substitutionarray = getCommonSubstitutionArray($langs, 0, null, $thirdparty);
|
||||
* complete_substitutions_array($substitutionarray, $langs, $thirdparty);
|
||||
* $mesg = make_substitutions($mesg, $substitutionarray, $langs);
|
||||
*
|
||||
* @param string $text Source string in which we must do substitution
|
||||
* @param array $substitutionarray Array with key->val to substitute. Example: array('__MYKEY__' => 'MyVal', ...)
|
||||
|
||||
@ -46,6 +46,8 @@ class modBlockedLog extends DolibarrModules
|
||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||
// It is used to group modules in module setup page
|
||||
$this->family = "base";
|
||||
// Module position in the family on 2 digits ('01', '10', '20', ...)
|
||||
$this->module_position = '90';
|
||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||
$this->description = "Enable a log on some business events into a non reversible log. This module may be mandatory for some countries.";
|
||||
|
||||
@ -45,6 +45,8 @@ class modSyslog extends DolibarrModules
|
||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||
// It is used to group modules in module setup page
|
||||
$this->family = "base";
|
||||
// Module position in the family on 2 digits ('01', '10', '20', ...)
|
||||
$this->module_position = '50';
|
||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
||||
|
||||
@ -140,7 +140,7 @@ if ($action == 'confirm_execute' && $confirm == "yes" && $user->rights->cron->ex
|
||||
$action='';
|
||||
}
|
||||
|
||||
header("Location: ".DOL_URL_ROOT.'/cron/list.php?status=-2'); // Make a call to avoid to run twice job when using back
|
||||
header("Location: ".DOL_URL_ROOT.'/cron/list.php?status=-2'); // Make a redirect to avoid to run twice the job when using back
|
||||
exit;
|
||||
}
|
||||
}
|
||||
@ -270,7 +270,7 @@ else
|
||||
$buttontoshow.='<a class="butAction" style="margin-right: 0px;margin-left: 0px;" href="'.DOL_URL_ROOT.'/cron/card.php?action=create">'.$langs->trans("CronCreateJob").'</a>';
|
||||
}
|
||||
|
||||
print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $buttontoshow, $num, $nbtotalofrecords, 'title_setup', 0, '', '', $limit);
|
||||
print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_setup', 0, $buttontoshow, '', $limit);
|
||||
|
||||
|
||||
print $langs->trans('CronInfo').'<br>';
|
||||
|
||||
@ -468,9 +468,11 @@ class ProductFournisseur extends Product
|
||||
* @param int $prodid Id of product
|
||||
* @param string $sortfield Sort field
|
||||
* @param string $sortorder Sort order
|
||||
* @param int $limit Limit
|
||||
* @param int $offset Offset
|
||||
* @return array Array of Products with new properties to define supplier price
|
||||
*/
|
||||
function list_product_fournisseur_price($prodid, $sortfield='', $sortorder='')
|
||||
function list_product_fournisseur_price($prodid, $sortfield='', $sortorder='', $limit=0, $offset=0)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
@ -484,7 +486,8 @@ class ProductFournisseur extends Product
|
||||
$sql.= " AND s.status=1"; // only enabled company selected
|
||||
$sql.= " AND pfp.fk_product = ".$prodid;
|
||||
if (empty($sortfield)) $sql.= " ORDER BY s.nom, pfp.quantity, pfp.price";
|
||||
else $sql.= $this->db->order($sortfield,$sortorder);
|
||||
else $sql.= $this->db->order($sortfield, $sortorder);
|
||||
$sql.=$this->db->plimit($limit, $offset);
|
||||
dol_syslog(get_class($this)."::list_product_fournisseur_price", LOG_DEBUG);
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
@ -516,7 +519,7 @@ class ProductFournisseur extends Product
|
||||
$prodfourn->id = $prodid;
|
||||
$prodfourn->fourn_tva_npr = $record["info_bits"];
|
||||
$prodfourn->fk_supplier_price_expression = $record["fk_supplier_price_expression"];
|
||||
$prodfourn->supplier_reputation = $record["supplier_reputation"];
|
||||
$prodfourn->supplier_reputation = $record["supplier_reputation"];
|
||||
|
||||
if (!empty($conf->dynamicprices->enabled) && !empty($prodfourn->fk_supplier_price_expression)) {
|
||||
$priceparser = new PriceParser($this->db);
|
||||
|
||||
@ -488,7 +488,7 @@ Module30Name=Invoices
|
||||
Module30Desc=Invoice and credit note management for customers. Invoice management for suppliers
|
||||
Module40Name=Suppliers
|
||||
Module40Desc=Supplier management and buying (orders and invoices)
|
||||
Module42Name=Logs
|
||||
Module42Name=Debug Logs
|
||||
Module42Desc=Logging facilities (file, syslog, ...). Such logs are for technical/debug purposes.
|
||||
Module49Name=Editors
|
||||
Module49Desc=Editor management
|
||||
@ -573,8 +573,8 @@ Module2300Name=Scheduled jobs
|
||||
Module2300Desc=Scheduled jobs management (alias cron or chrono table)
|
||||
Module2400Name=Events/Agenda
|
||||
Module2400Desc=Follow done and upcoming events. Let application logs automatic events for tracking purposes or record manual events or rendez-vous.
|
||||
Module2500Name=Electronic Content Management
|
||||
Module2500Desc=Save and share documents
|
||||
Module2500Name=DMS / ECM
|
||||
Module2500Desc=Document Management System / Electronic Content Management. Automatic organization of your generated or stored documents. Share them when you need.
|
||||
Module2600Name=API/Web services (SOAP server)
|
||||
Module2600Desc=Enable the Dolibarr SOAP server providing API services
|
||||
Module2610Name=API/Web services (REST server)
|
||||
@ -588,8 +588,8 @@ Module2900Name=GeoIPMaxmind
|
||||
Module2900Desc=GeoIP Maxmind conversions capabilities
|
||||
Module3100Name=Skype
|
||||
Module3100Desc=Add a Skype button into users / third parties / contacts / members cards
|
||||
Module3200Name=Non Reversible Logs
|
||||
Module3200Desc=Activate log of some business events into a non reversible log. Events are archived in real-time. The log is a table of chained event that can be then read and exported. This module may be mandatory for some countries.
|
||||
Module3200Name=Unalterable Archives
|
||||
Module3200Desc=Activate log of some business events into an unalterable log. Events are archived in real-time. The log is a table of chained events that can be read only and exported. This module may be mandatory for some countries.
|
||||
Module4000Name=HRM
|
||||
Module4000Desc=Human resources management (management of department, employee contracts and feelings)
|
||||
Module5000Name=Multi-company
|
||||
|
||||
@ -14,8 +14,8 @@ ECMNbOfFilesInDir=Number of files in directory
|
||||
ECMNbOfSubDir=Number of sub-directories
|
||||
ECMNbOfFilesInSubDir=Number of files in sub-directories
|
||||
ECMCreationUser=Creator
|
||||
ECMArea=EDM area
|
||||
ECMAreaDesc=The EDM (Electronic Document Management) area allows you to save, share and search quickly all kind of documents in Dolibarr.
|
||||
ECMArea=DMS/ECM area
|
||||
ECMAreaDesc=The DMS/ECM (Document Management System / Electronic Content Management) area allows you to save, share and search quickly all kind of documents in Dolibarr.
|
||||
ECMAreaDesc2=* Automatic directories are filled automatically when adding documents from card of an element.<br>* Manual directories can be used to save documents not linked to a particular element.
|
||||
ECMSectionWasRemoved=Directory <b>%s</b> has been deleted.
|
||||
ECMSectionWasCreated=Directory <b>%s</b> has been created.
|
||||
|
||||
@ -65,6 +65,17 @@ $fieldtype = (! empty($ref) ? 'ref' : 'rowid');
|
||||
if ($user->societe_id) $socid=$user->societe_id;
|
||||
$result=restrictedArea($user,'produit|service&fournisseur',$fieldvalue,'product&product','','',$fieldtype);
|
||||
|
||||
$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
|
||||
$sortfield = GETPOST("sortfield",'alpha');
|
||||
$sortorder = GETPOST("sortorder",'alpha');
|
||||
$page = (GETPOST("page",'int')?GETPOST("page", 'int'):0);
|
||||
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||
$offset = $limit * $page;
|
||||
$pageprev = $page - 1;
|
||||
$pagenext = $page + 1;
|
||||
if (! $sortfield) $sortfield="s.nom";
|
||||
if (! $sortorder) $sortorder="ASC";
|
||||
|
||||
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||
$hookmanager->initHooks(array('pricesuppliercard','globalcard'));
|
||||
|
||||
@ -589,13 +600,21 @@ if ($id > 0 || $ref)
|
||||
print "\n</div>\n";
|
||||
print '<br>';
|
||||
|
||||
|
||||
if ($user->rights->fournisseur->lire)
|
||||
{
|
||||
$param='';
|
||||
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage);
|
||||
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
|
||||
$param.='&ref='.urlencode($object->ref);
|
||||
|
||||
$product_fourn = new ProductFournisseur($db);
|
||||
$product_fourn_list = $product_fourn->list_product_fournisseur_price($object->id, $sortfield, $sortorder);
|
||||
$nbtotalofrecords = count($product_fourn_list);
|
||||
print_barre_liste($langs->trans('SupplierPrices'), $page, $_SERVEUR ['PHP_SELF'], $option, $sortfield, $sortorder, '', count($product_fourn_list), $nbtotalofrecords, 'title_accountancy.png');
|
||||
$product_fourn_list = $product_fourn->list_product_fournisseur_price($object->id, $sortfield, $sortorder, $limit, $offset);
|
||||
$product_fourn_list_all = $product_fourn->list_product_fournisseur_price($object->id, $sortfield, $sortorder, 0, 0);
|
||||
$nbtotalofrecords = count($product_fourn_list_all);
|
||||
$num = count($product_fourn_list);
|
||||
if (($num + ($offset * $limit)) < $nbtotalofrecords) $num++;
|
||||
|
||||
print_barre_liste($langs->trans('SupplierPrices'), $page, $_SERVEUR ['PHP_SELF'], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy.png', 0, '', '', $limit, 1);
|
||||
|
||||
// Suppliers list title
|
||||
print '<div class="div-table-responsive">';
|
||||
@ -606,7 +625,7 @@ if ($id > 0 || $ref)
|
||||
$param="&id=".$object->id;
|
||||
print '<tr class="liste_titre">';
|
||||
print_liste_field_titre("Suppliers",$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder);
|
||||
print_liste_field_titre("SupplierRef");
|
||||
print_liste_field_titre("SupplierRef",$_SERVER["PHP_SELF"],"","",$param,"",$sortfield,$sortorder);
|
||||
if (!empty($conf->global->FOURN_PRODUCT_AVAILABILITY)) print_liste_field_titre("Availability",$_SERVER["PHP_SELF"],"pfp.fk_availability","",$param,"",$sortfield,$sortorder);
|
||||
print_liste_field_titre("QtyMin",$_SERVER["PHP_SELF"],"pfp.quantity","",$param,'align="right"',$sortfield,$sortorder);
|
||||
print_liste_field_titre("VATRate",$_SERVER["PHP_SELF"],'','',$param,'align="right"',$sortfield,$sortorder);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user