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.* *****
For users:
For developers:
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 ressource list in popup in gantt view
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 which is an order here
FIX: hook formObjectOptions() must use $expe and not $object
FIX: make of link to other object during creation
FIX: Missing function getLinesArray
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/nusoap/lib/Mail`;
$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/phpoffice/phpexcel/.gitattributes`;
$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/unitTests`;
$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/freefont-*`;
$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/tools`;
$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 "find $BUILDROOT/$PROJECT/htdocs/custom/* -type d -exec rm -fr {} \\;\n";

View File

@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@zendsi.com>
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@zendsi.com>
* Copyright (C) 2016-2017 Laurent Destailleur <eldy@users.sourceforge.net>
*
* 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_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_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")) {
$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_start = GETPOST('search_accountancy_code_start', 'alpha');
if ($search_accountancy_code_start == - 1) {
$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_start = GETPOST('search_accountancy_aux_code_start', 'alpha');
if ($search_accountancy_aux_code_start == - 1) {
$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'));
}
$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('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
{
$search_mvt_num = '';
@ -128,6 +145,10 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x',
$search_ledger_code = '';
$search_date_start = '';
$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.
@ -196,6 +217,26 @@ if (! empty($search_mvt_num)) {
$filter['t.piece_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') {
@ -370,137 +411,288 @@ print '<div class="inline-block divButAction"><a class="butActionDelete" name="b
print '</div>';
print '<div class="div-table-responsive">';
print '<table class="noborder" width="100%">';
$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
$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 '<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="' . dol_escape_htmltag($search_mvt_num) . '"></td>';
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 '<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))
// Movement number
if (! empty($arrayfields['t.piece_num']['checked']))
{
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>';
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))
// Ref document
if (! empty($arrayfields['t.doc_ref']['checked']))
{
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>';
print '</td>';
print '<td class="liste_titre">';
print '<input type="text" size="7" class="flat" name="search_mvt_label" value="' . $search_mvt_label . '"/>';
print '</td>';
print '<td class="liste_titre center">&nbsp;</td>';
print '<td class="liste_titre center">&nbsp;</td>';
print '<td class="liste_titre center"><input type="text" name="search_ledger_code" size="3" value="' . $search_ledger_code . '"></td>';
// Subledger account
if (! empty($arrayfields['t.subledger_account']['checked']))
{
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);
}
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">';
$searchpicto=$form->showFilterButtons();
print $searchpicto;
print '</td>';
print '</tr>';
print "</tr>\n";
print '<tr class="liste_titre">';
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);
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);
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);
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);
print_liste_field_titre("Codejournal", $_SERVER['PHP_SELF'], "t.code_journal", "", $param, 'align="center"', $sortfield, $sortorder);
$checkpicto='';
if ($massactionbutton) $checkpicto=$form->showCheckAddButtons('checkforselect', 1);
print_liste_field_titre($checkpicto, $_SERVER["PHP_SELF"], "", $param, "", 'width="60" align="center"', $sortfield, $sortorder);
if (! empty($arrayfields['t.piece_num']['checked'])) print_liste_field_titre("TransactionNumShort", $_SERVER['PHP_SELF'], "t.piece_num", "", $param, "", $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);
if (! empty($arrayfields['t.doc_ref']['checked'])) print_liste_field_titre("Docref", $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder);
if (! empty($arrayfields['t.numero_compte']['checked'])) print_liste_field_titre("AccountAccountingShort", $_SERVER['PHP_SELF'], "t.numero_compte", "", $param, "", $sortfield, $sortorder);
if (! empty($arrayfields['t.subledger_account']['checked'])) print_liste_field_titre("SubledgerAccount", $_SERVER['PHP_SELF'], "t.subledger_account", "", $param, "", $sortfield, $sortorder);
if (! empty($arrayfields['t.label_operation']['checked'])) print_liste_field_titre("Label", $_SERVER['PHP_SELF'], "t.label_operation", "", $param, "", $sortfield, $sortorder);
if (! empty($arrayfields['t.debit']['checked'])) print_liste_field_titre("Debit", $_SERVER['PHP_SELF'], "t.debit", "", $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);
if (! empty($arrayfields['t.code_journal']['checked'])) print_liste_field_titre("Codejournal", $_SERVER['PHP_SELF'], "t.code_journal", "", $param, 'align="center"', $sortfield, $sortorder);
if (! empty($arrayfields['t.date_creation']['checked'])) print_liste_field_titre("DateCreation", $_SERVER['PHP_SELF'], "t.date_creation", "", $param, 'align="center"', $sortfield, $sortorder);
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($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch ');
print "</tr>\n";
$total_debit = 0;
$total_credit = 0;
$i=0;
while ($i < min($num, $limit))
if ($num > 0)
{
$line = $object->lines[$i];
$i=0;
$totalarray=array();
while ($i < min($num, $limit))
{
$line = $object->lines[$i];
$total_debit += $line->debit;
$total_credit += $line->credit;
$total_debit += $line->debit;
$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>';
print '<td align="center">' . dol_print_date($line->doc_date, 'day') . '</td>';
print '<td class="nowrap">' . $line->doc_ref . '</td>';
print '<td>' . length_accountg($line->numero_compte) . '</td>';
print '<td>' . length_accounta($line->subledger_account) . '</td>';
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>';
// Piece number
if (! empty($arrayfields['t.piece_num']['checked']))
{
print '<td><a href="./card.php?piece_num=' . $line->piece_num . '">' . $line->piece_num . '</a></td>';
if (! $i) $totalarray['nbfield']++;
}
$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>';
// Document date
if (! empty($arrayfields['t.doc_date']['checked']))
{
print '<td align="center">' . dol_print_date($line->doc_date, 'day') . '</td>';
if (! $i) $totalarray['nbfield']++;
}
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>';
print "</tr>\n";
// Document ref
if (! empty($arrayfields['t.doc_ref']['checked']))
{
print '<td class="nowrap">' . $line->doc_ref . '</td>';
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 '</div>';

View File

@ -564,7 +564,8 @@ class BookKeeping extends CommonObject
$sql .= " t.import_key,";
$sql .= " t.code_journal,";
$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 .= ' WHERE 1 = 1';
$sql .= " AND entity IN (" . getEntity('accountancy') . ")";
@ -603,6 +604,7 @@ class BookKeeping extends CommonObject
$this->code_journal = $obj->code_journal;
$this->journal_label = $obj->journal_label;
$this->piece_num = $obj->piece_num;
$this->date_creation = $this->db->jdate($obj->date_creation);
}
$this->db->free($resql);
@ -658,7 +660,8 @@ class BookKeeping extends CommonObject
$sql .= " t.import_key,";
$sql .= " t.code_journal,";
$sql .= " t.journal_label,";
$sql .= " t.piece_num";
$sql .= " t.piece_num,";
$sql .= " t.date_creation";
// Manage filter
$sqlwhere = array ();
if (count($filter) > 0) {
@ -675,6 +678,8 @@ class BookKeeping extends CommonObject
$sqlwhere[] = $key . ' LIKE \'' . $this->db->escape($value) . '%\'';
} elseif ($key == 't.label_operation') {
$sqlwhere[] = $key . ' LIKE \'' . $this->db->escape($value) . '%\'';
} elseif ($key == 't.date_creation>=' || $key == 't.date_creation<=') {
$sqlwhere[] = $key . '\'' . $this->db->idate($value) . '\'';
} else {
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
}
@ -725,6 +730,7 @@ class BookKeeping extends CommonObject
$line->code_journal = $obj->code_journal;
$line->journal_label = $obj->journal_label;
$line->piece_num = $obj->piece_num;
$line->date_creation = $obj->date_creation;
$this->lines[] = $line;
}
@ -777,7 +783,8 @@ class BookKeeping extends CommonObject
$sql .= " t.import_key,";
$sql .= " t.code_journal,";
$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';
// Manage filter
$sqlwhere = array ();
@ -793,6 +800,10 @@ class BookKeeping extends CommonObject
$sqlwhere[] = $key . '=' . $value;
} elseif ($key == 't.subledger_account' || $key == 't.numero_compte') {
$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 {
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
}
@ -841,6 +852,7 @@ class BookKeeping extends CommonObject
$line->code_journal = $obj->code_journal;
$line->journal_label = $obj->journal_label;
$line->piece_num = $obj->piece_num;
$line->date_creation = $obj->date_creation;
$this->lines[] = $line;
}
@ -1336,6 +1348,7 @@ class BookKeeping extends CommonObject
$this->code_journal = 'VT';
$this->journal_label = 'Journal de vente';
$this->piece_num = '';
$this->date_creation = $now;
}
/**
@ -1348,7 +1361,7 @@ class BookKeeping extends CommonObject
public function fetchPerMvt($piecenum, $mode='') {
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 .= " WHERE piece_num = " . $piecenum;
$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_ref = $obj->doc_ref;
$this->doc_type = $obj->doc_type;
$this->date_creation = $obj->date_creation;
} else {
$this->error = "Error " . $this->db->lasterror();
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 .= " doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,";
$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 .= " WHERE piece_num = " . $piecenum;
$sql .= " AND entity IN (" . getEntity('accountancy') . ")";
@ -1447,6 +1461,7 @@ class BookKeeping extends CommonObject
$line->code_journal = $obj->code_journal;
$line->journal_label = $obj->journal_label;
$line->piece_num = $obj->piece_num;
$line->date_creation = $obj->date_creation;
$this->linesmvt[] = $line;
}
@ -1785,4 +1800,5 @@ class BookKeepingLine
public $code_journal;
public $journal_label;
public $piece_num;
public $date_creation;
}

View File

@ -38,6 +38,7 @@ $langs->load("agenda");
$action = GETPOST('action','alpha');
$cancel = GETPOST('cancel','alpha');
$search_event = GETPOST('search_event', 'alpha');
// Get list of triggers available
$sql = "SELECT a.rowid, a.code, a.label, a.elementtype";
@ -70,6 +71,12 @@ else
* 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))
{
$i=0;
@ -78,10 +85,13 @@ if ($action == "save" && empty($cancel))
foreach ($triggers as $trigger)
{
$param='MAIN_AGENDA_ACTIONAUTO_'.$trigger['code'];
$keyparam='MAIN_AGENDA_ACTIONAUTO_'.$trigger['code'];
//print "param=".$param." - ".$_POST[$param];
$res = dolibarr_set_const($db,$param,(GETPOST($param,'alpha')?GETPOST($param,'alpha'):''),'chaine',0,'',$conf->entity);
if (! $res > 0) $error++;
if ($search_event === '' || preg_match('/'.preg_quote($search_event,'/').'/i', $keyparam))
{
$res = dolibarr_set_const($db,$keyparam,(GETPOST($keyparam,'alpha')?GETPOST($keyparam,'alpha'):''),'chaine',0,'',$conf->entity);
if (! $res > 0) $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="action" value="save">';
$param = '';
$param.= '&search_event='.urlencode($search_event);
$head=agenda_prepare_head();
@ -151,8 +163,19 @@ print "<br>\n";
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print '<td colspan="2">'.$langs->trans("ActionsEvents").'</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"><input type="text" name="search_event" value="'.dol_escape_htmltag($search_event).'"></td>';
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";
// Show each trigger (list is in c_action_trigger)
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_UNBILLED' && empty($conf->global->FICHINTER_CLASSIFY_BILLED)) continue;
print '<tr class="oddeven">';
print '<td>'.$trigger['code'].'</td>';
print '<td>'.$trigger['label'].'</td>';
print '<td align="right" width="40">';
$key='MAIN_AGENDA_ACTIONAUTO_'.$trigger['code'];
$value=$conf->global->$key;
print '<input class="oddeven" type="checkbox" name="'.$key.'" value="1"'.((($action=='selectall'||$value) && $action!="selectnone")?' checked':'').'>';
print '</td></tr>'."\n";
if ($search_event === '' || preg_match('/'.preg_quote($search_event,'/').'/i', $trigger['code']))
{
print '<tr class="oddeven">';
print '<td>'.$trigger['code'].'</td>';
print '<td>'.$trigger['label'].'</td>';
print '<td align="right" width="40">';
$key='MAIN_AGENDA_ACTIONAUTO_'.$trigger['code'];
$value=$conf->global->$key;
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";
// 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))
{
@ -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');
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>';
dol_fiche_end();

View File

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

View File

@ -128,7 +128,7 @@ if (! empty($reg[1]) && $reg[1] == 'explorer' && ($reg[2] == '/resources.json' |
foreach ($modulesdir as $dir)
{
// 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));
if (is_resource($handle))
@ -140,13 +140,13 @@ if (! empty($reg[1]) && $reg[1] == 'explorer' && ($reg[2] == '/resources.json' |
$module = strtolower($regmod[1]);
$moduledirforclass = getModuleDirForApiClass($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
$enabled=true;
if (empty($conf->$moduleforenabled->enabled)) $enabled=false;
if (empty($conf->$modulenameforenabled->enabled)) $enabled=false;
if ($enabled)
{
@ -235,7 +235,13 @@ if (! empty($reg[1]) && ($reg[1] != 'explorer' || ($reg[2] != '/resources.json'
if ($module == 'order') { $classname='Commande'; }
//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', '/');
}
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');
$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);
}
}

View File

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

View File

@ -35,111 +35,117 @@ function printBookmarksList($aDb, $aLangs)
$db = $aDb;
$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.= '<!-- 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 ($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) )
if (! empty($conf->use_javascript_ajax)) { // Bookmark autosubmit can't work when javascript is off.
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"]))
{
$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.=$obj->title;
$ret.='</option>';
$i++;
}
$url.=(dol_escape_htmltag($_SERVER["QUERY_STRING"])?'?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]):'');
}
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.= '</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>';
$ret.= '<div class="menu_end"></div>'."\n";
return $ret;
}

View File

@ -1135,7 +1135,6 @@ class ActionComm extends CommonObject
if ($this->type_code != 'AC_OTH_AUTO') $labeltype = $langs->trans('ActionAC_MANUAL');
}
$tooltip = '<u>' . $langs->trans('ShowAction'.$objp->code) . '</u>';
if (! empty($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).')':'');
}
$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;
}
@ -1530,10 +1532,18 @@ class ActionComm extends CommonObject
return 0;
}
$now = dol_now();
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;
}

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 '<table class="centpercent cal_event'.(empty($event->transparency)?'':' cal_event_busy').'" style="'.$h;
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).'));';
//else print 'background-color: transparent !important; background: none; border: 1px solid #bbb;';
//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
*
* @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
* @return string New color
*/

View File

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

View File

@ -1906,6 +1906,40 @@ class Commande extends CommonOrder
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
* 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;
dol_syslog(get_class($this)."::loadExpeditions", LOG_DEBUG);
$result = $this->db->query($sql);
if ($result)
$resql = $this->db->query($sql);
if ($resql)
{
$num = $this->db->num_rows($result);
$num = $this->db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$obj = $this->db->fetch_object($result);
$obj = $this->db->fetch_object($resql);
$this->expeditions[$obj->rowid] = $obj->qty;
$i++;
}
$this->db->free();
$this->db->free($resql);
return $num;
}
else
@ -1951,7 +1985,6 @@ class Commande extends CommonOrder
$this->error=$this->db->lasterror();
return -1;
}
}
/**
@ -2002,18 +2035,18 @@ class Commande extends CommonOrder
$sql.= " FROM ".MAIN_DB_PREFIX."product_stock as ps";
$sql.= " WHERE ps.fk_product IN (".join(',',$array_of_product).")";
$sql.= ' GROUP BY fk_product ';
$result = $this->db->query($sql);
if ($result)
$resql = $this->db->query($sql);
if ($resql)
{
$num = $this->db->num_rows($result);
$num = $this->db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$obj = $this->db->fetch_object($result);
$obj = $this->db->fetch_object($resql);
$this->stocks[$obj->fk_product] = $obj->total;
$i++;
}
$this->db->free();
$this->db->free($resql);
}
}
return 0;
@ -3368,7 +3401,6 @@ class Commande extends CommonOrder
if ($short) return $url;
$picto = 'order';
$label = '';
if ($user->rights->commande->lire) {
@ -3402,9 +3434,11 @@ class Commande extends CommonOrder
$linkstart.=$linkclose.'>';
$linkend='</a>';
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;
$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;
return $result;
}

View File

@ -1324,11 +1324,14 @@ class Account extends CommonObject
if ($add_save_lastsearch_values) $url.='&save_lastsearch_values=1';
}
$link = '<a href="'.$url.$linkclose;
$linkend='</a>';
$linkstart = '<a href="'.$url.$linkclose;
$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;
}

View File

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

View File

@ -40,6 +40,7 @@ class Contact extends CommonObject
public $element='contact';
public $table_element='socpeople';
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_code;
@ -1053,8 +1054,12 @@ class Contact extends CommonObject
$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;
}

View File

@ -1878,7 +1878,6 @@ class Contrat extends CommonObject
if ($add_save_lastsearch_values) $url.='&save_lastsearch_values=1';
//}
$picto = 'contract';
$label = '';
if ($user->rights->contrat->lire) {
@ -1913,9 +1912,11 @@ class Contrat extends CommonObject
$linkstart.=$linkclose.'>';
$linkend='</a>';
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;
$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;
return $result;
}

View File

@ -340,16 +340,6 @@ abstract class CommonObject
// 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
* 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)
{
$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").'"';
else $placeholder=' title="'.$langs->trans("Label").'"';
$placeholder=' placeholder="'.$langs->trans("Label").'"';
$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>';
if (empty($hidelabel)) print $langs->trans("RefOrLabel").' : ';
else if ($hidelabel > 1) {
if (! empty($conf->global->MAIN_HTML5_PLACEHOLDER)) $placeholder=' placeholder="'.$langs->trans("RefOrLabel").'"';
else $placeholder=' title="'.$langs->trans("RefOrLabel").'"';
$placeholder=' placeholder="'.$langs->trans("RefOrLabel").'"';
if ($hidelabel == 2) {
$out.= img_picto($langs->trans("Search"), 'search');
}
@ -1818,8 +1817,7 @@ class Form
}
if (empty($hidelabel)) print $langs->trans("RefOrLabel").' : ';
else if ($hidelabel > 1) {
if (! empty($conf->global->MAIN_HTML5_PLACEHOLDER)) $placeholder=' placeholder="'.$langs->trans("RefOrLabel").'"';
else $placeholder=' title="'.$langs->trans("RefOrLabel").'"';
$placeholder=' placeholder="'.$langs->trans("RefOrLabel").'"';
if ($hidelabel == 2) {
print img_picto($langs->trans("Search"), 'search');
}
@ -2566,6 +2564,8 @@ class Form
$this->db->free($result);
$out.=ajax_combobox($htmlname);
if (empty($outputmode)) return $out;
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='';
break;
case 'alpha':
$out=trim($out);
// '"' is dangerous because param in url can close the href= or src= and add javascript functions.
// '../' is dangerous because it allows dir transversals
if (preg_match('/"/',$out)) $out='';
else if (preg_match('/\.\.\//',$out)) $out='';
if (! is_array($out))
{
$out=trim($out);
// '"' is dangerous because param in url can close the href= or src= and add javascript functions.
// '../' is dangerous because it allows dir transversals
if (preg_match('/"/',$out)) $out='';
else if (preg_match('/\.\.\//',$out)) $out='';
}
break;
case 'san_alpha':
$out=filter_var($out,FILTER_SANITIZE_STRING);
break;
case 'aZ':
$out=trim($out);
if (preg_match('/[^a-z]+/i',$out)) $out='';
if (! is_array($out))
{
$out=trim($out);
if (preg_match('/[^a-z]+/i',$out)) $out='';
}
break;
case 'aZ09':
$out=trim($out);
if (preg_match('/[^a-z0-9_\-\.]+/i',$out)) $out='';
if (! is_array($out))
{
$out=trim($out);
if (preg_match('/[^a-z0-9_\-\.]+/i',$out)) $out='';
}
break;
case '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);
break;
case 'alphanohtml': // Recommended for search params
$out=trim($out);
// '"' is dangerous because param in url can close the href= or src= and add javascript functions.
// '../' is dangerous because it allows dir transversals
if (preg_match('/"/',$out)) $out='';
else if (preg_match('/\.\.\//',$out)) $out='';
$out=dol_string_nohtmltag($out);
if (! is_array($out))
{
$out=trim($out);
// '"' is dangerous because param in url can close the href= or src= and add javascript functions.
// '../' is dangerous because it allows dir transversals
if (preg_match('/"/',$out)) $out='';
else if (preg_match('/\.\.\//',$out)) $out='';
$out=dol_string_nohtmltag($out);
}
break;
case 'custom':
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)
{
// 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 (! $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')
{
// TODO Try to replace with strip_tags($stringtoclean)
// TODO Try to replace with strip_tags($stringtoclean)
$pattern = "/<[^<>]+>/";
$stringtoclean = preg_replace('/<br[^>]*>/', "\n", $stringtoclean);
$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).",";
if ($val['index']) $texttoinsert.= " 'index'=>".$val['index'].",";
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['help']) $texttoinsert.= " 'help'=>'".$val['help']."',";
if ($val['help']) $texttoinsert.= " 'help'=>\"".preg_replace('/"/', '', $val['help'])."\","; // addslashes is escape for PHP
if ($val['arrayofkeyval'])
{
$texttoinsert.= " 'arrayofkeyval'=>array(";
@ -215,8 +215,8 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir='',
$pathoffiletoclasssrc=$readdir.'/class/'.strtolower($objectname).'.class.php';
// Edit .sql file
$pathoffiletoeditsrc=$readdir.'/sql/llx_'.strtolower($objectname).'.sql';
$pathoffiletoedittarget=$destdir.'/sql/llx_'.strtolower($objectname).'.sql'.($readdir != $destdir ? '.new' : '');
$pathoffiletoeditsrc=$readdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql';
$pathoffiletoedittarget=$destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql'.($readdir != $destdir ? '.new' : '');
if (! dol_is_file($pathoffiletoeditsrc))
{
$langs->load("errors");
@ -287,8 +287,8 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir='',
}
// Edit .key.sql file
$pathoffiletoeditsrc=$destdir.'/sql/llx_'.strtolower($objectname).'.key.sql';
$pathoffiletoedittarget=$destdir.'/sql/llx_'.strtolower($objectname).'.key.sql'.($readdir != $destdir ? '.new' : '');
$pathoffiletoeditsrc=$destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql';
$pathoffiletoedittarget=$destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql'.($readdir != $destdir ? '.new' : '');
$contentsql = file_get_contents(dol_osencode($pathoffiletoeditsrc), 'r');
@ -301,7 +301,7 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir='',
$i++;
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";
}
}

View File

@ -61,10 +61,13 @@ function commande_prepare_head(Commande $object)
if (($conf->expedition_bon->enabled && $user->rights->expedition->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;
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->livraison_bon->enabled) $text.=$langs->trans("Receivings");
if ($nbReceiption > 0) $text.= ' <span class="badge">'.$nbReceiption.'</span>';
$head[$h][1] = $text;
$head[$h][2] = 'shipping';
$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 $preselectedday Preselected day
* @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
*/
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 $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));
for ($i = 0 ; $i < $numlines ; $i++)
@ -818,8 +822,8 @@ function projectLinesPerDay(&$inc, $parent, $fuser, $lines, &$level, &$projectsr
$level++;
if ($lines[$i]->id > 0)
{
if ($parent == 0) projectLinesPerDay($inc, $lines[$i]->id, $fuser, $lineswithoutlevel0, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $preselectedday, $isavailable);
else projectLinesPerDay($inc, $lines[$i]->id, $fuser, $lines, $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, $oldprojectforbreak);
}
$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 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 int $oldprojectforbreak Old project id of last project break
* @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 $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));
$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++)
{
@ -1065,8 +1073,8 @@ function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$
$level++;
if ($lines[$i]->id > 0)
{
if ($parent == 0) projectLinesPerWeek($inc, $firstdaytoshow, $fuser, $lines[$i]->id, $lineswithoutlevel0, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $isavailable);
else projectLinesPerWeek($inc, $firstdaytoshow, $fuser, $lines[$i]->id, $lines, $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, $oldprojectforbreak);
}
$level--;
}

View File

@ -182,7 +182,7 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$mode
else $classname = 'class="tmenu"';
$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
{
$conf->global->MAIN_HTML5_PLACEHOLDER = 1;
$usedbyinclude = 1; // Used into next include
include DOL_DOCUMENT_ROOT.'/core/ajax/selectsearchbox.php';

View File

@ -83,7 +83,7 @@ class InterfaceActionsBlockedLog extends DolibarrTriggers
$b=new BlockedLog($this->db);
$b->action = $action;
$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);

View File

@ -607,13 +607,13 @@ if (empty($reshook))
$object->fetch($id);
$lines = $object->lines;
$line = new ExpeditionLigne($db);
$num_prod = count($lines);
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
foreach ($lines[$i]->details_entrepot as $details_entrepot) {
@ -624,7 +624,7 @@ if (empty($reshook))
}
}
}
else
else
{
// delete single warehouse line
$line->id = $line_id;
@ -636,12 +636,12 @@ if (empty($reshook))
}
unset($_POST["lineid"]);
}
if(! $error) {
header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id);
exit();
}
else
else
{
setEventMessages($line->error, $line->errors, 'errors');
}
@ -657,12 +657,12 @@ if (empty($reshook))
$qty=0;
$entrepot_id = 0;
$batch_id = 0;
$lines = $object->lines;
$num_prod = count($lines);
for ($i = 0 ; $i < $num_prod ; $i++)
{
if ($lines[$i]->id == $line_id)
if ($lines[$i]->id == $line_id)
{
// line to update
$line = new ExpeditionLigne($db);
@ -680,7 +680,7 @@ if (empty($reshook))
if (is_array($lines[$i]->detail_batch) && count($lines[$i]->detail_batch) > 0)
{
// line with lot
foreach ($lines[$i]->detail_batch as $detail_batch)
foreach ($lines[$i]->detail_batch as $detail_batch)
{
$lotStock = new Productbatch($db);
$batch="batchl".$detail_batch->fk_expeditiondet."_".$detail_batch->fk_origin_stock;
@ -689,13 +689,17 @@ if (empty($reshook))
$batch_qty = GETPOST($qty, 'int');
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)
{
// allow update line entrepot_id if not multi warehouse shipping
$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->batch = $lotStock->batch;
$line->detail_batch->id = $detail_batch->id;
@ -706,7 +710,7 @@ if (empty($reshook))
$error++;
}
}
else
else
{
setEventMessages($lotStock->error, $lotStock->errors, 'errors');
$error++;
@ -790,7 +794,7 @@ if (empty($reshook))
}
}
}
else
else
{
// line without lot
if ($lines[$i]->entrepot_id > 0)
@ -856,7 +860,7 @@ if (empty($reshook))
$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
exit();
@ -1600,7 +1604,13 @@ if ($action == 'create')
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>';
@ -2051,7 +2061,7 @@ else if ($id || $ref)
}
print '</td>';
}
else
else
{
if ($object->statut <= 1)
{
@ -2065,7 +2075,7 @@ else if ($id || $ref)
{
print '<td align="left">'.$langs->trans("WarehouseSource").'</td>';
}
if (! empty($conf->productbatch->enabled))
{
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)
{
$line = new ExpeditionLigne($db);
foreach ($lines[$i]->detail_batch as $detail_batch)
foreach ($lines[$i]->detail_batch as $detail_batch)
{
print '<tr>';
// 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);
}
else
else
{
print $line->showOptionals($extrafieldsline, 'view', array('style'=>$bc[$var], 'colspan'=>$colspan),$indiceAsked);
}
@ -2561,136 +2571,6 @@ else if ($id || $ref)
$trackid = 'shi'.$object->id;
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">';
$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;
}
@ -2220,7 +2220,7 @@ class ExpeditionLigne extends CommonObjectLine
*/
public $fk_expedition;
var $db;
var $db;
// From llx_expeditiondet
var $qty;
@ -2232,7 +2232,7 @@ class ExpeditionLigne extends CommonObjectLine
* @var int
*/
public $entrepot_id;
// From llx_commandedet or llx_propaldet
var $qty_asked;
@ -2249,7 +2249,7 @@ class ExpeditionLigne extends CommonObjectLine
var $total_localtax1; // Total Local tax 1
var $total_localtax2; // Total Local tax 2
// Deprecated
/**
@ -2395,7 +2395,7 @@ class ExpeditionLigne extends CommonObjectLine
/**
* Delete shipment line.
*
*
* @param User $user User that modify
* @param int $notrigger 0=launch triggers after, 1=disable triggers
* @return int >0 if OK, <0 if KO
@ -2407,7 +2407,7 @@ class ExpeditionLigne extends CommonObjectLine
$error=0;
$this->db->begin();
// delete batch expedition line
if ($conf->productbatch->enabled)
{
@ -2420,7 +2420,7 @@ class ExpeditionLigne extends CommonObjectLine
$error++;
}
}
$sql = "DELETE FROM ".MAIN_DB_PREFIX."expeditiondet";
$sql.= " WHERE rowid = ".$this->id;
@ -2436,7 +2436,7 @@ class ExpeditionLigne extends CommonObjectLine
$error++;
}
}
if (! $error && ! $notrigger)
if (! $error && ! $notrigger)
{
// Call trigger
$result=$this->call_trigger('LINESHIPPING_DELETE',$user);
@ -2458,7 +2458,7 @@ class ExpeditionLigne extends CommonObjectLine
$this->db->commit();
return 1;
}
else
else
{
foreach($this->errors as $errmsg)
{
@ -2469,10 +2469,10 @@ class ExpeditionLigne extends CommonObjectLine
return -1*$error;
}
}
/**
* Update a line in database
*
*
* @param User $user User that modify
* @param int $notrigger 1 = disable triggers
* @return int < 0 if KO, > 0 if OK
@ -2480,13 +2480,11 @@ class ExpeditionLigne extends CommonObjectLine
function update($user = null, $notrigger = 0)
{
global $conf;
$error=0;
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();
// Clean parameters
@ -2496,9 +2494,9 @@ class ExpeditionLigne extends CommonObjectLine
$batch = null;
$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);
$this->errors[]='ErrorBadParameters';
@ -2560,24 +2558,24 @@ class ExpeditionLigne extends CommonObjectLine
$this->errors[]=$this->db->lasterror()." - ExpeditionLineBatch::fetchAll";
$error++;
}
else
else
{
// 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;
}
}
$qty += $remainingQty;
//fetch lot details
// fetch from product_lot
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productlot.class.php';
$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;
$error++;
@ -2588,6 +2586,7 @@ class ExpeditionLigne extends CommonObjectLine
$sql = "DELETE FROM ".MAIN_DB_PREFIX."expeditiondet_batch";
$sql.= " WHERE fk_expeditiondet = ".$this->id;
$sql.= " AND rowid = ".$expedition_batch_id;
if (!$this->db->query($sql))
{
$this->errors[]=$this->db->lasterror()." - sql=$sql";
@ -2622,8 +2621,8 @@ class ExpeditionLigne extends CommonObjectLine
$sql.= " fk_entrepot = ".$this->entrepot_id;
$sql.= " , qty = ".$qty;
$sql.= " WHERE rowid = ".$this->id;
if (!$this->db->query($sql))
if (!$this->db->query($sql))
{
$this->errors[]=$this->db->lasterror()." - sql=$sql";
$error++;
@ -2641,7 +2640,7 @@ class ExpeditionLigne extends CommonObjectLine
}
}
}
if (! $error && ! $notrigger)
if (! $error && ! $notrigger)
{
// Call trigger
$result=$this->call_trigger('LINESHIPPING_UPDATE',$user);
@ -2656,7 +2655,7 @@ class ExpeditionLigne extends CommonObjectLine
$this->db->commit();
return 1;
}
else
else
{
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->product->enabled) || ! empty($conf->service->enabled)) require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
$langs->load('orders');
$langs->load("companies");
$langs->load("bills");
$langs->load('propal');
$langs->load('deliveries');
$langs->load('stocks');
$langs->load("productbatch");
$langs->loadLangs(array('orders',"companies","bills",'propal','deliveries','stocks',"productbatch",'incoterm'));
$id=GETPOST('id','int'); // id of order
$ref= GETPOST('ref','alpha');
@ -157,6 +151,15 @@ if (empty($reshook))
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
if ($action == 'setshippingmethod' && $user->rights->commande->creer) {
$object = new Commande($db);
@ -528,7 +531,7 @@ if ($id > 0 || ! empty($ref))
print '<table width="100%" class="nobordernopadding"><tr><td>';
print $langs->trans('IncotermLabel');
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;';
print '</td></tr></table>';
print '</td>';

View File

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

View File

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

View File

@ -393,7 +393,7 @@ if ($object->id > 0)
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre'.(($num == 0) ? ' nobottom':'').'">';
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>';
$return = array();

View File

@ -1497,6 +1497,7 @@ class FactureFournisseur extends CommonInvoice
else
{
$this->error=$this->line->error;
$this->errors=$this->line->errors;
$this->db->rollback();
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';
llxHeader('',$langs->trans("Order"),$help_url);
/* *************************************************************************** */
/* */
/* Mode vue et edition */
/* */
/* *************************************************************************** */
$now=dol_now();
if ($action=='create')

View File

@ -828,7 +828,7 @@ class Holiday extends CommonObject
global $langs;
$result='';
$picto='holiday';
$label=$langs->trans("Show").': '.$this->ref;
$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">';
$linkend='</a>';
if ($withpicto) $result.=($linkstart.img_object($label, $picto, 'class="classfortooltip"').$linkend);
if ($withpicto && $withpicto != 2) $result.=' ';
if ($withpicto != 2) $result.=$linkstart.$this->ref.$linkend;
$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;
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';
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 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;
@ -474,3 +494,31 @@ UPDATE llx_accounting_system SET fk_country = 12 WHERE pcg_version = 'PCG';
-- May have error due to duplicate keys
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) 2014 Juanjo Menent <jmenent@2byte.es>
-- Copyright (C) 2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
-- Copyright (C) 2004-2006 Laurent Destailleur <eldy@users.sourceforge.net>
-- Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
-- Copyright (C) 2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
--
-- 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
@ -21,20 +21,20 @@
create table llx_accounting_account
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
entity integer DEFAULT 1 NOT NULL,
datec datetime,
tms timestamp,
fk_pcg_version varchar(32) NOT NULL,
pcg_type varchar(20) NOT NULL,
pcg_subtype varchar(20) 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
label varchar(255) NOT NULL,
fk_accounting_category integer DEFAULT 0,
fk_user_author integer DEFAULT NULL,
fk_user_modif integer DEFAULT NULL,
active tinyint DEFAULT 1 NOT NULL,
rowid integer AUTO_INCREMENT PRIMARY KEY,
entity integer DEFAULT 1 NOT NULL,
datec datetime,
tms timestamp,
fk_pcg_version varchar(32) NOT NULL,
pcg_type varchar(20) NOT NULL,
pcg_subtype varchar(20) 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
label varchar(255) NOT NULL,
fk_accounting_category integer DEFAULT 0,
fk_user_author integer DEFAULT NULL,
fk_user_modif integer DEFAULT NULL,
active tinyint DEFAULT 1 NOT NULL,
import_key varchar(14),
extraparams varchar(255) -- for other parameters with json format
extraparams varchar(255) -- for other parameters with json format
)ENGINE=innodb;

View File

@ -40,7 +40,7 @@ CREATE TABLE llx_accounting_bookkeeping
multicurrency_code varchar(255), -- FEC:Idevise
lettering_code varchar(255), -- FEC:EcritureLet
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_modif integer, -- | user making last change
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
lettering_code varchar(255), -- FEC:EcritureLet
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_modif integer, -- | user making last change
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,
tms timestamp,
action varchar(50),
amounts real NOT NULL,
amounts double(24,8) NOT NULL,
signature varchar(100) NOT NULL,
signature_line varchar(100) NOT NULL,
element varchar(50),

View File

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

View File

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

View File

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

View File

@ -21,58 +21,58 @@
create table llx_commande_fournisseur
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
rowid integer AUTO_INCREMENT PRIMARY KEY,
ref varchar(255) NOT NULL, -- order number
entity integer DEFAULT 1 NOT NULL, -- multi company id
ref varchar(255) NOT NULL, -- order number
entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_ext varchar(64), -- reference into an external system (not used by dolibarr)
ref_supplier varchar(255),
ref_ext varchar(64), -- reference into an external system (not used by dolibarr)
ref_supplier varchar(255),
fk_soc integer NOT NULL,
fk_projet integer DEFAULT 0, -- project id
fk_soc integer NOT NULL,
fk_projet integer DEFAULT 0, -- project id
tms timestamp,
date_creation datetime, -- date de creation
date_valid datetime, -- date de validation
date_approve datetime, -- date de approve
date_approve2 datetime, -- date de approve 2 (when double approving is accivated)
date_commande date, -- date de la commande
fk_user_author integer, -- user making creation
fk_user_modif integer, -- user making last change
fk_user_valid integer, -- user validating
fk_user_approve integer, -- user approving
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 ?
fk_statut smallint default 0,
billed smallint default 0,
amount_ht real default 0,
remise_percent real default 0,
remise real default 0,
tva double(24,8) default 0,
localtax1 double(24,8) default 0,
localtax2 double(24,8) default 0,
total_ht double(24,8) default 0,
total_ttc double(24,8) default 0,
note_private text,
note_public text,
model_pdf varchar(255),
last_main_doc varchar(255), -- relative filepath+filename of last main generated document
tms timestamp,
date_creation datetime, -- date de creation
date_valid datetime, -- date de validation
date_approve datetime, -- date de approve
date_approve2 datetime, -- date de approve 2 (when double approving is accivated)
date_commande date, -- date de la commande
fk_user_author integer, -- user making creation
fk_user_modif integer, -- user making last change
fk_user_valid integer, -- user validating
fk_user_approve integer, -- user approving
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 ?
fk_statut smallint default 0,
billed smallint default 0,
amount_ht double(24,8) default 0,
remise_percent real default 0,
remise real default 0,
tva double(24,8) default 0,
localtax1 double(24,8) default 0,
localtax2 double(24,8) default 0,
total_ht double(24,8) default 0,
total_ttc double(24,8) default 0,
note_private text,
note_public text,
model_pdf varchar(255),
last_main_doc varchar(255), -- relative filepath+filename of last main generated document
date_livraison datetime default NULL,
fk_account integer, -- bank account
fk_cond_reglement integer, -- condition 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_incoterms integer, -- for incoterms
location_incoterms varchar(255), -- for incoterms
import_key varchar(14),
extraparams varchar(255), -- for stock other parameters with json format
date_livraison datetime default NULL,
fk_account integer, -- bank account
fk_cond_reglement integer, -- condition 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_incoterms integer, -- for incoterms
location_incoterms varchar(255), -- for incoterms
import_key varchar(14),
extraparams varchar(255), -- for stock other parameters with json format
fk_multicurrency integer,
multicurrency_code varchar(255),
multicurrency_code varchar(255),
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_ttc double(24,8) DEFAULT 0
)ENGINE=innodb;

View File

@ -1,8 +1,8 @@
-- ===================================================================
-- Copyright (C) 2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
-- Copyright (C) 2007-2009 Laurent Destailleur <eldy@users.sourceforge.net>
-- Copyright (C) 2010-2012 Juanjo Menent <jmenent@2byte.es>
-- Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
-- Copyright (C) 2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
-- Copyright (C) 2007-2009 Laurent Destailleur <eldy@users.sourceforge.net>
-- Copyright (C) 2010-2012 Juanjo Menent <jmenent@2byte.es>
-- Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
--
-- 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
@ -23,39 +23,39 @@ create table llx_commande_fournisseurdet
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
fk_commande integer NOT NULL,
fk_parent_line integer NULL,
fk_parent_line integer NULL,
fk_product integer,
ref varchar(50), -- supplier product ref
label varchar(255), -- product label
ref varchar(50), -- supplier product ref
label varchar(255), -- product label
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
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_type varchar(10) NULL, -- localtax2 type
localtax2_type varchar(10) NULL, -- localtax2 type
qty real, -- quantity
remise_percent real DEFAULT 0, -- pourcentage de remise
remise real DEFAULT 0, -- montant de la remise
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_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_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
product_type integer DEFAULT 0,
date_start datetime DEFAULT NULL, -- date debut si service
date_end datetime DEFAULT NULL, -- date fin si service
info_bits integer DEFAULT 0, -- TVA NPR ou non
special_code integer DEFAULT 0, -- code pour les lignes speciales
rang integer DEFAULT 0,
import_key varchar(14),
fk_unit integer DEFAULT NULL,
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,
date_start datetime DEFAULT NULL, -- date debut si service
date_end datetime DEFAULT NULL, -- date fin si service
info_bits integer DEFAULT 0, -- TVA NPR ou non
special_code integer DEFAULT 0, -- code pour les lignes speciales
rang integer DEFAULT 0,
import_key varchar(14),
fk_unit integer DEFAULT NULL,
fk_multicurrency integer,
multicurrency_code varchar(255),
multicurrency_subprice double(24,8) DEFAULT 0,
multicurrency_total_ht double(24,8) DEFAULT 0,
multicurrency_total_tva double(24,8) DEFAULT 0,
multicurrency_total_ttc double(24,8) DEFAULT 0
fk_multicurrency integer,
multicurrency_code varchar(255),
multicurrency_subprice double(24,8) DEFAULT 0,
multicurrency_total_ht double(24,8) DEFAULT 0,
multicurrency_total_tva double(24,8) DEFAULT 0,
multicurrency_total_ttc double(24,8) DEFAULT 0
)ENGINE=innodb;

View File

@ -30,42 +30,42 @@ create table llx_commandedet
description text,
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
localtax1_tx double(6,3) DEFAULT 0, -- localtax1 rate
localtax1_type varchar(10) NULL, -- localtax1 type
localtax2_tx double(6,3) DEFAULT 0, -- localtax2 rate
localtax1_tx double(6,3) DEFAULT 0, -- localtax1 rate
localtax1_type varchar(10) NULL, -- localtax1 type
localtax2_tx double(6,3) DEFAULT 0, -- localtax2 rate
localtax2_type varchar(10) NULL, -- localtax2 type
qty real, -- quantity
remise_percent real DEFAULT 0, -- pourcentage de remise
remise real DEFAULT 0, -- montant de la remise
fk_remise_except integer NULL, -- Lien vers table des remises fixes
price real, -- prix final
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_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_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
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_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_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
product_type integer DEFAULT 0,
date_start datetime DEFAULT NULL, -- date debut si service
date_end datetime DEFAULT NULL, -- date fin si service
info_bits integer DEFAULT 0, -- 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)
special_code integer DEFAULT 0, -- code pour les lignes speciales
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),
fk_commandefourndet integer DEFAULT NULL, -- link to detail line of commande fourn (resplenish)
fk_multicurrency integer,
fk_multicurrency integer,
multicurrency_code varchar(255),
multicurrency_subprice double(24,8) DEFAULT 0,
multicurrency_total_ht double(24,8) DEFAULT 0,
multicurrency_total_tva double(24,8) DEFAULT 0,
multicurrency_total_ttc double(24,8) DEFAULT 0
multicurrency_total_tva double(24,8) DEFAULT 0,
multicurrency_total_ttc double(24,8) DEFAULT 0
)ENGINE=innodb;
--

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -29,7 +29,7 @@ create table llx_prelevement_bons
ref varchar(12), -- reference
entity integer DEFAULT 1 NOT NULL, -- multi company id
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
credite smallint DEFAULT 0, -- indique si le prelevement a ete credite
note text,

View File

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

View File

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

View File

@ -64,7 +64,7 @@ create table llx_societe
idprof5 varchar(128), -- IDProf5: nu for france
idprof6 varchar(128), -- IDProf6: nu for france
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
note_private text, --
note_public text, --

View File

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

View File

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

View File

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

View File

@ -189,7 +189,6 @@ IgnoreDuplicateRecords=Ignore errors of duplicate record (INSERT IGNORE)
AutoDetectLang=اكتشاف تلقائي (لغة المتصفح)
FeatureDisabledInDemo=الميزة معلطة في العرض التجريبي
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.
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.
@ -593,7 +592,7 @@ Module5000Desc=يسمح لك لإدارة الشركات المتعددة
Module6000Name=سير العمل
Module6000Desc=إدارة سير العمل
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=ترك إدارة الطلبات
Module20000Desc=أعلن وتابع الموظفين يترك طلبات
Module39000Name=الكثير المنتج
@ -1130,7 +1129,7 @@ SendmailOptionMayHurtBuggedMTA=ميزة لإرسال رسائل باستخدام
TranslationSetup=Setup of translation
TranslationKeySearch=Search a translation key or 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"
TranslationOverwriteDesc2=You can use the other tab to help you know translation key to use
TranslationString=Translation string
@ -1171,8 +1170,6 @@ RuleForGeneratedPasswords=قاعدة لتوليد كلمات السر واقتر
DisableForgetPasswordLinkOnLogonPage=لا تظهر وصلة "نسيت كلمة المرور" على صفحة تسجيل الدخول
UsersSetup=شاهد الإعداد وحدة
UserMailRequired=مطلوب بريد إلكتروني لإنشاء مستخدم جديد
DefaultCategoryCar=Default car category
DefaultRangeNumber=Default range number
##### HRM setup #####
HRMSetup=HRM وحدة الإعداد
##### Company setup #####

View File

@ -70,3 +70,9 @@ Stats=إحصاءات المبيعات
StatusProsp=احتمال وضع
DraftPropals=صياغة مقترحات تجارية
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
EmployeeFirstname=Employee first name
TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed
LastHolidays=Latest %s leave requests
AllHolidays=All leave requests
## Configuration du Module ##
LastUpdateCP=Latest automatic update of leaves allocation

View File

@ -99,7 +99,6 @@ NbOfCompaniesContacts=فريدة من شركات الاتصالات
MailNoChangePossible=صادق المتلقين للمراسلة لا يمكن تغيير
SearchAMailing=البحث البريدية
SendMailing=إرسال البريد الإلكتروني
SendMail=إرسال بريد إلكتروني
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:
MailingNeedCommand2=ولكن يمكنك إرسالها عبر الإنترنت عن طريق إضافة معلمة MAILING_LIMIT_SENDBYWEB مع قيمة الحد الأقصى لعدد من رسائل البريد الإلكتروني التي تريد إرسالها من خلال هذه الدورة.

View File

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

View File

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

View File

@ -47,6 +47,7 @@ SpecificationFile=File with business rules
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.
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'
DatabaseIndex=Database index
FileAlreadyExists=File %s already exists
@ -70,7 +71,7 @@ NoWidget=No widget
GoToApiExplorer=Go to API explorer
ListOfPermissionsDefined=List of defined permissions
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)
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.

View File

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

View File

@ -3,8 +3,6 @@ RefProject=المرجع. مشروع
ProjectRef=المرجع المشروع.
ProjectId=رقم المشروع
ProjectLabel=تسمية المشروع
Project=المشروع
Projects=المشاريع
ProjectsArea=Projects Area
ProjectStatus=حالة المشروع
SharedProject=مشاريع مشتركة
@ -38,6 +36,7 @@ OpenedTasks=Open tasks
OpportunitiesStatusForOpenedProjects=Opportunities amount of open projects by status
OpportunitiesStatusForProjects=Opportunities amount of projects by status
ShowProject=وتبين للمشروع
ShowTask=وتظهر هذه المهمة
SetProject=وضع المشروع
NoProject=لا يعرف أو المملوكة للمشروع
NbOfProjects=ملاحظة : للمشاريع
@ -77,6 +76,7 @@ Time=وقت
ListOfTasks=List of tasks
GoToListOfTimeConsumed=Go to list of time consumed
GoToListOfTasks=Go to list of tasks
GanttView=Gantt View
ListProposalsAssociatedProject=قائمة المقترحات التجارية المرتبطة بالمشروع.
ListOrdersAssociatedProject=List of customer orders 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=فتح مشروع
ConfirmReOpenAProject=Are you sure you want to re-open this project?
ProjectContact=مشروع اتصالات
TaskContact=Task contacts
ActionsOnProject=الإجراءات على المشروع
YouAreNotContactOfProject=كنت لا اتصال لهذا المشروع الخاص
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?
DoNotShowMyTasksOnly=انظر أيضا المهام الغير موكلة الي
ShowMyTasksOnly=عرض فقط المهام الموكلة الي
TaskRessourceLinks=مصادر
TaskRessourceLinks=Contacts task
ProjectsDedicatedToThisThirdParty=مشاريع مخصصة لهذا الطرف الثالث
NoTasks=أية مهام لهذا المشروع
LinkedToAnotherCompany=ربط طرف ثالث آخر

View File

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

View File

@ -22,6 +22,7 @@ Movements=حركات
ErrorWarehouseRefRequired=مستودع الاشارة اسم مطلوب
ListOfWarehouses=لائحة المخازن
ListOfStockMovements=قائمة الحركات الأسهم
MovementId=Movement ID
StockMovementForId=Movement ID %d
ListMouvementStockProject=List of stock movements associated to project
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)
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=تسمية الحركة
DateMovement=Date of movement
InventoryCode=حركة المخزون أو كود
IsInPackage=الواردة في حزمة
WarehouseAllowNegativeTransfer=Stock can be negative

View File

@ -1,6 +1,4 @@
# Dolibarr language file - Source file is en_US - trips
ExpenseReport=تقرير حساب
ExpenseReports=تقارير المصاريف
ShowExpenseReport=عرض تقرير حساب
Trips=تقارير المصاريف
TripsAndExpenses=تقارير النفقات
@ -12,6 +10,8 @@ ListOfFees=قائمة الرسوم
TypeFees=Types of fees
ShowTrip=عرض تقرير حساب
NewTrip=تقرير حساب جديد
LastExpenseReports=Latest %s expense reports
AllExpenseReports=All expense reports
CompanyVisited=Company/organisation visited
FeesKilometersOrAmout=كم المبلغ أو
DeleteTrip=حذف تقرير حساب
@ -71,6 +71,8 @@ EX_FUE_VP=Fuel PV
EX_TOL_VP=Toll PV
EX_PAR_VP=Parking PV
EX_CAM_VP=PV maintenance and repair
DefaultCategoryCar=Default transportation mode
DefaultRangeNumber=Default range number
ErrorDoubleDeclaration=لقد أعلن تقرير حساب آخر في نطاق تاريخ مماثل.
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.
WEBSITE_PAGENAME=Page name/alias
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_INLINE=CSS 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
EditMedias=Edit medias
EditPageMeta=Edit Meta
Website=Web site
AddWebsite=Add website
Webpage=Web 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
SyntaxHelp=Help on specific syntax tips
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
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.
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.
@ -52,3 +52,6 @@ OrEnterPageInfoManually=Or create empty page from scratch...
FetchAndCreate=Fetch and Create
ExportSite=Export site
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=Автоматично (език на браузъра)
FeatureDisabledInDemo=Feature инвалиди в демо
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.
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.
@ -593,7 +592,7 @@ Module5000Desc=Позволява ви да управлявате няколк
Module6000Name=Workflow
Module6000Desc=Workflow management
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
Module20000Desc=Declare and follow employees leaves requests
Module39000Name=Product lot
@ -1130,7 +1129,7 @@ SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail dire
TranslationSetup=Setup of translation
TranslationKeySearch=Search a translation key or 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"
TranslationOverwriteDesc2=You can use the other tab to help you know translation key to use
TranslationString=Translation string
@ -1171,8 +1170,6 @@ RuleForGeneratedPasswords=Член за генериране на предлож
DisableForgetPasswordLinkOnLogonPage=Да не се показват връзката &quot;Забравена парола&quot; на страницата за вход
UsersSetup=Потребители модул за настройка
UserMailRequired=Задължително е въвеждането на имейл при създаване на нов потребител
DefaultCategoryCar=Default car category
DefaultRangeNumber=Default range number
##### HRM setup #####
HRMSetup=HRM module setup
##### Company setup #####

View File

@ -70,3 +70,9 @@ Stats=Статистика на продажбите
StatusProsp=Prospect статус
DraftPropals=Проектът на търговски предложения
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
EmployeeFirstname=Employee first name
TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed
LastHolidays=Latest %s leave requests
AllHolidays=All leave requests
## Configuration du Module ##
LastUpdateCP=Latest automatic update of leaves allocation

View File

@ -99,7 +99,6 @@ NbOfCompaniesContacts=Уникални контакти на фирми
MailNoChangePossible=Получатели на за валидирани електронната поща не може да бъде променена
SearchAMailing=Търсене пощенски
SendMailing=Изпращане на имейл
SendMail=Изпращане на имейл
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:
MailingNeedCommand2=Все пак можете да ги изпратите онлайн чрез добавяне на параметър MAILING_LIMIT_SENDBYWEB със стойност на максимален брой на имейлите, които искате да изпратите от сесията. За това, отидете на дома - Setup - Други.

View File

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

View File

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

View File

@ -47,6 +47,7 @@ SpecificationFile=File with business rules
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.
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'
DatabaseIndex=Database index
FileAlreadyExists=File %s already exists
@ -70,7 +71,7 @@ NoWidget=No widget
GoToApiExplorer=Go to API explorer
ListOfPermissionsDefined=List of defined permissions
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)
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.

View File

@ -3,8 +3,6 @@ RefProject=Реф. проект
ProjectRef=Проект реф.
ProjectId=Id на проект
ProjectLabel=Етикет на проект
Project=Проект
Projects=Проекти
ProjectsArea=Projects Area
ProjectStatus=Статус на проект
SharedProject=Всички
@ -38,6 +36,7 @@ OpenedTasks=Open tasks
OpportunitiesStatusForOpenedProjects=Opportunities amount of open projects by status
OpportunitiesStatusForProjects=Opportunities amount of projects by status
ShowProject=Покажи проект
ShowTask=Покажи задача
SetProject=Задайте проект
NoProject=Нито един проект няма определени или собственост
NbOfProjects=Nb на проекти
@ -77,6 +76,7 @@ Time=Време
ListOfTasks=List of tasks
GoToListOfTimeConsumed=Go to list of time consumed
GoToListOfTasks=Go to list of tasks
GanttView=Gantt View
ListProposalsAssociatedProject=Списък на търговските предложения, свързани с проекта
ListOrdersAssociatedProject=List of customer orders 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=Проект с отворен
ConfirmReOpenAProject=Are you sure you want to re-open this project?
ProjectContact=ПРОЕКТА Контакти
TaskContact=Task contacts
ActionsOnProject=Събития по проекта
YouAreNotContactOfProject=Вие не сте контакт на този частен проект
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?
DoNotShowMyTasksOnly=Показване също на задачи, които не са възложени на мен
ShowMyTasksOnly=Показване задачи, възложени само на мен
TaskRessourceLinks=Ресурси
TaskRessourceLinks=Contacts task
ProjectsDedicatedToThisThirdParty=Проекти, насочени към този контрагент
NoTasks=Няма задачи за този проект
LinkedToAnotherCompany=Свързано с друг контрагент

View File

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

View File

@ -22,6 +22,7 @@ Movements=Движения
ErrorWarehouseRefRequired=Изисква се референтно име на склад
ListOfWarehouses=Списък на складовете
ListOfStockMovements=Списък на движението на стоковите наличности
MovementId=Movement ID
StockMovementForId=Movement ID %d
ListMouvementStockProject=List of stock movements associated to project
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)
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
DateMovement=Date of movement
InventoryCode=Movement or inventory code
IsInPackage=Contained into package
WarehouseAllowNegativeTransfer=Stock can be negative

View File

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

View File

@ -5,7 +5,7 @@ DeleteWebsite=Изтрийте уебсайт
ConfirmDeleteWebsite=Сигурни ли сте, че искате да изтриете този уебсайт? Всички негови страници и съдържание ще бъдат премахнати.
WEBSITE_PAGENAME=Име на страницата
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_INLINE=CSS 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=Редактирай
EditMedias=Edit medias
EditPageMeta=Редайтирай Meta
Website=Уеб Сайт
AddWebsite=Add website
Webpage=Web page/container
AddPage=Добави страница/контейнер
@ -39,9 +38,10 @@ VirtualHostUrlNotDefined=URL of the virtual host served by external web server n
NoPageYet=No pages yet
SyntaxHelp=Help on specific syntax tips
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
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.
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.
@ -52,3 +52,6 @@ OrEnterPageInfoManually=Or create empty page from scratch...
FetchAndCreate=Fetch and Create
ExportSite=Export site
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)
FeatureDisabledInDemo=Feature disabled in demo
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.
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.
@ -593,7 +592,7 @@ Module5000Desc=Allows you to manage multiple companies
Module6000Name=Workflow
Module6000Desc=Workflow management
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
Module20000Desc=Declare and follow employees leaves requests
Module39000Name=Product lot
@ -1130,7 +1129,7 @@ SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail dire
TranslationSetup=Setup of translation
TranslationKeySearch=Search a translation key or 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"
TranslationOverwriteDesc2=You can use the other tab to help you know translation key to use
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
UsersSetup=Users module setup
UserMailRequired=EMail required to create a new user
DefaultCategoryCar=Default car category
DefaultRangeNumber=Default range number
##### HRM setup #####
HRMSetup=HRM module setup
##### Company setup #####

View File

@ -70,3 +70,9 @@ Stats=Sales statistics
StatusProsp=Prospect status
DraftPropals=Draft commercial proposals
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
EmployeeFirstname=Employee first name
TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed
LastHolidays=Latest %s leave requests
AllHolidays=All leave requests
## Configuration du Module ##
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
SearchAMailing=Search mailing
SendMailing=Send emailing
SendMail=Send email
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:
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
UserCreation=Creation user
UserModification=Modification user
UserValidation=Validation user
UserCreationShort=Creat. user
UserModificationShort=Modif. user
UserValidationShort=Valid. user
DurationYear=year
DurationMonth=month
DurationWeek=week
@ -608,6 +610,7 @@ SendByMail=Send by EMail
MailSentBy=Email sent by
TextUsedInTheMessageBody=Email body
SendAcknowledgementByMail=Send confirmation email
SendMail=Send email
EMail=E-mail
NoEMail=No email
Email=Email
@ -808,6 +811,10 @@ ModuleBuilder=Module Builder
SetMultiCurrencyCode=Set currency
BulkActions=Bulk actions
ClickToShowHelp=Click to show tooltip help
Website=Web site
WebSites=Web sites
ExpenseReport=Expense report
ExpenseReports=Expense reports
HR=HR
HRAndBank=HR and Bank
AutomaticallyCalculated=Automatically calculated
@ -818,6 +825,9 @@ Websites=Web sites
Events=Events
EMailTemplates=Emails templates
FileNotShared=File not shared to exernal public
Project=Project
Projects=Projects
Rights=Permissions
# Week day
Monday=Monday
Tuesday=Tuesday

View File

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

View File

@ -47,6 +47,7 @@ SpecificationFile=File with business rules
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.
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'
DatabaseIndex=Database index
FileAlreadyExists=File %s already exists
@ -70,7 +71,7 @@ NoWidget=No widget
GoToApiExplorer=Go to API explorer
ListOfPermissionsDefined=List of defined permissions
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)
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.

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