mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
Merge branch '10.0' of git@github.com:Dolibarr/dolibarr.git into develop
Conflicts: ChangeLog htdocs/exports/export.php htdocs/filefunc.inc.php
This commit is contained in:
commit
fb3d20107c
62
ChangeLog
62
ChangeLog
|
|
@ -27,8 +27,68 @@ Following changes may create regressions for some external modules, but were nec
|
|||
* If your logo was visible on the menu bar, you must upload a new logo into 'Home-Setup-Company/Organization' to have it visible agin in menu.
|
||||
|
||||
|
||||
***** ChangeLog for 10.0.2 compared to 10.0.1 *****
|
||||
***** ChangeLog for 10.0.3 compared to 10.0.2 *****
|
||||
FIX: #11702
|
||||
FIX: #11861 No consistent code to manage measuring units
|
||||
FIX: #11942
|
||||
FIX: #12026
|
||||
FIX: #12040
|
||||
FIX: #12041
|
||||
FIX: #12054
|
||||
FIX: #12083
|
||||
FIX: #12088
|
||||
FIX: access to public interface when origin email has an alias.
|
||||
FIX: Alias name is not into the email recipient label.
|
||||
FIX: allow standalone credit note even if no invoice
|
||||
FIX: an admin can not access his own permissions after enabling advanced
|
||||
FIX: an admin can not access his own permissions after enabling advanced permissions
|
||||
FIX: Attachement of linked files on ticket when sending a message
|
||||
FIX: avoid non numeric warning
|
||||
FIX: Bad currency var used in stripe for connect
|
||||
FIX: Bad list of ticket on public interface for ticket emailcollector
|
||||
FIX: Can't modify vendor invoice if transfered into accountancy
|
||||
FIX: change product type must be allowed if we activate hidden conf
|
||||
FIX: colspan on VAT quadri report
|
||||
FIX: CSS
|
||||
FIX: Debug feature orderstoinvoice for suppliers
|
||||
FIX: do not output return code on screen after a select of bank account
|
||||
FIX: Edit of ticket module parameters erased others
|
||||
FIX: empty cache when we want to load specific warehouses in select
|
||||
FIX: escape email alias
|
||||
FIX: expedition.class.php
|
||||
FIX: Export of leave request show the number of open days
|
||||
FIX: Filtering the HTTP Header "Accept-Language".
|
||||
FIX: Filter on project on ticket list
|
||||
FIX: Filter "Open all" of ticket was ko.
|
||||
FIX: Force downlaod of file with .noexe as octet-stream mime type
|
||||
FIX: form not closed.
|
||||
FIX: hidden conf to prevent from changing product_type
|
||||
FIX: If product account not suggested during bind, it is not preselected
|
||||
FIX: If we share invoice, we need to see discount created from a deposit on each entity
|
||||
FIX: Import of product using units
|
||||
FIX: label of thirdparty is wrong on open project list
|
||||
FIX: Look and feel v10
|
||||
FIX: missing begin()
|
||||
FIX: missing "$this->id" in "fetch" function
|
||||
FIX: navigation on ticket tab of projects
|
||||
FIX: new invoice with generic thirdparty in takepos
|
||||
FIX: Pb in units of shipments
|
||||
FIX: regression with option to hide picto on top menu
|
||||
FIX: selection of project i am contact of.
|
||||
FIX: Send email from expense report card.
|
||||
FIX: shipping card: missing user error messages when classifying closed or billed
|
||||
FIX: SQL injection on qty
|
||||
FIX: stripe payment when there is a quote into address
|
||||
FIX: Substitution of __PROJECT_XXX__ not done
|
||||
FIX: TakePOS no invoice validation control and good payment translate
|
||||
FIX: the access of the bank account of one user
|
||||
FIX: top menu right padding
|
||||
FIX: Update of leave request when CSRF with token is on
|
||||
FIX: Var not enough sanitized
|
||||
FIX: wrong test
|
||||
FIX: XSS
|
||||
|
||||
***** ChangeLog for 10.0.2 compared to 10.0.1 *****
|
||||
FIX: #10460 compatibility with MariaDB 10.4
|
||||
FIX: #11401 Adherent unknown language key
|
||||
FIX: #11422 Can't edit his own events with standard rights
|
||||
|
|
|
|||
|
|
@ -1048,6 +1048,7 @@ class BlockedLog
|
|||
if (empty($conf->global->BLOCKEDLOG_ENTITY_FINGERPRINT)) { // creation of a unique fingerprint
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php';
|
||||
|
||||
$fingerprint = dol_hash(print_r($mysoc, true).getRandomPassword(1), '5');
|
||||
|
|
|
|||
|
|
@ -91,15 +91,13 @@ if ($_socid > 0)
|
|||
|
||||
dol_fiche_head($head, $tabchoice, $langs->trans("ThirdParty"), 0, 'company');
|
||||
|
||||
print '<table width="100%" border="0">';
|
||||
print '<tr><td class="tdtop">';
|
||||
print '<table class="border" width="100%">';
|
||||
print '<table class="border centpercent">';
|
||||
|
||||
print '<tr><td colspan="2" width="25%">';
|
||||
print $langs->trans("PriceLevel").'</td><td colspan="2">'.$objsoc->price_level."</td></tr>";
|
||||
print '<tr><td class="titlefieldcreate">';
|
||||
print $langs->trans("PriceLevel").'</td><td>'.$objsoc->price_level."</td></tr>";
|
||||
|
||||
print '<tr><td colspan="2">';
|
||||
print $langs->trans("NewValue").'</td><td colspan="2">';
|
||||
print '<tr><td>';
|
||||
print $langs->trans("NewValue").'</td><td>';
|
||||
print '<select name="price_level" class="flat">';
|
||||
for($i=1;$i<=$conf->global->PRODUIT_MULTIPRICES_LIMIT;$i++)
|
||||
{
|
||||
|
|
@ -116,12 +114,6 @@ if ($_socid > 0)
|
|||
|
||||
print "</table>";
|
||||
|
||||
print "</td>\n";
|
||||
|
||||
|
||||
print "</td></tr>";
|
||||
print "</table>";
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
print '<div align="center"><input type="submit" class="button" value="'.$langs->trans("Save").'"></div>';
|
||||
|
|
@ -157,8 +149,8 @@ if ($_socid > 0)
|
|||
while ($i < $num )
|
||||
{
|
||||
$obj = $db->fetch_object($resql);
|
||||
$tag = !$tag;
|
||||
print '<tr '.$bc[$tag].'>';
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>'.dol_print_date($db->jdate($obj->dc), "dayhour").'</td>';
|
||||
print '<td>'.$obj->price_level.' </td>';
|
||||
$userstatic->id=$obj->uid;
|
||||
|
|
|
|||
|
|
@ -270,6 +270,7 @@ class modSociete extends DolibarrModules
|
|||
'st.code'=>'ProspectStatus','payterm.libelle'=>'PaymentConditions','paymode.libelle'=>'PaymentMode'
|
||||
);
|
||||
if (! empty($conf->global->SOCIETE_USEPREFIX)) $this->export_fields_array[$r]['s.prefix']='Prefix';
|
||||
if (! empty($conf->global->PRODUIT_MULTIPRICES)) $this->export_fields_array[$r]['s.price_level']='PriceLevel';
|
||||
// Add multicompany field
|
||||
if (! empty($conf->global->MULTICOMPANY_ENTITY_IN_EXPORT_IF_SHARED))
|
||||
{
|
||||
|
|
@ -295,7 +296,8 @@ class modSociete extends DolibarrModules
|
|||
's.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_private'=>"Text",'s.note_public'=>"Text",'t.libelle'=>"Text",
|
||||
'ce.code'=>"List:c_effectif:libelle:code","cfj.libelle"=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code',
|
||||
'st.code'=>'List:c_stcomm:libelle:code','d.nom'=>'Text','u.login'=>'Text','u.firstname'=>'Text','u.lastname'=>'Text','payterm.libelle'=>'Text',
|
||||
'paymode.libelle'=>'Text','s.entity'=>'Numeric'
|
||||
'paymode.libelle'=>'Text','s.entity'=>'Numeric',
|
||||
's.price_level'=>'Numeric'
|
||||
);
|
||||
|
||||
$this->export_entities_array[$r]=array('u.login'=>'user','u.firstname'=>'user','u.lastname'=>'user'); // We define here only fields that use another picto
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/export/modules_export.php';
|
|||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
|
||||
// Load translation files required by the page
|
||||
$langs->loadlangs(array('exports', 'other', 'users', 'companies', 'projects', 'banks'));
|
||||
$langs->loadlangs(array('admin', 'exports', 'other', 'users', 'companies', 'projects', 'suppliers', 'products', 'bank'));
|
||||
|
||||
// Everybody should be able to go on this page
|
||||
//if (! $user->admin)
|
||||
|
|
|
|||
|
|
@ -85,10 +85,7 @@ if (empty($reshook))
|
|||
$result=$object->fetch($id);
|
||||
$object->code_compta_fournisseur=$_POST["supplieraccountancycode"];
|
||||
$result=$object->update($object->id, $user, 1, 0, 1);
|
||||
if ($result < 0)
|
||||
{
|
||||
$mesg=join(',', $object->errors);
|
||||
}
|
||||
if ($result < 0) setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
// terms of the settlement
|
||||
if ($action == 'setconditions' && $user->rights->societe->creer)
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ if (empty($user->societe_id) && empty($conf->global->MAIN_DISABLE_GLOBAL_BOXSTAT
|
|||
'askprice',
|
||||
'projects',
|
||||
'expensereports',
|
||||
'holidays',
|
||||
'holiday',
|
||||
'donations'
|
||||
);
|
||||
// Dashboard Icon lines
|
||||
|
|
|
|||
|
|
@ -1069,6 +1069,7 @@ CompanyTown=Town
|
|||
CompanyCountry=Country
|
||||
CompanyCurrency=Main currency
|
||||
CompanyObject=Object of the company
|
||||
IDCountry=ID country
|
||||
Logo=Logo
|
||||
LogoDesc=Main logo of company. Will be used into generated documents (PDF, ...)
|
||||
LogoSquarred=Logo (squarred)
|
||||
|
|
|
|||
|
|
@ -213,8 +213,8 @@ UseMultipriceRules=Use price segment rules (defined into product module setup) t
|
|||
PercentVariationOver=%% variation over %s
|
||||
PercentDiscountOver=%% discount over %s
|
||||
KeepEmptyForAutoCalculation=Keep empty to have this calculated automatically from weight or volume of products
|
||||
VariantRefExample=Example: COL
|
||||
VariantLabelExample=Example: Color
|
||||
VariantRefExample=Examples: COL, SIZE
|
||||
VariantLabelExample=Examples: Color, Size
|
||||
### composition fabrication
|
||||
Build=Produce
|
||||
ProductsMultiPrice=Products and prices for each price segment
|
||||
|
|
|
|||
|
|
@ -450,7 +450,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||
// Clone
|
||||
if (! empty($user->rights->mymodule->write))
|
||||
{
|
||||
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&socid=' . $object->socid . '&action=clone&object=order">' . $langs->trans("ToClone") . '</a></div>';
|
||||
print '<a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&socid=' . $object->socid . '&action=clone&object=order">' . $langs->trans("ToClone") . '</a>'."\n";
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -53,6 +53,19 @@ class Productlot extends CommonObject
|
|||
*/
|
||||
public $ismultientitymanaged = 1;
|
||||
|
||||
/**
|
||||
* @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(
|
||||
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'index'=>1, 'position'=>1, 'comment'=>'Id'),
|
||||
'batch' =>array('type'=>'varchar(30)', 'label'=>'Batch', 'enabled'=>1, 'visible'=>1, 'notnull'=>0, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'comment'=>'Batch'),
|
||||
'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'default'=>1, 'notnull'=>1, 'index'=>1, 'position'=>20),
|
||||
'datec' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>500),
|
||||
'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>501),
|
||||
'fk_user_author'=>array('type'=>'integer', 'label'=>'UserAuthor', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>510, 'foreignkey'=>'llx_user.rowid'),
|
||||
'fk_user_modif' =>array('type'=>'integer', 'label'=>'UserModif', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'position'=>511)
|
||||
);
|
||||
|
||||
/**
|
||||
* @var int Entity
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -764,7 +764,7 @@ if (empty($reshook))
|
|||
|
||||
if ($user->rights->stock->mouvement->creer)
|
||||
{
|
||||
if (! $variants) {
|
||||
if (! $variants || ! empty($conf->global->VARIANT_ALLOW_STOCK_MOVEMENT_ON_VARIANT_PARENT)) {
|
||||
print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=correction">' . $langs->trans("CorrectStock") . '</a>';
|
||||
}
|
||||
else
|
||||
|
|
@ -780,7 +780,7 @@ if (empty($reshook))
|
|||
//if (($user->rights->stock->mouvement->creer) && ! $object->hasbatch())
|
||||
if ($user->rights->stock->mouvement->creer)
|
||||
{
|
||||
if (! $variants) {
|
||||
if (! $variants || ! empty($conf->global->VARIANT_ALLOW_STOCK_MOVEMENT_ON_VARIANT_PARENT)) {
|
||||
print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=transfert">' . $langs->trans("TransferStock") . '</a>';
|
||||
}
|
||||
else
|
||||
|
|
@ -804,8 +804,8 @@ if (! $variants) {
|
|||
*/
|
||||
|
||||
print '<div class="div-table-responsive">';
|
||||
print '<table class="noborder centpercent">';
|
||||
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td colspan="4">' . $langs->trans("Warehouse") . '</td>';
|
||||
print '<td class="right">' . $langs->trans("NumberOfUnit") . '</td>';
|
||||
|
|
@ -924,7 +924,8 @@ if (! $variants) {
|
|||
print '<td class="center">' . dol_print_date($pdluo->eatby, 'day') . '</td>';
|
||||
print '<td class="center">' . dol_print_date($pdluo->sellby, 'day') . '</td>';
|
||||
print '<td class="right">' . $pdluo->qty . ($pdluo->qty < 0 ? ' ' . img_warning() : '') . '</td>';
|
||||
print '<td colspan="4"></td></tr>';
|
||||
print '<td colspan="4"></td>';
|
||||
print '</tr>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -932,12 +933,13 @@ if (! $variants) {
|
|||
}
|
||||
} else dol_print_error($db);
|
||||
|
||||
// Total line
|
||||
print '<tr class="liste_total"><td class="right liste_total" colspan="4">' . $langs->trans("Total") . ':</td>';
|
||||
print '<td class="liste_total right">' . price2num($total, 'MS') . '</td>';
|
||||
print '<td class="liste_total right">';
|
||||
print ($totalwithpmp ? price(price2num($totalvalue / $totalwithpmp, 'MU')) : ' '); // This value may have rounding errors
|
||||
print '</td>';
|
||||
// Value purchase
|
||||
// Value purchase
|
||||
print '<td class="liste_total right">';
|
||||
print $totalvalue ? price(price2num($totalvalue, 'MT'), 1) : ' ';
|
||||
print '</td>';
|
||||
|
|
@ -945,12 +947,13 @@ if (! $variants) {
|
|||
if (empty($conf->global->PRODUIT_MULTIPRICES)) print ($total ? price($totalvaluesell / $total, 1) : ' ');
|
||||
else print $langs->trans("Variable");
|
||||
print '</td>';
|
||||
// Value to sell
|
||||
// Value to sell
|
||||
print '<td class="liste_total right">';
|
||||
if (empty($conf->global->PRODUIT_MULTIPRICES)) print price(price2num($totalvaluesell, 'MT'), 1);
|
||||
else print $langs->trans("Variable");
|
||||
print '</td>';
|
||||
print "</tr>";
|
||||
|
||||
print "</table>";
|
||||
print '</div>';
|
||||
|
||||
|
|
@ -1073,6 +1076,7 @@ if (! $variants) {
|
|||
print '<tr class="liste_total">';
|
||||
print '<td colspan="4" class="left">'.$langs->trans("Total").'</td>';
|
||||
print '<td class="right">'.$stock_total.'</td>';
|
||||
print '<td></td>';
|
||||
print '</tr>';
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -1384,6 +1384,9 @@ div.nopadding {
|
|||
.pictomodule {
|
||||
width: 14px;
|
||||
}
|
||||
.pictomodule {
|
||||
width: 14px;
|
||||
}
|
||||
.fiche .arearef img.pictoedit, .fiche .arearef span.pictoedit,
|
||||
.fiche .fichecenter img.pictoedit, .fiche .fichecenter span.pictoedit,
|
||||
.tagtdnote span.pictoedit {
|
||||
|
|
|
|||
|
|
@ -377,6 +377,7 @@ if (! empty($id) || ! empty($ref))
|
|||
|
||||
dol_fiche_end();
|
||||
|
||||
$listofvariantselected = '';
|
||||
|
||||
// Create or edit a varian
|
||||
if ($action == 'add' || ($action == 'edit')) {
|
||||
|
|
@ -386,7 +387,7 @@ if (! empty($id) || ! empty($ref))
|
|||
//print dol_fiche_head();
|
||||
$features = $_SESSION['addvariant_'.$object->id];
|
||||
//First, sanitize
|
||||
print '<div id="parttoaddvariant">';
|
||||
$listofvariantselected = '<div id="parttoaddvariant">';
|
||||
if (! empty($features)) {
|
||||
foreach ($features as $feature) {
|
||||
|
||||
|
|
@ -400,16 +401,14 @@ if (! empty($id) || ! empty($ref))
|
|||
continue;
|
||||
}
|
||||
|
||||
print '<i>' . $prodattr->label . '</i>:'. $prodattr_val->value . ' ';
|
||||
$listofvariantselected .= '<i>' . $prodattr->label . '</i>:'. $prodattr_val->value . ' ';
|
||||
}
|
||||
}
|
||||
print '</div>';
|
||||
print '<br><br>';
|
||||
$listofvariantselected .= '</div>';
|
||||
//print dol_fiche_end();
|
||||
} else {
|
||||
$title = $langs->trans('EditProductCombination');
|
||||
}
|
||||
print load_fiche_titre($title);
|
||||
|
||||
if ($action == 'add') {
|
||||
$prodattr_all = $prodattr->fetchAll();
|
||||
|
|
@ -499,6 +498,10 @@ if (! empty($id) || ! empty($ref))
|
|||
<?php
|
||||
}
|
||||
|
||||
print '<br>';
|
||||
|
||||
print load_fiche_titre($title);
|
||||
|
||||
print '<form method="post" id="combinationform" action="'.$_SERVER["PHP_SELF"].'">'."\n";
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.dol_escape_htmltag($id).'">'."\n";
|
||||
|
|
@ -507,9 +510,9 @@ if (! empty($id) || ! empty($ref))
|
|||
print '<input type="hidden" name="valueid" value="' . $valueid .'">'."\n";
|
||||
}
|
||||
|
||||
print dol_fiche_head();
|
||||
print dol_fiche_head();
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
<table class="border" style="width: 100%">
|
||||
<?php if ($action == 'add') { ?>
|
||||
|
|
@ -524,6 +527,7 @@ if (! empty($id) || ! empty($ref))
|
|||
print '<option value="-1"> </option>';
|
||||
foreach ($prodattr_all as $attr)
|
||||
{
|
||||
//print '<option value="'.$attr->id.'"'.($attr->id == GETPOST('attribute', 'int') ? ' selected="selected"' : '').'>'.$attr->label.'</option>';
|
||||
print '<option value="'.$attr->id.'">'.$attr->label.'</option>';
|
||||
}
|
||||
print '</select>';
|
||||
|
|
@ -561,6 +565,10 @@ if (! empty($id) || ! empty($ref))
|
|||
<input type="submit" class="button" name="selectvariant" id="selectvariant" value="<?php echo dol_escape_htmltag($langs->trans("SelectCombination")); ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td></td><td>
|
||||
<?php echo $listofvariantselected; ?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php
|
||||
}
|
||||
|
|
@ -781,8 +789,8 @@ if (! empty($id) || ! empty($ref))
|
|||
</td>
|
||||
<td class="right"><?php echo ($currcomb->variation_price >= 0 ? '+' : '').price($currcomb->variation_price).($currcomb->variation_price_percentage ? ' %' : '') ?></td>
|
||||
<?php if ($object->isProduct()) print '<td class="right">'.($currcomb->variation_weight >= 0 ? '+' : '').price($currcomb->variation_weight).' '.measuring_units_string($prodstatic->weight_units, 'weight').'</td>'; ?>
|
||||
<td class="center;"><?php echo $prodstatic->getLibStatut(2, 0) ?></td>
|
||||
<td class="center;"><?php echo $prodstatic->getLibStatut(2, 1) ?></td>
|
||||
<td class="center"><?php echo $prodstatic->getLibStatut(2, 0) ?></td>
|
||||
<td class="center"><?php echo $prodstatic->getLibStatut(2, 1) ?></td>
|
||||
<td class="right">
|
||||
<a class="paddingleft paddingright" href="<?php echo dol_buildpath('/variants/combinations.php?id='.$id.'&action=edit&valueid='.$currcomb->id, 2) ?>"><?php echo img_edit() ?></a>
|
||||
<a class="paddingleft paddingright" href="<?php echo dol_buildpath('/variants/combinations.php?id='.$id.'&action=delete&valueid='.$currcomb->id, 2) ?>"><?php echo img_delete() ?></a>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user