Merge branch 'develop' into 7.0_new_shipment_update

This commit is contained in:
Laurent Destailleur 2017-11-02 15:43:31 +01:00 committed by GitHub
commit feb04b4a22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
810 changed files with 4097 additions and 2418 deletions

View File

@ -5,6 +5,7 @@ English Dolibarr ChangeLog
***** ChangeLog for 7.0.0 compared to 6.0.* ***** ***** ChangeLog for 7.0.0 compared to 6.0.* *****
For users:
For developers: For developers:
NEW: Add hook addAdminLdapOptions and doAction in ldap admin page NEW: Add hook addAdminLdapOptions and doAction in ldap admin page
@ -42,8 +43,7 @@ FIX: API to get object does not return data of linked objects
FIX: Bad localtax apply FIX: Bad localtax apply
FIX: Bad ressource list in popup in gantt view FIX: Bad ressource list in popup in gantt view
FIX: bankentries search conciliated if val 0 FIX: bankentries search conciliated if val 0
FIX: hook formObjectOptions() must use $expe and not $object which i… FIX: hook formObjectOptions() must use $expe and not $object
FIX: hook formObjectOptions() must use $expe and not $object which is an order here
FIX: make of link to other object during creation FIX: make of link to other object during creation
FIX: Missing function getLinesArray FIX: Missing function getLinesArray
FIX: old batch not shown in multi shipping FIX: old batch not shown in multi shipping

View File

@ -571,6 +571,7 @@ if ($nboftargetok) {
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/mobiledetect/mobiledetectlib/.gitmodules`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/mobiledetect/mobiledetectlib/.gitmodules`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/lib/Mail`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/lib/Mail`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/samples`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/samples`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/parsedown/LICENSE.txt`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/php-iban/docs`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/php-iban/docs`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/.gitattributes`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/.gitattributes`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/Classes/license.md`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/Classes/license.md`;
@ -579,6 +580,7 @@ if ($nboftargetok) {
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/Examples`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/Examples`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/unitTests`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/unitTests`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/license.md`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/license.md`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/LICENSE`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/dejavu-fonts-ttf-*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/dejavu-fonts-ttf-*`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/freefont-*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/freefont-*`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/ae_fonts_*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/ae_fonts_*`;
@ -590,6 +592,8 @@ if ($nboftargetok) {
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/utils`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/utils`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/tools`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/tools`;
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/LICENSE.TXT`; $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/LICENSE.TXT`;
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/theme/common/octicons/LICENSE`;
print "Remove subdir of custom dir\n"; print "Remove subdir of custom dir\n";
print "find $BUILDROOT/$PROJECT/htdocs/custom/* -type d -exec rm -fr {} \\;\n"; print "find $BUILDROOT/$PROJECT/htdocs/custom/* -type d -exec rm -fr {} \\;\n";

View File

@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com> /* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@zendsi.com> * Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@zendsi.com>
* Copyright (C) 2016-2017 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2016-2017 Laurent Destailleur <eldy@users.sourceforge.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -44,6 +44,10 @@ $search_doc_ref = GETPOST("search_doc_ref");
$search_date_start = dol_mktime(0, 0, 0, GETPOST('date_startmonth', 'int'), GETPOST('date_startday', 'int'), GETPOST('date_startyear', 'int')); $search_date_start = dol_mktime(0, 0, 0, GETPOST('date_startmonth', 'int'), GETPOST('date_startday', 'int'), GETPOST('date_startyear', 'int'));
$search_date_end = dol_mktime(0, 0, 0, GETPOST('date_endmonth', 'int'), GETPOST('date_endday', 'int'), GETPOST('date_endyear', 'int')); $search_date_end = dol_mktime(0, 0, 0, GETPOST('date_endmonth', 'int'), GETPOST('date_endday', 'int'), GETPOST('date_endyear', 'int'));
$search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int')); $search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
$search_date_creation_start = dol_mktime(0, 0, 0, GETPOST('date_creation_startmonth', 'int'), GETPOST('date_creation_startday', 'int'), GETPOST('date_creation_startyear', 'int'));
$search_date_creation_end = dol_mktime(0, 0, 0, GETPOST('date_creation_endmonth', 'int'), GETPOST('date_creation_endday', 'int'), GETPOST('date_creation_endyear', 'int'));
$search_date_modification_start = dol_mktime(0, 0, 0, GETPOST('date_modification_startmonth', 'int'), GETPOST('date_modification_startday', 'int'), GETPOST('date_modification_startyear', 'int'));
$search_date_modification_end = dol_mktime(0, 0, 0, GETPOST('date_modification_endmonth', 'int'), GETPOST('date_modification_endday', 'int'), GETPOST('date_modification_endyear', 'int'));
if (GETPOST("button_delmvt_x") || GETPOST("button_delmvt.x") || GETPOST("button_delmvt")) { if (GETPOST("button_delmvt_x") || GETPOST("button_delmvt.x") || GETPOST("button_delmvt")) {
$action = 'delbookkeepingyear'; $action = 'delbookkeepingyear';
@ -53,7 +57,6 @@ if (GETPOST("button_export_file_x") || GETPOST("button_export_file.x") || GETPOS
} }
$search_accountancy_code = GETPOST("search_accountancy_code"); $search_accountancy_code = GETPOST("search_accountancy_code");
$search_accountancy_code_start = GETPOST('search_accountancy_code_start', 'alpha'); $search_accountancy_code_start = GETPOST('search_accountancy_code_start', 'alpha');
if ($search_accountancy_code_start == - 1) { if ($search_accountancy_code_start == - 1) {
$search_accountancy_code_start = ''; $search_accountancy_code_start = '';
@ -64,7 +67,6 @@ if ($search_accountancy_code_end == - 1) {
} }
$search_accountancy_aux_code = GETPOST("search_accountancy_aux_code"); $search_accountancy_aux_code = GETPOST("search_accountancy_aux_code");
$search_accountancy_aux_code_start = GETPOST('search_accountancy_aux_code_start', 'alpha'); $search_accountancy_aux_code_start = GETPOST('search_accountancy_aux_code_start', 'alpha');
if ($search_accountancy_aux_code_start == - 1) { if ($search_accountancy_aux_code_start == - 1) {
$search_accountancy_aux_code_start = ''; $search_accountancy_aux_code_start = '';
@ -102,15 +104,30 @@ if ($action != 'export_file' && ! isset($_POST['begin']) && ! isset($_GET['begin
$search_date_end = dol_mktime(0, 0, 0, 12, 31, dol_print_date(dol_now(), '%Y')); $search_date_end = dol_mktime(0, 0, 0, 12, 31, dol_print_date(dol_now(), '%Y'));
} }
$arrayfields=array(
't.piece_num'=>array('label'=>$langs->trans("TransactionNumShort"), 'checked'=>1),
't.doc_date'=>array('label'=>$langs->trans("Docdate"), 'checked'=>1),
't.doc_ref'=>array('label'=>$langs->trans("Docref"), 'checked'=>1),
't.numero_compte'=>array('label'=>$langs->trans("AccountAccountingShort"), 'checked'=>1),
't.subledger_account'=>array('label'=>$langs->trans("SubledgerAccount"), 'checked'=>1),
't.label_operation'=>array('label'=>$langs->trans("Label"), 'checked'=>1),
't.debit'=>array('label'=>$langs->trans("Debit"), 'checked'=>1),
't.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1),
't.code_journal'=>array('label'=>$langs->trans("Codejournal"), 'checked'=>1),
't.date_creation'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0),
't.tms'=>array('label'=>$langs->trans("DateModification"), 'checked'=>0),
);
/* /*
* Action * Actions
*/ */
if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; } if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; }
if (! GETPOST('confirmmassaction','alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; } if (! GETPOST('confirmmassaction','alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers
{ {
$search_mvt_num = ''; $search_mvt_num = '';
@ -128,6 +145,10 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x',
$search_ledger_code = ''; $search_ledger_code = '';
$search_date_start = ''; $search_date_start = '';
$search_date_end = ''; $search_date_end = '';
$search_date_creation_start = '';
$search_date_creation_end = '';
$search_date_modification_start = '';
$search_date_modification_end = '';
} }
// Must be after the remove filter action, before the export. // Must be after the remove filter action, before the export.
@ -196,6 +217,26 @@ if (! empty($search_mvt_num)) {
$filter['t.piece_num'] = $search_mvt_num; $filter['t.piece_num'] = $search_mvt_num;
$param .= '&search_mvt_num=' . $search_mvt_num; $param .= '&search_mvt_num=' . $search_mvt_num;
} }
if (! empty($search_date_creation_start)) {
$filter['t.date_creation>='] = $search_date_creation_start;
$tmp=dol_getdate($search_date_creation_start);
$param .= '&date_creation_startmonth=' . $tmp['mon'] . '&date_creation_startday=' . $tmp['mday'] . '&date_creation_startyear=' . $tmp['year'];
}
if (! empty($search_date_creation_end)) {
$filter['t.date_creation<='] = $search_date_creation_end;
$tmp=dol_getdate($search_date_creation_end);
$param .= '&date_creation_endmonth=' . $tmp['mon'] . '&date_creation_endday=' . $tmp['mday'] . '&date_creation_endyear=' . $tmp['year'];
}
if (! empty($search_date_modification_start)) {
$filter['t.tms>='] = $search_date_modification_start;
$tmp=dol_getdate($search_date_modification_start);
$param .= '&date_modification_startmonth=' . $tmp['mon'] . '&date_modification_startday=' . $tmp['mday'] . '&date_modification_startyear=' . $tmp['year'];
}
if (! empty($search_date_modification_end)) {
$filter['t.tms<='] = $search_date_modification_end;
$tmp=dol_getdate($search_date_modification_end);
$param .= '&date_modification_endmonth=' . $tmp['mon'] . '&date_modification_endday=' . $tmp['mday'] . '&date_modification_endyear=' . $tmp['year'];
}
if ($action == 'delbookkeeping') { if ($action == 'delbookkeeping') {
@ -370,137 +411,288 @@ print '<div class="inline-block divButAction"><a class="butActionDelete" name="b
print '</div>'; print '</div>';
print '<div class="div-table-responsive">'; $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
print '<table class="noborder" width="100%">'; $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
if ($massactionbutton) $selectedfields.=$form->showCheckAddButtons('checkforselect', 1);
print '<div class="div-table-responsive">';
print '<table class="tagtable liste" width="100%">';
// Filters lines
print '<tr class="liste_titre_filter">'; print '<tr class="liste_titre_filter">';
print '<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="' . dol_escape_htmltag($search_mvt_num) . '"></td>'; // Movement number
print '<td class="liste_titre center">'; if (! empty($arrayfields['t.piece_num']['checked']))
print '<div class="nowrap">';
print $langs->trans('From') . ' ';
print $form->select_date($search_date_start, 'date_start', 0, 0, 1);
print '</div>';
print '<div class="nowrap">';
print $langs->trans('to') . ' ';
print $form->select_date($search_date_end, 'date_end', 0, 0, 1);
print '</div>';
print '</td>';
print '<td class="liste_titre"><input type="text" name="search_doc_ref" size="8" value="' . dol_escape_htmltag($search_doc_ref) . '"></td>';
print '<td class="liste_titre">';
print '<div class="nowrap">';
print $langs->trans('From').' ';
print $formaccounting->select_account($search_accountancy_code_start, 'search_accountancy_code_start', 1, array (), 1, 1, 'maxwidth200');
print '</div>';
print '<div class="nowrap">';
print $langs->trans('to').' ';
print $formaccounting->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, 'maxwidth200');
print '</div>';
print '</td>';
print '<td class="liste_titre">';
print '<div class="nowrap">';
print $langs->trans('From').' ';
// TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because it does not
// use setup of keypress to select thirdparty and this hang browser on large database.
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX))
{ {
print $formaccounting->select_auxaccount($search_accountancy_aux_code_start, 'search_accountancy_aux_code_start', 1); print '<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="' . dol_escape_htmltag($search_mvt_num) . '"></td>';
} }
else // Date document
if (! empty($arrayfields['t.doc_date']['checked']))
{ {
print '<input type="text" name="search_accountancy_aux_code_start" value="'.$search_accountancy_aux_code_start.'">'; print '<td class="liste_titre center">';
print '<div class="nowrap">';
print $langs->trans('From') . ' ';
print $form->select_date($search_date_start, 'date_start', 0, 0, 1);
print '</div>';
print '<div class="nowrap">';
print $langs->trans('to') . ' ';
print $form->select_date($search_date_end, 'date_end', 0, 0, 1);
print '</div>';
print '</td>';
} }
print '</div>'; // Ref document
print '<div class="nowrap">'; if (! empty($arrayfields['t.doc_ref']['checked']))
print $langs->trans('to').' ';
// TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because it does not
// use setup of keypress to select thirdparty and this hang browser on large database.
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX))
{ {
print $formaccounting->select_auxaccount($search_accountancy_aux_code_end, 'search_accountancy_aux_code_end', 1); print '<td class="liste_titre"><input type="text" name="search_doc_ref" size="8" value="' . dol_escape_htmltag($search_doc_ref) . '"></td>';
} }
else // Accountancy account
if (! empty($arrayfields['t.numero_compte']['checked']))
{ {
print '<input type="text" name="search_accountancy_aux_code_end" value="'.$search_accountancy_aux_code_end.'">'; print '<td class="liste_titre">';
print '<div class="nowrap">';
print $langs->trans('From').' ';
print $formaccounting->select_account($search_accountancy_code_start, 'search_accountancy_code_start', 1, array (), 1, 1, 'maxwidth200');
print '</div>';
print '<div class="nowrap">';
print $langs->trans('to').' ';
print $formaccounting->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, 'maxwidth200');
print '</div>';
print '</td>';
} }
print '</div>'; // Subledger account
print '</td>'; if (! empty($arrayfields['t.subledger_account']['checked']))
print '<td class="liste_titre">'; {
print '<input type="text" size="7" class="flat" name="search_mvt_label" value="' . $search_mvt_label . '"/>'; print '<td class="liste_titre">';
print '</td>'; print '<div class="nowrap">';
print '<td class="liste_titre center">&nbsp;</td>'; print $langs->trans('From').' ';
print '<td class="liste_titre center">&nbsp;</td>'; // TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because it does not
print '<td class="liste_titre center"><input type="text" name="search_ledger_code" size="3" value="' . $search_ledger_code . '"></td>'; // use setup of keypress to select thirdparty and this hang browser on large database.
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX))
{
print $formaccounting->select_auxaccount($search_accountancy_aux_code_start, 'search_accountancy_aux_code_start', 1);
}
else
{
print '<input type="text" name="search_accountancy_aux_code_start" value="'.$search_accountancy_aux_code_start.'">';
}
print '</div>';
print '<div class="nowrap">';
print $langs->trans('to').' ';
// TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because it does not
// use setup of keypress to select thirdparty and this hang browser on large database.
if (! empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX))
{
print $formaccounting->select_auxaccount($search_accountancy_aux_code_end, 'search_accountancy_aux_code_end', 1);
}
else
{
print '<input type="text" name="search_accountancy_aux_code_end" value="'.$search_accountancy_aux_code_end.'">';
}
print '</div>';
print '</td>';
}
// Label operation
if (! empty($arrayfields['t.label_operation']['checked']))
{
print '<td class="liste_titre">';
print '<input type="text" size="7" class="flat" name="search_mvt_label" value="' . $search_mvt_label . '"/>';
print '</td>';
}
// Debit
if (! empty($arrayfields['t.debit']['checked']))
{
print '<td class="liste_titre center">&nbsp;</td>';
}
// Credit
if (! empty($arrayfields['t.credit']['checked']))
{
print '<td class="liste_titre center">&nbsp;</td>';
}
// Code journal
if (! empty($arrayfields['t.code_journal']['checked']))
{
print '<td class="liste_titre center"><input type="text" name="search_ledger_code" size="3" value="' . $search_ledger_code . '"></td>';
}
// Date creation
if (! empty($arrayfields['t.date_creation']['checked']))
{
print '<td class="liste_titre center">';
print '<div class="nowrap">';
print $langs->trans('From') . ' ';
print $form->select_date($search_date_creation_start, 'date_creation_start', 0, 0, 1);
print '</div>';
print '<div class="nowrap">';
print $langs->trans('to') . ' ';
print $form->select_date($search_date_creation_end, 'date_creation_end', 0, 0, 1);
print '</div>';
print '</td>';
}
// Date modification
if (! empty($arrayfields['t.tms']['checked']))
{
print '<td class="liste_titre center">';
print '<div class="nowrap">';
print $langs->trans('From') . ' ';
print $form->select_date($search_date_modification_start, 'date_modification_start', 0, 0, 1);
print '</div>';
print '<div class="nowrap">';
print $langs->trans('to') . ' ';
print $form->select_date($search_date_modification_end, 'date_modification_end', 0, 0, 1);
print '</div>';
print '</td>';
}
// Action column
print '<td class="liste_titre center">'; print '<td class="liste_titre center">';
$searchpicto=$form->showFilterButtons(); $searchpicto=$form->showFilterButtons();
print $searchpicto; print $searchpicto;
print '</td>'; print '</td>';
print '</tr>'; print "</tr>\n";
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print_liste_field_titre("TransactionNumShort", $_SERVER['PHP_SELF'], "t.piece_num", "", $param, "", $sortfield, $sortorder); if (! empty($arrayfields['t.piece_num']['checked'])) print_liste_field_titre("TransactionNumShort", $_SERVER['PHP_SELF'], "t.piece_num", "", $param, "", $sortfield, $sortorder);
print_liste_field_titre("Docdate", $_SERVER['PHP_SELF'], "t.doc_date", "", $param, 'align="center"', $sortfield, $sortorder); if (! empty($arrayfields['t.doc_date']['checked'])) print_liste_field_titre("Docdate", $_SERVER['PHP_SELF'], "t.doc_date", "", $param, 'align="center"', $sortfield, $sortorder);
print_liste_field_titre("Docref", $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder); if (! empty($arrayfields['t.doc_ref']['checked'])) print_liste_field_titre("Docref", $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder);
print_liste_field_titre("AccountAccountingShort", $_SERVER['PHP_SELF'], "t.numero_compte", "", $param, "", $sortfield, $sortorder); if (! empty($arrayfields['t.numero_compte']['checked'])) print_liste_field_titre("AccountAccountingShort", $_SERVER['PHP_SELF'], "t.numero_compte", "", $param, "", $sortfield, $sortorder);
print_liste_field_titre("SubledgerAccount", $_SERVER['PHP_SELF'], "t.subledger_account", "", $param, "", $sortfield, $sortorder); if (! empty($arrayfields['t.subledger_account']['checked'])) print_liste_field_titre("SubledgerAccount", $_SERVER['PHP_SELF'], "t.subledger_account", "", $param, "", $sortfield, $sortorder);
print_liste_field_titre("Label", $_SERVER['PHP_SELF'], "t.label_operation", "", $param, "", $sortfield, $sortorder); if (! empty($arrayfields['t.label_operation']['checked'])) print_liste_field_titre("Label", $_SERVER['PHP_SELF'], "t.label_operation", "", $param, "", $sortfield, $sortorder);
print_liste_field_titre("Debit", $_SERVER['PHP_SELF'], "t.debit", "", $param, 'align="right"', $sortfield, $sortorder); if (! empty($arrayfields['t.debit']['checked'])) print_liste_field_titre("Debit", $_SERVER['PHP_SELF'], "t.debit", "", $param, 'align="right"', $sortfield, $sortorder);
print_liste_field_titre("Credit", $_SERVER['PHP_SELF'], "t.credit", "", $param, 'align="right"', $sortfield, $sortorder); if (! empty($arrayfields['t.credit']['checked'])) print_liste_field_titre("Credit", $_SERVER['PHP_SELF'], "t.credit", "", $param, 'align="right"', $sortfield, $sortorder);
print_liste_field_titre("Codejournal", $_SERVER['PHP_SELF'], "t.code_journal", "", $param, 'align="center"', $sortfield, $sortorder); if (! empty($arrayfields['t.code_journal']['checked'])) print_liste_field_titre("Codejournal", $_SERVER['PHP_SELF'], "t.code_journal", "", $param, 'align="center"', $sortfield, $sortorder);
$checkpicto=''; if (! empty($arrayfields['t.date_creation']['checked'])) print_liste_field_titre("DateCreation", $_SERVER['PHP_SELF'], "t.date_creation", "", $param, 'align="center"', $sortfield, $sortorder);
if ($massactionbutton) $checkpicto=$form->showCheckAddButtons('checkforselect', 1); if (! empty($arrayfields['t.tms']['checked'])) print_liste_field_titre("DateModification", $_SERVER['PHP_SELF'], "t.tms", "", $param, 'align="center"', $sortfield, $sortorder);
print_liste_field_titre($checkpicto, $_SERVER["PHP_SELF"], "", $param, "", 'width="60" align="center"', $sortfield, $sortorder); print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch ');
print "</tr>\n"; print "</tr>\n";
$total_debit = 0; if ($num > 0)
$total_credit = 0;
$i=0;
while ($i < min($num, $limit))
{ {
$line = $object->lines[$i]; $i=0;
$totalarray=array();
while ($i < min($num, $limit))
{
$line = $object->lines[$i];
$total_debit += $line->debit; $total_debit += $line->debit;
$total_credit += $line->credit; $total_credit += $line->credit;
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td><a href="./card.php?piece_num=' . $line->piece_num . '">' . $line->piece_num . '</a></td>'; // Piece number
print '<td align="center">' . dol_print_date($line->doc_date, 'day') . '</td>'; if (! empty($arrayfields['t.piece_num']['checked']))
print '<td class="nowrap">' . $line->doc_ref . '</td>'; {
print '<td>' . length_accountg($line->numero_compte) . '</td>'; print '<td><a href="./card.php?piece_num=' . $line->piece_num . '">' . $line->piece_num . '</a></td>';
print '<td>' . length_accounta($line->subledger_account) . '</td>'; if (! $i) $totalarray['nbfield']++;
print '<td>' . $line->label_operation . '</td>'; }
print '<td align="right">' . ($line->debit ? price($line->debit) : ''). '</td>';
print '<td align="right">' . ($line->credit ? price($line->credit) : '') . '</td>';
$accountingjournal = new AccountingJournal($db); // Document date
$result = $accountingjournal->fetch('',$line->code_journal); if (! empty($arrayfields['t.doc_date']['checked']))
$journaltoshow = (($result > 0)?$accountingjournal->getNomUrl(0,0,0,'',0) : $line->code_journal); {
print '<td align="center">' . $journaltoshow . '</td>'; print '<td align="center">' . dol_print_date($line->doc_date, 'day') . '</td>';
if (! $i) $totalarray['nbfield']++;
}
print '<td align="center">'; // Document ref
print '<a href="./card.php?piece_num=' . $line->piece_num . '">' . img_edit() . '</a>&nbsp;'; if (! empty($arrayfields['t.doc_ref']['checked']))
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=delmouv&mvt_num=' . $line->piece_num . $param . '&page=' . $page . '">' . img_delete() . '</a>'; {
print '</td>'; print '<td class="nowrap">' . $line->doc_ref . '</td>';
print "</tr>\n"; if (! $i) $totalarray['nbfield']++;
}
$i++; // Account number
if (! empty($arrayfields['t.numero_compte']['checked']))
{
print '<td>' . length_accountg($line->numero_compte) . '</td>';
if (! $i) $totalarray['nbfield']++;
}
// Subledger account
if (! empty($arrayfields['t.subledger_account']['checked']))
{
print '<td>' . length_accounta($line->subledger_account) . '</td>';
if (! $i) $totalarray['nbfield']++;
}
// Label operation
if (! empty($arrayfields['t.label_operation']['checked']))
{
print '<td>' . $line->label_operation . '</td>';
if (! $i) $totalarray['nbfield']++;
}
// Amount debit
if (! empty($arrayfields['t.debit']['checked']))
{
print '<td align="right">' . ($line->debit ? price($line->debit) : ''). '</td>';
if (! $i) $totalarray['nbfield']++;
if (! $i) $totalarray['totaldebitfield']=$totalarray['nbfield'];
$totalarray['totaldebit'] += $line->debit;
}
// Amount credit
if (! empty($arrayfields['t.credit']['checked']))
{
print '<td align="right">' . ($line->credit ? price($line->credit) : '') . '</td>';
if (! $i) $totalarray['nbfield']++;
if (! $i) $totalarray['totalcreditfield']=$totalarray['nbfield'];
$totalarray['totalcredit'] += $line->credit;
}
// Journal code
if (! empty($arrayfields['t.code_journal']['checked']))
{
$accountingjournal = new AccountingJournal($db);
$result = $accountingjournal->fetch('',$line->code_journal);
$journaltoshow = (($result > 0)?$accountingjournal->getNomUrl(0,0,0,'',0) : $line->code_journal);
print '<td align="center">' . $journaltoshow . '</td>';
if (! $i) $totalarray['nbfield']++;
}
// Creation operation date
if (! empty($arrayfields['t.date_creation']['checked']))
{
print '<td align="center">' . dol_print_date($line->date_creation, 'day') . '</td>';
if (! $i) $totalarray['nbfield']++;
}
// Modification operation date
if (! empty($arrayfields['t.tms']['checked']))
{
print '<td align="center">' . dol_print_date($line->date_modification, 'day') . '</td>';
if (! $i) $totalarray['nbfield']++;
}
// Action column
print '<td align="center">';
print '<a href="./card.php?piece_num=' . $line->piece_num . '">' . img_edit() . '</a>&nbsp;';
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=delmouv&mvt_num=' . $line->piece_num . $param . '&page=' . $page . '">' . img_delete() . '</a>';
print '</td>';
if (! $i) $totalarray['nbfield']++;
print "</tr>\n";
$i++;
}
// Show total line
if (isset($totalarray['totaldebitfield']) || isset($totalarray['totalcreditfield']))
{
$i=0;
while ($i < $totalarray['nbfield'])
{
$i++;
if ($i == 1)
{
if ($num < $limit && empty($offset)) print '<td align="left">'.$langs->trans("Total").'</td>';
else print '<td align="left">'.$langs->trans("Totalforthispage").'</td>';
}
elseif ($totalarray['totaldebitfield'] == $i) print '<td align="right">'.price($totalarray['totaldebit']).'</td>';
elseif ($totalarray['totalcreditfield'] == $i) print '<td align="right">'.price($totalarray['totalcredit']).'</td>';
else print '<td></td>';
}
print '</tr>';
}
} }
print '<tr class="liste_total">';
if ($num < $limit) print '<td align="left" colspan="7">'.$langs->trans("Total").'</td>';
else print '<td align="left" colspan="7">'.$langs->trans("Totalforthispage").'</td>';
print '</td>';
print '<td align="right">';
print price($total_debit);
print '</td>';
print '<td align="right">';
print price($total_credit);
print '</td>';
print '<td colspan="2"></td>';
print '</tr>';
print "</table>"; print "</table>";
print '</div>'; print '</div>';

View File

