Merge branch '15.0' of git@github.com:Dolibarr/dolibarr.git into develop
Conflicts: htdocs/reception/class/reception.class.php
This commit is contained in:
commit
3697cb9ca4
@ -199,7 +199,25 @@ for ($i = 1; $i <= 12; $i++) {
|
|||||||
if ($j > 12) {
|
if ($j > 12) {
|
||||||
$j -= 12;
|
$j -= 12;
|
||||||
}
|
}
|
||||||
print '<td width="60" class="right">'.$langs->trans('MonthShort'.str_pad($j, 2, '0', STR_PAD_LEFT)).'</td>';
|
$cursormonth = $j;
|
||||||
|
if ($cursormonth > 12) {
|
||||||
|
$cursormonth -= 12;
|
||||||
|
}
|
||||||
|
$cursoryear = ($cursormonth < ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1)) ? $y + 1 : $y;
|
||||||
|
$tmp = dol_getdate(dol_get_last_day($cursoryear, $cursormonth, 'gmt'), false, 'gmt');
|
||||||
|
|
||||||
|
print '<td width="60" class="right">';
|
||||||
|
if (!empty($tmp['mday'])) {
|
||||||
|
$param = 'search_date_startday=1&search_date_startmonth='.$cursormonth.'&search_date_startyear='.$cursoryear;
|
||||||
|
$param .= '&search_date_endday='.$tmp['mday'].'&search_date_endmonth='.$tmp['mon'].'&search_date_endyear='.$tmp['year'];
|
||||||
|
$param .= '&search_month='.$tmp['mon'].'&search_year='.$tmp['year'];
|
||||||
|
print '<a href="'.DOL_URL_ROOT.'/accountancy/expensereport/list.php?'.$param.'">';
|
||||||
|
}
|
||||||
|
print $langs->trans('MonthShort'.str_pad($j, 2, '0', STR_PAD_LEFT));
|
||||||
|
if (!empty($tmp['mday'])) {
|
||||||
|
print '</a>';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
}
|
}
|
||||||
print '<td width="60" class="right"><b>'.$langs->trans("Total").'</b></td></tr>';
|
print '<td width="60" class="right"><b>'.$langs->trans("Total").'</b></td></tr>';
|
||||||
|
|
||||||
|
|||||||
@ -171,7 +171,7 @@ if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_S
|
|||||||
print $s;
|
print $s;
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
}
|
}
|
||||||
if (!empty($conf->expensereport->enabled)) { // TODO Move this in the default account page because this is only one accounting account per purpose, not several.
|
if (!empty($conf->expensereport->enabled)) {
|
||||||
$step++;
|
$step++;
|
||||||
$s = img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescExpenseReport", $step, '{s}');
|
$s = img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescExpenseReport", $step, '{s}');
|
||||||
$s = str_replace('{s}', '<a href="'.DOL_URL_ROOT.'/admin/dict.php?id=17&from=accountancy"><strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuExpenseReportAccounts").'</strong></a>', $s);
|
$s = str_replace('{s}', '<a href="'.DOL_URL_ROOT.'/admin/dict.php?id=17&from=accountancy"><strong>'.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuExpenseReportAccounts").'</strong></a>', $s);
|
||||||
|
|||||||
@ -1057,7 +1057,7 @@ if (empty($action) || $action == 'view') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
print '<div class="tabsAction tabsActionNoBottom">';
|
print '<div class="tabsAction tabsActionNoBottom centerimp">';
|
||||||
|
|
||||||
if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') {
|
if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') {
|
||||||
print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />';
|
print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />';
|
||||||
|
|||||||
@ -521,7 +521,7 @@ if (empty($action) || $action == 'view') {
|
|||||||
print $desc;
|
print $desc;
|
||||||
print '</div>';
|
print '</div>';
|
||||||
}
|
}
|
||||||
print '<div class="tabsAction tabsActionNoBottom">';
|
print '<div class="tabsAction tabsActionNoBottom centerimp">';
|
||||||
|
|
||||||
if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') {
|
if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') {
|
||||||
print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />';
|
print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />';
|
||||||
|
|||||||
@ -774,7 +774,7 @@ if (empty($action) || $action == 'view') {
|
|||||||
print $desc;
|
print $desc;
|
||||||
print '</div>';
|
print '</div>';
|
||||||
}
|
}
|
||||||
print '<div class="tabsAction tabsActionNoBottom">';
|
print '<div class="tabsAction tabsActionNoBottom centerimp">';
|
||||||
if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') {
|
if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') {
|
||||||
print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />';
|
print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -716,7 +716,7 @@ if (empty($action) || $action == 'view') {
|
|||||||
print $desc;
|
print $desc;
|
||||||
print '</div>';
|
print '</div>';
|
||||||
}
|
}
|
||||||
print '<div class="tabsAction tabsActionNoBottom">';
|
print '<div class="tabsAction tabsActionNoBottom centerimp">';
|
||||||
if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') {
|
if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') {
|
||||||
print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />';
|
print '<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans("ExportDraftJournal").'" onclick="launch_export();" />';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -119,7 +119,7 @@ print '<tr class="liste_titre"><th class="titlefieldcreate wordbreak">'.$langs->
|
|||||||
|
|
||||||
// Name
|
// Name
|
||||||
print '<tr class="oddeven"><td><label for="name">'.$langs->trans("CompanyName").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="name">'.$langs->trans("CompanyName").'</label></td><td>';
|
||||||
print '<input name="nom" id="name" class="minwidth200" autofocus value="'.(GETPOSTISSET('nom') ? GETPOST('nom', 'nohtml') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_NAME) ? $conf->global->MAIN_INFO_ACCOUNTANT_NAME : '')).'"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '' : ' autofocus="autofocus"').'></td></tr>'."\n";
|
print '<input name="nom" id="name" class="minwidth200" value="'.(GETPOSTISSET('nom') ? GETPOST('nom', 'nohtml') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_NAME) ? $conf->global->MAIN_INFO_ACCOUNTANT_NAME : '')).'"'.(empty($conf->global->MAIN_INFO_ACCOUNTANT_NAME) ? ' autofocus="autofocus"' : '').'></td></tr>'."\n";
|
||||||
|
|
||||||
// Address
|
// Address
|
||||||
print '<tr class="oddeven"><td><label for="address">'.$langs->trans("CompanyAddress").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="address">'.$langs->trans("CompanyAddress").'</label></td><td>';
|
||||||
|
|||||||
@ -164,6 +164,9 @@ $urlvcal .= $urlwithroot.'/public/agenda/agendaexport.php?format=vcal'.$getentit
|
|||||||
$message .= img_picto('', 'globe').' '.str_replace('{url}', $urlvcal, '<span class="opacitymedium">'.$langs->trans("WebCalUrlForVCalExport", 'vcal', '').'</span>');
|
$message .= img_picto('', 'globe').' '.str_replace('{url}', $urlvcal, '<span class="opacitymedium">'.$langs->trans("WebCalUrlForVCalExport", 'vcal', '').'</span>');
|
||||||
$message .= '<div class="urllink">';
|
$message .= '<div class="urllink">';
|
||||||
$message .= '<input type="text" id="onlinepaymenturl1" class="quatrevingtpercent" value="'.$urlwithroot.'/public/agenda/agendaexport.php?format=vcal'.$getentity.'&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY ?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY) : '...').'">';
|
$message .= '<input type="text" id="onlinepaymenturl1" class="quatrevingtpercent" value="'.$urlwithroot.'/public/agenda/agendaexport.php?format=vcal'.$getentity.'&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY ?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY) : '...').'">';
|
||||||
|
if (!empty($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY)) {
|
||||||
|
$message .= ' <a href="'.$urlwithroot.'/public/agenda/agendaexport.php?format=vcal'.$getentity.'&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY ?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY) : '...').'">'.img_picto('', 'download').'</a>';
|
||||||
|
}
|
||||||
$message .= '</div>';
|
$message .= '</div>';
|
||||||
$message .= ajax_autoselect('onlinepaymenturl1');
|
$message .= ajax_autoselect('onlinepaymenturl1');
|
||||||
$message .= '<br>';
|
$message .= '<br>';
|
||||||
@ -173,6 +176,9 @@ $urlical .= $urlwithroot.'/public/agenda/agendaexport.php?format=ical&type=event
|
|||||||
$message .= img_picto('', 'globe').' '.str_replace('{url}', $urlical, '<span class="opacitymedium">'.$langs->trans("WebCalUrlForVCalExport", 'ical/ics', '').'</span>');
|
$message .= img_picto('', 'globe').' '.str_replace('{url}', $urlical, '<span class="opacitymedium">'.$langs->trans("WebCalUrlForVCalExport", 'ical/ics', '').'</span>');
|
||||||
$message .= '<div class="urllink">';
|
$message .= '<div class="urllink">';
|
||||||
$message .= '<input type="text" id="onlinepaymenturl2" class="quatrevingtpercent" value="'.$urlwithroot.'/public/agenda/agendaexport.php?format=ical'.$getentity.'&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY ?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY) : '...').'">';
|
$message .= '<input type="text" id="onlinepaymenturl2" class="quatrevingtpercent" value="'.$urlwithroot.'/public/agenda/agendaexport.php?format=ical'.$getentity.'&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY ?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY) : '...').'">';
|
||||||
|
if (!empty($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY)) {
|
||||||
|
$message .= ' <a href="'.$urlwithroot.'/public/agenda/agendaexport.php?format=ical'.$getentity.'&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY ?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY) : '...').'">'.img_picto('', 'download').'</a>';
|
||||||
|
}
|
||||||
$message .= '</div>';
|
$message .= '</div>';
|
||||||
$message .= ajax_autoselect('onlinepaymenturl2');
|
$message .= ajax_autoselect('onlinepaymenturl2');
|
||||||
$message .= '<br>';
|
$message .= '<br>';
|
||||||
@ -182,6 +188,9 @@ $urlrss .= $urlwithroot.'/public/agenda/agendaexport.php?format=rss'.$getentity.
|
|||||||
$message .= img_picto('', 'globe').' '.str_replace('{url}', $urlrss, '<span class="opacitymedium">'.$langs->trans("WebCalUrlForVCalExport", 'rss', '').'</span>');
|
$message .= img_picto('', 'globe').' '.str_replace('{url}', $urlrss, '<span class="opacitymedium">'.$langs->trans("WebCalUrlForVCalExport", 'rss', '').'</span>');
|
||||||
$message .= '<div class="urllink">';
|
$message .= '<div class="urllink">';
|
||||||
$message .= '<input type="text" id="onlinepaymenturl3" class="quatrevingtpercent" value="'.$urlwithroot.'/public/agenda/agendaexport.php?format=rss'.$getentity.'&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY ?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY) : '...').'">';
|
$message .= '<input type="text" id="onlinepaymenturl3" class="quatrevingtpercent" value="'.$urlwithroot.'/public/agenda/agendaexport.php?format=rss'.$getentity.'&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY ?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY) : '...').'">';
|
||||||
|
if (!empty($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY)) {
|
||||||
|
$message .= ' <a href="'.$urlwithroot.'/public/agenda/agendaexport.php?format=rss'.$getentity.'&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY ?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY) : '...').'">'.img_picto('', 'download').'</a>';
|
||||||
|
}
|
||||||
$message .= '</div>';
|
$message .= '</div>';
|
||||||
$message .= ajax_autoselect('onlinepaymenturl3');
|
$message .= ajax_autoselect('onlinepaymenturl3');
|
||||||
$message .= '<br>';
|
$message .= '<br>';
|
||||||
|
|||||||
@ -107,7 +107,7 @@ print '<td>'.$langs->trans("SendingsAbility").'</td>';
|
|||||||
print '<td>';
|
print '<td>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
print $langs->trans("Required");
|
print '<span class="opacitymedium">'.img_picto($langs->trans("Required"), 'switch_on').'</span>';
|
||||||
/*if (empty($conf->global->MAIN_SUBMODULE_EXPEDITION))
|
/*if (empty($conf->global->MAIN_SUBMODULE_EXPEDITION))
|
||||||
{
|
{
|
||||||
print '<a href="confexped.php?action=activate_sending&token='.newToken().'">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>';
|
print '<a href="confexped.php?action=activate_sending&token='.newToken().'">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>';
|
||||||
|
|||||||
@ -222,7 +222,8 @@ if ($action == 'edit') {
|
|||||||
print '<input type="hidden" name="action" value="update">';
|
print '<input type="hidden" name="action" value="update">';
|
||||||
|
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("DelaysOfToleranceBeforeWarning").'</td><td class="center" width="120px">'.$langs->trans("Value").'</td></tr>';
|
print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("DelaysOfToleranceBeforeWarning").'</td>';
|
||||||
|
print '<td class="right">'.$langs->trans("LateWarningAfter").'</td></tr>';
|
||||||
|
|
||||||
foreach ($modules as $module => $delays) {
|
foreach ($modules as $module => $delays) {
|
||||||
if (!empty($conf->$module->enabled)) {
|
if (!empty($conf->$module->enabled)) {
|
||||||
@ -230,7 +231,7 @@ if ($action == 'edit') {
|
|||||||
$value = (!empty($conf->global->{$delay['code']}) ? $conf->global->{$delay['code']}:0);
|
$value = (!empty($conf->global->{$delay['code']}) ? $conf->global->{$delay['code']}:0);
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td width="20px">'.img_object('', $delay['img']).'</td>';
|
print '<td width="20px">'.img_object('', $delay['img']).'</td>';
|
||||||
print '<td>'.$langs->trans('Delays_'.$delay['code']).'</td><td class="nowraponall">';
|
print '<td>'.$langs->trans('Delays_'.$delay['code']).'</td><td class="nowraponall right">';
|
||||||
print '<input class="right maxwidth75" type="number" name="'.$delay['code'].'" value="'.$value.'"> '.$langs->trans("days").'</td></tr>';
|
print '<input class="right maxwidth75" type="number" name="'.$delay['code'].'" value="'.$value.'"> '.$langs->trans("days").'</td></tr>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -242,10 +243,10 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
// Show if meteo is enabled
|
// Show if meteo is enabled
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td class="center" width="120px">'.$langs->trans("Value").'</td></tr>';
|
print '<tr class="liste_titre"><td>'.$langs->trans("Option").'</td><td class="right">'.$langs->trans("Value").'</td></tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("MAIN_DISABLE_METEO").'</td><td class="center">';
|
print '<td>'.$langs->trans("MAIN_DISABLE_METEO").'</td><td class="right">';
|
||||||
print $form->selectarray('MAIN_DISABLE_METEO', $labelmeteo, (empty($conf->global->MAIN_DISABLE_METEO) ? 0 : $conf->global->MAIN_DISABLE_METEO));
|
print $form->selectarray('MAIN_DISABLE_METEO', $labelmeteo, (empty($conf->global->MAIN_DISABLE_METEO) ? 0 : $conf->global->MAIN_DISABLE_METEO));
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -256,7 +257,7 @@ if ($action == 'edit') {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("DelaysOfToleranceBeforeWarning").'</td><td class="center" width="120px">'.$langs->trans("Value").'</td></tr>';
|
print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("DelaysOfToleranceBeforeWarning").'</td><td class="right">'.$langs->trans("Value").'</td></tr>';
|
||||||
|
|
||||||
foreach ($modules as $module => $delays) {
|
foreach ($modules as $module => $delays) {
|
||||||
if (!empty($conf->$module->enabled)) {
|
if (!empty($conf->$module->enabled)) {
|
||||||
@ -276,7 +277,7 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
// Show if meteo is enabled
|
// Show if meteo is enabled
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td class="center" width="120px">'.$langs->trans("Value").'</td></tr>';
|
print '<tr class="liste_titre"><td>'.$langs->trans("Option").'</td><td class="right">'.$langs->trans("Value").'</td></tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("MAIN_DISABLE_METEO").'</td><td class="center">';
|
print '<td>'.$langs->trans("MAIN_DISABLE_METEO").'</td><td class="center">';
|
||||||
@ -301,7 +302,7 @@ if (empty($conf->global->MAIN_DISABLE_METEO) || $conf->global->MAIN_DISABLE_METE
|
|||||||
} else {
|
} else {
|
||||||
$str_mode_enabled = $str_mode_percentage;
|
$str_mode_enabled = $str_mode_percentage;
|
||||||
}
|
}
|
||||||
print '<a href="#" onclick="return false;" id="change_mode">'.$str_mode_enabled.'</a>';
|
print '<br><a href="#" onclick="return false;" id="change_mode">'.$str_mode_enabled.'</a>';
|
||||||
print '<input type="hidden" id="MAIN_USE_METEO_WITH_PERCENTAGE" name="MAIN_USE_METEO_WITH_PERCENTAGE" value="'.(!empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE) ? $conf->global->MAIN_USE_METEO_WITH_PERCENTAGE : '').'" />';
|
print '<input type="hidden" id="MAIN_USE_METEO_WITH_PERCENTAGE" name="MAIN_USE_METEO_WITH_PERCENTAGE" value="'.(!empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE) ? $conf->global->MAIN_USE_METEO_WITH_PERCENTAGE : '').'" />';
|
||||||
|
|
||||||
print '<br><br>';
|
print '<br><br>';
|
||||||
@ -451,8 +452,9 @@ if ($action == 'edit') {
|
|||||||
print $form->buttonsSaveCancel("Save", '');
|
print $form->buttonsSaveCancel("Save", '');
|
||||||
print '</form>';
|
print '</form>';
|
||||||
} else {
|
} else {
|
||||||
print '<br><div class="tabsAction">';
|
print '<br><br><div class="tabsAction">';
|
||||||
print '<a class="butAction" href="delais.php?action=edit&token='.newToken().'">'.$langs->trans("Modify").'</a></div>';
|
print '<a class="butAction" href="delais.php?action=edit&token='.newToken().'">'.$langs->trans("Modify").'</a>';
|
||||||
|
print '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// End of page
|
// End of page
|
||||||
|
|||||||
@ -97,7 +97,7 @@ if (empty($action) || $action == 'edit' || $action == 'updateedit') {
|
|||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
print $form->textwithpicto($langs->trans("Monday"), $langs->trans("OpeningHoursFormatDesc"));
|
print $form->textwithpicto($langs->trans("Monday"), $langs->trans("OpeningHoursFormatDesc"));
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
print '<input name="monday" id="monday" class="minwidth100" autofocus value="'.(!empty($conf->global->MAIN_INFO_OPENINGHOURS_MONDAY) ? $conf->global->MAIN_INFO_OPENINGHOURS_MONDAY : GETPOST("monday", 'alpha')).'"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '' : ' autofocus="autofocus"').'></td></tr>'."\n";
|
print '<input name="monday" id="monday" class="minwidth100" value="'.(!empty($conf->global->MAIN_INFO_OPENINGHOURS_MONDAY) ? $conf->global->MAIN_INFO_OPENINGHOURS_MONDAY : GETPOST("monday", 'alpha')).'"'.(empty($conf->global->MAIN_INFO_OPENINGHOURS_MONDAY) ? ' autofocus="autofocus"' : '').'></td></tr>'."\n";
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
print $form->textwithpicto($langs->trans("Tuesday"), $langs->trans("OpeningHoursFormatDesc"));
|
print $form->textwithpicto($langs->trans("Tuesday"), $langs->trans("OpeningHoursFormatDesc"));
|
||||||
|
|||||||
@ -249,7 +249,7 @@ print load_fiche_titre($langs->trans("PDF"), '', 'title_setup');
|
|||||||
|
|
||||||
$head = pdf_admin_prepare_head();
|
$head = pdf_admin_prepare_head();
|
||||||
|
|
||||||
print dol_get_fiche_head($head, 'general', $langs->trans("PDF"), -1, 'pdf');
|
print dol_get_fiche_head($head, 'general', '', -1, '');
|
||||||
|
|
||||||
print '<span class="opacitymedium">'.$form->textwithpicto($langs->trans("PDFDesc"), $s)."</span><br>\n";
|
print '<span class="opacitymedium">'.$form->textwithpicto($langs->trans("PDFDesc"), $s)."</span><br>\n";
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
|
|||||||
@ -84,7 +84,7 @@ print load_fiche_titre($langs->trans("PDF"), '', 'title_setup');
|
|||||||
|
|
||||||
$head = pdf_admin_prepare_head();
|
$head = pdf_admin_prepare_head();
|
||||||
|
|
||||||
print dol_get_fiche_head($head, 'other', $langs->trans("other"), -1, 'pdf');
|
print dol_get_fiche_head($head, 'other', '', -1, '');
|
||||||
|
|
||||||
$tooltiptext = '';
|
$tooltiptext = '';
|
||||||
print '<span class="opacitymedium">'.$form->textwithpicto($langs->trans("PDFOtherDesc"), $tooltiptext)."</span><br>\n";
|
print '<span class="opacitymedium">'.$form->textwithpicto($langs->trans("PDFOtherDesc"), $tooltiptext)."</span><br>\n";
|
||||||
|
|||||||
@ -254,6 +254,60 @@ $head = translation_prepare_head();
|
|||||||
|
|
||||||
print dol_get_fiche_head($head, $mode, '', -1, '');
|
print dol_get_fiche_head($head, $mode, '', -1, '');
|
||||||
|
|
||||||
|
|
||||||
|
$langcode = GETPOSTISSET('langcode') ? GETPOST('langcode') : $langs->defaultlang;
|
||||||
|
|
||||||
|
$newlang = new Translate('', $conf);
|
||||||
|
$newlang->setDefaultLang($langcode);
|
||||||
|
|
||||||
|
$langsenfileonly = new Translate('', $conf);
|
||||||
|
$langsenfileonly->setDefaultLang('en_US');
|
||||||
|
|
||||||
|
$newlangfileonly = new Translate('', $conf);
|
||||||
|
$newlangfileonly->setDefaultLang($langcode);
|
||||||
|
|
||||||
|
$recordtoshow = array();
|
||||||
|
|
||||||
|
// Search modules dirs
|
||||||
|
$modulesdir = dolGetModulesDirs();
|
||||||
|
|
||||||
|
$nbtotaloffiles = 0;
|
||||||
|
|
||||||
|
// Search into dir of modules (the $modulesdir is already a list that loop on $conf->file->dol_document_root)
|
||||||
|
$i = 0;
|
||||||
|
foreach ($modulesdir as $keydir => $tmpsearchdir) {
|
||||||
|
$searchdir = $tmpsearchdir; // $searchdir can be '.../htdocs/core/modules/' or '.../htdocs/custom/mymodule/core/modules/'
|
||||||
|
|
||||||
|
// Directory of translation files
|
||||||
|
$dir_lang = dirname(dirname($searchdir))."/langs/".$langcode; // The 2 dirname is to go up in dir for 2 levels
|
||||||
|
$dir_lang_osencoded = dol_osencode($dir_lang);
|
||||||
|
|
||||||
|
$filearray = dol_dir_list($dir_lang_osencoded, 'files', 0, '', '', $sortfield, (strtolower($sortorder) == 'asc' ?SORT_ASC:SORT_DESC), 1);
|
||||||
|
foreach ($filearray as $file) {
|
||||||
|
$tmpfile = preg_replace('/.lang/i', '', basename($file['name']));
|
||||||
|
$moduledirname = (basename(dirname(dirname($dir_lang))));
|
||||||
|
|
||||||
|
$langkey = $tmpfile;
|
||||||
|
if ($i > 0) {
|
||||||
|
$langkey .= '@'.$moduledirname;
|
||||||
|
}
|
||||||
|
//var_dump($i.' - '.$keydir.' - '.$dir_lang_osencoded.' -> '.$moduledirname . ' / ' . $tmpfile.' -> '.$langkey);
|
||||||
|
|
||||||
|
$result = $newlang->load($langkey, 0, 0, '', 0); // Load translation files + database overwrite
|
||||||
|
$result = $newlangfileonly->load($langkey, 0, 0, '', 1); // Load translation files only
|
||||||
|
if ($result < 0) {
|
||||||
|
print 'Failed to load language file '.$tmpfile.'<br>'."\n";
|
||||||
|
} else {
|
||||||
|
$nbtotaloffiles++;
|
||||||
|
}
|
||||||
|
//print 'After loading lang '.$langkey.', newlang has '.count($newlang->tab_translate).' records<br>'."\n";
|
||||||
|
|
||||||
|
$result = $langsenfileonly->load($langkey, 0, 0, '', 1); // Load translation files only
|
||||||
|
}
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($mode == 'overwrite') {
|
if ($mode == 'overwrite') {
|
||||||
print '<input type="hidden" name="page" value="'.$page.'">';
|
print '<input type="hidden" name="page" value="'.$page.'">';
|
||||||
|
|
||||||
@ -348,7 +402,14 @@ if ($mode == 'overwrite') {
|
|||||||
if ($action == 'edit' && $obj->rowid == GETPOST('rowid', 'int')) {
|
if ($action == 'edit' && $obj->rowid == GETPOST('rowid', 'int')) {
|
||||||
print '<input type="text" class="quatrevingtpercent" name="transvalue" value="'.dol_escape_htmltag($obj->transvalue).'">';
|
print '<input type="text" class="quatrevingtpercent" name="transvalue" value="'.dol_escape_htmltag($obj->transvalue).'">';
|
||||||
} else {
|
} else {
|
||||||
|
//print $obj->transkey.' '.$langsenfileonly->tab_translate[$obj->transkey];
|
||||||
|
$titleforvalue = $langs->trans("Translation").' en_US for key '.$obj->transkey.':<br>'.($langsenfileonly->tab_translate[$obj->transkey] ? $langsenfileonly->trans($obj->transkey) : '<span class="opacitymedium">'.$langs->trans("None").'</span>');
|
||||||
|
/*if ($obj->lang != 'en_US') {
|
||||||
|
$titleforvalue .= '<br>'.$langs->trans("Translation").' '.$obj->lang.' '...;
|
||||||
|
}*/
|
||||||
|
print '<span title="'.dol_escape_htmltag($titleforvalue).'" class="classfortooltip">';
|
||||||
print dol_escape_htmltag($obj->transvalue);
|
print dol_escape_htmltag($obj->transvalue);
|
||||||
|
print '</span>';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
@ -376,20 +437,6 @@ if ($mode == 'overwrite') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($mode == 'searchkey') {
|
if ($mode == 'searchkey') {
|
||||||
$langcode = GETPOSTISSET('langcode') ? GETPOST('langcode') : $langs->defaultlang;
|
|
||||||
|
|
||||||
$newlang = new Translate('', $conf);
|
|
||||||
$newlang->setDefaultLang($langcode);
|
|
||||||
|
|
||||||
$newlangfileonly = new Translate('', $conf);
|
|
||||||
$newlangfileonly->setDefaultLang($langcode);
|
|
||||||
|
|
||||||
$recordtoshow = array();
|
|
||||||
|
|
||||||
// Search modules dirs
|
|
||||||
$modulesdir = dolGetModulesDirs();
|
|
||||||
|
|
||||||
$nbtotaloffiles = 0;
|
|
||||||
$nbempty = 0;
|
$nbempty = 0;
|
||||||
/*var_dump($langcode);
|
/*var_dump($langcode);
|
||||||
var_dump($transkey);
|
var_dump($transkey);
|
||||||
@ -403,41 +450,10 @@ if ($mode == 'searchkey') {
|
|||||||
if (empty($transvalue)) {
|
if (empty($transvalue)) {
|
||||||
$nbempty++;
|
$nbempty++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'search' && ($nbempty > 999)) { // 999 to disable this
|
if ($action == 'search' && ($nbempty > 999)) { // 999 to disable this
|
||||||
setEventMessages($langs->trans("WarningAtLeastKeyOrTranslationRequired"), null, 'warnings');
|
setEventMessages($langs->trans("WarningAtLeastKeyOrTranslationRequired"), null, 'warnings');
|
||||||
} else {
|
} else {
|
||||||
// Search into dir of modules (the $modulesdir is already a list that loop on $conf->file->dol_document_root)
|
|
||||||
$i = 0;
|
|
||||||
foreach ($modulesdir as $keydir => $tmpsearchdir) {
|
|
||||||
$searchdir = $tmpsearchdir; // $searchdir can be '.../htdocs/core/modules/' or '.../htdocs/custom/mymodule/core/modules/'
|
|
||||||
|
|
||||||
// Directory of translation files
|
|
||||||
$dir_lang = dirname(dirname($searchdir))."/langs/".$langcode; // The 2 dirname is to go up in dir for 2 levels
|
|
||||||
$dir_lang_osencoded = dol_osencode($dir_lang);
|
|
||||||
|
|
||||||
$filearray = dol_dir_list($dir_lang_osencoded, 'files', 0, '', '', $sortfield, (strtolower($sortorder) == 'asc' ?SORT_ASC:SORT_DESC), 1);
|
|
||||||
foreach ($filearray as $file) {
|
|
||||||
$tmpfile = preg_replace('/.lang/i', '', basename($file['name']));
|
|
||||||
$moduledirname = (basename(dirname(dirname($dir_lang))));
|
|
||||||
|
|
||||||
$langkey = $tmpfile;
|
|
||||||
if ($i > 0) {
|
|
||||||
$langkey .= '@'.$moduledirname;
|
|
||||||
}
|
|
||||||
//var_dump($i.' - '.$keydir.' - '.$dir_lang_osencoded.' -> '.$moduledirname . ' / ' . $tmpfile.' -> '.$langkey);
|
|
||||||
|
|
||||||
$result = $newlang->load($langkey, 0, 0, '', 0); // Load translation files + database overwrite
|
|
||||||
$result = $newlangfileonly->load($langkey, 0, 0, '', 1); // Load translation files only
|
|
||||||
if ($result < 0) {
|
|
||||||
print 'Failed to load language file '.$tmpfile.'<br>'."\n";
|
|
||||||
} else {
|
|
||||||
$nbtotaloffiles++;
|
|
||||||
}
|
|
||||||
//print 'After loading lang '.$langkey.', newlang has '.count($newlang->tab_translate).' records<br>'."\n";
|
|
||||||
}
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now search into translation array
|
// Now search into translation array
|
||||||
foreach ($newlang->tab_translate as $key => $val) {
|
foreach ($newlang->tab_translate as $key => $val) {
|
||||||
if ($transkey && !preg_match('/'.preg_quote($transkey, '/').'/i', $key)) {
|
if ($transkey && !preg_match('/'.preg_quote($transkey, '/').'/i', $key)) {
|
||||||
@ -532,8 +548,12 @@ if ($mode == 'searchkey') {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
print '<tr class="oddeven"><td>'.$langcode.'</td><td>'.$key.'</td><td class="small">';
|
print '<tr class="oddeven"><td>'.$langcode.'</td><td>'.$key.'</td><td class="small">';
|
||||||
|
$titleforvalue = $langs->trans("Translation").' en_US for key '.$key.':<br>'.($langsenfileonly->tab_translate[$key] ? $langsenfileonly->trans($key) : '<span class="opacitymedium">'.$langs->trans("None").'</span>');
|
||||||
|
print '<span title="'.dol_escape_htmltag($titleforvalue).'" class="classfortooltip">';
|
||||||
print dol_escape_htmltag($val);
|
print dol_escape_htmltag($val);
|
||||||
print '</td><td class="right nowraponall">';
|
print '</span>';
|
||||||
|
print '</td>';
|
||||||
|
print '<td class="right nowraponall">';
|
||||||
if (!empty($newlangfileonly->tab_translate[$key])) {
|
if (!empty($newlangfileonly->tab_translate[$key])) {
|
||||||
if ($val != $newlangfileonly->tab_translate[$key]) {
|
if ($val != $newlangfileonly->tab_translate[$key]) {
|
||||||
// retrieve rowid
|
// retrieve rowid
|
||||||
|
|||||||
@ -77,7 +77,6 @@ if (preg_match('/\/api\/index\.php/', $_SERVER["PHP_SELF"])) {
|
|||||||
header('Access-Control-Allow-Headers: Content-Type, Authorization, api_key, DOLAPIKEY');
|
header('Access-Control-Allow-Headers: Content-Type, Authorization, api_key, DOLAPIKEY');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$res = 0;
|
$res = 0;
|
||||||
if (!$res && file_exists("../main.inc.php")) {
|
if (!$res && file_exists("../main.inc.php")) {
|
||||||
$res = include '../main.inc.php';
|
$res = include '../main.inc.php';
|
||||||
|
|||||||
@ -76,11 +76,14 @@ if ($complete == 'na' || $complete == -2) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($fulldayevent) {
|
if ($fulldayevent) {
|
||||||
$datep = dol_mktime('00', '00', 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'));
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
$datef = dol_mktime('23', '59', '59', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'));
|
// For "full day" events, we must store date in GMT (It must be viewed as same moment everywhere)
|
||||||
|
$datep = dol_mktime('00', '00', 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), $tzforfullday ? $tzforfullday : 'tzuserrel');
|
||||||
|
$datef = dol_mktime('23', '59', '59', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), $tzforfullday ? $tzforfullday : 'tzuserrel');
|
||||||
|
//print $db->idate($datep); exit;
|
||||||
} else {
|
} else {
|
||||||
$datep = dol_mktime($aphour, $apmin, 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'));
|
$datep = dol_mktime($aphour, $apmin, 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuserrel');
|
||||||
$datef = dol_mktime($p2hour, $p2min, '59', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'));
|
$datef = dol_mktime($p2hour, $p2min, '59', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), 'tzuserrel');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
@ -252,8 +255,15 @@ if (empty($reshook) && $action == 'add') {
|
|||||||
$percentage = in_array(GETPOST('status'), array(-1, 100)) ? GETPOST('status') : (in_array($complete, array(-1, 100)) ? $complete : GETPOST("percentage", 'int')); // If status is -1 or 100, percentage is not defined and we must use status
|
$percentage = in_array(GETPOST('status'), array(-1, 100)) ? GETPOST('status') : (in_array($complete, array(-1, 100)) ? $complete : GETPOST("percentage", 'int')); // If status is -1 or 100, percentage is not defined and we must use status
|
||||||
|
|
||||||
// Clean parameters
|
// Clean parameters
|
||||||
$datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuser');
|
if ($fulldayevent) {
|
||||||
$datef = dol_mktime($fulldayevent ? '23' : GETPOST("p2hour", 'int'), $fulldayevent ? '59' : GETPOST("p2min", 'int'), $fulldayevent ? '59' : GETPOST("apsec", 'int'), GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), 'tzuser');
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
|
// For "full day" events, we must store date in GMT (It must be viewed as same moment everywhere)
|
||||||
|
$datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), $tzforfullday ? $tzforfullday : 'tzuser');
|
||||||
|
$datef = dol_mktime($fulldayevent ? '23' : GETPOST("p2hour", 'int'), $fulldayevent ? '59' : GETPOST("p2min", 'int'), $fulldayevent ? '59' : GETPOST("apsec", 'int'), GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), $tzforfullday ? $tzforfullday : 'tzuser');
|
||||||
|
} else {
|
||||||
|
$datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuser');
|
||||||
|
$datef = dol_mktime($fulldayevent ? '23' : GETPOST("p2hour", 'int'), $fulldayevent ? '59' : GETPOST("p2min", 'int'), $fulldayevent ? '59' : GETPOST("apsec", 'int'), GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), 'tzuser');
|
||||||
|
}
|
||||||
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
if (!$datef && $percentage == 100) {
|
if (!$datef && $percentage == 100) {
|
||||||
@ -513,8 +523,16 @@ if (empty($reshook) && $action == 'update') {
|
|||||||
$object->fetch_userassigned();
|
$object->fetch_userassigned();
|
||||||
$object->oldcopy = clone $object;
|
$object->oldcopy = clone $object;
|
||||||
|
|
||||||
$datep = dol_mktime($fulldayevent ? '00' : $aphour, $fulldayevent ? '00' : $apmin, 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuser');
|
// Clean parameters
|
||||||
$datef = dol_mktime($fulldayevent ? '23' : $p2hour, $fulldayevent ? '59' : $p2min, $fulldayevent ? '59' : '0', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), 'tzuser');
|
if ($fulldayevent) {
|
||||||
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
|
// For "full day" events, we must store date in GMT (It must be viewed as same moment everywhere)
|
||||||
|
$datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), $tzforfullday ? $tzforfullday : 'tzuser');
|
||||||
|
$datef = dol_mktime($fulldayevent ? '23' : GETPOST("p2hour", 'int'), $fulldayevent ? '59' : GETPOST("p2min", 'int'), $fulldayevent ? '59' : GETPOST("apsec", 'int'), GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), $tzforfullday ? $tzforfullday : 'tzuser');
|
||||||
|
} else {
|
||||||
|
$datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuser');
|
||||||
|
$datef = dol_mktime($fulldayevent ? '23' : GETPOST("p2hour", 'int'), $fulldayevent ? '59' : GETPOST("p2min", 'int'), $fulldayevent ? '59' : GETPOST("apsec", 'int'), GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), 'tzuser');
|
||||||
|
}
|
||||||
|
|
||||||
$object->type_id = dol_getIdFromCode($db, GETPOST("actioncode", 'aZ09'), 'c_actioncomm');
|
$object->type_id = dol_getIdFromCode($db, GETPOST("actioncode", 'aZ09'), 'c_actioncomm');
|
||||||
$object->label = GETPOST("label", "alphanohtml");
|
$object->label = GETPOST("label", "alphanohtml");
|
||||||
@ -1005,11 +1023,11 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
$datep = ($datep ? $datep : (is_null($object->datep) ? '' : $object->datep));
|
$datep = ($datep ? $datep : (is_null($object->datep) ? '' : $object->datep));
|
||||||
if (GETPOST('datep', 'int', 1)) {
|
if (GETPOST('datep', 'int', 1)) {
|
||||||
$datep = dol_stringtotime(GETPOST('datep', 'int', 1), 0);
|
$datep = dol_stringtotime(GETPOST('datep', 'int', 1), 'tzuser');
|
||||||
}
|
}
|
||||||
$datef = ($datef ? $datef : $object->datef);
|
$datef = ($datef ? $datef : $object->datef);
|
||||||
if (GETPOST('datef', 'int', 1)) {
|
if (GETPOST('datef', 'int', 1)) {
|
||||||
$datef = dol_stringtotime(GETPOST('datef', 'int', 1), 0);
|
$datef = dol_stringtotime(GETPOST('datef', 'int', 1), 'tzuser');
|
||||||
}
|
}
|
||||||
if (empty($datef) && !empty($datep)) {
|
if (empty($datef) && !empty($datep)) {
|
||||||
if (GETPOST("actioncode", 'aZ09') == 'AC_RDV' || empty($conf->global->AGENDA_USE_EVENT_TYPE_DEFAULT)) {
|
if (GETPOST("actioncode", 'aZ09') == 'AC_RDV' || empty($conf->global->AGENDA_USE_EVENT_TYPE_DEFAULT)) {
|
||||||
@ -1024,16 +1042,16 @@ if ($action == 'create') {
|
|||||||
print '<span id="dateend"'.(GETPOST("actioncode", 'aZ09') == 'AC_RDV' ? ' class="fieldrequired"' : '').'>'.$langs->trans("DateActionEnd").'</span>';
|
print '<span id="dateend"'.(GETPOST("actioncode", 'aZ09') == 'AC_RDV' ? ' class="fieldrequired"' : '').'>'.$langs->trans("DateActionEnd").'</span>';
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
if (GETPOST("afaire") == 1) {
|
if (GETPOST("afaire") == 1) {
|
||||||
print $form->selectDate($datep, 'ap', 1, 1, 0, "action", 1, 2, 0, 'fulldaystart'); // Empty value not allowed for start date and hours if "todo"
|
print $form->selectDate($datep, 'ap', 1, 1, 0, "action", 1, 2, 0, 'fulldaystart', '', '', '', 1, '', '', 'tzuserrel'); // Empty value not allowed for start date and hours if "todo"
|
||||||
} else {
|
} else {
|
||||||
print $form->selectDate($datep, 'ap', 1, 1, 1, "action", 1, 2, 0, 'fulldaystart');
|
print $form->selectDate($datep, 'ap', 1, 1, 1, "action", 1, 2, 0, 'fulldaystart', '', '', '', 1, '', '', 'tzuserrel');
|
||||||
}
|
}
|
||||||
print ' <span class="hideonsmartphone"> - </span> ';
|
print ' <span class="hideonsmartphone"> - </span> ';
|
||||||
//print ' - ';
|
//print ' - ';
|
||||||
if (GETPOST("afaire") == 1) {
|
if (GETPOST("afaire") == 1) {
|
||||||
print $form->selectDate($datef, 'p2', 1, 1, 1, "action", 1, 0, 0, 'fulldayend');
|
print $form->selectDate($datef, 'p2', 1, 1, 1, "action", 1, 0, 0, 'fulldayend', '', '', '', 1, '', '', 'tzuserrel');
|
||||||
} else {
|
} else {
|
||||||
print $form->selectDate($datef, 'p2', 1, 1, 1, "action", 1, 0, 0, 'fulldayend');
|
print $form->selectDate($datef, 'p2', 1, 1, 1, "action", 1, 0, 0, 'fulldayend', '', '', '', 1, '', '', 'tzuserrel');
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -1518,20 +1536,21 @@ if ($id > 0) {
|
|||||||
|
|
||||||
// Date start - end
|
// Date start - end
|
||||||
print '<tr><td class="nowrap"><span class="fieldrequired">'.$langs->trans("DateActionStart").' - '.$langs->trans("DateActionEnd").'</span></td><td colspan="3">';
|
print '<tr><td class="nowrap"><span class="fieldrequired">'.$langs->trans("DateActionStart").' - '.$langs->trans("DateActionEnd").'</span></td><td colspan="3">';
|
||||||
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
if (GETPOST("afaire") == 1) {
|
if (GETPOST("afaire") == 1) {
|
||||||
print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 0, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', 'tzuser');
|
print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 0, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuser') : 'tzuser');
|
||||||
} elseif (GETPOST("afaire") == 2) {
|
} elseif (GETPOST("afaire") == 2) {
|
||||||
print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 1, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', 'tzuser');
|
print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 1, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuser') : 'tzuser');
|
||||||
} else {
|
} else {
|
||||||
print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 1, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', 'tzuser');
|
print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 1, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuser') : 'tzuser');
|
||||||
}
|
}
|
||||||
print ' - ';
|
print ' - ';
|
||||||
if (GETPOST("afaire") == 1) {
|
if (GETPOST("afaire") == 1) {
|
||||||
print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 1, 0, 'fulldayend', '', '', '', 1, '', '', 'tzuser');
|
print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 1, 0, 'fulldayend', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuser') : 'tzuser');
|
||||||
} elseif (GETPOST("afaire") == 2) {
|
} elseif (GETPOST("afaire") == 2) {
|
||||||
print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 1, 0, 'fulldayend', '', '', '', 1, '', '', 'tzuser');
|
print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 1, 0, 'fulldayend', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuser') : 'tzuser');
|
||||||
} else {
|
} else {
|
||||||
print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 1, 0, 'fulldayend', '', '', '', 1, '', '', 'tzuser');
|
print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 1, 0, 'fulldayend', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuser') : 'tzuser');
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -1972,7 +1991,8 @@ if ($id > 0) {
|
|||||||
if (empty($object->fulldayevent)) {
|
if (empty($object->fulldayevent)) {
|
||||||
print dol_print_date($object->datep, 'dayhour', 'tzuser');
|
print dol_print_date($object->datep, 'dayhour', 'tzuser');
|
||||||
} else {
|
} else {
|
||||||
print dol_print_date($object->datep, 'day', 'tzuser');
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
|
print dol_print_date($object->datep, 'day', ($tzforfullday ? $tzforfullday : 'tzuser'));
|
||||||
}
|
}
|
||||||
if ($object->percentage == 0 && $object->datep && $object->datep < ($now - $delay_warning)) {
|
if ($object->percentage == 0 && $object->datep && $object->datep < ($now - $delay_warning)) {
|
||||||
print img_warning($langs->trans("Late"));
|
print img_warning($langs->trans("Late"));
|
||||||
@ -1985,7 +2005,8 @@ if ($id > 0) {
|
|||||||
if (empty($object->fulldayevent)) {
|
if (empty($object->fulldayevent)) {
|
||||||
print dol_print_date($object->datef, 'dayhour', 'tzuser');
|
print dol_print_date($object->datef, 'dayhour', 'tzuser');
|
||||||
} else {
|
} else {
|
||||||
print dol_print_date($object->datef, 'day', 'tzuser');
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
|
print dol_print_date($object->datef, 'day', ($tzforfullday ? $tzforfullday : 'tzuser'));
|
||||||
}
|
}
|
||||||
if ($object->percentage > 0 && $object->percentage < 100 && $object->datef && $object->datef < ($now - $delay_warning)) {
|
if ($object->percentage > 0 && $object->percentage < 100 && $object->datef && $object->datef < ($now - $delay_warning)) {
|
||||||
print img_warning($langs->trans("Late"));
|
print img_warning($langs->trans("Late"));
|
||||||
|
|||||||
@ -1955,14 +1955,14 @@ class ActionComm extends CommonObject
|
|||||||
$event = array();
|
$event = array();
|
||||||
$event['uid'] = 'dolibarragenda-'.$this->db->database_name.'-'.$obj->id."@".$_SERVER["SERVER_NAME"];
|
$event['uid'] = 'dolibarragenda-'.$this->db->database_name.'-'.$obj->id."@".$_SERVER["SERVER_NAME"];
|
||||||
$event['type'] = $type;
|
$event['type'] = $type;
|
||||||
|
|
||||||
$datestart = $this->db->jdate($obj->datep) - (empty($conf->global->AGENDA_EXPORT_FIX_TZ) ? 0 : ($conf->global->AGENDA_EXPORT_FIX_TZ * 3600));
|
$datestart = $this->db->jdate($obj->datep) - (empty($conf->global->AGENDA_EXPORT_FIX_TZ) ? 0 : ($conf->global->AGENDA_EXPORT_FIX_TZ * 3600));
|
||||||
|
|
||||||
// fix for -> Warning: A non-numeric value encountered
|
// fix for -> Warning: A non-numeric value encountered
|
||||||
if (is_numeric($this->db->jdate($obj->datep2))) {
|
if (is_numeric($this->db->jdate($obj->datep2))) {
|
||||||
$dateend = $this->db->jdate($obj->datep2)
|
$dateend = $this->db->jdate($obj->datep2) - (empty($conf->global->AGENDA_EXPORT_FIX_TZ) ? 0 : ($conf->global->AGENDA_EXPORT_FIX_TZ * 3600));
|
||||||
- (empty($conf->global->AGENDA_EXPORT_FIX_TZ) ? 0 : ($conf->global->AGENDA_EXPORT_FIX_TZ * 3600));
|
|
||||||
} else {
|
} else {
|
||||||
// use start date as fall-back to avoid import erros on empty end date
|
// use start date as fall-back to avoid pb with empty end date on ICS readers
|
||||||
$dateend = $datestart;
|
$dateend = $datestart;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -201,7 +201,8 @@ if ($object->id > 0) {
|
|||||||
if (empty($object->fulldayevent)) {
|
if (empty($object->fulldayevent)) {
|
||||||
print dol_print_date($object->datep, 'dayhour', 'tzuser');
|
print dol_print_date($object->datep, 'dayhour', 'tzuser');
|
||||||
} else {
|
} else {
|
||||||
print dol_print_date($object->datep, 'day', 'tzuser');
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
|
print dol_print_date($object->datep, 'day', ($tzforfullday ? $tzforfullday : 'tzuser'));
|
||||||
}
|
}
|
||||||
if ($object->percentage == 0 && $object->datep && $object->datep < ($now - $delay_warning)) {
|
if ($object->percentage == 0 && $object->datep && $object->datep < ($now - $delay_warning)) {
|
||||||
print img_warning($langs->trans("Late"));
|
print img_warning($langs->trans("Late"));
|
||||||
@ -214,7 +215,8 @@ if ($object->id > 0) {
|
|||||||
if (empty($object->fulldayevent)) {
|
if (empty($object->fulldayevent)) {
|
||||||
print dol_print_date($object->datef, 'dayhour', 'tzuser');
|
print dol_print_date($object->datef, 'dayhour', 'tzuser');
|
||||||
} else {
|
} else {
|
||||||
print dol_print_date($object->datef, 'day', 'tzuser');
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
|
print dol_print_date($object->datef, 'day', ($tzforfullday ? $tzforfullday : 'tzuser'));
|
||||||
}
|
}
|
||||||
if ($object->percentage > 0 && $object->percentage < 100 && $object->datef && $object->datef < ($now - $delay_warning)) {
|
if ($object->percentage > 0 && $object->percentage < 100 && $object->datef && $object->datef < ($now - $delay_warning)) {
|
||||||
print img_warning($langs->trans("Late"));
|
print img_warning($langs->trans("Late"));
|
||||||
|
|||||||
@ -545,7 +545,8 @@ if ($user->rights->agenda->myactions->create || $user->rights->agenda->allaction
|
|||||||
$newparam .= '&month='.((int) $month).'&year='.((int) $tmpforcreatebutton['year']).'&mode='.urlencode($mode);
|
$newparam .= '&month='.((int) $month).'&year='.((int) $tmpforcreatebutton['year']).'&mode='.urlencode($mode);
|
||||||
|
|
||||||
//$param='month='.$monthshown.'&year='.$year;
|
//$param='month='.$monthshown.'&year='.$year;
|
||||||
$hourminsec = '100000';
|
$hourminsec = dol_print_date(dol_mktime(10, 0, 0, 1, 1, 1970, 'gmt'), '%H', 'gmt').'0000'; // Set $hourminsec to '100000' to auto set hour to 10:00 at creation
|
||||||
|
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans("AddAction"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create&datep='.sprintf("%04d%02d%02d", $tmpforcreatebutton['year'], $tmpforcreatebutton['mon'], $tmpforcreatebutton['mday']).$hourminsec.'&backtopage='.urlencode($_SERVER["PHP_SELF"].($newparam ? '?'.$newparam : '')));
|
$newcardbutton .= dolGetButtonTitle($langs->trans("AddAction"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create&datep='.sprintf("%04d%02d%02d", $tmpforcreatebutton['year'], $tmpforcreatebutton['mon'], $tmpforcreatebutton['mday']).$hourminsec.'&backtopage='.urlencode($_SERVER["PHP_SELF"].($newparam ? '?'.$newparam : '')));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -808,11 +809,21 @@ if ($resql) {
|
|||||||
$event->id = $obj->id;
|
$event->id = $obj->id;
|
||||||
$event->ref = $event->id;
|
$event->ref = $event->id;
|
||||||
|
|
||||||
$event->datep = $db->jdate($obj->datep); // datep and datef are GMT date. Example: 1970-01-01 01:00:00, jdate will return 0 if TZ of PHP server is Europe/Berlin
|
$event->fulldayevent = $obj->fulldayevent;
|
||||||
$event->datef = $db->jdate($obj->datep2);
|
|
||||||
|
// event->datep and event->datef must be GMT date.
|
||||||
|
if ($event->fulldayevent) {
|
||||||
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
|
$event->datep = $db->jdate($obj->datep, $tzforfullday ? 'tzuser' : 'tzserver'); // If saved in $tzforfullday = gmt, we must invert date to be in user tz
|
||||||
|
$event->datef = $db->jdate($obj->datep2, $tzforfullday ? 'tzuser' : 'tzserver');
|
||||||
|
} else {
|
||||||
|
// Example: $obj->datep = '1970-01-01 01:00:00', jdate will return 0 if TZ of PHP server is Europe/Berlin (+1)
|
||||||
|
$event->datep = $db->jdate($obj->datep, 'tzserver');
|
||||||
|
$event->datef = $db->jdate($obj->datep2, 'tzserver');
|
||||||
|
}
|
||||||
//$event->datep_formated_gmt = dol_print_date($event->datep, 'dayhour', 'gmt');
|
//$event->datep_formated_gmt = dol_print_date($event->datep, 'dayhour', 'gmt');
|
||||||
//var_dump($obj->datep);
|
//var_dump($obj->id.' '.$obj->datep.' '.dol_print_date($obj->datep, 'dayhour', 'gmt'));
|
||||||
//var_dump($event->datep);
|
//var_dump($obj->id.' '.$event->datep.' '.dol_print_date($event->datep, 'dayhour', 'gmt'));
|
||||||
|
|
||||||
$event->type_code = $obj->type_code;
|
$event->type_code = $obj->type_code;
|
||||||
$event->type_label = $obj->type_label;
|
$event->type_label = $obj->type_label;
|
||||||
@ -829,7 +840,6 @@ if ($resql) {
|
|||||||
$event->fetch_userassigned(); // This load $event->userassigned
|
$event->fetch_userassigned(); // This load $event->userassigned
|
||||||
|
|
||||||
$event->priority = $obj->priority;
|
$event->priority = $obj->priority;
|
||||||
$event->fulldayevent = $obj->fulldayevent;
|
|
||||||
$event->location = $obj->location;
|
$event->location = $obj->location;
|
||||||
$event->transparency = $obj->transparency;
|
$event->transparency = $obj->transparency;
|
||||||
$event->fk_element = $obj->fk_element;
|
$event->fk_element = $obj->fk_element;
|
||||||
@ -865,25 +875,43 @@ if ($resql) {
|
|||||||
$annee = dol_print_date($daycursor, '%Y', 'tzuserrel');
|
$annee = dol_print_date($daycursor, '%Y', 'tzuserrel');
|
||||||
$mois = dol_print_date($daycursor, '%m', 'tzuserrel');
|
$mois = dol_print_date($daycursor, '%m', 'tzuserrel');
|
||||||
$jour = dol_print_date($daycursor, '%d', 'tzuserrel');
|
$jour = dol_print_date($daycursor, '%d', 'tzuserrel');
|
||||||
|
|
||||||
|
$daycursorend = $event->date_end_in_calendar;
|
||||||
|
$anneeend = dol_print_date($daycursorend, '%Y', 'tzuserrel');
|
||||||
|
$moisend = dol_print_date($daycursorend, '%m', 'tzuserrel');
|
||||||
|
$jourend = dol_print_date($daycursorend, '%d', 'tzuserrel');
|
||||||
|
|
||||||
//var_dump(dol_print_date($event->date_start_in_calendar, 'dayhour', 'gmt')); // Hour at greenwich
|
//var_dump(dol_print_date($event->date_start_in_calendar, 'dayhour', 'gmt')); // Hour at greenwich
|
||||||
//var_dump($annee.'-'.$mois.'-'.$jour);
|
//var_dump($annee.'-'.$mois.'-'.$jour);
|
||||||
|
//print 'annee='.$annee.' mois='.$mois.' jour='.$jour.'<br>';
|
||||||
|
|
||||||
// Loop on each day covered by action to prepare an index to show on calendar
|
// Loop on each day covered by action to prepare an index to show on calendar
|
||||||
$loop = true; $j = 0;
|
$loop = true; $j = 0;
|
||||||
$daykey = dol_mktime(0, 0, 0, $mois, $jour, $annee, 'gmt');
|
$daykey = dol_mktime(0, 0, 0, $mois, $jour, $annee, 'gmt'); // $mois, $jour, $annee has been set for user tz
|
||||||
|
$daykeyend = dol_mktime(0, 0, 0, $moisend, $jourend, $anneeend, 'gmt'); // $moisend, $jourend, $anneeend has been set for user tz
|
||||||
|
/*
|
||||||
|
print 'GMT '.$event->date_start_in_calendar.' '.dol_print_date($event->date_start_in_calendar, 'dayhour', 'gmt').'<br>';
|
||||||
|
print 'TZSERVER '.$event->date_start_in_calendar.' '.dol_print_date($event->date_start_in_calendar, 'dayhour', 'tzserver').'<br>';
|
||||||
|
print 'TZUSERREL '.$event->date_start_in_calendar.' '.dol_print_date($event->date_start_in_calendar, 'dayhour', 'tzuserrel').'<br>';
|
||||||
|
print 'GMT '.$event->date_end_in_calendar.' '.dol_print_date($event->date_end_in_calendar, 'dayhour', 'gmt').'<br>';
|
||||||
|
print 'TZSERVER '.$event->date_end_in_calendar.' '.dol_print_date($event->date_end_in_calendar, 'dayhour', 'tzserver').'<br>';
|
||||||
|
print 'TZUSER '.$event->date_end_in_calendar.' '.dol_print_date($event->date_end_in_calendar, 'dayhour', 'tzuserrel').'<br>';
|
||||||
|
*/
|
||||||
do {
|
do {
|
||||||
//if ($event->id==408)
|
//if ($event->id==408)
|
||||||
//print 'daykey='.$daykey.' '.dol_print_date($daykey, 'dayhour', 'gmt').' '.$event->datep.' '.$event->datef.'<br>';
|
//print 'daykey='.$daykey.' daykeyend='.$daykeyend.' '.dol_print_date($daykey, 'dayhour', 'gmt').' - '.dol_print_date($event->datep, 'dayhour', 'gmt').' '.dol_print_date($event->datef, 'dayhour', 'gmt').'<br>';
|
||||||
|
//print 'daykey='.$daykey.' daykeyend='.$daykeyend.' '.dol_print_date($daykey, 'dayhour', 'tzuserrel').' - '.dol_print_date($event->datep, 'dayhour', 'tzuserrel').' '.dol_print_date($event->datef, 'dayhour', 'tzuserrel').'<br>';
|
||||||
|
|
||||||
$eventarray[$daykey][] = $event;
|
$eventarray[$daykey][] = $event;
|
||||||
$j++;
|
$j++;
|
||||||
|
|
||||||
$daykey += 60 * 60 * 24;
|
$daykey += 60 * 60 * 24;
|
||||||
if ($daykey > $event->date_end_in_calendar) {
|
//if ($daykey > $event->date_end_in_calendar) {
|
||||||
|
if ($daykey > $daykeyend) {
|
||||||
$loop = false;
|
$loop = false;
|
||||||
}
|
}
|
||||||
} while ($loop);
|
} while ($loop);
|
||||||
|
//var_dump($eventarray);
|
||||||
//print 'Event '.$i.' id='.$event->id.' (start='.dol_print_date($event->datep).'-end='.dol_print_date($event->datef);
|
//print 'Event '.$i.' id='.$event->id.' (start='.dol_print_date($event->datep).'-end='.dol_print_date($event->datef);
|
||||||
//print ' startincalendar='.dol_print_date($event->date_start_in_calendar).'-endincalendar='.dol_print_date($event->date_end_in_calendar).') was added in '.$j.' different index key of array<br>';
|
//print ' startincalendar='.dol_print_date($event->date_start_in_calendar).'-endincalendar='.dol_print_date($event->date_end_in_calendar).') was added in '.$j.' different index key of array<br>';
|
||||||
}
|
}
|
||||||
@ -1805,12 +1833,16 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
|
|||||||
$cssclass .= " unmovable";
|
$cssclass .= " unmovable";
|
||||||
} elseif ($event->type_code == 'ICALEVENT') {
|
} elseif ($event->type_code == 'ICALEVENT') {
|
||||||
$cssclass .= " unmovable";
|
$cssclass .= " unmovable";
|
||||||
} elseif ($event->date_end_in_calendar && date('Ymd', $event->date_start_in_calendar) != date('Ymd', $event->date_end_in_calendar)) {
|
} elseif ($event->date_start_in_calendar && $event->date_end_in_calendar && date('Ymd', $event->date_start_in_calendar) != date('Ymd', $event->date_end_in_calendar)) {
|
||||||
$tmpyearend = date('Y', $event->date_end_in_calendar);
|
// If the event is on several days
|
||||||
$tmpmonthend = date('m', $event->date_end_in_calendar);
|
$tmpyearend = dol_print_date($event->date_start_in_calendar, '%Y', 'tzuserrel');
|
||||||
$tmpdayend = date('d', $event->date_end_in_calendar);
|
$tmpmonthend = dol_print_date($event->date_start_in_calendar, '%m', 'tzuserrel');
|
||||||
|
$tmpdayend = dol_print_date($event->date_start_in_calendar, '%d', 'tzuserrel');
|
||||||
|
//var_dump($tmpyearend.' '.$tmpmonthend.' '.$tmpdayend);
|
||||||
if ($tmpyearend != $annee || $tmpmonthend != $mois || $tmpdayend != $jour) {
|
if ($tmpyearend != $annee || $tmpmonthend != $mois || $tmpdayend != $jour) {
|
||||||
$cssclass .= " unmovable";
|
$cssclass .= " unmovable unmovable-mustusefirstdaytodrag";
|
||||||
|
} else {
|
||||||
|
$cssclass .= ' movable cursormove';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($user->rights->agenda->allactions->create ||
|
if ($user->rights->agenda->allactions->create ||
|
||||||
|
|||||||
@ -693,7 +693,7 @@ $tmpforcreatebutton = dol_getdate(dol_now(), true);
|
|||||||
$newparam = '&month='.str_pad($month, 2, "0", STR_PAD_LEFT).'&year='.$tmpforcreatebutton['year'];
|
$newparam = '&month='.str_pad($month, 2, "0", STR_PAD_LEFT).'&year='.$tmpforcreatebutton['year'];
|
||||||
|
|
||||||
//$param='month='.$monthshown.'&year='.$year;
|
//$param='month='.$monthshown.'&year='.$year;
|
||||||
$hourminsec = '100000';
|
$hourminsec = dol_print_date(dol_mktime(10, 0, 0, 1, 1, 1970, 'gmt'), '%H', 'gmt').'0000'; // Set $hourminsec to '100000' to auto set hour to 10:00 at creation
|
||||||
|
|
||||||
$url = DOL_URL_ROOT.'/comm/action/card.php?action=create';
|
$url = DOL_URL_ROOT.'/comm/action/card.php?action=create';
|
||||||
$url .= '&datep='.sprintf("%04d%02d%02d", $tmpforcreatebutton['year'], $tmpforcreatebutton['mon'], $tmpforcreatebutton['mday']).$hourminsec;
|
$url .= '&datep='.sprintf("%04d%02d%02d", $tmpforcreatebutton['year'], $tmpforcreatebutton['mon'], $tmpforcreatebutton['mday']).$hourminsec;
|
||||||
@ -953,7 +953,12 @@ while ($i < min($num, $limit)) {
|
|||||||
// Start date
|
// Start date
|
||||||
if (!empty($arrayfields['a.datep']['checked'])) {
|
if (!empty($arrayfields['a.datep']['checked'])) {
|
||||||
print '<td class="center nowraponall">';
|
print '<td class="center nowraponall">';
|
||||||
print dol_print_date($db->jdate($obj->dp), $formatToUse, 'tzuser');
|
if (empty($obj->fulldayevent)) {
|
||||||
|
print dol_print_date($db->jdate($obj->dp), $formatToUse, 'tzuser');
|
||||||
|
} else {
|
||||||
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
|
print dol_print_date($db->jdate($obj->dp), $formatToUse, ($tzforfullday ? $tzforfullday : 'tzuser'));
|
||||||
|
}
|
||||||
$late = 0;
|
$late = 0;
|
||||||
if ($actionstatic->hasDelay() && $actionstatic->percentage >= 0 && $actionstatic->percentage < 100 ) {
|
if ($actionstatic->hasDelay() && $actionstatic->percentage >= 0 && $actionstatic->percentage < 100 ) {
|
||||||
$late = 1;
|
$late = 1;
|
||||||
@ -967,7 +972,12 @@ while ($i < min($num, $limit)) {
|
|||||||
// End date
|
// End date
|
||||||
if (!empty($arrayfields['a.datep2']['checked'])) {
|
if (!empty($arrayfields['a.datep2']['checked'])) {
|
||||||
print '<td class="center nowraponall">';
|
print '<td class="center nowraponall">';
|
||||||
print dol_print_date($db->jdate($obj->dp2), $formatToUse, 'tzuser');
|
if (empty($obj->fulldayevent)) {
|
||||||
|
print dol_print_date($db->jdate($obj->dp2), $formatToUse, 'tzuser');
|
||||||
|
} else {
|
||||||
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
|
print dol_print_date($db->jdate($obj->dp2), $formatToUse, ($tzforfullday ? $tzforfullday : 'tzuser'));
|
||||||
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2543,7 +2543,7 @@ if ($action == 'create') {
|
|||||||
if (($object->statut == Propal::STATUS_DRAFT && $object->total_ttc >= 0 && count($object->lines) > 0)
|
if (($object->statut == Propal::STATUS_DRAFT && $object->total_ttc >= 0 && count($object->lines) > 0)
|
||||||
|| ($object->statut == Propal::STATUS_DRAFT && !empty($conf->global->PROPAL_ENABLE_NEGATIVE) && count($object->lines) > 0)) {
|
|| ($object->statut == Propal::STATUS_DRAFT && !empty($conf->global->PROPAL_ENABLE_NEGATIVE) && count($object->lines) > 0)) {
|
||||||
if ($usercanvalidate) {
|
if ($usercanvalidate) {
|
||||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=validate">'.$langs->trans('Validate').'</a>';
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=validate&token='.newToken().'">'.$langs->trans('Validate').'</a>';
|
||||||
} else {
|
} else {
|
||||||
print '<a class="butActionRefused classfortooltip" href="#">'.$langs->trans('Validate').'</a>';
|
print '<a class="butActionRefused classfortooltip" href="#">'.$langs->trans('Validate').'</a>';
|
||||||
}
|
}
|
||||||
@ -2555,7 +2555,7 @@ if ($action == 'create') {
|
|||||||
}*/
|
}*/
|
||||||
// Edit
|
// Edit
|
||||||
if ($object->statut == Propal::STATUS_VALIDATED && $usercancreate) {
|
if ($object->statut == Propal::STATUS_VALIDATED && $usercancreate) {
|
||||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=modif">'.$langs->trans('Modify').'</a>';
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=modif&token='.newToken().'">'.$langs->trans('Modify').'</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReOpen
|
// ReOpen
|
||||||
@ -2578,7 +2578,7 @@ if ($action == 'create') {
|
|||||||
// Create a sale order
|
// Create a sale order
|
||||||
if (!empty($conf->commande->enabled) && $object->statut == Propal::STATUS_SIGNED) {
|
if (!empty($conf->commande->enabled) && $object->statut == Propal::STATUS_SIGNED) {
|
||||||
if ($usercancreateorder) {
|
if ($usercancreateorder) {
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/commande/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("AddOrder").'</a>';
|
print '<a class="butAction" href="'.DOL_URL_ROOT.'/commande/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("AddOrder").'</a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2586,7 +2586,7 @@ if ($action == 'create') {
|
|||||||
if (!empty($conf->global->WORKFLOW_CAN_CREATE_PURCHASE_ORDER_FROM_PROPOSAL)) {
|
if (!empty($conf->global->WORKFLOW_CAN_CREATE_PURCHASE_ORDER_FROM_PROPOSAL)) {
|
||||||
if ($object->statut == Propal::STATUS_SIGNED && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled))) {
|
if ($object->statut == Propal::STATUS_SIGNED && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled))) {
|
||||||
if ($usercancreatepurchaseorder) {
|
if ($usercancreatepurchaseorder) {
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/fourn/commande/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("AddPurchaseOrder").'</a>';
|
print '<a class="butAction" href="'.DOL_URL_ROOT.'/fourn/commande/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("AddPurchaseOrder").'</a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2595,7 +2595,7 @@ if ($action == 'create') {
|
|||||||
if (!empty($conf->service->enabled) && !empty($conf->ficheinter->enabled) && $object->statut == Propal::STATUS_SIGNED) {
|
if (!empty($conf->service->enabled) && !empty($conf->ficheinter->enabled) && $object->statut == Propal::STATUS_SIGNED) {
|
||||||
if ($usercancreateintervention) {
|
if ($usercancreateintervention) {
|
||||||
$langs->load("interventions");
|
$langs->load("interventions");
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/fichinter/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("AddIntervention").'</a>';
|
print '<a class="butAction" href="'.DOL_URL_ROOT.'/fichinter/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("AddIntervention").'</a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2604,14 +2604,14 @@ if ($action == 'create') {
|
|||||||
$langs->load("contracts");
|
$langs->load("contracts");
|
||||||
|
|
||||||
if ($usercancreatecontract) {
|
if ($usercancreatecontract) {
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/contrat/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans('AddContract').'</a>';
|
print '<a class="butAction" href="'.DOL_URL_ROOT.'/contrat/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans('AddContract').'</a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create an invoice and classify billed
|
// Create an invoice and classify billed
|
||||||
if ($object->statut == Propal::STATUS_SIGNED && empty($conf->global->PROPOSAL_ARE_NOT_BILLABLE)) {
|
if ($object->statut == Propal::STATUS_SIGNED && empty($conf->global->PROPOSAL_ARE_NOT_BILLABLE)) {
|
||||||
if (!empty($conf->facture->enabled) && $usercancreateinvoice) {
|
if (!empty($conf->facture->enabled) && $usercancreateinvoice) {
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/facture/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("CreateBill").'</a>';
|
print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/facture/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("CreateBill").'</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$arrayofinvoiceforpropal = $object->getInvoiceArrayList();
|
$arrayofinvoiceforpropal = $object->getInvoiceArrayList();
|
||||||
|
|||||||
@ -192,6 +192,7 @@ $limit = 5;
|
|||||||
$sql = "SELECT p.rowid, p.ref, p.amount, p.datec, p.statut";
|
$sql = "SELECT p.rowid, p.ref, p.amount, p.datec, p.statut";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
|
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
|
||||||
$sql .= " WHERE p.type = 'bank-transfer'";
|
$sql .= " WHERE p.type = 'bank-transfer'";
|
||||||
|
$sql .= " AND p.entity IN (".getEntity('invoice').")";
|
||||||
$sql .= " ORDER BY datec DESC";
|
$sql .= " ORDER BY datec DESC";
|
||||||
$sql .= $db->plimit($limit);
|
$sql .= $db->plimit($limit);
|
||||||
|
|
||||||
|
|||||||
@ -262,12 +262,20 @@ if ($id) {
|
|||||||
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
|
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
|
||||||
$sql .= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl";
|
$sql .= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl";
|
||||||
$sql .= " , ".MAIN_DB_PREFIX."prelevement_facture as pf";
|
$sql .= " , ".MAIN_DB_PREFIX."prelevement_facture as pf";
|
||||||
$sql .= " , ".MAIN_DB_PREFIX."facture as f";
|
if ($type == 'bank-transfer') {
|
||||||
|
$sql .= " , ".MAIN_DB_PREFIX."facture_fourn as f";
|
||||||
|
} else {
|
||||||
|
$sql .= " , ".MAIN_DB_PREFIX."facture as f";
|
||||||
|
}
|
||||||
$sql .= " , ".MAIN_DB_PREFIX."societe as s";
|
$sql .= " , ".MAIN_DB_PREFIX."societe as s";
|
||||||
$sql .= " WHERE pf.fk_prelevement_lignes = pl.rowid";
|
$sql .= " WHERE pf.fk_prelevement_lignes = pl.rowid";
|
||||||
$sql .= " AND pl.fk_prelevement_bons = p.rowid";
|
$sql .= " AND pl.fk_prelevement_bons = p.rowid";
|
||||||
$sql .= " AND f.fk_soc = s.rowid";
|
$sql .= " AND f.fk_soc = s.rowid";
|
||||||
$sql .= " AND pf.fk_facture = f.rowid";
|
if ($type == 'bank-transfer') {
|
||||||
|
$sql .= " AND pf.fk_facture_fourn = f.rowid";
|
||||||
|
} else {
|
||||||
|
$sql .= " AND pf.fk_facture = f.rowid";
|
||||||
|
}
|
||||||
$sql .= " AND f.entity IN (".getEntity('invoice').")";
|
$sql .= " AND f.entity IN (".getEntity('invoice').")";
|
||||||
$sql .= " AND pl.rowid = ".((int) $id);
|
$sql .= " AND pl.rowid = ".((int) $id);
|
||||||
if ($socid) {
|
if ($socid) {
|
||||||
|
|||||||
@ -244,6 +244,7 @@ class box_members_by_type extends ModeleBoxes
|
|||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$this->info_box_contents[$line][] = array(
|
$this->info_box_contents[$line][] = array(
|
||||||
|
'tr' => 'class="liste_total"',
|
||||||
'td' => 'class="liste_total"',
|
'td' => 'class="liste_total"',
|
||||||
'text' => $langs->trans("Total")
|
'text' => $langs->trans("Total")
|
||||||
);
|
);
|
||||||
|
|||||||
@ -196,6 +196,7 @@ class box_members_subscriptions_by_year extends ModeleBoxes
|
|||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$this->info_box_contents[$line][] = array(
|
$this->info_box_contents[$line][] = array(
|
||||||
|
'tr' => 'class="liste_total"',
|
||||||
'td' => 'class="liste_total"',
|
'td' => 'class="liste_total"',
|
||||||
'text' => $langs->trans("Total"),
|
'text' => $langs->trans("Total"),
|
||||||
);
|
);
|
||||||
|
|||||||
@ -1106,13 +1106,13 @@ class Form
|
|||||||
}
|
}
|
||||||
|
|
||||||
print '<option value="0"';
|
print '<option value="0"';
|
||||||
if (0 == $selected) {
|
if (0 == $selected || ($selected == -1 && getDolGlobalString('MAIN_FREE_PRODUCT_CHECKED_BY_DEFAULT') == 'product')) {
|
||||||
print ' selected';
|
print ' selected';
|
||||||
}
|
}
|
||||||
print '>'.$langs->trans("Product");
|
print '>'.$langs->trans("Product");
|
||||||
|
|
||||||
print '<option value="1"';
|
print '<option value="1"';
|
||||||
if (1 == $selected) {
|
if (1 == $selected || ($selected == -1 && getDolGlobalString('MAIN_FREE_PRODUCT_CHECKED_BY_DEFAULT') == 'service')) {
|
||||||
print ' selected';
|
print ' selected';
|
||||||
}
|
}
|
||||||
print '>'.$langs->trans("Service");
|
print '>'.$langs->trans("Service");
|
||||||
|
|||||||
@ -302,8 +302,8 @@ abstract class DoliDB implements Database
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert (by PHP) a PHP server TZ string date into a Timestamps date (GMT if gm=true)
|
* Convert (by PHP) a PHP server TZ string date into a Timestamps date (GMT if gm=true)
|
||||||
* 19700101020000 -> 3600 with TZ+1 and gmt=0
|
* 19700101020000 -> 3600 with server TZ = +1 and $gm='tzserver'
|
||||||
* 19700101020000 -> 7200 whaterver is TZ if gmt=1
|
* 19700101020000 -> 7200 whaterver is server TZ if $gm='gmt'
|
||||||
*
|
*
|
||||||
* @param string $string Date in a string (YYYYMMDDHHMMSS, YYYYMMDD, YYYY-MM-DD HH:MM:SS)
|
* @param string $string Date in a string (YYYYMMDDHHMMSS, YYYYMMDD, YYYY-MM-DD HH:MM:SS)
|
||||||
* @param mixed $gm 'gmt'=Input informations are GMT values, 'tzserver'=Local to server TZ
|
* @param mixed $gm 'gmt'=Input informations are GMT values, 'tzserver'=Local to server TZ
|
||||||
|
|||||||
@ -26,7 +26,8 @@
|
|||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
|
|
||||||
var timezone = jstz.determine();
|
var timezone = jstz.determine();
|
||||||
|
console.log("Timezone detected for user: "+timezone.name());
|
||||||
|
|
||||||
// Detect and save TZ and DST
|
// Detect and save TZ and DST
|
||||||
var rightNow = new Date();
|
var rightNow = new Date();
|
||||||
var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);
|
var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);
|
||||||
|
|||||||
@ -357,18 +357,18 @@ function dolSqlDateFilter($datefield, $day_date, $month_date, $year_date, $exclu
|
|||||||
* Convert a string date into a GM Timestamps date
|
* Convert a string date into a GM Timestamps date
|
||||||
* Warning: YYYY-MM-DDTHH:MM:SS+02:00 (RFC3339) is not supported. If parameter gm is 1, we will use no TZ, if not we will use TZ of server, not the one inside string.
|
* Warning: YYYY-MM-DDTHH:MM:SS+02:00 (RFC3339) is not supported. If parameter gm is 1, we will use no TZ, if not we will use TZ of server, not the one inside string.
|
||||||
*
|
*
|
||||||
* @param string $string Date in a string
|
* @param string $string Date in a string
|
||||||
* YYYYMMDD
|
* YYYYMMDD
|
||||||
* YYYYMMDDHHMMSS
|
* YYYYMMDDHHMMSS
|
||||||
* YYYYMMDDTHHMMSSZ
|
* YYYYMMDDTHHMMSSZ
|
||||||
* YYYY-MM-DDTHH:MM:SSZ (RFC3339)
|
* YYYY-MM-DDTHH:MM:SSZ (RFC3339)
|
||||||
* DD/MM/YY or DD/MM/YYYY (deprecated)
|
* DD/MM/YY or DD/MM/YYYY (deprecated)
|
||||||
* DD/MM/YY HH:MM:SS or DD/MM/YYYY HH:MM:SS (deprecated)
|
* DD/MM/YY HH:MM:SS or DD/MM/YYYY HH:MM:SS (deprecated)
|
||||||
* @param int $gm 1 =Input date is GM date,
|
* @param int|string $gm 'gmt' or 1 =Input date is GM date,
|
||||||
* 0 =Input date is local date using PHP server timezone
|
* 'tzserver' or 0 =Input date is date using PHP server timezone
|
||||||
* @return int Date as a timestamp
|
* @return int Date as a timestamp
|
||||||
* 19700101020000 -> 7200 with gm=1
|
* 19700101020000 -> 7200 with gm=1
|
||||||
* 19700101000000 -> 0 with gm=1
|
* 19700101000000 -> 0 with gm=1
|
||||||
*
|
*
|
||||||
* @see dol_print_date(), dol_mktime(), dol_getdate()
|
* @see dol_print_date(), dol_mktime(), dol_getdate()
|
||||||
*/
|
*/
|
||||||
@ -408,7 +408,14 @@ function dol_stringtotime($string, $gm = 1)
|
|||||||
|
|
||||||
$string = preg_replace('/([^0-9])/i', '', $string);
|
$string = preg_replace('/([^0-9])/i', '', $string);
|
||||||
$tmp = $string.'000000';
|
$tmp = $string.'000000';
|
||||||
$date = dol_mktime(substr($tmp, 8, 2), substr($tmp, 10, 2), substr($tmp, 12, 2), substr($tmp, 4, 2), substr($tmp, 6, 2), substr($tmp, 0, 4), ($gm ? 1 : 0));
|
// Clean $gm
|
||||||
|
if ($gm === 1) {
|
||||||
|
$gm = 'gmt';
|
||||||
|
} elseif (empty($gm) || $gm === 'tzserver') {
|
||||||
|
$gm = 'tzserver';
|
||||||
|
}
|
||||||
|
|
||||||
|
$date = dol_mktime(substr($tmp, 8, 2), substr($tmp, 10, 2), substr($tmp, 12, 2), substr($tmp, 4, 2), substr($tmp, 6, 2), substr($tmp, 0, 4), $gm);
|
||||||
return $date;
|
return $date;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2573,11 +2573,11 @@ function dol_mktime($hour, $minute, $second, $month, $day, $year, $gm = 'auto',
|
|||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
//print "- ".$hour.",".$minute.",".$second.",".$month.",".$day.",".$year.",".$_SERVER["WINDIR"]." -";
|
//print "- ".$hour.",".$minute.",".$second.",".$month.",".$day.",".$year.",".$_SERVER["WINDIR"]." -";
|
||||||
//print 'gm:'.$gm.' gm==auto:'.($gm == 'auto').'<br>';
|
|
||||||
|
|
||||||
if ($gm === 'auto') {
|
if ($gm === 'auto') {
|
||||||
$gm = (empty($conf) ? 'tzserver' : $conf->tzuserinputkey);
|
$gm = (empty($conf) ? 'tzserver' : $conf->tzuserinputkey);
|
||||||
}
|
}
|
||||||
|
//print 'gm:'.$gm.' gm === auto:'.($gm === 'auto').'<br>';exit;
|
||||||
|
|
||||||
// Clean parameters
|
// Clean parameters
|
||||||
if ($hour == -1 || empty($hour)) {
|
if ($hour == -1 || empty($hour)) {
|
||||||
|
|||||||
@ -100,6 +100,7 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile)
|
|||||||
$created = $event["created"];
|
$created = $event["created"];
|
||||||
$modified = $event["modified"];
|
$modified = $event["modified"];
|
||||||
$assignedUsers = $event["assignedUsers"];
|
$assignedUsers = $event["assignedUsers"];
|
||||||
|
//print $fulldayevent.' '.dol_print_date($startdate, 'dayhour', 'gmt');
|
||||||
|
|
||||||
// Format
|
// Format
|
||||||
$summary = format_cal($format, $summary);
|
$summary = format_cal($format, $summary);
|
||||||
@ -191,16 +192,16 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile)
|
|||||||
|
|
||||||
// Date must be GMT dates
|
// Date must be GMT dates
|
||||||
// Current date
|
// Current date
|
||||||
fwrite($calfileh, "DTSTAMP:".dol_print_date($now, "dayhourxcard", true)."\n");
|
fwrite($calfileh, "DTSTAMP:".dol_print_date($now, "dayhourxcard", 'gmt')."\n");
|
||||||
|
|
||||||
// Start date
|
// Start date
|
||||||
$prefix = "";
|
$prefix = "";
|
||||||
$startdatef = dol_print_date($startdate, "dayhourxcard", true);
|
$startdatef = dol_print_date($startdate, "dayhourxcard", 'gmt');
|
||||||
|
|
||||||
if ($fulldayevent) {
|
if ($fulldayevent) {
|
||||||
// Local time
|
// Local time
|
||||||
$prefix = ";VALUE=DATE";
|
$prefix = ";VALUE=DATE";
|
||||||
$startdatef = dol_print_date($startdate, "dayxcard", false);
|
$startdatef = dol_print_date($startdate, "dayxcard", 'gmt');
|
||||||
}
|
}
|
||||||
|
|
||||||
fwrite($calfileh, "DTSTART".$prefix.":".$startdatef."\n");
|
fwrite($calfileh, "DTSTART".$prefix.":".$startdatef."\n");
|
||||||
@ -208,6 +209,9 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile)
|
|||||||
// End date
|
// End date
|
||||||
if ($fulldayevent) {
|
if ($fulldayevent) {
|
||||||
if (empty($enddate)) {
|
if (empty($enddate)) {
|
||||||
|
// We add 1 day needed for full day event (DTEND must be next day after event).
|
||||||
|
// This is mention in https://datatracker.ietf.org/doc/html/rfc5545:
|
||||||
|
// "The "DTEND" property for a "VEVENT" calendar component specifies the non-inclusive end of the event."
|
||||||
$enddate = dol_time_plus_duree($startdate, 1, "d");
|
$enddate = dol_time_plus_duree($startdate, 1, "d");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -217,14 +221,14 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile)
|
|||||||
}
|
}
|
||||||
|
|
||||||
$prefix = "";
|
$prefix = "";
|
||||||
$enddatef = dol_print_date($enddate, "dayhourxcard", true);
|
$enddatef = dol_print_date($enddate, "dayhourxcard", 'gmt');
|
||||||
|
|
||||||
if ($fulldayevent) {
|
if ($fulldayevent) {
|
||||||
$prefix = ";VALUE=DATE";
|
$prefix = ";VALUE=DATE";
|
||||||
$enddatef = dol_print_date($enddate + 1, "dayxcard", false);
|
// We add 1 second so we reach the +1 day needed for full day event (DTEND must be next day after event)
|
||||||
|
// This is mention in https://datatracker.ietf.org/doc/html/rfc5545:
|
||||||
// Local time
|
// "The "DTEND" property for a "VEVENT" calendar component specifies the non-inclusive end of the event."
|
||||||
//$enddatef .= dol_print_date($enddate+1,"dayhourxcard",false);
|
$enddatef = dol_print_date($enddate + 1, "dayxcard", 'gmt');
|
||||||
}
|
}
|
||||||
|
|
||||||
fwrite($calfileh, "DTEND".$prefix.":".$enddatef."\n");
|
fwrite($calfileh, "DTEND".$prefix.":".$enddatef."\n");
|
||||||
@ -256,11 +260,11 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($created) {
|
if ($created) {
|
||||||
fwrite($calfileh, "CREATED:".dol_print_date($created, "dayhourxcard", true)."\n");
|
fwrite($calfileh, "CREATED:".dol_print_date($created, "dayhourxcard", 'gmt')."\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($modified) {
|
if ($modified) {
|
||||||
fwrite($calfileh, "LAST-MODIFIED:".dol_print_date($modified, "dayhourxcard", true)."\n");
|
fwrite($calfileh, "LAST-MODIFIED:".dol_print_date($modified, "dayhourxcard", 'gmt')."\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
fwrite($calfileh, "SUMMARY:".$encoding.$summary."\n");
|
fwrite($calfileh, "SUMMARY:".$encoding.$summary."\n");
|
||||||
@ -270,7 +274,7 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile)
|
|||||||
fwrite($calfileh, "LOCATION:".$location."\n");
|
fwrite($calfileh, "LOCATION:".$location."\n");
|
||||||
fwrite($calfileh, "TRANSP:OPAQUE\n");
|
fwrite($calfileh, "TRANSP:OPAQUE\n");
|
||||||
fwrite($calfileh, "CLASS:CONFIDENTIAL\n");
|
fwrite($calfileh, "CLASS:CONFIDENTIAL\n");
|
||||||
fwrite($calfileh, "DTSTAMP:".dol_print_date($startdatef, "dayhourxcard", true)."\n");
|
fwrite($calfileh, "DTSTAMP:".dol_print_date($startdatef, "dayhourxcard", 'gmt')."\n");
|
||||||
|
|
||||||
fwrite($calfileh, "END:VJOURNAL\n");
|
fwrite($calfileh, "END:VJOURNAL\n");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -136,7 +136,7 @@ $(document).ready(function () {
|
|||||||
<input type="hidden" name="token" value="<?php echo newToken(); ?>" />
|
<input type="hidden" name="token" value="<?php echo newToken(); ?>" />
|
||||||
<input type="hidden" name="actionlogin" value="login">
|
<input type="hidden" name="actionlogin" value="login">
|
||||||
<input type="hidden" name="loginfunction" value="loginfunction" />
|
<input type="hidden" name="loginfunction" value="loginfunction" />
|
||||||
<!-- Add fields to send local user information -->
|
<!-- Add fields to store and send local user information. This fields are filled by the core/js/dst.js -->
|
||||||
<input type="hidden" name="tz" id="tz" value="" />
|
<input type="hidden" name="tz" id="tz" value="" />
|
||||||
<input type="hidden" name="tz_string" id="tz_string" value="" />
|
<input type="hidden" name="tz_string" id="tz_string" value="" />
|
||||||
<input type="hidden" name="dst_observed" id="dst_observed" value="" />
|
<input type="hidden" name="dst_observed" id="dst_observed" value="" />
|
||||||
|
|||||||
@ -189,18 +189,13 @@ if ($object->id > 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
print '<div class="tabsAction">';
|
|
||||||
|
|
||||||
if (!empty($conf->agenda->enabled)) {
|
if (!empty($conf->agenda->enabled)) {
|
||||||
if (!empty($user->rights->agenda->myactions->create) || !empty($user->rights->agenda->allactions->create)) {
|
if (!empty($user->rights->agenda->myactions->create) || !empty($user->rights->agenda->allactions->create)) {
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out.'">'.$langs->trans("AddAction").'</a>';
|
$newcardbutton = '';
|
||||||
} else {
|
$newcardbutton .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out);
|
||||||
print '<a class="butActionRefused classfortooltip" href="#">'.$langs->trans("AddAction").'</a>';
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
if (!empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) {
|
if (!empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) {
|
||||||
$param = '&id='.$object->id.'&socid='.$socid;
|
$param = '&id='.$object->id.'&socid='.$socid;
|
||||||
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
||||||
@ -211,7 +206,7 @@ if ($object->id > 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//print load_fiche_titre($langs->trans("ActionsOnJob"), '', '');
|
print load_fiche_titre($langs->trans("ActionsOnJob"), $newcardbutton, '');
|
||||||
|
|
||||||
// List of all actions
|
// List of all actions
|
||||||
$filters = array();
|
$filters = array();
|
||||||
|
|||||||
@ -62,24 +62,24 @@ MainAccountForSubscriptionPaymentNotDefined=Main accounting account for subscrip
|
|||||||
AccountancyArea=Accounting area
|
AccountancyArea=Accounting area
|
||||||
AccountancyAreaDescIntro=Usage of the accountancy module is done in several step:
|
AccountancyAreaDescIntro=Usage of the accountancy module is done in several step:
|
||||||
AccountancyAreaDescActionOnce=The following actions are usually executed one time only, or once per year...
|
AccountancyAreaDescActionOnce=The following actions are usually executed one time only, or once per year...
|
||||||
AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in future by suggesting you the correct default accounting account when making the journalization (writing record in Journals and General ledger)
|
AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in future by suggesting you automaticaly the correct default accounting account when transferring data in accounting
|
||||||
AccountancyAreaDescActionFreq=The following actions are usually executed every month, week or day for very large companies...
|
AccountancyAreaDescActionFreq=The following actions are usually executed every month, week or day for very large companies...
|
||||||
|
|
||||||
AccountancyAreaDescJournalSetup=STEP %s: Create or check content of your journal list from menu %s
|
AccountancyAreaDescJournalSetup=STEP %s: Check content of your journal list from menu %s
|
||||||
AccountancyAreaDescChartModel=STEP %s: Check that a model of chart of account exists or create one from menu %s
|
AccountancyAreaDescChartModel=STEP %s: Check that a model of chart of account exists or create one from menu %s
|
||||||
AccountancyAreaDescChart=STEP %s: Select and|or complete your chart of account from menu %s
|
AccountancyAreaDescChart=STEP %s: Select and|or complete your chart of account from menu %s
|
||||||
|
|
||||||
AccountancyAreaDescVat=STEP %s: Define accounting accounts for each VAT Rates. For this, use the menu entry %s.
|
AccountancyAreaDescVat=STEP %s: Define accounting accounts for each VAT Rates. For this, use the menu entry %s.
|
||||||
AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s.
|
AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s.
|
||||||
AccountancyAreaDescExpenseReport=STEP %s: Define default accounting accounts for each type of expense report. For this, use the menu entry %s.
|
AccountancyAreaDescExpenseReport=STEP %s: Define default accounting accounts for each type of Expense report. For this, use the menu entry %s.
|
||||||
AccountancyAreaDescSal=STEP %s: Define default accounting accounts for payment of salaries. For this, use the menu entry %s.
|
AccountancyAreaDescSal=STEP %s: Define default accounting accounts for payment of salaries. For this, use the menu entry %s.
|
||||||
AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for special expenses (miscellaneous taxes). For this, use the menu entry %s.
|
AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for Taxes (special expenses). For this, use the menu entry %s.
|
||||||
AccountancyAreaDescDonation=STEP %s: Define default accounting accounts for donation. For this, use the menu entry %s.
|
AccountancyAreaDescDonation=STEP %s: Define default accounting accounts for donation. For this, use the menu entry %s.
|
||||||
AccountancyAreaDescSubscription=STEP %s: Define default accounting accounts for member subscription. For this, use the menu entry %s.
|
AccountancyAreaDescSubscription=STEP %s: Define default accounting accounts for member subscription. For this, use the menu entry %s.
|
||||||
AccountancyAreaDescMisc=STEP %s: Define mandatory default account and default accounting accounts for miscellaneous transactions. For this, use the menu entry %s.
|
AccountancyAreaDescMisc=STEP %s: Define mandatory default account and default accounting accounts for miscellaneous transactions. For this, use the menu entry %s.
|
||||||
AccountancyAreaDescLoan=STEP %s: Define default accounting accounts for loans. For this, use the menu entry %s.
|
AccountancyAreaDescLoan=STEP %s: Define default accounting accounts for loans. For this, use the menu entry %s.
|
||||||
AccountancyAreaDescBank=STEP %s: Define accounting accounts and journal code for each bank and financial accounts. For this, use the menu entry %s.
|
AccountancyAreaDescBank=STEP %s: Define accounting accounts and journal code for each bank and financial accounts. For this, use the menu entry %s.
|
||||||
AccountancyAreaDescProd=STEP %s: Define accounting accounts on your products/services. For this, use the menu entry %s.
|
AccountancyAreaDescProd=STEP %s: Define accounting accounts on your Products/Services. For this, use the menu entry %s.
|
||||||
|
|
||||||
AccountancyAreaDescBind=STEP %s: Check the binding between existing %s lines and accounting account is done, so application will be able to journalize transactions in Ledger in one click. Complete missing bindings. For this, use the menu entry %s.
|
AccountancyAreaDescBind=STEP %s: Check the binding between existing %s lines and accounting account is done, so application will be able to journalize transactions in Ledger in one click. Complete missing bindings. For this, use the menu entry %s.
|
||||||
AccountancyAreaDescWriteRecords=STEP %s: Write transactions into the Ledger. For this, go into menu <strong>%s</strong>, and click into button <strong>%s</strong>.
|
AccountancyAreaDescWriteRecords=STEP %s: Write transactions into the Ledger. For this, go into menu <strong>%s</strong>, and click into button <strong>%s</strong>.
|
||||||
@ -112,7 +112,7 @@ MenuAccountancyClosure=Closure
|
|||||||
MenuAccountancyValidationMovements=Validate movements
|
MenuAccountancyValidationMovements=Validate movements
|
||||||
ProductsBinding=Products accounts
|
ProductsBinding=Products accounts
|
||||||
TransferInAccounting=Transfer in accounting
|
TransferInAccounting=Transfer in accounting
|
||||||
RegistrationInAccounting=Registration in accounting
|
RegistrationInAccounting=Recording in accounting
|
||||||
Binding=Binding to accounts
|
Binding=Binding to accounts
|
||||||
CustomersVentilation=Customer invoice binding
|
CustomersVentilation=Customer invoice binding
|
||||||
SuppliersVentilation=Vendor invoice binding
|
SuppliersVentilation=Vendor invoice binding
|
||||||
@ -120,7 +120,7 @@ ExpenseReportsVentilation=Expense report binding
|
|||||||
CreateMvts=Create new transaction
|
CreateMvts=Create new transaction
|
||||||
UpdateMvts=Modification of a transaction
|
UpdateMvts=Modification of a transaction
|
||||||
ValidTransaction=Validate transaction
|
ValidTransaction=Validate transaction
|
||||||
WriteBookKeeping=Register transactions in accounting
|
WriteBookKeeping=Record transactions in accounting
|
||||||
Bookkeeping=Ledger
|
Bookkeeping=Ledger
|
||||||
BookkeepingSubAccount=Subledger
|
BookkeepingSubAccount=Subledger
|
||||||
AccountBalance=Account balance
|
AccountBalance=Account balance
|
||||||
@ -294,7 +294,7 @@ Balancing=Balancing
|
|||||||
FicheVentilation=Binding card
|
FicheVentilation=Binding card
|
||||||
GeneralLedgerIsWritten=Transactions are written in the Ledger
|
GeneralLedgerIsWritten=Transactions are written in the Ledger
|
||||||
GeneralLedgerSomeRecordWasNotRecorded=Some of the transactions could not be journalized. If there is no other error message, this is probably because they were already journalized.
|
GeneralLedgerSomeRecordWasNotRecorded=Some of the transactions could not be journalized. If there is no other error message, this is probably because they were already journalized.
|
||||||
NoNewRecordSaved=No more record to journalize
|
NoNewRecordSaved=No more record to transfer
|
||||||
ListOfProductsWithoutAccountingAccount=List of products not bound to any accounting account
|
ListOfProductsWithoutAccountingAccount=List of products not bound to any accounting account
|
||||||
ChangeBinding=Change the binding
|
ChangeBinding=Change the binding
|
||||||
Accounted=Accounted in ledger
|
Accounted=Accounted in ledger
|
||||||
|
|||||||
@ -1187,7 +1187,7 @@ BankModuleNotActive=Bank accounts module not enabled
|
|||||||
ShowBugTrackLink=Show the link "<strong>%s</strong>"
|
ShowBugTrackLink=Show the link "<strong>%s</strong>"
|
||||||
ShowBugTrackLinkDesc=Keep empty to not display this link, use value 'github' for the link to the Dolibarr project or define directly an url 'https://...'
|
ShowBugTrackLinkDesc=Keep empty to not display this link, use value 'github' for the link to the Dolibarr project or define directly an url 'https://...'
|
||||||
Alerts=Alerts
|
Alerts=Alerts
|
||||||
DelaysOfToleranceBeforeWarning=Delay before displaying a warning alert for:
|
DelaysOfToleranceBeforeWarning=Displaying a warning alert for...
|
||||||
DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element.
|
DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element.
|
||||||
Delays_MAIN_DELAY_ACTIONS_TODO=Planned events (agenda events) not completed
|
Delays_MAIN_DELAY_ACTIONS_TODO=Planned events (agenda events) not completed
|
||||||
Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Project not closed in time
|
Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Project not closed in time
|
||||||
@ -2220,4 +2220,5 @@ NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search c
|
|||||||
API_DISABLE_COMPRESSION=Disable compression of API responses
|
API_DISABLE_COMPRESSION=Disable compression of API responses
|
||||||
EachTerminalHasItsOwnCounter=Each terminal use its own counter.
|
EachTerminalHasItsOwnCounter=Each terminal use its own counter.
|
||||||
FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first
|
FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first
|
||||||
PreviousHash=Previous hash
|
PreviousHash=Previous hash
|
||||||
|
LateWarningAfter="Late" warning after
|
||||||
@ -23,7 +23,7 @@ BoxLastMembersSubscriptions=Latest member subscriptions
|
|||||||
BoxFicheInter=Latest interventions
|
BoxFicheInter=Latest interventions
|
||||||
BoxCurrentAccounts=Open accounts balance
|
BoxCurrentAccounts=Open accounts balance
|
||||||
BoxTitleMemberNextBirthdays=Birthdays of this month (members)
|
BoxTitleMemberNextBirthdays=Birthdays of this month (members)
|
||||||
BoxTitleMembersByType=Members by type
|
BoxTitleMembersByType=Members by type and status
|
||||||
BoxTitleMembersSubscriptionsByYear=Members Subscriptions by year
|
BoxTitleMembersSubscriptionsByYear=Members Subscriptions by year
|
||||||
BoxTitleLastRssInfos=Latest %s news from %s
|
BoxTitleLastRssInfos=Latest %s news from %s
|
||||||
BoxTitleLastProducts=Products/Services: last %s modified
|
BoxTitleLastProducts=Products/Services: last %s modified
|
||||||
|
|||||||
@ -42,4 +42,5 @@ HideLots=Hide lots
|
|||||||
#Traceability - qc status
|
#Traceability - qc status
|
||||||
OutOfOrder=Out of order
|
OutOfOrder=Out of order
|
||||||
InWorkingOrder=In working order
|
InWorkingOrder=In working order
|
||||||
ToReplace=Replace
|
ToReplace=Replace
|
||||||
|
CantMoveNonExistantSerial=Error. You ask a move on a record for a serial that does not exists anymore. May be you take the same serial on same warehouse several times in same shipment or it was used by another shipment. Remove this shipment and prepare another one.
|
||||||
|
|||||||
@ -79,3 +79,4 @@ NoEval=Aucune évaluation effectuée pour cet employé
|
|||||||
HowManyUserWithThisMaxNote=Nombre d'employés avec ce niveau
|
HowManyUserWithThisMaxNote=Nombre d'employés avec ce niveau
|
||||||
HighestRank=Plus haut niveau
|
HighestRank=Plus haut niveau
|
||||||
SkillComparison=Comparaison des compétences
|
SkillComparison=Comparaison des compétences
|
||||||
|
ActionsOnJob=Événements sur cet emploi
|
||||||
@ -43,3 +43,4 @@ HideLots=Masquer les lots
|
|||||||
OutOfOrder=Hors d'usage
|
OutOfOrder=Hors d'usage
|
||||||
InWorkingOrder=En état de marche
|
InWorkingOrder=En état de marche
|
||||||
ToReplace=Remplacer
|
ToReplace=Remplacer
|
||||||
|
CantMoveNonExistantSerial=Erreur : Vous avez demandé un mouvement sur un numéro de série qui n’existe plus. Peut-être avez-vous requis le même numéro de série plusieurs fois dans une même expédition, ou il a déjà servi dans une autre expédition. Supprimez cette expédition et préparez-en une autre.
|
||||||
|
|||||||
@ -42,6 +42,7 @@
|
|||||||
//if (! defined("FORCECSP")) define('FORCECSP', 'none'); // Disable all Content Security Policies
|
//if (! defined("FORCECSP")) define('FORCECSP', 'none'); // Disable all Content Security Policies
|
||||||
//if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET
|
//if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET
|
||||||
//if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification
|
//if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification
|
||||||
|
//if (! defined('NOSESSION')) define('NOSESSION', '1'); // Disable session
|
||||||
|
|
||||||
// Load Dolibarr environment
|
// Load Dolibarr environment
|
||||||
$res = 0;
|
$res = 0;
|
||||||
|
|||||||
@ -202,7 +202,7 @@ class FormProduct
|
|||||||
/**
|
/**
|
||||||
* Return list of warehouses
|
* Return list of warehouses
|
||||||
*
|
*
|
||||||
* @param string|int $selected Id of preselected warehouse ('' or '-1' for no value, 'ifone'=select value if one value otherwise no value, '-2' to use the default value from setup)
|
* @param string|int $selected Id of preselected warehouse ('' or '-1' for no value, 'ifone' and 'ifonenodefault' = select value if one value otherwise no value, '-2' to use the default value from setup)
|
||||||
* @param string $htmlname Name of html select html
|
* @param string $htmlname Name of html select html
|
||||||
* @param string $filterstatus warehouse status filter, following comma separated filter options can be used
|
* @param string $filterstatus warehouse status filter, following comma separated filter options can be used
|
||||||
* 'warehouseopen' = select products from open warehouses,
|
* 'warehouseopen' = select products from open warehouses,
|
||||||
@ -279,7 +279,7 @@ class FormProduct
|
|||||||
}
|
}
|
||||||
|
|
||||||
$out .= '<option value="'.$id.'"';
|
$out .= '<option value="'.$id.'"';
|
||||||
if ($selected == $id || ($selected == 'ifone' && $nbofwarehouses == 1)) {
|
if ($selected == $id || (preg_match('/^ifone/', $selected) && $nbofwarehouses == 1)) {
|
||||||
$out .= ' selected';
|
$out .= ' selected';
|
||||||
}
|
}
|
||||||
$out .= ' data-html="'.dol_escape_htmltag($label).'"';
|
$out .= ' data-html="'.dol_escape_htmltag($label).'"';
|
||||||
|
|||||||
@ -612,7 +612,7 @@ if ($id > 0 || $ref) {
|
|||||||
$default_vat = $object->tva_tx;
|
$default_vat = $object->tva_tx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$vattosuggest = (GETPOST("tva_tx") ?vatrate(GETPOST("tva_tx")) : ($default_vat != '' ?vatrate($default_vat) : ''));
|
$vattosuggest = (GETPOSTISSET("tva_tx") ? vatrate(GETPOST("tva_tx")) : ($default_vat != '' ?vatrate($default_vat) : ''));
|
||||||
$vattosuggest = preg_replace('/\s*\(.*\)$/', '', $vattosuggest);
|
$vattosuggest = preg_replace('/\s*\(.*\)$/', '', $vattosuggest);
|
||||||
print '<input type="text" class="flat" size="5" name="tva_tx" value="'.$vattosuggest.'">';
|
print '<input type="text" class="flat" size="5" name="tva_tx" value="'.$vattosuggest.'">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|||||||
@ -959,7 +959,7 @@ if ($action != 'create' && $action != 'edit' && $action != 'delete') {
|
|||||||
$delallowed = $usercancreate;
|
$delallowed = $usercancreate;
|
||||||
$modulepart = 'stock';
|
$modulepart = 'stock';
|
||||||
|
|
||||||
print $formfile->showdocuments($modulepart, $object->ref, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 0, 0, 0, 28, 0, '', 0, '', $object->default_lang, '', $object);
|
print $formfile->showdocuments($modulepart, $objectref, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 0, 0, 0, 28, 0, '', 0, '', $object->default_lang, '', $object);
|
||||||
$somethingshown = $formfile->numoffiles;
|
$somethingshown = $formfile->numoffiles;
|
||||||
|
|
||||||
print '</div><div class="fichehalfright">';
|
print '</div><div class="fichehalfright">';
|
||||||
|
|||||||
@ -851,7 +851,9 @@ class MouvementStock extends CommonObject
|
|||||||
*/
|
*/
|
||||||
private function createBatch($dluo, $qty)
|
private function createBatch($dluo, $qty)
|
||||||
{
|
{
|
||||||
global $user;
|
global $user, $langs;
|
||||||
|
|
||||||
|
$langs->load('productbatch');
|
||||||
|
|
||||||
$pdluo = new Productbatch($this->db);
|
$pdluo = new Productbatch($this->db);
|
||||||
|
|
||||||
@ -862,7 +864,7 @@ class MouvementStock extends CommonObject
|
|||||||
$result = $pdluo->fetch($dluo);
|
$result = $pdluo->fetch($dluo);
|
||||||
if (empty($pdluo->id)) {
|
if (empty($pdluo->id)) {
|
||||||
// We didn't find the line. May be it was deleted before by a previous move in same transaction.
|
// We didn't find the line. May be it was deleted before by a previous move in same transaction.
|
||||||
$this->error = 'Error. You ask a move on a record for a serial that does not exists anymore. May be you take the same serial on same warehouse several times in same shipment or it was used by another shipment. Remove this shipment and prepare another one.';
|
$this->error = $langs->trans('CantMoveNonExistantSerial');
|
||||||
$this->errors[] = $this->error;
|
$this->errors[] = $this->error;
|
||||||
$result = -2;
|
$result = -2;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -363,7 +363,7 @@ print $form->select_produits($productid, 'productid', '', 0, 0, -1, 2, '', 0, ar
|
|||||||
print ' <span class="clearbothonsmartphone marginleftonly paddingleftonly marginrightonly paddingrightonly"> </span> ';
|
print ' <span class="clearbothonsmartphone marginleftonly paddingleftonly marginrightonly paddingrightonly"> </span> ';
|
||||||
print img_picto('', 'stock', 'class="pictofiwedwidth"');
|
print img_picto('', 'stock', 'class="pictofiwedwidth"');
|
||||||
print '</span> ';
|
print '</span> ';
|
||||||
print $formproduct->selectWarehouses((GETPOSTISSET('fk_warehouse') ? $fk_warehouse : 'ifone'), 'fk_warehouse', '', 1, 0, 0, $langs->trans('Warehouse'), 0, 0, null, '', null, 1, false, 'e.ref');
|
print $formproduct->selectWarehouses((GETPOSTISSET('fk_warehouse') ? $fk_warehouse : 'ifonenodefault'), 'fk_warehouse', '', 1, 0, 0, $langs->trans('Warehouse'), 0, 0, null, '', null, 1, false, 'e.ref');
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
$parameters = array();
|
$parameters = array();
|
||||||
|
|||||||
@ -383,7 +383,8 @@ if (!$ret) {
|
|||||||
if (empty($act->fulldayevent)) {
|
if (empty($act->fulldayevent)) {
|
||||||
print dol_print_date($act->datep, 'dayhour', 'tzuser');
|
print dol_print_date($act->datep, 'dayhour', 'tzuser');
|
||||||
} else {
|
} else {
|
||||||
print dol_print_date($act->datep, 'day', 'tzuser');
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
|
print dol_print_date($act->datep, 'day', ($tzforfullday ? $tzforfullday : 'tzuser'));
|
||||||
}
|
}
|
||||||
if ($act->percentage == 0 && $act->datep && $act->datep < ($now - $delay_warning)) {
|
if ($act->percentage == 0 && $act->datep && $act->datep < ($now - $delay_warning)) {
|
||||||
print img_warning($langs->trans("Late"));
|
print img_warning($langs->trans("Late"));
|
||||||
@ -396,7 +397,8 @@ if (!$ret) {
|
|||||||
if (empty($act->fulldayevent)) {
|
if (empty($act->fulldayevent)) {
|
||||||
print dol_print_date($act->datef, 'dayhour', 'tzuser');
|
print dol_print_date($act->datef, 'dayhour', 'tzuser');
|
||||||
} else {
|
} else {
|
||||||
print dol_print_date($act->datef, 'day', 'tzuser');
|
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||||
|
print dol_print_date($act->datef, 'day', ($tzforfullday ? $tzforfullday : 'tzuser'));
|
||||||
}
|
}
|
||||||
if ($act->percentage > 0 && $act->percentage < 100 && $act->datef && $act->datef < ($now - $delay_warning)) {
|
if ($act->percentage > 0 && $act->percentage < 100 && $act->datef && $act->datef < ($now - $delay_warning)) {
|
||||||
print img_warning($langs->trans("Late"));
|
print img_warning($langs->trans("Late"));
|
||||||
|
|||||||
@ -264,7 +264,8 @@ input:invalid, select:invalid, input.--error , select.--error {
|
|||||||
|
|
||||||
section.setupsection {
|
section.setupsection {
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
background-color: var(--colorbacktitle1);
|
/* background-color: var(--colorbacktitle1); */
|
||||||
|
background-color: #f0f0f0;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -728,6 +729,9 @@ textarea.centpercent {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 0px auto;
|
margin: 0px auto;
|
||||||
}
|
}
|
||||||
|
.centerimp {
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
.alignstart {
|
.alignstart {
|
||||||
text-align: start;
|
text-align: start;
|
||||||
}
|
}
|
||||||
@ -5917,6 +5921,7 @@ span#select2-taskid-container[title^='--'] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
span.select2.select2-container.select2-container--default {
|
span.select2.select2-container.select2-container--default {
|
||||||
|
text-align: initial;
|
||||||
<?php if (empty($conf->global->THEME_SHOW_BORDER_ON_INPUT)) { ?>
|
<?php if (empty($conf->global->THEME_SHOW_BORDER_ON_INPUT)) { ?>
|
||||||
border-left: none;
|
border-left: none;
|
||||||
border-top: none;
|
border-top: none;
|
||||||
|
|||||||
@ -885,6 +885,9 @@ textarea.centpercent {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 0px auto;
|
margin: 0px auto;
|
||||||
}
|
}
|
||||||
|
.centerimp {
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
.alignstart {
|
.alignstart {
|
||||||
text-align: start;
|
text-align: start;
|
||||||
}
|
}
|
||||||
@ -6110,6 +6113,10 @@ span#select2-boxbookmark-container, span#select2-boxcombo-container {
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
span.select2.select2-container.select2-container--default {
|
||||||
|
text-align: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ============================================================================== */
|
/* ============================================================================== */
|
||||||
/* For categories */
|
/* For categories */
|
||||||
|
|||||||
@ -621,10 +621,10 @@ if ($limit > 0 && $limit != $conf->liste_limit) {
|
|||||||
$param .= '&limit='.urlencode($limit);
|
$param .= '&limit='.urlencode($limit);
|
||||||
}
|
}
|
||||||
foreach ($search as $key => $val) {
|
foreach ($search as $key => $val) {
|
||||||
if (is_array($search[$key]) && count($search[$key])) {
|
if (is_array($val) && count($val)) {
|
||||||
foreach ($search[$key] as $skey) {
|
foreach ($val as $skey) {
|
||||||
if ($skey != '') {
|
if ($skey != '') {
|
||||||
$param .= '&search_'.$key.'[]='.urlencode($skey);
|
$param .= (!empty($val)) ? '&search_'.$key.'[]='.urlencode($skey) : "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($search[$key] != '') {
|
} elseif ($search[$key] != '') {
|
||||||
|
|||||||
@ -262,7 +262,7 @@ if (($action == 'add' || $action == 'create') && empty($massaction) && !GETPOST(
|
|||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$prodcomb->variation_weight = $weight_impact;
|
$prodcomb->variation_weight = price2num($weight_impact);
|
||||||
|
|
||||||
// for conf PRODUIT_MULTIPRICES
|
// for conf PRODUIT_MULTIPRICES
|
||||||
if ($conf->global->PRODUIT_MULTIPRICES) {
|
if ($conf->global->PRODUIT_MULTIPRICES) {
|
||||||
|
|||||||
@ -230,7 +230,7 @@ $original_file = str_replace('..\\', '/', $original_file);
|
|||||||
$refname = basename(dirname($original_file)."/");
|
$refname = basename(dirname($original_file)."/");
|
||||||
|
|
||||||
// Check that file is allowed for view with viewimage.php
|
// Check that file is allowed for view with viewimage.php
|
||||||
if (!dolIsAllowedForPreview($original_file)) {
|
if (!empty($original_file) && !dolIsAllowedForPreview($original_file)) {
|
||||||
accessforbidden('This file is not qualified for preview', 0, 0, 1);
|
accessforbidden('This file is not qualified for preview', 0, 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user