Merge branch 'develop' into develop_pdf

This commit is contained in:
Laurent Destailleur 2019-09-06 23:30:12 +02:00 committed by GitHub
commit ca71f02d41
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
137 changed files with 1041 additions and 594 deletions

View File

@ -1 +1 @@
Help wanted...
"Help wanted..."

View File

@ -2063,9 +2063,10 @@ class Adherent extends CommonObject
* @param string $mode ''=Show firstname+lastname as label (using default order), 'firstname'=Show only firstname, 'login'=Show login, 'ref'=Show ref
* @param string $morecss Add more css on link
* @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking
* @param int $notooltip 1=Disable tooltip
* @return string Chaine avec URL
*/
public function getNomUrl($withpictoimg = 0, $maxlen = 0, $option = 'card', $mode = '', $morecss = '', $save_lastsearch_value = -1)
public function getNomUrl($withpictoimg = 0, $maxlen = 0, $option = 'card', $mode = '', $morecss = '', $save_lastsearch_value = -1, $notooltip = 0)
{
global $conf, $langs;

View File

@ -438,7 +438,6 @@ foreach ($dirmodels as $reldir)
if ($modulequalified)
{
$var = !$var;
print '<tr class="oddeven"><td width="100">';
print (empty($module->name)?$name:$module->name);
print "</td><td>\n";

View File

@ -88,7 +88,7 @@ $hookmanager->initHooks(array('admin'));
// Put here declaration of dictionaries properties
// Sort order to show dictionary (0 is space). All other dictionaries (added by modules) will be at end of this.
$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,33,34,0,6,0,29,0,7,24,28,17,35,36,0,10,23,12,13,0,14,0,22,20,18,21,0,15,30,0,37,0,25,0);
$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,32,33,34,0,6,0,29,0,7,24,28,17,35,36,0,10,23,12,13,0,14,0,22,20,18,21,0,15,30,0,37,0,25,0);
// Name of SQL tables of dictionaries
$tabname=array();
@ -123,9 +123,10 @@ $tabname[28]= MAIN_DB_PREFIX."c_holiday_types";
$tabname[29]= MAIN_DB_PREFIX."c_lead_status";
$tabname[30]= MAIN_DB_PREFIX."c_format_cards";
//$tabname[31]= MAIN_DB_PREFIX."accounting_system";
//$tabname[32]= MAIN_DB_PREFIX."c_accounting_category";
$tabname[32]= MAIN_DB_PREFIX."c_hrm_public_holiday";
$tabname[33]= MAIN_DB_PREFIX."c_hrm_department";
$tabname[34]= MAIN_DB_PREFIX."c_hrm_function";
$tabname[35]= MAIN_DB_PREFIX."c_exp_tax_cat";
$tabname[36]= MAIN_DB_PREFIX."c_exp_tax_range";
$tabname[37]= MAIN_DB_PREFIX."c_units";
@ -163,7 +164,7 @@ $tablib[28]= "DictionaryHolidayTypes";
$tablib[29]= "DictionaryOpportunityStatus";
$tablib[30]= "DictionaryFormatCards";
//$tablib[31]= "DictionaryAccountancysystem";
//$tablib[32]= "DictionaryAccountancyCategory";
$tablib[32]= "DictionaryPublicHolidays";
$tablib[33]= "DictionaryDepartment";
$tablib[34]= "DictionaryFunction";
$tablib[35]= "DictionaryExpenseTaxCat";
@ -203,7 +204,7 @@ $tabsql[28]= "SELECT h.rowid as rowid, h.code, h.label, h.affect, h.delay, h.new
$tabsql[29]= "SELECT rowid as rowid, code, label, percent, position, active FROM ".MAIN_DB_PREFIX."c_lead_status";
$tabsql[30]= "SELECT rowid, code, name, paper_size, orientation, metric, leftmargin, topmargin, nx, ny, spacex, spacey, width, height, font_size, custom_x, custom_y, active FROM ".MAIN_DB_PREFIX."c_format_cards";
//$tabsql[31]= "SELECT s.rowid as rowid, pcg_version, s.label, s.active FROM ".MAIN_DB_PREFIX."accounting_system as s";
//$tabsql[32]= "SELECT a.rowid as rowid, a.code as code, a.label, a.range_account, a.sens, a.category_type, a.formula, a.position as position, a.fk_country as country_id, c.code as country_code, c.label as country, a.active FROM ".MAIN_DB_PREFIX."c_accounting_category as a, ".MAIN_DB_PREFIX."c_country as c WHERE a.fk_country=c.rowid and c.active=1";
$tabsql[32]= "SELECT a.id as rowid, a.entity, a.code, a.fk_country as country_id, c.code as country_code, c.label as country, a.day, a.month, a.year, a.active FROM ".MAIN_DB_PREFIX."c_hrm_public_holiday as a LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON a.fk_country=c.rowid AND c.active=1";
$tabsql[33]= "SELECT rowid, pos, code, label, active FROM ".MAIN_DB_PREFIX."c_hrm_department";
$tabsql[34]= "SELECT rowid, pos, code, label, c_level, active FROM ".MAIN_DB_PREFIX."c_hrm_function";
$tabsql[35]= "SELECT c.rowid, c.label, c.active, c.entity FROM ".MAIN_DB_PREFIX."c_exp_tax_cat c";
@ -243,7 +244,7 @@ $tabsqlsort[28]="country ASC, code ASC";
$tabsqlsort[29]="position ASC";
$tabsqlsort[30]="code ASC";
//$tabsqlsort[31]="pcg_version ASC";
//$tabsqlsort[32]="position ASC";
$tabsqlsort[32]="year ASC, month ASC, day ASC";
$tabsqlsort[33]="code ASC";
$tabsqlsort[34]="code ASC";
$tabsqlsort[35]="c.label ASC";
@ -283,7 +284,7 @@ $tabfield[28]= "code,label,affect,delay,newbymonth,country_id,country";
$tabfield[29]= "code,label,percent,position";
$tabfield[30]= "code,name,paper_size,orientation,metric,leftmargin,topmargin,nx,ny,spacex,spacey,width,height,font_size,custom_x,custom_y";
//$tabfield[31]= "pcg_version,label";
//$tabfield[32]= "code,label,range_account,sens,category_type,formula,position,country_id,country";
$tabfield[32]= "code,year,month,day,country_id,country";
$tabfield[33]= "code,label";
$tabfield[34]= "code,label";
$tabfield[35]= "label";
@ -323,7 +324,7 @@ $tabfieldvalue[28]= "code,label,affect,delay,newbymonth,country";
$tabfieldvalue[29]= "code,label,percent,position";
$tabfieldvalue[30]= "code,name,paper_size,orientation,metric,leftmargin,topmargin,nx,ny,spacex,spacey,width,height,font_size,custom_x,custom_y";
//$tabfieldvalue[31]= "pcg_version,label";
//$tabfieldvalue[32]= "code,label,range_account,sens,category_type,formula,position,country";
$tabfieldvalue[32]= "code,day,month,year,country";
$tabfieldvalue[33]= "code,label";
$tabfieldvalue[34]= "code,label";
$tabfieldvalue[35]= "label";
@ -364,15 +365,16 @@ $tabfieldinsert[29]= "code,label,percent,position";
$tabfieldinsert[30]= "code,name,paper_size,orientation,metric,leftmargin,topmargin,nx,ny,spacex,spacey,width,height,font_size,custom_x,custom_y";
//$tabfieldinsert[31]= "pcg_version,label";
//$tabfieldinsert[32]= "code,label,range_account,sens,category_type,formula,position,fk_country";
$tabfieldinsert[32]= "code,day,month,year,fk_country";
$tabfieldinsert[33]= "code,label";
$tabfieldinsert[34]= "code,label";
$tabfieldinsert[35]= "label";
$tabfieldinsert[36]= "range_ik,fk_c_exp_tax_cat";
$tabfieldinsert[37]= "code,label,short_label,unit_type,scale";
// Rowid name if the field is not autoincrement type
// Example: "" if id field is "rowid" and has autoincrement on
// "nameoffield" if id field is not "rowid" or has not autoincrement on
// Rowid name of field depending if field is autoincrement on or off..
// Use "" if id field is "rowid" and has autoincrement on
// Use "nameoffield" if id field is not "rowid" or has not autoincrement on
$tabrowid=array();
$tabrowid[1] = "";
$tabrowid[2] = "";
@ -405,7 +407,7 @@ $tabrowid[28]= "";
$tabrowid[29]= "";
$tabrowid[30]= "";
//$tabrowid[31]= "";
//$tabrowid[32]= "";
$tabrowid[32]= "id";
$tabrowid[33]= "rowid";
$tabrowid[34]= "rowid";
$tabrowid[35]= "";
@ -445,7 +447,7 @@ $tabcond[28]= ! empty($conf->holiday->enabled);
$tabcond[29]= ! empty($conf->projet->enabled);
$tabcond[30]= ! empty($conf->label->enabled);
//$tabcond[31]= ! empty($conf->accounting->enabled);
//$tabcond[32]= ! empty($conf->accounting->enabled);
$tabcond[32]= (! empty($conf->holiday->enabled) || ! empty($conf->hrm->enabled));
$tabcond[33]= ! empty($conf->hrm->enabled);
$tabcond[34]= ! empty($conf->hrm->enabled);
$tabcond[35]= ! empty($conf->expensereport->enabled);
@ -485,12 +487,12 @@ $tabhelp[28] = array('affect'=>$langs->trans("FollowedByACounter"),'delay'=>$lan
$tabhelp[29] = array('code'=>$langs->trans("EnterAnyCode"), 'percent'=>$langs->trans("OpportunityPercent"), 'position'=>$langs->trans("PositionIntoComboList"));
$tabhelp[30] = array('code'=>$langs->trans("EnterAnyCode"), 'name'=>$langs->trans("LabelName"), 'paper_size'=>$langs->trans("LabelPaperSize"));
//$tabhelp[31] = array('pcg_version'=>$langs->trans("EnterAnyCode"));
//$tabhelp[32] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[32] = array('code'=>$langs->trans("EnterAnyCode"), 'daterule'=>"Use 'date'", 'country'=>$langs->trans("EnterACountryOnlyIfSpecificToOneCountry"), 'year'=>$langs->trans("ZeroMeansEveryYear"));
$tabhelp[33] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[34] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[35]= array();
$tabhelp[36]= array('range_ik'=>$langs->trans('PrevRangeToThisRange'));
$tabhelp[37]= array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[35] = array();
$tabhelp[36] = array('range_ik'=>$langs->trans('PrevRangeToThisRange'));
$tabhelp[37] = array('code'=>$langs->trans("EnterAnyCode"));
// List of check for fields (NOT USED YET)
$tabfieldcheck=array();
@ -525,12 +527,12 @@ $tabfieldcheck[28] = array();
$tabfieldcheck[29] = array();
$tabfieldcheck[30] = array();
//$tabfieldcheck[31] = array();
//$tabfieldcheck[32] = array();
$tabfieldcheck[32] = array();
$tabfieldcheck[33] = array();
$tabfieldcheck[34] = array();
$tabfieldcheck[35]= array();
$tabfieldcheck[36]= array();
$tabfieldcheck[37]= array();
$tabfieldcheck[35] = array();
$tabfieldcheck[36] = array();
$tabfieldcheck[37] = array();
// Complete all arrays with entries found into modules
complete_dictionary_with_modules($taborder, $tabname, $tablib, $tabsql, $tabsqlsort, $tabfield, $tabfieldvalue, $tabfieldinsert, $tabrowid, $tabcond, $tabhelp, $tabfieldcheck);
@ -621,9 +623,11 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
$ok=1;
foreach ($listfield as $f => $value)
{
if ($value == 'country_id' && in_array($tablib[$id], array('DictionaryVAT','DictionaryRegion','DictionaryCompanyType','DictionaryHolidayTypes','DictionaryRevenueStamp','DictionaryAccountancysystem','DictionaryAccountancyCategory'))) continue; // For some pages, country is not mandatory
if ($value == 'country' && in_array($tablib[$id], array('DictionaryCanton','DictionaryCompanyType','DictionaryRevenueStamp'))) continue; // For some pages, country is not mandatory
if ($value == 'localtax1' && empty($_POST['localtax1_type'])) continue;
// Discard check of mandatory fields for country for some tables
if ($value == 'country_id' && in_array($tablib[$id], array('DictionaryPublicHolidays','DictionaryVAT','DictionaryRegion','DictionaryCompanyType','DictionaryHolidayTypes','DictionaryRevenueStamp','DictionaryAccountancysystem','DictionaryAccountancyCategory'))) continue; // For some pages, country is not mandatory
if ($value == 'country' && in_array($tablib[$id], array('DictionaryPublicHolidays','DictionaryCanton','DictionaryCompanyType','DictionaryRevenueStamp'))) continue; // For some pages, country is not mandatory
// Discard check of mandatory fiedls for other fields
if ($value == 'localtax1' && empty($_POST['localtax1_type'])) continue;
if ($value == 'localtax2' && empty($_POST['localtax2_type'])) continue;
if ($value == 'color' && empty($_POST['color'])) continue;
if ($value == 'formula' && empty($_POST['formula'])) continue;
@ -992,8 +996,10 @@ if ($id)
if (! preg_match('/ WHERE /', $sql)) $sql.= " WHERE 1 = 1";
if ($search_country_id > 0) $sql.= " AND c.rowid = ".$search_country_id;
if ($search_code != '' && $id != 9) $sql.= natural_search("code", $search_code);
if ($search_code != '' && $id == 9) $sql.= natural_search("code_iso", $search_code);
elseif ($search_code != '' && $id == 28) $sql.= natural_search("h.code", $search_code);
elseif ($search_code != '' && $id == 32) $sql.= natural_search("a.code", $search_code);
elseif ($search_code != '' && $id != 9) $sql.= natural_search("code", $search_code);
if ($sortfield)
{
@ -1053,7 +1059,7 @@ if ($id)
continue;
}
// Define field friedly name from its technical name
// Define field friendly name from its technical name
$valuetoshow=ucfirst($fieldlist[$field]); // Par defaut
$valuetoshow=$langs->trans($valuetoshow); // try to translate
$class='';
@ -1156,7 +1162,8 @@ if ($id)
print '</tr>';
// Line to enter new values
print '<!-- line to add new entry --><tr class="oddeven nodrag nodrop nohover">';
print '<!-- line to add new entry -->';
print '<tr class="oddeven nodrag nodrop nohover">';
$obj = new stdClass();
// If data was already input, we define them in obj to populate input fields.
@ -1632,10 +1639,10 @@ if ($id)
if ($obj->code == 'RECEP') $canbemodified=1;
if ($tabname[$id] == MAIN_DB_PREFIX."c_actioncomm") $canbemodified=1;
// Url
// Build Url. The table is id=, the id of line is rowid=
$rowidcol=$tabrowid[$id];
// If rowidcol not defined
if (empty($rowidcol) || in_array($id, array(6,7,8,13,17,19,27))) $rowidcol='rowid';
if (empty($rowidcol) || in_array($id, array(6,7,8,13,17,19,27,32))) $rowidcol='rowid';
$url = $_SERVER["PHP_SELF"].'?'.($page?'page='.$page.'&':'').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.((! empty($obj->{$rowidcol}) || $obj->{$rowidcol} == '0')?$obj->{$rowidcol}:(! empty($obj->code)?urlencode($obj->code):'')).'&code='.(! empty($obj->code)?urlencode($obj->code):'');
if (! empty($param)) $url .= '&'.$param;
if (! is_null($withentity)) $url .= '&entity='.$withentity;
@ -1971,7 +1978,6 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
}
else
{
$fieldValue = isset($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:'';
if ($fieldlist[$field]=='sortorder')
@ -1981,11 +1987,11 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
$classtd=''; $class='';
if ($fieldlist[$field]=='code') $class='maxwidth100';
if (in_array($fieldlist[$field], array('pos', 'use_default', 'affect', 'delay', 'position', 'sortorder', 'sens', 'category_type'))) $class='maxwidth50';
if (in_array($fieldlist[$field], array('dayrule', 'day', 'month', 'year', 'pos', 'use_default', 'affect', 'delay', 'position', 'sortorder', 'sens', 'category_type'))) $class='maxwidth50';
if (in_array($fieldlist[$field], array('libelle', 'label', 'tracking'))) $class='quatrevingtpercent';
print '<td class="'.$classtd.'">';
$transfound=0;
if (in_array($fieldlist[$field], array('label','libelle')))
if (in_array($fieldlist[$field], array('label','libelle'))) // For label
{
$transkey='';
// Special case for labels

View File

@ -158,8 +158,10 @@ $head = mailmanspip_admin_prepare_head();
if (! empty($conf->global->ADHERENT_USE_MAILMAN))
{
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="update">';
dol_fiche_head($head, 'mailman', $langs->trans("Setup"), 0, 'user');
dol_fiche_head($head, 'mailman', $langs->trans("Setup"), -1, 'user');
//$link=img_picto($langs->trans("Active"),'tick').' ';
$link='<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=unset&value=0&name=ADHERENT_USE_MAILMAN">';
@ -227,14 +229,21 @@ else
if (! empty($conf->global->ADHERENT_USE_MAILMAN))
{
print '<form action="'.$_SERVER["PHP_SELF"].'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="testsubscribe">';
print $langs->trans("TestSubscribe").'<br>';
print $langs->trans("EMail").' <input type="email" class="flat" name="testsubscribeemail" value="'.GETPOST('testsubscribeemail').'"> <input class="button" type="submit" value="'.$langs->trans("Test").'"><br>';
print '</form>';
print '<form action="'.$_SERVER["PHP_SELF"].'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="testunsubscribe">';
print $langs->trans("TestUnSubscribe").'<br>';
print $langs->trans("EMail").' <input type="email" class="flat" name="testunsubscribeemail" value="'.GETPOST('testunsubscribeemail').'"> <input class="button" type="submit" value="'.$langs->trans("Test").'"><br>';
print '</form>';
}

View File

@ -123,8 +123,10 @@ $head = mailmanspip_admin_prepare_head();
if (! empty($conf->global->ADHERENT_USE_SPIP))
{
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="update">';
dol_fiche_head($head, 'spip', $langs->trans("Setup"), 0, 'user');
dol_fiche_head($head, 'spip', $langs->trans("Setup"), -1, 'user');
//$link=img_picto($langs->trans("Active"),'tick').' ';
$link='<a href="'.$_SERVER["PHP_SELF"].'?action=unset&value=0&name=ADHERENT_USE_SPIP">';

View File

@ -103,14 +103,14 @@ print '<br>';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print "<td>".$langs->trans("RuleForStockManagementDecrease")."</td>\n";
print '<td align="center">'.$langs->trans("Status").'</td>'."\n";
print '<td class="right">'.$langs->trans("Status").'</td>'."\n";
print '</tr>'."\n";
$found=0;
print '<tr class="oddeven">';
print '<td>'.$langs->trans("DeStockOnBill").'</td>';
print '<td align="center">';
print '<td class="right">';
if (! empty($conf->facture->enabled))
{
if ($conf->use_javascript_ajax) {
@ -130,7 +130,7 @@ $found++;
print '<tr class="oddeven">';
print '<td>'.$langs->trans("DeStockOnValidateOrder").'</td>';
print '<td align="center">';
print '<td class="right">';
if (! empty($conf->commande->enabled))
{
if ($conf->use_javascript_ajax) {
@ -152,7 +152,7 @@ $found++;
print '<tr class="oddeven">';
print '<td>'.$langs->trans("DeStockOnShipment").'</td>';
print '<td align="center">';
print '<td class="right">';
if (! empty($conf->expedition->enabled))
{
if ($conf->use_javascript_ajax) {
@ -172,7 +172,7 @@ $found++;
print '<tr class="oddeven">';
print '<td>'.$langs->trans("DeStockOnShipmentOnClosing").'</td>';
print '<td align="center">';
print '<td class="right">';
if (! empty($conf->expedition->enabled))
{
if ($conf->use_javascript_ajax) {
@ -205,14 +205,14 @@ print '<br>';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print "<td>".$langs->trans("RuleForStockManagementIncrease")."</td>\n";
print '<td align="center">'.$langs->trans("Status").'</td>'."\n";
print '<td class="right">'.$langs->trans("Status").'</td>'."\n";
print '</tr>'."\n";
$found=0;
print '<tr class="oddeven">';
print '<td>'.$langs->trans("ReStockOnBill").'</td>';
print '<td align="center">';
print '<td class="right">';
if (! empty($conf->fournisseur->enabled))
{
if ($conf->use_javascript_ajax) {
@ -233,7 +233,7 @@ $found++;
print '<tr class="oddeven">';
print '<td>'.$langs->trans("ReStockOnValidateOrder").'</td>';
print '<td align="center">';
print '<td class="right">';
if (! empty($conf->fournisseur->enabled))
{
if ($conf->use_javascript_ajax) {
@ -253,8 +253,8 @@ $found++;
if (!empty($conf->reception->enabled))
{
print '<tr class="oddeven">';
print '<td width="60%">'.$langs->trans("StockOnReception").'</td>';
print '<td align="center">';
print '<td>'.$langs->trans("StockOnReception").'</td>';
print '<td class="right">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('STOCK_CALCULATE_ON_RECEPTION');
@ -268,8 +268,8 @@ if ($conf->use_javascript_ajax) {
print '<tr class="oddeven">';
print '<td width="60%">'.$langs->trans("StockOnReceptionOnClosing").'</td>';
print '<td align="center">';
print '<td>'.$langs->trans("StockOnReceptionOnClosing").'</td>';
print '<td class="right">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('STOCK_CALCULATE_ON_RECEPTION_CLOSE');
@ -284,7 +284,7 @@ else
{
print '<tr class="oddeven">';
print '<td>'.$langs->trans("ReStockOnDispatchOrder").'</td>';
print '<td align="center">';
print '<td class="right">';
if (! empty($conf->fournisseur->enabled))
{
if ($conf->use_javascript_ajax) {
@ -313,16 +313,17 @@ if ($conf->use_javascript_ajax) {
print '</table>';
print '<br>';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print "<td>".$langs->trans("RuleForStockAvailability")."</td>\n";
print '<td align="center">'.$langs->trans("Status").'</td>'."\n";
print '<td class="right">'.$langs->trans("Status").'</td>'."\n";
print '</tr>'."\n";
print '<tr class="oddeven">';
print '<td>'.$langs->trans("WarehouseAllowNegativeTransfer").'</td>';
print '<td align="center">';
print '<td class="right">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('STOCK_ALLOW_NEGATIVE_TRANSFER');
} else {
@ -337,7 +338,7 @@ if($conf->invoice->enabled)
{
print '<tr class="oddeven">';
print '<td>'.$langs->trans("StockMustBeEnoughForInvoice").'</td>';
print '<td align="center">';
print '<td class="right">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('STOCK_MUST_BE_ENOUGH_FOR_INVOICE');
} else {
@ -352,7 +353,7 @@ if($conf->order->enabled)
{
print '<tr class="oddeven">';
print '<td>'.$langs->trans("StockMustBeEnoughForOrder").'</td>';
print '<td align="center">';
print '<td class="right">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('STOCK_MUST_BE_ENOUGH_FOR_ORDER');
} else {
@ -367,7 +368,7 @@ if($conf->expedition->enabled)
{
print '<tr class="oddeven">';
print '<td>'.$langs->trans("StockMustBeEnoughForShipment").'</td>';
print '<td align="center">';
print '<td class="right">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT');
} else {
@ -391,12 +392,12 @@ if ($virtualdiffersfromphysical)
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print "<td>".$langs->trans("RuleForStockReplenishment")." ".img_help('help', $langs->trans("VirtualDiffersFromPhysical"))."</td>\n";
print '<td align="center">'.$langs->trans("Status").'</td>'."\n";
print '<td class="right">'.$langs->trans("Status").'</td>'."\n";
print '</tr>'."\n";
print '<tr class="oddeven">';
print '<td>'.$langs->trans("UseVirtualStockByDefault").'</td>';
print '<td align="center">';
print '<td class="right">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('STOCK_USE_VIRTUAL_STOCK');
} else {
@ -414,12 +415,12 @@ print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print "<td>".$langs->trans("Other")."</td>\n";
print '<td class="center">'.$langs->trans("Status").'</td>'."\n";
print '<td class="right">'.$langs->trans("Status").'</td>'."\n";
print '</tr>'."\n";
print '<tr class="oddeven">';
print '<td>'.$langs->trans("UserWarehouseAutoCreate").'</td>';
print '<td class="center">';
print '<td class="right">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('STOCK_USERSTOCK_AUTOCREATE');
} else {
@ -433,7 +434,7 @@ print '<tr class="oddeven">';
print '<td>';
print $form->textwithpicto($langs->trans("StockSupportServices"), $langs->trans("StockSupportServicesDesc"));
print '</td>';
print '<td class="center">';
print '<td class="right">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('STOCK_SUPPORTS_SERVICES');
} else {
@ -445,7 +446,7 @@ print "</tr>\n";
print '<tr class="oddeven">';
print '<td>'.$langs->trans("AllowAddLimitStockByWarehouse").'</td>';
print '<td class="center">';
print '<td class="right">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE');
} else {
@ -455,19 +456,6 @@ if ($conf->use_javascript_ajax) {
print "</td>\n";
print "</tr>\n";
if (! empty($conf->fournisseur->enabled) && !empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER)) {
print '<tr class="oddeven">';
print '<td>'.$langs->trans("UseDispatchStatus").'</td>';
print '<td class="center">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('SUPPLIER_ORDER_USE_DISPATCH_STATUS');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("SUPPLIER_ORDER_USE_DISPATCH_STATUS", $arrval, $conf->global->SUPPLIER_ORDER_USE_DISPATCH_STATUS);
}
print "</td>\n</tr>\n";
}
print '</table>';
print '<br>';
@ -476,43 +464,45 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Inventory").'</td>'."\n";
print '<td align="center">'.$langs->trans("Status").'</td>'."\n";
print '</tr>'."\n";
print '<td class="right">'.$langs->trans("Status").'</td>'."\n";
print '</tr>'."\n";
// Example with a yes / no select
print '<tr class="oddeven">';
/*print '<tr class="oddeven">';
print '<td>'.$langs->trans("INVENTORY_DISABLE_VIRTUAL").'</td>';
print '<td align="center">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('INVENTORY_DISABLE_VIRTUAL');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("INVENTORY_DISABLE_VIRTUAL", $arrval, $conf->global->INVENTORY_DISABLE_VIRTUAL);
}
print '<td align="center">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('INVENTORY_DISABLE_VIRTUAL');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("INVENTORY_DISABLE_VIRTUAL", $arrval, $conf->global->INVENTORY_DISABLE_VIRTUAL);
}
print '</td></tr>';
*/
// Example with a yes / no select
print '<tr class="oddeven">';
/*print '<tr class="oddeven">';
print '<td>'.$langs->trans("INVENTORY_USE_MIN_PA_IF_NO_LAST_PA").'</td>';
print '<td align="center">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('INVENTORY_USE_MIN_PA_IF_NO_LAST_PA');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("INVENTORY_USE_MIN_PA_IF_NO_LAST_PA", $arrval, $conf->global->INVENTORY_USE_MIN_PA_IF_NO_LAST_PA);
}
print '</td></tr>';
print '<td align="center">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('INVENTORY_USE_MIN_PA_IF_NO_LAST_PA');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("INVENTORY_USE_MIN_PA_IF_NO_LAST_PA", $arrval, $conf->global->INVENTORY_USE_MIN_PA_IF_NO_LAST_PA);
}
print '</td></tr>';
*/
// Example with a yes / no select
// Example with a yes / no select
print '<tr class="oddeven">';
print '<td>'.$langs->trans("INVENTORY_USE_INVENTORY_DATE_FROM_DATEMVT").'</td>';
print '<td align="center">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('INVENTORY_USE_INVENTORY_DATE_FROM_DATEMVT');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("INVENTORY_USE_INVENTORY_DATE_FROM_DATEMVT", $arrval, $conf->global->INVENTORY_USE_INVENTORY_DATE_FROM_DATEMVT);
}
print '<td>'.$langs->trans("INVENTORY_USE_INVENTORY_DATE_FOR_DATE_OF_MVT").'</td>';
print '<td class="right">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('INVENTORY_USE_INVENTORY_DATE_FOR_DATE_OF_MVT');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("INVENTORY_USE_INVENTORY_DATE_FOR_DATE_OF_MVT", $arrval, $conf->global->INVENTORY_USE_INVENTORY_DATE_FOR_DATE_OF_MVT);
}
print '</td></tr>';
print '</table>';

View File

@ -35,7 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
// Load translation files required by the page
$langs->loadLangs(array("admin", "other", "orders"));
$langs->loadLangs(array("admin", "other", "orders", "stocks"));
if (!$user->admin)
accessforbidden();
@ -494,20 +494,16 @@ print '<td>'.$langs->trans("Parameter").'</td>';
print '<td align="center" width="60">'.$langs->trans("Value").'</td>';
print '<td width="80">&nbsp;</td>';
print "</tr>\n";
$var=false;
//if ($conf->global->MAIN_FEATURES_LEVEL > 0)
//{
print '<tr class="oddeven"><td>';
print $form->textwithpicto($langs->trans("UseDoubleApproval"), $langs->trans("Use3StepsApproval"), 1, 'help').'<br>';
print $langs->trans("IfSetToYesDontForgetPermission");
print '</td><td>';
print '<input type="text" size="6" name="SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED" value="'.$conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED.'">';
print '</td><td class="right">';
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print "</td></tr>\n";
print '<tr class="oddeven"><td>';
print $form->textwithpicto($langs->trans("UseDoubleApproval"), $langs->trans("Use3StepsApproval"), 1, 'help').'<br>';
print $langs->trans("IfSetToYesDontForgetPermission");
print '</td><td>';
print '<input type="text" size="6" name="SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED" value="'.$conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED.'">';
print '</td><td class="right">';
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print "</td></tr>\n";
//}
// Ask for payment bank during supplier order
/* Kept as hidden for the moment
@ -564,12 +560,32 @@ print '</td><td class="right">';
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print "</td></tr>\n";
// Option to add a quality/validation step, on products, after reception.
print '<tr class="oddeven">';
print '<td>'.$langs->trans("UseDispatchStatus").'</td>';
print '<td></td>';
print '<td class="center">';
if ($conf->reception->enabled)
{
print '<span class="opacitymedium">'.$langs->trans("FeatureNotAvailableWithReceptionModule").'</span>';
}
else
{
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('SUPPLIER_ORDER_USE_DISPATCH_STATUS');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("SUPPLIER_ORDER_USE_DISPATCH_STATUS", $arrval, $conf->global->SUPPLIER_ORDER_USE_DISPATCH_STATUS);
}
}
print "</td>\n";
print "</tr>\n";
print '</table><br>';
print '</form>';
/*
* Notifications
*/

View File

@ -44,15 +44,18 @@ $object->fetch($id);
* Actions
*/
/*
* View
*/
$form = new Form($db);
$title = $langs->trans('Asset') . " - " . $langs->trans('Info');
$helpurl = "";
llxHeader('', $title, $helpurl);
$form = new Form($db);
$object->info($id);
$head = asset_prepare_head($object);

View File

@ -101,7 +101,7 @@ class Boms extends DolibarrApi
$obj_ret = array();
$tmpobject = new BOM($db);
$socid = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : '';
$socid = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : '';
$restrictonsocid = 0; // Set to 1 if there is a field socid in table of object

View File

@ -147,7 +147,7 @@ if ($action == 'classin' && ($user->rights->agenda->allactions->create ||
(($object->authorid == $user->id || $object->userownerid == $user->id) && $user->rights->agenda->myactions->create)))
{
$object->fetch($id);
$object->setProject(GETPOST('projectid'));
$object->setProject(GETPOST('projectid', 'int'));
}
// Action clone object
@ -165,7 +165,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes')
reset($object->socpeopleassigned);
$object->contactid = key($object->socpeopleassigned);
}
$result = $object->createFromClone($user, GETPOST('fk_userowner'), GETPOST('socid'));
$result = $object->createFromClone($user, GETPOST('socid', 'int'));
if ($result > 0) {
header("Location: " . $_SERVER['PHP_SELF'] . '?id=' . $result);
exit();

View File

@ -103,7 +103,7 @@ class Proposals extends DolibarrApi
$obj_ret = array();
// case of external user, $thirdparty_ids param is ignored and replaced by user's socid
$socids = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : $thirdparty_ids;
$socids = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : $thirdparty_ids;
// If the internal user must only see his customers, force searching by him
$search_sale = 0;

View File

@ -107,7 +107,7 @@ class Orders extends DolibarrApi
$obj_ret = array();
// case of external user, $thirdparty_ids param is ignored and replaced by user's socid
$socids = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : $thirdparty_ids;
$socids = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : $thirdparty_ids;
// If the internal user must only see his customers, force searching by him
$search_sale = 0;

View File

@ -81,8 +81,8 @@ if (count($linkedObjectBlock) > 1)
<tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>">
<td><?php echo $langs->trans("Total"); ?></td>
<td></td>
<td align="center"></td>
<td align="center"></td>
<td class="center"></td>
<td class="center"></td>
<td class="right"><?php echo price($total); ?></td>
<td class="right"></td>
<td class="right"></td>

View File

@ -112,7 +112,7 @@ class Invoices extends DolibarrApi
$obj_ret = array();
// case of external user, $thirdparty_ids param is ignored and replaced by user's socid
$socids = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : $thirdparty_ids;
$socids = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : $thirdparty_ids;
// If the internal user must only see his customers, force searching by him
$search_sale = 0;

View File

@ -170,7 +170,7 @@ $amountcust=$langs->trans("AmountHT");
$vatcust=$langs->trans("VATReceived");
$namecust=$langs->trans("Name");
if ($mysoc->tva_assuj) {
$vatcust.=' ('.$langs->trans("ToPay").')';
$vatcust.=' ('.$langs->trans("StatusToPay").')';
}
// Suppliers invoices

View File

@ -239,6 +239,23 @@ if ($id > 0 || $ref)
dol_fiche_end();
$formconfirm = '';
// Confirmation to delete
if ($action == 'delete')
{
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('Delete'), $langs->trans('ConfirmDeleteObject'), 'confirm_delete', '', 0, 1);
}
// Call Hook formConfirm
/*$parameters = array();
$reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if (empty($reshook)) $formconfirm.=$hookmanager->resPrint;
elseif ($reshook > 0) $formconfirm=$hookmanager->resPrint;*/
// Print form confirm
print $formconfirm;
if (empty($object->date_trans) && $user->rights->prelevement->bons->send && $action=='settransmitted')
{
@ -298,7 +315,7 @@ if ($id > 0 || $ref)
print "<a class=\"butAction\" href=\"card.php?action=setcredited&id=".$object->id."\">".$langs->trans("ClassCredited")."</a>";
}
print "<a class=\"butActionDelete\" href=\"card.php?action=confirm_delete&id=".$object->id."\">".$langs->trans("Delete")."</a>";
print "<a class=\"butActionDelete\" href=\"card.php?action=delete&id=".$object->id."\">".$langs->trans("Delete")."</a>";
print "</div>";
}
@ -356,8 +373,6 @@ if ($id > 0 || $ref)
print_liste_field_titre('');
print "</tr>\n";
$var=false;
$total = 0;
while ($i < min($num, $conf->liste_limit))
@ -406,7 +421,10 @@ if ($id > 0 || $ref)
print '<td>'.$langs->trans("Total").'</td>';
print '<td>&nbsp;</td>';
print '<td class="right">';
if ($total != $object->amount) print img_warning("AmountOfFileDiffersFromSumOfInvoices");
if (empty($offset) && $num <= $limit) // If we have all record on same page, then the following test/warning can be done
{
if ($total != $object->amount) print img_warning("TotalAmountOfdirectDebitOrderDiffersFromSumOfLines");
}
print price($total);
print "</td>\n";
print '<td>&nbsp;</td>';

View File

@ -739,14 +739,13 @@ class BonPrelevement extends CommonObject
$sql = "SELECT count(f.rowid) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f";
$sql.= ", ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
$sql.= " WHERE f.fk_statut = 1";
$sql.= " WHERE f.fk_statut = ".Facture::STATUS_VALIDATED;
$sql.= " AND f.entity IN (".getEntity('invoice').")";
$sql.= " AND f.rowid = pfd.fk_facture";
$sql.= " AND f.paye = 0";
$sql.= " AND pfd.traite = 0";
$sql.= " AND f.total_ttc > 0";
dol_syslog(get_class($this)."::SommeAPrelever");
dol_syslog(get_class($this)."::NbFactureAPrelever");
$resql = $this->db->query($sql);
if ( $resql )
@ -759,7 +758,7 @@ class BonPrelevement extends CommonObject
}
else
{
$this->error=get_class($this)."::SommeAPrelever Erreur -1 sql=".$this->db->error();
$this->error=get_class($this)."::NbFactureAPrelever Erreur -1 sql=".$this->db->error();
return -1;
}
}
@ -798,8 +797,6 @@ class BonPrelevement extends CommonObject
$month = strftime("%m", $datetimeprev);
$year = strftime("%Y", $datetimeprev);
$puser = new User($this->db, $conf->global->PRELEVEMENT_USER);
$this->invoice_in_error = array();
$this->thirdparty_in_error = array();
@ -1631,8 +1628,8 @@ class BonPrelevement extends CommonObject
public static function buildRumNumber($row_code_client, $row_datec, $row_drum)
{
global $langs;
$pre = $langs->trans('RUM').'-';
return $pre.$row_code_client.'-'.$row_drum.'-'.date('U', $row_datec);
$pre = substr(dol_string_nospecial(dol_string_unaccent($langs->transnoentitiesnoconv('RUM'))), 0, 3); // Must always be on 3 char ('RUM' or 'UMR'. This is a protection against bad translation)
return $pre.'-'.$row_code_client.'-'.$row_drum.'-'.date('U', $row_datec);
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps

View File

@ -37,7 +37,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/prelevement.lib.php';
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
// Load translation files required by the page
$langs->loadLangs(array('banks', 'categories', 'widthdrawals', 'companies', 'bills'));
$langs->loadLangs(array('banks', 'categories', 'withdrawals', 'companies', 'bills'));
// Security check
if ($user->societe_id) $socid=$user->societe_id;
@ -105,6 +105,7 @@ if (empty($reshook))
/*
* View
*/
$form = new Form($db);
$thirdpartystatic=new Societe($db);
@ -207,9 +208,11 @@ $sql.= " ".MAIN_DB_PREFIX."societe as s,";
$sql.= " ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
$sql.= " WHERE s.rowid = f.fk_soc";
$sql.= " AND f.entity IN (".getEntity('invoice').")";
$sql.= " AND f.fk_statut = ".Facture::STATUS_VALIDATED;
$sql.= " AND f.total_ttc > 0";
$sql.= " AND pfd.traite = 0";
$sql.= " AND pfd.fk_facture = f.rowid";
if ($socid) $sql.= " AND f.fk_soc = ".$socid;
if ($socid > 0) $sql.= " AND f.fk_soc = ".$socid;
$nbtotalofrecords = '';
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
@ -293,7 +296,7 @@ if ($resql)
$i++;
}
}
else print '<tr '.$bc[0].'><td colspan="5" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
else print '<tr class="oddeven"><td colspan="5" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
print "</table>";
print "</form>";
print "<br>\n";

View File

@ -35,31 +35,43 @@ $langs->loadLangs(array('banks', 'categories', 'withdrawals', 'companies'));
// Security check
$socid = GETPOST('socid', 'int');
$status = GETPOST('status', 'int');
if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'prelevement', '', '', 'bons');
// Get supervariables
$page = GETPOST('page', 'int');
$sortorder = GETPOST('sortorder', 'alpha');
$sortfield = GETPOST('sortfield', 'alpha');
$contextpage= GETPOST('contextpage', 'aZ')?GETPOST('contextpage', 'aZ'):'myobjectlist'; // To manage different context of search
$backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
// Load variable for pagination
$limit = GETPOST('limit', 'int')?GETPOST('limit', 'int'):$conf->liste_limit;
$sortfield = GETPOST("sortfield", 'alpha');
$sortorder = GETPOST("sortorder", 'alpha');
$page = GETPOST("page", 'int');
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
if (empty($page) || $page == -1 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha') || (empty($toselect) && $massaction === '0')) { $page = 0; } // If $page is not defined, or '' or -1 or if we click on clear filters or if we select empty mass action
$offset = $limit * $page;
$pageprev = $page - 1;
$pagenext = $page + 1;
if (! $sortorder) $sortorder="DESC";
if (! $sortfield) $sortfield="f.ref";
$massactionbutton = '';
/*
* View
*/
llxHeader();
if (!$status)
{
$title = $langs->trans("RequestStandingOrderToTreat");
}
else
{
$title = $langs->trans("RequestStandingOrderTreated");
}
llxHeader('', $title);
$thirdpartystatic=new Societe($db);
$invoicestatic=new Facture($db);
@ -78,95 +90,126 @@ $sql.= " WHERE s.rowid = f.fk_soc";
$sql.= " AND f.entity IN (".getEntity('invoice').")";
if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
if ($socid) $sql.= " AND f.fk_soc = ".$socid;
if (!$statut) $sql.= " AND pfd.traite = 0";
if ($statut) $sql.= " AND pfd.traite = ".$statut;
if (!$status) $sql.= " AND pfd.traite = 0";
if ($status) $sql.= " AND pfd.traite = ".$status;
$sql.= " AND f.total_ttc > 0";
$sql.= " AND f.fk_statut = ".Facture::STATUS_VALIDATED;
$sql.= " AND pfd.fk_facture = f.rowid";
if (dol_strlen(trim(GETPOST('search_societe', 'alpha'))))
{
$sql.= natural_search("s.nom", 'search_societe');
}
$sql.= " ORDER BY $sortfield $sortorder ";
$sql.= $db->plimit($limit+1, $offset);
$sql.=$db->order($sortfield, $sortorder);
$resql=$db->query($sql);
if ($resql)
// Count total nb of records
$nbtotalofrecords = '';
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
{
$num = $db->num_rows($resql);
$i = 0;
if (!$statut)
$resql = $db->query($sql);
$nbtotalofrecords = $db->num_rows($resql);
if (($page * $limit) > $nbtotalofrecords) // if total of record found is smaller than page * limit, goto and load page 0
{
print_barre_liste($langs->trans("RequestStandingOrderToTreat"), $page, "demandes.php", $urladd, $sortfield, $sortorder, '', $num);
$page = 0;
$offset = 0;
}
else
{
print_barre_liste($langs->trans("RequestStandingOrderTreated"), $page, "demandes.php", $urladd, $sortfield, $sortorder, '', $num);
}
print '<form action="'.$_SERVER["PHP_SELF"].'" method="GET">';
print '<table class="liste" width="100%">';
print '<tr class="liste_titre">';
print_liste_field_titre("Bill", $_SERVER["PHP_SELF"]);
print_liste_field_titre("Company", $_SERVER["PHP_SELF"]);
print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "", "", $param, 'class="right"');
print_liste_field_titre("DateRequest", $_SERVER["PHP_SELF"], "", "", $param, 'class="center"');
print_liste_field_titre('');
print '</tr>';
print '<tr class="liste_titre">';
print '<td class="liste_titre"><input type="text" class="flat" name="search_facture" size="12" value="'.dol_escape_htmltag(GETPOST('search_facture', 'alpha')).'"></td>';
print '<td class="liste_titre"><input type="text" class="flat" name="search_societe" size="18" value="'.dol_escape_htmltag(GETPOST('search_societe', 'alpha')).'"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
// Action column
print '<td class="liste_titre" class="middle">';
$searchpicto=$form->showFilterAndCheckAddButtons($massactionbutton?1:0, 'checkforselect', 1);
print $searchpicto;
print '</td>';
print '</tr>';
$users = array();
while ($i < min($num, $limit))
{
$obj = $db->fetch_object($resql);
print '<tr class="oddeven">';
// Ref facture
print '<td>';
$invoicestatic->id=$obj->rowid;
$invoicestatic->ref=$obj->ref;
print $invoicestatic->getNomUrl(1, 'withdraw');
print '</td>';
print '<td>';
$thirdpartystatic->id=$obj->socid;
$thirdpartystatic->name=$obj->name;
print $thirdpartystatic->getNomUrl(1, 'customer');
print '</td>';
print '<td class="right">'.price($obj->total_ttc).'</td>';
print '<td class="center">'.dol_print_date($db->jdate($obj->date_demande), 'day').'</td>';
print '<td class="right"></td>';
print '</tr>';
$i++;
}
print "</table><br>";
print '</form>';
}
// if total of record found is smaller than limit, no need to do paging and to restart another select with limits set.
if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords)
{
$num = $nbtotalofrecords;
}
else
{
dol_print_error($db);
$sql.= $db->plimit($limit+1, $offset);
$resql=$db->query($sql);
if (! $resql)
{
dol_print_error($db);
exit;
}
$num = $db->num_rows($resql);
}
$newcardbutton = '<a href="'.DOL_URL_ROOT.'/compta/prelevement/index.php">'.$langs->trans("Back").'</a>';
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_generic', 0, $newcardbutton, '', $limit);
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
print '<input type="hidden" name="action" value="list">';
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
print '<input type="hidden" name="page" value="'.$page.'">';
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
print '<table class="liste" width="100%">';
print '<tr class="liste_titre">';
print_liste_field_titre("Bill", $_SERVER["PHP_SELF"]);
print_liste_field_titre("Company", $_SERVER["PHP_SELF"]);
print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "", "", $param, 'class="right"');
print_liste_field_titre("DateRequest", $_SERVER["PHP_SELF"], "", "", $param, 'class="center"');
print_liste_field_titre('');
print '</tr>';
print '<tr class="liste_titre">';
print '<td class="liste_titre"><input type="text" class="flat" name="search_facture" size="12" value="'.dol_escape_htmltag(GETPOST('search_facture', 'alpha')).'"></td>';
print '<td class="liste_titre"><input type="text" class="flat" name="search_societe" size="18" value="'.dol_escape_htmltag(GETPOST('search_societe', 'alpha')).'"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
// Action column
print '<td class="liste_titre" class="middle">';
$searchpicto=$form->showFilterAndCheckAddButtons($massactionbutton?1:0, 'checkforselect', 1);
print $searchpicto;
print '</td>';
print '</tr>';
$users = array();
$i = 0;
while ($i < min($num, $limit))
{
$obj = $db->fetch_object($resql);
if (empty($obj)) break; // Should not happen
print '<tr class="oddeven">';
// Ref facture
print '<td>';
$invoicestatic->id=$obj->rowid;
$invoicestatic->ref=$obj->ref;
print $invoicestatic->getNomUrl(1, 'withdraw');
print '</td>';
print '<td>';
$thirdpartystatic->id=$obj->socid;
$thirdpartystatic->name=$obj->name;
print $thirdpartystatic->getNomUrl(1, 'customer');
print '</td>';
print '<td class="right">'.price($obj->total_ttc).'</td>';
print '<td class="center">'.dol_print_date($db->jdate($obj->date_demande), 'day').'</td>';
print '<td class="right"></td>';
print '</tr>';
$i++;
}
print "</table><br>";
print '</form>';
// End of page
llxFooter();
$db->close();

View File

@ -71,6 +71,7 @@ $thirdpartystatic=new Societe($db);
$invoicestatic=new Facture($db);
$bprev = new BonPrelevement($db);
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Statistics").'</th></tr>';
@ -100,6 +101,8 @@ if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX
$sql.= " , ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
$sql.= " WHERE s.rowid = f.fk_soc";
$sql.= " AND f.entity IN (".getEntity('invoice').")";
$sql.= " AND f.total_ttc > 0";
$sql.= " AND f.fk_statut = ".Facture::STATUS_VALIDATED;
$sql.= " AND pfd.traite = 0 AND pfd.fk_facture = f.rowid";
if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
if ($socid) $sql.= " AND f.fk_soc = ".$socid;

View File

@ -184,7 +184,7 @@ class PaymentSocialContribution extends CommonObject
$remaintopay=price2num($contrib->amount - $paiement - $creditnotes - $deposits, 'MT');
if ($remaintopay == 0)
{
$result=$contrib->set_paid($user, '', '');
$result=$contrib->set_paid($user);
}
else dol_syslog("Remain to pay for conrib ".$contribid." not null. We do nothing.");
}

View File

@ -185,7 +185,7 @@ $productcust=$langs->trans("Description");
$namerate=$langs->trans("VATRate");
$amountcust=$langs->trans("AmountHT");
if ($mysoc->tva_assuj) {
$vatcust.=' ('.$langs->trans("ToPay").')';
$vatcust.=' ('.$langs->trans("StatusToPay").')';
}
$elementsup=$langs->trans("SuppliersInvoices");
$productsup=$langs->trans("Description");

View File

@ -173,7 +173,7 @@ $amountcust=$langs->trans("AmountHT");
$vatcust=$langs->trans("VATReceived");
$namecust=$langs->trans("Name");
if ($mysoc->tva_assuj) {
$vatcust.=' ('.$langs->trans("ToPay").')';
$vatcust.=' ('.$langs->trans("VATToPay").')';
}
// Suppliers invoices

View File

@ -82,26 +82,11 @@ class Contact extends CommonObject
public $civility_id; // In fact we store civility_code
public $civility_code;
public $civility;
public $civility;
public $address;
public $zip;
public $town;
/**
* @deprecated
* @see $state_id
*/
public $fk_departement;
/**
* @deprecated
* @see $state_code
*/
public $departement_code;
/**
* @deprecated
* @see $state
*/
public $departement;
public $state_id; // Id of department
public $state_code; // Code of department
public $state; // Label of department
@ -1023,7 +1008,7 @@ class Contact extends CommonObject
// Removed extrafields
if ((! $error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) {
// For avoid conflicts if trigger used
$result=$this->deleteExtraFields($this);
$result=$this->deleteExtraFields();
if ($result < 0) $error++;
}

View File

@ -108,7 +108,7 @@ class Contracts extends DolibarrApi
$obj_ret = array();
// case of external user, $thirdparty_ids param is ignored and replaced by user's socid
$socids = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : $thirdparty_ids;
$socids = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : $thirdparty_ids;
// If the internal user must only see his customers, force searching by him
$search_sale = 0;

View File

@ -705,7 +705,7 @@ while ($i < min($num, $limit))
print '<td class="right">';
if ($obj->cstatut == 0) // If contract is draft, we say line is also draft
{
print $contractstatic->LibStatut(0, 5, ($obj->date_fin_validite && $db->jdate($obj->date_fin_validite) < $now));
print $contractstatic->LibStatut(0, 5);
}
else
{

View File

@ -156,7 +156,7 @@ class box_factures extends ModeleBoxes
);
$this->info_box_contents[$line][] = array(
'td' => '',
'td' => 'class="tdoverflowmax200"',
'text' => $societestatic->getNomUrl(1, '', 40),
'asis' => 1,
);

View File

@ -428,7 +428,7 @@ class CMailFile
foreach ($this->images_encoded as $img)
{
//$img['fullpath'],$img['image_encoded'],$img['name'],$img['content_type'],$img['cid']
$attachment = Swift_Image::fromPath($img['fullpath'], $img['content_type']);
$attachment = Swift_Image::fromPath($img['fullpath']);
// embed image
$imgcid = $this->message->embed($attachment);
// replace cid by the one created by swiftmail in html message

View File

@ -6532,9 +6532,12 @@ abstract class CommonObject
}
else
{
$csstyle='';
$class=(!empty($extrafields->attributes[$this->table_element]['hidden'][$key]) ? 'hideobject ' : '');
$csstyle='';
if (is_array($params) && count($params)>0) {
if (array_key_exists('class', $params)) {
$class.=$params['class'].' ';
}
if (array_key_exists('style', $params)) {
$csstyle=$params['style'];
}
@ -6571,16 +6574,19 @@ abstract class CommonObject
$labeltoshow = $langs->trans($label);
$out .= '<td class="titlefield';
if (GETPOST('action', 'none') == 'create') $out.='create';
$out .= '<td class="';
//$out .= "titlefield";
//if (GETPOST('action', 'none') == 'create') $out.='create';
if ($mode != 'view' && ! empty($extrafields->attributes[$this->table_element]['required'][$key])) $out .= ' fieldrequired';
$out .= '">';
if (! empty($extrafields->attributes[$object->table_element]['help'][$key])) $out .= $form->textwithpicto($labeltoshow, $extrafields->attributes[$object->table_element]['help'][$key]);
if (! empty($extrafields->attributes[$this->table_element]['help'][$key])) $out .= $form->textwithpicto($labeltoshow, $extrafields->attributes[$this->table_element]['help'][$key]);
else $out .= $labeltoshow;
$out .= '</td>';
$html_id = !empty($this->id) ? $this->element.'_extras_'.$key.'_'.$this->id : '';
$out .='<td id="'.$html_id.'" class="'.$this->element.'_extras_'.$key.'" '.($colspan?' colspan="'.$colspan.'"':'').'>';
//$out .='<td id="'.$html_id.'" class="'.$this->element.'_extras_'.$key.'">';
switch($mode) {
case "view":
@ -6593,6 +6599,11 @@ abstract class CommonObject
$out .= '</td>';
/*for($ii = 0; $ii < ($colspan - 1); $ii++)
{
$out .='<td class="'.$this->element.'_extras_'.$key.'"></td>';
}*/
if (! empty($conf->global->MAIN_EXTRAFIELDS_USE_TWO_COLUMS) && (($e % 2) == 1)) $out .= '</tr>';
else $out .= '</tr>';
$e++;

View File

@ -274,9 +274,10 @@ class ExtraFields
* @param string $perms Permission
* @param string $list Into list view by default
* @param string $computed Computed value
* @param string $help Help on tooltip
* @return int <=0 if KO, >0 if OK
*/
private function create($attrname, $type = 'varchar', $length = 255, $elementtype = 'member', $unique = 0, $required = 0, $default_value = '', $param = '', $perms = '', $list = '0', $computed = '')
private function create($attrname, $type = 'varchar', $length = 255, $elementtype = 'member', $unique = 0, $required = 0, $default_value = '', $param = '', $perms = '', $list = '0', $computed = '', $help = '')
{
if ($elementtype == 'thirdparty') $elementtype='societe';
if ($elementtype == 'contact') $elementtype='socpeople';

View File

@ -63,28 +63,28 @@ class Fiscalyear extends CommonObject
* @var string fiscal year label
*/
public $label;
/**
* Date start (date_start)
*
* @var integer
*/
public $date_start;
/**
* Date end (date_end)
*
* @var integer
*/
public $date_end;
/**
* Date creation record (datec)
*
* @var integer
*/
public $datec;
public $statut; // 0=open, 1=closed
/**

View File

@ -5216,7 +5216,7 @@ class Form
* @param datetime $adddateof Add a link "Date of invoice" using the following date.
* @return string|void Nothing or string if nooutput is 1
* @deprecated
* @see form_date(), select_month(), select_year(), select_dayofweek()
* @see selectDate(), form_date(), select_month(), select_year(), select_dayofweek()
*/
public function select_date($set_time = '', $prefix = 're', $h = 0, $m = 0, $empty = 0, $form_name = "", $d = 1, $addnowlink = 0, $nooutput = 0, $disabled = 0, $fullday = '', $addplusone = '', $adddateof = '')
{

View File

@ -3058,7 +3058,7 @@ class lessc_parser {
$content[] = $m[1];
if ($m[2] == "@{") {
$this->count -= strlen($m[2]);
if ($this->interpolation($inter, false)) {
if ($this->interpolation($inter)) {
$content[] = $inter;
} else {
$this->count += strlen($m[2]);
@ -3310,7 +3310,7 @@ class lessc_parser {
continue;
}
if ($this->interpolation($inter, false)) {
if ($this->interpolation($inter)) {
$attrParts[] = $inter;
$hasInterpolation = true;
continue;

View File

@ -355,22 +355,27 @@ class Link extends CommonObject
/**
* Delete a link from database
*
* @return int <0 if KO, 0 if nothing done, >0 if OK
* @param User $user Object suer
* @return int <0 if KO, 0 if nothing done, >0 if OK
*/
public function delete()
public function delete($user)
{
global $user, $langs, $conf;
global $langs, $conf;
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
$error = 0;
$this->db->begin();
// Call trigger
$result=$this->call_trigger('LINK_DELETE', $user);
if ($result < 0) return -1;
if ($result < 0)
{
$this->db->rollback();
return -1;
}
// End call triggers
$this->db->begin();
// Remove link
$sql = "DELETE FROM " . MAIN_DB_PREFIX . "links";
$sql.= " WHERE rowid = " . $this->id;

View File

@ -1094,6 +1094,8 @@ function complete_dictionary_with_modules(&$taborder, &$tabname, &$tablib, &$tab
{
global $db, $modules, $conf, $langs;
dol_syslog("complete_dictionary_with_modules Search external modules to complete the list of dictionnary tables", LOG_DEBUG, 1);
// Search modules
$modulesdir = dolGetModulesDirs();
$i = 0; // is a sequencer of modules found
@ -1191,6 +1193,8 @@ function complete_dictionary_with_modules(&$taborder, &$tabname, &$tablib, &$tab
}
}
dol_syslog("", LOG_DEBUG, -1);
return 1;
}
@ -1259,7 +1263,7 @@ function activateModulesRequiredByCountry($country_code)
}
/**
* Add external modules to list of contact element
* Search external modules to complete the list of contact element
*
* @param array $elementList elementList
* @return int 1
@ -1278,6 +1282,8 @@ function complete_elementList_with_modules(&$elementList)
$i = 0; // is a sequencer of modules found
$j = 0; // j is module number. Automatically affected if module number not defined.
dol_syslog("complete_elementList_with_modules Search external modules to complete the list of contact element", LOG_DEBUG, 1);
$modulesdir = dolGetModulesDirs();
foreach ($modulesdir as $dir)
@ -1355,6 +1361,8 @@ function complete_elementList_with_modules(&$elementList)
}
}
dol_syslog("", LOG_DEBUG, -1);
return 1;
}

View File

@ -549,15 +549,13 @@ function calendars_prepare_head($param)
$h++;
$object=new stdClass();
// Show more tabs from modules
// Entries must be declared in modules descriptor with line
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
// $this->tabs = array('entity:-tabname); to remove a tab
complete_head_from_modules($conf, $langs, $object, $head, $h, 'agenda');
complete_head_from_modules($conf, $langs, null, $head, $h, 'agenda');
complete_head_from_modules($conf, $langs, $object, $head, $h, 'agenda', 'remove');
complete_head_from_modules($conf, $langs, null, $head, $h, 'agenda', 'remove');
return $head;
}

View File

@ -48,7 +48,7 @@ function asset_admin_prepare_head()
//$this->tabs = array(
// 'entity:-tabname:Title:@assets:/asset/mypage.php?id=__ID__'
//); // to remove a tab
complete_head_from_modules($conf, $langs, $object, $head, $h, 'assets_admin');
complete_head_from_modules($conf, $langs, null, $head, $h, 'assets_admin');
$head[$h][0] = DOL_URL_ROOT . '/asset/admin/assets_extrafields.php';
$head[$h][1] = $langs->trans("ExtraFields");
@ -60,7 +60,7 @@ function asset_admin_prepare_head()
$head[$h][2] = 'attributes_type';
$h++;
complete_head_from_modules($conf, $langs, $object, $head, $h, 'assets_admin', 'remove');
complete_head_from_modules($conf, $langs, null, $head, $h, 'assets_admin', 'remove');
return $head;
}
@ -68,11 +68,12 @@ function asset_admin_prepare_head()
/**
* Prepare admin pages header
*
* @param Contrat $object Object related to tabs
* @return array head array with tabs
*/
function asset_prepare_head()
function asset_prepare_head(Asset $object)
{
global $langs, $conf;
global $db, $langs, $conf;
$langs->load("assets");
@ -96,7 +97,7 @@ function asset_prepare_head()
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php';
$upload_dir = $conf->assets->dir_output . '/' . get_exdir($filename, 2, 0, 1, $object, 'assets'). '/'. dol_sanitizeFileName($object->ref);
$upload_dir = $conf->assets->dir_output . '/' . dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$'));
$nbLinks=Link::count($db, $object->element, $object->id);
$head[$h][0] = DOL_URL_ROOT.'/asset/document.php?id='.$object->id;

View File

@ -163,7 +163,6 @@ function bank_admin_prepare_head($object)
*/
function various_payment_prepare_head($object)
{
global $db, $langs, $conf;
$h = 0;

View File

@ -101,7 +101,7 @@ function contract_prepare_head(Contrat $object)
*/
function contract_admin_prepare_head()
{
global $langs, $conf, $user;
global $langs, $conf;
$h = 0;
$head = array();
@ -127,9 +127,7 @@ function contract_admin_prepare_head()
$head[$h][2] = 'attributeslines';
$h++;
complete_head_from_modules($conf, $langs, null, $head, $h, 'contract_admin', 'remove');
return $head;
return $head;
}

View File

@ -80,7 +80,7 @@ function donation_prepare_head($object)
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php';
$upload_dir = $conf->don->dir_output . '/' . get_exdir($filename, 2, 0, 1, $object, 'donation'). '/'. dol_sanitizeFileName($object->ref);
$upload_dir = $conf->don->dir_output . '/' . dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$'));
$nbLinks=Link::count($db, $object->element, $object->id);
$head[$h][0] = DOL_URL_ROOT.'/don/document.php?id='.$object->id;

View File

@ -1023,22 +1023,16 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disable
{
case UPLOAD_ERR_INI_SIZE: // 1
return 'ErrorFileSizeTooLarge';
break;
case UPLOAD_ERR_FORM_SIZE: // 2
return 'ErrorFileSizeTooLarge';
break;
case UPLOAD_ERR_PARTIAL: // 3
return 'ErrorPartialFile';
break;
case UPLOAD_ERR_NO_TMP_DIR: //
return 'ErrorNoTmpDir';
break;
case UPLOAD_ERR_CANT_WRITE:
return 'ErrorFailedToWriteInDir';
break;
case UPLOAD_ERR_EXTENSION:
return 'ErrorUploadBlockedByAddon';
break;
default:
break;
}
@ -2089,7 +2083,7 @@ function dol_compress_dir($inputdir, $outputfile, $mode = "zip", $excludefiles =
{
$foundhandler=0;
dol_syslog("Try to zip dir ".$inputdir." into ".$outputdir." mode=".$mode);
dol_syslog("Try to zip dir ".$inputdir." into ".$outputfile." mode=".$mode);
if (! dol_is_dir(dirname($outputfile)) || ! is_writable(dirname($outputfile)))
{

View File

@ -40,7 +40,7 @@ function multicurrencyAdminPrepareHead()
$head[$h][2] = 'settings';
$h++;
complete_head_from_modules($conf, $langs, $object, $head, $h, 'multicurrency');
complete_head_from_modules($conf, $langs, null, $head, $h, 'multicurrency');
return $head;
}

View File

@ -59,7 +59,7 @@ function ticketAdminPrepareHead()
//$this->tabs = array(
// 'entity:-tabname:Title:@ticket:/ticket/mypage.php?id=__ID__'
//); // to remove a tab
complete_head_from_modules($conf, $langs, $object, $head, $h, 'ticketadmin');
complete_head_from_modules($conf, $langs, null, $head, $h, 'ticketadmin');
return $head;
}

View File

@ -51,12 +51,15 @@ class MenuManager
/**
* Load this->tabMenu
*
* @return void
* Load this->tabMenu
*
* @param string $forcemainmenu To force mainmenu to load
* @param string $forceleftmenu To force leftmenu to load
* @return void
*/
public function loadMenu()
public function loadMenu($forcemainmenu = '', $forceleftmenu = '')
{
// Do nothing
}

View File

@ -761,7 +761,7 @@ class ImportCsv extends ModeleImports
$lastinsertid = $res->rowid;
$last_insert_id_array[$tablename] = $lastinsertid;
} elseif($resql->num_rows > 1) {
$this->errors[$error]['lib']=$langs->trans('MultipleRecordFoundWithTheseFilters', implode($filters, ', '));
$this->errors[$error]['lib']=$langs->trans('MultipleRecordFoundWithTheseFilters', implode(', ', $filters));
$this->errors[$error]['type']='SQL';
$error++;
} else {

View File

@ -782,7 +782,7 @@ class ImportXlsx extends ModeleImports
$lastinsertid = $res->rowid;
$last_insert_id_array[$tablename] = $lastinsertid;
} elseif($resql->num_rows > 1) {
$this->errors[$error]['lib']=$langs->trans('MultipleRecordFoundWithTheseFilters', implode($filters, ', '));
$this->errors[$error]['lib']=$langs->trans('MultipleRecordFoundWithTheseFilters', implode(', ', $filters));
$this->errors[$error]['type']='SQL';
$error++;
} else {

View File

@ -187,8 +187,7 @@ class modDataPolicy extends DolibarrModules {
// Cronjobs (List of cron jobs entries to add when module is enabled)
// unit_frequency must be 60 for minute, 3600 for hour, 86400 for day, 604800 for week
$this->cronjobs = array(
0 => array('label' => 'DATAPOLICY Cron', 'jobtype' => 'method', 'class' => '/datapolicy/class/datapolicyCron.class.php', 'objectname' => 'DataPolicyCron', 'method' => 'exec', 'parameters' => '', 'comment' => 'Clean data', 'frequency' => 1, 'unitfrequency' => 86400, 'status' => 1, 'test' => '$conf->datapolicy->enabled'),
//1 => array('label' => 'DATAPOLICY Mailing', 'jobtype' => 'method', 'class' => '/datapolicy/class/datapolicyCron.class.php', 'objectname' => 'RgpdCron', 'method' => 'sendMailing', 'parameters' => '', 'comment' => 'Comment', 'frequency' => 1, 'unitfrequency' => 86400, 'status' => 0, 'test' => true)
0 => array('label' => 'DATAPOLICYJob', 'jobtype' => 'method', 'class' => 'datapolicy/class/datapolicycron.class.php', 'objectname' => 'DataPolicyCron', 'method' => 'cleanDataForDataPolicy', 'parameters' => '', 'comment' => 'Clean data', 'frequency' => 1, 'unitfrequency' => 86400, 'status' => 1, 'test' => '$conf->datapolicy->enabled'),
);
// Example: $this->cronjobs=array(0=>array('label'=>'My label', 'jobtype'=>'method', 'class'=>'/dir/class/file.class.php', 'objectname'=>'MyClass', 'method'=>'myMethod', 'parameters'=>'param1, param2', 'comment'=>'Comment', 'frequency'=>2, 'unitfrequency'=>3600, 'status'=>0, 'test'=>true),
// 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'param1, param2', 'comment'=>'Comment', 'frequency'=>1, 'unitfrequency'=>3600*24, 'status'=>0, 'test'=>true)

View File

@ -16,7 +16,7 @@
*/
/**
* \defgroup debugbar Debug bar
* \defgroup debugbar Module Debug bar
* \brief debugbar module descriptor.
*
* \file htdocs/core/modules/modDebugBar.class.php

View File

@ -58,7 +58,7 @@ class modReception extends DolibarrModules
// Data directories to create when module is enabled
$this->dirs = array("/reception/receipt",
"/reception/receipt/temp",
"/doctemplates/reception"
"/doctemplates/receptions"
);
// Config pages

View File

@ -121,15 +121,7 @@ class pdf_squille extends ModelePdfReception
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1';
$outputlangs->load("main");
$outputlangs->load("dict");
$outputlangs->load("companies");
$outputlangs->load("bills");
$outputlangs->load("products");
$outputlangs->load("propal");
$outputlangs->load("deliveries");
$outputlangs->load("receptions");
$outputlangs->load("productbatch");
$outputlangs->loadLangs(array("main","dict","companies","bills","products","propal","deliveries","receptions","productbatch","sendings"));
$nblines = count($object->lines);

View File

@ -375,7 +375,7 @@ if ($nolinesbefore) {
{
$coldisplay++;
?>
<td class="nobottom linecolresupplier"><input id="fourn_ref" name="fourn_ref" class="flat maxwidth75" value="<?php echo (isset($_POST["fourn_ref"])?GETPOST("fourn_ref", 'alpha', 2):''); ?>"></td>
<td class="nobottom linecolresupplier"><input id="fourn_ref" name="fourn_ref" class="flat minwidth50 maxwidth150" value="<?php echo (isset($_POST["fourn_ref"])?GETPOST("fourn_ref", 'alpha', 2):''); ?>"></td>
<?php } ?>
<td class="nobottom linecolvat right"><?php

View File

@ -140,7 +140,7 @@ $coldisplay=0;
{
$coldisplay++;
?>
<td class="right"><input id="fourn_ref" name="fourn_ref" class="flat minwidth75" value="<?php echo ($line->ref_supplier ? $line->ref_supplier : $line->ref_fourn); ?>"></td>
<td class="right"><input id="fourn_ref" name="fourn_ref" class="flat minwidth50 maxwidth150" value="<?php echo ($line->ref_supplier ? $line->ref_supplier : $line->ref_fourn); ?>"></td>
<?php
}
@ -261,7 +261,7 @@ $coldisplay=0;
//Line extrafield
if (!empty($extrafieldsline))
{
print $line->showOptionals($extrafieldsline, 'edit', array('style'=>$bc[$var],'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD)?0:1);
print $line->showOptionals($extrafieldsline, 'edit', array('class'=>'tredited', 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD)?0:1);
}
?>

View File

@ -894,14 +894,15 @@ class Cronjob extends CommonObject
/**
* Load object information
*
* @return int
* @param int $id ID
* @return int <0 if KO, >0 if OK
*/
public function info()
public function info($id)
{
$sql = "SELECT";
$sql.= " f.rowid, f.datec, f.tms, f.fk_user_mod, f.fk_user_author";
$sql.= " FROM ".MAIN_DB_PREFIX."cronjob as f";
$sql.= " WHERE f.rowid = ".$this->id;
$sql.= " WHERE f.rowid = ".$id;
dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
$resql=$this->db->query($sql);

View File

@ -30,6 +30,16 @@ include_once DOL_DOCUMENT_ROOT . '/adherents/class/adherent.class.php';
*/
class DataPolicy
{
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
{
$this->db = $db;
}
/**
* getAllContactNotInformed
*
@ -200,7 +210,6 @@ class DataPolicy
} else {
$result4 = $mailfile->sendfile();
if (!$error) {
$resultmasssend .= $langs->trans("MailSent") . ': ' . $sendto . "<br>";
$contact->array_options['options_datapolicy_send'] = date('Y-m-d', time());
$contact->update($contact->id);
@ -301,6 +310,10 @@ class DataPolicy
$sendto = $adherent->email;
// TODO Use a dolibarr email template
$s = 'TXTLINKDATAPOLICIESSUBJECT_' . $l;
$ma = 'TXTLINKDATAPOLICIESMESSAGE_' . $l;
$code= md5($adherent->email);
if (!empty($adherent->default_lang)) {
$l = $adherent->default_lang;

View File

@ -19,7 +19,7 @@
/**
* \file htdocs/datapolicy/class/datapolicycron.class.php
* \ingroup datapolicy
* \brief Example hook overload.
* \brief File for cron task of module DataPolicy
*/
/**
@ -27,17 +27,33 @@
*/
class DataPolicyCron
{
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
{
$this->db = $db;
}
/**
* Function exec
* CAN BE A CRON TASK
*
* @return boolean
* @return int 0 if OK, <>0 if KO (this function is used also by cron so only 0 is OK)
*/
public function exec()
public function cleanDataForDataPolicy()
{
global $conf, $db, $langs, $user;
global $conf, $langs, $user;
$langs->load('datapolicy@datapolicy');
$error = 0;
$errormsg = '';
$nbupdated = $nbdeleted = 0;
// FIXME Removed hardcoded values of id
$arrayofparameters=array(
'DATAPOLICIES_TIERS_CLIENT' => array(
@ -446,14 +462,18 @@ class DataPolicyCron
),
);
foreach ($arrayofparameters as $key => $params) {
if ($conf->global->$key != '' && is_numeric($conf->global->$key) && (int) $conf->global->$key > 0) {
$this->db->begin();
foreach ($arrayofparameters as $key => $params)
{
if ($conf->global->$key != '' && is_numeric($conf->global->$key) && (int) $conf->global->$key > 0)
{
$sql = sprintf($params['sql'], (int) $conf->entity, (int) $conf->global->$key, (int) $conf->global->$key);
$resql = $db->query($sql);
if ($resql && $db->num_rows($resql) > 0) {
if ($resql && $db->num_rows($resql) > 0)
{
$num = $db->num_rows($resql);
$i = 0;
@ -461,33 +481,51 @@ class DataPolicyCron
require_once $params['file'];
$object = new $params['class']($db);
while ($i < $num)
while ($i < $num && ! $error)
{
$obj = $db->fetch_object($resql);
$object->fetch($obj->rowid);
$object->id = $obj->rowid;
if ($object->isObjectUsed($obj->rowid) > 0) {
if ($object->isObjectUsed($obj->rowid) > 0) // If object to clean is used
{
foreach ($params['fields_anonym'] as $fields => $val) {
$object->$fields = $val;
}
$object->update($obj->rowid, $user);
if ($params['class'] == 'Societe') {
// On supprime les contacts associé
$sql = "DELETE FROM ".MAIN_DB_PREFIX."socpeople WHERE fk_soc = " . $obj->rowid;
$db->query($sql);
$result = $object->update($obj->rowid, $user);
if ($result > 0)
{
if ($params['class'] == 'Societe') {
// We delete contacts of thirdparty
$sql = "DELETE FROM ".MAIN_DB_PREFIX."socpeople WHERE fk_soc = " . $obj->rowid;
$result = $this->db->query($sql);
if ($result < 0)
{
$errormsg = $this->db->lasterror();
$error++;
}
}
}
} else {
if (DOL_VERSION < 8) {
$ret = $object->delete($obj->rowid, $user);
else
{
$errormsg = $object->error;
$error++;
}
$nbupdated++;
} else { // If object to clean is not used
if ($object->element == 'adherent') {
$result = $object->delete($obj->rowid, $user);
} else {
if ($object->element == 'adherent') {
$ret = $object->delete($obj->rowid);
} else {
$ret = $object->delete();
}
$result = $object->delete($user);
}
if ($result < 0)
{
$errormsg = $object->error;
$error++;
}
$nbdeleted++;
}
$i++;
@ -495,27 +533,18 @@ class DataPolicyCron
}
}
}
return true;
}
$this->db->commit();
/**
* sendMailing
*
* @return boolean
*/
public function sendMailing()
{
global $conf, $db, $langs, $user;
if (! $error)
{
$this->output = $nbupdated.' record updated, '.$nbdeleted.' record deleted';
}
else
{
$this->error = $errormsg;
}
$langs->load('datapolicy@datapolicy');
require_once DOL_DOCUMENT_ROOT . '/datapolicy/class/datapolicy.class.php';
$contacts = new DataPolicy($db);
$contacts->getAllContactNotInformed();
$contacts->getAllCompaniesNotInformed();
$contacts->getAllAdherentsNotInformed();
return true;
return 0;
}
}

View File

@ -48,7 +48,9 @@ function datapolicyAdminPrepareHead()
$h++;
}
complete_head_from_modules($conf, $langs, $object, $head, $h, 'datapolicy');
complete_head_from_modules($conf, $langs, null, $head, $h, 'datapolicy');
complete_head_from_modules($conf, $langs, null, $head, $h, 'datapolicy', 'remove');
return $head;
}

View File

@ -63,9 +63,9 @@ function dav_admin_prepare_head()
// Entries must be declared in modules descriptor with line
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
// $this->tabs = array('entity:-tabname); to remove a tab
complete_head_from_modules($conf, $langs, $object, $head, $h, 'admindav');
complete_head_from_modules($conf, $langs, null, $head, $h, 'admindav');
complete_head_from_modules($conf, $langs, $object, $head, $h, 'admindav', 'remove');
complete_head_from_modules($conf, $langs, null, $head, $h, 'admindav', 'remove');
return $head;
}

View File

@ -106,7 +106,7 @@ class Donations extends DolibarrApi
$obj_ret = array();
// case of external user, $thirdparty_ids param is ignored and replaced by user's socid
$socids = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : $thirdparty_ids;
$socids = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : $thirdparty_ids;
$sql = "SELECT t.rowid";
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) ) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)

View File

@ -81,5 +81,7 @@ function emailcollectorPrepareHead($object)
//); // to remove a tab
complete_head_from_modules($conf, $langs, $object, $head, $h, 'emailcollector');
complete_head_from_modules($conf, $langs, $object, $head, $h, 'emailcollector', 'remove');
return $head;
}

View File

@ -106,7 +106,7 @@ class Shipments extends DolibarrApi
$obj_ret = array();
// case of external user, $thirdparty_ids param is ignored and replaced by user's socid
$socids = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : $thirdparty_ids;
$socids = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : $thirdparty_ids;
// If the internal user must only see his customers, force searching by him
$search_sale = 0;

View File

@ -101,7 +101,7 @@ class ExpenseReports extends DolibarrApi
$obj_ret = array();
// case of external user, $societe param is ignored and replaced by user's socid
//$socid = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : $societe;
//$socid = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : $societe;
$sql = "SELECT t.rowid";
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport as t";

View File

@ -2340,7 +2340,7 @@ class ExpenseReport extends CommonObject
{
$response->warning_delay=$conf->expensereport->payment->warning_delay/60/60/24;
$response->label=$langs->trans("ExpenseReportsToPay");
$response->labelShort=$langs->trans("ToPay");
$response->labelShort=$langs->trans("StatusToPay");
$response->url=DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm&amp;statut=5';
}
$response->img=img_object('', "trip");

View File

@ -49,6 +49,7 @@ if (empty($keyforcontent) && empty($conf->global->EXTERNALSITE_URL))
llxHeader();
print '<div class="error">'.$langs->trans('ExternalSiteModuleNotComplete').'</div>';
llxFooter();
exit;
}
if (! empty($keyforcontent))

View File

@ -113,7 +113,7 @@ class Interventions extends DolibarrApi
$obj_ret = array();
// case of external user, $thirdparty_ids param is ignored and replaced by user's socid
$socids = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : $thirdparty_ids;
$socids = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : $thirdparty_ids;
// If the internal user must only see his customers, force searching by him
$search_sale = 0;

View File

@ -103,7 +103,7 @@ class SupplierOrders extends DolibarrApi
$obj_ret = array();
// case of external user, $thirdparty_ids param is ignored and replaced by user's socid
$socids = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : $thirdparty_ids;
$socids = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : $thirdparty_ids;
// If the internal user must only see his customers, force searching by him
$search_sale = 0;

View File

@ -1822,10 +1822,9 @@ class CommandeFournisseur extends CommonOrder
$error++;
}
// Si module stock gere et que incrementation faite depuis un dispatching en stock
// If module stock is enabled and the stock increase is done on purchase order dispatching
if (! $error && $entrepot > 0 && ! empty($conf->stock->enabled) && ! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER))
{
$mouv = new MouvementStock($this->db);
if ($product > 0)
{

View File

@ -2203,7 +2203,7 @@ class FactureFournisseur extends CommonInvoice
$response = new WorkboardResponse();
$response->warning_delay=$conf->facture->fournisseur->warning_delay/60/60/24;
$response->label=$langs->trans("SupplierBillsToPay");
$response->labelShort=$langs->trans("ToPay");
$response->labelShort=$langs->trans("StatusToPay");
$response->url=DOL_URL_ROOT.'/fourn/facture/list.php?search_status=1&mainmenu=billing&leftmenu=suppliers_bills';
$response->img=img_object($langs->trans("Bills"), "bill");

View File

@ -2346,7 +2346,7 @@ elseif (! empty($object->id))
}*/
// Modify
if ($object->statut == 1)
if ($object->statut == CommandeFournisseur::STATUS_VALIDATED)
{
if ($user->rights->fournisseur->commande->commander)
{
@ -2355,7 +2355,7 @@ elseif (! empty($object->id))
}
// Approve
if ($object->statut == 1)
if ($object->statut == CommandeFournisseur::STATUS_VALIDATED)
{
if ($user->rights->fournisseur->commande->approuver)
{
@ -2377,7 +2377,7 @@ elseif (! empty($object->id))
// Second approval (if option SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED is set)
if (! empty($conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) && $conf->global->MAIN_FEATURES_LEVEL > 0 && $object->total_ht >= $conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED)
{
if ($object->statut == 1)
if ($object->statut == CommandeFournisseur::STATUS_VALIDATED)
{
if ($user->rights->fournisseur->commande->approve2)
{
@ -2398,7 +2398,7 @@ elseif (! empty($object->id))
}
// Refuse
if ($object->statut == 1)
if ($object->statut == CommandeFournisseur::STATUS_VALIDATED)
{
if ($user->rights->fournisseur->commande->approuver || $user->rights->fournisseur->commande->approve2)
{
@ -2411,7 +2411,7 @@ elseif (! empty($object->id))
}
// Send
if (in_array($object->statut, array(2, 3, 4, 5)))
if (in_array($object->statut, array(CommandeFournisseur::STATUS_ACCEPTED, 3, 4, 5)))
{
if ($user->rights->fournisseur->commande->commander)
{
@ -2420,7 +2420,7 @@ elseif (! empty($object->id))
}
// Reopen
if (in_array($object->statut, array(2)))
if (in_array($object->statut, array(CommandeFournisseur::STATUS_ACCEPTED)))
{
$buttonshown=0;
if (! $buttonshown && $user->rights->fournisseur->commande->approuver)
@ -2462,7 +2462,7 @@ elseif (! empty($object->id))
}
}
if ($object->statut == 2)
if ($object->statut == CommandeFournisseur::STATUS_ACCEPTED)
{
if ($user->rights->fournisseur->commande->commander)
{
@ -2474,6 +2474,15 @@ elseif (! empty($object->id))
}
}
// Classify received (this does not record reception)
if ($object->statut == CommandeFournisseur::STATUS_ORDERSENT || $object->statut == CommandeFournisseur::STATUS_RECEIVED_PARTIALLY)
{
if ($user->rights->fournisseur->commande->receptionner)
{
print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=classifyreception#classifyreception">'.$langs->trans("ClassifyReception").'</a></div>';
}
}
// Create bill
//if (! empty($conf->facture->enabled))
//{
@ -2590,38 +2599,41 @@ elseif (! empty($object->id))
print '</div><div class="fichehalfright"><div class="ficheaddleft">';
if ($user->rights->fournisseur->commande->receptionner && ($object->statut == CommandeFournisseur::STATUS_ORDERSENT || $object->statut == CommandeFournisseur::STATUS_RECEIVED_PARTIALLY))
if ($action == 'classifyreception')
{
// Set status to received (action=livraison)
print '<!-- form to record purchase order received -->'."\n";
print '<form action="card.php?id='.$object->id.'" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="livraison">';
print load_fiche_titre($langs->trans("Receive"), '', '');
if ($user->rights->fournisseur->commande->receptionner && ($object->statut == CommandeFournisseur::STATUS_ORDERSENT || $object->statut == CommandeFournisseur::STATUS_RECEIVED_PARTIALLY))
{
// Set status to received (action=livraison)
print '<!-- form to record purchase order received -->'."\n";
print '<form id="classifyreception" action="card.php?id='.$object->id.'" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="livraison">';
print load_fiche_titre($langs->trans("Receive"), '', '');
print '<table class="noborder centpercent">';
//print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("Receive").'</td></tr>';
print '<tr><td>'.$langs->trans("DeliveryDate").'</td><td>';
$datepreselected = dol_now();
print $form->selectDate($datepreselected, '', 1, 1, '', "commande", 1, 1);
print "</td></tr>\n";
print '<table class="noborder centpercent">';
//print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("Receive").'</td></tr>';
print '<tr><td>'.$langs->trans("DeliveryDate").'</td><td>';
$datepreselected = dol_now();
print $form->selectDate($datepreselected, '', 1, 1, '', "commande", 1, 1);
print "</td></tr>\n";
print '<tr><td class="fieldrequired">'.$langs->trans("Delivery")."</td><td>\n";
$liv = array();
$liv[''] = '&nbsp;';
$liv['tot'] = $langs->trans("CompleteOrNoMoreReceptionExpected");
$liv['par'] = $langs->trans("PartialWoman");
$liv['nev'] = $langs->trans("NeverReceived");
$liv['can'] = $langs->trans("Canceled");
print '<tr><td class="fieldrequired">'.$langs->trans("Delivery")."</td><td>\n";
$liv = array();
$liv[''] = '&nbsp;';
$liv['tot'] = $langs->trans("CompleteOrNoMoreReceptionExpected");
$liv['par'] = $langs->trans("PartialWoman");
$liv['nev'] = $langs->trans("NeverReceived");
$liv['can'] = $langs->trans("Canceled");
print $form->selectarray("type", $liv);
print $form->selectarray("type", $liv);
print '</td></tr>';
print '<tr><td>'.$langs->trans("Comment").'</td><td><input size="40" type="text" name="comment"></td></tr>';
print '<tr><td class="center" colspan="2"><input type="submit" class="button" value="'.$langs->trans("Receive").'"></td></tr>';
print "</table>\n";
print "</form>\n";
print "<br>";
print '</td></tr>';
print '<tr><td>'.$langs->trans("Comment").'</td><td><input size="40" type="text" name="comment"></td></tr>';
print '<tr><td class="center" colspan="2"><input type="submit" class="button" value="'.$langs->trans("Receive").'"></td></tr>';
print "</table>\n";
print "</form>\n";
print "<br>";
}
}
// List of actions on element

View File

@ -939,8 +939,16 @@ if ($id > 0 || ! empty($ref)) {
print '<td></td>';
print '<td>' . $langs->trans("Warehouse") . '</td>';
print '<td>' . $langs->trans("Comment") . '</td>';
if (! empty($conf->global->SUPPLIER_ORDER_USE_DISPATCH_STATUS) || !empty($conf->reception->enabled))
// Status
if (! empty($conf->global->SUPPLIER_ORDER_USE_DISPATCH_STATUS) && empty($reception->rowid)) {
print '<td class="center" colspan="2">' . $langs->trans("Status") . '</td>';
}
elseif(!empty($conf->reception->enabled)) {
print '<td class="center"></td>';
}
print '<td class="center"></td>';
print "</tr>\n";
@ -1025,17 +1033,15 @@ if ($id > 0 || ! empty($ref)) {
}
}
print '</td>';
}elseif(!empty($conf->reception->enabled)){
} elseif(!empty($conf->reception->enabled)) {
print '<td class="right">';
if(!empty($reception->id)){
print $reception->getLibStatut(5);
}
print '</td>';
}
print '</td>';
print '<td class="center">';
print '</td>';
print '<td class="center"></td>';
print "</tr>\n";

View File

@ -55,13 +55,6 @@ $langs->load("holiday");
$childids = $user->getAllChildIds(1);
$cancreate = 0;
if (! empty($user->rights->holiday->write_all)) $cancreate=1;
if (! empty($user->rights->holiday->write) && in_array($fuserid, $childids)) $cancreate=1;
$candelete = 0;
if (! empty($user->rights->holiday->delete)) $candelete=1;
$morefilter = 'AND employee = 1';
if (! empty($conf->global->HOLIDAY_FOR_NON_SALARIES_TOO)) $morefilter = '';
@ -82,6 +75,13 @@ if ($id > 0)
}
}
$cancreate = 0;
if (! empty($user->rights->holiday->write_all)) $cancreate=1;
if (! empty($user->rights->holiday->write) && in_array($fuserid, $childids)) $cancreate=1;
$candelete = 0;
if (! empty($user->rights->holiday->delete)) $candelete=1;
if ($object->statut == Holiday::STATUS_DRAFT && $user->rights->holiday->write && in_array($object->fk_user, $childids)) $candelete=1;
/*
* Actions
@ -122,7 +122,7 @@ if ($action == 'create')
elseif ($starthalfday == 'afternoon') $halfday=-1;
elseif ($endhalfday == 'morning') $halfday=1;
$valideur = GETPOST('valideur');
$valideur = GETPOST('valideur', 'int');
$description = trim(GETPOST('description'));
// If no type
@ -270,8 +270,8 @@ if ($action == 'update' && ! GETPOSTISSET('savevalidator'))
// If this is the requestor or has read/write rights
if ($cancreate)
{
$valideur = $_POST['valideur'];
$description = trim($_POST['description']);
$valideur = GETPOST('valideur', 'int');
$description = trim(GETPOST('description', 'none'));
// If no start date
if (empty($_POST['date_debut_'])) {
@ -1297,7 +1297,8 @@ else
if (empty($include_users)) print img_warning().' '.$langs->trans("NobodyHasPermissionToValidateHolidays");
else
{
$s=$form->select_dolusers($object->fk_validator, "valideur", (($action == 'editvalidator') ? 0 : 1), ($user->admin ? '' : array($user->id)), 0, $include_users);
$arrayofvalidatorstoexclude = (($user->admin || ($user->id != $userRequest->id))? '' : array($user->id)); // Nobody if we are admin or if we are not the user of the leave.
$s=$form->select_dolusers($object->fk_validator, "valideur", (($action == 'editvalidator') ? 0 : 1), $arrayofvalidatorstoexclude, 0, $include_users);
print $form->textwithpicto($s, $langs->trans("AnyOtherInThisListCanValidate"));
}
if ($action == 'editvalidator')
@ -1434,7 +1435,7 @@ else
{
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=backtodraft" class="butAction">'.$langs->trans("SetToDraft").'</a>';
}
if ($user->rights->holiday->delete && ($object->statut == Holiday::STATUS_DRAFT || $object->statut == Holiday::STATUS_CANCELED || $object->statut == Holiday::STATUS_REFUSED)) // If draft or canceled or refused
if ($candelete && ($object->statut == Holiday::STATUS_DRAFT || $object->statut == Holiday::STATUS_CANCELED || $object->statut == Holiday::STATUS_REFUSED)) // If draft or canceled or refused
{
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete" class="butActionDelete">'.$langs->trans("DeleteCP").'</a>';
}

View File

@ -376,7 +376,6 @@ class Holiday extends CommonObject
$obj = $this->db->fetch_object($resql);
$this->id = $obj->rowid;
$this->rowid = $obj->rowid; // deprecated
$this->ref = ($obj->ref?$obj->ref:$obj->rowid);
$this->fk_user = $obj->fk_user;
$this->date_create = $this->db->jdate($obj->date_create);

View File

@ -0,0 +1,43 @@
-- Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
-- Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
-- Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
-- Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
-- Copyright (C) 2004 Guillaume Delecourt <guillaume.delecourt@opensides.be>
-- Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
-- Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com>
-- Copyright (C) 2019 Markus Welters <markus@welters.de>
--
-- 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
-- the Free Software Foundation; either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
--
-- Ne pas placer de commentaire en fin de ligne, ce fichier est parsé lors
-- de l'install et tous les sigles '--' sont supprimés.
--
-- LIST ON https://fr.wikipedia.org/wiki/Jour_férié
-- A lot of countries
INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, year, month, day, active) VALUES('NEWYEARDAY1', 0, 0, 0, 1, 1, 1);
INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, year, month, day, active) VALUES('LABORDAY1', 0, 0, 0, 5, 1, 1);
INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, year, month, day, active) VALUES('CHRISTMASDAY1', 0, 0, 0, 12, 25, 1);
-- France only
INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, year, month, day, active) VALUES('FRVICTORYDAY', 0, 1, 0, 5, 8, 1);
INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, year, month, day, active) VALUES('FRNATIONALDAY', 0, 1, 0, 7, 14, 1);
INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, year, month, day, active) VALUES('FRASSOMPTION', 0, 1, 0, 8, 15, 1);
INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, year, month, day, active) VALUES('FRTOUSSAINT', 0, 1, 0, 11, 1, 1);
INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, year, month, day, active) VALUES('FRARMISTICE', 0, 1, 0, 11, 11, 1);

View File

@ -90,4 +90,23 @@ ALTER TABLE llx_projet ADD COLUMN usage_organize_event integer DEFAULT 0;
UPDATE llx_projet set usage_opportunity = 1 WHERE fk_opp_status > 0;
ALTER TABLE llx_accounting_account MODIFY COLUMN rowid bigint AUTO_INCREMENT;
create table llx_c_hrm_public_holiday
(
id integer AUTO_INCREMENT PRIMARY KEY,
entity integer DEFAULT 0 NOT NULL, -- multi company id, 0 = all
fk_country integer,
code varchar(62),
dayrule varchar(255) DEFAULT 'date', -- 'date', 'xxx', ...
day integer,
month integer,
year integer, -- 0 for all years
active integer DEFAULT 1,
import_key varchar(14)
)ENGINE=innodb;
ALTER TABLE llx_supplier_proposaldet ADD COLUMN date_start datetime DEFAULT NULL;
ALTER TABLE llx_supplier_proposaldet ADD COLUMN date_end datetime DEFAULT NULL;

View File

@ -36,5 +36,4 @@ create table llx_c_field_list
visible tinyint DEFAULT 1 NOT NULL, -- visibility of field. 0=Never visible, 1=Visible on list and forms, 2=Visible on list only
enabled varchar(255) DEFAULT 1, -- Condition to show or hide
rang integer DEFAULT 0
)ENGINE=innodb;

View File

@ -0,0 +1,21 @@
-- ========================================================================
-- Copyright (C) 2019 Laurent Destailleur <eldy@users.sourceforge.net>
--
-- 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
-- the Free Software Foundation; either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
-- ========================================================================
ALTER TABLE llx_c_hrm_public_holiday ADD UNIQUE INDEX uk_c_hrm_public_holiday(entity, code);
ALTER TABLE llx_c_hrm_public_holiday ADD UNIQUE INDEX uk_c_hrm_public_holiday2(entity, day, month, year);

View File

@ -0,0 +1,31 @@
-- ========================================================================
-- Copyright (C) 2019 Laurent Destailleur <eldy@users.sourceforge.net>
--
-- 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
-- the Free Software Foundation; either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
-- ========================================================================
create table llx_c_hrm_public_holiday
(
id integer AUTO_INCREMENT PRIMARY KEY,
entity integer DEFAULT 0 NOT NULL, -- multi company id, 0 = all
fk_country integer,
code varchar(62),
dayrule varchar(255) DEFAULT 'date', -- 'date', 'xxx', ...
day integer,
month integer,
year integer, -- 0 for all years
active integer DEFAULT 1,
import_key varchar(14)
)ENGINE=innodb;

View File

@ -40,6 +40,8 @@ CREATE TABLE llx_supplier_proposaldet (
total_localtax2 double(24,8) DEFAULT 0,
total_ttc double(24,8) DEFAULT 0,
product_type integer DEFAULT 0,
date_start datetime DEFAULT NULL, -- date debut si service
date_end datetime DEFAULT NULL, -- date fin si service
info_bits integer DEFAULT 0,
buy_price_ht double(24,8) DEFAULT 0,
fk_product_fournisseur_price integer DEFAULT NULL,

View File

@ -1,11 +1,7 @@
# Dolibarr language file - Source file is en_US - admin
OldVATRates=Old GST rate
NewVATRates=New GST rate
Module600Name=Notifications on business event
DictionaryVAT=GST Rates or Sales Tax Rates
OptionVatMode=GST due
ListOfNotificationsPerUser=List of automatic notifications per user*
ListOfNotificationsPerUserOrContact=List of possible automatic notifications (on business event) available per user* or per contact**
ListOfFixedNotifications=List of automatic fixed notifications
LinkColor=Colour of links
OperationParamDesc=Define values to use for action, or how to extract values. For example:<br>objproperty1=SET:abc<br>objproperty1=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:abc<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey.*[^\\s]+(.*)<br>options_myextrafield=EXTRACT:SUBJECT:([^\\s]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.

View File

@ -1,2 +0,0 @@
# Dolibarr language file - Source file is en_US - withdrawals
RUM=Unique Mandate Reference (UMR)

View File

@ -1,10 +1,6 @@
# Dolibarr language file - Source file is en_US - admin
Module600Name=Notifications on business event
LocalTax1Management=PST Management
CompanyZip=Postal code
LDAPFieldZip=Postal code
ListOfNotificationsPerUser=List of automatic notifications per user*
ListOfNotificationsPerUserOrContact=List of possible automatic notifications (on business event) available per user* or per contact**
ListOfFixedNotifications=List of automatic fixed notifications
FormatZip=Postal code
OperationParamDesc=Define values to use for action, or how to extract values. For example:<br>objproperty1=SET:abc<br>objproperty1=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:abc<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey.*[^\\s]+(.*)<br>options_myextrafield=EXTRACT:SUBJECT:([^\\s]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.

View File

@ -41,14 +41,10 @@ UMaskExplanation=This parameter allows you to define permissions set by default
ListOfDirectories=List of OpenDocument template directories
ListOfDirectoriesForModelGenODT=List of directories containing template files in OpenDocument format.<br><br>Put here full path of directories.<br>Add a carriage return between each directory.<br>To add a directory of the GED module, add here <b>DOL_DATA_ROOT/ecm/yourdirectoryname</b>.<br><br>Files in those directories must end with <b>.odt</b> or <b>.ods</b>.
FollowingSubstitutionKeysCanBeUsed=<br>To learn how to create your .odt document templates, before storing them in those directories, read wiki documentation:
Module600Name=Notifications on business event
Module50200Name=PayPal
DictionaryAccountancyJournal=Finance journals
CompanyZip=Postcode
LDAPFieldZip=Postcode
GenbarcodeLocation=Barcode generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".<br>For example: /usr/local/bin/genbarcode
ListOfNotificationsPerUser=List of automatic notifications per user*
ListOfNotificationsPerUserOrContact=List of possible automatic notifications (on business event) available per user* or per contact**
ListOfFixedNotifications=List of automatic fixed notifications
FormatZip=Postcode
OperationParamDesc=Define values to use for action, or how to extract values. For example:<br>objproperty1=SET:abc<br>objproperty1=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:abc<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey.*[^\\s]+(.*)<br>options_myextrafield=EXTRACT:SUBJECT:([^\\s]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.

View File

@ -15,7 +15,6 @@ NotifyCredit=Payment Credit
WithdrawalFileNotCapable=Unable to generate Payment receipt file for your country %s (Your country is not supported)
DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Direct Debit orders to manage the direct debit payment order. When the payment order is closed, payment on the invoice will be automatically recorded, and the invoice closed if the outstanding balance is null.
WithdrawalFile=Payment file
RUM=Unique Mandate Reference (UMR)
WithdrawRequestAmount=The amount of Direct Debit request:
WithdrawRequestErrorNilAmount=Unable to create a Direct Debit request for an empty amount.
SEPALegalText=By signing this mandate form, you authorise (A) %s to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with the instructions from %s. As part of your rights, you are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. A refund must be claimed within 8 weeks starting from the date on which your account was debited. Your rights regarding the above mandate are explained in a statement that you can obtain from your bank.

View File

@ -1,7 +1,6 @@
# Dolibarr language file - Source file is en_US - admin
Module20Name=Quotations
Module20Desc=Management of quotations
Module600Name=Notifications on business event
Permission21=Read quotations
Permission22=Create/modify quotations
Permission24=Validate quotations
@ -14,8 +13,5 @@ ProposalsNumberingModules=Quotation numbering models
ProposalsPDFModules=Quotation documents models
FreeLegalTextOnProposal=Free text on quotations
WatermarkOnDraftProposal=Watermark on draft quotations (none if empty)
ListOfNotificationsPerUser=List of automatic notifications per user*
ListOfNotificationsPerUserOrContact=List of possible automatic notifications (on business event) available per user* or per contact**
ListOfFixedNotifications=List of automatic fixed notifications
MailToSendProposal=Customer quotations
OperationParamDesc=Define values to use for action, or how to extract values. For example:<br>objproperty1=SET:abc<br>objproperty1=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:abc<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey.*[^\\s]+(.*)<br>options_myextrafield=EXTRACT:SUBJECT:([^\\s]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.

View File

@ -1695,7 +1695,7 @@ SuppliersSetup=Vendor module setup
SuppliersCommandModel=Complete template of purchase order (logo...)
SuppliersInvoiceModel=Complete template of vendor invoice (logo...)
SuppliersInvoiceNumberingModel=Vendor invoices numbering models
IfSetToYesDontForgetPermission=If set to yes, don't forget to provide permissions to groups or users allowed for the second approval
IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval
##### GeoIPMaxmind #####
GeoIPMaxmindSetup=GeoIP Maxmind module setup
PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.<br>Examples:<br>/usr/local/share/GeoIP/GeoIP.dat<br>/usr/share/GeoIP/GeoIP.dat<br>/usr/share/GeoIP/GeoLite2-Country.mmdb
@ -1851,7 +1851,7 @@ SeveralLangugeVariatFound=Several language variants found
RemoveSpecialChars=Remove special characters
COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX)
COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX)
COMPANY_DIGITARIA_UNIQUE_CODE=Unauthorized double
COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed
GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact)
GDPRContactDesc=If you store data about European companies/citizens, you can name the contact who is responsible for the General Data Protection Regulation here
HelpOnTooltip=Help text to show on tooltip
@ -1940,4 +1940,5 @@ RESTRICT_API_ON_IP=Allow available APIs to some host IP only (wildcard not allow
RESTRICT_ON_IP=Allow access to some host IP only (wildcard not allowed, use space between values). Empty means every hosts can access.
BaseOnSabeDavVersion=Based on the library SabreDAV version
NotAPublicIp=Not a public IP
MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server (done 1 time only after installation) to allow the foundation to count the number of Dolibarr installation.
MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server (done 1 time only after installation) to allow the foundation to count the number of Dolibarr installation.
FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled

View File

@ -63,7 +63,7 @@ LT2SupplierES=IRPF purchases
LT2CustomerIN=SGST sales
LT2SupplierIN=SGST purchases
VATCollected=VAT collected
ToPay=To pay
StatusToPay=To pay
SpecialExpensesArea=Area for all special payments
SocialContribution=Social or fiscal tax
SocialContributions=Social or fiscal taxes

View File

@ -81,3 +81,4 @@ JobDisabled=Job disabled
MakeLocalDatabaseDumpShort=Local database backup
MakeLocalDatabaseDump=Create a local database dump. Parameters are: compression ('gz' or 'bz' or 'none'), backup type ('mysql', 'pgsql', 'auto'), 1, 'auto' or filename to build, number of backup files to keep
WarningCronDelayed=Attention, for performance purpose, whatever is next date of execution of enabled jobs, your jobs may be delayed to a maximum of %s hours, before being run.
DATAPOLICYJob=Data cleaner and anonymizer

View File

@ -9,6 +9,7 @@ ConfirmDeleteEstablishment=Are you sure you wish to delete this establishment?
OpenEtablishment=Open establishment
CloseEtablishment=Close establishment
# Dictionary
DictionaryPublicHolidays=HRM - Public holidays
DictionaryDepartment=HRM - Department list
DictionaryFunction=HRM - Function list
# Module

View File

@ -412,6 +412,7 @@ DefaultTaxRate=Default tax rate
Average=Average
Sum=Sum
Delta=Delta
StatusToPay=To pay
RemainToPay=Remain to pay
Module=Module/Application
Modules=Modules/Applications
@ -824,6 +825,7 @@ Mandatory=Mandatory
Hello=Hello
GoodBye=GoodBye
Sincerely=Sincerely
ConfirmDeleteObject=Are you sure you want to delete this object?
DeleteLine=Delete line
ConfirmDeleteLine=Are you sure you want to delete this line?
NoPDFAvailableForDocGenAmongChecked=No PDF were available for the document generation among checked record

View File

@ -154,5 +154,5 @@ CreateOrders=Create orders
ToBillSeveralOrderSelectCustomer=To create an invoice for several orders, click first onto customer, then choose "%s".
OptionToSetOrderBilledNotEnabled=Option (from module Workflow) to set order to 'Billed' automatically when invoice is validated is off, so you will have to set status of order to 'Billed' manually.
IfValidateInvoiceIsNoOrderStayUnbilled=If invoice validation is 'No', the order will remain to status 'Unbilled' until the invoice is validated.
CloseReceivedSupplierOrdersAutomatically=Close order to "%s" automatically if all products are received.
CloseReceivedSupplierOrdersAutomatically=Close order to status "%s" automatically if all products are received.
SetShippingMode=Set shipping mode

View File

@ -11,7 +11,6 @@ YourEMail=Email to receive payment confirmation
Creditor=Creditor
PaymentCode=Payment code
PayBoxDoPayment=Pay with Paybox
ToPay=Do payment
YouWillBeRedirectedOnPayBox=You will be redirected on secured Paybox page to input you credit card information
Continue=Next
ToOfferALinkForOnlinePayment=URL for %s payment

View File

@ -21,6 +21,7 @@ QtyShipped=Qty shipped
QtyShippedShort=Qty ship.
QtyPreparedOrShipped=Qty prepared or shipped
QtyToShip=Qty to ship
QtyToReceive=Qty to receive
QtyReceived=Qty received
QtyInOtherShipments=Qty in other shipments
KeepToShip=Remain to ship
@ -46,6 +47,7 @@ DateDeliveryPlanned=Planned date of delivery
RefDeliveryReceipt=Ref delivery receipt
StatusReceipt=Status delivery receipt
DateReceived=Date delivery received
ClassifyReception=Classify reception
SendShippingByEMail=Send shipment by email
SendShippingRef=Submission of shipment %s
ActionsOnShipping=Events on shipment

View File

@ -55,7 +55,7 @@ PMPValue=Weighted average price
PMPValueShort=WAP
EnhancedValueOfWarehouses=Warehouses value
UserWarehouseAutoCreate=Create a user warehouse automatically when creating a user
AllowAddLimitStockByWarehouse=Manage also values for minimum and desired stock per pairing (product-warehouse) in addition to values per product
AllowAddLimitStockByWarehouse=Manage also value for minimum and desired stock per pairing (product-warehouse) in addition to the value for minimum and desired stock per product
IndependantSubProductStock=Product stock and subproduct stock are independent
QtyDispatched=Quantity dispatched
QtyDispatchedShort=Qty dispatched
@ -184,7 +184,7 @@ SelectFournisseur=Vendor filter
inventoryOnDate=Inventory
INVENTORY_DISABLE_VIRTUAL=Virtual product (kit): do not decrement stock of a child product
INVENTORY_USE_MIN_PA_IF_NO_LAST_PA=Use the buy price if no last buy price can be found
INVENTORY_USE_INVENTORY_DATE_FROM_DATEMVT=Stock movement has date of inventory
INVENTORY_USE_INVENTORY_DATE_FOR_DATE_OF_MVT=Stock movements will have the date of inventory (instead of the date of inventory validation)
inventoryChangePMPPermission=Allow to change PMP value for a product
ColumnNewPMP=New unit PMP
OnlyProdsInStock=Do not add product without stock

View File

@ -76,7 +76,7 @@ WithdrawalFile=Withdrawal file
SetToStatusSent=Set to status "File Sent"
ThisWillAlsoAddPaymentOnInvoice=This will also record payments to invoices and will classify them as "Paid" if remain to pay is null
StatisticsByLineStatus=Statistics by status of lines
RUM=Unique Mandate Reference (UMR)
RUM=UMR
DateRUM=Mandate signature date
RUMLong=Unique Mandate Reference
RUMWillBeGenerated=If empty, a UMR (Unique Mandate Reference) will be generated once the bank account information is saved.

View File

@ -54,7 +54,6 @@ LT2CustomerES=Ventas de IRPF
LT2SupplierES=Compras de IRPF
LT2CustomerIN=Ventas de SGST
VATCollected=IVA recaudado
ToPay=Pagar
SpecialExpensesArea=Área para todos los pagos especiales
SocialContribution=Impuesto social o fiscal
LabelContrib=Contribución de etiqueta

View File

@ -50,7 +50,6 @@ LT2Supplier=Impuestos 3 compras
LT2CustomerES=Ventas de IRPF
LT2SupplierES=Compras IRPF
VATCollected=IVA recaudado
ToPay=Pagar
SpecialExpensesArea=Área para todos los pagos especiales.
SocialContribution=Impuesto social o fiscal
SocialContributions=Impuestos sociales o fiscales.

View File

@ -16,9 +16,5 @@ FormToTestFileUploadForm=Formulaire pour tester l'upload de fichiers (selon la c
IfModuleEnabled=Note: oui ne fonctionne que si le module <b>%s</b> est activé
Module20Name=Propales
Module30Name=Factures
Module600Name=Notifications on business event
Target=Objectif
ListOfNotificationsPerUser=List of automatic notifications per user*
ListOfNotificationsPerUserOrContact=List of possible automatic notifications (on business event) available per user* or per contact**
ListOfFixedNotifications=List of automatic fixed notifications
OperationParamDesc=Define values to use for action, or how to extract values. For example:<br>objproperty1=SET:abc<br>objproperty1=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:abc<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey.*[^\\s]+(.*)<br>options_myextrafield=EXTRACT:SUBJECT:([^\\s]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.

View File

@ -1,3 +1,2 @@
# Dolibarr language file - Source file is en_US - withdrawals
StatusTrans=Envoyé
RUM=Unique Mandate Reference (UMR)

View File

@ -89,7 +89,6 @@ WatermarkOnDraftExpenseReports=Filigrane sur les projets de rapports de dépense
Module0Desc=Gestion des utilisateurs / employés et des groupes
Module42Desc=Installations de journalisation (fichier, syslog, ...). Ces journaux sont à des fins techniques / de débogage.
Module75Name=Notes de frais et déplacements
Module600Name=Notifications on business event
Module2400Name=Evénements / Agenda
Module2600Name=services API / Web ( serveur SOAP )
Module2600Desc=Active le serveur de Web Services de Dolibarr
@ -199,9 +198,6 @@ DeleteFiscalYear=Supprimer la période comptable
ConfirmDeleteFiscalYear=Êtes-vous sûr de supprimer cette période comptable?
ShowFiscalYear=Afficher la période comptable
SalariesSetup=Configuration du module salariés
ListOfNotificationsPerUser=List of automatic notifications per user*
ListOfNotificationsPerUserOrContact=List of possible automatic notifications (on business event) available per user* or per contact**
ListOfFixedNotifications=List of automatic fixed notifications
ConfFileMustContainCustom=L'installation ou la construction d'un module externe à partir de l'application doit sauvegarder les fichiers du module dans le répertoire <strong>%s</strong>. Pour que ce répertoire soit traité par Dolibarr, vous devez configurer votre <strong> conf / conf.php </strong> pour ajouter les 2 lignes de directive: <br><strong> $ dolibarr_main_url_root_alt = '/ custom'; </strong><br><strong> $ dolibarr_main_document_root_alt = '%s / custom'; </strong>
HighlightLinesOnMouseHover=Mettez en surbrillance les lignes de table lorsque déplacement de la souris passe au-dessus
PressF5AfterChangingThis=Appuyez sur CTRL + F5 sur le clavier ou effacez votre cache de navigateur après avoir changé cette valeur pour l'avoir efficace

View File

@ -53,7 +53,6 @@ DoStandingOrdersBeforePayments=Cet onglet vous permet de demander une commande d
WithdrawalFile=Fichier de retrait
SetToStatusSent=Définir le statut "Fichier envoyé"
StatisticsByLineStatus=Statistiques par état des lignes
RUM=Unique Mandate Reference (UMR)
RUMLong=Référence de mandat unique
WithdrawMode=Mode de débit direct (FRST ou RECUR)
WithdrawRequestAmount=Montant de la demande de débit direct:

Some files were not shown because too many files have changed in this diff Show More