@ -564,7 +564,8 @@ class BookKeeping extends CommonObject
$sql .= " t.import_key,"; $sql .= " t.import_key,";
$sql .= " t.code_journal,"; $sql .= " t.code_journal,";
$sql .= " t.journal_label,"; $sql .= " t.journal_label,";
$sql .= " t.piece_num"; $sql .= " t.piece_num,";
$sql .= " t.date_creation";
$sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element.$mode. ' as t'; $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element.$mode. ' as t';
$sql .= ' WHERE 1 = 1'; $sql .= ' WHERE 1 = 1';
$sql .= " AND entity IN (" . getEntity('accountancy') . ")"; $sql .= " AND entity IN (" . getEntity('accountancy') . ")";
@ -603,6 +604,7 @@ class BookKeeping extends CommonObject
$this->code_journal = $obj->code_journal; $this->code_journal = $obj->code_journal;
$this->journal_label = $obj->journal_label; $this->journal_label = $obj->journal_label;
$this->piece_num = $obj->piece_num; $this->piece_num = $obj->piece_num;
$this->date_creation = $this->db->jdate($obj->date_creation);
} }
$this->db->free($resql); $this->db->free($resql);
@ -658,7 +660,8 @@ class BookKeeping extends CommonObject
$sql .= " t.import_key,"; $sql .= " t.import_key,";
$sql .= " t.code_journal,"; $sql .= " t.code_journal,";
$sql .= " t.journal_label,"; $sql .= " t.journal_label,";
$sql .= " t.piece_num"; $sql .= " t.piece_num,";
$sql .= " t.date_creation";
// Manage filter // Manage filter
$sqlwhere = array (); $sqlwhere = array ();
if (count($filter) > 0) { if (count($filter) > 0) {
@ -675,6 +678,8 @@ class BookKeeping extends CommonObject
$sqlwhere[] = $key . ' LIKE \'' . $this->db->escape($value) . '%\''; $sqlwhere[] = $key . ' LIKE \'' . $this->db->escape($value) . '%\'';
} elseif ($key == 't.label_operation') { } elseif ($key == 't.label_operation') {
$sqlwhere[] = $key . ' LIKE \'' . $this->db->escape($value) . '%\''; $sqlwhere[] = $key . ' LIKE \'' . $this->db->escape($value) . '%\'';
} elseif ($key == 't.date_creation>=' || $key == 't.date_creation<=') {
$sqlwhere[] = $key . '\'' . $this->db->idate($value) . '\'';
} else { } else {
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\''; $sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
} }
@ -725,6 +730,7 @@ class BookKeeping extends CommonObject
$line->code_journal = $obj->code_journal; $line->code_journal = $obj->code_journal;
$line->journal_label = $obj->journal_label; $line->journal_label = $obj->journal_label;
$line->piece_num = $obj->piece_num; $line->piece_num = $obj->piece_num;
$line->date_creation = $obj->date_creation;
$this->lines[] = $line; $this->lines[] = $line;
} }
@ -777,7 +783,8 @@ class BookKeeping extends CommonObject
$sql .= " t.import_key,"; $sql .= " t.import_key,";
$sql .= " t.code_journal,"; $sql .= " t.code_journal,";
$sql .= " t.journal_label,"; $sql .= " t.journal_label,";
$sql .= " t.piece_num"; $sql .= " t.piece_num,";
$sql .= " t.date_creation";
$sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t'; $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t';
// Manage filter // Manage filter
$sqlwhere = array (); $sqlwhere = array ();
@ -793,6 +800,10 @@ class BookKeeping extends CommonObject
$sqlwhere[] = $key . '=' . $value; $sqlwhere[] = $key . '=' . $value;
} elseif ($key == 't.subledger_account' || $key == 't.numero_compte') { } elseif ($key == 't.subledger_account' || $key == 't.numero_compte') {
$sqlwhere[] = $key . ' LIKE \'' . $this->db->escape($value) . '%\''; $sqlwhere[] = $key . ' LIKE \'' . $this->db->escape($value) . '%\'';
} elseif ($key == 't.date_creation>=' || $key == 't.date_creation<=') {
$sqlwhere[] = $key . '\'' . $this->db->idate($value) . '\'';
} elseif ($key == 't.tms>=' || $key == 't.tms<=') {
$sqlwhere[] = $key . '\'' . $this->db->idate($value) . '\'';
} else { } else {
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\''; $sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
} }
@ -841,6 +852,7 @@ class BookKeeping extends CommonObject
$line->code_journal = $obj->code_journal; $line->code_journal = $obj->code_journal;
$line->journal_label = $obj->journal_label; $line->journal_label = $obj->journal_label;
$line->piece_num = $obj->piece_num; $line->piece_num = $obj->piece_num;
$line->date_creation = $obj->date_creation;
$this->lines[] = $line; $this->lines[] = $line;
} }
@ -1336,6 +1348,7 @@ class BookKeeping extends CommonObject
$this->code_journal = 'VT'; $this->code_journal = 'VT';
$this->journal_label = 'Journal de vente'; $this->journal_label = 'Journal de vente';
$this->piece_num = ''; $this->piece_num = '';
$this->date_creation = $now;
} }
/** /**
@ -1348,7 +1361,7 @@ class BookKeeping extends CommonObject
public function fetchPerMvt($piecenum, $mode='') { public function fetchPerMvt($piecenum, $mode='') {
global $conf; global $conf;
$sql = "SELECT piece_num,doc_date,code_journal,journal_label,doc_ref,doc_type"; $sql = "SELECT piece_num,doc_date,code_journal,journal_label,doc_ref,doc_type,date_creation";
$sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element.$mode; $sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element.$mode;
$sql .= " WHERE piece_num = " . $piecenum; $sql .= " WHERE piece_num = " . $piecenum;
$sql .= " AND entity IN (" . getEntity('accountancy') . ")"; $sql .= " AND entity IN (" . getEntity('accountancy') . ")";
@ -1364,6 +1377,7 @@ class BookKeeping extends CommonObject
$this->doc_date = $this->db->jdate($obj->doc_date); $this->doc_date = $this->db->jdate($obj->doc_date);
$this->doc_ref = $obj->doc_ref; $this->doc_ref = $obj->doc_ref;
$this->doc_type = $obj->doc_type; $this->doc_type = $obj->doc_type;
$this->date_creation = $obj->date_creation;
} else { } else {
$this->error = "Error " . $this->db->lasterror(); $this->error = "Error " . $this->db->lasterror();
dol_syslog(get_class($this) . "::" . __METHOD__ . $this->error, LOG_ERR); dol_syslog(get_class($this) . "::" . __METHOD__ . $this->error, LOG_ERR);
@ -1414,7 +1428,7 @@ class BookKeeping extends CommonObject
$sql = "SELECT rowid, doc_date, doc_type,"; $sql = "SELECT rowid, doc_date, doc_type,";
$sql .= " doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,"; $sql .= " doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,";
$sql .= " numero_compte, label_compte, label_operation, debit, credit,"; $sql .= " numero_compte, label_compte, label_operation, debit, credit,";
$sql .= " montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num"; $sql .= " montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num, date_creation";
$sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element.$mode; $sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element.$mode;
$sql .= " WHERE piece_num = " . $piecenum; $sql .= " WHERE piece_num = " . $piecenum;
$sql .= " AND entity IN (" . getEntity('accountancy') . ")"; $sql .= " AND entity IN (" . getEntity('accountancy') . ")";
@ -1447,6 +1461,7 @@ class BookKeeping extends CommonObject
$line->code_journal = $obj->code_journal; $line->code_journal = $obj->code_journal;
$line->journal_label = $obj->journal_label; $line->journal_label = $obj->journal_label;
$line->piece_num = $obj->piece_num; $line->piece_num = $obj->piece_num;
$line->date_creation = $obj->date_creation;
$this->linesmvt[] = $line; $this->linesmvt[] = $line;
} }
@ -1785,4 +1800,5 @@ class BookKeepingLine
public $code_journal; public $code_journal;
public $journal_label; public $journal_label;
public $piece_num; public $piece_num;
public $date_creation;
} }

View File

@ -38,6 +38,7 @@ $langs->load("agenda");
$action = GETPOST('action','alpha'); $action = GETPOST('action','alpha');
$cancel = GETPOST('cancel','alpha'); $cancel = GETPOST('cancel','alpha');
$search_event = GETPOST('search_event', 'alpha');
// Get list of triggers available // Get list of triggers available
$sql = "SELECT a.rowid, a.code, a.label, a.elementtype"; $sql = "SELECT a.rowid, a.code, a.label, a.elementtype";
@ -70,6 +71,12 @@ else
* Actions * Actions
*/ */
// Purge search criteria
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') ||GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers
{
$search_event = '';
}
if ($action == "save" && empty($cancel)) if ($action == "save" && empty($cancel))
{ {
$i=0; $i=0;
@ -78,10 +85,13 @@ if ($action == "save" && empty($cancel))
foreach ($triggers as $trigger) foreach ($triggers as $trigger)
{ {
$param='MAIN_AGENDA_ACTIONAUTO_'.$trigger['code']; $keyparam='MAIN_AGENDA_ACTIONAUTO_'.$trigger['code'];
//print "param=".$param." - ".$_POST[$param]; //print "param=".$param." - ".$_POST[$param];
$res = dolibarr_set_const($db,$param,(GETPOST($param,'alpha')?GETPOST($param,'alpha'):''),'chaine',0,'',$conf->entity); if ($search_event === '' || preg_match('/'.preg_quote($search_event,'/').'/i', $keyparam))
if (! $res > 0) $error++; {
$res = dolibarr_set_const($db,$keyparam,(GETPOST($keyparam,'alpha')?GETPOST($keyparam,'alpha'):''),'chaine',0,'',$conf->entity);
if (! $res > 0) $error++;
}
} }
if (! $error) if (! $error)
@ -140,6 +150,8 @@ print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="save">'; print '<input type="hidden" name="action" value="save">';
$param = '';
$param.= '&search_event='.urlencode($search_event);
$head=agenda_prepare_head(); $head=agenda_prepare_head();
@ -151,8 +163,19 @@ print "<br>\n";
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td colspan="2">'.$langs->trans("ActionsEvents").'</td>'; print '<td class="liste_titre"><input type="text" name="search_event" value="'.dol_escape_htmltag($search_event).'"></td>';
print '<td><a href="'.$_SERVER["PHP_SELF"].'?action=selectall">'.$langs->trans("All").'</a>/<a href="'.$_SERVER["PHP_SELF"].'?action=selectnone">'.$langs->trans("None").'</a>'; print '<td class="liste_titre"></td>';
// Action column
print '<td class="liste_titre" align="right">';
$searchpicto=$form->showFilterButtons();
print $searchpicto;
print '</td>';
print '</tr>';
print '</tr>'."\n";
print '<tr class="liste_titre">';
print '<th class="liste_titre">'.$langs->trans("ActionsEvents").'</th>';
print '<th class="liste_titre"></th>';
print '<th class="liste_titre"><a href="'.$_SERVER["PHP_SELF"].'?action=selectall'.($param?$param:'').'">'.$langs->trans("All").'</a>/<a href="'.$_SERVER["PHP_SELF"].'?action=selectnone'.($param?$param:'').'">'.$langs->trans("None").'</a></th>';
print '</tr>'."\n"; print '</tr>'."\n";
// Show each trigger (list is in c_action_trigger) // Show each trigger (list is in c_action_trigger)
if (! empty($triggers)) if (! empty($triggers))
@ -173,15 +196,17 @@ if (! empty($triggers))
if ($trigger['code'] == 'FICHINTER_CLASSIFY_BILLED' && empty($conf->global->FICHINTER_CLASSIFY_BILLED)) continue; if ($trigger['code'] == 'FICHINTER_CLASSIFY_BILLED' && empty($conf->global->FICHINTER_CLASSIFY_BILLED)) continue;
if ($trigger['code'] == 'FICHINTER_CLASSIFY_UNBILLED' && empty($conf->global->FICHINTER_CLASSIFY_BILLED)) continue; if ($trigger['code'] == 'FICHINTER_CLASSIFY_UNBILLED' && empty($conf->global->FICHINTER_CLASSIFY_BILLED)) continue;
if ($search_event === '' || preg_match('/'.preg_quote($search_event,'/').'/i', $trigger['code']))
print '<tr class="oddeven">'; {
print '<td>'.$trigger['code'].'</td>'; print '<tr class="oddeven">';
print '<td>'.$trigger['label'].'</td>'; print '<td>'.$trigger['code'].'</td>';
print '<td align="right" width="40">'; print '<td>'.$trigger['label'].'</td>';
$key='MAIN_AGENDA_ACTIONAUTO_'.$trigger['code']; print '<td align="right" width="40">';
$value=$conf->global->$key; $key='MAIN_AGENDA_ACTIONAUTO_'.$trigger['code'];
print '<input class="oddeven" type="checkbox" name="'.$key.'" value="1"'.((($action=='selectall'||$value) && $action!="selectnone")?' checked':'').'>'; $value=$conf->global->$key;
print '</td></tr>'."\n"; print '<input class="oddeven" type="checkbox" name="'.$key.'" value="1"'.((($action=='selectall'||$value) && $action!="selectnone")?' checked':'').'>';
print '</td></tr>'."\n";
}
} }
} }
} }

View File

@ -352,6 +352,15 @@ else
} }
print '</td></tr>'."\n"; print '</td></tr>'."\n";
// AGENDA_DEFAULT_VIEW
print '<tr class="oddeven">'."\n";
print '<td>'.$langs->trans("AGENDA_DEFAULT_VIEW").'</td>'."\n";
print '<td align="center">&nbsp;</td>'."\n";
print '<td align="right">'."\n";
$tmplist=array('show_list'=>$langs->trans("ViewList"), 'show_month'=>$langs->trans("ViewCal"), 'show_week'=>$langs->trans("ViewWeek"), 'show_day'=>$langs->trans("ViewDay"), 'show_peruser'=>$langs->trans("ViewPerUser"));
print $form->selectarray('AGENDA_DEFAULT_VIEW', $tmplist, $conf->global->AGENDA_DEFAULT_VIEW);
print '</td></tr>'."\n";
if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) if (! empty($conf->global->AGENDA_USE_EVENT_TYPE))
{ {
@ -381,15 +390,6 @@ print '<td align="right">'."\n";
$formactions->form_select_status_action('agenda', $conf->global->AGENDA_DEFAULT_FILTER_STATUS, 1, 'AGENDA_DEFAULT_FILTER_STATUS', 1, 2, 'minwidth100'); $formactions->form_select_status_action('agenda', $conf->global->AGENDA_DEFAULT_FILTER_STATUS, 1, 'AGENDA_DEFAULT_FILTER_STATUS', 1, 2, 'minwidth100');
print '</td></tr>'."\n"; print '</td></tr>'."\n";
// AGENDA_DEFAULT_VIEW
print '<tr class="oddeven">'."\n";
print '<td>'.$langs->trans("AGENDA_DEFAULT_VIEW").'</td>'."\n";
print '<td align="center">&nbsp;</td>'."\n";
print '<td align="right">'."\n";
$tmplist=array('show_list'=>$langs->trans("ViewList"), 'show_month'=>$langs->trans("ViewCal"), 'show_week'=>$langs->trans("ViewWeek"), 'show_day'=>$langs->trans("ViewDay"), 'show_peruser'=>$langs->trans("ViewPerUser"));
print $form->selectarray('AGENDA_DEFAULT_VIEW', $tmplist, $conf->global->AGENDA_DEFAULT_VIEW);
print '</td></tr>'."\n";
print '</table>'; print '</table>';
dol_fiche_end(); dol_fiche_end();

View File

@ -403,6 +403,9 @@ if ($mode == 'searchkey')
$recordtoshow=array(); $recordtoshow=array();
// Search modules dirs
$modulesdir = dolGetModulesDirs();
$nbempty=0; $nbempty=0;
/*var_dump($langcode); /*var_dump($langcode);
var_dump($transkey); var_dump($transkey);
@ -416,22 +419,23 @@ if ($mode == 'searchkey')
} }
else else
{ {
// Load all translations keys // Search into dir of modules (the $modulesdir is already a list that loop on $conf->file->dol_document_root)
foreach($conf->file->dol_document_root as $keydir => $searchdir) foreach($modulesdir as $keydir => $tmpsearchdir)
{ {
// Directory of translation files $searchdir = $tmpsearchdir; // $searchdir can be '.../htdocs/core/modules/' or '.../htdocs/custom/mymodule/core/modules/'
$dir_lang = $searchdir."/langs/".$langcode;
$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); // 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);
foreach($filearray as $file) $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'])); {
$newlang->load($tmpfile, 0, 0, '', 0); // Load translation files + database overwrite $tmpfile=preg_replace('/.lang/i', '', basename($file['name']));
$newlangfileonly->load($tmpfile, 0, 0, '', 1); // Load translation files only $newlang->load($tmpfile, 0, 0, '', 0); // Load translation files + database overwrite
//print 'After loading lang '.$tmpfile.', newlang has '.count($newlang->tab_translate).' records<br>'."\n"; $newlangfileonly->load($tmpfile, 0, 0, '', 1); // Load translation files only
} //print 'After loading lang '.$tmpfile.', newlang has '.count($newlang->tab_translate).' records<br>'."\n";
}
} }
// Now search into translation array // Now search into translation array

View File

@ -128,7 +128,7 @@ if (! empty($reg[1]) && $reg[1] == 'explorer' && ($reg[2] == '/resources.json' |
foreach ($modulesdir as $dir) foreach ($modulesdir as $dir)
{ {
// Search available module // Search available module
dol_syslog("Scan directory ".$dir." for module descriptor to after search for API files"); dol_syslog("Scan directory ".$dir." for module descriptor files, then search for API files");
$handle=@opendir(dol_osencode($dir)); $handle=@opendir(dol_osencode($dir));
if (is_resource($handle)) if (is_resource($handle))
@ -140,13 +140,13 @@ if (! empty($reg[1]) && $reg[1] == 'explorer' && ($reg[2] == '/resources.json' |
$module = strtolower($regmod[1]); $module = strtolower($regmod[1]);
$moduledirforclass = getModuleDirForApiClass($module); $moduledirforclass = getModuleDirForApiClass($module);
$modulenameforenabled = $module; $modulenameforenabled = $module;
if ($module == 'propale') { $moduleforenabled='propal'; } if ($module == 'propale') { $modulenameforenabled='propal'; }
//dol_syslog("Found module file ".$file." - module=".$module." - moduledirforclass=".$moduledirforclass); dol_syslog("Found module file ".$file." - module=".$module." - moduledirforclass=".$moduledirforclass);
// Defined if module is enabled // Defined if module is enabled
$enabled=true; $enabled=true;
if (empty($conf->$moduleforenabled->enabled)) $enabled=false; if (empty($conf->$modulenameforenabled->enabled)) $enabled=false;
if ($enabled) if ($enabled)
{ {
@ -235,7 +235,13 @@ if (! empty($reg[1]) && ($reg[1] != 'explorer' || ($reg[2] != '/resources.json'
if ($module == 'order') { $classname='Commande'; } if ($module == 'order') { $classname='Commande'; }
//var_dump($classfile);var_dump($classname);exit; //var_dump($classfile);var_dump($classname);exit;
require_once $dir_part_file; $res = include_once $dir_part_file;
if (! $res)
{
print 'API not found (failed to include API file)';
header('HTTP/1.1 501 API not found (failed to include API file)');
exit(0);
}
if (class_exists($classname.'Api')) $api->r->addAPIClass($classname.'Api', '/'); if (class_exists($classname.'Api')) $api->r->addAPIClass($classname.'Api', '/');
} }
else else
@ -247,7 +253,14 @@ if (! empty($reg[1]) && ($reg[1] != 'explorer' || ($reg[2] != '/resources.json'
$dir_part_file = dol_buildpath('/'.$moduledirforclass.'/class/api_'.$classfile.'.class.php'); $dir_part_file = dol_buildpath('/'.$moduledirforclass.'/class/api_'.$classfile.'.class.php');
$classname=ucwords($module); $classname=ucwords($module);
require_once $dir_part_file; $res = include_once $dir_part_file;
if (! $res)
{
print 'API not found (failed to include API file)';
header('HTTP/1.1 501 API not found (failed to include API file)');
exit(0);
}
if (class_exists($classname)) $api->r->addAPIClass($classname); if (class_exists($classname)) $api->r->addAPIClass($classname);
} }
} }

View File

@ -180,11 +180,11 @@ class BlockedLog
public function setObjectData(&$object) public function setObjectData(&$object)
{ {
// Set date // Set date
if($object->element == 'payment' || $object->element == 'payment_supplier') if ($object->element == 'payment' || $object->element == 'payment_supplier')
{ {
$this->date_object = $object->datepaye; $this->date_object = $object->datepaye;
} }
if ($object->element=='payment_salary') elseif ($object->element=='payment_salary')
{ {
$this->date_object = $object->datev; $this->date_object = $object->datev;
} }

View File

@ -35,111 +35,117 @@ function printBookmarksList($aDb, $aLangs)
$db = $aDb; $db = $aDb;
$langs = $aLangs; $langs = $aLangs;
require_once DOL_DOCUMENT_ROOT.'/bookmarks/class/bookmark.class.php';
if (! isset($conf->global->BOOKMARKS_SHOW_IN_MENU)) $conf->global->BOOKMARKS_SHOW_IN_MENU=5;
$langs->load("bookmarks");
$url= $_SERVER["PHP_SELF"];
if (! empty($_SERVER["QUERY_STRING"]))
{
$url.=(dol_escape_htmltag($_SERVER["QUERY_STRING"])?'?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]):'');
}
else
{
global $sortfield,$sortorder;
$tmpurl='';
// No urlencode, all param $url will be urlencoded later
if ($sortfield) $tmpurl.=($tmpurl?'&':'').'sortfield='.$sortfield;
if ($sortorder) $tmpurl.=($tmpurl?'&':'').'sortorder='.$sortorder;
if (is_array($_POST))
{
foreach($_POST as $key => $val)
{
if (preg_match('/^search_/', $key) && $val != '') $tmpurl.=($tmpurl?'&':'').$key.'='.$val;
}
}
$url.=($tmpurl?'?'.$tmpurl:'');
}
$ret = '';
// Menu bookmark
$ret.= '<div class="menu_top"></div>'."\n"; $ret.= '<div class="menu_top"></div>'."\n";
$ret.= '<!-- form with POST method by default, will be replaced with GET for external link by js -->'."\n"; if (! empty($conf->use_javascript_ajax)) { // Bookmark autosubmit can't work when javascript is off.
$ret.= '<form id="actionbookmark" name="actionbookmark" method="POST" action="">';
$ret.= '<select name="bookmark" id="boxbookmark" class="flat boxcombo vmenusearchselectcombo" alt="Bookmarks">'; require_once DOL_DOCUMENT_ROOT.'/bookmarks/class/bookmark.class.php';
$ret.= '<option hidden value="listbookmarks" class="optiongrey" selected rel="'.DOL_URL_ROOT.'/bookmarks/list.php">'.$langs->trans('Bookmarks').'</option>'; if (! isset($conf->global->BOOKMARKS_SHOW_IN_MENU)) $conf->global->BOOKMARKS_SHOW_IN_MENU=5;
$ret.= '<option value="listbookmark" class="optionblue" rel="'.dol_escape_htmltag(DOL_URL_ROOT.'/bookmarks/list.php').'">'.dol_escape_htmltag($user->rights->bookmark->creer ? $langs->trans('EditBookmarks') : $langs->trans('ListOfBookmarks')).'...</option>';
// Url to go on create new bookmark page $langs->load("bookmarks");
if ($user->rights->bookmark->creer)
{ $url= $_SERVER["PHP_SELF"];
//$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;urlsource='.urlencode($url).'&amp;url='.urlencode($url);
$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;url='.urlencode($url); if (! empty($_SERVER["QUERY_STRING"]))
$ret.= '<option value="newbookmark" class="optionblue" rel="'.dol_escape_htmltag($urltoadd).'">'.dol_escape_htmltag($langs->trans('AddThisPageToBookmarks')).'...</option>';
}
// Menu with all bookmarks
if (! empty($conf->global->BOOKMARKS_SHOW_IN_MENU))
{
$sql = "SELECT rowid, title, url, target FROM ".MAIN_DB_PREFIX."bookmark";
$sql.= " WHERE (fk_user = ".$user->id." OR fk_user is NULL OR fk_user = 0)";
$sql.= " AND entity IN (".getEntity('bookmarks').")";
$sql.= " ORDER BY position";
if ($resql = $db->query($sql) )
{ {
$i=0; $url.=(dol_escape_htmltag($_SERVER["QUERY_STRING"])?'?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]):'');
while ($i < $conf->global->BOOKMARKS_SHOW_IN_MENU && $obj = $db->fetch_object($resql))
{
$ret.='<option name="bookmark'.$obj->rowid.'" value="'.$obj->rowid.'" '.($obj->target == 1?' target="_blank"':'').' rel="'.dol_escape_htmltag($obj->url).'">';
//$ret.='<span class="fa fa-print">aa</span>';
$ret.=img_picto('','object_bookmark').' ';
$ret.=$obj->title;
$ret.='</option>';
$i++;
}
} }
else else
{ {
dol_print_error($db); global $sortfield,$sortorder;
$tmpurl='';
// No urlencode, all param $url will be urlencoded later
if ($sortfield) $tmpurl.=($tmpurl?'&':'').'sortfield='.$sortfield;
if ($sortorder) $tmpurl.=($tmpurl?'&':'').'sortorder='.$sortorder;
if (is_array($_POST))
{
foreach($_POST as $key => $val)
{
if (preg_match('/^search_/', $key) && $val != '') $tmpurl.=($tmpurl?'&':'').$key.'='.$val;
}
}
$url.=($tmpurl?'?'.$tmpurl:'');
} }
$ret = '';
// Menu bookmark
$ret.= '<div class="menu_top"></div>'."\n";
$ret.= '<!-- form with POST method by default, will be replaced with GET for external link by js -->'."\n";
$ret.= '<form id="actionbookmark" name="actionbookmark" method="POST" action="">';
$ret.= '<select name="bookmark" id="boxbookmark" class="flat boxcombo vmenusearchselectcombo" alt="Bookmarks">';
$ret.= '<option hidden value="listbookmarks" class="optiongrey" selected rel="'.DOL_URL_ROOT.'/bookmarks/list.php">'.$langs->trans('Bookmarks').'</option>';
$ret.= '<option value="listbookmark" class="optionblue" rel="'.dol_escape_htmltag(DOL_URL_ROOT.'/bookmarks/list.php').'">'.dol_escape_htmltag($user->rights->bookmark->creer ? $langs->trans('EditBookmarks') : $langs->trans('ListOfBookmarks')).'...</option>';
// Url to go on create new bookmark page
if (! empty($user->rights->bookmark->creer))
{
//$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;urlsource='.urlencode($url).'&amp;url='.urlencode($url);
$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;url='.urlencode($url);
$ret.= '<option value="newbookmark" class="optionblue" rel="'.dol_escape_htmltag($urltoadd).'">'.dol_escape_htmltag($langs->trans('AddThisPageToBookmarks')).'...</option>';
}
// Menu with all bookmarks
if (! empty($conf->global->BOOKMARKS_SHOW_IN_MENU))
{
$sql = "SELECT rowid, title, url, target FROM ".MAIN_DB_PREFIX."bookmark";
$sql.= " WHERE (fk_user = ".$user->id." OR fk_user is NULL OR fk_user = 0)";
$sql.= " AND entity IN (".getEntity('bookmarks').")";
$sql.= " ORDER BY position";
if ($resql = $db->query($sql) )
{
$i=0;
while ($i < $conf->global->BOOKMARKS_SHOW_IN_MENU && $obj = $db->fetch_object($resql))
{
$ret.='<option name="bookmark'.$obj->rowid.'" value="'.$obj->rowid.'" '.($obj->target == 1?' target="_blank"':'').' rel="'.dol_escape_htmltag($obj->url).'">';
//$ret.='<span class="fa fa-print">aa</span>';
$ret.=img_picto('','object_bookmark').' ';
$ret.=dol_escape_htmltag($obj->title);
$ret.='</option>';
$i++;
}
}
else
{
dol_print_error($db);
}
}
$ret.= '</select>';
$ret.= '</form>';
$ret.=ajax_combobox('boxbookmark');
$ret.='<script type="text/javascript">
$(document).ready(function () {';
$ret.=' jQuery("#boxbookmark").change(function() {
var urlselected = jQuery("#boxbookmark option:selected").attr("rel");
if (! urlselected) console.log("Error, failed to get the URL to jump to from the rel attribute");
var urltarget = jQuery("#boxbookmark option:selected").attr("target");
if (! urltarget) { urltarget=""; }
jQuery("form#actionbookmark").attr("target",urltarget);
jQuery("form#actionbookmark").attr("action",urlselected);
console.log("We change select bookmark. We choose urlselected="+urlselected+" with target="+urltarget);
// Method is POST for internal link, GET for external
if (urlselected.startsWith(\'http\'))
{
var newmethod=\'GET\';
jQuery("form#actionbookmark").attr("method", newmethod);
console.log("We change method to newmethod="+newmethod);
jQuery("#actionbookmark").submit();
console.log("We restore method to POST");
jQuery("form#actionbookmark").attr("method", \'POST\');
}
else
{
jQuery("#actionbookmark").submit();
}
});';
$ret.='})</script>';
} }
$ret.= '</select>'; $ret.= '<div class="menu_end"></div>'."\n";
$ret.= '</form>';
$ret.=ajax_combobox('boxbookmark');
$ret.='<script type="text/javascript">
$(document).ready(function () {';
$ret.=' jQuery("#boxbookmark").change(function() {
var urlselected = jQuery("#boxbookmark option:selected").attr("rel");
if (! urlselected) console.log("Error, failed to get the URL to jump to from the rel attribute");
var urltarget = jQuery("#boxbookmark option:selected").attr("target");
if (! urltarget) { urltarget=""; }
jQuery("form#actionbookmark").attr("target",urltarget);
jQuery("form#actionbookmark").attr("action",urlselected);
console.log("We change select bookmark. We choose urlselected="+urlselected+" with target="+urltarget);
// Method is POST for internal link, GET for external
if (urlselected.startsWith(\'http\'))
{
var newmethod=\'GET\';
jQuery("form#actionbookmark").attr("method", newmethod);
console.log("We change method to newmethod="+newmethod);
jQuery("#actionbookmark").submit();
console.log("We restore method to POST");
jQuery("form#actionbookmark").attr("method", \'POST\');
}
else
{
jQuery("#actionbookmark").submit();
}
});';
$ret.='})</script>';
$ret .= '<div class="menu_end"></div>';
return $ret; return $ret;
} }

View File

@ -1135,7 +1135,6 @@ class ActionComm extends CommonObject
if ($this->type_code != 'AC_OTH_AUTO') $labeltype = $langs->trans('ActionAC_MANUAL'); if ($this->type_code != 'AC_OTH_AUTO') $labeltype = $langs->trans('ActionAC_MANUAL');
} }
$tooltip = '<u>' . $langs->trans('ShowAction'.$objp->code) . '</u>'; $tooltip = '<u>' . $langs->trans('ShowAction'.$objp->code) . '</u>';
if (! empty($this->ref)) if (! empty($this->ref))
$tooltip .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref; $tooltip .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref;
@ -1204,10 +1203,13 @@ class ActionComm extends CommonObject
{ {
$libelle.=(($this->type_code && $libelle!=$langs->transnoentities("Action".$this->type_code) && $langs->transnoentities("Action".$this->type_code)!="Action".$this->type_code)?' ('.$langs->transnoentities("Action".$this->type_code).')':''); $libelle.=(($this->type_code && $libelle!=$langs->transnoentities("Action".$this->type_code) && $langs->transnoentities("Action".$this->type_code)!="Action".$this->type_code)?' ('.$langs->transnoentities("Action".$this->type_code).')':'');
} }
$result.=$linkstart.img_object(($notooltip?'':$langs->trans("ShowAction").': '.$libelle), ($overwritepicto?$overwritepicto:'action'), ($notooltip?'class="valigntextbottom"':'class="classfortooltip valigntextbottom"'), 0, 0, $notooltip?0:1).$linkend;
} }
if ($withpicto==1) $result.=' ';
$result.=$linkstart.$libelleshort.$linkend; $result.=$linkstart;
if ($withpicto) $result.=img_object(($notooltip?'':$langs->trans("ShowAction").': '.$libelle), ($overwritepicto?$overwritepicto:'action'), ($notooltip?'class="'.(($withpicto != 2) ? 'paddingright ' : '').'valigntextbottom"':'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip valigntextbottom"'), 0, 0, $notooltip?0:1);
$result.=$libelleshort;
$result.=$linkend;
return $result; return $result;
} }
@ -1530,10 +1532,18 @@ class ActionComm extends CommonObject
return 0; return 0;
} }
$now = dol_now();
dol_syslog(__METHOD__, LOG_DEBUG); dol_syslog(__METHOD__, LOG_DEBUG);
// TODO Scan events of type 'email' into table llx_actioncomm_reminder with status todo, send email, then set status to done
// Delete also very old past events (we do not keep more than 1 month record in past)
$sql = "DELETE FROM ".MAIN_DB_PREFIX."actioncomm_reminder WHERE dateremind < '".$this->jdate($now - (3600 * 24 * 32))."'";
$this->db->query($sql);
return 0; return 0;
} }

View File

@ -0,0 +1,229 @@
<?php
/* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* \file class/actioncommreminder.class.php
* \ingroup agenda
* \brief This file is a CRUD class file for ActionCommReminder (Create/Read/Update/Delete)
*/
// Put here all includes required by your class file
require_once DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php';
/**
* Class for ActionCommReminder
*/
class ActionCommReminder extends CommonObject
{
/**
* @var string ID to identify managed object
*/
public $element = 'actioncomm_reminder';
/**
* @var string Name of table without prefix where object is stored
*/
public $table_element = 'actioncomm_reminder';
/**
* @var array Does actioncommreminder support multicompany module ? 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
*/
public $ismultientitymanaged = 0;
/**
* @var string String with name of icon for actioncommreminder. Must be the part after the 'object_' into object_actioncommreminder.png
*/
public $picto = 'generic';
/**
* 'type' if the field format.
* 'label' the translation key.
* 'enabled' is a condition when the field must be managed.
* 'visible' says if field is visible in list (Examples: 0=Not visible, 1=Visible on list and create/update/view forms, 2=Visible on list only. Using a negative value means field is not shown by default on list but can be selected for viewing)
* 'notnull' is set to 1 if not null in database. Set to -1 if we must set data to null if empty ('' or 0).
* 'index' if we want an index in database.
* 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommanded to name the field fk_...).
* 'position' is the sort order of field.
* 'searchall' is 1 if we want to search in this field when making a search from the quick search button.
* 'isameasure' must be set to 1 if you want to have a total on list for this field. Field type must be summable like integer or double(24,8).
* 'help' is a string visible as a tooltip on field
* 'comment' is not used. You can store here any text of your choice. It is not used by application.
* 'default' is a default value for creation (can still be replaced by the global setup of default values)
* 'showoncombobox' if field must be shown into the label of combobox
*/
// BEGIN MODULEBUILDER PROPERTIES
/**
* @var array Array with all fields and their property. Do not use it as a static var. It may be modified by constructor.
*/
public $fields=array(
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'visible'=>-1, 'enabled'=>1, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>"Id",),
'dateremind' => array('type'=>'datetime', 'label'=>'DateRemind', 'visible'=>1, 'enabled'=>1, 'position'=>60, 'notnull'=>1, 'index'=>1,),
'typeremind' => array('type'=>'varchar(32)', 'label'=>'TypeRemind', 'visible'=>-1, 'enabled'=>1, 'position'=>55, 'notnull'=>1, 'comment'=>"email, browser, sms",),
'fk_user' => array('type'=>'integer', 'label'=>'User', 'visible'=>-1, 'enabled'=>1, 'position'=>65, 'notnull'=>1, 'index'=>1,),
'offsetvalue' => array('type'=>'integer', 'label'=>'OffsetValue', 'visible'=>1, 'enabled'=>1, 'position'=>56, 'notnull'=>1,),
'offsetunit' => array('type'=>'varchar(1)', 'label'=>'OffsetUnit', 'visible'=>1, 'enabled'=>1, 'position'=>57, 'notnull'=>1, 'comment'=>"m, h, d, w",),
'status' => array('type'=>'integer', 'label'=>'Status', 'visible'=>1, 'enabled'=>1, 'position'=>1000, 'notnull'=>1, 'default'=>0, 'index'=>0, 'arrayofkeyval'=>array('0'=>'ToDo', '1'=>'Done')),
);
public $rowid;
public $dateremind;
public $typeremind;
public $fk_user;
public $offsetvalue;
public $offsetunit;
public $status;
// END MODULEBUILDER PROPERTIES
/**
* Constructor
*
* @param DoliDb $db Database handler
*/
public function __construct(DoliDB $db)
{
global $conf;
$this->db = $db;
if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID)) $this->fields['rowid']['visible']=0;
if (empty($conf->multicompany->enabled)) $this->fields['entity']['enabled']=0;
}
/**
* Create object into database
*
* @param User $user User that creates
* @param bool $notrigger false=launch triggers after, true=disable triggers
* @return int <0 if KO, Id of created object if OK
*/
public function create(User $user, $notrigger = false)
{
return $this->createCommon($user, $notrigger);
}
/**
* Load object in memory from the database
*
* @param int $id Id object
* @param string $ref Ref
* @return int <0 if KO, 0 if not found, >0 if OK
*/
public function fetch($id, $ref = null)
{
$result = $this->fetchCommon($id, $ref);
return $result;
}
/**
* Update object into database
*
* @param User $user User that modifies
* @param bool $notrigger false=launch triggers after, true=disable triggers
* @return int <0 if KO, >0 if OK
*/
public function update(User $user, $notrigger = false)
{
return $this->updateCommon($user, $notrigger);
}
/**
* Delete object in database
*
* @param User $user User that deletes
* @param bool $notrigger false=launch triggers after, true=disable triggers
* @return int <0 if KO, >0 if OK
*/
public function delete(User $user, $notrigger = false)
{
return $this->deleteCommon($user, $notrigger);
}
/**
* Retourne le libelle du status d'un user (actif, inactif)
*
* @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
* @return string Label of status
*/
function getLibStatut($mode=0)
{
return $this->LibStatut($this->status,$mode);
}
/**
* Return the status
*
* @param int $status Id status
* @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto
* @return string Label of status
*/
static function LibStatut($status,$mode=0)
{
global $langs;
if ($mode == 0)
{
$prefix='';
if ($status == 1) return $langs->trans('Done');
if ($status == 0) return $langs->trans('ToDo');
}
if ($mode == 1)
{
if ($status == 1) return $langs->trans('Done');
if ($status == 0) return $langs->trans('ToDo');
}
if ($mode == 2)
{
if ($status == 1) return img_picto($langs->trans('Done'),'statut4').' '.$langs->trans('Done');
if ($status == 0) return img_picto($langs->trans('ToDo'),'statut5').' '.$langs->trans('ToDo');
}
if ($mode == 3)
{
if ($status == 1) return img_picto($langs->trans('Done'),'statut4');
if ($status == 0) return img_picto($langs->trans('ToDo'),'statut5');
}
if ($mode == 4)
{
if ($status == 1) return img_picto($langs->trans('Done'),'statut4').' '.$langs->trans('Done');
if ($status == 0) return img_picto($langs->trans('ToDo'),'statut5').' '.$langs->trans('ToDo');
}
if ($mode == 5)
{
if ($status == 1) return $langs->trans('Done').' '.img_picto($langs->trans('Done'),'statut4');
if ($status == 0) return $langs->trans('ToDo').' '.img_picto($langs->trans('ToDo'),'statut5');
}
if ($mode == 6)
{
if ($status == 1) return $langs->trans('Done').' '.img_picto($langs->trans('Done'),'statut4');
if ($status == 0) return $langs->trans('ToDo').' '.img_picto($langs->trans('ToDo'),'statut5');
}
}
/**
* Initialise object with example values
* Id must be 0 if object instance is a specimen
*
* @return void
*/
public function initAsSpecimen()
{
$this->initAsSpecimenCommon();
}
}

View File

@ -1364,7 +1364,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
print '>'; print '>';
print '<table class="centpercent cal_event'.(empty($event->transparency)?'':' cal_event_busy').'" style="'.$h; print '<table class="centpercent cal_event'.(empty($event->transparency)?'':' cal_event_busy').'" style="'.$h;
print 'background: #'.$color.';'; print 'background: #'.$color.';';
print 'background: -webkit-gradient(linear, left top, left bottom, from(#'.dol_color_minus($color, 0).'), to(#'.dol_color_minus($color, 1).'));'; print 'background: -webkit-gradient(linear, left top, left bottom, from(#'.dol_color_minus($color, -4).'), to(#'.dol_color_minus($color, -3).'));';
//if (! empty($event->transparency)) print 'background: #'.$color.'; background: -webkit-gradient(linear, left top, left bottom, from(#'.$color.'), to(#'.dol_color_minus($color,1).'));'; //if (! empty($event->transparency)) print 'background: #'.$color.'; background: -webkit-gradient(linear, left top, left bottom, from(#'.$color.'), to(#'.dol_color_minus($color,1).'));';
//else print 'background-color: transparent !important; background: none; border: 1px solid #bbb;'; //else print 'background-color: transparent !important; background: none; border: 1px solid #bbb;';
//print ' -moz-border-radius:4px;"'; //print ' -moz-border-radius:4px;"';
@ -1572,7 +1572,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
* Change color with a delta * Change color with a delta
* *
* @param string $color Color * @param string $color Color
* @param int $minus Delta (1 = 16 unit) * @param int $minus Delta (1 = 16 unit). Positive value = darker color, Negative value = brighter color.
* @param int $minusunit Minus unit * @param int $minusunit Minus unit
* @return string New color * @return string New color
*/ */

View File

@ -3357,11 +3357,11 @@ class Propal extends CommonObject
$linkstart.=$linkclose.'>'; $linkstart.=$linkclose.'>';
$linkend='</a>'; $linkend='</a>';
if ($withpicto) $result .= $linkstart;
$result.=($linkstart.img_object(($notooltip?'':$label), $this->picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend); if ($withpicto) $result.=img_object(($notooltip?'':$label), $this->picto, ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
if ($withpicto && $withpicto != 2) if ($withpicto != 2) $result.= $this->ref;
$result.=' '; $result .= $linkend;
$result.=$linkstart.$this->ref.$linkend;
return $result; return $result;
} }

View File

@ -1906,6 +1906,40 @@ class Commande extends CommonOrder
return $nb; return $nb;
} }
/**
* Count numbe rof shipments for this order
*
* @return int <0 if KO, Nb of shipment found if OK
*/
function getNbOfShipments()
{
$nb = 0;
$sql = 'SELECT COUNT(DISTINCT ed.fk_expedition) as nb';
$sql.= ' FROM '.MAIN_DB_PREFIX.'expeditiondet as ed,';
$sql.= ' '.MAIN_DB_PREFIX.'commandedet as cd';
$sql.= ' WHERE';
$sql.= ' ed.fk_origin_line = cd.rowid';
$sql.= ' AND cd.fk_commande =' .$this->id;
//print $sql;
dol_syslog(get_class($this)."::getNbOfShipments", LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql)
{
$obj = $this->db->fetch_object($resql);
if ($obj) $nb = $obj->nb;
$this->db->free($resql);
return $nb;
}
else
{
$this->error=$this->db->lasterror();
return -1;
}
}
/** /**
* Load array this->expeditions of lines of shipments with nb of products sent for each order line * Load array this->expeditions of lines of shipments with nb of products sent for each order line
* Note: For a dedicated shipment, the fetch_lines can be used to load the qty_asked and qty_shipped. This function is use to return qty_shipped cumulated for the order * Note: For a dedicated shipment, the fetch_lines can be used to load the qty_asked and qty_shipped. This function is use to return qty_shipped cumulated for the order
@ -1932,18 +1966,18 @@ class Commande extends CommonOrder
//print $sql; //print $sql;
dol_syslog(get_class($this)."::loadExpeditions", LOG_DEBUG); dol_syslog(get_class($this)."::loadExpeditions", LOG_DEBUG);
$result = $this->db->query($sql); $resql = $this->db->query($sql);
if ($result) if ($resql)
{ {
$num = $this->db->num_rows($result); $num = $this->db->num_rows($resql);
$i = 0; $i = 0;
while ($i < $num) while ($i < $num)
{ {
$obj = $this->db->fetch_object($result); $obj = $this->db->fetch_object($resql);
$this->expeditions[$obj->rowid] = $obj->qty; $this->expeditions[$obj->rowid] = $obj->qty;
$i++; $i++;
} }
$this->db->free(); $this->db->free($resql);
return $num; return $num;
} }
else else
@ -1951,7 +1985,6 @@ class Commande extends CommonOrder
$this->error=$this->db->lasterror(); $this->error=$this->db->lasterror();
return -1; return -1;
} }
} }
/** /**
@ -2002,18 +2035,18 @@ class Commande extends CommonOrder
$sql.= " FROM ".MAIN_DB_PREFIX."product_stock as ps"; $sql.= " FROM ".MAIN_DB_PREFIX."product_stock as ps";
$sql.= " WHERE ps.fk_product IN (".join(',',$array_of_product).")"; $sql.= " WHERE ps.fk_product IN (".join(',',$array_of_product).")";
$sql.= ' GROUP BY fk_product '; $sql.= ' GROUP BY fk_product ';
$result = $this->db->query($sql); $resql = $this->db->query($sql);
if ($result) if ($resql)
{ {
$num = $this->db->num_rows($result); $num = $this->db->num_rows($resql);
$i = 0; $i = 0;
while ($i < $num) while ($i < $num)
{ {
$obj = $this->db->fetch_object($result); $obj = $this->db->fetch_object($resql);
$this->stocks[$obj->fk_product] = $obj->total; $this->stocks[$obj->fk_product] = $obj->total;
$i++; $i++;
} }
$this->db->free(); $this->db->free($resql);
} }
} }
return 0; return 0;
@ -3368,7 +3401,6 @@ class Commande extends CommonOrder
if ($short) return $url; if ($short) return $url;
$picto = 'order';
$label = ''; $label = '';
if ($user->rights->commande->lire) { if ($user->rights->commande->lire) {
@ -3402,9 +3434,11 @@ class Commande extends CommonOrder
$linkstart.=$linkclose.'>'; $linkstart.=$linkclose.'>';
$linkend='</a>'; $linkend='</a>';
if ($withpicto) $result.=($linkstart.img_object(($notooltip?'':$label), $picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend); $result .= $linkstart;
if ($withpicto && $withpicto != 2) $result.=' '; if ($withpicto) $result.=img_object(($notooltip?'':$label), $this->picto, ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
$result.=$linkstart.$this->ref.$linkend; if ($withpicto != 2) $result.= $this->ref;
$result .= $linkend;
return $result; return $result;
} }

View File

@ -1324,11 +1324,14 @@ class Account extends CommonObject
if ($add_save_lastsearch_values) $url.='&save_lastsearch_values=1'; if ($add_save_lastsearch_values) $url.='&save_lastsearch_values=1';
} }
$link = '<a href="'.$url.$linkclose; $linkstart = '<a href="'.$url.$linkclose;
$linkend='</a>'; $linkend = '</a>';
$result .= $linkstart;
if ($withpicto) $result.=img_object(($notooltip?'':$label), $this->picto, ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
if ($withpicto != 2) $result.= $this->ref.($option == 'reflabel' && $this->label ? ' - '.$this->label : '');
$result .= $linkend;
if ($withpicto) $result.=($link.img_object($label, 'account', 'class="classfortooltip"').$linkend.' ');
$result.=$link.$this->ref.($option == 'reflabel' && $this->label ? ' - '.$this->label : '').$linkend;
return $result; return $result;
} }

View File

@ -1161,9 +1161,10 @@ class Facture extends CommonInvoice
$linkstart.=$linkclose.'>'; $linkstart.=$linkclose.'>';
$linkend='</a>'; $linkend='</a>';
if ($withpicto) $result.=($linkstart.img_object(($notooltip?'':$label), $picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend); $result .= $linkstart;
if ($withpicto && $withpicto != 2) $result.=' '; if ($withpicto) $result.=img_object(($notooltip?'':$label), $picto, ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
if ($withpicto != 2) $result.=$linkstart.($max?dol_trunc($this->ref,$max):$this->ref).$linkend; if ($withpicto != 2) $result.= ($max?dol_trunc($this->ref,$max):$this->ref);
$result .= $linkend;
if ($addlinktonotes) if ($addlinktonotes)
{ {

View File

@ -40,6 +40,7 @@ class Contact extends CommonObject
public $element='contact'; public $element='contact';
public $table_element='socpeople'; public $table_element='socpeople';
public $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe public $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
public $picto = 'contact';
public $civility_id; // In fact we store civility_code public $civility_id; // In fact we store civility_code
public $civility_code; public $civility_code;
@ -1053,8 +1054,12 @@ class Contact extends CommonObject
$linkend='</a>'; $linkend='</a>';
} }
if ($withpicto) $result.=($linkstart.img_object($label, 'contact', 'class="classfortooltip"').$linkend.' ');
$result.=$linkstart.($maxlen?dol_trunc($this->getFullName($langs),$maxlen):$this->getFullName($langs)).$linkend; $result.=$linkstart;
if ($withpicto) $result.=img_object(($notooltip?'':$label), ($this->picto?$this->picto:'generic'), ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip valigntextbottom"'), 0, 0, $notooltip?0:1);
if ($withpicto != 2) $result.=($maxlen?dol_trunc($this->getFullName($langs),$maxlen):$this->getFullName($langs));
$result.=$linkend;
return $result; return $result;
} }

View File

@ -1878,7 +1878,6 @@ class Contrat extends CommonObject
if ($add_save_lastsearch_values) $url.='&save_lastsearch_values=1'; if ($add_save_lastsearch_values) $url.='&save_lastsearch_values=1';
//} //}
$picto = 'contract';
$label = ''; $label = '';
if ($user->rights->contrat->lire) { if ($user->rights->contrat->lire) {
@ -1913,9 +1912,11 @@ class Contrat extends CommonObject
$linkstart.=$linkclose.'>'; $linkstart.=$linkclose.'>';
$linkend='</a>'; $linkend='</a>';
if ($withpicto) $result.=($linkstart.img_object(($notooltip?'':$label), $picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend); $result .= $linkstart;
if ($withpicto && $withpicto != 2) $result.=' '; if ($withpicto) $result.=img_object(($notooltip?'':$label), $this->picto, ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
$result.=$linkstart.$this->ref.$linkend; if ($withpicto != 2) $result.= $this->ref;
$result .= $linkend;
return $result; return $result;
} }

View File

@ -340,16 +340,6 @@ abstract class CommonObject
// No constructor as it is an abstract class // No constructor as it is an abstract class
/**
* Return if an object manage the multicompany field and how.
*
* @return int 0=No entity field managed, 1=Test with field entity, 2=Test with link to thirdparty (and sales representative)
*/
function getIsmultientitymanaged()
{
return $this->ismultientitymanaged;
}
/** /**
* Check an object id/ref exists * Check an object id/ref exists
* If you don't need/want to instantiate object and just need to know if object exists, use this method instead of fetch * If you don't need/want to instantiate object and just need to know if object exists, use this method instead of fetch
@ -3712,8 +3702,7 @@ abstract class CommonObject
if ($this->statut == 0 && $action == 'editline' && $selected == $line->id) if ($this->statut == 0 && $action == 'editline' && $selected == $line->id)
{ {
$label = (! empty($line->label) ? $line->label : (($line->fk_product > 0) ? $line->product_label : '')); $label = (! empty($line->label) ? $line->label : (($line->fk_product > 0) ? $line->product_label : ''));
if (! empty($conf->global->MAIN_HTML5_PLACEHOLDER)) $placeholder=' placeholder="'.$langs->trans("Label").'"'; $placeholder=' placeholder="'.$langs->trans("Label").'"';
else $placeholder=' title="'.$langs->trans("Label").'"';
$line->pu_ttc = price2num($line->subprice * (1 + ($line->tva_tx/100)), 'MU'); $line->pu_ttc = price2num($line->subprice * (1 + ($line->tva_tx/100)), 'MU');

View File

@ -1010,8 +1010,7 @@ class Form
$out.='<style type="text/css">.ui-autocomplete { z-index: 250; }</style>'; $out.='<style type="text/css">.ui-autocomplete { z-index: 250; }</style>';
if (empty($hidelabel)) print $langs->trans("RefOrLabel").' : '; if (empty($hidelabel)) print $langs->trans("RefOrLabel").' : ';
else if ($hidelabel > 1) { else if ($hidelabel > 1) {
if (! empty($conf->global->MAIN_HTML5_PLACEHOLDER)) $placeholder=' placeholder="'.$langs->trans("RefOrLabel").'"'; $placeholder=' placeholder="'.$langs->trans("RefOrLabel").'"';
else $placeholder=' title="'.$langs->trans("RefOrLabel").'"';
if ($hidelabel == 2) { if ($hidelabel == 2) {
$out.= img_picto($langs->trans("Search"), 'search'); $out.= img_picto($langs->trans("Search"), 'search');
} }
@ -1818,8 +1817,7 @@ class Form
} }
if (empty($hidelabel)) print $langs->trans("RefOrLabel").' : '; if (empty($hidelabel)) print $langs->trans("RefOrLabel").' : ';
else if ($hidelabel > 1) { else if ($hidelabel > 1) {
if (! empty($conf->global->MAIN_HTML5_PLACEHOLDER)) $placeholder=' placeholder="'.$langs->trans("RefOrLabel").'"'; $placeholder=' placeholder="'.$langs->trans("RefOrLabel").'"';
else $placeholder=' title="'.$langs->trans("RefOrLabel").'"';
if ($hidelabel == 2) { if ($hidelabel == 2) {
print img_picto($langs->trans("Search"), 'search'); print img_picto($langs->trans("Search"), 'search');
} }
@ -2566,6 +2564,8 @@ class Form
$this->db->free($result); $this->db->free($result);
$out.=ajax_combobox($htmlname);
if (empty($outputmode)) return $out; if (empty($outputmode)) return $out;
return $outarray; return $outarray;
} }

View File

@ -517,22 +517,31 @@ function GETPOST($paramname, $check='alpha', $method=0, $filter=NULL, $options=N
if (preg_match('/[^0-9,]+/i',$out)) $out=''; if (preg_match('/[^0-9,]+/i',$out)) $out='';
break; break;
case 'alpha': case 'alpha':
$out=trim($out); if (! is_array($out))
// '"' is dangerous because param in url can close the href= or src= and add javascript functions. {
// '../' is dangerous because it allows dir transversals $out=trim($out);
if (preg_match('/"/',$out)) $out=''; // '"' is dangerous because param in url can close the href= or src= and add javascript functions.
else if (preg_match('/\.\.\//',$out)) $out=''; // '../' is dangerous because it allows dir transversals
if (preg_match('/"/',$out)) $out='';
else if (preg_match('/\.\.\//',$out)) $out='';
}
break; break;
case 'san_alpha': case 'san_alpha':
$out=filter_var($out,FILTER_SANITIZE_STRING); $out=filter_var($out,FILTER_SANITIZE_STRING);
break; break;
case 'aZ': case 'aZ':
$out=trim($out); if (! is_array($out))
if (preg_match('/[^a-z]+/i',$out)) $out=''; {
$out=trim($out);
if (preg_match('/[^a-z]+/i',$out)) $out='';
}
break; break;
case 'aZ09': case 'aZ09':
$out=trim($out); if (! is_array($out))
if (preg_match('/[^a-z0-9_\-\.]+/i',$out)) $out=''; {
$out=trim($out);
if (preg_match('/[^a-z0-9_\-\.]+/i',$out)) $out='';
}
break; break;
case 'array': case 'array':
if (! is_array($out) || empty($out)) $out=array(); if (! is_array($out) || empty($out)) $out=array();
@ -541,12 +550,15 @@ function GETPOST($paramname, $check='alpha', $method=0, $filter=NULL, $options=N
$out=dol_string_nohtmltag($out); $out=dol_string_nohtmltag($out);
break; break;
case 'alphanohtml': // Recommended for search params case 'alphanohtml': // Recommended for search params
$out=trim($out); if (! is_array($out))
// '"' is dangerous because param in url can close the href= or src= and add javascript functions. {
// '../' is dangerous because it allows dir transversals $out=trim($out);
if (preg_match('/"/',$out)) $out=''; // '"' is dangerous because param in url can close the href= or src= and add javascript functions.
else if (preg_match('/\.\.\//',$out)) $out=''; // '../' is dangerous because it allows dir transversals
$out=dol_string_nohtmltag($out); if (preg_match('/"/',$out)) $out='';
else if (preg_match('/\.\.\//',$out)) $out='';
$out=dol_string_nohtmltag($out);
}
break; break;
case 'custom': case 'custom':
if (empty($filter)) return 'BadFourthParameterForGETPOST'; if (empty($filter)) return 'BadFourthParameterForGETPOST';
@ -927,10 +939,10 @@ function dol_escape_js($stringtoescape, $mode=0, $noescapebackslashn=0)
function dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0) function dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0)
{ {
// escape quotes and backslashes, newlines, etc. // escape quotes and backslashes, newlines, etc.
$tmp=html_entity_decode($stringtoescape, ENT_COMPAT, 'UTF-8'); // TODO Use htmlspecialchars_decode instead, that make only required change for html form content $tmp=html_entity_decode($stringtoescape, ENT_COMPAT, 'UTF-8'); // TODO Use htmlspecialchars_decode instead, that make only required change for html tags
if (! $keepb) $tmp=strtr($tmp, array("<b>"=>'','</b>'=>'')); if (! $keepb) $tmp=strtr($tmp, array("<b>"=>'','</b>'=>''));
if (! $keepn) $tmp=strtr($tmp, array("\r"=>'\\r',"\n"=>'\\n')); if (! $keepn) $tmp=strtr($tmp, array("\r"=>'\\r',"\n"=>'\\n'));
return htmlentities($tmp, ENT_COMPAT, 'UTF-8'); // TODO Use htmlspecialchars instead, that make only required change for html form content return htmlentities($tmp, ENT_COMPAT, 'UTF-8'); // TODO Use htmlspecialchars instead, that make only required change for html tags
} }
@ -4952,7 +4964,7 @@ function picto_required()
*/ */
function dol_string_nohtmltag($stringtoclean,$removelinefeed=1,$pagecodeto='UTF-8') function dol_string_nohtmltag($stringtoclean,$removelinefeed=1,$pagecodeto='UTF-8')
{ {
// TODO Try to replace with strip_tags($stringtoclean) // TODO Try to replace with strip_tags($stringtoclean)
$pattern = "/<[^<>]+>/"; $pattern = "/<[^<>]+>/";
$stringtoclean = preg_replace('/<br[^>]*>/', "\n", $stringtoclean); $stringtoclean = preg_replace('/<br[^>]*>/', "\n", $stringtoclean);
$temp = dol_html_entity_decode($stringtoclean,ENT_COMPAT,$pagecodeto); $temp = dol_html_entity_decode($stringtoclean,ENT_COMPAT,$pagecodeto);

View File

@ -132,9 +132,9 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir='
$texttoinsert.= " 'notnull'=>".($val['notnull']!=''?$val['notnull']:-1).","; $texttoinsert.= " 'notnull'=>".($val['notnull']!=''?$val['notnull']:-1).",";
if ($val['index']) $texttoinsert.= " 'index'=>".$val['index'].","; if ($val['index']) $texttoinsert.= " 'index'=>".$val['index'].",";
if ($val['searchall']) $texttoinsert.= " 'searchall'=>".$val['searchall'].","; if ($val['searchall']) $texttoinsert.= " 'searchall'=>".$val['searchall'].",";
if ($val['comment']) $texttoinsert.= " 'comment'=>'".$val['comment']."',"; if ($val['comment']) $texttoinsert.= " 'comment'=>\"".preg_replace('/"/', '', $val['comment'])."\","; // addslashes is escape for PHP
if ($val['isameasure']) $texttoinsert.= " 'isameasure'=>'".$val['isameasure']."',"; if ($val['isameasure']) $texttoinsert.= " 'isameasure'=>'".$val['isameasure']."',";
if ($val['help']) $texttoinsert.= " 'help'=>'".$val['help']."',"; if ($val['help']) $texttoinsert.= " 'help'=>\"".preg_replace('/"/', '', $val['help'])."\","; // addslashes is escape for PHP
if ($val['arrayofkeyval']) if ($val['arrayofkeyval'])
{ {
$texttoinsert.= " 'arrayofkeyval'=>array("; $texttoinsert.= " 'arrayofkeyval'=>array(";
@ -215,8 +215,8 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir='',
$pathoffiletoclasssrc=$readdir.'/class/'.strtolower($objectname).'.class.php'; $pathoffiletoclasssrc=$readdir.'/class/'.strtolower($objectname).'.class.php';
// Edit .sql file // Edit .sql file
$pathoffiletoeditsrc=$readdir.'/sql/llx_'.strtolower($objectname).'.sql'; $pathoffiletoeditsrc=$readdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql';
$pathoffiletoedittarget=$destdir.'/sql/llx_'.strtolower($objectname).'.sql'.($readdir != $destdir ? '.new' : ''); $pathoffiletoedittarget=$destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql'.($readdir != $destdir ? '.new' : '');
if (! dol_is_file($pathoffiletoeditsrc)) if (! dol_is_file($pathoffiletoeditsrc))
{ {
$langs->load("errors"); $langs->load("errors");
@ -287,8 +287,8 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir='',
} }
// Edit .key.sql file // Edit .key.sql file
$pathoffiletoeditsrc=$destdir.'/sql/llx_'.strtolower($objectname).'.key.sql'; $pathoffiletoeditsrc=$destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql';
$pathoffiletoedittarget=$destdir.'/sql/llx_'.strtolower($objectname).'.key.sql'.($readdir != $destdir ? '.new' : ''); $pathoffiletoedittarget=$destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql'.($readdir != $destdir ? '.new' : '');
$contentsql = file_get_contents(dol_osencode($pathoffiletoeditsrc), 'r'); $contentsql = file_get_contents(dol_osencode($pathoffiletoeditsrc), 'r');
@ -301,7 +301,7 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir='',
$i++; $i++;
if ($val['index']) if ($val['index'])
{ {
$texttoinsert.= "ALTER TABLE llx_".strtolower($objectname)." ADD INDEX idx_".strtolower($objectname)."_".$key." (".$key.");"; $texttoinsert.= "ALTER TABLE llx_".strtolower($module).'_'.strtolower($objectname)." ADD INDEX idx_".strtolower($module).'_'.strtolower($objectname)."_".$key." (".$key.");";
$texttoinsert.= "\n"; $texttoinsert.= "\n";
} }
} }

View File

@ -61,10 +61,13 @@ function commande_prepare_head(Commande $object)
if (($conf->expedition_bon->enabled && $user->rights->expedition->lire) if (($conf->expedition_bon->enabled && $user->rights->expedition->lire)
|| ($conf->livraison_bon->enabled && $user->rights->expedition->livraison->lire)) || ($conf->livraison_bon->enabled && $user->rights->expedition->livraison->lire))
{ {
$nbShipments=$object->getNbOfShipments(); $nbReceiption=0;
$head[$h][0] = DOL_URL_ROOT.'/expedition/shipment.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/expedition/shipment.php?id='.$object->id;
if ($conf->expedition_bon->enabled) $text=$langs->trans("Shipments"); if ($conf->expedition_bon->enabled) $text=$langs->trans("Shipments");
if ($nbShipments > 0) $text.= ' <span class="badge">'.$nbShipments.'</span>';
if ($conf->expedition_bon->enabled && $conf->livraison_bon->enabled) $text.='/'; if ($conf->expedition_bon->enabled && $conf->livraison_bon->enabled) $text.='/';
if ($conf->livraison_bon->enabled) $text.=$langs->trans("Receivings"); if ($conf->livraison_bon->enabled) $text.=$langs->trans("Receivings");
if ($nbReceiption > 0) $text.= ' <span class="badge">'.$nbReceiption.'</span>';
$head[$h][1] = $text; $head[$h][1] = $text;
$head[$h][2] = 'shipping'; $head[$h][2] = 'shipping';
$h++; $h++;

View File

@ -589,9 +589,10 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t
* @param int $restricteditformytask 0=No restriction, 1=Enable add time only if task is a task i am affected to * @param int $restricteditformytask 0=No restriction, 1=Enable add time only if task is a task i am affected to
* @param int $preselectedday Preselected day * @param int $preselectedday Preselected day
* @param array $isavailable Array with data that say if user is available for several days for morning and afternoon * @param array $isavailable Array with data that say if user is available for several days for morning and afternoon
* @param int $oldprojectforbreak Old project id of last project break
* @return $inc * @return $inc
*/ */
function projectLinesPerDay(&$inc, $parent, $fuser, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask, $preselectedday, &$isavailable) function projectLinesPerDay(&$inc, $parent, $fuser, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask, $preselectedday, &$isavailable, $oldprojectforbreak=0)
{ {
global $conf, $db, $user, $bc, $langs; global $conf, $db, $user, $bc, $langs;
global $form, $formother, $projectstatic, $taskstatic, $thirdpartystatic; global $form, $formother, $projectstatic, $taskstatic, $thirdpartystatic;
@ -611,7 +612,10 @@ function projectLinesPerDay(&$inc, $parent, $fuser, $lines, &$level, &$projectsr
} }
} }
$oldprojectforbreak = (empty($conf->global->PROJECT_TIMESHEET_DISABLEBREAK_ON_PROJECT)?0:-1); // 0 to start break , -1 no break if (empty($oldprojectforbreak))
{
$oldprojectforbreak = (empty($conf->global->PROJECT_TIMESHEET_DISABLEBREAK_ON_PROJECT)?0:-1); // 0 to start break , -1 no break
}
//dol_syslog('projectLinesPerDay inc='.$inc.' preselectedday='.$preselectedday.' task parent id='.$parent.' level='.$level." count(lines)=".$numlines." count(lineswithoutlevel0)=".count($lineswithoutlevel0)); //dol_syslog('projectLinesPerDay inc='.$inc.' preselectedday='.$preselectedday.' task parent id='.$parent.' level='.$level." count(lines)=".$numlines." count(lineswithoutlevel0)=".count($lineswithoutlevel0));
for ($i = 0 ; $i < $numlines ; $i++) for ($i = 0 ; $i < $numlines ; $i++)
@ -818,8 +822,8 @@ function projectLinesPerDay(&$inc, $parent, $fuser, $lines, &$level, &$projectsr
$level++; $level++;
if ($lines[$i]->id > 0) if ($lines[$i]->id > 0)
{ {
if ($parent == 0) projectLinesPerDay($inc, $lines[$i]->id, $fuser, $lineswithoutlevel0, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $preselectedday, $isavailable); if ($parent == 0) projectLinesPerDay($inc, $lines[$i]->id, $fuser, $lineswithoutlevel0, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $preselectedday, $isavailable, $oldprojectforbreak);
else projectLinesPerDay($inc, $lines[$i]->id, $fuser, $lines, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $preselectedday, $isavailable); else projectLinesPerDay($inc, $lines[$i]->id, $fuser, $lines, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $preselectedday, $isavailable, $oldprojectforbreak);
} }
$level--; $level--;
} }
@ -847,9 +851,10 @@ function projectLinesPerDay(&$inc, $parent, $fuser, $lines, &$level, &$projectsr
* @param string $mine Show only task lines I am assigned to * @param string $mine Show only task lines I am assigned to
* @param int $restricteditformytask 0=No restriction, 1=Enable add time only if task is a task i am affected to * @param int $restricteditformytask 0=No restriction, 1=Enable add time only if task is a task i am affected to
* @param array $isavailable Array with data that say if user is available for several days for morning and afternoon * @param array $isavailable Array with data that say if user is available for several days for morning and afternoon
* @param int $oldprojectforbreak Old project id of last project break
* @return $inc * @return $inc
*/ */
function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask, &$isavailable) function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask, &$isavailable, $oldprojectforbreak=0)
{ {
global $conf, $db, $user, $bc, $langs; global $conf, $db, $user, $bc, $langs;
global $form, $formother, $projectstatic, $taskstatic, $thirdpartystatic; global $form, $formother, $projectstatic, $taskstatic, $thirdpartystatic;
@ -871,7 +876,10 @@ function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$
//dol_syslog('projectLinesPerWeek inc='.$inc.' firstdaytoshow='.$firstdaytoshow.' task parent id='.$parent.' level='.$level." count(lines)=".$numlines." count(lineswithoutlevel0)=".count($lineswithoutlevel0)); //dol_syslog('projectLinesPerWeek inc='.$inc.' firstdaytoshow='.$firstdaytoshow.' task parent id='.$parent.' level='.$level." count(lines)=".$numlines." count(lineswithoutlevel0)=".count($lineswithoutlevel0));
$oldprojectforbreak = (empty($conf->global->PROJECT_TIMESHEET_DISABLEBREAK_ON_PROJECT)?0:-1); // 0 = start break, -1 = never break if (empty($oldprojectforbreak))
{
$oldprojectforbreak = (empty($conf->global->PROJECT_TIMESHEET_DISABLEBREAK_ON_PROJECT)?0:-1); // 0 = start break, -1 = never break
}
for ($i = 0 ; $i < $numlines ; $i++) for ($i = 0 ; $i < $numlines ; $i++)
{ {
@ -1065,8 +1073,8 @@ function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$
$level++; $level++;
if ($lines[$i]->id > 0) if ($lines[$i]->id > 0)
{ {
if ($parent == 0) projectLinesPerWeek($inc, $firstdaytoshow, $fuser, $lines[$i]->id, $lineswithoutlevel0, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $isavailable); if ($parent == 0) projectLinesPerWeek($inc, $firstdaytoshow, $fuser, $lines[$i]->id, $lineswithoutlevel0, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $isavailable, $oldprojectforbreak);
else projectLinesPerWeek($inc, $firstdaytoshow, $fuser, $lines[$i]->id, $lines, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $isavailable); else projectLinesPerWeek($inc, $firstdaytoshow, $fuser, $lines[$i]->id, $lines, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $isavailable, $oldprojectforbreak);
} }
$level--; $level--;
} }

View File

@ -182,7 +182,7 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$mode
else $classname = 'class="tmenu"'; else $classname = 'class="tmenu"';
$idsel='accountancy'; $idsel='accountancy';
$menu->add('/accountancy/index.php?mainmenu=accountancy&amp;leftmenu=', $langs->trans("Accountancy"), 0, $showmode, $atarget, "accountancy", '', 52, $id, $idsel, $classname); $menu->add('/accountancy/index.php?mainmenu=accountancy&amp;leftmenu=', $langs->trans("MenuAccountancy"), 0, $showmode, $atarget, "accountancy", '', 52, $id, $idsel, $classname);
} }

View File

@ -77,9 +77,6 @@ if ($conf->use_javascript_ajax && 1 == 2) // select2 is ko with jmobile
} }
else else
{ {
$conf->global->MAIN_HTML5_PLACEHOLDER = 1;
$usedbyinclude = 1; // Used into next include $usedbyinclude = 1; // Used into next include
include DOL_DOCUMENT_ROOT.'/core/ajax/selectsearchbox.php'; include DOL_DOCUMENT_ROOT.'/core/ajax/selectsearchbox.php';

View File

@ -83,7 +83,7 @@ class InterfaceActionsBlockedLog extends DolibarrTriggers
$b=new BlockedLog($this->db); $b=new BlockedLog($this->db);
$b->action = $action; $b->action = $action;
$b->amounts= $amounts; $b->amounts= $amounts;
$b->setObjectData($object); // Set field ref_object, fk_object, element, object_data $b->setObjectData($object); // Set field date_object, ref_object, fk_object, element, object_data
$res = $b->create($user); $res = $b->create($user);

View File

@ -607,13 +607,13 @@ if (empty($reshook))
$object->fetch($id); $object->fetch($id);
$lines = $object->lines; $lines = $object->lines;
$line = new ExpeditionLigne($db); $line = new ExpeditionLigne($db);
$num_prod = count($lines); $num_prod = count($lines);
for ($i = 0 ; $i < $num_prod ; $i++) for ($i = 0 ; $i < $num_prod ; $i++)
{ {
if ($lines[$i]->id == $line_id) if ($lines[$i]->id == $line_id)
{ {
if (count($lines[$i]->details_entrepot) > 1) if (count($lines[$i]->details_entrepot) > 1)
{ {
// delete multi warehouse lines // delete multi warehouse lines
foreach ($lines[$i]->details_entrepot as $details_entrepot) { foreach ($lines[$i]->details_entrepot as $details_entrepot) {
@ -624,7 +624,7 @@ if (empty($reshook))
} }
} }
} }
else else
{ {
// delete single warehouse line // delete single warehouse line
$line->id = $line_id; $line->id = $line_id;
@ -636,12 +636,12 @@ if (empty($reshook))
} }
unset($_POST["lineid"]); unset($_POST["lineid"]);
} }
if(! $error) { if(! $error) {
header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id);
exit(); exit();
} }
else else
{ {
setEventMessages($line->error, $line->errors, 'errors'); setEventMessages($line->error, $line->errors, 'errors');
} }
@ -657,12 +657,12 @@ if (empty($reshook))
$qty=0; $qty=0;
$entrepot_id = 0; $entrepot_id = 0;
$batch_id = 0; $batch_id = 0;
$lines = $object->lines; $lines = $object->lines;
$num_prod = count($lines); $num_prod = count($lines);
for ($i = 0 ; $i < $num_prod ; $i++) for ($i = 0 ; $i < $num_prod ; $i++)
{ {
if ($lines[$i]->id == $line_id) if ($lines[$i]->id == $line_id)
{ {
// line to update // line to update
$line = new ExpeditionLigne($db); $line = new ExpeditionLigne($db);
@ -680,7 +680,7 @@ if (empty($reshook))
if (is_array($lines[$i]->detail_batch) && count($lines[$i]->detail_batch) > 0) if (is_array($lines[$i]->detail_batch) && count($lines[$i]->detail_batch) > 0)
{ {
// line with lot // line with lot
foreach ($lines[$i]->detail_batch as $detail_batch) foreach ($lines[$i]->detail_batch as $detail_batch)
{ {
$lotStock = new Productbatch($db); $lotStock = new Productbatch($db);
$batch="batchl".$detail_batch->fk_expeditiondet."_".$detail_batch->fk_origin_stock; $batch="batchl".$detail_batch->fk_expeditiondet."_".$detail_batch->fk_origin_stock;
@ -689,13 +689,17 @@ if (empty($reshook))
$batch_qty = GETPOST($qty, 'int'); $batch_qty = GETPOST($qty, 'int');
if (! empty($batch_id) && ($batch_id != $detail_batch->fk_origin_stock || $batch_qty != $detail_batch->dluo_qty)) if (! empty($batch_id) && ($batch_id != $detail_batch->fk_origin_stock || $batch_qty != $detail_batch->dluo_qty))
{ {
if ($lotStock->fetch($batch_id) > 0 && $line->fetch($detail_batch->fk_expeditiondet) > 0) if ($lotStock->fetch($batch_id) > 0 && $line->fetch($detail_batch->fk_expeditiondet) > 0) // $line is ExpeditionLine
{ {
if ($lines[$i]->entrepot_id != 0) if ($lines[$i]->entrepot_id != 0)
{ {
// allow update line entrepot_id if not multi warehouse shipping // allow update line entrepot_id if not multi warehouse shipping
$line->entrepot_id = $lotStock->warehouseid; $line->entrepot_id = $lotStock->warehouseid;
} }
// detail_batch can be an object with keys, or an array of ExpeditionLineBatch
if (empty($line->detail_batch)) $line->detail_batch=new stdClass();
$line->detail_batch->fk_origin_stock = $batch_id; $line->detail_batch->fk_origin_stock = $batch_id;
$line->detail_batch->batch = $lotStock->batch; $line->detail_batch->batch = $lotStock->batch;
$line->detail_batch->id = $detail_batch->id; $line->detail_batch->id = $detail_batch->id;
@ -706,7 +710,7 @@ if (empty($reshook))
$error++; $error++;
} }
} }
else else
{ {
setEventMessages($lotStock->error, $lotStock->errors, 'errors'); setEventMessages($lotStock->error, $lotStock->errors, 'errors');
$error++; $error++;
@ -790,7 +794,7 @@ if (empty($reshook))
} }
} }
} }
else else
{ {
// line without lot // line without lot
if ($lines[$i]->entrepot_id > 0) if ($lines[$i]->entrepot_id > 0)
@ -856,7 +860,7 @@ if (empty($reshook))
$object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
} }
} }
else else
{ {
header('Location: ' . $_SERVER['PHP_SELF'] . '?id=' . $object->id); // Pour reaffichage de la fiche en cours d'edition header('Location: ' . $_SERVER['PHP_SELF'] . '?id=' . $object->id); // Pour reaffichage de la fiche en cours d'edition
exit(); exit();
@ -1600,7 +1604,13 @@ if ($action == 'create')
print "</table>"; print "</table>";
print '<br><div class="center"><input type="submit" class="button" value="'.$langs->trans("Create").'"></div>'; print '<br>';
print '<div class="center">';
print '<input type="submit" class="button" name="add" value="'.dol_escape_htmltag($langs->trans("Create")).'">';
print '&nbsp; ';
print '<input type="'.($backtopage?"submit":"button").'" class="button" name="cancel" value="'.dol_escape_htmltag($langs->trans("Cancel")).'"'.($backtopage?'':' onclick="javascript:history.go(-1)"').'>'; // Cancel for create does not post form if we don't know the backtopage
print '</div>';
print '</form>'; print '</form>';
@ -2051,7 +2061,7 @@ else if ($id || $ref)
} }
print '</td>'; print '</td>';
} }
else else
{ {
if ($object->statut <= 1) if ($object->statut <= 1)
{ {
@ -2065,7 +2075,7 @@ else if ($id || $ref)
{ {
print '<td align="left">'.$langs->trans("WarehouseSource").'</td>'; print '<td align="left">'.$langs->trans("WarehouseSource").'</td>';
} }
if (! empty($conf->productbatch->enabled)) if (! empty($conf->productbatch->enabled))
{ {
print '<td align="left">'.$langs->trans("Batch").'</td>'; print '<td align="left">'.$langs->trans("Batch").'</td>';
@ -2240,7 +2250,7 @@ else if ($id || $ref)
if (is_array($lines[$i]->detail_batch) && count($lines[$i]->detail_batch) > 0) if (is_array($lines[$i]->detail_batch) && count($lines[$i]->detail_batch) > 0)
{ {
$line = new ExpeditionLigne($db); $line = new ExpeditionLigne($db);
foreach ($lines[$i]->detail_batch as $detail_batch) foreach ($lines[$i]->detail_batch as $detail_batch)
{ {
print '<tr>'; print '<tr>';
// Qty to ship or shipped // Qty to ship or shipped
@ -2401,7 +2411,7 @@ else if ($id || $ref)
{ {
print $line->showOptionals($extrafieldsline, 'edit', array('style'=>$bc[$var], 'colspan'=>$colspan),$indiceAsked); print $line->showOptionals($extrafieldsline, 'edit', array('style'=>$bc[$var], 'colspan'=>$colspan),$indiceAsked);
} }
else else
{ {
print $line->showOptionals($extrafieldsline, 'view', array('style'=>$bc[$var], 'colspan'=>$colspan),$indiceAsked); print $line->showOptionals($extrafieldsline, 'view', array('style'=>$bc[$var], 'colspan'=>$colspan),$indiceAsked);
} }
@ -2561,136 +2571,6 @@ else if ($id || $ref)
$trackid = 'shi'.$object->id; $trackid = 'shi'.$object->id;
include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php'; include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php';
/*
if ($action == 'presend')
{
$ref = dol_sanitizeFileName($object->ref);
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$fileparams = dol_most_recent_file($conf->expedition->dir_output . '/sending/' . $ref, preg_quote($ref, '/').'[^\-]+');
$file=$fileparams['fullname'];
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->thirdparty->default_lang;
if (!empty($newlang))
{
$outputlangs = new Translate('', $conf);
$outputlangs->setDefaultLang($newlang);
$outputlangs->load('sendings');
}
// Build document if it not exists
if (! $file || ! is_readable($file))
{
$result = $object->generateDocument(GETPOST('model')?GETPOST('model'):$object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
if ($result <= 0)
{
dol_print_error($db,$object->error,$object->errors);
exit;
}
$fileparams = dol_most_recent_file($conf->expedition->dir_output . '/sending/' . $ref, preg_quote($ref, '/').'[^\-]+');
$file=$fileparams['fullname'];
}
print '<div id="formmailbeforetitle" name="formmailbeforetitle"></div>';
print '<div class="clearboth"></div>';
print '<br>';
print load_fiche_titre($langs->trans('SendShippingByEMail'));
dol_fiche_head('');
// Cree l'objet formulaire mail
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
$formmail = new FormMail($db);
$formmail->param['langsmodels']=(empty($newlang)?$langs->defaultlang:$newlang);
$formmail->fromtype = (GETPOST('fromtype')?GETPOST('fromtype'):(!empty($conf->global->MAIN_MAIL_DEFAULT_FROMTYPE)?$conf->global->MAIN_MAIL_DEFAULT_FROMTYPE:'user'));
if($formmail->fromtype === 'user'){
$formmail->fromid = $user->id;
}
$formmail->trackid='shi'.$object->id;
if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set
{
include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
$formmail->frommail=dolAddEmailTrackId($formmail->frommail, 'shi'.$object->id);
}
$formmail->withfrom=1;
$liste=array();
foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key=>$value) $liste[$key]=$value;
$formmail->withto=GETPOST("sendto")?GETPOST("sendto"):$liste;
$formmail->withtocc=$liste;
$formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC;
$formmail->withtopic=$outputlangs->trans('SendShippingRef','__SHIPPINGREF__');
$formmail->withfile=2;
$formmail->withbody=1;
$formmail->withdeliveryreceipt=1;
$formmail->withcancel=1;
// Tableau des substitutions
$formmail->setSubstitFromObject($object, $outputlangs);
$formmail->substit['__SHIPPINGREF__']=$object->ref;
$formmail->substit['__SHIPPINGTRACKNUM__']=$object->tracking_number;
$formmail->substit['__SHIPPINGTRACKNUMURL__']=$object->tracking_url;
//Find the good contact adress
if ($typeobject == 'commande' && $object->$typeobject->id && ! empty($conf->commande->enabled)) {
$objectsrc=new Commande($db);
$objectsrc->fetch($object->$typeobject->id);
}
if ($typeobject == 'propal' && $object->$typeobject->id && ! empty($conf->propal->enabled)) {
$objectsrc=new Propal($db);
$objectsrc->fetch($object->$typeobject->id);
}
$custcontact='';
$contactarr=array();
if (is_object($objectsrc)) // For the case the shipment was created without orders
{
$contactarr=$objectsrc->liste_contact(-1,'external');
}
if (is_array($contactarr) && count($contactarr)>0) {
foreach($contactarr as $contact) {
if ($contact['libelle']==$langs->trans('TypeContact_commande_external_CUSTOMER')) {
require_once DOL_DOCUMENT_ROOT . '/contact/class/contact.class.php';
$contactstatic=new Contact($db);
$contactstatic->fetch($contact['id']);
$custcontact=$contactstatic->getFullName($langs,1);
}
}
if (!empty($custcontact)) {
$formmail->substit['__CONTACTCIVNAME__']=$custcontact;
}
}
// Tableau des parametres complementaires
$formmail->param['action']='send';
$formmail->param['models']='shipping_send';
$formmail->param['models_id']=GETPOST('modelmailselected','int');
$formmail->param['shippingid']=$object->id;
$formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$object->id;
// Init list of files
if (GETPOST("mode")=='init')
{
$formmail->clear_attached_files();
$formmail->add_attached_files($file,basename($file),dol_mimetype($file));
}
// Show form
print $formmail->get_form();
dol_fiche_end();
}*/
} }

View File

@ -1504,11 +1504,11 @@ class Expedition extends CommonObject
$linkstart = '<a href="'.$url.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; $linkstart = '<a href="'.$url.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
$linkend='</a>'; $linkend='</a>';
$picto='sending'; $result .= $linkstart;
if ($withpicto) $result.=img_object(($notooltip?'':$label), $this->picto, ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
if ($withpicto != 2) $result.= $this->ref;
$result .= $linkend;
if ($withpicto) $result.=($linkstart.img_object(($notooltip?'':$label), $picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend);
if ($withpicto && $withpicto != 2) $result.=' ';
$result.=$linkstart.$this->ref.$linkend;
return $result; return $result;
} }
@ -2220,7 +2220,7 @@ class ExpeditionLigne extends CommonObjectLine
*/ */
public $fk_expedition; public $fk_expedition;
var $db; var $db;
// From llx_expeditiondet // From llx_expeditiondet
var $qty; var $qty;
@ -2232,7 +2232,7 @@ class ExpeditionLigne extends CommonObjectLine
* @var int * @var int
*/ */
public $entrepot_id; public $entrepot_id;
// From llx_commandedet or llx_propaldet // From llx_commandedet or llx_propaldet
var $qty_asked; var $qty_asked;
@ -2249,7 +2249,7 @@ class ExpeditionLigne extends CommonObjectLine
var $total_localtax1; // Total Local tax 1 var $total_localtax1; // Total Local tax 1
var $total_localtax2; // Total Local tax 2 var $total_localtax2; // Total Local tax 2
// Deprecated // Deprecated
/** /**
@ -2395,7 +2395,7 @@ class ExpeditionLigne extends CommonObjectLine
/** /**
* Delete shipment line. * Delete shipment line.
* *
* @param User $user User that modify * @param User $user User that modify
* @param int $notrigger 0=launch triggers after, 1=disable triggers * @param int $notrigger 0=launch triggers after, 1=disable triggers
* @return int >0 if OK, <0 if KO * @return int >0 if OK, <0 if KO
@ -2407,7 +2407,7 @@ class ExpeditionLigne extends CommonObjectLine
$error=0; $error=0;
$this->db->begin(); $this->db->begin();
// delete batch expedition line // delete batch expedition line
if ($conf->productbatch->enabled) if ($conf->productbatch->enabled)
{ {
@ -2420,7 +2420,7 @@ class ExpeditionLigne extends CommonObjectLine
$error++; $error++;
} }
} }
$sql = "DELETE FROM ".MAIN_DB_PREFIX."expeditiondet"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."expeditiondet";
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
@ -2436,7 +2436,7 @@ class ExpeditionLigne extends CommonObjectLine
$error++; $error++;
} }
} }
if (! $error && ! $notrigger) if (! $error && ! $notrigger)
{ {
// Call trigger // Call trigger
$result=$this->call_trigger('LINESHIPPING_DELETE',$user); $result=$this->call_trigger('LINESHIPPING_DELETE',$user);
@ -2458,7 +2458,7 @@ class ExpeditionLigne extends CommonObjectLine
$this->db->commit(); $this->db->commit();
return 1; return 1;
} }
else else
{ {
foreach($this->errors as $errmsg) foreach($this->errors as $errmsg)
{ {
@ -2469,10 +2469,10 @@ class ExpeditionLigne extends CommonObjectLine
return -1*$error; return -1*$error;
} }
} }
/** /**
* Update a line in database * Update a line in database
* *
* @param User $user User that modify * @param User $user User that modify
* @param int $notrigger 1 = disable triggers * @param int $notrigger 1 = disable triggers
* @return int < 0 if KO, > 0 if OK * @return int < 0 if KO, > 0 if OK
@ -2480,13 +2480,11 @@ class ExpeditionLigne extends CommonObjectLine
function update($user = null, $notrigger = 0) function update($user = null, $notrigger = 0)
{ {
global $conf; global $conf;
$error=0; $error=0;
dol_syslog(get_class($this)."::update id=$this->id, entrepot_id=$this->entrepot_id, product_id=$this->fk_product, qty=$this->qty"); dol_syslog(get_class($this)."::update id=$this->id, entrepot_id=$this->entrepot_id, product_id=$this->fk_product, qty=$this->qty");
$this->db->begin(); $this->db->begin();
// Clean parameters // Clean parameters
@ -2496,9 +2494,9 @@ class ExpeditionLigne extends CommonObjectLine
$batch = null; $batch = null;
$batch_id = null; $batch_id = null;
$expedition_batch_id = null; $expedition_batch_id = null;
if (is_array($this->detail_batch)) if (is_array($this->detail_batch)) // array of ExpeditionLineBatch
{ {
if (count($this->detail_batch) > 1) if (count($this->detail_batch) > 1)
{ {
dol_syslog(get_class($this).'::update only possible for one batch', LOG_ERR); dol_syslog(get_class($this).'::update only possible for one batch', LOG_ERR);
$this->errors[]='ErrorBadParameters'; $this->errors[]='ErrorBadParameters';
@ -2560,24 +2558,24 @@ class ExpeditionLigne extends CommonObjectLine
$this->errors[]=$this->db->lasterror()." - ExpeditionLineBatch::fetchAll"; $this->errors[]=$this->db->lasterror()." - ExpeditionLineBatch::fetchAll";
$error++; $error++;
} }
else else
{ {
// caculate new total line qty // caculate new total line qty
foreach ($lotArray as $lot) foreach ($lotArray as $lot)
{ {
if ($expedition_batch_id != $lot->id) if ($expedition_batch_id != $lot->id)
{ {
$remainingQty += $lot->dluo_qty; $remainingQty += $lot->dluo_qty;
} }
} }
$qty += $remainingQty; $qty += $remainingQty;
//fetch lot details //fetch lot details
// fetch from product_lot // fetch from product_lot
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productlot.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productlot.class.php';
$lot = new Productlot($this->db); $lot = new Productlot($this->db);
if ($lot->fetch(0,$this->fk_product,$batch) < 0) if ($lot->fetch(0,$this->fk_product,$batch) < 0)
{ {
$this->errors[] = $lot->errors; $this->errors[] = $lot->errors;
$error++; $error++;
@ -2588,6 +2586,7 @@ class ExpeditionLigne extends CommonObjectLine
$sql = "DELETE FROM ".MAIN_DB_PREFIX."expeditiondet_batch"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."expeditiondet_batch";
$sql.= " WHERE fk_expeditiondet = ".$this->id; $sql.= " WHERE fk_expeditiondet = ".$this->id;
$sql.= " AND rowid = ".$expedition_batch_id; $sql.= " AND rowid = ".$expedition_batch_id;
if (!$this->db->query($sql)) if (!$this->db->query($sql))
{ {
$this->errors[]=$this->db->lasterror()." - sql=$sql"; $this->errors[]=$this->db->lasterror()." - sql=$sql";
@ -2622,8 +2621,8 @@ class ExpeditionLigne extends CommonObjectLine
$sql.= " fk_entrepot = ".$this->entrepot_id; $sql.= " fk_entrepot = ".$this->entrepot_id;
$sql.= " , qty = ".$qty; $sql.= " , qty = ".$qty;
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
if (!$this->db->query($sql)) if (!$this->db->query($sql))
{ {
$this->errors[]=$this->db->lasterror()." - sql=$sql"; $this->errors[]=$this->db->lasterror()." - sql=$sql";
$error++; $error++;
@ -2641,7 +2640,7 @@ class ExpeditionLigne extends CommonObjectLine
} }
} }
} }
if (! $error && ! $notrigger) if (! $error && ! $notrigger)
{ {
// Call trigger // Call trigger
$result=$this->call_trigger('LINESHIPPING_UPDATE',$user); $result=$this->call_trigger('LINESHIPPING_UPDATE',$user);
@ -2656,7 +2655,7 @@ class ExpeditionLigne extends CommonObjectLine
$this->db->commit(); $this->db->commit();
return 1; return 1;
} }
else else
{ {
foreach($this->errors as $errmsg) foreach($this->errors as $errmsg)
{ {

View File

@ -39,13 +39,7 @@ if (! empty($conf->stock->enabled)) require_once DOL_DOCUMENT_ROOT.'/product/st
if (! empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; if (! empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
if (! empty($conf->product->enabled) || ! empty($conf->service->enabled)) require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; if (! empty($conf->product->enabled) || ! empty($conf->service->enabled)) require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
$langs->load('orders'); $langs->loadLangs(array('orders',"companies","bills",'propal','deliveries','stocks',"productbatch",'incoterm'));
$langs->load("companies");
$langs->load("bills");
$langs->load('propal');
$langs->load('deliveries');
$langs->load('stocks');
$langs->load("productbatch");
$id=GETPOST('id','int'); // id of order $id=GETPOST('id','int'); // id of order
$ref= GETPOST('ref','alpha'); $ref= GETPOST('ref','alpha');
@ -157,6 +151,15 @@ if (empty($reshook))
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($object->error, $object->errors, 'errors');
} }
// Set incoterm
elseif ($action == 'set_incoterms' && !empty($conf->incoterm->enabled))
{
$result = $object->setIncoterms(GETPOST('incoterm_id', 'int'), GETPOST('location_incoterms', 'alpha'));
if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors');
}
}
// shipping method // shipping method
if ($action == 'setshippingmethod' && $user->rights->commande->creer) { if ($action == 'setshippingmethod' && $user->rights->commande->creer) {
$object = new Commande($db); $object = new Commande($db);
@ -528,7 +531,7 @@ if ($id > 0 || ! empty($ref))
print '<table width="100%" class="nobordernopadding"><tr><td>'; print '<table width="100%" class="nobordernopadding"><tr><td>';
print $langs->trans('IncotermLabel'); print $langs->trans('IncotermLabel');
print '<td><td align="right">'; print '<td><td align="right">';
if ($user->rights->commande->creer) print '<a href="'.DOL_URL_ROOT.'/commande/card.php?id='.$object->id.'&action=editincoterm">'.img_edit().'</a>'; if ($user->rights->commande->creer) print '<a href="'.$_SERVER['PHP_SELF'].'/expedition/shipment.php?id='.$object->id.'&action=editincoterm">'.img_edit().'</a>';
else print '&nbsp;'; else print '&nbsp;';
print '</td></tr></table>'; print '</td></tr></table>';
print '</td>'; print '</td>';

View File

@ -1544,7 +1544,6 @@ class ExpenseReport extends CommonObject
if ($short) return $url; if ($short) return $url;
$picto='trip';
$label = '<u>' . $langs->trans("ShowExpenseReport") . '</u>'; $label = '<u>' . $langs->trans("ShowExpenseReport") . '</u>';
if (! empty($this->ref)) if (! empty($this->ref))
$label .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref; $label .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref;
@ -1583,8 +1582,11 @@ class ExpenseReport extends CommonObject
$linkstart.=$linkclose.'>'; $linkstart.=$linkclose.'>';
$linkend='</a>'; $linkend='</a>';
if ($withpicto) $result.=($linkstart.img_object(($notooltip?'':$label), $picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend.' '); $result .= $linkstart;
$result.=$linkstart.($max?dol_trunc($ref,$max):$ref).$linkend; if ($withpicto) $result.=img_object(($notooltip?'':$label), $this->picto, ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
if ($withpicto != 2) $result.=($max?dol_trunc($ref,$max):$ref);
$result .= $linkend;
return $result; return $result;
} }

View File

@ -671,7 +671,6 @@ class Fichinter extends CommonObject
if (! empty($this->ref)) if (! empty($this->ref))
$label .= '<br><b>' . $langs->trans('Ref') . ':</b> '.$this->ref; $label .= '<br><b>' . $langs->trans('Ref') . ':</b> '.$this->ref;
$picto='intervention';
$url = DOL_URL_ROOT.'/fichinter/card.php?id='.$this->id; $url = DOL_URL_ROOT.'/fichinter/card.php?id='.$this->id;
if ($option !== 'nolink') if ($option !== 'nolink')
@ -698,9 +697,11 @@ class Fichinter extends CommonObject
$linkstart.=$linkclose.'>'; $linkstart.=$linkclose.'>';
$linkend='</a>'; $linkend='</a>';
if ($withpicto) $result.=($linkstart.img_object(($notooltip?'':$label), $picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend); $result .= $linkstart;
if ($withpicto && $withpicto != 2) $result.=' '; if ($withpicto) $result.=img_object(($notooltip?'':$label), $this->picto, ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
if ($withpicto != 2) $result.=$linkstart.$this->ref.$linkend; if ($withpicto != 2) $result.= $this->ref;
$result .= $linkend;
return $result; return $result;
} }

View File

@ -393,7 +393,7 @@ if ($object->id > 0)
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre'.(($num == 0) ? ' nobottom':'').'">'; print '<tr class="liste_titre'.(($num == 0) ? ' nobottom':'').'">';
print '<td colspan="3">'.$langs->trans("ProductsAndServices").'</td><td align="right">'; print '<td colspan="3">'.$langs->trans("ProductsAndServices").'</td><td align="right">';
print '<a class="notasortlink" href="'.DOL_URL_ROOT.'/fourn/product/list.php?fourn_id='.$object->id.'">'.$langs->trans("AllProductServicePrices").' <span class="badge">'.$object->nbOfProductRefs().'</span>'; print '<a class="notasortlink" href="'.DOL_URL_ROOT.'/fourn/product/list.php?fourn_id='.$object->id.'">'.$langs->trans("AllProductReferencesOfSupplier").' <span class="badge">'.$object->nbOfProductRefs().'</span>';
print '</a></td></tr>'; print '</a></td></tr>';
$return = array(); $return = array();

View File

@ -1497,6 +1497,7 @@ class FactureFournisseur extends CommonInvoice
else else
{ {
$this->error=$this->line->error; $this->error=$this->line->error;
$this->errors=$this->line->errors;
$this->db->rollback(); $this->db->rollback();
return -2; return -2;
} }

View File

@ -1344,11 +1344,6 @@ if (! empty($conf->projet->enabled)) { $formproject = new FormProjets($db); }
$help_url='EN:Module_Suppliers_Orders|FR:CommandeFournisseur|ES:Módulo_Pedidos_a_proveedores'; $help_url='EN:Module_Suppliers_Orders|FR:CommandeFournisseur|ES:Módulo_Pedidos_a_proveedores';
llxHeader('',$langs->trans("Order"),$help_url); llxHeader('',$langs->trans("Order"),$help_url);
/* *************************************************************************** */
/* */
/* Mode vue et edition */
/* */
/* *************************************************************************** */
$now=dol_now(); $now=dol_now();
if ($action=='create') if ($action=='create')

View File

@ -828,7 +828,7 @@ class Holiday extends CommonObject
global $langs; global $langs;
$result=''; $result='';
$picto='holiday';
$label=$langs->trans("Show").': '.$this->ref; $label=$langs->trans("Show").': '.$this->ref;
$url = DOL_URL_ROOT.'/holiday/card.php?id='.$this->id; $url = DOL_URL_ROOT.'/holiday/card.php?id='.$this->id;
@ -844,9 +844,11 @@ class Holiday extends CommonObject
$linkstart = '<a href="'.$url.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; $linkstart = '<a href="'.$url.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
$linkend='</a>'; $linkend='</a>';
if ($withpicto) $result.=($linkstart.img_object($label, $picto, 'class="classfortooltip"').$linkend); $result .= $linkstart;
if ($withpicto && $withpicto != 2) $result.=' '; if ($withpicto) $result.=img_object(($notooltip?'':$label), $this->picto, ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
if ($withpicto != 2) $result.=$linkstart.$this->ref.$linkend; if ($withpicto != 2) $result.= $this->ref;
$result .= $linkend;
return $result; return $result;
} }

0
htdocs/includes/stripe/build.php Normal file → Executable file
View File

View File

@ -461,6 +461,26 @@ UPDATE llx_accounting_system SET fk_country =140 WHERE pcg_version = 'PCN-LUXEMB
UPDATE llx_accounting_system SET fk_country = 12 WHERE pcg_version = 'PCG'; UPDATE llx_accounting_system SET fk_country = 12 WHERE pcg_version = 'PCG';
CREATE TABLE llx_actioncomm_reminder(
-- BEGIN MODULEBUILDER FIELDS
rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL,
dateremind datetime NOT NULL,
typeremind varchar(32) NOT NULL,
fk_user integer NOT NULL,
offsetvalue integer NOT NULL,
offsetunit varchar(1) NOT NULL,
status integer NOT NULL DEFAULT 0
-- END MODULEBUILDER FIELDS
) ENGINE=innodb;
ALTER TABLE llx_actioncomm_reminder ADD INDEX idx_actioncomm_reminder_rowid (rowid);
ALTER TABLE llx_actioncomm_reminder ADD INDEX idx_actioncomm_reminder_dateremind (dateremind);
ALTER TABLE llx_actioncomm_reminder ADD INDEX idx_actioncomm_reminder_fk_user (fk_user);
ALTER TABLE llx_actioncomm_reminder ADD UNIQUE INDEX uk_actioncomm_reminder_unique(fk_user, typeremind, offsetvalue, offsetunit);
-- VPGSQL8.2 CREATE SEQUENCE llx_supplier_proposal_rowid_seq; -- VPGSQL8.2 CREATE SEQUENCE llx_supplier_proposal_rowid_seq;
-- VPGSQL8.2 ALTER TABLE llx_supplier_proposal ALTER COLUMN rowid SET DEFAULT nextval('llx_supplier_proposal_rowid_seq'); -- VPGSQL8.2 ALTER TABLE llx_supplier_proposal ALTER COLUMN rowid SET DEFAULT nextval('llx_supplier_proposal_rowid_seq');
-- VPGSQL8.2 ALTER TABLE llx_supplier_proposal ALTER COLUMN rowid SET NOT NULL; -- VPGSQL8.2 ALTER TABLE llx_supplier_proposal ALTER COLUMN rowid SET NOT NULL;
@ -474,3 +494,31 @@ UPDATE llx_accounting_system SET fk_country = 12 WHERE pcg_version = 'PCG';
-- May have error due to duplicate keys -- May have error due to duplicate keys
ALTER TABLE llx_resource ADD UNIQUE INDEX uk_resource_ref (ref, entity); ALTER TABLE llx_resource ADD UNIQUE INDEX uk_resource_ref (ref, entity);
-- SPEC : use database type "double" to store monetary values
ALTER TABLE llx_blockedlog MODIFY COLUMN amounts double(24,8);
ALTER TABLE llx_chargessociales MODIFY COLUMN amount double(24,8);
ALTER TABLE llx_commande MODIFY COLUMN amount_ht double(24,8);
ALTER TABLE llx_commande_fournisseur MODIFY COLUMN amount_ht double(24,8);
ALTER TABLE llx_don MODIFY COLUMN amount double(24,8);
ALTER TABLE llx_expensereport_rules MODIFY COLUMN amount double(24,8);
ALTER TABLE llx_loan MODIFY COLUMN capital double(24,8);
ALTER TABLE llx_loan MODIFY COLUMN capital_position double(24,8);
ALTER TABLE llx_loan_schedule MODIFY COLUMN amount_capital double(24,8);
ALTER TABLE llx_loan_schedule MODIFY COLUMN amount_insurance double(24,8);
ALTER TABLE llx_loan_schedule MODIFY COLUMN amount_interest double(24,8);
ALTER TABLE llx_paiementcharge MODIFY COLUMN amount double(24,8);
ALTER TABLE llx_paiementfourn MODIFY COLUMN amount double(24,8);
ALTER TABLE llx_payment_donation MODIFY COLUMN amount double(24,8);
ALTER TABLE llx_payment_expensereport MODIFY COLUMN amount double(24,8);
ALTER TABLE llx_payment_loan MODIFY COLUMN amount_capital double(24,8);
ALTER TABLE llx_payment_loan MODIFY COLUMN amount_insurance double(24,8);
ALTER TABLE llx_payment_loan MODIFY COLUMN amount_interest double(24,8);
ALTER TABLE llx_payment_salary MODIFY COLUMN salary double(24,8);
ALTER TABLE llx_payment_salary MODIFY COLUMN amount double(24,8);
ALTER TABLE llx_prelevement_bons MODIFY COLUMN amount double(24,8);
ALTER TABLE llx_prelevement_facture_demande MODIFY COLUMN amount double(24,8);
ALTER TABLE llx_prelevement_lignes MODIFY COLUMN amount double(24,8);
ALTER TABLE llx_societe MODIFY COLUMN capital double(24,8);
ALTER TABLE llx_tva MODIFY COLUMN amount double(24,8);
ALTER TABLE llx_subscription MODIFY COLUMN subscription double(24,8);

View File

@ -1,7 +1,7 @@
-- ============================================================================ -- ============================================================================
-- Copyright (C) 2004-2006 Laurent Destailleur <eldy@users.sourceforge.net> -- Copyright (C) 2004-2006 Laurent Destailleur <eldy@users.sourceforge.net>
-- Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> -- Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
-- Copyright (C) 2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> -- Copyright (C) 2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
-- --
-- This program is free software; you can redistribute it and/or modify -- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by -- it under the terms of the GNU General Public License as published by
@ -21,20 +21,20 @@
create table llx_accounting_account create table llx_accounting_account
( (
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
entity integer DEFAULT 1 NOT NULL, entity integer DEFAULT 1 NOT NULL,
datec datetime, datec datetime,
tms timestamp, tms timestamp,
fk_pcg_version varchar(32) NOT NULL, fk_pcg_version varchar(32) NOT NULL,
pcg_type varchar(20) NOT NULL, pcg_type varchar(20) NOT NULL,
pcg_subtype varchar(20) NOT NULL, pcg_subtype varchar(20) NOT NULL,
account_number varchar(32) NOT NULL, account_number varchar(32) NOT NULL,
account_parent varchar(32) DEFAULT '0', -- Hierarchic parent TODO Move this as integer, it is a foreign key of llx_accounting_account.rowid account_parent varchar(32) DEFAULT '0', -- Hierarchic parent TODO Move this as integer, it is a foreign key of llx_accounting_account.rowid
label varchar(255) NOT NULL, label varchar(255) NOT NULL,
fk_accounting_category integer DEFAULT 0, fk_accounting_category integer DEFAULT 0,
fk_user_author integer DEFAULT NULL, fk_user_author integer DEFAULT NULL,
fk_user_modif integer DEFAULT NULL, fk_user_modif integer DEFAULT NULL,
active tinyint DEFAULT 1 NOT NULL, active tinyint DEFAULT 1 NOT NULL,
import_key varchar(14), import_key varchar(14),
extraparams varchar(255) -- for other parameters with json format extraparams varchar(255) -- for other parameters with json format
)ENGINE=innodb; )ENGINE=innodb;

View File

@ -40,7 +40,7 @@ CREATE TABLE llx_accounting_bookkeeping
multicurrency_code varchar(255), -- FEC:Idevise multicurrency_code varchar(255), -- FEC:Idevise
lettering_code varchar(255), -- FEC:EcritureLet lettering_code varchar(255), -- FEC:EcritureLet
date_lettering datetime, -- FEC:DateLet date_lettering datetime, -- FEC:DateLet
date_lim_reglement datetime DEFAULT NULL, -- | date limite de reglement date_lim_reglement datetime DEFAULT NULL, -- | date limite de reglement
fk_user_author integer NOT NULL, -- | user creating fk_user_author integer NOT NULL, -- | user creating
fk_user_modif integer, -- | user making last change fk_user_modif integer, -- | user making last change
date_creation datetime, -- FEC:EcritureDate | creation date date_creation datetime, -- FEC:EcritureDate | creation date

View File

@ -40,7 +40,7 @@ CREATE TABLE llx_accounting_bookkeeping_tmp
multicurrency_code varchar(255), -- FEC:Idevise multicurrency_code varchar(255), -- FEC:Idevise
lettering_code varchar(255), -- FEC:EcritureLet lettering_code varchar(255), -- FEC:EcritureLet
date_lettering datetime, -- FEC:DateLet date_lettering datetime, -- FEC:DateLet
date_lim_reglement datetime, -- | date limite de reglement date_lim_reglement datetime, -- | date limite de reglement
fk_user_author integer NOT NULL, -- | user creating fk_user_author integer NOT NULL, -- | user creating
fk_user_modif integer, -- | user making last change fk_user_modif integer, -- | user making last change
date_creation datetime, -- FEC:EcritureDate | creation date date_creation datetime, -- FEC:EcritureDate | creation date

View File

@ -0,0 +1,25 @@
-- Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see http://www.gnu.org/licenses/.
-- BEGIN MODULEBUILDER INDEXES
ALTER TABLE llx_actioncomm_reminder ADD INDEX idx_actioncomm_reminder_rowid (rowid);
ALTER TABLE llx_actioncomm_reminder ADD INDEX idx_actioncomm_reminder_dateremind (dateremind);
ALTER TABLE llx_actioncomm_reminder ADD INDEX idx_actioncomm_reminder_fk_user (fk_user);
-- END MODULEBUILDER INDEXES
ALTER TABLE llx_actioncomm_reminder ADD UNIQUE INDEX uk_actioncomm_reminder_unique(fk_user, typeremind, offsetvalue, offsetunit);

View File

@ -0,0 +1,27 @@
-- Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see http://www.gnu.org/licenses/.
CREATE TABLE llx_actioncomm_reminder(
-- BEGIN MODULEBUILDER FIELDS
rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL,
dateremind datetime NOT NULL,
typeremind varchar(32) NOT NULL,
fk_user integer NOT NULL,
offsetvalue integer NOT NULL,
offsetunit varchar(1) NOT NULL,
status integer NOT NULL DEFAULT 0
-- END MODULEBUILDER FIELDS
) ENGINE=innodb;

View File

@ -21,7 +21,7 @@ CREATE TABLE llx_blockedlog
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
tms timestamp, tms timestamp,
action varchar(50), action varchar(50),
amounts real NOT NULL, amounts double(24,8) NOT NULL,
signature varchar(100) NOT NULL, signature varchar(100) NOT NULL,
signature_line varchar(100) NOT NULL, signature_line varchar(100) NOT NULL,
element varchar(50), element varchar(50),

View File

@ -25,7 +25,7 @@ create table llx_bordereau_cheque
( (
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
ref varchar(30) NOT NULL, -- ref ref varchar(30) NOT NULL, -- ref
ref_ext varchar(255), -- ref_ext ref_ext varchar(255), -- ref_ext
datec datetime NOT NULL, datec datetime NOT NULL,
date_bordereau date, date_bordereau date,
amount double(24,8) NOT NULL, amount double(24,8) NOT NULL,

View File

@ -20,25 +20,25 @@
create table llx_chargesociales create table llx_chargesociales
( (
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
ref varchar(16), -- 'TX....' ref varchar(16), -- 'TX....'
date_ech datetime NOT NULL, -- date echeance date_ech datetime NOT NULL, -- date echeance
libelle varchar(80) NOT NULL, libelle varchar(80) NOT NULL,
entity integer DEFAULT 1 NOT NULL, -- multi company id entity integer DEFAULT 1 NOT NULL, -- multi company id
tms timestamp, tms timestamp,
date_creation datetime, -- date de creation date_creation datetime, -- date de creation
date_valid datetime, -- date de validation date_valid datetime, -- date de validation
fk_user_author integer, -- user making creation fk_user_author integer, -- user making creation
fk_user_modif integer, -- user making last change fk_user_modif integer, -- user making last change
fk_user_valid integer, -- user validating fk_user_valid integer, -- user validating
fk_type integer NOT NULL, fk_type integer NOT NULL,
fk_account integer, -- bank account fk_account integer, -- bank account
fk_mode_reglement integer, -- mode de reglement fk_mode_reglement integer, -- mode de reglement
amount real default 0 NOT NULL, amount double(24,8) default 0 NOT NULL,
paye smallint default 0 NOT NULL, paye smallint default 0 NOT NULL,
periode date, periode date,
fk_projet integer DEFAULT NULL, fk_projet integer DEFAULT NULL,
import_key varchar(14) import_key varchar(14)
)ENGINE=innodb; )ENGINE=innodb;
-- --

View File

@ -20,63 +20,63 @@
create table llx_commande create table llx_commande
( (
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
ref varchar(30) NOT NULL, -- order reference number ref varchar(30) NOT NULL, -- order reference number
entity integer DEFAULT 1 NOT NULL, -- multi company id entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_ext varchar(255), -- reference into an external system (not used by dolibarr) ref_ext varchar(255), -- reference into an external system (not used by dolibarr)
ref_int varchar(255), -- reference into an internal system (deprecated) ref_int varchar(255), -- reference into an internal system (deprecated)
ref_client varchar(255), -- reference for customer ref_client varchar(255), -- reference for customer
fk_soc integer NOT NULL, fk_soc integer NOT NULL,
fk_projet integer DEFAULT NULL, -- projet auquel est rattache la commande fk_projet integer DEFAULT NULL, -- projet auquel est rattache la commande
tms timestamp, tms timestamp,
date_creation datetime, -- date de creation date_creation datetime, -- date de creation
date_valid datetime, -- date de validation date_valid datetime, -- date de validation
date_cloture datetime, -- date de cloture date_cloture datetime, -- date de cloture
date_commande date, -- date de la commande date_commande date, -- date de la commande
fk_user_author integer, -- user making creation fk_user_author integer, -- user making creation
fk_user_modif integer, -- user making last change fk_user_modif integer, -- user making last change
fk_user_valid integer, -- user validating fk_user_valid integer, -- user validating
fk_user_cloture integer, -- user closing fk_user_cloture integer, -- user closing
source smallint, -- not used, except by setting this to 42 for orders coming for replenishment and 0 in other case ? source smallint, -- not used, except by setting this to 42 for orders coming for replenishment and 0 in other case ?
fk_statut smallint default 0, fk_statut smallint default 0,
amount_ht real default 0, amount_ht double(24,8) default 0,
remise_percent real default 0, remise_percent real default 0,
remise_absolue real default 0, remise_absolue real default 0,
remise real default 0, remise real default 0,
tva double(24,8) default 0, tva double(24,8) default 0,
localtax1 double(24,8) default 0, -- total localtax1 localtax1 double(24,8) default 0, -- total localtax1
localtax2 double(24,8) default 0, -- total localtax2 localtax2 double(24,8) default 0, -- total localtax2
total_ht double(24,8) default 0, total_ht double(24,8) default 0,
total_ttc double(24,8) default 0, total_ttc double(24,8) default 0,
note_private text, note_private text,
note_public text, note_public text,
model_pdf varchar(255), model_pdf varchar(255),
last_main_doc varchar(255), -- relative filepath+filename of last main generated document last_main_doc varchar(255), -- relative filepath+filename of last main generated document
facture tinyint default 0, facture tinyint default 0,
fk_account integer, -- bank account fk_account integer, -- bank account
fk_currency varchar(3), -- currency code fk_currency varchar(3), -- currency code
fk_cond_reglement integer, -- condition de reglement fk_cond_reglement integer, -- condition de reglement
fk_mode_reglement integer, -- mode de reglement fk_mode_reglement integer, -- mode de reglement
date_livraison date default NULL, date_livraison date default NULL,
fk_shipping_method integer, -- shipping method id fk_shipping_method integer, -- shipping method id
fk_warehouse integer default NULL, fk_warehouse integer default NULL,
fk_availability integer NULL, fk_availability integer NULL,
fk_input_reason integer, -- id coming from c_input_reason, '0' if no defined fk_input_reason integer, -- id coming from c_input_reason, '0' if no defined
fk_delivery_address integer, -- delivery address (deprecated) fk_delivery_address integer, -- delivery address (deprecated)
fk_incoterms integer, -- for incoterms fk_incoterms integer, -- for incoterms
location_incoterms varchar(255), -- for incoterms location_incoterms varchar(255), -- for incoterms
import_key varchar(14), import_key varchar(14),
extraparams varchar(255), -- for stock other parameters with json format extraparams varchar(255), -- for stock other parameters with json format
fk_multicurrency integer, fk_multicurrency integer,
multicurrency_code varchar(255), multicurrency_code varchar(255),
multicurrency_tx double(24,8) DEFAULT 1, multicurrency_tx double(24,8) DEFAULT 1,
multicurrency_total_ht double(24,8) DEFAULT 0, multicurrency_total_ht double(24,8) DEFAULT 0,
multicurrency_total_tva double(24,8) DEFAULT 0, multicurrency_total_tva double(24,8) DEFAULT 0,
multicurrency_total_ttc double(24,8) DEFAULT 0 multicurrency_total_ttc double(24,8) DEFAULT 0
)ENGINE=innodb; )ENGINE=innodb;

View File

@ -21,58 +21,58 @@
create table llx_commande_fournisseur create table llx_commande_fournisseur
( (
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
ref varchar(255) NOT NULL, -- order number ref varchar(255) NOT NULL, -- order number
entity integer DEFAULT 1 NOT NULL, -- multi company id entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_ext varchar(64), -- reference into an external system (not used by dolibarr) ref_ext varchar(64), -- reference into an external system (not used by dolibarr)
ref_supplier varchar(255), ref_supplier varchar(255),
fk_soc integer NOT NULL, fk_soc integer NOT NULL,
fk_projet integer DEFAULT 0, -- project id fk_projet integer DEFAULT 0, -- project id
tms timestamp, tms timestamp,
date_creation datetime, -- date de creation date_creation datetime, -- date de creation
date_valid datetime, -- date de validation date_valid datetime, -- date de validation
date_approve datetime, -- date de approve date_approve datetime, -- date de approve
date_approve2 datetime, -- date de approve 2 (when double approving is accivated) date_approve2 datetime, -- date de approve 2 (when double approving is accivated)
date_commande date, -- date de la commande date_commande date, -- date de la commande
fk_user_author integer, -- user making creation fk_user_author integer, -- user making creation
fk_user_modif integer, -- user making last change fk_user_modif integer, -- user making last change
fk_user_valid integer, -- user validating fk_user_valid integer, -- user validating
fk_user_approve integer, -- user approving fk_user_approve integer, -- user approving
fk_user_approve2 integer, -- user approving 2 (when double approving is accivated) fk_user_approve2 integer, -- user approving 2 (when double approving is accivated)
source smallint NOT NULL, -- not used, except by setting this to 42 for orders coming for replenishment and 0 in other case ? source smallint NOT NULL, -- not used, except by setting this to 42 for orders coming for replenishment and 0 in other case ?
fk_statut smallint default 0, fk_statut smallint default 0,
billed smallint default 0, billed smallint default 0,
amount_ht real default 0, amount_ht double(24,8) default 0,
remise_percent real default 0, remise_percent real default 0,
remise real default 0, remise real default 0,
tva double(24,8) default 0, tva double(24,8) default 0,
localtax1 double(24,8) default 0, localtax1 double(24,8) default 0,
localtax2 double(24,8) default 0, localtax2 double(24,8) default 0,
total_ht double(24,8) default 0, total_ht double(24,8) default 0,
total_ttc double(24,8) default 0, total_ttc double(24,8) default 0,
note_private text, note_private text,
note_public text, note_public text,
model_pdf varchar(255), model_pdf varchar(255),
last_main_doc varchar(255), -- relative filepath+filename of last main generated document last_main_doc varchar(255), -- relative filepath+filename of last main generated document
date_livraison datetime default NULL, date_livraison datetime default NULL,
fk_account integer, -- bank account fk_account integer, -- bank account
fk_cond_reglement integer, -- condition de reglement fk_cond_reglement integer, -- condition de reglement
fk_mode_reglement integer, -- mode de reglement fk_mode_reglement integer, -- mode de reglement
fk_input_method integer default 0, -- id coming from c_input_reason, '0' if no defined fk_input_method integer default 0, -- id coming from c_input_reason, '0' if no defined
fk_incoterms integer, -- for incoterms fk_incoterms integer, -- for incoterms
location_incoterms varchar(255), -- for incoterms location_incoterms varchar(255), -- for incoterms
import_key varchar(14), import_key varchar(14),
extraparams varchar(255), -- for stock other parameters with json format extraparams varchar(255), -- for stock other parameters with json format
fk_multicurrency integer, fk_multicurrency integer,
multicurrency_code varchar(255), multicurrency_code varchar(255),
multicurrency_tx double(24,8) DEFAULT 1, multicurrency_tx double(24,8) DEFAULT 1,
multicurrency_total_ht double(24,8) DEFAULT 0, multicurrency_total_ht double(24,8) DEFAULT 0,
multicurrency_total_tva double(24,8) DEFAULT 0, multicurrency_total_tva double(24,8) DEFAULT 0,
multicurrency_total_ttc double(24,8) DEFAULT 0 multicurrency_total_ttc double(24,8) DEFAULT 0
)ENGINE=innodb; )ENGINE=innodb;

View File

@ -1,8 +1,8 @@
-- =================================================================== -- ===================================================================
-- Copyright (C) 2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> -- Copyright (C) 2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
-- Copyright (C) 2007-2009 Laurent Destailleur <eldy@users.sourceforge.net> -- Copyright (C) 2007-2009 Laurent Destailleur <eldy@users.sourceforge.net>
-- Copyright (C) 2010-2012 Juanjo Menent <jmenent@2byte.es> -- Copyright (C) 2010-2012 Juanjo Menent <jmenent@2byte.es>
-- Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> -- Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
-- --
-- This program is free software; you can redistribute it and/or modify -- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by -- it under the terms of the GNU General Public License as published by
@ -23,39 +23,39 @@ create table llx_commande_fournisseurdet
( (
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
fk_commande integer NOT NULL, fk_commande integer NOT NULL,
fk_parent_line integer NULL, fk_parent_line integer NULL,
fk_product integer, fk_product integer,
ref varchar(50), -- supplier product ref ref varchar(50), -- supplier product ref
label varchar(255), -- product label label varchar(255), -- product label
description text, description text,
vat_src_code varchar(10) DEFAULT '', -- Vat code used as source of vat fields. Not strict foreign key here. vat_src_code varchar(10) DEFAULT '', -- Vat code used as source of vat fields. Not strict foreign key here.
tva_tx double(6,3) DEFAULT 0, -- taux tva tva_tx double(6,3) DEFAULT 0, -- taux tva
localtax1_tx double(6,3) DEFAULT 0, -- localtax1 rate localtax1_tx double(6,3) DEFAULT 0, -- localtax1 rate
localtax1_type varchar(10) NULL, -- localtax1 type localtax1_type varchar(10) NULL, -- localtax1 type
localtax2_tx double(6,3) DEFAULT 0, -- localtax2 rate localtax2_tx double(6,3) DEFAULT 0, -- localtax2 rate
localtax2_type varchar(10) NULL, -- localtax2 type localtax2_type varchar(10) NULL, -- localtax2 type
qty real, -- quantity qty real, -- quantity
remise_percent real DEFAULT 0, -- pourcentage de remise remise_percent real DEFAULT 0, -- pourcentage de remise
remise real DEFAULT 0, -- montant de la remise remise real DEFAULT 0, -- montant de la remise
subprice double(24,8) DEFAULT 0, -- prix unitaire subprice double(24,8) DEFAULT 0, -- prix unitaire
total_ht double(24,8) DEFAULT 0, -- Total HT de la ligne toute quantite et incluant remise ligne et globale total_ht double(24,8) DEFAULT 0, -- Total HT de la ligne toute quantite et incluant remise ligne et globale
total_tva double(24,8) DEFAULT 0, -- Total TVA de la ligne toute quantite et incluant remise ligne et globale total_tva double(24,8) DEFAULT 0, -- Total TVA de la ligne toute quantite et incluant remise ligne et globale
total_localtax1 double(24,8) DEFAULT 0, -- Total Local Tax 1 total_localtax1 double(24,8) DEFAULT 0, -- Total Local Tax 1
total_localtax2 double(24,8) DEFAULT 0, -- Total Local Tax 2 total_localtax2 double(24,8) DEFAULT 0, -- Total Local Tax 2
total_ttc double(24,8) DEFAULT 0, -- Total TTC de la ligne toute quantite et incluant remise ligne et globale total_ttc double(24,8) DEFAULT 0, -- Total TTC de la ligne toute quantite et incluant remise ligne et globale
product_type integer DEFAULT 0, product_type integer DEFAULT 0,
date_start datetime DEFAULT NULL, -- date debut si service date_start datetime DEFAULT NULL, -- date debut si service
date_end datetime DEFAULT NULL, -- date fin si service date_end datetime DEFAULT NULL, -- date fin si service
info_bits integer DEFAULT 0, -- TVA NPR ou non info_bits integer DEFAULT 0, -- TVA NPR ou non
special_code integer DEFAULT 0, -- code pour les lignes speciales special_code integer DEFAULT 0, -- code pour les lignes speciales
rang integer DEFAULT 0, rang integer DEFAULT 0,
import_key varchar(14), import_key varchar(14),
fk_unit integer DEFAULT NULL, fk_unit integer DEFAULT NULL,
fk_multicurrency integer, fk_multicurrency integer,
multicurrency_code varchar(255), multicurrency_code varchar(255),
multicurrency_subprice double(24,8) DEFAULT 0, multicurrency_subprice double(24,8) DEFAULT 0,
multicurrency_total_ht double(24,8) DEFAULT 0, multicurrency_total_ht double(24,8) DEFAULT 0,
multicurrency_total_tva double(24,8) DEFAULT 0, multicurrency_total_tva double(24,8) DEFAULT 0,
multicurrency_total_ttc double(24,8) DEFAULT 0 multicurrency_total_ttc double(24,8) DEFAULT 0
)ENGINE=innodb; )ENGINE=innodb;

View File

@ -30,42 +30,42 @@ create table llx_commandedet
description text, description text,
vat_src_code varchar(10) DEFAULT '', -- Vat code used as source of vat fields. Not strict foreign key here. vat_src_code varchar(10) DEFAULT '', -- Vat code used as source of vat fields. Not strict foreign key here.
tva_tx double(6,3), -- Vat rate tva_tx double(6,3), -- Vat rate
localtax1_tx double(6,3) DEFAULT 0, -- localtax1 rate localtax1_tx double(6,3) DEFAULT 0, -- localtax1 rate
localtax1_type varchar(10) NULL, -- localtax1 type localtax1_type varchar(10) NULL, -- localtax1 type
localtax2_tx double(6,3) DEFAULT 0, -- localtax2 rate localtax2_tx double(6,3) DEFAULT 0, -- localtax2 rate
localtax2_type varchar(10) NULL, -- localtax2 type localtax2_type varchar(10) NULL, -- localtax2 type
qty real, -- quantity qty real, -- quantity
remise_percent real DEFAULT 0, -- pourcentage de remise remise_percent real DEFAULT 0, -- pourcentage de remise
remise real DEFAULT 0, -- montant de la remise remise real DEFAULT 0, -- montant de la remise
fk_remise_except integer NULL, -- Lien vers table des remises fixes fk_remise_except integer NULL, -- Lien vers table des remises fixes
price real, -- prix final price real, -- prix final
subprice double(24,8) DEFAULT 0, -- P.U. HT (exemple 100) subprice double(24,8) DEFAULT 0, -- P.U. HT (exemple 100)
total_ht double(24,8) DEFAULT 0, -- Total HT de la ligne toute quantite et incluant remise ligne et globale total_ht double(24,8) DEFAULT 0, -- Total HT de la ligne toute quantite et incluant remise ligne et globale
total_tva double(24,8) DEFAULT 0, -- Total TVA de la ligne toute quantite et incluant remise ligne et globale total_tva double(24,8) DEFAULT 0, -- Total TVA de la ligne toute quantite et incluant remise ligne et globale
total_localtax1 double(24,8) DEFAULT 0, -- Total LocalTax1 total_localtax1 double(24,8) DEFAULT 0, -- Total LocalTax1
total_localtax2 double(24,8) DEFAULT 0, -- Total LocalTax2 total_localtax2 double(24,8) DEFAULT 0, -- Total LocalTax2
total_ttc double(24,8) DEFAULT 0, -- Total TTC de la ligne toute quantite et incluant remise ligne et globale total_ttc double(24,8) DEFAULT 0, -- Total TTC de la ligne toute quantite et incluant remise ligne et globale
product_type integer DEFAULT 0, product_type integer DEFAULT 0,
date_start datetime DEFAULT NULL, -- date debut si service date_start datetime DEFAULT NULL, -- date debut si service
date_end datetime DEFAULT NULL, -- date fin si service date_end datetime DEFAULT NULL, -- date fin si service
info_bits integer DEFAULT 0, -- TVA NPR ou non info_bits integer DEFAULT 0, -- TVA NPR ou non
buy_price_ht double(24,8) DEFAULT 0, -- buying price buy_price_ht double(24,8) DEFAULT 0, -- buying price
fk_product_fournisseur_price integer DEFAULT NULL, -- reference of supplier price when line was added (may be used to update buy_price_ht current price when future invoice will be created) fk_product_fournisseur_price integer DEFAULT NULL, -- reference of supplier price when line was added (may be used to update buy_price_ht current price when future invoice will be created)
special_code integer DEFAULT 0, -- code pour les lignes speciales special_code integer DEFAULT 0, -- code pour les lignes speciales
rang integer DEFAULT 0, rang integer DEFAULT 0,
fk_unit integer DEFAULT NULL, -- lien vers table des unités fk_unit integer DEFAULT NULL, -- lien vers table des unités
import_key varchar(14), import_key varchar(14),
fk_commandefourndet integer DEFAULT NULL, -- link to detail line of commande fourn (resplenish) fk_commandefourndet integer DEFAULT NULL, -- link to detail line of commande fourn (resplenish)
fk_multicurrency integer, fk_multicurrency integer,
multicurrency_code varchar(255), multicurrency_code varchar(255),
multicurrency_subprice double(24,8) DEFAULT 0, multicurrency_subprice double(24,8) DEFAULT 0,
multicurrency_total_ht double(24,8) DEFAULT 0, multicurrency_total_ht double(24,8) DEFAULT 0,
multicurrency_total_tva double(24,8) DEFAULT 0, multicurrency_total_tva double(24,8) DEFAULT 0,
multicurrency_total_ttc double(24,8) DEFAULT 0 multicurrency_total_ttc double(24,8) DEFAULT 0
)ENGINE=innodb; )ENGINE=innodb;
-- --

View File

@ -28,7 +28,7 @@ create table llx_don
tms timestamp, tms timestamp,
fk_statut smallint NOT NULL DEFAULT 0, -- Status of donation promise or validate fk_statut smallint NOT NULL DEFAULT 0, -- Status of donation promise or validate
datedon datetime, -- Date of the donation/promise datedon datetime, -- Date of the donation/promise
amount real DEFAULT 0, amount double(24,8) DEFAULT 0,
fk_payment integer, fk_payment integer,
paid smallint default 0 NOT NULL, paid smallint default 0 NOT NULL,
firstname varchar(50), firstname varchar(50),

View File

@ -18,17 +18,17 @@
-- ============================================================================ -- ============================================================================
CREATE TABLE llx_expensereport_rules ( CREATE TABLE llx_expensereport_rules (
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
datec datetime DEFAULT NULL, datec datetime DEFAULT NULL,
tms timestamp, tms timestamp,
dates datetime NOT NULL, dates datetime NOT NULL,
datee datetime NOT NULL, datee datetime NOT NULL,
amount numeric(24,8) NOT NULL, amount double(24,8) NOT NULL,
restrictive tinyint NOT NULL, restrictive tinyint NOT NULL,
fk_user integer DEFAULT NULL, fk_user integer DEFAULT NULL,
fk_usergroup integer DEFAULT NULL, fk_usergroup integer DEFAULT NULL,
fk_c_type_fees integer NOT NULL, fk_c_type_fees integer NOT NULL,
code_expense_rules_type varchar(50) NOT NULL, code_expense_rules_type varchar(50) NOT NULL,
is_for_all tinyint DEFAULT '0', is_for_all tinyint DEFAULT '0',
entity integer DEFAULT 1 entity integer DEFAULT 1
) ENGINE=InnoDB ) ENGINE=InnoDB

View File

@ -23,24 +23,24 @@ create table llx_loan
entity integer DEFAULT 1 NOT NULL, entity integer DEFAULT 1 NOT NULL,
datec datetime, datec datetime,
tms timestamp, tms timestamp,
label varchar(80) NOT NULL, label varchar(80) NOT NULL,
fk_bank integer, fk_bank integer,
capital real default 0 NOT NULL, capital double(24,8) default 0 NOT NULL,
datestart date, datestart date,
dateend date, dateend date,
nbterm real, nbterm real,
rate double NOT NULL, rate double NOT NULL,
note_private text, note_private text,
note_public text, note_public text,
capital_position real default 0, -- If not a new loan, just have the position of capital capital_position double(24,8) default 0, -- If not a new loan, just have the position of capital
date_position date, date_position date,
paid smallint default 0 NOT NULL, paid smallint default 0 NOT NULL,
accountancy_account_capital varchar(32), accountancy_account_capital varchar(32),
accountancy_account_insurance varchar(32), accountancy_account_insurance varchar(32),
accountancy_account_interest varchar(32), accountancy_account_interest varchar(32),

View File

@ -24,9 +24,9 @@ create table llx_loan_schedule
datec datetime, -- creation date datec datetime, -- creation date
tms timestamp, tms timestamp,
datep datetime, -- payment date datep datetime, -- payment date
amount_capital real DEFAULT 0, amount_capital double(24,8) DEFAULT 0,
amount_insurance real DEFAULT 0, amount_insurance double(24,8) DEFAULT 0,
amount_interest real DEFAULT 0, amount_interest double(24,8) DEFAULT 0,
fk_typepayment integer NOT NULL, fk_typepayment integer NOT NULL,
num_payment varchar(50), num_payment varchar(50),
note_private text, note_private text,

View File

@ -23,7 +23,7 @@ create table llx_paiementcharge
datec datetime, -- date de creation datec datetime, -- date de creation
tms timestamp, tms timestamp,
datep datetime, -- payment date datep datetime, -- payment date
amount real DEFAULT 0, amount double(24,8) DEFAULT 0,
fk_typepaiement integer NOT NULL, fk_typepaiement integer NOT NULL,
num_paiement varchar(50), num_paiement varchar(50),
note text, note text,

View File

@ -19,19 +19,19 @@
create table llx_paiementfourn create table llx_paiementfourn
( (
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
ref varchar(30), ref varchar(30),
entity integer DEFAULT 1, entity integer DEFAULT 1,
tms timestamp, tms timestamp,
datec datetime, -- date de creation de l'enregistrement datec datetime, -- date de creation de l'enregistrement
datep datetime, -- date de paiement datep datetime, -- date de paiement
amount real DEFAULT 0, -- montant amount double(24,8) DEFAULT 0, -- montant
multicurrency_amount double(24,8) DEFAULT 0, -- multicurrency amount multicurrency_amount double(24,8) DEFAULT 0, -- multicurrency amount
fk_user_author integer, -- auteur fk_user_author integer, -- auteur
fk_paiement integer NOT NULL, -- moyen de paiement fk_paiement integer NOT NULL, -- moyen de paiement
num_paiement varchar(50), -- numero de paiement (cheque) num_paiement varchar(50), -- numero de paiement (cheque)
note text, note text,
fk_bank integer NOT NULL, fk_bank integer NOT NULL,
statut smallint NOT NULL DEFAULT 0, statut smallint NOT NULL DEFAULT 0,
model_pdf varchar(255) model_pdf varchar(255)
)ENGINE=innodb; )ENGINE=innodb;

View File

@ -23,7 +23,7 @@ create table llx_payment_donation
datec datetime, -- date de creation datec datetime, -- date de creation
tms timestamp, tms timestamp,
datep datetime, -- payment date datep datetime, -- payment date
amount real DEFAULT 0, amount double(24,8) DEFAULT 0,
fk_typepayment integer NOT NULL, fk_typepayment integer NOT NULL,
num_payment varchar(50), num_payment varchar(50),
note text, note text,

View File

@ -23,7 +23,7 @@ create table llx_payment_expensereport
datec datetime, -- date de creation datec datetime, -- date de creation
tms timestamp, tms timestamp,
datep datetime, -- payment date datep datetime, -- payment date
amount real DEFAULT 0, amount double(24,8) DEFAULT 0,
fk_typepayment integer NOT NULL, fk_typepayment integer NOT NULL,
num_payment varchar(50), num_payment varchar(50),
note text, note text,

View File

@ -24,13 +24,13 @@ create table llx_payment_loan
datec datetime, -- creation date datec datetime, -- creation date
tms timestamp, tms timestamp,
datep datetime, -- payment date datep datetime, -- payment date
amount_capital real DEFAULT 0, amount_capital double(24,8) DEFAULT 0,
amount_insurance real DEFAULT 0, amount_insurance double(24,8) DEFAULT 0,
amount_interest real DEFAULT 0, amount_interest double(24,8) DEFAULT 0,
fk_typepayment integer NOT NULL, fk_typepayment integer NOT NULL,
num_payment varchar(50), num_payment varchar(50),
note_private text, note_private text,
note_public text, note_public text,
fk_bank integer NOT NULL, fk_bank integer NOT NULL,
fk_user_creat integer, -- creation user fk_user_creat integer, -- creation user
fk_user_modif integer -- last modification user fk_user_modif integer -- last modification user

View File

@ -24,8 +24,8 @@ create table llx_payment_salary
fk_user integer NOT NULL, fk_user integer NOT NULL,
datep date, -- date de paiement datep date, -- date de paiement
datev date, -- date de valeur (this field should not be here, only into bank tables) datev date, -- date de valeur (this field should not be here, only into bank tables)
salary real, -- salary of user when payment was done salary double(24,8), -- salary of user when payment was done
amount real NOT NULL DEFAULT 0, amount double(24,8) NOT NULL DEFAULT 0,
fk_typepayment integer NOT NULL, fk_typepayment integer NOT NULL,
num_payment varchar(50), -- ref num_payment varchar(50), -- ref
label varchar(255), label varchar(255),

View File

@ -29,7 +29,7 @@ create table llx_prelevement_bons
ref varchar(12), -- reference ref varchar(12), -- reference
entity integer DEFAULT 1 NOT NULL, -- multi company id entity integer DEFAULT 1 NOT NULL, -- multi company id
datec datetime, -- date de creation datec datetime, -- date de creation
amount real DEFAULT 0, -- montant total du prelevement amount double(24,8) DEFAULT 0, -- montant total du prelevement
statut smallint DEFAULT 0, -- statut statut smallint DEFAULT 0, -- statut
credite smallint DEFAULT 0, -- indique si le prelevement a ete credite credite smallint DEFAULT 0, -- indique si le prelevement a ete credite
note text, note text,

View File

@ -21,7 +21,7 @@ create table llx_prelevement_facture_demande
( (
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
fk_facture integer NOT NULL, fk_facture integer NOT NULL,
amount real NOT NULL, amount double(24,8) NOT NULL,
date_demande datetime NOT NULL, date_demande datetime NOT NULL,
traite smallint DEFAULT 0, traite smallint DEFAULT 0,
date_traite datetime, date_traite datetime,

View File

@ -24,7 +24,7 @@ create table llx_prelevement_lignes
statut smallint DEFAULT 0, statut smallint DEFAULT 0,
client_nom varchar(255), client_nom varchar(255),
amount real DEFAULT 0, amount double(24,8) DEFAULT 0,
code_banque varchar(128), code_banque varchar(128),
code_guichet varchar(6), code_guichet varchar(6),
number varchar(255), number varchar(255),

View File

@ -64,7 +64,7 @@ create table llx_societe
idprof5 varchar(128), -- IDProf5: nu for france idprof5 varchar(128), -- IDProf5: nu for france
idprof6 varchar(128), -- IDProf6: nu for france idprof6 varchar(128), -- IDProf6: nu for france
tva_intra varchar(20), -- tva tva_intra varchar(20), -- tva
capital real, -- capital de la societe capital double(24,8), -- capital de la societe
fk_stcomm integer DEFAULT 0 NOT NULL, -- commercial statut fk_stcomm integer DEFAULT 0 NOT NULL, -- commercial statut
note_private text, -- note_private text, --
note_public text, -- note_public text, --

View File

@ -24,7 +24,7 @@ create table llx_subscription
fk_adherent integer, fk_adherent integer,
dateadh datetime, dateadh datetime,
datef date, datef date,
subscription real, subscription double(24,8),
fk_bank integer DEFAULT NULL, fk_bank integer DEFAULT NULL,
note text note text
)ENGINE=innodb; )ENGINE=innodb;

View File

@ -24,7 +24,7 @@ create table llx_tva
datec datetime, -- Create date datec datetime, -- Create date
datep date, -- date de paiement datep date, -- date de paiement
datev date, -- date de valeur datev date, -- date de valeur
amount real NOT NULL DEFAULT 0, amount double(24,8) NOT NULL DEFAULT 0,
fk_typepayment integer NULL, fk_typepayment integer NULL,
num_payment varchar(50), num_payment varchar(50),
label varchar(255), label varchar(255),

View File

@ -8,7 +8,7 @@ ACCOUNTING_EXPORT_AMOUNT=تصدير الكمية
ACCOUNTING_EXPORT_DEVISE=Export currency ACCOUNTING_EXPORT_DEVISE=Export currency
Selectformat=حدد تنسيق للملف Selectformat=حدد تنسيق للملف
ACCOUNTING_EXPORT_PREFIX_SPEC=تحديد بادئة لاسم الملف ACCOUNTING_EXPORT_PREFIX_SPEC=تحديد بادئة لاسم الملف
ThisService=This service ThisService=هذه الخدمة
ThisProduct=This product ThisProduct=This product
DefaultForService=Default for service DefaultForService=Default for service
DefaultForProduct=Default for product DefaultForProduct=Default for product

View File

@ -189,7 +189,6 @@ IgnoreDuplicateRecords=Ignore errors of duplicate record (INSERT IGNORE)
AutoDetectLang=اكتشاف تلقائي (لغة المتصفح) AutoDetectLang=اكتشاف تلقائي (لغة المتصفح)
FeatureDisabledInDemo=الميزة معلطة في العرض التجريبي FeatureDisabledInDemo=الميزة معلطة في العرض التجريبي
FeatureAvailableOnlyOnStable=Feature only available on official stable versions FeatureAvailableOnlyOnStable=Feature only available on official stable versions
Rights=الصلاحيات
BoxesDesc=Widgets are components showing some information that you can add to personalize some pages. You can choose between showing the widget or not by selecting target page and clicking 'Activate', or by clicking the dustbin to disable it. BoxesDesc=Widgets are components showing some information that you can add to personalize some pages. You can choose between showing the widget or not by selecting target page and clicking 'Activate', or by clicking the dustbin to disable it.
OnlyActiveElementsAreShown=فقط العناصر من <a href="%s">النماذج المفعلة </a> سوف تظهر. OnlyActiveElementsAreShown=فقط العناصر من <a href="%s">النماذج المفعلة </a> سوف تظهر.
ModulesDesc=Dolibarr modules define which application/feature is enabled in software. Some application/modules require permissions you must grant to users, after activating it. Click on button on/off to enable a module/application. ModulesDesc=Dolibarr modules define which application/feature is enabled in software. Some application/modules require permissions you must grant to users, after activating it. Click on button on/off to enable a module/application.
@ -593,7 +592,7 @@ Module5000Desc=يسمح لك لإدارة الشركات المتعددة
Module6000Name=سير العمل Module6000Name=سير العمل
Module6000Desc=إدارة سير العمل Module6000Desc=إدارة سير العمل
Module10000Name=Websites Module10000Name=Websites
Module10000Desc=Create public websites with a WYSIWG editor. Just setup your web server to point to the dedicated directory to have it online on the Internet. Module10000Desc=Create public websites with a WYSIWG editor. Just setup your web server (Apache, Nginx, ...) to point to the dedicated Dolibarr directory to have it online on the Internet with your own domain name.
Module20000Name=ترك إدارة الطلبات Module20000Name=ترك إدارة الطلبات
Module20000Desc=أعلن وتابع الموظفين يترك طلبات Module20000Desc=أعلن وتابع الموظفين يترك طلبات
Module39000Name=الكثير المنتج Module39000Name=الكثير المنتج
@ -1130,7 +1129,7 @@ SendmailOptionMayHurtBuggedMTA=ميزة لإرسال رسائل باستخدام
TranslationSetup=Setup of translation TranslationSetup=Setup of translation
TranslationKeySearch=Search a translation key or string TranslationKeySearch=Search a translation key or string
TranslationOverwriteKey=Overwrite a translation string TranslationOverwriteKey=Overwrite a translation string
TranslationDesc=How to set displayed application language :<br>* Systemwide: menu <strong>Home - Setup - Display</strong><br>* Per user: <strong>User display setup</strong> tab of user card (click on username at the top of the screen). TranslationDesc=How to set displayed application language :<br>* Systemwide: menu <strong>Home - Setup - Display</strong><br>* Per user: Use the <strong>User display setup</strong> tab on user card (click on username at the top of the screen).
TranslationOverwriteDesc=You can also override strings filling the following table. Choose your language from "%s" dropdown, insert the translation key string into "%s" and your new translation into "%s" TranslationOverwriteDesc=You can also override strings filling the following table. Choose your language from "%s" dropdown, insert the translation key string into "%s" and your new translation into "%s"
TranslationOverwriteDesc2=You can use the other tab to help you know translation key to use TranslationOverwriteDesc2=You can use the other tab to help you know translation key to use
TranslationString=Translation string TranslationString=Translation string
@ -1171,8 +1170,6 @@ RuleForGeneratedPasswords=قاعدة لتوليد كلمات السر واقتر
DisableForgetPasswordLinkOnLogonPage=لا تظهر وصلة "نسيت كلمة المرور" على صفحة تسجيل الدخول DisableForgetPasswordLinkOnLogonPage=لا تظهر وصلة "نسيت كلمة المرور" على صفحة تسجيل الدخول
UsersSetup=شاهد الإعداد وحدة UsersSetup=شاهد الإعداد وحدة
UserMailRequired=مطلوب بريد إلكتروني لإنشاء مستخدم جديد UserMailRequired=مطلوب بريد إلكتروني لإنشاء مستخدم جديد
DefaultCategoryCar=Default car category
DefaultRangeNumber=Default range number
##### HRM setup ##### ##### HRM setup #####
HRMSetup=HRM وحدة الإعداد HRMSetup=HRM وحدة الإعداد
##### Company setup ##### ##### Company setup #####

View File

@ -70,3 +70,9 @@ Stats=إحصاءات المبيعات
StatusProsp=احتمال وضع StatusProsp=احتمال وضع
DraftPropals=صياغة مقترحات تجارية DraftPropals=صياغة مقترحات تجارية
NoLimit=لا حدود NoLimit=لا حدود
ToOfferALinkForOnlineSignature=Link for online signature
WelcomeOnOnlineSignaturePage=Welcome on the page to accept commerical proposals from %s
ThisScreenAllowsYouToSignDocFrom=This screen allow you to accept and sign, or refuse, a quote/commercial proposal
ThisIsInformationOnDocumentToSign=This is information on document to accept or refuse
SignatureProposalRef=Signature of quote/commerical proposal %s
FeatureOnlineSignDisabled=Feature for online signing disabled or document generated before the feature was enabled

View File

@ -79,6 +79,8 @@ HolidaysCancelation=ترك طلب الإلغاء
EmployeeLastname=Employee last name EmployeeLastname=Employee last name
EmployeeFirstname=Employee first name EmployeeFirstname=Employee first name
TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed
LastHolidays=Latest %s leave requests
AllHolidays=All leave requests
## Configuration du Module ## ## Configuration du Module ##
LastUpdateCP=Latest automatic update of leaves allocation LastUpdateCP=Latest automatic update of leaves allocation

View File

@ -99,7 +99,6 @@ NbOfCompaniesContacts=فريدة من شركات الاتصالات
MailNoChangePossible=صادق المتلقين للمراسلة لا يمكن تغيير MailNoChangePossible=صادق المتلقين للمراسلة لا يمكن تغيير
SearchAMailing=البحث البريدية SearchAMailing=البحث البريدية
SendMailing=إرسال البريد الإلكتروني SendMailing=إرسال البريد الإلكتروني
SendMail=إرسال بريد إلكتروني
SentBy=أرسلها SentBy=أرسلها
MailingNeedCommand=Sending an emailing can be performed from command line. Ask your server administrator to launch the following command to send the emailing to all recipients: MailingNeedCommand=Sending an emailing can be performed from command line. Ask your server administrator to launch the following command to send the emailing to all recipients:
MailingNeedCommand2=ولكن يمكنك إرسالها عبر الإنترنت عن طريق إضافة معلمة MAILING_LIMIT_SENDBYWEB مع قيمة الحد الأقصى لعدد من رسائل البريد الإلكتروني التي تريد إرسالها من خلال هذه الدورة. MailingNeedCommand2=ولكن يمكنك إرسالها عبر الإنترنت عن طريق إضافة معلمة MAILING_LIMIT_SENDBYWEB مع قيمة الحد الأقصى لعدد من رسائل البريد الإلكتروني التي تريد إرسالها من خلال هذه الدورة.

View File

@ -266,8 +266,10 @@ DateApprove2=تاريخ الموافقة (موافقة الثانية)
RegistrationDate=Registration date RegistrationDate=Registration date
UserCreation=Creation user UserCreation=Creation user
UserModification=Modification user UserModification=Modification user
UserValidation=Validation user
UserCreationShort=Creat. user UserCreationShort=Creat. user
UserModificationShort=Modif. user UserModificationShort=Modif. user
UserValidationShort=Valid. user
DurationYear=سنة DurationYear=سنة
DurationMonth=شهر DurationMonth=شهر
DurationWeek=أسبوع DurationWeek=أسبوع
@ -608,6 +610,7 @@ SendByMail=أرسل عن طريق البريد الالكتروني
MailSentBy=البريد الإلكتروني التي بعث بها MailSentBy=البريد الإلكتروني التي بعث بها
TextUsedInTheMessageBody=هيئة البريد الإلكتروني TextUsedInTheMessageBody=هيئة البريد الإلكتروني
SendAcknowledgementByMail=Send confirmation email SendAcknowledgementByMail=Send confirmation email
SendMail=إرسال بريد إلكتروني
EMail=البريد الإلكتروني EMail=البريد الإلكتروني
NoEMail=أي بريد إلكتروني NoEMail=أي بريد إلكتروني
Email=Email Email=Email
@ -808,6 +811,10 @@ ModuleBuilder=Module Builder
SetMultiCurrencyCode=Set currency SetMultiCurrencyCode=Set currency
BulkActions=Bulk actions BulkActions=Bulk actions
ClickToShowHelp=Click to show tooltip help ClickToShowHelp=Click to show tooltip help
Website=Web site
WebSites=Web sites
ExpenseReport=تقرير حساب
ExpenseReports=تقارير المصاريف
HR=HR HR=HR
HRAndBank=HR and Bank HRAndBank=HR and Bank
AutomaticallyCalculated=Automatically calculated AutomaticallyCalculated=Automatically calculated
@ -818,6 +825,9 @@ Websites=Web sites
Events=الأحداث Events=الأحداث
EMailTemplates=رسائل البريد الإلكتروني قوالب EMailTemplates=رسائل البريد الإلكتروني قوالب
FileNotShared=File not shared to exernal public FileNotShared=File not shared to exernal public
Project=المشروع
Projects=مشاريع
Rights=الصلاحيات
# Week day # Week day
Monday=يوم الاثنين Monday=يوم الاثنين
Tuesday=الثلاثاء Tuesday=الثلاثاء

View File

@ -168,8 +168,8 @@ TurnoverOrBudget=دوران (لشركة) أو الميزانية (على أسا
DefaultAmount=المبلغ الافتراضي للاكتتاب DefaultAmount=المبلغ الافتراضي للاكتتاب
CanEditAmount=يمكن للزائر اختيار / تحرير كمية من اكتتابها CanEditAmount=يمكن للزائر اختيار / تحرير كمية من اكتتابها
MEMBER_NEWFORM_PAYONLINE=القفز على صفحة الدفع عبر الانترنت المتكاملة MEMBER_NEWFORM_PAYONLINE=القفز على صفحة الدفع عبر الانترنت المتكاملة
ByProperties=حسب الخصائص ByProperties=By nature
MembersStatisticsByProperties=إحصائيات الأعضاء حسب الخصائص MembersStatisticsByProperties=Members statistics by nature
MembersByNature=هذه الشاشة تظهر لك إحصاءات عن أعضاء من الطبيعة. MembersByNature=هذه الشاشة تظهر لك إحصاءات عن أعضاء من الطبيعة.
MembersByRegion=هذه الشاشة تظهر لك إحصاءات عن أعضاء حسب المنطقة. MembersByRegion=هذه الشاشة تظهر لك إحصاءات عن أعضاء حسب المنطقة.
VATToUseForSubscriptions=معدل ضريبة القيمة المضافة لاستخدامه في اشتراكات VATToUseForSubscriptions=معدل ضريبة القيمة المضافة لاستخدامه في اشتراكات

View File

@ -47,6 +47,7 @@ SpecificationFile=File with business rules
LanguageFile=File for language LanguageFile=File for language
ConfirmDeleteProperty=Are you sure you want to delete the property <strong>%s</strong> ? This will change code in PHP class but also remove column from table definition of object. ConfirmDeleteProperty=Are you sure you want to delete the property <strong>%s</strong> ? This will change code in PHP class but also remove column from table definition of object.
NotNull=Not NULL NotNull=Not NULL
NotNullDesc=1=Set database to NOT NULL. -1=Allow null values and force value to NULL if empty ('' or 0).
SearchAll=Used for 'search all' SearchAll=Used for 'search all'
DatabaseIndex=Database index DatabaseIndex=Database index
FileAlreadyExists=File %s already exists FileAlreadyExists=File %s already exists
@ -70,7 +71,7 @@ NoWidget=No widget
GoToApiExplorer=Go to API explorer GoToApiExplorer=Go to API explorer
ListOfPermissionsDefined=List of defined permissions ListOfPermissionsDefined=List of defined permissions
EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION) EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION)
VisibleDesc=Is the field visible into list ? (Examples: 0=not visible, 1=visible by default on list, -1=not shown by default on list but can be added into list to be viewed) VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only. Using a negative value means field is not shown by default on list but can be selected for viewing)
IsAMeasureDesc=Can the value of field be cumulated to get a total into list ? (Examples: 1 or 0) IsAMeasureDesc=Can the value of field be cumulated to get a total into list ? (Examples: 1 or 0)
SearchAllDesc=Is the field used to make a search from the quick search tool ? (Examples: 1 or 0) SearchAllDesc=Is the field used to make a search from the quick search tool ? (Examples: 1 or 0)
SpecDefDesc=Enter here all documentation you want to provide with your module that is not already defined by other tabs. You can use .md or better, the rich .asciidoc syntax. SpecDefDesc=Enter here all documentation you want to provide with your module that is not already defined by other tabs. You can use .md or better, the rich .asciidoc syntax.

View File

@ -4,126 +4,126 @@ ProductLabel=وصف المنتج
ProductLabelTranslated=تسمية المنتج مترجمة ProductLabelTranslated=تسمية المنتج مترجمة
ProductDescriptionTranslated=ترجم وصف المنتج ProductDescriptionTranslated=ترجم وصف المنتج
ProductNoteTranslated=ترجم مذكرة المنتج ProductNoteTranslated=ترجم مذكرة المنتج
ProductServiceCard=منتجات / خدمات البطاقات ProductServiceCard=منتجات / بطاقة الخدمات
TMenuProducts=المنتجات TMenuProducts=المنتجات
TMenuServices=الخدمات TMenuServices=الخدمات
Products=المنتجات Products=المنتجات
Services=الخدمات Services=الخدمات
Product=المنتج Product=المنتج
Service=الخدمة Service=الخدمة
ProductId=المنتجات / الخدمات معرف ProductId=معرف المنتج و الخدمة
Create=إنشاء Create=إنشاء
Reference=المرجعية Reference=المرجع
NewProduct=منتجات جديدة NewProduct=منتج جديد
NewService=خدمة جديدة NewService=خدمة جديدة
ProductVatMassChange=تغيير VAT الشامل ProductVatMassChange=تغيير جماعي لضريبة القيمة المضافة
ProductVatMassChangeDesc=هذه الصفحة يمكن استخدامها لتعديل نسبة الضريبة على القيمة المضافة المحددة على المنتجات أو الخدمات من قيمة إلى أخرى. تحذير، ويتم هذا التغيير على كل قاعدة البيانات. ProductVatMassChangeDesc=هذه الصفحة يمكن استخدامها لتعديل نسبة الضريبة على القيمة المضافة المحددة على المنتجات أو الخدمات من قيمة إلى أخرى. تحذير، يتم هذا التغيير على كل قاعدة البيانات.
MassBarcodeInit=الحرف الأول الباركود الشامل MassBarcodeInit=الحرف الأول الباركود الشامل
MassBarcodeInitDesc=هذه الصفحة يمكن استخدامها لتهيئة الباركود على الكائنات التي لا يكون الباركود تعريف. تحقق قبل أن الإعداد وحدة الباركود كاملة. MassBarcodeInitDesc=هذه الصفحة يمكن استخدامها لتهيئة الباركود على الكائنات التي لا يكون الباركود تعريف. تحقق قبل أن الإعداد وحدة الباركود كاملة.
ProductAccountancyBuyCode=Accounting code (purchase) ProductAccountancyBuyCode=كود المحاسبة (شراء)
ProductAccountancySellCode=Accounting code (sale) ProductAccountancySellCode=كود المحاسبة (بيع)
ProductOrService=المنتج أو الخدمة ProductOrService=المنتج أو الخدمة
ProductsAndServices=المنتجات والخدمات ProductsAndServices=المنتجات والخدمات
ProductsOrServices=منتجات أو خدمات ProductsOrServices=منتجات أو خدمات
ProductsOnSaleOnly=Products for sale only ProductsOnSaleOnly=Products for sale only
ProductsOnPurchaseOnly=Products for purchase only ProductsOnPurchaseOnly=Products for purchase only
ProductsNotOnSell=Products not for sale and not for purchase ProductsNotOnSell=منتجات ليست للبيع ولا الشراء
ProductsOnSellAndOnBuy=المنتجات للبيع والشراء ProductsOnSellAndOnBuy=المنتجات للبيع والشراء
ServicesOnSaleOnly=Services for sale only ServicesOnSaleOnly=Services for sale only
ServicesOnPurchaseOnly=Services for purchase only ServicesOnPurchaseOnly=Services for purchase only
ServicesNotOnSell=Services not for sale and not for purchase ServicesNotOnSell=خدمات ليست للبيع ولا الشراء
ServicesOnSellAndOnBuy=خدمات للبيع والشراء ServicesOnSellAndOnBuy=خدمات للبيع والشراء
LastModifiedProductsAndServices=Latest %s modified products/services LastModifiedProductsAndServices=Latest %s modified products/services
LastRecordedProducts=Latest %s recorded products LastRecordedProducts=Latest %s recorded products
LastRecordedServices=Latest %s recorded services LastRecordedServices=Latest %s recorded services
CardProduct0=منتجات البطاقات CardProduct0=منتجات البطاقات
CardProduct1=بطاقة الخدمة CardProduct1=بطاقة الخدمة
Stock=الأسهم Stock=المخزون
Stocks=الاسهم Stocks=المخزون
Movements=حركات Movements=حركات
Sell=مبيعات Sell=مبيعات
Buy=مشتريات Buy=مشتريات
OnSell=على بيع OnSell=متاح للبيع
OnBuy=شراؤها OnBuy=للشراء
NotOnSell=من بيع NotOnSell=ليس للبيع
ProductStatusOnSell=على بيع ProductStatusOnSell=متاح للبيع
ProductStatusNotOnSell=من بيع ProductStatusNotOnSell=ليس للبيع
ProductStatusOnSellShort=على بيع ProductStatusOnSellShort=متاح للبيع
ProductStatusNotOnSellShort=من بيع ProductStatusNotOnSellShort=ليس للبيع
ProductStatusOnBuy=متاح ProductStatusOnBuy=متاح للشراء
ProductStatusNotOnBuy=عفا عليها الزمن ProductStatusNotOnBuy=ليس للشراء
ProductStatusOnBuyShort=متاح ProductStatusOnBuyShort=متاح للشراء
ProductStatusNotOnBuyShort=عفا عليها الزمن ProductStatusNotOnBuyShort=ليس للشراء
UpdateVAT=تحديث الضريبة على القيمة المضافة UpdateVAT=تحديث الضريبة على القيمة المضافة
UpdateDefaultPrice=تحديث السعر الافتراضي UpdateDefaultPrice=تحديث السعر الافتراضي
UpdateLevelPrices=أسعار التحديث لكل مستوى UpdateLevelPrices=أسعار التحديث لكل مستوى
AppliedPricesFrom=تطبق الأسعار من AppliedPricesFrom=تطبق الأسعار من
SellingPrice=سعر البيع SellingPrice=سعر البيع
SellingPriceHT=سعر البيع (صافي الضرائب) SellingPriceHT=سعر البيع (صافي الضرائب)
SellingPriceTTC=سعر البيع (شركة الضريبية) SellingPriceTTC=سعر البيع (شامل الضريبية)
CostPriceDescription=هذا السعر (صافية من الضرائب) يمكن استخدامها لتخزين متوسط ​​كمية هذا تكلفة المنتج لشركتك. قد يكون بأي ثمن على حساب نفسك، على سبيل المثال من متوسط ​​سعر الشراء بالإضافة إلى متوسط ​​إنتاج وتوزيع التكاليف. CostPriceDescription=هذا السعر (صافية من الضرائب) يمكن استخدامها لتخزين متوسط ​​كمية هذا تكلفة المنتج لشركتك. قد يكون بأي ثمن على حساب نفسك، على سبيل المثال من متوسط ​​سعر الشراء بالإضافة إلى متوسط ​​إنتاج وتوزيع التكاليف.
CostPriceUsage=This value could be used for margin calculation. CostPriceUsage=This value could be used for margin calculation.
SoldAmount=Sold amount SoldAmount=Sold amount
PurchasedAmount=Purchased amount PurchasedAmount=Purchased amount
NewPrice=السعر الجديد NewPrice=السعر الجديد
MinPrice=دقيقة. سعر البيع MinPrice=سعر البيع
CantBeLessThanMinPrice=سعر البيع لا يمكن أن يكون أقل من الحد الأدنى المسموح لهذا المنتج (٪ ق بدون الضرائب) CantBeLessThanMinPrice=سعر البيع لا يمكن أن يكون أقل من الحد الأدنى المسموح لهذا المنتج (٪ ق بدون الضرائب)
ContractStatusClosed=مغلقة ContractStatusClosed=مغلق
ErrorProductAlreadyExists=منتج مع الإشارة ٪ ق موجود بالفعل. ErrorProductAlreadyExists=المنتج ذو المرجع %sموجود بالفعل.
ErrorProductBadRefOrLabel=قيمة خاطئة لإشارة أو علامة. ErrorProductBadRefOrLabel=قيمة خاطئة لـ مرجع أو ملصق.
ErrorProductClone=كان هناك مشكلة أثناء محاولة استنساخ المنتج أو الخدمة. ErrorProductClone=كان هناك مشكلة أثناء محاولة استنساخ المنتج أو الخدمة.
ErrorPriceCantBeLowerThanMinPrice=خطأ، سعر لا يمكن أن يكون أقل من الحد الأدنى السعر. ErrorPriceCantBeLowerThanMinPrice=خطأ، سعر لا يمكن أن يكون أقل من الحد الأدنى السعر.
Suppliers=الموردين Suppliers=الموردين
SupplierRef=المرجع المورد. SupplierRef=مرجع مورد المنتجات.
ShowProduct=وتظهر المنتج ShowProduct=عرض المنتج
ShowService=وتظهر الخدمة ShowService=عرض الخدمة
ProductsAndServicesArea=مجال المنتجات والخدمات ProductsAndServicesArea=منطقة المنتجات والخدمات
ProductsArea=منتجات المنطقة ProductsArea=منطقة المنتجات
ServicesArea=مجال الخدمات ServicesArea=منطقة الخدمات
ListOfStockMovements=قائمة الحركات الأسهم ListOfStockMovements=قائمة الحركات المخزون
BuyingPrice=سعر الشراء BuyingPrice=سعر الشراء
PriceForEachProduct=المنتجات بأسعار محددة PriceForEachProduct=المنتجات بأسعار محددة
SupplierCard=بطاقة المورد SupplierCard=بطاقة المورد
PriceRemoved=رفع الأسعار PriceRemoved=تمت إزالة السعر
BarCode=الباركود BarCode=الباركود
BarcodeType=نوع الباركود BarcodeType=نوع الباركود
SetDefaultBarcodeType=حدد نوع الباركود SetDefaultBarcodeType=حدد نوع الباركود
BarcodeValue=قيمة الباركود BarcodeValue=قيمة الباركود
NoteNotVisibleOnBill=علما) على الفواتير غير مرئي ، واقتراحات...) NoteNotVisibleOnBill=ملحوظة(غيرمرئية على الفواتير والعروض...)
ServiceLimitedDuration=إذا كان المنتج هو خدمة لفترة محدودة : ServiceLimitedDuration=إذا كان المنتج هو خدمة لفترة محدودة :
MultiPricesAbility=Several segment of prices per product/service (each customer is in one segment) MultiPricesAbility=عدة شرائح من أسعار لكل منتج / خدمة (كل عميل في شريحة واحدة)
MultiPricesNumPrices=عدد من السعر MultiPricesNumPrices=عدد من السعر
AssociatedProductsAbility=Activate the feature to manage virtual products AssociatedProductsAbility=تنشيط ميزة إدارة المنتجات الإفتراضية
AssociatedProducts=المنتجات AssociatedProducts=المنتجات الإفتراضية
AssociatedProductsNumber=عدد المنتجات AssociatedProductsNumber=عدد المنتجات التي تنتج هذا المنتج الإفتراضي
ParentProductsNumber=عدد الوالد منتجات التعبئة والتغليف ParentProductsNumber=عدد منتج التعبئة الاب
ParentProducts=Parent products ParentProducts=Parent products
IfZeroItIsNotAVirtualProduct=If 0, this product is not a virtual product IfZeroItIsNotAVirtualProduct=إذا كان 0، هذا المنتج ليس منتج إفتراضي
IfZeroItIsNotUsedByVirtualProduct=If 0, this product is not used by any virtual product IfZeroItIsNotUsedByVirtualProduct=إذا كان 0، لا يتم استخدام هذا المنتج من قبل أي منتج إفتراضي
KeywordFilter=الكلمة الرئيسية فلتر KeywordFilter=فلتر الكلمة المقتاحية
CategoryFilter=فئة فلتر CategoryFilter=فلتر التصنيف
ProductToAddSearch=إضافة إلى البحث عن المنتج ProductToAddSearch= إبحث عن منتج لإضافتة
NoMatchFound=العثور على أي مباراة NoMatchFound=لا يوجد نتائج متطابقة
ListOfProductsServices=List of products/services ListOfProductsServices=List of products/services
ProductAssociationList=قائمة المنتجات / الخدمات التي هي مكون من مكونات هذا المنتج الظاهري / حزمة ProductAssociationList=قائمة المنتجات / الخدمات التي هي مكون من مكونات هذا المنتج/ الحزمة الإفتراضية
ProductParentList=قائمة من المنتجات / الخدمات مع هذا المنتج كعنصر ProductParentList=قائمة من المنتجات / الخدمات الإفتراضية مع هذا المنتج كعنصر مكون
ErrorAssociationIsFatherOfThis=واحد من اختيار المنتج الأم الحالية المنتج ErrorAssociationIsFatherOfThis=واحد من اختيار المنتج الأم الحالية المنتج
DeleteProduct=حذف المنتجات / الخدمات DeleteProduct=حذف منتج / خدمة
ConfirmDeleteProduct=هل أنت متأكد من حذف هذه المنتجات / الخدمات؟ ConfirmDeleteProduct=هل أنت متأكد من حذف هذا المنتج / الخدمة؟
ProductDeleted=المنتجات والخدمات "٪ ل" حذفها من قاعدة البيانات. ProductDeleted=المنتج /الخدمة "%s" تم حذفها من قاعدة البيانات.
ExportDataset_produit_1=المنتجات ExportDataset_produit_1=المنتجات
ExportDataset_service_1=الخدمات ExportDataset_service_1=الخدمات
ImportDataset_produit_1=المنتجات ImportDataset_produit_1=المنتجات
ImportDataset_service_1=الخدمات ImportDataset_service_1=الخدمات
DeleteProductLine=حذف خط الإنتاج DeleteProductLine=حذف خط الإنتاج
ConfirmDeleteProductLine=هل أنت متأكد من أنك تريد حذف هذا السطر المنتج؟ ConfirmDeleteProductLine=هل أنت متأكد من أنك تريد حذف خط الإنتاج؟
ProductSpecial=خاص ProductSpecial=خاص
QtyMin=الحد الأدنى من الكمية QtyMin=الحد الأدنى من الكمية
PriceQtyMin=ثمن هذا دقيقة. الكمية (ث / س الخصم) PriceQtyMin=ثمن هذا الحد الادنى (ث / س الخصم)
VATRateForSupplierProduct=معدل ضريبة القيمة المضافة (لهذا المورد / المنتج) VATRateForSupplierProduct=معدل ضريبة القيمة المضافة (لهذا المورد / المنتج)
DiscountQtyMin=خصم الكمية الافتراضية ل DiscountQtyMin=الخصم الإفتراضي للكمية
NoPriceDefinedForThisSupplier=لا السعر الكمية المحددة لهذا المورد / المنتج NoPriceDefinedForThisSupplier=لا يوجد سعر أو كمية محددة لهذا المورد / المنتج
NoSupplierPriceDefinedForThisProduct=لا مورد السعر الكمية المحددة لهذا المنتج NoSupplierPriceDefinedForThisProduct=لا سعر أو كمية محددة لهذا المنتج من قبل المورد
PredefinedProductsToSell=منتجات محددة مسبقا للبيع PredefinedProductsToSell=منتجات محددة مسبقا للبيع
PredefinedServicesToSell=خدمات محددة مسبقا للبيع PredefinedServicesToSell=خدمات محددة مسبقا للبيع
PredefinedProductsAndServicesToSell=منتجات محددة مسبقا / خدمات للبيع PredefinedProductsAndServicesToSell=منتجات محددة مسبقا / خدمات للبيع
@ -131,27 +131,27 @@ PredefinedProductsToPurchase=المنتج مسبقا لشراء
PredefinedServicesToPurchase=خدمات محددة مسبقا لشراء PredefinedServicesToPurchase=خدمات محددة مسبقا لشراء
PredefinedProductsAndServicesToPurchase=منتجات محددة مسبقا / خدمات أن puchase PredefinedProductsAndServicesToPurchase=منتجات محددة مسبقا / خدمات أن puchase
NotPredefinedProducts=Not predefined products/services NotPredefinedProducts=Not predefined products/services
GenerateThumb=يولد الإبهام GenerateThumb=توليد صورة مصغرة
ServiceNb=خدمة ق # ٪ ServiceNb=خدمة #%s
ListProductServiceByPopularity=قائمة المنتجات / الخدمات حسب الشهرة ListProductServiceByPopularity=قائمة المنتجات / الخدمات حسب الشهرة
ListProductByPopularity=قائمة المنتجات / الخدمات شعبية ListProductByPopularity=قائمة المنتجات / الخدمات بحسب الشهرة
ListServiceByPopularity=قائمة الخدمات حسب الشهرة ListServiceByPopularity=قائمة الخدمات بحسب الشهرة
Finished=المنتجات المصنعة Finished=المنتجات المصنعة
RowMaterial=المادة الأولى RowMaterial=المادة الخام
CloneProduct=استنساخ المنتجات أو الخدمات CloneProduct=استنساخ المنتجات أو الخدمات
ConfirmCloneProduct=Are you sure you want to clone product or service <b>%s</b>? ConfirmCloneProduct=هل انت متأكد انك ترغب في استنساخ المنتج/الخدمة <b>%s</b>؟
CloneContentProduct=استنساخ جميع المعلومات الرئيسية من المنتجات / الخدمات CloneContentProduct=استنساخ جميع المعلومات الرئيسية لـ المنتج / الخدمة
ClonePricesProduct=استنساخ الرئيسية معلومات والأسعار ClonePricesProduct=استنساخ المعلومات الرئيسية والأسعار
CloneCompositionProduct=استنساخ حزم المنتج / الخدمة CloneCompositionProduct=استنساخ منتج / خدمة معبئة
CloneCombinationsProduct=Clone product variants CloneCombinationsProduct=Clone product variants
ProductIsUsed=ويستخدم هذا المنتج ProductIsUsed=هذا المنتج يتم استخدامة
NewRefForClone=المرجع. من المنتجات الجديدة / خدمة NewRefForClone=مرجع. المنتج/ الخدمة الجديدة 
SellingPrices=أسعار بيع SellingPrices=أسعار بيع
BuyingPrices=شراء أسعار BuyingPrices=شراء أسعار
CustomerPrices=أسعار العملاء CustomerPrices=أسعار العميل
SuppliersPrices=أسعار المورد SuppliersPrices=أسعار المورد
SuppliersPricesOfProductsOrServices=أسعار المورد (منتجات أو خدمات) SuppliersPricesOfProductsOrServices=أسعار المورد (منتجات أو خدمات)
CustomCode=Customs/Commodity/HS code CustomCode=الجمارك/السلع /كود HS
CountryOrigin=بلد المنشأ CountryOrigin=بلد المنشأ
Nature=طبيعة Nature=طبيعة
ShortLabel=التسمية قصيرة ShortLabel=التسمية قصيرة
@ -189,12 +189,12 @@ unitM2=Square meter
unitM3=Cubic meter unitM3=Cubic meter
unitL=Liter unitL=Liter
ProductCodeModel=قالب المرجع المنتج ProductCodeModel=قالب المرجع المنتج
ServiceCodeModel=قالب المرجع الخدمة ServiceCodeModel=قالب مرجع الخدمة
CurrentProductPrice=السعر الحالي CurrentProductPrice=السعر الحالي
AlwaysUseNewPrice=دائما استخدام السعر الحالي للمنتج / خدمة AlwaysUseNewPrice=دائما استخدم السعر الحالي للمنتج / الخدمة
AlwaysUseFixedPrice=استخدام سعر ثابت AlwaysUseFixedPrice=استخدم السعر الثابت
PriceByQuantity=أسعار مختلفة حسب الكمية PriceByQuantity=أسعار مختلفة حسب الكمية
PriceByQuantityRange=كمية مجموعة PriceByQuantityRange=مدى الكمية
MultipriceRules=Price segment rules MultipriceRules=Price segment rules
UseMultipriceRules=Use price segment rules (defined into product module setup) to autocalculate prices of all other segment according to first segment UseMultipriceRules=Use price segment rules (defined into product module setup) to autocalculate prices of all other segment according to first segment
PercentVariationOver=٪٪ الاختلاف على الصورة٪ PercentVariationOver=٪٪ الاختلاف على الصورة٪
@ -202,26 +202,26 @@ PercentDiscountOver=٪٪ خصم أكثر من٪ الصورة
KeepEmptyForAutoCalculation=Keep empty to have this calculated automatically from weight or volume of products KeepEmptyForAutoCalculation=Keep empty to have this calculated automatically from weight or volume of products
### composition fabrication ### composition fabrication
Build=إنتاج Build=إنتاج
ProductsMultiPrice=Products and prices for each price segment ProductsMultiPrice=المنتجات و الاسعار لكل شريحة
ProductsOrServiceMultiPrice=أسعار العملاء (منتجات أو خدمات، أسعار متعددة) ProductsOrServiceMultiPrice=أسعار العملاء (منتجات أو خدمات، أسعار متعددة)
ProductSellByQuarterHT=منتجات دوران الفصلية قبل الضرائب ProductSellByQuarterHT=دورة المنتجات الربع سنوية قبل الضرائب
ServiceSellByQuarterHT=خدمات دوران الفصلية قبل الضرائب ServiceSellByQuarterHT=دورة الخدمات الربع سنوية قبل الضرائب
Quarter1=1. ربع Quarter1=الربع الإول
Quarter2=2. ربع Quarter2=الربع الثاني
Quarter3=3. ربع Quarter3=الربع الثالث
Quarter4=4. ربع Quarter4=الربع الرابع
BarCodePrintsheet=طباعة قانون نقابة المحامين BarCodePrintsheet=طباعة الباركود
PageToGenerateBarCodeSheets=مع هذه الأداة، يمكنك طباعة ورقة من الملصقات الرمز الشريطي. اختيار شكل الصفحة ملصقا، ونوع الباركود وقيمة الباركود، ثم انقر على <b>زر٪ الصورة.</b> PageToGenerateBarCodeSheets=مع هذه الأداة، يمكنك طباعة أوراق من الباركود. اختار نوع صفحة الملصقات، ونوع وقيمة الباركود، ثم انقر على زر <b>%s</b>
NumberOfStickers=عدد من الملصقات للطباعة على الصفحة NumberOfStickers=عدد من الملصقات للطباعة على الصفحة
PrintsheetForOneBarCode=طباعة عدة ملصقات لالباركود واحد PrintsheetForOneBarCode=طباعة عدة ملصقات لالباركود واحد
BuildPageToPrint=توليد الصفحة لطباعة BuildPageToPrint=توليد صفحة للطباعة
FillBarCodeTypeAndValueManually=ملء نوع الباركود والقيمة يدويا. FillBarCodeTypeAndValueManually=ملء نوع وقيمة الباركود يدويا.
FillBarCodeTypeAndValueFromProduct=ملء نوع الباركود وقيمة من الباركود للمنتج. FillBarCodeTypeAndValueFromProduct=ملء نوع وقيمة الباركود من باركود المنتج.
FillBarCodeTypeAndValueFromThirdParty=Fill barcode type and value from barcode of a third party. FillBarCodeTypeAndValueFromThirdParty=ملء نوع وقيمة الباركود من باركود طرف ثالت.
DefinitionOfBarCodeForProductNotComplete=تعريف نوع أو قيمة الرمز الشريطي يست كاملة للمنتج٪ الصورة. DefinitionOfBarCodeForProductNotComplete=تعريف نوع أو قيمة الباركود ليس كامل للمنتج%s.
DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of bar code non complete for third party %s. DefinitionOfBarCodeForThirdpartyNotComplete=تعريف نوع أو قيمة الباركود ليس كامل للطرف الثالث %s
BarCodeDataForProduct=معلومات الباركود من الناتج٪ الصورة: BarCodeDataForProduct=معلومات الباركود للمنتج%s :
BarCodeDataForThirdparty=Barcode information of third party %s : BarCodeDataForThirdparty=معلومات الباركود للطرف الثالث%s:
ResetBarcodeForAllRecords=Define barcode value for all record (this will also reset barcode value already defined with new values) ResetBarcodeForAllRecords=Define barcode value for all record (this will also reset barcode value already defined with new values)
PriceByCustomer=Different prices for each customer PriceByCustomer=Different prices for each customer
PriceCatalogue=A single sell price per product/service PriceCatalogue=A single sell price per product/service

View File

@ -3,8 +3,6 @@ RefProject=المرجع. مشروع
ProjectRef=المرجع المشروع. ProjectRef=المرجع المشروع.
ProjectId=رقم المشروع ProjectId=رقم المشروع
ProjectLabel=تسمية المشروع ProjectLabel=تسمية المشروع
Project=المشروع
Projects=المشاريع
ProjectsArea=Projects Area ProjectsArea=Projects Area
ProjectStatus=حالة المشروع ProjectStatus=حالة المشروع
SharedProject=مشاريع مشتركة SharedProject=مشاريع مشتركة
@ -38,6 +36,7 @@ OpenedTasks=Open tasks
OpportunitiesStatusForOpenedProjects=Opportunities amount of open projects by status OpportunitiesStatusForOpenedProjects=Opportunities amount of open projects by status
OpportunitiesStatusForProjects=Opportunities amount of projects by status OpportunitiesStatusForProjects=Opportunities amount of projects by status
ShowProject=وتبين للمشروع ShowProject=وتبين للمشروع
ShowTask=وتظهر هذه المهمة
SetProject=وضع المشروع SetProject=وضع المشروع
NoProject=لا يعرف أو المملوكة للمشروع NoProject=لا يعرف أو المملوكة للمشروع
NbOfProjects=ملاحظة : للمشاريع NbOfProjects=ملاحظة : للمشاريع
@ -77,6 +76,7 @@ Time=وقت
ListOfTasks=List of tasks ListOfTasks=List of tasks
GoToListOfTimeConsumed=Go to list of time consumed GoToListOfTimeConsumed=Go to list of time consumed
GoToListOfTasks=Go to list of tasks GoToListOfTasks=Go to list of tasks
GanttView=Gantt View
ListProposalsAssociatedProject=قائمة المقترحات التجارية المرتبطة بالمشروع. ListProposalsAssociatedProject=قائمة المقترحات التجارية المرتبطة بالمشروع.
ListOrdersAssociatedProject=List of customer orders associated with the project ListOrdersAssociatedProject=List of customer orders associated with the project
ListInvoicesAssociatedProject=List of customer invoices associated with the project ListInvoicesAssociatedProject=List of customer invoices associated with the project
@ -108,6 +108,7 @@ AlsoCloseAProject=Also close project (keep it open if you still need to follow p
ReOpenAProject=فتح مشروع ReOpenAProject=فتح مشروع
ConfirmReOpenAProject=Are you sure you want to re-open this project? ConfirmReOpenAProject=Are you sure you want to re-open this project?
ProjectContact=مشروع اتصالات ProjectContact=مشروع اتصالات
TaskContact=Task contacts
ActionsOnProject=الإجراءات على المشروع ActionsOnProject=الإجراءات على المشروع
YouAreNotContactOfProject=كنت لا اتصال لهذا المشروع الخاص YouAreNotContactOfProject=كنت لا اتصال لهذا المشروع الخاص
UserIsNotContactOfProject=User is not a contact of this private project UserIsNotContactOfProject=User is not a contact of this private project
@ -115,7 +116,7 @@ DeleteATimeSpent=قضى الوقت حذف
ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent? ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent?
DoNotShowMyTasksOnly=انظر أيضا المهام الغير موكلة الي DoNotShowMyTasksOnly=انظر أيضا المهام الغير موكلة الي
ShowMyTasksOnly=عرض فقط المهام الموكلة الي ShowMyTasksOnly=عرض فقط المهام الموكلة الي
TaskRessourceLinks=مصادر TaskRessourceLinks=Contacts task
ProjectsDedicatedToThisThirdParty=مشاريع مخصصة لهذا الطرف الثالث ProjectsDedicatedToThisThirdParty=مشاريع مخصصة لهذا الطرف الثالث
NoTasks=أية مهام لهذا المشروع NoTasks=أية مهام لهذا المشروع
LinkedToAnotherCompany=ربط طرف ثالث آخر LinkedToAnotherCompany=ربط طرف ثالث آخر

View File

@ -13,3 +13,5 @@ TJM=Average daily rate
CurrentSalary=الراتب الحالي CurrentSalary=الراتب الحالي
THMDescription=يمكن استخدام هذه القيمة لحساب تكلفة الوقت المستهلك في المشروع المدخل من قبل المستخدمين إذا تم استخدام وحدة مشروع THMDescription=يمكن استخدام هذه القيمة لحساب تكلفة الوقت المستهلك في المشروع المدخل من قبل المستخدمين إذا تم استخدام وحدة مشروع
TJMDescription=هذه القيمة هي حاليا فقط كمعلومات وليس لاستخدامها في أي حساب TJMDescription=هذه القيمة هي حاليا فقط كمعلومات وليس لاستخدامها في أي حساب
LastSalaries=Latest %s salary payments
AllSalaries=All salary payments

View File

@ -22,6 +22,7 @@ Movements=حركات
ErrorWarehouseRefRequired=مستودع الاشارة اسم مطلوب ErrorWarehouseRefRequired=مستودع الاشارة اسم مطلوب
ListOfWarehouses=لائحة المخازن ListOfWarehouses=لائحة المخازن
ListOfStockMovements=قائمة الحركات الأسهم ListOfStockMovements=قائمة الحركات الأسهم
MovementId=Movement ID
StockMovementForId=Movement ID %d StockMovementForId=Movement ID %d
ListMouvementStockProject=List of stock movements associated to project ListMouvementStockProject=List of stock movements associated to project
StocksArea=منطقة المستودعات StocksArea=منطقة المستودعات
@ -130,6 +131,7 @@ StockMustBeEnoughForInvoice=Stock level must be enough to add product/service to
StockMustBeEnoughForOrder=Stock level must be enough to add product/service to order (check is done on current real stock when adding a line into order whatever is rule for automatic stock change) StockMustBeEnoughForOrder=Stock level must be enough to add product/service to order (check is done on current real stock when adding a line into order whatever is rule for automatic stock change)
StockMustBeEnoughForShipment= Stock level must be enough to add product/service to shipment (check is done on current real stock when adding a line into shipment whatever is rule for automatic stock change) StockMustBeEnoughForShipment= Stock level must be enough to add product/service to shipment (check is done on current real stock when adding a line into shipment whatever is rule for automatic stock change)
MovementLabel=تسمية الحركة MovementLabel=تسمية الحركة
DateMovement=Date of movement
InventoryCode=حركة المخزون أو كود InventoryCode=حركة المخزون أو كود
IsInPackage=الواردة في حزمة IsInPackage=الواردة في حزمة
WarehouseAllowNegativeTransfer=Stock can be negative WarehouseAllowNegativeTransfer=Stock can be negative

View File

@ -1,6 +1,4 @@
# Dolibarr language file - Source file is en_US - trips # Dolibarr language file - Source file is en_US - trips
ExpenseReport=تقرير حساب
ExpenseReports=تقارير المصاريف
ShowExpenseReport=عرض تقرير حساب ShowExpenseReport=عرض تقرير حساب
Trips=تقارير المصاريف Trips=تقارير المصاريف
TripsAndExpenses=تقارير النفقات TripsAndExpenses=تقارير النفقات
@ -12,6 +10,8 @@ ListOfFees=قائمة الرسوم
TypeFees=Types of fees TypeFees=Types of fees
ShowTrip=عرض تقرير حساب ShowTrip=عرض تقرير حساب
NewTrip=تقرير حساب جديد NewTrip=تقرير حساب جديد
LastExpenseReports=Latest %s expense reports
AllExpenseReports=All expense reports
CompanyVisited=Company/organisation visited CompanyVisited=Company/organisation visited
FeesKilometersOrAmout=كم المبلغ أو FeesKilometersOrAmout=كم المبلغ أو
DeleteTrip=حذف تقرير حساب DeleteTrip=حذف تقرير حساب
@ -71,6 +71,8 @@ EX_FUE_VP=Fuel PV
EX_TOL_VP=Toll PV EX_TOL_VP=Toll PV
EX_PAR_VP=Parking PV EX_PAR_VP=Parking PV
EX_CAM_VP=PV maintenance and repair EX_CAM_VP=PV maintenance and repair
DefaultCategoryCar=Default transportation mode
DefaultRangeNumber=Default range number
ErrorDoubleDeclaration=لقد أعلن تقرير حساب آخر في نطاق تاريخ مماثل. ErrorDoubleDeclaration=لقد أعلن تقرير حساب آخر في نطاق تاريخ مماثل.
AucuneLigne=لا يوجد تقرير مصروفات تعلن بعد AucuneLigne=لا يوجد تقرير مصروفات تعلن بعد

View File

@ -5,7 +5,7 @@ DeleteWebsite=Delete website
ConfirmDeleteWebsite=Are you sure you want to delete this web site. All its pages and content will also be removed. ConfirmDeleteWebsite=Are you sure you want to delete this web site. All its pages and content will also be removed.
WEBSITE_PAGENAME=Page name/alias WEBSITE_PAGENAME=Page name/alias
WEBSITE_HTML_HEADER=HTML Header (common to all pages) WEBSITE_HTML_HEADER=HTML Header (common to all pages)
HtmlHeaderPage=HTML specific header for ppage HtmlHeaderPage=HTML specific header for page
WEBSITE_CSS_URL=URL of external CSS file WEBSITE_CSS_URL=URL of external CSS file
WEBSITE_CSS_INLINE=CSS file content (common to all pages) WEBSITE_CSS_INLINE=CSS file content (common to all pages)
WEBSITE_JS_INLINE=Javascript file content (common to all pages) WEBSITE_JS_INLINE=Javascript file content (common to all pages)
@ -17,7 +17,6 @@ EditCss=Edit Style/CSS or HTML header
EditMenu=Edit menu EditMenu=Edit menu
EditMedias=Edit medias EditMedias=Edit medias
EditPageMeta=Edit Meta EditPageMeta=Edit Meta
Website=Web site
AddWebsite=Add website AddWebsite=Add website
Webpage=Web page/container Webpage=Web page/container
AddPage=Add page/container AddPage=Add page/container
@ -39,9 +38,10 @@ VirtualHostUrlNotDefined=URL of the virtual host served by external web server n
NoPageYet=No pages yet NoPageYet=No pages yet
SyntaxHelp=Help on specific syntax tips SyntaxHelp=Help on specific syntax tips
YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor. YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor.
YouCanEditHtmlSource=You can include PHP code into this source using tags <strong>&lt;?php ?&gt;</strong>. The following global variables are available: $conf, $langs, $db, $mysoc, $user, $website.<br><br>You can also include content of another Page/Container with the following syntax:<br><strong>&lt;?php dolIncludeHtmlContent($websitekey.'/alias_of_content_to_include.php'); ?&gt;</strong><br><br>To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong>&lt;a href="/document.php?modulepart=ecm&file=relative_dir/filename.ext"&gt;</strong><br>For same file into documents/ecm (open access using the sharing hash key), syntax is:<br><strong>&lt;a href="/document.php?modulepart=ecm&file=relative_dir/filename.ext&hashp=publicsharekeyoffile"&gt;</strong><br>For a file into documents/media (open directory for public access), syntax is:<br><strong>&lt;a href="/document.php?modulepart=medias&file=relative_dir/filename.ext"&gt;</strong><br><br>To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/media (open access), syntax is:<br><strong>&lt;a href="/viewimage.php?modulepart=medias&amp;file=relative_dir/filename.ext"&gt;</strong> YouCanEditHtmlSource=<br><span class="fa fa-bug"></span> You can include PHP code into this source using tags <strong>&lt;?php ?&gt;</strong>. The following global variables are available: $conf, $langs, $db, $mysoc, $user, $website.<br><br><span class="fa fa-bug"></span> You can also include content of another Page/Container with the following syntax:<br><strong>&lt;?php dolIncludeHtmlContent($websitekey.'/alias_of_container_to_include.php'); ?&gt;</strong><br><br><span class="fa fa-download"></span> To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong>&lt;a href="/document.php?modulepart=ecm&file=relative_dir/filename.ext"&gt;</strong><br>For same file into documents/ecm (open access using the sharing hash key), syntax is:<br><strong>&lt;a href="/document.php?modulepart=ecm&file=relative_dir/filename.ext&hashp=publicsharekeyoffile"&gt;</strong><br>For a file into documents/media (open directory for public access), syntax is:<br><strong>&lt;a href="/document.php?modulepart=medias&file=relative_dir/filename.ext"&gt;</strong><br><br><span class="fa fa-picture-o"></span> To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/media (open access), syntax is:<br><strong>&lt;a href="/viewimage.php?modulepart=medias&amp;file=relative_dir/filename.ext"&gt;</strong><br>
ClonePage=Clone page/container ClonePage=Clone page/container
CloneSite=Clone site CloneSite=Clone site
SiteAdded=Web site added
ConfirmClonePage=Please enter code/alias of new page and if it is a translation of the cloned page. ConfirmClonePage=Please enter code/alias of new page and if it is a translation of the cloned page.
PageIsANewTranslation=The new page is a translation of the current page ? PageIsANewTranslation=The new page is a translation of the current page ?
LanguageMustNotBeSameThanClonedPage=You clone a page as a translation. The language of the new page must be different than language of source page. LanguageMustNotBeSameThanClonedPage=You clone a page as a translation. The language of the new page must be different than language of source page.
@ -52,3 +52,6 @@ OrEnterPageInfoManually=Or create empty page from scratch...
FetchAndCreate=Fetch and Create FetchAndCreate=Fetch and Create
ExportSite=Export site ExportSite=Export site
IDOfPage=Id of page IDOfPage=Id of page
WebsiteAccount=Web site account
WebsiteAccounts=Web site accounts
AddWebsiteAccount=Create web site account

View File

@ -189,7 +189,6 @@ IgnoreDuplicateRecords=Ignore errors of duplicate record (INSERT IGNORE)
AutoDetectLang=Автоматично (език на браузъра) AutoDetectLang=Автоматично (език на браузъра)
FeatureDisabledInDemo=Feature инвалиди в демо FeatureDisabledInDemo=Feature инвалиди в демо
FeatureAvailableOnlyOnStable=Feature only available on official stable versions FeatureAvailableOnlyOnStable=Feature only available on official stable versions
Rights=Права
BoxesDesc=Widgets are components showing some information that you can add to personalize some pages. You can choose between showing the widget or not by selecting target page and clicking 'Activate', or by clicking the dustbin to disable it. BoxesDesc=Widgets are components showing some information that you can add to personalize some pages. You can choose between showing the widget or not by selecting target page and clicking 'Activate', or by clicking the dustbin to disable it.
OnlyActiveElementsAreShown=Показани са само елементи от <a href="%s">активирани модули</a>. OnlyActiveElementsAreShown=Показани са само елементи от <a href="%s">активирани модули</a>.
ModulesDesc=Dolibarr modules define which application/feature is enabled in software. Some application/modules require permissions you must grant to users, after activating it. Click on button on/off to enable a module/application. ModulesDesc=Dolibarr modules define which application/feature is enabled in software. Some application/modules require permissions you must grant to users, after activating it. Click on button on/off to enable a module/application.
@ -593,7 +592,7 @@ Module5000Desc=Позволява ви да управлявате няколк
Module6000Name=Workflow Module6000Name=Workflow
Module6000Desc=Workflow management Module6000Desc=Workflow management
Module10000Name=Websites Module10000Name=Websites
Module10000Desc=Create public websites with a WYSIWG editor. Just setup your web server to point to the dedicated directory to have it online on the Internet. Module10000Desc=Create public websites with a WYSIWG editor. Just setup your web server (Apache, Nginx, ...) to point to the dedicated Dolibarr directory to have it online on the Internet with your own domain name.
Module20000Name=Leave Requests management Module20000Name=Leave Requests management
Module20000Desc=Declare and follow employees leaves requests Module20000Desc=Declare and follow employees leaves requests
Module39000Name=Product lot Module39000Name=Product lot
@ -1130,7 +1129,7 @@ SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail dire
TranslationSetup=Setup of translation TranslationSetup=Setup of translation
TranslationKeySearch=Search a translation key or string TranslationKeySearch=Search a translation key or string
TranslationOverwriteKey=Overwrite a translation string TranslationOverwriteKey=Overwrite a translation string
TranslationDesc=How to set displayed application language :<br>* Systemwide: menu <strong>Home - Setup - Display</strong><br>* Per user: <strong>User display setup</strong> tab of user card (click on username at the top of the screen). TranslationDesc=How to set displayed application language :<br>* Systemwide: menu <strong>Home - Setup - Display</strong><br>* Per user: Use the <strong>User display setup</strong> tab on user card (click on username at the top of the screen).
TranslationOverwriteDesc=You can also override strings filling the following table. Choose your language from "%s" dropdown, insert the translation key string into "%s" and your new translation into "%s" TranslationOverwriteDesc=You can also override strings filling the following table. Choose your language from "%s" dropdown, insert the translation key string into "%s" and your new translation into "%s"
TranslationOverwriteDesc2=You can use the other tab to help you know translation key to use TranslationOverwriteDesc2=You can use the other tab to help you know translation key to use
TranslationString=Translation string TranslationString=Translation string
@ -1171,8 +1170,6 @@ RuleForGeneratedPasswords=Член за генериране на предлож
DisableForgetPasswordLinkOnLogonPage=Да не се показват връзката &quot;Забравена парола&quot; на страницата за вход DisableForgetPasswordLinkOnLogonPage=Да не се показват връзката &quot;Забравена парола&quot; на страницата за вход
UsersSetup=Потребители модул за настройка UsersSetup=Потребители модул за настройка
UserMailRequired=Задължително е въвеждането на имейл при създаване на нов потребител UserMailRequired=Задължително е въвеждането на имейл при създаване на нов потребител
DefaultCategoryCar=Default car category
DefaultRangeNumber=Default range number
##### HRM setup ##### ##### HRM setup #####
HRMSetup=HRM module setup HRMSetup=HRM module setup
##### Company setup ##### ##### Company setup #####

View File

@ -70,3 +70,9 @@ Stats=Статистика на продажбите
StatusProsp=Prospect статус StatusProsp=Prospect статус
DraftPropals=Проектът на търговски предложения DraftPropals=Проектът на търговски предложения
NoLimit=Няма лимит NoLimit=Няма лимит
ToOfferALinkForOnlineSignature=Link for online signature
WelcomeOnOnlineSignaturePage=Welcome on the page to accept commerical proposals from %s
ThisScreenAllowsYouToSignDocFrom=This screen allow you to accept and sign, or refuse, a quote/commercial proposal
ThisIsInformationOnDocumentToSign=This is information on document to accept or refuse
SignatureProposalRef=Signature of quote/commerical proposal %s
FeatureOnlineSignDisabled=Feature for online signing disabled or document generated before the feature was enabled

View File

@ -79,6 +79,8 @@ HolidaysCancelation=Отказване на молба за отпуск
EmployeeLastname=Employee last name EmployeeLastname=Employee last name
EmployeeFirstname=Employee first name EmployeeFirstname=Employee first name
TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed
LastHolidays=Latest %s leave requests
AllHolidays=All leave requests
## Configuration du Module ## ## Configuration du Module ##
LastUpdateCP=Latest automatic update of leaves allocation LastUpdateCP=Latest automatic update of leaves allocation

View File

@ -99,7 +99,6 @@ NbOfCompaniesContacts=Уникални контакти на фирми
MailNoChangePossible=Получатели на за валидирани електронната поща не може да бъде променена MailNoChangePossible=Получатели на за валидирани електронната поща не може да бъде променена
SearchAMailing=Търсене пощенски SearchAMailing=Търсене пощенски
SendMailing=Изпращане на имейл SendMailing=Изпращане на имейл
SendMail=Изпращане на имейл
SentBy=Изпратено от SentBy=Изпратено от
MailingNeedCommand=Sending an emailing can be performed from command line. Ask your server administrator to launch the following command to send the emailing to all recipients: MailingNeedCommand=Sending an emailing can be performed from command line. Ask your server administrator to launch the following command to send the emailing to all recipients:
MailingNeedCommand2=Все пак можете да ги изпратите онлайн чрез добавяне на параметър MAILING_LIMIT_SENDBYWEB със стойност на максимален брой на имейлите, които искате да изпратите от сесията. За това, отидете на дома - Setup - Други. MailingNeedCommand2=Все пак можете да ги изпратите онлайн чрез добавяне на параметър MAILING_LIMIT_SENDBYWEB със стойност на максимален брой на имейлите, които искате да изпратите от сесията. За това, отидете на дома - Setup - Други.

View File

@ -266,8 +266,10 @@ DateApprove2=Дата на одобрение (повторно одобрени
RegistrationDate=Registration date RegistrationDate=Registration date
UserCreation=Creation user UserCreation=Creation user
UserModification=Modification user UserModification=Modification user
UserValidation=Validation user
UserCreationShort=Creat. user UserCreationShort=Creat. user
UserModificationShort=Modif. user UserModificationShort=Modif. user
UserValidationShort=Valid. user
DurationYear=година DurationYear=година
DurationMonth=месец DurationMonth=месец
DurationWeek=седмица DurationWeek=седмица
@ -608,6 +610,7 @@ SendByMail=Изпрати по имейл
MailSentBy=Изпратено по имейл от MailSentBy=Изпратено по имейл от
TextUsedInTheMessageBody=Текст на имейла TextUsedInTheMessageBody=Текст на имейла
SendAcknowledgementByMail=Send confirmation email SendAcknowledgementByMail=Send confirmation email
SendMail=Изпращане на имейл
EMail=Имейл EMail=Имейл
NoEMail=Няма имейл NoEMail=Няма имейл
Email=Имейл Email=Имейл
@ -808,6 +811,10 @@ ModuleBuilder=Module Builder
SetMultiCurrencyCode=Set currency SetMultiCurrencyCode=Set currency
BulkActions=Bulk actions BulkActions=Bulk actions
ClickToShowHelp=Click to show tooltip help ClickToShowHelp=Click to show tooltip help
Website=Уеб Сайт
WebSites=Web sites
ExpenseReport=Доклад разходи
ExpenseReports=Опис разходи
HR=HR HR=HR
HRAndBank=HR and Bank HRAndBank=HR and Bank
AutomaticallyCalculated=Automatically calculated AutomaticallyCalculated=Automatically calculated
@ -818,6 +825,9 @@ Websites=Web sites
Events=Събития Events=Събития
EMailTemplates=Emails templates EMailTemplates=Emails templates
FileNotShared=File not shared to exernal public FileNotShared=File not shared to exernal public
Project=Проект
Projects=Проекти
Rights=Права
# Week day # Week day
Monday=Понеделник Monday=Понеделник
Tuesday=Вторник Tuesday=Вторник

View File

@ -168,8 +168,8 @@ TurnoverOrBudget=Оборот (за фирма) или Бюджет (за орг
DefaultAmount=Сума по подразбиране за членски внос DefaultAmount=Сума по подразбиране за членски внос
CanEditAmount=Посетител може да избере/редактира размера на вноската си CanEditAmount=Посетител може да избере/редактира размера на вноската си
MEMBER_NEWFORM_PAYONLINE=Прехвърляне към интегрираната онлайн страница за плащане MEMBER_NEWFORM_PAYONLINE=Прехвърляне към интегрираната онлайн страница за плащане
ByProperties=По характеристики ByProperties=By nature
MembersStatisticsByProperties=Статистики на членовете по характеристики MembersStatisticsByProperties=Members statistics by nature
MembersByNature=Този екран ви показва статистики на членовете по същност. MembersByNature=Този екран ви показва статистики на членовете по същност.
MembersByRegion=Този екран ви показва статистики на членовете по регион. MembersByRegion=Този екран ви показва статистики на членовете по регион.
VATToUseForSubscriptions=VAT rate to use for subscriptions VATToUseForSubscriptions=VAT rate to use for subscriptions

View File

@ -47,6 +47,7 @@ SpecificationFile=File with business rules
LanguageFile=File for language LanguageFile=File for language
ConfirmDeleteProperty=Are you sure you want to delete the property <strong>%s</strong> ? This will change code in PHP class but also remove column from table definition of object. ConfirmDeleteProperty=Are you sure you want to delete the property <strong>%s</strong> ? This will change code in PHP class but also remove column from table definition of object.
NotNull=Not NULL NotNull=Not NULL
NotNullDesc=1=Set database to NOT NULL. -1=Allow null values and force value to NULL if empty ('' or 0).
SearchAll=Used for 'search all' SearchAll=Used for 'search all'
DatabaseIndex=Database index DatabaseIndex=Database index
FileAlreadyExists=File %s already exists FileAlreadyExists=File %s already exists
@ -70,7 +71,7 @@ NoWidget=No widget
GoToApiExplorer=Go to API explorer GoToApiExplorer=Go to API explorer
ListOfPermissionsDefined=List of defined permissions ListOfPermissionsDefined=List of defined permissions
EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION) EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION)
VisibleDesc=Is the field visible into list ? (Examples: 0=not visible, 1=visible by default on list, -1=not shown by default on list but can be added into list to be viewed) VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only. Using a negative value means field is not shown by default on list but can be selected for viewing)
IsAMeasureDesc=Can the value of field be cumulated to get a total into list ? (Examples: 1 or 0) IsAMeasureDesc=Can the value of field be cumulated to get a total into list ? (Examples: 1 or 0)
SearchAllDesc=Is the field used to make a search from the quick search tool ? (Examples: 1 or 0) SearchAllDesc=Is the field used to make a search from the quick search tool ? (Examples: 1 or 0)
SpecDefDesc=Enter here all documentation you want to provide with your module that is not already defined by other tabs. You can use .md or better, the rich .asciidoc syntax. SpecDefDesc=Enter here all documentation you want to provide with your module that is not already defined by other tabs. You can use .md or better, the rich .asciidoc syntax.

View File

@ -3,8 +3,6 @@ RefProject=Реф. проект
ProjectRef=Проект реф. ProjectRef=Проект реф.
ProjectId=Id на проект ProjectId=Id на проект
ProjectLabel=Етикет на проект ProjectLabel=Етикет на проект
Project=Проект
Projects=Проекти
ProjectsArea=Projects Area ProjectsArea=Projects Area
ProjectStatus=Статус на проект ProjectStatus=Статус на проект
SharedProject=Всички SharedProject=Всички
@ -38,6 +36,7 @@ OpenedTasks=Open tasks
OpportunitiesStatusForOpenedProjects=Opportunities amount of open projects by status OpportunitiesStatusForOpenedProjects=Opportunities amount of open projects by status
OpportunitiesStatusForProjects=Opportunities amount of projects by status OpportunitiesStatusForProjects=Opportunities amount of projects by status
ShowProject=Покажи проект ShowProject=Покажи проект
ShowTask=Покажи задача
SetProject=Задайте проект SetProject=Задайте проект
NoProject=Нито един проект няма определени или собственост NoProject=Нито един проект няма определени или собственост
NbOfProjects=Nb на проекти NbOfProjects=Nb на проекти
@ -77,6 +76,7 @@ Time=Време
ListOfTasks=List of tasks ListOfTasks=List of tasks
GoToListOfTimeConsumed=Go to list of time consumed GoToListOfTimeConsumed=Go to list of time consumed
GoToListOfTasks=Go to list of tasks GoToListOfTasks=Go to list of tasks
GanttView=Gantt View
ListProposalsAssociatedProject=Списък на търговските предложения, свързани с проекта ListProposalsAssociatedProject=Списък на търговските предложения, свързани с проекта
ListOrdersAssociatedProject=List of customer orders associated with the project ListOrdersAssociatedProject=List of customer orders associated with the project
ListInvoicesAssociatedProject=List of customer invoices associated with the project ListInvoicesAssociatedProject=List of customer invoices associated with the project
@ -108,6 +108,7 @@ AlsoCloseAProject=Also close project (keep it open if you still need to follow p
ReOpenAProject=Проект с отворен ReOpenAProject=Проект с отворен
ConfirmReOpenAProject=Are you sure you want to re-open this project? ConfirmReOpenAProject=Are you sure you want to re-open this project?
ProjectContact=ПРОЕКТА Контакти ProjectContact=ПРОЕКТА Контакти
TaskContact=Task contacts
ActionsOnProject=Събития по проекта ActionsOnProject=Събития по проекта
YouAreNotContactOfProject=Вие не сте контакт на този частен проект YouAreNotContactOfProject=Вие не сте контакт на този частен проект
UserIsNotContactOfProject=User is not a contact of this private project UserIsNotContactOfProject=User is not a contact of this private project
@ -115,7 +116,7 @@ DeleteATimeSpent=Изтриване на времето, прекарано
ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent? ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent?
DoNotShowMyTasksOnly=Показване също на задачи, които не са възложени на мен DoNotShowMyTasksOnly=Показване също на задачи, които не са възложени на мен
ShowMyTasksOnly=Показване задачи, възложени само на мен ShowMyTasksOnly=Показване задачи, възложени само на мен
TaskRessourceLinks=Ресурси TaskRessourceLinks=Contacts task
ProjectsDedicatedToThisThirdParty=Проекти, насочени към този контрагент ProjectsDedicatedToThisThirdParty=Проекти, насочени към този контрагент
NoTasks=Няма задачи за този проект NoTasks=Няма задачи за този проект
LinkedToAnotherCompany=Свързано с друг контрагент LinkedToAnotherCompany=Свързано с друг контрагент

View File

@ -13,3 +13,5 @@ TJM=Average daily rate
CurrentSalary=Сегашна заплата CurrentSalary=Сегашна заплата
THMDescription=Тази стойност може да използва за изчисляване на отнето време по проект отделено от потребителите ако модул проект се използва THMDescription=Тази стойност може да използва за изчисляване на отнето време по проект отделено от потребителите ако модул проект се използва
TJMDescription=Тази стойност е само сега като информация и не се използва за никакво изчисление TJMDescription=Тази стойност е само сега като информация и не се използва за никакво изчисление
LastSalaries=Latest %s salary payments
AllSalaries=All salary payments

View File

@ -22,6 +22,7 @@ Movements=Движения
ErrorWarehouseRefRequired=Изисква се референтно име на склад ErrorWarehouseRefRequired=Изисква се референтно име на склад
ListOfWarehouses=Списък на складовете ListOfWarehouses=Списък на складовете
ListOfStockMovements=Списък на движението на стоковите наличности ListOfStockMovements=Списък на движението на стоковите наличности
MovementId=Movement ID
StockMovementForId=Movement ID %d StockMovementForId=Movement ID %d
ListMouvementStockProject=List of stock movements associated to project ListMouvementStockProject=List of stock movements associated to project
StocksArea=Warehouses area StocksArea=Warehouses area
@ -130,6 +131,7 @@ StockMustBeEnoughForInvoice=Stock level must be enough to add product/service to
StockMustBeEnoughForOrder=Stock level must be enough to add product/service to order (check is done on current real stock when adding a line into order whatever is rule for automatic stock change) StockMustBeEnoughForOrder=Stock level must be enough to add product/service to order (check is done on current real stock when adding a line into order whatever is rule for automatic stock change)
StockMustBeEnoughForShipment= Stock level must be enough to add product/service to shipment (check is done on current real stock when adding a line into shipment whatever is rule for automatic stock change) StockMustBeEnoughForShipment= Stock level must be enough to add product/service to shipment (check is done on current real stock when adding a line into shipment whatever is rule for automatic stock change)
MovementLabel=Label of movement MovementLabel=Label of movement
DateMovement=Date of movement
InventoryCode=Movement or inventory code InventoryCode=Movement or inventory code
IsInPackage=Contained into package IsInPackage=Contained into package
WarehouseAllowNegativeTransfer=Stock can be negative WarehouseAllowNegativeTransfer=Stock can be negative

View File

@ -1,6 +1,4 @@
# Dolibarr language file - Source file is en_US - trips # Dolibarr language file - Source file is en_US - trips
ExpenseReport=Доклад разходи
ExpenseReports=Expense reports
ShowExpenseReport=Показване на доклад за разходи ShowExpenseReport=Показване на доклад за разходи
Trips=Expense reports Trips=Expense reports
TripsAndExpenses=Доклади разходи TripsAndExpenses=Доклади разходи
@ -12,6 +10,8 @@ ListOfFees=Списък на такси
TypeFees=Types of fees TypeFees=Types of fees
ShowTrip=Показване на доклад за разходи ShowTrip=Показване на доклад за разходи
NewTrip=Нов доклад за разходи NewTrip=Нов доклад за разходи
LastExpenseReports=Latest %s expense reports
AllExpenseReports=All expense reports
CompanyVisited=Company/organisation visited CompanyVisited=Company/organisation visited
FeesKilometersOrAmout=Сума или км FeesKilometersOrAmout=Сума или км
DeleteTrip=Изтриване на доклад за разходи DeleteTrip=Изтриване на доклад за разходи
@ -71,6 +71,8 @@ EX_FUE_VP=Fuel PV
EX_TOL_VP=Toll PV EX_TOL_VP=Toll PV
EX_PAR_VP=Parking PV EX_PAR_VP=Parking PV
EX_CAM_VP=PV maintenance and repair EX_CAM_VP=PV maintenance and repair
DefaultCategoryCar=Default transportation mode
DefaultRangeNumber=Default range number
ErrorDoubleDeclaration=Създали сте друг доклад за разходи в подобен времеви отрязък. ErrorDoubleDeclaration=Създали сте друг доклад за разходи в подобен времеви отрязък.
AucuneLigne=Няма все още деклариран доклад за разходи AucuneLigne=Няма все още деклариран доклад за разходи

View File

@ -5,7 +5,7 @@ DeleteWebsite=Изтрийте уебсайт
ConfirmDeleteWebsite=Сигурни ли сте, че искате да изтриете този уебсайт? Всички негови страници и съдържание ще бъдат премахнати. ConfirmDeleteWebsite=Сигурни ли сте, че искате да изтриете този уебсайт? Всички негови страници и съдържание ще бъдат премахнати.
WEBSITE_PAGENAME=Име на страницата WEBSITE_PAGENAME=Име на страницата
WEBSITE_HTML_HEADER=HTML Header (common to all pages) WEBSITE_HTML_HEADER=HTML Header (common to all pages)
HtmlHeaderPage=HTML specific header for ppage HtmlHeaderPage=HTML specific header for page
WEBSITE_CSS_URL=Линк към външен CSS файл WEBSITE_CSS_URL=Линк към външен CSS файл
WEBSITE_CSS_INLINE=CSS file content (common to all pages) WEBSITE_CSS_INLINE=CSS file content (common to all pages)
WEBSITE_JS_INLINE=Javascript file content (common to all pages) WEBSITE_JS_INLINE=Javascript file content (common to all pages)
@ -17,7 +17,6 @@ EditCss=Редактирай CSS или HTML header
EditMenu=Редактирай EditMenu=Редактирай
EditMedias=Edit medias EditMedias=Edit medias
EditPageMeta=Редайтирай Meta EditPageMeta=Редайтирай Meta
Website=Уеб Сайт
AddWebsite=Add website AddWebsite=Add website
Webpage=Web page/container Webpage=Web page/container
AddPage=Добави страница/контейнер AddPage=Добави страница/контейнер
@ -39,9 +38,10 @@ VirtualHostUrlNotDefined=URL of the virtual host served by external web server n
NoPageYet=No pages yet NoPageYet=No pages yet
SyntaxHelp=Help on specific syntax tips SyntaxHelp=Help on specific syntax tips
YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor. YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor.
YouCanEditHtmlSource=You can include PHP code into this source using tags <strong>&lt;?php ?&gt;</strong>. The following global variables are available: $conf, $langs, $db, $mysoc, $user, $website.<br><br>You can also include content of another Page/Container with the following syntax:<br><strong>&lt;?php dolIncludeHtmlContent($websitekey.'/alias_of_content_to_include.php'); ?&gt;</strong><br><br>To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong>&lt;a href="/document.php?modulepart=ecm&file=relative_dir/filename.ext"&gt;</strong><br>For same file into documents/ecm (open access using the sharing hash key), syntax is:<br><strong>&lt;a href="/document.php?modulepart=ecm&file=relative_dir/filename.ext&hashp=publicsharekeyoffile"&gt;</strong><br>For a file into documents/media (open directory for public access), syntax is:<br><strong>&lt;a href="/document.php?modulepart=medias&file=relative_dir/filename.ext"&gt;</strong><br><br>To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/media (open access), syntax is:<br><strong>&lt;a href="/viewimage.php?modulepart=medias&amp;file=relative_dir/filename.ext"&gt;</strong> YouCanEditHtmlSource=<br><span class="fa fa-bug"></span> You can include PHP code into this source using tags <strong>&lt;?php ?&gt;</strong>. The following global variables are available: $conf, $langs, $db, $mysoc, $user, $website.<br><br><span class="fa fa-bug"></span> You can also include content of another Page/Container with the following syntax:<br><strong>&lt;?php dolIncludeHtmlContent($websitekey.'/alias_of_container_to_include.php'); ?&gt;</strong><br><br><span class="fa fa-download"></span> To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong>&lt;a href="/document.php?modulepart=ecm&file=relative_dir/filename.ext"&gt;</strong><br>For same file into documents/ecm (open access using the sharing hash key), syntax is:<br><strong>&lt;a href="/document.php?modulepart=ecm&file=relative_dir/filename.ext&hashp=publicsharekeyoffile"&gt;</strong><br>For a file into documents/media (open directory for public access), syntax is:<br><strong>&lt;a href="/document.php?modulepart=medias&file=relative_dir/filename.ext"&gt;</strong><br><br><span class="fa fa-picture-o"></span> To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/media (open access), syntax is:<br><strong>&lt;a href="/viewimage.php?modulepart=medias&amp;file=relative_dir/filename.ext"&gt;</strong><br>
ClonePage=Clone page/container ClonePage=Clone page/container
CloneSite=Clone site CloneSite=Clone site
SiteAdded=Web site added
ConfirmClonePage=Please enter code/alias of new page and if it is a translation of the cloned page. ConfirmClonePage=Please enter code/alias of new page and if it is a translation of the cloned page.
PageIsANewTranslation=The new page is a translation of the current page ? PageIsANewTranslation=The new page is a translation of the current page ?
LanguageMustNotBeSameThanClonedPage=You clone a page as a translation. The language of the new page must be different than language of source page. LanguageMustNotBeSameThanClonedPage=You clone a page as a translation. The language of the new page must be different than language of source page.
@ -52,3 +52,6 @@ OrEnterPageInfoManually=Or create empty page from scratch...
FetchAndCreate=Fetch and Create FetchAndCreate=Fetch and Create
ExportSite=Export site ExportSite=Export site
IDOfPage=Id of page IDOfPage=Id of page
WebsiteAccount=Web site account
WebsiteAccounts=Web site accounts
AddWebsiteAccount=Create web site account

View File

@ -189,7 +189,6 @@ IgnoreDuplicateRecords=Ignore errors of duplicate record (INSERT IGNORE)
AutoDetectLang=Autodetect (browser language) AutoDetectLang=Autodetect (browser language)
FeatureDisabledInDemo=Feature disabled in demo FeatureDisabledInDemo=Feature disabled in demo
FeatureAvailableOnlyOnStable=Feature only available on official stable versions FeatureAvailableOnlyOnStable=Feature only available on official stable versions
Rights=Permissions
BoxesDesc=Widgets are components showing some information that you can add to personalize some pages. You can choose between showing the widget or not by selecting target page and clicking 'Activate', or by clicking the dustbin to disable it. BoxesDesc=Widgets are components showing some information that you can add to personalize some pages. You can choose between showing the widget or not by selecting target page and clicking 'Activate', or by clicking the dustbin to disable it.
OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown. OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> are shown.
ModulesDesc=Dolibarr modules define which application/feature is enabled in software. Some application/modules require permissions you must grant to users, after activating it. Click on button on/off to enable a module/application. ModulesDesc=Dolibarr modules define which application/feature is enabled in software. Some application/modules require permissions you must grant to users, after activating it. Click on button on/off to enable a module/application.
@ -593,7 +592,7 @@ Module5000Desc=Allows you to manage multiple companies
Module6000Name=Workflow Module6000Name=Workflow
Module6000Desc=Workflow management Module6000Desc=Workflow management
Module10000Name=Websites Module10000Name=Websites
Module10000Desc=Create public websites with a WYSIWG editor. Just setup your web server to point to the dedicated directory to have it online on the Internet. Module10000Desc=Create public websites with a WYSIWG editor. Just setup your web server (Apache, Nginx, ...) to point to the dedicated Dolibarr directory to have it online on the Internet with your own domain name.
Module20000Name=Leave Requests management Module20000Name=Leave Requests management
Module20000Desc=Declare and follow employees leaves requests Module20000Desc=Declare and follow employees leaves requests
Module39000Name=Product lot Module39000Name=Product lot
@ -1130,7 +1129,7 @@ SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail dire
TranslationSetup=Setup of translation TranslationSetup=Setup of translation
TranslationKeySearch=Search a translation key or string TranslationKeySearch=Search a translation key or string
TranslationOverwriteKey=Overwrite a translation string TranslationOverwriteKey=Overwrite a translation string
TranslationDesc=How to set displayed application language :<br>* Systemwide: menu <strong>Home - Setup - Display</strong><br>* Per user: <strong>User display setup</strong> tab of user card (click on username at the top of the screen). TranslationDesc=How to set displayed application language :<br>* Systemwide: menu <strong>Home - Setup - Display</strong><br>* Per user: Use the <strong>User display setup</strong> tab on user card (click on username at the top of the screen).
TranslationOverwriteDesc=You can also override strings filling the following table. Choose your language from "%s" dropdown, insert the translation key string into "%s" and your new translation into "%s" TranslationOverwriteDesc=You can also override strings filling the following table. Choose your language from "%s" dropdown, insert the translation key string into "%s" and your new translation into "%s"
TranslationOverwriteDesc2=You can use the other tab to help you know translation key to use TranslationOverwriteDesc2=You can use the other tab to help you know translation key to use
TranslationString=Translation string TranslationString=Translation string
@ -1171,8 +1170,6 @@ RuleForGeneratedPasswords=Rule to generate suggested passwords or validate passw
DisableForgetPasswordLinkOnLogonPage=Do not show the link "Forget password" on login page DisableForgetPasswordLinkOnLogonPage=Do not show the link "Forget password" on login page
UsersSetup=Users module setup UsersSetup=Users module setup
UserMailRequired=EMail required to create a new user UserMailRequired=EMail required to create a new user
DefaultCategoryCar=Default car category
DefaultRangeNumber=Default range number
##### HRM setup ##### ##### HRM setup #####
HRMSetup=HRM module setup HRMSetup=HRM module setup
##### Company setup ##### ##### Company setup #####

View File

@ -70,3 +70,9 @@ Stats=Sales statistics
StatusProsp=Prospect status StatusProsp=Prospect status
DraftPropals=Draft commercial proposals DraftPropals=Draft commercial proposals
NoLimit=No limit NoLimit=No limit
ToOfferALinkForOnlineSignature=Link for online signature
WelcomeOnOnlineSignaturePage=Welcome on the page to accept commerical proposals from %s
ThisScreenAllowsYouToSignDocFrom=This screen allow you to accept and sign, or refuse, a quote/commercial proposal
ThisIsInformationOnDocumentToSign=This is information on document to accept or refuse
SignatureProposalRef=Signature of quote/commerical proposal %s
FeatureOnlineSignDisabled=Feature for online signing disabled or document generated before the feature was enabled

View File

@ -79,6 +79,8 @@ HolidaysCancelation=Leave request cancelation
EmployeeLastname=Employee last name EmployeeLastname=Employee last name
EmployeeFirstname=Employee first name EmployeeFirstname=Employee first name
TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed
LastHolidays=Latest %s leave requests
AllHolidays=All leave requests
## Configuration du Module ## ## Configuration du Module ##
LastUpdateCP=Latest automatic update of leaves allocation LastUpdateCP=Latest automatic update of leaves allocation

View File

@ -99,7 +99,6 @@ NbOfCompaniesContacts=Unique contacts/addresses
MailNoChangePossible=Recipients for validated emailing can't be changed MailNoChangePossible=Recipients for validated emailing can't be changed
SearchAMailing=Search mailing SearchAMailing=Search mailing
SendMailing=Send emailing SendMailing=Send emailing
SendMail=Send email
SentBy=Sent by SentBy=Sent by
MailingNeedCommand=Sending an emailing can be performed from command line. Ask your server administrator to launch the following command to send the emailing to all recipients: MailingNeedCommand=Sending an emailing can be performed from command line. Ask your server administrator to launch the following command to send the emailing to all recipients:
MailingNeedCommand2=You can however send them online by adding parameter MAILING_LIMIT_SENDBYWEB with value of max number of emails you want to send by session. For this, go on Home - Setup - Other. MailingNeedCommand2=You can however send them online by adding parameter MAILING_LIMIT_SENDBYWEB with value of max number of emails you want to send by session. For this, go on Home - Setup - Other.

View File

@ -266,8 +266,10 @@ DateApprove2=Approving date (second approval)
RegistrationDate=Registration date RegistrationDate=Registration date
UserCreation=Creation user UserCreation=Creation user
UserModification=Modification user UserModification=Modification user
UserValidation=Validation user
UserCreationShort=Creat. user UserCreationShort=Creat. user
UserModificationShort=Modif. user UserModificationShort=Modif. user
UserValidationShort=Valid. user
DurationYear=year DurationYear=year
DurationMonth=month DurationMonth=month
DurationWeek=week DurationWeek=week
@ -608,6 +610,7 @@ SendByMail=Send by EMail
MailSentBy=Email sent by MailSentBy=Email sent by
TextUsedInTheMessageBody=Email body TextUsedInTheMessageBody=Email body
SendAcknowledgementByMail=Send confirmation email SendAcknowledgementByMail=Send confirmation email
SendMail=Send email
EMail=E-mail EMail=E-mail
NoEMail=No email NoEMail=No email
Email=Email Email=Email
@ -808,6 +811,10 @@ ModuleBuilder=Module Builder
SetMultiCurrencyCode=Set currency SetMultiCurrencyCode=Set currency
BulkActions=Bulk actions BulkActions=Bulk actions
ClickToShowHelp=Click to show tooltip help ClickToShowHelp=Click to show tooltip help
Website=Web site
WebSites=Web sites
ExpenseReport=Expense report
ExpenseReports=Expense reports
HR=HR HR=HR
HRAndBank=HR and Bank HRAndBank=HR and Bank
AutomaticallyCalculated=Automatically calculated AutomaticallyCalculated=Automatically calculated
@ -818,6 +825,9 @@ Websites=Web sites
Events=Events Events=Events
EMailTemplates=Emails templates EMailTemplates=Emails templates
FileNotShared=File not shared to exernal public FileNotShared=File not shared to exernal public
Project=Project
Projects=Projects
Rights=Permissions
# Week day # Week day
Monday=Monday Monday=Monday
Tuesday=Tuesday Tuesday=Tuesday

View File

@ -168,8 +168,8 @@ TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation)
DefaultAmount=Default amount of subscription DefaultAmount=Default amount of subscription
CanEditAmount=Visitor can choose/edit amount of its subscription CanEditAmount=Visitor can choose/edit amount of its subscription
MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page
ByProperties=By characteristics ByProperties=By nature
MembersStatisticsByProperties=Members statistics by characteristics MembersStatisticsByProperties=Members statistics by nature
MembersByNature=This screen show you statistics on members by nature. MembersByNature=This screen show you statistics on members by nature.
MembersByRegion=This screen show you statistics on members by region. MembersByRegion=This screen show you statistics on members by region.
VATToUseForSubscriptions=VAT rate to use for subscriptions VATToUseForSubscriptions=VAT rate to use for subscriptions

View File

@ -47,6 +47,7 @@ SpecificationFile=File with business rules
LanguageFile=File for language LanguageFile=File for language
ConfirmDeleteProperty=Are you sure you want to delete the property <strong>%s</strong> ? This will change code in PHP class but also remove column from table definition of object. ConfirmDeleteProperty=Are you sure you want to delete the property <strong>%s</strong> ? This will change code in PHP class but also remove column from table definition of object.
NotNull=Not NULL NotNull=Not NULL
NotNullDesc=1=Set database to NOT NULL. -1=Allow null values and force value to NULL if empty ('' or 0).
SearchAll=Used for 'search all' SearchAll=Used for 'search all'
DatabaseIndex=Database index DatabaseIndex=Database index
FileAlreadyExists=File %s already exists FileAlreadyExists=File %s already exists
@ -70,7 +71,7 @@ NoWidget=No widget
GoToApiExplorer=Go to API explorer GoToApiExplorer=Go to API explorer
ListOfPermissionsDefined=List of defined permissions ListOfPermissionsDefined=List of defined permissions
EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION) EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION)
VisibleDesc=Is the field visible into list ? (Examples: 0=not visible, 1=visible by default on list, -1=not shown by default on list but can be added into list to be viewed) VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only. Using a negative value means field is not shown by default on list but can be selected for viewing)
IsAMeasureDesc=Can the value of field be cumulated to get a total into list ? (Examples: 1 or 0) IsAMeasureDesc=Can the value of field be cumulated to get a total into list ? (Examples: 1 or 0)
SearchAllDesc=Is the field used to make a search from the quick search tool ? (Examples: 1 or 0) SearchAllDesc=Is the field used to make a search from the quick search tool ? (Examples: 1 or 0)
SpecDefDesc=Enter here all documentation you want to provide with your module that is not already defined by other tabs. You can use .md or better, the rich .asciidoc syntax. SpecDefDesc=Enter here all documentation you want to provide with your module that is not already defined by other tabs. You can use .md or better, the rich .asciidoc syntax.

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