Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new_multicurrency_sync_rates

This commit is contained in:
phf 2016-03-12 13:16:22 +01:00
commit cc21f75c47
794 changed files with 4720 additions and 3584 deletions

View File

@ -322,10 +322,22 @@ if ($resql)
// Extra fields // Extra fields
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
{ {
foreach($extrafields->attribute_label as $key => $val) foreach($extrafields->attribute_label as $key => $val)
{ {
if (! empty($arrayfields["ef.".$key]['checked'])) print '<td class="liste_titre"></td>'; if (! empty($arrayfields["ef.".$key]['checked']))
} {
$align=$extrafields->getAlignFlag($key);
$typeofextrafield=$extrafields->attribute_type[$key];
print '<td class="liste_titre'.($align?' '.$align:'').'">';
if (in_array($typeofextrafield, array('varchar', 'int', 'select')))
{
$crit=$val;
$tmpkey=preg_replace('/search_options_/','',$key);
print '<input class="flat" size="4" type="text" name="search_options_'.$tmpkey.'" value="'.dol_escape_htmltag($search_array_options['search_options_'.$tmpkey]).'">';
}
print '</td>';
}
}
} }
// Fields from hook // Fields from hook
$parameters=array('arrayfields'=>$arrayfields); $parameters=array('arrayfields'=>$arrayfields);

View File

@ -198,7 +198,8 @@ if (! $conf->use_javascript_ajax) {
$listmodelcsv = array ( $listmodelcsv = array (
'1' => $langs->trans("Modelcsv_normal"), '1' => $langs->trans("Modelcsv_normal"),
'2' => $langs->trans("Modelcsv_CEGID"), '2' => $langs->trans("Modelcsv_CEGID"),
'3' => $langs->trans("Modelcsv_COALA") '3' => $langs->trans("Modelcsv_COALA"),
'4' => $langs->trans("Modelcsv_bob50")
); );
print $form->selectarray("modelcsv", $listmodelcsv, $conf->global->ACCOUNTING_EXPORT_MODELCSV, 0); print $form->selectarray("modelcsv", $listmodelcsv, $conf->global->ACCOUNTING_EXPORT_MODELCSV, 0);

View File

@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> /* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013-2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> * Copyright (C) 2013-2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -106,81 +106,38 @@ if (! empty($search_accountancy_code_end)) {
if ($action == 'export_csv') { if ($action == 'export_csv') {
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$journal = 'bookkepping'; $journal = 'bookkepping';
include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php'; include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php';
$result = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter); $result = $object->fetchAllBalance($sortorder, $sortfield, 0, 0, $filter);
if ($result < 0) { if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($object->error, $object->errors, 'errors');
} }
foreach ( $object->lines as $line ) { foreach ( $object->lines as $line ) {
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) { if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) {
$sep = ";"; $sep = ";";
// Model Cegid Expert Export
$date = dol_print_date($line->doc_date, '%d%m%Y');
print $date . $sep;
print $line->code_journal . $sep;
print length_accountg($line->numero_compte) . $sep;
print ' ' . $sep;
print $line->sens . $sep;
print price($line->montant) . $sep;
print dol_trunc($line->label_compte, 32) . $sep;
print $line->doc_ref . $sep;
/*print $line->piece_num . $sep;
print length_accounta($line->code_tiers) . $sep;
print . $sep;
print price($line->debit) . $sep;
print price($line->credit) . $sep;*/
print "\n";
} elseif ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 1) {
// Std export
$date = dol_print_date($line->doc_date, $conf->global->ACCOUNTING_EXPORT_DATE);
print $date . $sep;
print $line->doc_ref . $sep;
print length_accounta($line->numero_compte) . $sep;
print length_accountg($line->code_tiers) . $sep;
print price($line->debit) . $sep;
print price($line->credit) . $sep;
/*print $line->piece_num . $sep;
print $line->label_compte . $sep;
print price($line->montant) . $sep;
print $line->sens . $sep;*/
print $line->code_journal . $sep;
print "\n";
} elseif ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 3) {
// Coala export
$date = dol_print_date($line->doc_date, '%d/%m/%Y');
print $date . $sep;
print $line->code_journal . $sep;
print length_accounta($line->numero_compte) . $sep;
print $line->piece_num . $sep;
print $line->doc_ref . $sep;
print price($line->debit) . $sep;
print price($line->credit) . $sep;
print 'E' . $sep;
print length_accountg($line->code_tiers) . $sep;
print "\n";
} }
print length_accountg($line->numero_compte) . $sep;
print $line->debit . $sep;
print $line->credit . $sep;
print $line->debit . $sep;
print $line->credit - $line->debit . $sep;
print "\n";
} }
} }
else { else {
$title_page = $langs->trans("AccountBalance") . ' ' . dol_print_date($search_date_start) . '-' . dol_print_date($search_date_end); $title_page = $langs->trans("AccountBalance") . ' ' . dol_print_date($search_date_start) . '-' . dol_print_date($search_date_end);
llxHeader('', $title_page); llxHeader('', $title_page);
/* /*
* List * List
*/ */
$nbtotalofrecords = 0; $nbtotalofrecords = 0;
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
$nbtotalofrecords = $object->fetchAllBalance($sortorder, $sortfield, 0, 0, $filter); $nbtotalofrecords = $object->fetchAllBalance($sortorder, $sortfield, 0, 0, $filter);
@ -188,27 +145,27 @@ else {
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($object->error, $object->errors, 'errors');
} }
} }
$result = $object->fetchAllBalance($sortorder, $sortfield, $limit, $offset, $filter); $result = $object->fetchAllBalance($sortorder, $sortfield, $limit, $offset, $filter);
if ($result < 0) { if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($object->error, $object->errors, 'errors');
} }
print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $options, $sortfield, $sortorder, '', $result, $nbtotalofrecords); print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $options, $sortfield, $sortorder, '', $result, $nbtotalofrecords);
print '<form method="GET" id="searchFormList" action="' . $_SERVER["PHP_SELF"] . '">'; print '<form method="GET" id="searchFormList" action="' . $_SERVER["PHP_SELF"] . '">';
print '<div class="tabsAction">' . "\n"; print '<div class="tabsAction">' . "\n";
print '<div class="inline-block divButAction"><input type="submit" name="button_export_csv" class="butAction" value="' . $langs->trans("Export") . '" /></div>'; print '<div class="inline-block divButAction"><input type="submit" name="button_export_csv" class="butAction" value="' . $langs->trans("Export") . '" /></div>';
print '</div>'; print '</div>';
print '<div class="liste_titre">'; print '<div class="liste_titre">';
print $langs->trans('DateStart') . ': '; print $langs->trans('DateStart') . ': ';
print $form->select_date($search_date_start, 'date_start', 0, 0, 1); print $form->select_date($search_date_start, 'date_start', 0, 0, 1);
print $langs->trans('DateEnd') . ': '; print $langs->trans('DateEnd') . ': ';
print $form->select_date($search_date_end, 'date_end', 0, 0, 1); print $form->select_date($search_date_end, 'date_end', 0, 0, 1);
print '</div>'; print '</div>';
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Numerocompte"), $_SERVER['PHP_SELF'], "t.numero_compte", "", $options, "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Numerocompte"), $_SERVER['PHP_SELF'], "t.numero_compte", "", $options, "", $sortfield, $sortorder);
@ -217,7 +174,7 @@ else {
print_liste_field_titre($langs->trans("Solde"), $_SERVER["PHP_SELF"], "", $options, "", 'width="60" align="center"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Solde"), $_SERVER["PHP_SELF"], "", $options, "", 'width="60" align="center"', $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Action"), $_SERVER["PHP_SELF"], "", $options, "", 'width="60" align="center"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Action"), $_SERVER["PHP_SELF"], "", $options, "", 'width="60" align="center"', $sortfield, $sortorder);
print "</tr>\n"; print "</tr>\n";
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'; print '<td>';
print $langs->trans('From'); print $langs->trans('From');
@ -226,32 +183,32 @@ else {
print $langs->trans('To'); print $langs->trans('To');
print $formventilation->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, ''); print $formventilation->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, '');
print '</td>'; print '</td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '<td align="right" class="liste_titre">'; print '<td align="right" class="liste_titre">';
print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'search.png', '', '', 1) . '" name="button_search" value="' . dol_escape_htmltag($langs->trans("Search")) . '" title="' . dol_escape_htmltag($langs->trans("Search")) . '">'; print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'search.png', '', '', 1) . '" name="button_search" value="' . dol_escape_htmltag($langs->trans("Search")) . '" title="' . dol_escape_htmltag($langs->trans("Search")) . '">';
print '&nbsp;'; print '&nbsp;';
print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" name="button_removefilter" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">'; print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" name="button_removefilter" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">';
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
$var = True; $var = True;
$total_debit = 0; $total_debit = 0;
$total_credit = 0; $total_credit = 0;
foreach ( $object->lines as $line ) { foreach ( $object->lines as $line ) {
$var = ! $var; $var = ! $var;
$total_debit += $line->debit; $total_debit += $line->debit;
$total_credit += $line->credit; $total_credit += $line->credit;
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";
print '<td>' . length_accountg($line->numero_compte) . '</td>'; print '<td>' . length_accountg($line->numero_compte) . '</td>';
print '<td align="right">' . price($line->debit) . '</td>'; print '<td align="right">' . price($line->debit) . '</td>';
print '<td align="right">' . price($line->credit) . '</td>'; print '<td align="right">' . price($line->credit) . '</td>';
@ -260,7 +217,7 @@ else {
print '</td>'; print '</td>';
print "</tr>\n"; print "</tr>\n";
} }
print '<tr class="liste_total">'; print '<tr class="liste_total">';
print '<td></td>'; print '<td></td>';
print '<td align="right">'; print '<td align="right">';
@ -272,10 +229,10 @@ else {
print '<td align="right">' . price($total_credit - $total_debit) . '</td>'; print '<td align="right">' . price($total_credit - $total_debit) . '</td>';
print '<td align="right"></td>'; print '<td align="right"></td>';
print '</tr>'; print '</tr>';
print "</table>"; print "</table>";
print '</form>'; print '</form>';
llxFooter(); llxFooter();
} }
$db->close(); $db->close();

View File

@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com> /* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> * Copyright (C) 2013-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -182,9 +182,9 @@ if (! empty($search_mvt_num)) {
* Action * Action
*/ */
if ($action == 'delbookkeeping') { if ($action == 'delbookkeeping') {
$import_key = GETPOST('importkey', 'alpha'); $import_key = GETPOST('importkey', 'alpha');
if (! empty($import_key)) { if (! empty($import_key)) {
$result = $object->deleteByImportkey($import_key); $result = $object->deleteByImportkey($import_key);
if ($result < 0) { if ($result < 0) {
@ -194,9 +194,9 @@ if ($action == 'delbookkeeping') {
exit(); exit();
} }
} elseif ($action == 'delbookkeepingyearconfirm') { } elseif ($action == 'delbookkeepingyearconfirm') {
$delyear = GETPOST('delyear', 'int'); $delyear = GETPOST('delyear', 'int');
if (! empty($delyear)) { if (! empty($delyear)) {
$result = $object->deleteByYear($delyear); $result = $object->deleteByYear($delyear);
if ($result < 0) { if ($result < 0) {
@ -206,34 +206,30 @@ if ($action == 'delbookkeeping') {
exit(); exit();
} }
} elseif ($action == 'delmouvconfirm') { } elseif ($action == 'delmouvconfirm') {
$mvt_num = GETPOST('mvt_num', 'int'); $mvt_num = GETPOST('mvt_num', 'int');
if (! empty($mvt_num)) { if (! empty($mvt_num)) {
$result = $object->deleteMvtNum($mvt_num); $result = $object->deleteMvtNum($mvt_num);
if ($result < 0) { if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($object->error, $object->errors, 'errors');
} }
// if (!empty($options)) {
// Header("Location: list.php?".urldecode($options));
// } else {
Header("Location: list.php"); Header("Location: list.php");
// }
exit(); exit();
} }
} elseif ($action == 'export_csv') { } elseif ($action == 'export_csv') {
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$journal = 'bookkepping'; $journal = 'bookkepping';
include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php'; include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php';
$result = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter); $result = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter);
if ($result < 0) { if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($object->error, $object->errors, 'errors');
} }
foreach ( $object->lines as $line ) { foreach ( $object->lines as $line ) {
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) { if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) {
$sep = ";"; $sep = ";";
// Model Cegid Expert Export // Model Cegid Expert Export
@ -246,16 +242,9 @@ if ($action == 'delbookkeeping') {
print price($line->montant) . $sep; print price($line->montant) . $sep;
print dol_trunc($line->label_compte, 32) . $sep; print dol_trunc($line->label_compte, 32) . $sep;
print $line->doc_ref . $sep; print $line->doc_ref . $sep;
/*print $line->piece_num . $sep;
print length_accounta($line->code_tiers) . $sep;
print . $sep;
print price($line->debit) . $sep;
print price($line->credit) . $sep;*/
print "\n"; print "\n";
} elseif ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 1) { } elseif ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 1) {
// Std export // Std export
$date = dol_print_date($line->doc_date, $conf->global->ACCOUNTING_EXPORT_DATE); $date = dol_print_date($line->doc_date, $conf->global->ACCOUNTING_EXPORT_DATE);
print $date . $sep; print $date . $sep;
@ -264,15 +253,10 @@ if ($action == 'delbookkeeping') {
print length_accounta($line->code_tiers) . $sep; print length_accounta($line->code_tiers) . $sep;
print price($line->debit) . $sep; print price($line->debit) . $sep;
print price($line->credit) . $sep; print price($line->credit) . $sep;
/*print $line->piece_num . $sep;
print $line->label_compte . $sep;
print price($line->montant) . $sep;
print $line->sens . $sep;*/
print $line->code_journal . $sep; print $line->code_journal . $sep;
print "\n"; print "\n";
} elseif ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 3) { } elseif ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 3) {
// Coala export // Coala export
$date = dol_print_date($line->doc_date, '%d/%m/%Y'); $date = dol_print_date($line->doc_date, '%d/%m/%Y');
print $date . $sep; print $date . $sep;
@ -285,23 +269,48 @@ if ($action == 'delbookkeeping') {
print 'E' . $sep; print 'E' . $sep;
print length_accountg($line->code_tiers) . $sep; print length_accountg($line->code_tiers) . $sep;
print "\n"; print "\n";
} elseif ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 4) {
// Bob50
print $line->piece_num . $sep;
$date = dol_print_date($line->doc_date, '%d/%m/%Y');
print $date . $sep;
if (empty($line->code_tiers)) {
print 'G' . $sep;
print length_accounta($line->numero_compte) . $sep;
} else {
if (substr($line->numero_compte,0,3)=='411') {
print 'C' . $sep;
}
if (substr($line->numero_compte,0,3)=='401') {
print 'F' . $sep;
}
print length_accountg($line->code_tiers) . $sep;
}
print price($line->debit) . $sep;
print price($line->credit) . $sep;
print dol_trunc($line->label_compte, 32) . $sep;
print "\n";
} }
} }
} }
/* /*
* View * View
*/ */
else { else {
$title_page = $langs->trans("Bookkeeping") . ' ' . dol_print_date($search_date_start) . '-' . dol_print_date($search_date_end); $title_page = $langs->trans("Bookkeeping") . ' ' . dol_print_date($search_date_start) . '-' . dol_print_date($search_date_end);
llxHeader('', $title_page); llxHeader('', $title_page);
/* /*
* List * List
*/ */
$nbtotalofrecords = 0; $nbtotalofrecords = 0;
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
$nbtotalofrecords = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter); $nbtotalofrecords = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter);
@ -309,78 +318,48 @@ else {
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($object->error, $object->errors, 'errors');
} }
} }
$result = $object->fetchAll($sortorder, $sortfield, $limit, $offset, $filter); $result = $object->fetchAll($sortorder, $sortfield, $limit, $offset, $filter);
if ($result < 0) { if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($object->error, $object->errors, 'errors');
} }
if ($action == 'delmouv') { if ($action == 'delmouv') {
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?mvt_num=' . GETPOST('mvt_num'), $langs->trans('DeleteMvt'), $langs->trans('ConfirmDeleteMvt'), 'delmouvconfirm', '', 0, 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?mvt_num=' . GETPOST('mvt_num'), $langs->trans('DeleteMvt'), $langs->trans('ConfirmDeleteMvt'), 'delmouvconfirm', '', 0, 1);
print $formconfirm; print $formconfirm;
} }
if ($action == 'delbookkeepingyear') { if ($action == 'delbookkeepingyear') {
$form_question = array (); $form_question = array ();
$delyear = GETPOST('delyear'); $delyear = GETPOST('delyear');
if (empty($delyear)) { if (empty($delyear)) {
$delyear = dol_print_date(dol_now(), '%Y'); $delyear = dol_print_date(dol_now(), '%Y');
} }
$year_array = $formventilation->selectyear_accountancy_bookkepping($delyear, 'delyear', 0, 'array'); $year_array = $formventilation->selectyear_accountancy_bookkepping($delyear, 'delyear', 0, 'array');
$form_question['delyear'] = array ( $form_question['delyear'] = array (
'name' => 'delyear', 'name' => 'delyear',
'type' => 'select', 'type' => 'select',
'label' => $langs->trans('DelYear'), 'label' => $langs->trans('DelYear'),
'values' => $year_array, 'values' => $year_array,
'default' => $delyear 'default' => $delyear
); );
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans('DeleteMvt'), $langs->trans('ConfirmDeleteMvt'), 'delbookkeepingyearconfirm', $form_question, 0, 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans('DeleteMvt'), $langs->trans('ConfirmDeleteMvt'), 'delbookkeepingyearconfirm', $form_question, 0, 1);
print $formconfirm; print $formconfirm;
} }
print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $options, $sortfield, $sortorder, '', $result, $nbtotalofrecords); print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $options, $sortfield, $sortorder, '', $result, $nbtotalofrecords);
/*print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
print '<input type="hidden" name="action" value="delbookkeeping">';
print $formventilation->select_bookkeeping_importkey('importkey', GETPOST('importkey'));
print '<div class="inline-block divButAction"><input type="submit" class="butAction" value="' . $langs->trans("DelBookKeeping") . '" /></div>';
print '</form>';*/
print '<form method="GET" id="searchFormList" action="' . $_SERVER["PHP_SELF"] . '">'; print '<form method="GET" id="searchFormList" action="' . $_SERVER["PHP_SELF"] . '">';
print '<div class="tabsAction">' . "\n"; print '<div class="tabsAction">' . "\n";
print '<div class="inline-block divButAction"><input type="submit" name="button_delmvt" class="butAction" value="' . $langs->trans("DelBookKeeping") . '" /></div>'; print '<div class="inline-block divButAction"><input type="submit" name="button_delmvt" class="butAction" value="' . $langs->trans("DelBookKeeping") . '" /></div>';
print '<div class="inline-block divButAction"><a class="butAction" href="./card.php?action=create">' . $langs->trans("NewAccountingMvt") . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="./card.php?action=create">' . $langs->trans("NewAccountingMvt") . '</a></div>';
// print '<a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?action=export_csv">' . $langs->trans("Export") . '</a>';
print '<div class="inline-block divButAction"><input type="submit" name="button_export_csv" class="butAction" value="' . $langs->trans("Export") . '" /></div>'; print '<div class="inline-block divButAction"><input type="submit" name="button_export_csv" class="butAction" value="' . $langs->trans("Export") . '" /></div>';
print '</div>'; print '</div>';
/*print '<div class="liste_titre">';
print $langs->trans('DateStart') . ': ';
print $form->select_date($search_date_start, 'date_start', 0, 0, 1);
print $langs->trans('DateEnd') . ': ';
print $form->select_date($search_date_end, 'date_end', 0, 0, 1);
print '</div>';
print '<div class="liste_titre">';
print $langs->trans('From') . ' ' . $langs->trans('AccountAccounting') . ': ';
print $formventilation->select_account($search_accountancy_code_start, 'search_accountancy_code_start', 1, array (), 1, 1, '');
print $langs->trans('To') . ' ' . $langs->trans('AccountAccounting') . ': ';
print $formventilation->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, '');
print '</div>';
print '<div class="liste_titre">';
print $langs->trans('From') . ' ' . $langs->trans('ThirdPartyAccount') . ': ';
print $formventilation->select_auxaccount($search_accountancy_aux_code_start, 'search_accountancy_aux_code_start', 1);
print $langs->trans('To') . ' ' . $langs->trans('ThirdPartyAccount') . ': ';
print $formventilation->select_auxaccount($search_accountancy_aux_code_end, 'search_accountancy_aux_code_end', 1);
print '</div>';*/
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("NumPiece"), $_SERVER['PHP_SELF'], "t.piece_num", "", $options, "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("NumPiece"), $_SERVER['PHP_SELF'], "t.piece_num", "", $options, "", $sortfield, $sortorder);
@ -391,12 +370,10 @@ else {
print_liste_field_titre($langs->trans("Labelcompte"), $_SERVER['PHP_SELF'], "bk_label_compte", "", $options, "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Labelcompte"), $_SERVER['PHP_SELF'], "bk_label_compte", "", $options, "", $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Debit"), $_SERVER['PHP_SELF'], "t.debit", "", $options, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Debit"), $_SERVER['PHP_SELF'], "t.debit", "", $options, 'align="right"', $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Credit"), $_SERVER['PHP_SELF'], "t.credit", "", $options, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Credit"), $_SERVER['PHP_SELF'], "t.credit", "", $options, 'align="right"', $sortfield, $sortorder);
// print_liste_field_titre($langs->trans("Amount"), $_SERVER['PHP_SELF'], "t.montant", "", $options, 'align="center"', $sortfield, $sortorder);
// print_liste_field_titre($langs->trans("Sens"), $_SERVER['PHP_SELF'], "t.sens", "", $options, 'align="center"', $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Codejournal"), $_SERVER['PHP_SELF'], "t.code_journal", "", $options, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Codejournal"), $_SERVER['PHP_SELF'], "t.code_journal", "", $options, 'align="right"', $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Action"), $_SERVER["PHP_SELF"], "", $options, "", 'width="60" align="center"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Action"), $_SERVER["PHP_SELF"], "", $options, "", 'width="60" align="center"', $sortfield, $sortorder);
print "</tr>\n"; print "</tr>\n";
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="GET">'; print '<form action="' . $_SERVER["PHP_SELF"] . '" method="GET">';
print '<td><input type="text" name="search_mvt_num" size="6" value="' . $search_mvt_num . '"></td>'; print '<td><input type="text" name="search_mvt_num" size="6" value="' . $search_mvt_num . '"></td>';
@ -404,61 +381,52 @@ else {
print $langs->trans('From') . ': '; print $langs->trans('From') . ': ';
print $form->select_date($search_date_start, 'date_start', 0, 0, 1); print $form->select_date($search_date_start, 'date_start', 0, 0, 1);
print '<br>'; print '<br>';
print $langs->trans('to') . ': '; print $langs->trans('To') . ': ';
print $form->select_date($search_date_end, 'date_end', 0, 0, 1); print $form->select_date($search_date_end, 'date_end', 0, 0, 1);
// print $form->select_date($search_doc_date, 'doc_date', 0, 0, 1);
print '</td>'; print '</td>';
print '<td><input type="text" name="search_doc_ref" size="8" value="' . $search_doc_ref . '"></td>'; print '<td><input type="text" name="search_doc_ref" size="8" value="' . $search_doc_ref . '"></td>';
print '<td>'; print '<td>';
// print $langs->trans('From') . ' ' . $langs->trans('AccountAccounting') . ': ';
print $langs->trans('From'); print $langs->trans('From');
print $formventilation->select_account($search_accountancy_code_start, 'search_accountancy_code_start', 1, array (), 1, 1, ''); print $formventilation->select_account($search_accountancy_code_start, 'search_accountancy_code_start', 1, array (), 1, 1, '');
// print $langs->trans('To') . ' ' . $langs->trans('AccountAccounting') . ': ';
print '<br>'; print '<br>';
print $langs->trans('to'); print $langs->trans('To');
print $formventilation->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, ''); print $formventilation->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, '');
print '</td>'; print '</td>';
// print '<td><input type="text" name="search_accountancy_code" size="8" value="' . $search_accountancy_code . '"></td>';
print '<td>'; print '<td>';
// print $langs->trans('From') . ' ' . $langs->trans('ThirdPartyAccount') . ': ';
print $langs->trans('From'); print $langs->trans('From');
print $formventilation->select_auxaccount($search_accountancy_aux_code_start, 'search_accountancy_aux_code_start', 1); print $formventilation->select_auxaccount($search_accountancy_aux_code_start, 'search_accountancy_aux_code_start', 1);
// print $langs->trans('To') . ' ' . $langs->trans('ThirdPartyAccount') . ': ';
print '<br>'; print '<br>';
print $langs->trans('to'); print $langs->trans('To');
print $formventilation->select_auxaccount($search_accountancy_aux_code_end, 'search_accountancy_aux_code_end', 1); print $formventilation->select_auxaccount($search_accountancy_aux_code_end, 'search_accountancy_aux_code_end', 1);
print '</td>'; print '</td>';
// print '<td><input type="text" name="search_accountancy_aux_code" size="8" value="' . $search_accountancy_aux_code . '"></td>';
print '<td class="liste_titre">'; print '<td class="liste_titre">';
print '<input type="text" size=6 class="flat" name="search_mvt_label" value="' . $search_mvt_label . '"/>'; print '<input type="text" size=6 class="flat" name="search_mvt_label" value="' . $search_mvt_label . '"/>';
print '</td>'; print '</td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
// print '<td>&nbsp;</td>';
// print '<td>&nbsp;</td>';
print '<td align="right"><input type="text" name="search_ledger_code" size="3" value="' . $search_ledger_code . '"></td>'; print '<td align="right"><input type="text" name="search_ledger_code" size="3" value="' . $search_ledger_code . '"></td>';
print '<td align="right" colspan="2" class="liste_titre">'; print '<td align="right" colspan="2" class="liste_titre">';
print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'search.png', '', '', 1) . '" name="button_search" value="' . dol_escape_htmltag($langs->trans("Search")) . '" title="' . dol_escape_htmltag($langs->trans("Search")) . '">'; print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'search.png', '', '', 1) . '" name="button_search" value="' . dol_escape_htmltag($langs->trans("Search")) . '" title="' . dol_escape_htmltag($langs->trans("Search")) . '">';
print '&nbsp;'; print '&nbsp;';
print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" name="button_removefilter" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">'; print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" name="button_removefilter" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">';
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
$var = True; $var = True;
$total_debit = 0; $total_debit = 0;
$total_credit = 0; $total_credit = 0;
foreach ( $object->lines as $line ) { foreach ( $object->lines as $line ) {
$var = ! $var; $var = ! $var;
$total_debit += $line->debit; $total_debit += $line->debit;
$total_credit += $line->credit; $total_credit += $line->credit;
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";
print '<td><a href="./card.php?piece_num=' . $line->piece_num . '">' . $line->piece_num . '</a></td>'; 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 align="center">' . dol_print_date($line->doc_date, 'day') . '</td>';
print '<td>' . $line->doc_ref . '</td>'; print '<td>' . $line->doc_ref . '</td>';
@ -467,8 +435,6 @@ else {
print '<td>' . $line->label_compte . '</td>'; print '<td>' . $line->label_compte . '</td>';
print '<td align="right">' . price($line->debit) . '</td>'; print '<td align="right">' . price($line->debit) . '</td>';
print '<td align="right">' . price($line->credit) . '</td>'; print '<td align="right">' . price($line->credit) . '</td>';
// print '<td align="right">' . price($line->montant) . '</td>';
// print '<td align="center">' . $line->sens . '</td>';
print '<td align="right">' . $line->code_journal . '</td>'; print '<td align="right">' . $line->code_journal . '</td>';
print '<td align="center">'; print '<td align="center">';
print '<a href="./card.php?piece_num=' . $line->piece_num . '">' . img_edit() . '</a>&nbsp;'; print '<a href="./card.php?piece_num=' . $line->piece_num . '">' . img_edit() . '</a>&nbsp;';
@ -476,7 +442,7 @@ else {
print '</td>'; print '</td>';
print "</tr>\n"; print "</tr>\n";
} }
print '<tr class="liste_total">'; print '<tr class="liste_total">';
print '<td colspan="6"></td>'; print '<td colspan="6"></td>';
print '<td align="right">'; print '<td align="right">';
@ -487,10 +453,10 @@ else {
print '</td>'; print '</td>';
print '<td colspan="2"></td>'; print '<td colspan="2"></td>';
print '</tr>'; print '</tr>';
print "</table>"; print "</table>";
print '</form>'; print '</form>';
llxFooter(); llxFooter();
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com> /* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> * Copyright (C) 2013-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -74,7 +74,6 @@ if (empty($search_date_start)) {
$search_date_start = dol_mktime(0, 0, 0, 1, 1, dol_print_date(dol_now(), '%Y')); $search_date_start = dol_mktime(0, 0, 0, 1, 1, dol_print_date(dol_now(), '%Y'));
$search_date_end = dol_mktime(0, 0, 0, 12, 31, dol_print_date(dol_now(), '%Y')); $search_date_end = dol_mktime(0, 0, 0, 12, 31, dol_print_date(dol_now(), '%Y'));
} }
if ($sortorder == "") if ($sortorder == "")
$sortorder = "ASC"; $sortorder = "ASC";
if ($sortfield == "") if ($sortfield == "")
@ -184,13 +183,13 @@ print '</div>';
print '<div class="liste_titre">'; print '<div class="liste_titre">';
print $langs->trans('From') . ' ' . $langs->trans('AccountAccounting') . ': '; print $langs->trans('From') . ' ' . $langs->trans('AccountAccounting') . ': ';
print $formventilation->select_account($search_numero_compte_start, 'search_numero_compte_start', 1, array (), 1, 1, ''); print $formventilation->select_account($search_numero_compte_start, 'search_numero_compte_start', 1, array (), 1, 1, '');
print $langs->trans('to') . ' ' . $langs->trans('AccountAccounting') . ': '; print $langs->trans('To') . ' ' . $langs->trans('AccountAccounting') . ': ';
print $formventilation->select_account($search_numero_compte_end, 'search_numero_compte_end', 1, array (), 1, 1, ''); print $formventilation->select_account($search_numero_compte_end, 'search_numero_compte_end', 1, array (), 1, 1, '');
print '</div>'; print '</div>';
print '<div class="liste_titre">'; print '<div class="liste_titre">';
print $langs->trans('From') . ' ' . $langs->trans('ThirdPartyAccount') . ': '; print $langs->trans('From') . ' ' . $langs->trans('ThirdPartyAccount') . ': ';
print $formventilation->select_auxaccount($search_code_tiers_start, 'search_code_tiers_start', 1); print $formventilation->select_auxaccount($search_code_tiers_start, 'search_code_tiers_start', 1);
print $langs->trans('to') . ' ' . $langs->trans('ThirdPartyAccount') . ': '; print $langs->trans('To') . ' ' . $langs->trans('ThirdPartyAccount') . ': ';
print $formventilation->select_auxaccount($search_code_tiers_end, 'searchcode_tiers_end', 1); print $formventilation->select_auxaccount($search_code_tiers_end, 'searchcode_tiers_end', 1);
print '</div>'; print '</div>';
print "<table class=\"noborder\" width=\"100%\">"; print "<table class=\"noborder\" width=\"100%\">";
@ -257,9 +256,10 @@ print '<td class="liste_titre" align="center">';
print '<input type="text" size=3 class="flat" name="search_code_journal" value="' . $search_code_journal . '"/>'; print '<input type="text" size=3 class="flat" name="search_code_journal" value="' . $search_code_journal . '"/>';
print '</td>'; print '</td>';
print '<td class="liste_titre" align="right">'; print '<td align="right" colspan="2" class="liste_titre">';
$searchpitco=$form->showFilterAndCheckAddButtons(0); print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'search.png', '', '', 1) . '" name="button_search" value="' . dol_escape_htmltag($langs->trans("Search")) . '" title="' . dol_escape_htmltag($langs->trans("Search")) . '">';
print $searchpitco; print '&nbsp;';
print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" name="button_removefilter" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">';
print '</td>'; print '</td>';
print "</tr>\n"; print "</tr>\n";
@ -268,7 +268,7 @@ $var = True;
foreach ( $object->lines as $line ) { foreach ( $object->lines as $line ) {
$var = ! $var; $var = ! $var;
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";
print '<td>' . $line->piece_num . '</td>' . "\n"; print '<td>' . $line->piece_num . '</td>' . "\n";
print '<td>' . $line->doc_type . '</td>' . "\n"; print '<td>' . $line->doc_type . '</td>' . "\n";

View File

@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2007-2012 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2007-2012 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2015-*2016 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2015-2016 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -1064,6 +1064,7 @@ class BookKeeping extends CommonObject
$sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element; $sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element;
$sql .= " WHERE piece_num = " . $piecenum; $sql .= " WHERE piece_num = " . $piecenum;
dol_syslog(get_class($this) . "::" . __METHOD__, LOG_DEBUG);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) { if ($result) {
$obj = $this->db->fetch_object($result); $obj = $this->db->fetch_object($result);
@ -1118,7 +1119,7 @@ class BookKeeping extends CommonObject
$sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element; $sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element;
$sql .= " WHERE piece_num = " . $piecenum; $sql .= " WHERE piece_num = " . $piecenum;
dol_syslog(get_class($this) . "fetch_all_per_mvt sql=" . $sql, LOG_DEBUG); dol_syslog(get_class($this) . "::" . __METHOD__, LOG_DEBUG);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) { if ($result) {
@ -1147,7 +1148,7 @@ class BookKeeping extends CommonObject
} }
} else { } else {
$this->error = "Error " . $this->db->lasterror(); $this->error = "Error " . $this->db->lasterror();
dol_syslog(get_class($this) . "::fetch_all_per_mvt " . $this->error, LOG_ERR); dol_syslog(get_class($this) . "::" . __METHOD__ . $this->error, LOG_ERR);
return - 1; return - 1;
} }

View File

@ -48,6 +48,8 @@ $search_desc = GETPOST('search_desc', 'alpha');
$search_amount = GETPOST('search_amount', 'alpha'); $search_amount = GETPOST('search_amount', 'alpha');
$search_account = GETPOST('search_account', 'alpha'); $search_account = GETPOST('search_account', 'alpha');
$search_vat = GETPOST('search_vat', 'alpha'); $search_vat = GETPOST('search_vat', 'alpha');
$search_country = GETPOST('search_country', 'alpha');
$search_tvaintra = GETPOST('search_tvaintra', 'alpha');
// Getpost Order and column and limit page // Getpost Order and column and limit page
$sortfield = GETPOST('sortfield', 'alpha'); $sortfield = GETPOST('sortfield', 'alpha');
@ -68,7 +70,7 @@ if (! empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION)) {
$offset = $limit * $page; $offset = $limit * $page;
if (! $sortfield) if (! $sortfield)
$sortfield = "f.datef, f.facnumber, l.rowid"; $sortfield = "f.datef, f.facnumber, fd.rowid";
if (! $sortorder) { if (! $sortorder) {
if ($conf->global->ACCOUNTING_LIST_SORT_VENTILATION_DONE > 0) { if ($conf->global->ACCOUNTING_LIST_SORT_VENTILATION_DONE > 0) {
@ -94,6 +96,8 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
$search_amount = ''; $search_amount = '';
$search_account = ''; $search_account = '';
$search_vat = ''; $search_vat = '';
$search_country = '';
$search_tvaintra = '';
} }
if (is_array($changeaccount) && count($changeaccount) > 0) { if (is_array($changeaccount) && count($changeaccount) > 0) {
@ -150,14 +154,27 @@ print '<script type="text/javascript">
/* /*
* Customer Invoice lines * Customer Invoice lines
*/ */
$sql = "SELECT l.rowid , f.facnumber, f.rowid as facid, l.fk_product, l.description, l.total_ht, l.qty, l.tva_tx, l.fk_code_ventilation, aa.label, aa.account_number,"; $sql = "SELECT f.rowid, f.facnumber, f.type, f.datef as df, f.ref_client,";
$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type"; $sql .= " fd.rowid as fdid, fd.description, fd.product_type, fd.total_ht, fd.total_tva, fd.tva_tx, fd.total_ttc,";
$sql .= " FROM " . MAIN_DB_PREFIX . "facture as f"; $sql .= " s.rowid as socid, s.nom as name, s.code_compta, s.code_client,";
$sql .= " , " . MAIN_DB_PREFIX . "accounting_account as aa"; $sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.accountancy_code_sell, aa.rowid as fk_compte, aa.account_number, aa.label as label_compte,";
$sql .= " , " . MAIN_DB_PREFIX . "facturedet as l"; $sql .= " fd.situation_percent, co.label as country, s.tva_intra";
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product"; $sql .= " FROM " . MAIN_DB_PREFIX . "facturedet as fd";
$sql .= " WHERE f.rowid = l.fk_facture AND f.fk_statut >= 1 AND l.fk_code_ventilation <> 0 "; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = fd.fk_product";
$sql .= " AND aa.rowid = l.fk_code_ventilation"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accounting_account as aa ON aa.rowid = fd.fk_code_ventilation";
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facture as f ON f.rowid = fd.fk_facture";
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "societe as s ON s.rowid = f.fk_soc";
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "c_country as co ON co.rowid = s.fk_pays ";
$sql .= " WHERE fd.fk_code_ventilation > 0 ";
if (! empty($conf->multicompany->enabled)) {
$sql .= " AND f.entity IN (" . getEntity("facture", 1) . ")";
}
$sql .= " AND f.fk_statut > 0";
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
$sql .= " AND f.type IN (" . Facture::TYPE_STANDARD . "," . Facture::TYPE_REPLACEMENT . "," . Facture::TYPE_CREDIT_NOTE . "," . Facture::TYPE_SITUATION . ")";
} else {
$sql .= " AND f.type IN (" . Facture::TYPE_STANDARD . "," . Facture::TYPE_STANDARD . "," . Facture::TYPE_CREDIT_NOTE . "," . Facture::TYPE_DEPOSIT . "," . Facture::TYPE_SITUATION . ")";
}
if (strlen(trim($search_invoice))) { if (strlen(trim($search_invoice))) {
$sql .= " AND f.facnumber like '%" . $search_invoice . "%'"; $sql .= " AND f.facnumber like '%" . $search_invoice . "%'";
} }
@ -168,16 +185,22 @@ if (strlen(trim($search_label))) {
$sql .= " AND p.label like '%" . $search_label . "%'"; $sql .= " AND p.label like '%" . $search_label . "%'";
} }
if (strlen(trim($search_desc))) { if (strlen(trim($search_desc))) {
$sql .= " AND l.description like '%" . $search_desc . "%'"; $sql .= " AND fd.description like '%" . $search_desc . "%'";
} }
if (strlen(trim($search_amount))) { if (strlen(trim($search_amount))) {
$sql .= " AND l.total_ht like '%" . $search_amount . "%'"; $sql .= " AND fd.total_ht like '%" . $search_amount . "%'";
} }
if (strlen(trim($search_account))) { if (strlen(trim($search_account))) {
$sql .= " AND aa.account_number like '%" . $search_account . "%'"; $sql .= " AND aa.account_number like '%" . $search_account . "%'";
} }
if (strlen(trim($search_vat))) { if (strlen(trim($search_vat))) {
$sql .= " AND (l.tva_tx like '" . $search_vat . "%')"; $sql .= " AND (fd.tva_tx like '" . $search_vat . "%')";
}
if (strlen(trim($search_country))) {
$sql .= " AND (co.label like'" . $search_country . "%')";
}
if (strlen(trim($search_tvaintra))) {
$sql .= " AND (s.tva_intra like'" . $search_tvaintra . "%')";
} }
if (! empty($conf->multicompany->enabled)) { if (! empty($conf->multicompany->enabled)) {
$sql .= " AND f.entity IN (" . getEntity("facture", 1) . ")"; $sql .= " AND f.entity IN (" . getEntity("facture", 1) . ")";
@ -201,8 +224,8 @@ if ($result) {
$i = 0; $i = 0;
$param = ""; $param = "";
if ($search_facture) if ($search_invoice)
$param .= "&search_facture=" . $search_facture; $param .= "&search_invoice=" . $search_invoice;
if ($search_ref) if ($search_ref)
$param .= "&search_ref=" . $search_ref; $param .= "&search_ref=" . $search_ref;
if ($search_label) if ($search_label)
@ -211,8 +234,13 @@ if ($result) {
$param .= "&search_desc=" . $search_desc; $param .= "&search_desc=" . $search_desc;
if ($search_account) if ($search_account)
$param .= "&search_account=" . $search_account; $param .= "&search_account=" . $search_account;
if ($filter) if ($search_vat)
$param .= "&filter=" . $filter; $param .= "&search_vat=" . $search_vat;
if ($search_country)
$param .= "&search_country=" . $search_country;
if ($search_tvaintra)
$param .= "&search_tvaintra=" . $search_tvaintra;
print_barre_liste($langs->trans("InvoiceLinesDone"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords); print_barre_liste($langs->trans("InvoiceLinesDone"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords);
print '<td align="left"><b>' . $langs->trans("DescVentilDoneCustomer") . '</b></td>'; print '<td align="left"><b>' . $langs->trans("DescVentilDoneCustomer") . '</b></td>';
@ -228,12 +256,12 @@ if ($result) {
print_liste_field_titre($langs->trans("Invoice"), $_SERVER["PHP_SELF"], "f.facnumber", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Invoice"), $_SERVER["PHP_SELF"], "f.facnumber", "", $param, '', $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Description"), $_SERVER["PHP_SELF"], "l.description", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Description"), $_SERVER["PHP_SELF"], "fd.description", "", $param, '', $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Amount"), $_SERVER["PHP_SELF"], "l.total_ht", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Amount"), $_SERVER["PHP_SELF"], "fd.total_ht", "", $param, 'align="center"', $sortfield, $sortorder);
print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "fd.tva_tx", "", $param, 'align="center"', $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Account"), $_SERVER["PHP_SELF"], "aa.account_number", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Account"), $_SERVER["PHP_SELF"], "aa.account_number", "", $param, 'align="center"', $sortfield, $sortorder);
print_liste_field_titre(''); print_liste_field_titre($langs->trans("Country"), $_SERVER["PHP_SELF"], "co.label", "", $param, 'align="center"', $sortfield, $sortorder);
print_liste_field_titre(''); print_liste_field_titre($langs->trans("IntracommunityVATNumber"), $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, 'align="center"', $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Ventilate") . '<br><label id="select-all">' . $langs->trans('All') . '</label>/<label id="unselect-all">' . $langs->trans('None') . '</label>', '', '', '', '', 'align="center"'); print_liste_field_titre($langs->trans("Ventilate") . '<br><label id="select-all">' . $langs->trans('All') . '</label>/<label id="unselect-all">' . $langs->trans('None') . '</label>', '', '', '', '', 'align="center"');
print "</tr>\n"; print "</tr>\n";
@ -243,14 +271,13 @@ if ($result) {
print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_label" value="' . $search_label . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_label" value="' . $search_label . '"></td>';
print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_desc" value="' . $search_desc . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_desc" value="' . $search_desc . '"></td>';
print '<td class="liste_titre" align="center"><input type="text" class="flat" size="8" name="search_amount" value="' . $search_amount . '"></td>'; print '<td class="liste_titre" align="center"><input type="text" class="flat" size="8" name="search_amount" value="' . $search_amount . '"></td>';
print '<td class="liste_titre" align="center"><input type="text" class="flat" size="5" name="search_vat" value="' . $search_vat . '">%</td>'; print '<td class="liste_titre" align="center">%<input type="text" class="flat" size="5" name="search_vat" value="' . $search_vat . '"></td>';
print '<td class="liste_titre" align="center"><input type="text" class="flat" size="15" name="search_account" value="' . $search_account . '"></td>'; print '<td class="liste_titre" align="center"><input type="text" class="flat" size="15" name="search_account" value="' . $search_account . '"></td>';
print '<td class="liste_titre" colspan="2">&nbsp;</td>'; print '<td class="liste_titre" align="center"><input type="text" class="flat" size="15" name="search_country" value="' . $search_country . '"></td>';
print '<td class="liste_titre" align="right">'; print '<td class="liste_titre" align="center"><input type="text" class="flat" size="15" name="search_tavintra" value="' . $search_tavintra . '"></td>';
$searchpitco=$form->showFilterAndCheckAddButtons(0); print '<td class="liste_titre" align="center"><input type="image" class="liste_titre" name="button_search" src="' . img_picto($langs->trans("Search"), 'search.png', '', '', 1) . '" value="' . dol_escape_htmltag($langs->trans("Search")) . '" title="' . dol_escape_htmltag($langs->trans("Search")) . '">';
print $searchpitco; print '<input type="image" class="liste_titre" name="button_removefilter" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">';
print '</td>'; print "</td></tr>\n";
print "</tr>\n";
$facture_static = new Facture($db); $facture_static = new Facture($db);
$product_static = new Product($db); $product_static = new Product($db);
@ -258,7 +285,7 @@ if ($result) {
$var = True; $var = True;
while ( $objp = $db->fetch_object($result) ) { while ( $objp = $db->fetch_object($result) ) {
$var = ! $var; $var = ! $var;
$codecompta = $objp->account_number . ' ' . $objp->label; $codecompta = $objp->account_number . ' - ' . $objp->label_compte;
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";
@ -282,13 +309,12 @@ if ($result) {
print '<td>' . nl2br(dol_trunc($objp->description, 32)) . '</td>'; print '<td>' . nl2br(dol_trunc($objp->description, 32)) . '</td>';
print '<td align="right">' . price($objp->total_ht) . '</td>'; print '<td align="right">' . price($objp->total_ht) . '</td>';
print '<td align="center">' . price($objp->tva_tx) . '</td>'; print '<td align="center">' . price($objp->tva_tx) . '</td>';
print '<td align="center">' . $codecompta . '</td>'; print '<td align="center">' . $codecompta . '<a href="./card.php?id=' . $objp->fdid . '">';
print '<td align="right">' . $objp->rowid . '</td>';
print '<td align="left"><a href="./card.php?id=' . $objp->rowid . '">';
print img_edit(); print img_edit();
print '</a></td>'; print '</a></td>';
print '<td align="right">' . $objp->country .'</td>';
print '<td align="center"><input type="checkbox" name="changeaccount[]" value="' . $objp->rowid . '"/></td>'; print '<td align="center">' . $objp->tva_intra . '</td>';
print '<td align="center"><input type="checkbox" name="changeaccount[]" value="' . $objp->fdid . '"/></td>';
print "</tr>"; print "</tr>";
$i ++; $i ++;

View File

@ -71,7 +71,7 @@ $now = dol_now();
// Security check // Security check
if ($user->societe_id > 0 && empty($id_bank_account)) if ($user->societe_id > 0 && empty($id_bank_account))
accessforbidden(); accessforbidden();
/* /*
* View * View
*/ */
@ -122,7 +122,7 @@ $paymentsalstatic = new PaymentSalary($db);
// Get code of finance journal // Get code of finance journal
$bank_code_journal = new Account($db); $bank_code_journal = new Account($db);
$result = $bank_code_journal->fetch($id_bank_account); $result = $bank_code_journal->fetch($id_bank_account);
$journal = $bank_code_journal->ref; $journal = $bank_code_journal->accountancy_journal;
dol_syslog("accountancy/journal/bankjournal.php", LOG_DEBUG); dol_syslog("accountancy/journal/bankjournal.php", LOG_DEBUG);
$result = $db->query($sql); $result = $db->query($sql);
@ -148,7 +148,7 @@ if ($result) {
$tabcompany[$obj->rowid] = array ( $tabcompany[$obj->rowid] = array (
'id' => $obj->socid, 'id' => $obj->socid,
'name' => $obj->name, 'name' => $obj->name,
'code_client' => $obj->code_compta 'code_client' => $obj->code_compta
); );
// Controls // Controls
@ -251,7 +251,7 @@ if ($result) {
$tabbq[$obj->rowid][$compta_bank] += $obj->amount; $tabbq[$obj->rowid][$compta_bank] += $obj->amount;
// if($obj->socid)$tabtp[$obj->rowid][$compta_soc] += $obj->amount; // if($obj->socid)$tabtp[$obj->rowid][$compta_soc] += $obj->amount;
$i ++; $i ++;
} }
} else { } else {
@ -319,7 +319,7 @@ if ($action == 'writebookkeeping') {
$result = $bookkeeping->create($user); $result = $bookkeeping->create($user);
if ($result < 0) { if ($result < 0) {
$error ++; $error ++;
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
} }
} }
// Third party // Third party
@ -388,7 +388,7 @@ if ($action == 'writebookkeeping') {
$bookkeeping->code_tiers = $k; $bookkeeping->code_tiers = $k;
$bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER; $bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER;
} else { } else {
$bookkeeping->doc_ref = $k; $bookkeeping->doc_ref = $k;
$bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER; $bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER;
} }
@ -396,7 +396,7 @@ if ($action == 'writebookkeeping') {
$result = $bookkeeping->create($user); $result = $bookkeeping->create($user);
if ($result < 0) { if ($result < 0) {
$error ++; $error ++;
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
} }
} }
} }
@ -414,8 +414,7 @@ if ($action == 'export_csv') {
$companystatic = new Client($db); $companystatic = new Client($db);
// Model Cegid Expert Export // Model Cegid Expert Export
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) {
{
$sep = ";"; $sep = ";";
foreach ( $tabpay as $key => $val ) { foreach ( $tabpay as $key => $val ) {
@ -436,7 +435,7 @@ if ($action == 'export_csv') {
print ($mt < 0 ? 'C' : 'D') . $sep; print ($mt < 0 ? 'C' : 'D') . $sep;
print ($mt <= 0 ? price(- $mt) : $mt) . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
print $val["type_payment"] . $sep; print $val["type_payment"] . $sep;
print $val["ref"] . $sep; print utf8_decode($val["ref"]) . $sep;
print "\n"; print "\n";
} }
@ -455,7 +454,7 @@ if ($action == 'export_csv') {
print ($mt < 0 ? 'D' : 'C') . $sep; print ($mt < 0 ? 'D' : 'C') . $sep;
print ($mt <= 0 ? price(- $mt) : $mt) . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
print $val["type_payment"] . $sep; print $val["type_payment"] . $sep;
print $val["ref"] . $sep; print utf8_decode($val["ref"]) . $sep;
print "\n"; print "\n";
} }
} }
@ -468,7 +467,7 @@ if ($action == 'export_csv') {
print ($mt < 0 ? 'D' : 'C') . $sep; print ($mt < 0 ? 'D' : 'C') . $sep;
print ($mt <= 0 ? price(- $mt) : $mt) . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
print $val["type_payment"] . $sep; print $val["type_payment"] . $sep;
print $val["ref"] . $sep; print utf8_decode($val["ref"]) . $sep;
print "\n"; print "\n";
} }
} }
@ -486,7 +485,12 @@ if ($action == 'export_csv') {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["type_payment"] . '"' . $sep; print '"' . $val["type_payment"] . '"' . $sep;
print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep; print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep;
print '"' . $langs->trans("Bank") . '"' . $sep; if ($companystatic->name == '') {
print '"' . $langs->trans('Bank') . " - " . utf8_decode($val["ref"]) . '"' . $sep;
} else {
print '"' . $langs->trans("Bank") . ' - ' . utf8_decode($companystatic->name) . '"' . $sep;
}
// print '"' . $langs->trans("Bank") . '"' . $sep;
print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep; print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep;
print '"' . ($mt < 0 ? price(- $mt) : '') . '"'; print '"' . ($mt < 0 ? price(- $mt) : '') . '"';
print "\n"; print "\n";
@ -499,7 +503,12 @@ if ($action == 'export_csv') {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["type_payment"] . '"' . $sep; print '"' . $val["type_payment"] . '"' . $sep;
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
print '"' . $companystatic->name . '"' . $sep; // print '"' . $companystatic->name . '"' . $sep;
if ($companystatic->name == '') {
print '"' . $langs->trans('ThirdParty') . " - " . utf8_decode($val["ref"]) . '"' . $sep;
} else {
print '"' . $langs->trans('ThirdParty') . " - " . utf8_decode($companystatic->name) . '"' . $sep;
}
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep; print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
print '"' . ($mt >= 0 ? price($mt) : '') . '"'; print '"' . ($mt >= 0 ? price($mt) : '') . '"';
print "\n"; print "\n";
@ -510,7 +519,12 @@ if ($action == 'export_csv') {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $sep; print '"' . $val["ref"] . '"' . $sep;
print '"' . length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) . '"' . $sep; print '"' . length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) . '"' . $sep;
print '"' . $langs->trans("Bank") . '"' . $sep; // print '"' . $langs->trans("Bank") . '"' . $sep;
if ($companystatic->name == '') {
print '"' . $langs->trans("Bank") . ' - ' . utf8_decode($val["ref"]) . '"' . $sep;
} else {
print '"' . $langs->trans("Bank") . ' - ' . utf8_decode($companystatic->name) . '"' . $sep;
}
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep; print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
print '"' . ($mt >= 0 ? price($mt) : '') . '"'; print '"' . ($mt >= 0 ? price($mt) : '') . '"';
print "\n"; print "\n";
@ -523,7 +537,7 @@ else {
$form = new Form($db); $form = new Form($db);
llxHeader('', $langs->trans("FinanceJournal")); llxHeader('', $langs->trans("FinanceJournal"));
$nom = $langs->trans("FinanceJournal") . ' - ' . $bank_code_journal->getNomUrl(1); $nom = $langs->trans("FinanceJournal") . ' - ' . $bank_code_journal->getNomUrl(1);
$builddate = time(); $builddate = time();
$description = $langs->trans("DescFinanceJournal") . '<br>'; $description = $langs->trans("DescFinanceJournal") . '<br>';
@ -531,7 +545,7 @@ else {
$varlink = 'id_account=' . $id_bank_account; $varlink = 'id_account=' . $id_bank_account;
report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array ( report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array (
'action' => '' 'action' => ''
), '', $varlink); ), '', $varlink);
print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />'; print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />';
@ -573,7 +587,7 @@ else {
foreach ( $tabpay as $key => $val ) { foreach ( $tabpay as $key => $val ) {
$date = dol_print_date($db->jdate($val["date"]), 'day'); $date = dol_print_date($db->jdate($val["date"]), 'day');
if ($val["lib"] == '(SupplierInvoicePayment)') { if ($val["lib"] == '(SupplierInvoicePayment)') {
$reflabel = $langs->trans('SupplierInvoicePayment'); $reflabel = $langs->trans('SupplierInvoicePayment');
} }
@ -587,7 +601,12 @@ else {
print "<td>" . $date . "</td>"; print "<td>" . $date . "</td>";
print "<td>" . $reflabel . "</td>"; print "<td>" . $reflabel . "</td>";
print "<td>" . length_accountg($k) . "</td>"; print "<td>" . length_accountg($k) . "</td>";
print "<td>" . $langs->trans('Bank') . "</td>"; // print "<td>" . $langs->trans('Bank') . "</td>";
if ($val['soclib'] == '') {
print "<td>" . $langs->trans('Bank') . " - " . $val["ref"] . "</td>";
} else {
print "<td>" . $langs->trans("Bank") . " - " . $val['soclib'] . "</td>";
}
print "<td>" . $val["type_payment"] . "</td>"; print "<td>" . $val["type_payment"] . "</td>";
print "<td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>"; print "<td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>";
print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>"; print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>";
@ -601,8 +620,18 @@ else {
print "<tr " . $bc[$var] . ">"; print "<tr " . $bc[$var] . ">";
print "<td>" . $date . "</td>"; print "<td>" . $date . "</td>";
print "<td>" . $val["soclib"] . "</td>"; print "<td>" . $val["soclib"] . "</td>";
// print "<td>" . length_accounta($k) . "</td>";
if (length_accounta($k) == '') {
print "<td>" . length_accounta($conf->global->ACCOUNTING_ACCOUNT_TRANSFER_CASH) . "</td>";
} else {
print "<td>" . length_accounta($k) . "</td>"; print "<td>" . length_accounta($k) . "</td>";
print "<td>" . $langs->trans('ThirdParty') . " (" . $val['soclib'] . ")</td>"; }
// print "<td>" . $langs->trans('ThirdParty') . " (" . $val['soclib'] . ")</td>";
if ($val['soclib'] == '') {
print "<td>" . $langs->trans('ThirdParty') . " - " . $val["ref"] . "</td>";
} else {
print "<td>" . $langs->trans("ThirdParty") . ' - ' . $val['soclib'] . "</td>";
}
print "<td>" . $val["type_payment"] . "</td>"; print "<td>" . $val["type_payment"] . "</td>";
print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>"; print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>";
print "<td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>"; print "<td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>";
@ -615,7 +644,12 @@ else {
print "<td>" . $date . "</td>"; print "<td>" . $date . "</td>";
print "<td>" . $reflabel . "</td>"; print "<td>" . $reflabel . "</td>";
print "<td>" . length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) . "</td>"; print "<td>" . length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) . "</td>";
print "<td>" . $langs->trans('ThirdParty') . "</td>"; // print "<td>" . $langs->trans('ThirdParty') . "</td>";
if ($val['soclib'] == '') {
print "<td>" . $langs->trans('ThirdParty') . " - " . $val["ref"] . "</td>";
} else {
print "<td>" . $langs->trans("ThirdParty") . ' - ' . $val['soclib'] . "</td>";
}
print "<td>&nbsp;</td>"; print "<td>&nbsp;</td>";
print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>"; print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>";
print "<td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>"; print "<td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>";

View File

@ -112,14 +112,14 @@ if ($result) {
$num = $db->num_rows($result); $num = $db->num_rows($result);
// les variables // les variables
$cptfour = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER)) ? $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER : $langs->trans("CodeNotDef"); $cptfour = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER)) ? $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER : $langs->trans("CodeNotDef");
$cpttva = (! empty($conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT)) ? $conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT : $langs->trans("CodeNotDef"); $cpttva = (! empty($conf->global->ACCOUNTING_VAT_BUY_ACCOUNT)) ? $conf->global->ACCOUNTING_VAT_BUY_ACCOUNT : $langs->trans("CodeNotDef");
$tabfac = array (); $tabfac = array ();
$tabht = array (); $tabht = array ();
$tabtva = array (); $tabtva = array ();
$tabttc = array (); $tabttc = array ();
$tabcompany = array (); $tabcompany = array ();
$i = 0; $i = 0;
while ( $i < $num ) { while ( $i < $num ) {
$obj = $db->fetch_object($result); $obj = $db->fetch_object($result);
@ -133,9 +133,13 @@ if ($result) {
$compta_prod = (! empty($conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT)) ? $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT : $langs->trans("CodeNotDef"); $compta_prod = (! empty($conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT)) ? $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT : $langs->trans("CodeNotDef");
} }
$compta_tva = (! empty($obj->account_tva) ? $obj->account_tva : $cpttva); $compta_tva = (! empty($obj->account_tva) ? $obj->account_tva : $cpttva);
$tabfac[$obj->rowid]["date"] = $obj->df; $tabfac[$obj->rowid]["date"] = $obj->df;
$tabfac[$obj->rowid]["ref"] = $obj->ref_supplier . ' (' . $obj->ref . ')'; $tabfac[$obj->rowid]["ref"] = $obj->ref_supplier . ' (' . $obj->ref . ')';
$tabfac[$obj->rowid]["refsologest"] = $obj->ref ;
$tabfac[$obj->rowid]["refsuppliersologest"] = $obj->ref_supplier ;
$tabfac[$obj->rowid]["type"] = $obj->type; $tabfac[$obj->rowid]["type"] = $obj->type;
$tabfac[$obj->rowid]["description"] = $obj->description; $tabfac[$obj->rowid]["description"] = $obj->description;
$tabfac[$obj->rowid]["fk_facturefourndet"] = $obj->fdid; $tabfac[$obj->rowid]["fk_facturefourndet"] = $obj->fdid;
@ -145,9 +149,9 @@ if ($result) {
$tabcompany[$obj->rowid] = array ( $tabcompany[$obj->rowid] = array (
'id' => $obj->socid, 'id' => $obj->socid,
'name' => $obj->name, 'name' => $obj->name,
'code_fournisseur' => $obj->code_compta_fournisseur 'code_fournisseur' => $obj->code_compta_fournisseur
); );
$i ++; $i ++;
} }
} else { } else {
@ -158,11 +162,11 @@ if ($result) {
if ($action == 'writebookkeeping') { if ($action == 'writebookkeeping') {
$now = dol_now(); $now = dol_now();
$error = 0; $error = 0;
foreach ( $tabfac as $key => $val ) { foreach ( $tabfac as $key => $val ) {
foreach ( $tabttc[$key] as $k => $mt ) { foreach ( $tabttc[$key] as $k => $mt ) {
// get compte id and label // get compte id and label
$bookkeeping = new BookKeeping($db); $bookkeeping = new BookKeeping($db);
$bookkeeping->doc_date = $val["date"]; $bookkeeping->doc_date = $val["date"];
$bookkeeping->doc_ref = $val["ref"]; $bookkeeping->doc_ref = $val["ref"];
@ -179,14 +183,14 @@ if ($action == 'writebookkeeping') {
$bookkeeping->credit = ($mt > 0) ? $mt : 0; $bookkeeping->credit = ($mt > 0) ? $mt : 0;
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL; $bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
$bookkeeping->fk_user_author = $user->id; $bookkeeping->fk_user_author = $user->id;
$result = $bookkeeping->create($user); $result = $bookkeeping->create($user);
if ($result < 0) { if ($result < 0) {
$error ++; $error ++;
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
} }
} }
// Product / Service // Product / Service
foreach ( $tabht[$key] as $k => $mt ) { foreach ( $tabht[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
@ -209,16 +213,16 @@ if ($action == 'writebookkeeping') {
$bookkeeping->credit = ($mt <= 0) ? $mt : 0; $bookkeeping->credit = ($mt <= 0) ? $mt : 0;
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL; $bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
$bookkeeping->fk_user_author = $user->id; $bookkeeping->fk_user_author = $user->id;
$result = $bookkeeping->create($user); $result = $bookkeeping->create($user);
if ($result < 0) { if ($result < 0) {
$error ++; $error ++;
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
} }
} }
} }
} }
// VAT // VAT
// var_dump($tabtva); // var_dump($tabtva);
foreach ( $tabtva[$key] as $k => $mt ) { foreach ( $tabtva[$key] as $k => $mt ) {
@ -240,16 +244,16 @@ if ($action == 'writebookkeeping') {
$bookkeeping->credit = ($mt <= 0) ? $mt : 0; $bookkeeping->credit = ($mt <= 0) ? $mt : 0;
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL; $bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
$bookkeeping->fk_user_author = $user->id; $bookkeeping->fk_user_author = $user->id;
$result = $bookkeeping->create($user); $result = $bookkeeping->create($user);
if ($result < 0) { if ($result < 0) {
$error ++; $error ++;
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
} }
} }
} }
} }
if (empty($error)) { if (empty($error)) {
setEventMessages($langs->trans("GeneralLedgerIsWritten"), null, 'mesgs'); setEventMessages($langs->trans("GeneralLedgerIsWritten"), null, 'mesgs');
} }
@ -265,23 +269,23 @@ $companystatic = new Fournisseur($db);
if ($action == 'export_csv') { if ($action == 'export_csv') {
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL; $journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php'; include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php';
// Model Cegid Expert Export // Model Cegid Expert Export
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2)
{ {
$sep = ";"; $sep = ";";
foreach ( $tabfac as $key => $val ) { foreach ( $tabfac as $key => $val ) {
$date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y');
// Product / Service // Product / Service
foreach ( $tabht[$key] as $k => $mt ) { foreach ( $tabht[$key] as $k => $mt ) {
$companystatic->id = $tabcompany[$key]['id']; $companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name']; $companystatic->name = $tabcompany[$key]['name'];
$companystatic->client = $tabcompany[$key]['code_client']; $companystatic->client = $tabcompany[$key]['code_client'];
if ($mt) { if ($mt) {
print $date . $sep; print $date . $sep;
print $purchase_journal . $sep; print $purchase_journal . $sep;
@ -294,7 +298,7 @@ if ($action == 'export_csv') {
print "\n"; print "\n";
} }
} }
// VAT // VAT
foreach ( $tabtva[$key] as $k => $mt ) { foreach ( $tabtva[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
@ -309,7 +313,7 @@ if ($action == 'export_csv') {
print "\n"; print "\n";
} }
} }
foreach ( $tabttc[$key] as $k => $mt ) { foreach ( $tabttc[$key] as $k => $mt ) {
print $date . $sep; print $date . $sep;
print $purchase_journal . $sep; print $purchase_journal . $sep;
@ -325,12 +329,20 @@ if ($action == 'export_csv') {
} else { } else {
// Model Classic Export // Model Classic Export
foreach ( $tabfac as $key => $val ) { foreach ( $tabfac as $key => $val ) {
$invoicestatic->id = $key;
$invoicestatic->ref = $val["ref"];
$invoicestatic->ref = $val["refsologest"];
$invoicestatic->refsupplier = $val["refsuppliersologest"];
$invoicestatic->type = $val["type"];
$invoicestatic->description = html_entity_decode(dol_trunc($val["description"], 32));
$date = dol_print_date($db->jdate($val["date"]), 'day'); $date = dol_print_date($db->jdate($val["date"]), 'day');
$companystatic->id = $tabcompany[$key]['id']; $companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name']; $companystatic->name = $tabcompany[$key]['name'];
$companystatic->client = $tabcompany[$key]['code_client']; $companystatic->client = $tabcompany[$key]['code_client'];
// Product / Service // Product / Service
foreach ( $tabht[$key] as $k => $mt ) { foreach ( $tabht[$key] as $k => $mt ) {
$accountingaccount = new AccountingAccount($db); $accountingaccount = new AccountingAccount($db);
@ -339,7 +351,8 @@ if ($action == 'export_csv') {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $sep; print '"' . $val["ref"] . '"' . $sep;
print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep; print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep;
print '"' . dol_trunc($accountingaccount->label, 32) . '"' . $sep; print '"' . utf8_decode(dol_trunc($companystatic->name,16)).' - ' . $val["refsuppliersologest"] . ' - ' . utf8_decode(dol_trunc($accountingaccount->label, 32)) . '"' . $sep;
//print '"' . dol_trunc($accountingaccount->label, 32) . '"' . $sep;
print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep; print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep;
print '"' . ($mt < 0 ? price(- $mt) : '') . '"'; print '"' . ($mt < 0 ? price(- $mt) : '') . '"';
print "\n"; print "\n";
@ -351,19 +364,21 @@ if ($action == 'export_csv') {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $sep; print '"' . $val["ref"] . '"' . $sep;
print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep; print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep;
print '"' . $langs->trans("VAT") . '"' . $sep; //print '"' . $langs->trans("VAT") . '"' . $sep;
print '"' . utf8_decode(dol_trunc($companystatic->name,16)).' - ' . $val["refsuppliersologest"] . ' - ' . $langs->trans("VAT") . '"' . $sep;
print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep; print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep;
print '"' . ($mt < 0 ? price(- $mt) : '') . '"'; print '"' . ($mt < 0 ? price(- $mt) : '') . '"';
print "\n"; print "\n";
} }
} }
// Third party // Third party
foreach ( $tabttc[$key] as $k => $mt ) { foreach ( $tabttc[$key] as $k => $mt ) {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $sep; print '"' . $val["ref"] . '"' . $sep;
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
print '"' . utf8_decode($companystatic->name) . '"' . $sep; //print '"' . utf8_decode($companystatic->name) . '"' . $sep;
print '"' . utf8_decode(dol_trunc($companystatic->name,16)).' - ' . $val["refsuppliersologest"] . ' - ' . $langs->trans("Code_tiers") . '"' . $sep;
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep; print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
print '"' . ($mt >= 0 ? price($mt) : '') . '"'; print '"' . ($mt >= 0 ? price($mt) : '') . '"';
} }
@ -371,11 +386,11 @@ if ($action == 'export_csv') {
} }
} }
} else { } else {
llxHeader('', $langs->trans("PurchasesJournal")); llxHeader('', $langs->trans("PurchasesJournal"));
$form = new Form($db); $form = new Form($db);
$nom = $langs->trans("PurchasesJournal"); $nom = $langs->trans("PurchasesJournal");
$nomlink = ''; $nomlink = '';
$periodlink = ''; $periodlink = '';
@ -387,16 +402,16 @@ if ($action == 'export_csv') {
} else { } else {
$description .= $langs->trans("DepositsAreIncluded"); $description .= $langs->trans("DepositsAreIncluded");
} }
$period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1);
report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array ( report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array (
'action' => '' 'action' => ''
)); ));
print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />'; print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />';
print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />'; print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />';
print ' print '
<script type="text/javascript"> <script type="text/javascript">
function launch_export() { function launch_export() {
@ -410,12 +425,12 @@ if ($action == 'export_csv') {
$("div.fiche div.tabBar form input[name=\"action\"]").val(""); $("div.fiche div.tabBar form input[name=\"action\"]").val("");
} }
</script>'; </script>';
/* /*
* Show result array * Show result array
*/ */
print '<br><br>'; print '<br><br>';
$i = 0; $i = 0;
print "<table class=\"noborder\" width=\"100%\">"; print "<table class=\"noborder\" width=\"100%\">";
print "<tr class=\"liste_titre\">"; print "<tr class=\"liste_titre\">";
@ -425,31 +440,39 @@ if ($action == 'export_csv') {
print "<td>" . $langs->trans("Account") . "</td>"; print "<td>" . $langs->trans("Account") . "</td>";
print "<t><td>" . $langs->trans("Type") . "</td><td align='right'>" . $langs->trans("Debit") . "</td><td align='right'>" . $langs->trans("Credit") . "</td>"; print "<t><td>" . $langs->trans("Type") . "</td><td align='right'>" . $langs->trans("Debit") . "</td><td align='right'>" . $langs->trans("Credit") . "</td>";
print "</tr>\n"; print "</tr>\n";
$var = true; $var = true;
$r = ''; $r = '';
$invoicestatic = new FactureFournisseur($db); $invoicestatic = new FactureFournisseur($db);
foreach ( $tabfac as $key => $val ) { foreach ( $tabfac as $key => $val ) {
$invoicestatic->id = $key; $invoicestatic->id = $key;
$invoicestatic->ref = $val["ref"]; $invoicestatic->ref = $val["ref"];
$invoicestatic->ref = $val["refsologest"];
$invoicestatic->refsupplier = $val["refsuppliersologest"];
$invoicestatic->type = $val["type"]; $invoicestatic->type = $val["type"];
$invoicestatic->description = html_entity_decode(dol_trunc($val["description"], 32)); $invoicestatic->description = html_entity_decode(dol_trunc($val["description"], 32));
$date = dol_print_date($db->jdate($val["date"]), 'day'); $date = dol_print_date($db->jdate($val["date"]), 'day');
// Product / Service // Product / Service
foreach ( $tabht[$key] as $k => $mt ) { foreach ( $tabht[$key] as $k => $mt ) {
$accountingaccount = new AccountingAccount($db); $accountingaccount = new AccountingAccount($db);
$accountingaccount->fetch(null, $k); $accountingaccount->fetch(null, $k);
if ($mt) { if ($mt) {
print "<tr " . $bc[$var] . " >"; print "<tr " . $bc[$var] . " >";
print "<td>" . $date . "</td>"; print "<td>" . $date . "</td>";
print "<td>" . $invoicestatic->getNomUrl(1) . "</td>"; print "<td>" . $invoicestatic->getNomUrl(1) . "</td>";
print "<td>" . length_accountg($k) . "</td>"; print "<td>" . length_accountg($k) . "</td>";
print "<td>" . $accountingaccount->label . "</td>"; $companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name'];
print "<td>" . $companystatic->getNomUrl(0, 'supplier', 16). ' - ' .$invoicestatic->refsupplier .' - '. $accountingaccount->label . "</td>";
//print "<td>" . $accountingaccount->label . "</td>";
print '<td align="right">' . ($mt >= 0 ? price($mt) : '') . "</td>"; print '<td align="right">' . ($mt >= 0 ? price($mt) : '') . "</td>";
print '<td align="right">' . ($mt < 0 ? price(- $mt) : '') . "</td>"; print '<td align="right">' . ($mt < 0 ? price(- $mt) : '') . "</td>";
print "</tr>"; print "</tr>";
@ -461,34 +484,36 @@ if ($action == 'export_csv') {
print "<tr " . $bc[$var] . " >"; print "<tr " . $bc[$var] . " >";
print "<td>" . $date . "</td>"; print "<td>" . $date . "</td>";
print "<td>" . $invoicestatic->getNomUrl(1) . "</td>"; print "<td>" . $invoicestatic->getNomUrl(1) . "</td>";
print "<td>" . length_accountg($k) . "</td><td>" . $langs->trans("VAT") . "</td>"; print "<td>" . length_accountg($k) . "</td>" ;
print "<td>" . $companystatic->getNomUrl(0, 'supplier', 16). ' - '.$invoicestatic->refsupplier .' - '. $langs->trans("VAT") . "</td>";
print '<td align="right">' . ($mt >= 0 ? price($mt) : '') . "</td>"; print '<td align="right">' . ($mt >= 0 ? price($mt) : '') . "</td>";
print '<td align="right">' . ($mt < 0 ? price(- $mt) : '') . "</td>"; print '<td align="right">' . ($mt < 0 ? price(- $mt) : '') . "</td>";
print "</tr>"; print "</tr>";
} }
} }
print "<tr " . $bc[$var] . ">"; print "<tr " . $bc[$var] . ">";
// Third party // Third party
foreach ( $tabttc[$key] as $k => $mt ) { foreach ( $tabttc[$key] as $k => $mt ) {
print "<td>" . $date . "</td>"; print "<td>" . $date . "</td>";
print "<td>" . $invoicestatic->getNomUrl(1) . "</td>"; print "<td>" . $invoicestatic->getNomUrl(1) . "</td>";
$companystatic->id = $tabcompany[$key]['id']; $companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name']; $companystatic->name = $tabcompany[$key]['name'];
print "<td>" . length_accounta($k); print "<td>" . length_accounta($k)."</td>";
print "</td><td>" . $langs->trans("ThirdParty"); print "<td>" . $companystatic->getNomUrl(0, 'supplier', 16). ' - '.$invoicestatic->refsupplier .' - '. $langs->trans("Code_tiers")."</td>";
print ' (' . $companystatic->getNomUrl(0, 'supplier', 16) . ')'; //print "</td><td>" . $langs->trans("ThirdParty");
print "</td>"; //print ' (' . $companystatic->getNomUrl(0, 'supplier', 16) . ')';
//print "</td>";
print '<td align="right">' . ($mt < 0 ? - price(- $mt) : '') . "</td>"; print '<td align="right">' . ($mt < 0 ? - price(- $mt) : '') . "</td>";
print '<td align="right">' . ($mt >= 0 ? price($mt) : '') . "</td>"; print '<td align="right">' . ($mt >= 0 ? price($mt) : '') . "</td>";
} }
print "</tr>"; print "</tr>";
$var = ! $var; $var = ! $var;
} }
print "</table>"; print "</table>";
// End of page // End of page
llxFooter(); llxFooter();
} }

View File

@ -40,10 +40,10 @@ require_once DOL_DOCUMENT_ROOT . '/accountancy/class/bookkeeping.class.php';
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingaccount.class.php'; require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingaccount.class.php';
// Langs // Langs
$langs->load("commercial");
$langs->load("compta"); $langs->load("compta");
$langs->load("bills"); $langs->load("bills");
$langs->load("other"); $langs->load("other");
$langs->load("main");
$langs->load("accountancy"); $langs->load("accountancy");
$date_startmonth = GETPOST('date_startmonth'); $date_startmonth = GETPOST('date_startmonth');
@ -119,16 +119,16 @@ if ($result) {
$tabtva = array (); $tabtva = array ();
$tabttc = array (); $tabttc = array ();
$tabcompany = array (); $tabcompany = array ();
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $i = 0;
while ( $i < $num ) { while ( $i < $num ) {
$obj = $db->fetch_object($result); $obj = $db->fetch_object($result);
// les variables // les variables
$cptcli = (! empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER)) ? $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER : $langs->trans("CodeNotDef"); $cptcli = (! empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER)) ? $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER : $langs->trans("CodeNotDef");
$compta_soc = (! empty($obj->code_compta)) ? $obj->code_compta : $cptcli; $compta_soc = (! empty($obj->code_compta)) ? $obj->code_compta : $cptcli;
$compta_prod = $obj->compte; $compta_prod = $obj->compte;
if (empty($compta_prod)) { if (empty($compta_prod)) {
if ($obj->product_type == 0) if ($obj->product_type == 0)
@ -138,7 +138,7 @@ if ($result) {
} }
$cpttva = (! empty($conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT)) ? $conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT : $langs->trans("CodeNotDef"); $cpttva = (! empty($conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT)) ? $conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT : $langs->trans("CodeNotDef");
$compta_tva = (! empty($obj->account_tva) ? $obj->account_tva : $cpttva); $compta_tva = (! empty($obj->account_tva) ? $obj->account_tva : $cpttva);
// Situation invoices handling // Situation invoices handling
$line = new FactureLigne($db); $line = new FactureLigne($db);
$line->fetch($obj->rowid); $line->fetch($obj->rowid);
@ -153,7 +153,7 @@ if ($result) {
} else { } else {
$situation_ratio = 1; $situation_ratio = 1;
} }
// Invoice lines // Invoice lines
$tabfac[$obj->rowid]["date"] = $obj->df; $tabfac[$obj->rowid]["date"] = $obj->df;
$tabfac[$obj->rowid]["ref"] = $obj->facnumber; $tabfac[$obj->rowid]["ref"] = $obj->facnumber;
@ -172,9 +172,9 @@ if ($result) {
$tabcompany[$obj->rowid] = array ( $tabcompany[$obj->rowid] = array (
'id' => $obj->socid, 'id' => $obj->socid,
'name' => $obj->name, 'name' => $obj->name,
'code_client' => $obj->code_compta 'code_client' => $obj->code_compta
); );
$i ++; $i ++;
} }
} else { } else {
@ -190,7 +190,7 @@ if ($result) {
if ($action == 'writebookkeeping') { if ($action == 'writebookkeeping') {
$now = dol_now(); $now = dol_now();
$error = 0; $error = 0;
foreach ( $tabfac as $key => $val ) { foreach ( $tabfac as $key => $val ) {
foreach ( $tabttc[$key] as $k => $mt ) { foreach ( $tabttc[$key] as $k => $mt ) {
$bookkeeping = new BookKeeping($db); $bookkeeping = new BookKeeping($db);
@ -209,14 +209,14 @@ if ($action == 'writebookkeeping') {
$bookkeeping->credit = ($mt < 0) ? $mt : 0; $bookkeeping->credit = ($mt < 0) ? $mt : 0;
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL; $bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
$bookkeeping->fk_user_author = $user->id; $bookkeeping->fk_user_author = $user->id;
$result = $bookkeeping->create($user); $result = $bookkeeping->create($user);
if ($result < 0) { if ($result < 0) {
$error ++; $error ++;
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
} }
} }
// Product / Service // Product / Service
foreach ( $tabht[$key] as $k => $mt ) { foreach ( $tabht[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
@ -239,16 +239,16 @@ if ($action == 'writebookkeeping') {
$bookkeeping->credit = ($mt >= 0) ? $mt : 0; $bookkeeping->credit = ($mt >= 0) ? $mt : 0;
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL; $bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
$bookkeeping->fk_user_author = $user->id; $bookkeeping->fk_user_author = $user->id;
$result = $bookkeeping->create($user); $result = $bookkeeping->create($user);
if ($result < 0) { if ($result < 0) {
$error ++; $error ++;
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
} }
} }
} }
} }
// VAT // VAT
// var_dump($tabtva); // var_dump($tabtva);
foreach ( $tabtva[$key] as $k => $mt ) { foreach ( $tabtva[$key] as $k => $mt ) {
@ -269,16 +269,16 @@ if ($action == 'writebookkeeping') {
$bookkeeping->credit = ($mt >= 0) ? $mt : 0; $bookkeeping->credit = ($mt >= 0) ? $mt : 0;
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL; $bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
$bookkeeping->fk_user_author = $user->id; $bookkeeping->fk_user_author = $user->id;
$result = $bookkeeping->create($user); $result = $bookkeeping->create($user);
if ($result < 0) { if ($result < 0) {
$error ++; $error ++;
setEventMessages($object->error, $object->errors, 'errors'); setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
} }
} }
} }
} }
if (empty($error)) { if (empty($error)) {
setEventMessages($langs->trans("GeneralLedgerIsWritten"), null, 'mesgs'); setEventMessages($langs->trans("GeneralLedgerIsWritten"), null, 'mesgs');
} }
@ -288,23 +288,23 @@ if ($action == 'writebookkeeping') {
if ($action == 'export_csv') { if ($action == 'export_csv') {
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$sell_journal = $conf->global->ACCOUNTING_SELL_JOURNAL; $sell_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php'; include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php';
$companystatic = new Client($db); $companystatic = new Client($db);
// Model Cegid Expert Export // Model Cegid Expert Export
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2)
{ {
$sep = ";"; $sep = ";";
foreach ( $tabfac as $key => $val ) { foreach ( $tabfac as $key => $val ) {
$companystatic->id = $tabcompany[$key]['id']; $companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name']; $companystatic->name = $tabcompany[$key]['name'];
$companystatic->client = $tabcompany[$key]['code_client']; $companystatic->client = $tabcompany[$key]['code_client'];
$date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y');
foreach ( $tabttc[$key] as $k => $mt ) { foreach ( $tabttc[$key] as $k => $mt ) {
print $date . $sep; print $date . $sep;
print $sell_journal . $sep; print $sell_journal . $sep;
@ -316,7 +316,7 @@ if ($action == 'export_csv') {
print $val["ref"]; print $val["ref"];
print "\n"; print "\n";
} }
// Product / Service // Product / Service
foreach ( $tabht[$key] as $k => $mt ) { foreach ( $tabht[$key] as $k => $mt ) {
$accountingaccount_static = new AccountingAccount($db); $accountingaccount_static = new AccountingAccount($db);
@ -332,7 +332,7 @@ if ($action == 'export_csv') {
print "\n"; print "\n";
} }
} }
// TVA // TVA
foreach ( $tabtva[$key] as $k => $mt ) { foreach ( $tabtva[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
@ -354,42 +354,45 @@ if ($action == 'export_csv') {
$companystatic->id = $tabcompany[$key]['id']; $companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name']; $companystatic->name = $tabcompany[$key]['name'];
$companystatic->client = $tabcompany[$key]['code_client']; $companystatic->client = $tabcompany[$key]['code_client'];
$date = dol_print_date($db->jdate($val["date"]), 'day'); $date = dol_print_date($db->jdate($val["date"]), 'day');
foreach ( $tabttc[$key] as $k => $mt ) { foreach ( $tabttc[$key] as $k => $mt ) {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $sep; print '"' . $val["ref"] . '"' . $sep;
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
print '"' . utf8_decode($companystatic->name) . '"' . $sep; print '"' . utf8_decode(dol_trunc($companystatic->name,16)).' - ' . $companystatic->ref_client . ' - ' . $langs->trans("Code_tiers") . '"' . $sep;
//print '"' . utf8_decode($companystatic->name) . '"' . $sep;
print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep; print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep;
print '"' . ($mt < 0 ? price(- $mt) : '') . '"'; print '"' . ($mt < 0 ? price(- $mt) : '') . '"';
print "\n"; print "\n";
} }
// Product / Service // Product / Service
foreach ( $tabht[$key] as $k => $mt ) { foreach ( $tabht[$key] as $k => $mt ) {
$accountingaccount = new AccountingAccount($db); $accountingaccount = new AccountingAccount($db);
$accountingaccount->fetch(null, $k); $accountingaccount->fetch(null, $k);
if ($mt) { if ($mt) {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $sep; print '"' . $val["ref"] . '"' . $sep;
print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep; print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep;
print '"' . dol_trunc($accountingaccount->label, 32) . '"' . $sep; print '"' . utf8_decode(dol_trunc($companystatic->name,16)).' - '. utf8_decode ( dol_trunc($accountingaccount->label, 32)) . '"' . $sep;
//print '"' . dol_trunc($accountingaccount->label, 32) . '"' . $sep;
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep; print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
print '"' . ($mt >= 0 ? price($mt) : '') . '"'; print '"' . ($mt >= 0 ? price($mt) : '') . '"';
print "\n"; print "\n";
} }
} }
// VAT // VAT
foreach ( $tabtva[$key] as $k => $mt ) { foreach ( $tabtva[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $sep; print '"' . $val["ref"] . '"' . $sep;
print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep; print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep;
print '"' . $langs->trans("VAT") . '"' . $sep; print '"' . utf8_decode(dol_trunc($companystatic->name,16)).' - '. $langs->trans("VAT") . '"' . $sep;
//print '"' . $langs->trans("VAT") . '"' . $sep;
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep; print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
print '"' . ($mt >= 0 ? price($mt) : '') . '"'; print '"' . ($mt >= 0 ? price($mt) : '') . '"';
print "\n"; print "\n";
@ -398,11 +401,11 @@ if ($action == 'export_csv') {
} }
} }
} else { } else {
$form = new Form($db); $form = new Form($db);
llxHeader('', $langs->trans("SellsJournal")); llxHeader('', $langs->trans("SellsJournal"));
$nom = $langs->trans("SellsJournal"); $nom = $langs->trans("SellsJournal");
$nomlink = ''; $nomlink = '';
$periodlink = ''; $periodlink = '';
@ -415,13 +418,13 @@ if ($action == 'export_csv') {
$description .= $langs->trans("DepositsAreIncluded"); $description .= $langs->trans("DepositsAreIncluded");
$period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1);
report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array ( report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array (
'action' => '' 'action' => ''
)); ));
print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />'; print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />';
print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />'; print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />';
print ' print '
<script type="text/javascript"> <script type="text/javascript">
function launch_export() { function launch_export() {
@ -435,12 +438,12 @@ if ($action == 'export_csv') {
$("div.fiche div.tabBar form input[name=\"action\"]").val(""); $("div.fiche div.tabBar form input[name=\"action\"]").val("");
} }
</script>'; </script>';
/* /*
* Show result array * Show result array
*/ */
print '<br><br>'; print '<br><br>';
$i = 0; $i = 0;
print "<table class=\"noborder\" width=\"100%\">"; print "<table class=\"noborder\" width=\"100%\">";
print "<tr class=\"liste_titre\">"; print "<tr class=\"liste_titre\">";
@ -451,20 +454,20 @@ if ($action == 'export_csv') {
print "<td align='right'>" . $langs->trans("Debit") . "</td>"; print "<td align='right'>" . $langs->trans("Debit") . "</td>";
print "<td align='right'>" . $langs->trans("Credit") . "</td>"; print "<td align='right'>" . $langs->trans("Credit") . "</td>";
print "</tr>\n"; print "</tr>\n";
$var = true; $var = true;
$r = ''; $r = '';
$invoicestatic = new Facture($db); $invoicestatic = new Facture($db);
$companystatic = new Client($db); $companystatic = new Client($db);
foreach ( $tabfac as $key => $val ) { foreach ( $tabfac as $key => $val ) {
$invoicestatic->id = $key; $invoicestatic->id = $key;
$invoicestatic->ref = $val["ref"]; $invoicestatic->ref = $val["ref"];
$invoicestatic->type = $val["type"]; $invoicestatic->type = $val["type"];
$date = dol_print_date($db->jdate($val["date"]), 'day'); $date = dol_print_date($db->jdate($val["date"]), 'day');
// Third party // Third party
foreach ( $tabttc[$key] as $k => $mt ) { foreach ( $tabttc[$key] as $k => $mt ) {
print "<tr " . $bc[$var] . ">"; print "<tr " . $bc[$var] . ">";
@ -474,30 +477,32 @@ if ($action == 'export_csv') {
$companystatic->name = $tabcompany[$key]['name']; $companystatic->name = $tabcompany[$key]['name'];
$companystatic->client = $tabcompany[$key]['code_client']; $companystatic->client = $tabcompany[$key]['code_client'];
print "<td>" . length_accounta($k); print "<td>" . length_accounta($k);
print "</td><td>" . $langs->trans("ThirdParty"); //print "</td><td>" . $langs->trans("ThirdParty");
print ' (' . $companystatic->getNomUrl(0, 'customer', 16) . ')'; //print ' (' . $companystatic->getNomUrl(0, 'customer', 16) . ')';
print "<td>" . $companystatic->getNomUrl(0, 'customer', 16) . ' - ' . $invoicestatic->ref_client . ' - ' . $langs->trans("Code_tiers"). "</td>";
print "</td><td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>"; print "</td><td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>";
print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>"; print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>";
} }
print "</tr>"; print "</tr>";
// Product / Service // Product / Service
foreach ( $tabht[$key] as $k => $mt ) { foreach ( $tabht[$key] as $k => $mt ) {
$accountingaccount = new AccountingAccount($db); $accountingaccount = new AccountingAccount($db);
$accountingaccount->fetch(null, $k); $accountingaccount->fetch(null, $k);
if ($mt) { if ($mt) {
print "<tr " . $bc[$var] . ">"; print "<tr " . $bc[$var] . ">";
print "<td>" . $date . "</td>"; print "<td>" . $date . "</td>";
print "<td>" . $invoicestatic->getNomUrl(1) . "</td>"; print "<td>" . $invoicestatic->getNomUrl(1) . "</td>";
print "<td>" . length_accountg($k) . "</td>"; print "<td>" . length_accountg($k) . "</td>";
print "<td>" . $accountingaccount->label . "</td>"; //print "<td>" . $accountingaccount->label . "</td>";
print "<td>" . $companystatic->getNomUrl(0, 'customer', 16). ' - ' . $invoicestatic->ref_client . ' - ' . utf8_decode ( utf8_decode ( $accountingaccount->label)) . "</td>";
print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>"; print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>";
print "<td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>"; print "<td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>";
print "</tr>"; print "</tr>";
} }
} }
// VAT // VAT
foreach ( $tabtva[$key] as $k => $mt ) { foreach ( $tabtva[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
@ -505,18 +510,19 @@ if ($action == 'export_csv') {
print "<td>" . $date . "</td>"; print "<td>" . $date . "</td>";
print "<td>" . $invoicestatic->getNomUrl(1) . "</td>"; print "<td>" . $invoicestatic->getNomUrl(1) . "</td>";
print "<td>" . length_accountg($k) . "</td>"; print "<td>" . length_accountg($k) . "</td>";
print "<td>" . $langs->trans("VAT") . "</td>"; print "<td>" . $companystatic->getNomUrl(0, 'customer', 16). ' - ' . $invoicestatic->ref_client .' - '. $langs->trans("VAT") . "</td>";
//print "<td>" . $langs->trans("VAT") . "</td>";
print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>"; print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>";
print "<td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>"; print "<td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>";
print "</tr>"; print "</tr>";
} }
} }
$var = ! $var; $var = ! $var;
} }
print "</table>"; print "</table>";
// End of page // End of page
llxFooter(); llxFooter();
} }

View File

@ -217,7 +217,7 @@ if ($result) {
print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_label" value="' . $search_label . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_label" value="' . $search_label . '"></td>';
print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_desc" value="' . $search_desc . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat" size="15" name="search_desc" value="' . $search_desc . '"></td>';
print '<td class="liste_titre" align="center"><input type="text" class="flat" size="8" name="search_amount" value="' . $search_amount . '"></td>'; print '<td class="liste_titre" align="center"><input type="text" class="flat" size="8" name="search_amount" value="' . $search_amount . '"></td>';
print '<td class="liste_titre" align="center"><input type="text" class="flat" size="5" name="search_vat" value="' . $search_vat . '">%</td>'; print '<td class="liste_titre" align="center">%<input type="text" class="flat" size="5" name="search_vat" value="' . $search_vat . '"></td>';
print '<td class="liste_titre" align="center"><input type="text" class="flat" size="15" name="search_account" value="' . $search_account . '"></td>'; print '<td class="liste_titre" align="center"><input type="text" class="flat" size="15" name="search_account" value="' . $search_account . '"></td>';
print '<td class="liste_titre" colspan="2">&nbsp;</td>'; print '<td class="liste_titre" colspan="2">&nbsp;</td>';
print '<td class="liste_titre" align="right">'; print '<td class="liste_titre" align="right">';
@ -233,7 +233,7 @@ if ($result) {
while ( $i < min($num_lines, $limit) ) { while ( $i < min($num_lines, $limit) ) {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$var = ! $var; $var = ! $var;
$codeCompta = $objp->account_number . ' ' . $objp->label; $codeCompta = $objp->account_number . ' - ' . $objp->label;
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";

View File

@ -1931,7 +1931,7 @@ if ($action == 'create' && $user->rights->commande->creer)
/* /*
* Commande * Commande
*/ */
$nbrow = 9; $nbrow = 9;
if (! empty($conf->projet->enabled)) if (! empty($conf->projet->enabled))
$nbrow ++; $nbrow ++;
@ -2050,6 +2050,9 @@ if ($action == 'create' && $user->rights->commande->creer)
print '</form>'; print '</form>';
} else { } else {
print $object->date ? dol_print_date($object->date, 'daytext') : '&nbsp;'; print $object->date ? dol_print_date($object->date, 'daytext') : '&nbsp;';
if ($object->hasDelay() && empty($object->date_livraison)) {
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
}
} }
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
@ -2072,6 +2075,9 @@ if ($action == 'create' && $user->rights->commande->creer)
print '</form>'; print '</form>';
} else { } else {
print $object->date_livraison ? dol_print_date($object->date_livraison, 'daytext') : '&nbsp;'; print $object->date_livraison ? dol_print_date($object->date_livraison, 'daytext') : '&nbsp;';
if ($object->hasDelay() && ! empty($object->date_livraison)) {
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
}
} }
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';

View File

@ -140,10 +140,6 @@ class Commande extends CommonOrder
*/ */
var $lines = array(); var $lines = array();
// Pour board
var $nbtodo;
var $nbtodolate;
// Multicurrency // Multicurrency
var $fk_multicurrency; var $fk_multicurrency;
var $multicurrency_code; var $multicurrency_code;
@ -3436,6 +3432,22 @@ class Commande extends CommonOrder
return max($this->date_commande, $this->date_livraison) < ($now - $conf->commande->client->warning_delay); return max($this->date_commande, $this->date_livraison) < ($now - $conf->commande->client->warning_delay);
} }
/**
* Show the customer delayed info
*
* @return string Show delayed information
*/
public function showDelay()
{
global $conf, $langs;
if (empty($this->date_livraison)) $text=$langs->trans("OrderDate").' '.dol_print_date($this->date_commande, 'day');
else $text=$text=$langs->trans("DeliveryDate").' '.dol_print_date($this->date_livraison, 'day');
$text.=' '.($conf->commande->client->warning_delay>0?'+':'-').' '.round(abs($conf->commande->client->warning_delay)/3600/24,1).' '.$langs->trans("days").' < '.$langs->trans("Today");
return $text;
}
} }

View File

@ -554,7 +554,7 @@ if ($resql)
// Warning late icon // Warning late icon
print '<td class="nobordernopadding nowrap">'; print '<td class="nobordernopadding nowrap">';
if ($generic_commande->hasDelay()) { if ($generic_commande->hasDelay()) {
print img_picto($langs->trans("Late"), "warning"); print img_picto($langs->trans("Late").' : '.$generic_commande->showDelay(), "warning");
} }
if(!empty($objp->note_private)) if(!empty($objp->note_private))
{ {

View File

@ -5,7 +5,7 @@
* Copyright (C) 2004 Christophe Combelles <ccomb@free.fr> * Copyright (C) 2004 Christophe Combelles <ccomb@free.fr>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2010-2011 Juanjo Menent <jmenent@@2byte.es> * Copyright (C) 2010-2011 Juanjo Menent <jmenent@@2byte.es>
* Copyright (C) 2012-2014 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2012-2016 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2011-2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> * Copyright (C) 2011-2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
* Copyright (C) 2015 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2015 Florian Henry <florian.henry@open-concept.pro>
* *
@ -209,29 +209,13 @@ if ($id > 0 || ! empty($ref))
$result=$object->fetch($id, $ref); $result=$object->fetch($id, $ref);
// Chargement des categories bancaires dans $options // Load bank groups
$nbcategories=0; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php';
$bankcateg = new BankCateg($db);
$options = array();
$sql = "SELECT rowid, label"; foreach ($bankcateg->fetchAll() as $bankcategory) {
$sql.= " FROM ".MAIN_DB_PREFIX."bank_categ"; $options[$bankcategory->id] = $bankcategory->label;
$sql.= " WHERE entity = ".$conf->entity;
$sql.= " ORDER BY label";
$result = $db->query($sql);
if ($result)
{
$var=True;
$num = $db->num_rows($result);
$i = 0;
$options = '<option value="0" selected>&nbsp;</option>';
while ($i < $num)
{
$obj = $db->fetch_object($result);
$options.= '<option value="'.$obj->rowid.'">'.$obj->label.'</option>'."\n";
$nbcategories++;
$i++;
}
$db->free($result);
} }
// Definition de sql_rech et param // Definition de sql_rech et param
@ -397,15 +381,11 @@ if ($id > 0 || ! empty($ref))
} }
} }
if ($object->type != 2 && $object->rappro) if ($object->canBeConciliated() > 0) {
{
// If not cash account and can be reconciliate // If not cash account and can be reconciliate
if ($user->rights->banque->consolidate) if ($user->rights->banque->consolidate) {
{ print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/bank/rappro.php?account='.$object->id.($vline ? '&amp;vline='.$vline : '').'">'.$langs->trans("Conciliate").'</a>';
print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/bank/rappro.php?account='.$object->id.($vline?'&amp;vline='.$vline:'').'">'.$langs->trans("Conciliate").'</a>'; } else {
}
else
{
print '<a class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$langs->trans("Conciliate").'</a>'; print '<a class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$langs->trans("Conciliate").'</a>';
} }
} }
@ -494,9 +474,9 @@ if ($id > 0 || ! empty($ref))
print '<input name="num_chq" class="flat" type="text" size="4" value="'.GETPOST("num_chq").'"></td>'; print '<input name="num_chq" class="flat" type="text" size="4" value="'.GETPOST("num_chq").'"></td>';
print '<td colspan="2">'; print '<td colspan="2">';
print '<input name="label" class="flat" type="text" size="24" value="'.GETPOST("label").'">'; print '<input name="label" class="flat" type="text" size="24" value="'.GETPOST("label").'">';
if ($nbcategories) if ($options) {
{ print '<br>'.$langs->trans("Rubrique").': ';
print '<br>'.$langs->trans("Rubrique").': <select class="flat" name="cat1">'.$options.'</select>'; print Form::selectarray('cat1', $options, GETPOST('cat1'), 1);
} }
print '</td>'; print '</td>';
print '<td align=right><input name="debit" class="flat" type="text" size="4" value="'.GETPOST("debit").'"></td>'; print '<td align=right><input name="debit" class="flat" type="text" size="4" value="'.GETPOST("debit").'"></td>';
@ -529,8 +509,11 @@ if ($id > 0 || ! empty($ref))
print '<td align="right">'.$langs->trans("Credit").'</td>'; print '<td align="right">'.$langs->trans("Credit").'</td>';
print '<td align="right" width="80">'.$langs->trans("BankBalance").'</td>'; print '<td align="right" width="80">'.$langs->trans("BankBalance").'</td>';
print '<td align="center" width="60">'; print '<td align="center" width="60">';
if ($object->type != 2 && $object->rappro) print $langs->trans("AccountStatementShort"); if ($object->canBeConciliated() > 0) {
else print '&nbsp;'; print $langs->trans("AccountStatementShort");
} else {
print '&nbsp;';
}
print '</td></tr>'; print '</td></tr>';
print '<form action="'.$_SERVER["PHP_SELF"].'?'.$param.'" name="search" method="POST">'; print '<form action="'.$_SERVER["PHP_SELF"].'?'.$param.'" name="search" method="POST">';

View File

@ -292,7 +292,7 @@ if ($action == 'create')
// Currency // Currency
print '<tr><td class="fieldrequired">'.$langs->trans("Currency").'</td>'; print '<tr><td class="fieldrequired">'.$langs->trans("Currency").'</td>';
print '<td colspan="3">'; print '<td colspan="3">';
$selectedcode=$account->account_currency_code; $selectedcode=$account->currency_code;
if (! $selectedcode) $selectedcode=$conf->currency; if (! $selectedcode) $selectedcode=$conf->currency;
print $form->selectCurrency((isset($_POST["account_currency_code"])?$_POST["account_currency_code"]:$selectedcode), 'account_currency_code'); print $form->selectCurrency((isset($_POST["account_currency_code"])?$_POST["account_currency_code"]:$selectedcode), 'account_currency_code');
//print $langs->trans("Currency".$conf->currency); //print $langs->trans("Currency".$conf->currency);
@ -369,10 +369,10 @@ if ($action == 'create')
print '</td></tr>'; print '</td></tr>';
print '<tr><td>'.$langs->trans("BalanceMinimalAllowed").'</td>'; print '<tr><td>'.$langs->trans("BalanceMinimalAllowed").'</td>';
print '<td colspan="3"><input size="12" type="text" class="flat" name="account_min_allowed" value="'.($_POST["account_min_allowed"]?$_POST["account_min_allowed"]:$account->account_min_allowed).'"></td></tr>'; print '<td colspan="3"><input size="12" type="text" class="flat" name="account_min_allowed" value="'.($_POST["account_min_allowed"]?$_POST["account_min_allowed"]:$account->min_allowed).'"></td></tr>';
print '<tr><td>'.$langs->trans("BalanceMinimalDesired").'</td>'; print '<tr><td>'.$langs->trans("BalanceMinimalDesired").'</td>';
print '<td colspan="3"><input size="12" type="text" class="flat" name="account_min_desired" value="'.($_POST["account_min_desired"]?$_POST["account_min_desired"]:$account->account_min_desired).'"></td></tr>'; print '<td colspan="3"><input size="12" type="text" class="flat" name="account_min_desired" value="'.($_POST["account_min_desired"]?$_POST["account_min_desired"]:$account->min_desired).'"></td></tr>';
print '</table>'; print '</table>';
print '<br>'; print '<br>';
@ -583,7 +583,7 @@ else
// Currency // Currency
print '<tr><td>'.$langs->trans("Currency").'</td>'; print '<tr><td>'.$langs->trans("Currency").'</td>';
print '<td colspan="3">'; print '<td colspan="3">';
$selectedcode=$account->account_currency_code; $selectedcode=$account->currency_code;
if (! $selectedcode) $selectedcode=$conf->currency; if (! $selectedcode) $selectedcode=$conf->currency;
print $langs->trans("Currency".$selectedcode); print $langs->trans("Currency".$selectedcode);
print '</td></tr>'; print '</td></tr>';
@ -851,7 +851,7 @@ else
print '<input type="hidden" value="'.$account->currency_code.'">'; print '<input type="hidden" value="'.$account->currency_code.'">';
print '</td>'; print '</td>';
print '<td colspan="3">'; print '<td colspan="3">';
$selectedcode=$account->account_currency_code; $selectedcode=$account->currency_code;
if (! $selectedcode) $selectedcode=$conf->currency; if (! $selectedcode) $selectedcode=$conf->currency;
print $form->selectCurrency((isset($_POST["account_currency_code"])?$_POST["account_currency_code"]:$selectedcode), 'account_currency_code'); print $form->selectCurrency((isset($_POST["account_currency_code"])?$_POST["account_currency_code"]:$selectedcode), 'account_currency_code');
//print $langs->trans("Currency".$conf->currency); //print $langs->trans("Currency".$conf->currency);

View File

@ -4,6 +4,7 @@
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2013 Charles-Fr BENKE <charles.fr@benke.fr> * Copyright (C) 2013 Charles-Fr BENKE <charles.fr@benke.fr>
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
* Copyright (C) 2016 Marcos García <marcosgdf@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -27,6 +28,7 @@
require('../../main.inc.php'); require('../../main.inc.php');
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php';
$langs->load("banks"); $langs->load("banks");
$langs->load("categories"); $langs->load("categories");
@ -36,70 +38,39 @@ $action=GETPOST('action');
if (!$user->rights->banque->configurer) if (!$user->rights->banque->configurer)
accessforbidden(); accessforbidden();
$bankcateg = new BankCateg($db);
$categid = GETPOST('categid');
$label = GETPOST("label");
/* /*
* Add category * Add category
*/ */
if (GETPOST('add')) if (GETPOST('add'))
{ {
if (GETPOST("label")) if ($label) {
{ $bankcateg = new BankCateg($db);
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_categ ("; $bankcateg->label = GETPOST('label');
$sql.= "label"; $bankcateg->create($user);
$sql.= ", entity";
$sql.= ") VALUES (";
$sql.= "'".$db->escape(GETPOST("label"))."'";
$sql.= ", ".$conf->entity;
$sql.= ")";
$result = $db->query($sql);
if (!$result)
{
dol_print_error($db);
}
} }
} }
/* if ($categid) {
* Update category $bankcateg = new BankCateg($db);
*/
if (GETPOST('update'))
{
if (GETPOST("label"))
{
$sql = "UPDATE ".MAIN_DB_PREFIX."bank_categ ";
$sql.= "set label='".$db->escape(GETPOST("label"))."'";
$sql.= " WHERE rowid = '".GETPOST('categid')."'";
$sql.= " AND entity = ".$conf->entity;
$result = $db->query($sql); if ($bankcateg->fetch($categid) > 0) {
if (!$result)
{ //Update category
dol_print_error($db); if (GETPOST('update') && $label) {
$bankcateg->label = $label;
$bankcateg->update($user);
}
//Delete category
if ($action == 'delete') {
$bankcateg->delete($user);
} }
} }
} }
/*
* Action suppression catégorie
*/
if ($action == 'delete')
{
if (GETPOST('categid'))
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_categ";
$sql.= " WHERE rowid = '".GETPOST('categid')."'";
$sql.= " AND entity = ".$conf->entity;
$result = $db->query($sql);
if (!$result)
{
dol_print_error($db);
}
}
}
/* /*
* View * View
@ -174,5 +145,3 @@ if ($action != 'edit')
print '</table></form>'; print '</table></form>';
llxFooter(); llxFooter();
$db->close();

View File

@ -166,6 +166,13 @@ class Account extends CommonObject
*/ */
public $currency_code; public $currency_code;
/**
* Currency code
* @var string
* @deprecated Use currency_code instead
*/
public $account_currency_code;
/** /**
* Authorized minimum balance * Authorized minimum balance
* @var float * @var float
@ -358,7 +365,7 @@ class Account extends CommonObject
* @param string $banque Bank of cheque writer * @param string $banque Bank of cheque writer
* @return int Rowid of added entry, <0 if KO * @return int Rowid of added entry, <0 if KO
*/ */
function addline($date, $oper, $label, $amount, $num_chq, $categorie, $user, $emetteur='',$banque='') function addline($date, $oper, $label, $amount, $num_chq, $categorie, User $user, $emetteur='',$banque='')
{ {
// Deprecatîon warning // Deprecatîon warning
if (is_numeric($oper)) { if (is_numeric($oper)) {
@ -409,63 +416,55 @@ class Account extends CommonObject
$datev = $date; $datev = $date;
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank ("; $accline = new AccountLine($this->db);
$sql.= "datec"; $accline->datec = $now;
$sql.= ", dateo"; $accline->dateo = $date;
$sql.= ", datev"; $accline->datev = $datev;
$sql.= ", label"; $accline->label = $label;
$sql.= ", amount"; $accline->amount = $amount;
$sql.= ", fk_user_author"; $accline->fk_user_author = $user->id;
$sql.= ", num_chq"; $accline->fk_account = $this->rowid;
$sql.= ", fk_account"; $accline->fk_type = $oper;
$sql.= ", fk_type";
$sql.= ",emetteur,banque";
$sql.= ") VALUES (";
$sql.= "'".$this->db->idate($now)."'";
$sql.= ", '".$this->db->idate($date)."'";
$sql.= ", '".$this->db->idate($datev)."'";
$sql.= ", '".$this->db->escape($label)."'";
$sql.= ", ".price2num($amount);
$sql.= ", '".$user->id."'";
$sql.= ", ".($num_chq?"'".$num_chq."'":"null");
$sql.= ", '".$this->rowid."'";
$sql.= ", '".$oper."'";
$sql.= ", ".($emetteur?"'".$this->db->escape($emetteur)."'":"null");
$sql.= ", ".($banque?"'".$this->db->escape($banque)."'":"null");
$sql.= ")";
dol_syslog(get_class($this)."::addline", LOG_DEBUG); if ($num_chq) {
if ($this->db->query($sql)) $accline->num_chq = $num_chq;
{ }
$rowid = $this->db->last_insert_id(MAIN_DB_PREFIX."bank");
if ($categorie)
{
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_class (";
$sql.= "lineid";
$sql.= ", fk_categ";
$sql.= ") VALUES (";
$sql.= "'".$rowid."'";
$sql.= ", '".$categorie."'";
$sql.= ")";
$result = $this->db->query($sql); if ($emetteur) {
if (! $result) $accline->emetteur = $emetteur;
{ }
$this->db->rollback();
$this->error=$this->db->error(); if ($banque) {
return -3; $accline->bank_chq = $banque;
} }
}
$this->db->commit(); if ($accline->insert() > 0) {
return $rowid;
} if ($categorie) {
else $sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_class (";
{ $sql .= "lineid";
$this->error=$this->db->lasterror(); $sql .= ", fk_categ";
$this->db->rollback(); $sql .= ") VALUES (";
return -2; $sql .= "'".$accline->id."'";
} $sql .= ", '".$categorie."'";
} $sql .= ")";
$result = $this->db->query($sql);
if (!$result) {
$this->db->rollback();
$this->error = $this->db->error();
return -3;
}
}
$this->db->commit();
return $accline->id;
} else {
$this->error = $this->db->lasterror();
$this->db->rollback();
return -2;
}
}
/** /**
* Create bank account into database * Create bank account into database
@ -473,7 +472,7 @@ class Account extends CommonObject
* @param User $user Object user making creation * @param User $user Object user making creation
* @return int < 0 if KO, > 0 if OK * @return int < 0 if KO, > 0 if OK
*/ */
function create($user='') function create(User $user = null)
{ {
global $langs,$conf, $hookmanager; global $langs,$conf, $hookmanager;
@ -567,32 +566,18 @@ class Account extends CommonObject
$result=$this->update(); $result=$this->update();
if ($result > 0) if ($result > 0)
{ {
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank ("; $accline = new AccountLine($this->db);
$sql.= "datec"; $accline->datec = $this->db->idate($now);
$sql.= ", label"; $accline->label = '('.$langs->trans("InitialBankBalance").')';
$sql.= ", amount"; $accline->amount = price2num($this->solde);
$sql.= ", fk_account"; $accline->fk_account = $this->id;
$sql.= ", datev"; $accline->datev = $this->db->idate($this->date_solde);
$sql.= ", dateo"; $accline->dateo = $this->db->idate($this->date_solde);
$sql.= ", fk_type"; $accline->fk_type = 'SOLD';
$sql.= ", rappro";
$sql.= ") VALUES (";
$sql.= "'".$this->db->idate($now)."'";
$sql.= ", '(".$langs->trans("InitialBankBalance").")'";
$sql.= ", ".price2num($this->solde);
$sql.= ", '".$this->id."'";
$sql.= ", '".$this->db->idate($this->date_solde)."'";
$sql.= ", '".$this->db->idate($this->date_solde)."'";
$sql.= ", 'SOLD'";
$sql.= ", 0"; // Not conciliated by default
$sql.= ")";
$resql=$this->db->query($sql); if ($accline->insert() < 0) {
if (! $resql) return -3;
{ }
$this->error=$this->db->lasterror();
return -3;
}
// Actions on extra fields (by external module or standard code) // Actions on extra fields (by external module or standard code)
$hookmanager->initHooks(array('bankdao')); $hookmanager->initHooks(array('bankdao'));
@ -633,7 +618,7 @@ class Account extends CommonObject
* @param User $user Object user making action * @param User $user Object user making action
* @return int <0 si ko, >0 si ok * @return int <0 si ko, >0 si ok
*/ */
function update($user='') function update(User $user = null)
{ {
global $langs,$conf, $hookmanager; global $langs,$conf, $hookmanager;
@ -731,7 +716,7 @@ class Account extends CommonObject
* @param User $user Object user making update * @param User $user Object user making update
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
function update_bban($user='') function update_bban(User $user = null)
{ {
global $conf,$langs; global $conf,$langs;
@ -823,7 +808,7 @@ class Account extends CommonObject
$obj = $this->db->fetch_object($result); $obj = $this->db->fetch_object($result);
$this->id = $obj->rowid; $this->id = $obj->rowid;
$this->rowid = $obj->rowid; // deprecated $this->rowid = $obj->rowid;
$this->ref = $obj->ref; $this->ref = $obj->ref;
$this->label = $obj->label; $this->label = $obj->label;
$this->type = $obj->courant; $this->type = $obj->courant;
@ -889,7 +874,7 @@ class Account extends CommonObject
* @param User $user User deleting * @param User $user User deleting
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
function delete($user='') function delete(User $user = null)
{ {
global $conf; global $conf;
@ -939,42 +924,32 @@ class Account extends CommonObject
* @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto * @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 Libelle du statut * @return string Libelle du statut
*/ */
function LibStatut($statut,$mode=0) function LibStatut($statut, $mode = 0)
{ {
global $langs; global $langs;
$langs->load('banks'); $langs->load('banks');
if ($mode == 0) if ($statut == self::STATUS_OPEN) {
{ $label = $langs->trans("StatusAccountOpened");
if ($statut==0) return $langs->trans("StatusAccountOpened"); $picto = img_picto($label, 'statut4');
if ($statut==1) return $langs->trans("StatusAccountClosed"); } else {
} $label = $langs->trans("StatusAccountClosed");
if ($mode == 1) $picto = img_picto($label, 'statut5');
{ }
if ($statut==0) return $langs->trans("StatusAccountOpened");
if ($statut==1) return $langs->trans("StatusAccountClosed"); if ($mode == 2) {
} return $picto.' '.$label;
if ($mode == 2) } elseif ($mode == 3) {
{ return $picto;
if ($statut==0) return img_picto($langs->trans("StatusAccountOpened"),'statut4').' '.$langs->trans("StatusAccountOpened"); } elseif ($mode == 4) {
if ($statut==1) return img_picto($langs->trans("StatusAccountClosed"),'statut5').' '.$langs->trans("StatusAccountClosed"); return $picto.' '.$label;
} } elseif ($mode == 5) {
if ($mode == 3) return $label.' '.$picto;
{ }
if ($statut==0) return img_picto($langs->trans("StatusAccountOpened"),'statut4');
if ($statut==1) return img_picto($langs->trans("StatusAccountClosed"),'statut5'); //There is no short mode for this label
} return $label;
if ($mode == 4) }
{
if ($statut==0) return img_picto($langs->trans("StatusAccountOpened"),'statut4').' '.$langs->trans("StatusAccountOpened");
if ($statut==1) return img_picto($langs->trans("StatusAccountClosed"),'statut5').' '.$langs->trans("StatusAccountClosed");
}
if ($mode == 5)
{
if ($statut==0) return $langs->trans("StatusAccountOpened").' '.img_picto($langs->trans("StatusAccountOpened"),'statut4');
if ($statut==1) return $langs->trans("StatusAccountClosed").' '.img_picto($langs->trans("StatusAccountClosed"),'statut5');
}
}
/** /**
@ -1045,7 +1020,7 @@ class Account extends CommonObject
* @param int $filteraccountid To get info for a particular account id * @param int $filteraccountid To get info for a particular account id
* @return WorkboardResponse|int <0 if KO, WorkboardResponse if OK * @return WorkboardResponse|int <0 if KO, WorkboardResponse if OK
*/ */
function load_board($user,$filteraccountid=0) function load_board(User $user, $filteraccountid = 0)
{ {
global $conf, $langs; global $conf, $langs;
@ -1319,13 +1294,14 @@ class AccountLine extends CommonObject
var $fk_account; // Id of bank account var $fk_account; // Id of bank account
var $bank_account_label; // Label of bank account var $bank_account_label; // Label of bank account
public $emetteur;
/** /**
* Constructor * Constructor
* *
* @param DoliDB $db Database handler * @param DoliDB $db Database handler
*/ */
function __construct($db) function __construct(DoliDB $db)
{ {
$this->db = $db; $this->db = $db;
} }
@ -1387,7 +1363,7 @@ class AccountLine extends CommonObject
$this->num_releve = $obj->num_releve; $this->num_releve = $obj->num_releve;
$this->num_chq = $obj->num_chq; $this->num_chq = $obj->num_chq;
$this->bank_chq = $obj->bank_chq; $this->bank_chq = $obj->banque;
$this->fk_bordereau = $obj->fk_bordereau; $this->fk_bordereau = $obj->fk_bordereau;
$this->fk_account = $obj->fk_account; $this->fk_account = $obj->fk_account;
@ -1405,6 +1381,52 @@ class AccountLine extends CommonObject
} }
} }
/**
* Inserts a transaction to a bank account
*
* @return int <0 if KO, rowid of the line if OK
*/
public function insert()
{
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank (";
$sql .= "datec";
$sql .= ", dateo";
$sql .= ", datev";
$sql .= ", label";
$sql .= ", amount";
$sql .= ", fk_user_author";
$sql .= ", num_chq";
$sql .= ", fk_account";
$sql .= ", fk_type";
$sql .= ",emetteur,banque";
$sql .= ", rappro";
$sql .= ") VALUES (";
$sql .= "'".$this->db->idate($this->datec)."'";
$sql .= ", '".$this->db->idate($this->dateo)."'";
$sql .= ", '".$this->db->idate($this->datev)."'";
$sql .= ", '".$this->db->escape($this->label)."'";
$sql .= ", ".price2num($this->amount);
$sql .= ", '".$this->fk_user_author."'";
$sql .= ", ".($this->num_chq ? "'".$this->num_chq."'" : "null");
$sql .= ", '".$this->fk_account."'";
$sql .= ", '".$this->db->escape($this->fk_type)."'";
$sql .= ", ".($this->emetteur ? "'".$this->db->escape($this->emetteur)."'" : "null");
$sql .= ", ".($this->bank_chq ? "'".$this->db->escape($this->bank_chq)."'" : "null");
$sql .= ", ".(int) $this->rappro;
$sql .= ")";
dol_syslog(get_class($this)."::insert", LOG_DEBUG);
$resql = $this->db->query($sql);
if (!$resql) {
$this->error = $this->db->lasterror();
return -1;
}
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'bank');
return $this->id;
}
/** /**
* Delete transaction bank line record * Delete transaction bank line record
@ -1412,7 +1434,7 @@ class AccountLine extends CommonObject
* @param User $user User object that delete * @param User $user User object that delete
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
function delete($user=null) function delete(User $user = null)
{ {
$nbko=0; $nbko=0;
@ -1461,7 +1483,7 @@ class AccountLine extends CommonObject
* @param User $user User object that delete * @param User $user User object that delete
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
function delete_urls($user=null) function delete_urls(User $user = null)
{ {
$nbko=0; $nbko=0;
@ -1499,7 +1521,7 @@ class AccountLine extends CommonObject
* @param int $notrigger 0=Disable all triggers * @param int $notrigger 0=Disable all triggers
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
function update($user,$notrigger=0) function update(User $user, $notrigger = 0)
{ {
$this->db->begin(); $this->db->begin();
@ -1532,7 +1554,7 @@ class AccountLine extends CommonObject
* @param int $cat Category id * @param int $cat Category id
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
function update_conciliation($user,$cat) function update_conciliation(User $user, $cat)
{ {
$this->db->begin(); $this->db->begin();

View File

@ -1,6 +1,7 @@
<?php <?php
/* Copyright (C) 2008 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2016 Marcos García <marcosgdf@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -17,346 +18,294 @@
*/ */
/** /**
* \file compta/bank/class/bankcateg.class.php * \file compta/bank/class/bankcateg.class.php
* \ingroup banque * \ingroup bank
* \brief This file is CRUD class file (Create/Read/Update/Delete) for bank categories * \brief This file is CRUD class file (Create/Read/Update/Delete) for bank categories
* \author Laurent Destailleur
*/ */
// Put here all includes required by your class file
//require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
//require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
//require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
/** /**
* Class to manage bank categories * Class to manage bank categories
*/ */
class BankCateg // extends CommonObject class BankCateg // extends CommonObject
{ {
//public $element='bank_categ'; //!< Id that identify managed objects //public $element='bank_categ'; //!< Id that identify managed objects
//public $table_element='bank_categ'; //!< Name of table without prefix where object is stored //public $table_element='bank_categ'; //!< Name of table without prefix where object is stored
var $id; public $id;
var $label; public $label;
/** /**
* Constructor * Constructor
* *
* @param DoliDB $db Database handler * @param DoliDB $db Database handler
*/ */
function __construct($db) public function __construct(DoliDB $db)
{ {
$this->db = $db; $this->db = $db;
return 1; }
}
/** /**
* Create in database * Create in database
* *
* @param User $user User that create * @param User $user User that create
* @param int $notrigger 0=launch triggers after, 1=disable triggers * @param int $notrigger 0=launch triggers after, 1=disable triggers
* @return int <0 if KO, Id of created object if OK * @return int <0 if KO, Id of created object if OK
*/ */
function create($user, $notrigger=0) public function create(User $user, $notrigger = 0)
{ {
global $conf, $langs; global $conf;
$error=0;
// Clean parameters $error = 0;
if (isset($this->label)) $this->label=trim($this->label);
// Check parameters // Clean parameters
// Put here code to add control on parameters values if (isset($this->label)) {
$this->label = trim($this->label);
}
// Insert request // Insert request
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_categ ("; $sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_categ (";
$sql.= "label"; $sql .= "label";
$sql.= ", entity"; $sql .= ", entity";
$sql.= ") VALUES ("; $sql .= ") VALUES (";
$sql.= " ".(! isset($this->label)?'NULL':"'".$this->db->escape($this->label)."'").""; $sql .= " ".(!isset($this->label) ? 'NULL' : "'".$this->db->escape($this->label)."'")."";
$sql.= ", ".$conf->entity; $sql .= ", ".$conf->entity;
$sql.= ")"; $sql .= ")";
$this->db->begin(); $this->db->begin();
dol_syslog(get_class($this)."::create", LOG_DEBUG); dol_syslog(get_class($this)."::create", LOG_DEBUG);
$resql=$this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } if (!$resql) {
$error++;
$this->errors[] = "Error ".$this->db->lasterror();
}
if (! $error) if (!$error) {
{ $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."bank_categ");
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."bank_categ"); }
if (! $notrigger) // Commit or rollback
{ if ($error) {
// Uncomment this and change MYOBJECT to your own tag if you foreach ($this->errors as $errmsg) {
// want this action call a trigger. dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR);
$this->error .= ($this->error ? ', '.$errmsg : $errmsg);
//// Call triggers }
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; $this->db->rollback();
//$interface=new Interfaces($this->db); return -1 * $error;
//$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); } else {
//if ($result < 0) { $error++; $this->errors=$interface->errors; } $this->db->commit();
//// End call triggers return $this->id;
} }
} }
// Commit or rollback
if ($error)
{
foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback();
return -1*$error;
}
else
{
$this->db->commit();
return $this->id;
}
}
/** /**
* Load object in memory from database * Load object in memory from database
* *
* @param int $id Id object * @param int $id Id object
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
function fetch($id) public function fetch($id)
{ {
global $langs,$conf; global $conf;
$sql = "SELECT"; $sql = "SELECT";
$sql.= " t.rowid,"; $sql .= " t.rowid,";
$sql.= " t.label"; $sql .= " t.label";
$sql.= " FROM ".MAIN_DB_PREFIX."bank_categ as t"; $sql .= " FROM ".MAIN_DB_PREFIX."bank_categ as t";
$sql.= " WHERE t.rowid = ".$id; $sql .= " WHERE t.rowid = ".$id;
$sql.= " AND t.entity = ".$conf->entity; $sql .= " AND t.entity = ".$conf->entity;
dol_syslog(get_class($this)."::fetch", LOG_DEBUG); dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
$resql=$this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql) {
{ if ($this->db->num_rows($resql)) {
if ($this->db->num_rows($resql)) $obj = $this->db->fetch_object($resql);
{
$obj = $this->db->fetch_object($resql);
$this->id = $obj->rowid; $this->id = $obj->rowid;
$this->label = $obj->label; $this->label = $obj->label;
} }
$this->db->free($resql); $this->db->free($resql);
return 1; return 1;
} } else {
else $this->error = "Error ".$this->db->lasterror();
{ return -1;
$this->error="Error ".$this->db->lasterror(); }
return -1; }
}
}
/**
* Update database
*
* @param User $user User that modify
* @param int $notrigger 0=launch triggers after, 1=disable triggers
* @return int <0 if KO, >0 if OK
*/
public function update(User $user = null, $notrigger = 0)
{
global $conf;
$error = 0;
/** // Clean parameters
* Update database if (isset($this->label)) {
* $this->label = trim($this->label);
* @param User $user User that modify }
* @param int $notrigger 0=launch triggers after, 1=disable triggers
* @return int <0 if KO, >0 if OK
*/
function update($user=null, $notrigger=0)
{
global $conf, $langs;
$error=0;
// Clean parameters // Check parameters
if (isset($this->label)) $this->label=trim($this->label); // Put here code to add control on parameters values
// Check parameters // Update request
// Put here code to add control on parameters values $sql = "UPDATE ".MAIN_DB_PREFIX."bank_categ SET";
$sql .= " label=".(isset($this->label) ? "'".$this->db->escape($this->label)."'" : "null")."";
$sql .= " WHERE rowid=".$this->id;
$sql .= " AND entity = ".$conf->entity;
// Update request $this->db->begin();
$sql = "UPDATE ".MAIN_DB_PREFIX."bank_categ SET";
$sql.= " label=".(isset($this->label)?"'".$this->db->escape($this->label)."'":"null")."";
$sql.= " WHERE rowid=".$this->id;
$sql.= " AND entity = ".$conf->entity;
$this->db->begin(); dol_syslog(get_class($this)."::update", LOG_DEBUG);
$resql = $this->db->query($sql);
if (!$resql) {
$error++;
$this->errors[] = "Error ".$this->db->lasterror();
}
dol_syslog(get_class($this)."::update", LOG_DEBUG); // Commit or rollback
$resql = $this->db->query($sql); if ($error) {
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } foreach ($this->errors as $errmsg) {
dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR);
$this->error .= ($this->error ? ', '.$errmsg : $errmsg);
}
$this->db->rollback();
return -1 * $error;
} else {
$this->db->commit();
return 1;
}
}
if (! $error) /**
{ * Delete object in database
if (! $notrigger) *
{ * @param User $user User that delete
// Uncomment this and change MYOBJECT to your own tag if you * @param int $notrigger 0=launch triggers after, 1=disable triggers
// want this action call a trigger. * @return int <0 if KO, >0 if OK
*/
public function delete(User $user, $notrigger = 0)
{
global $conf;
$error = 0;
//// Call triggers $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_categ";
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; $sql .= " WHERE rowid=".$this->id;
//$interface=new Interfaces($this->db); $sql .= " AND entity = ".$conf->entity;
//$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf);
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
//// End call triggers
}
}
// Commit or rollback $this->db->begin();
if ($error)
{
foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback();
return -1*$error;
}
else
{
$this->db->commit();
return 1;
}
}
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
$resql = $this->db->query($sql);
if (!$resql) {
$error++;
$this->errors[] = "Error ".$this->db->lasterror();
}
/** // Commit or rollback
* Delete object in database if ($error) {
* foreach ($this->errors as $errmsg) {
* @param User $user User that delete dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
* @param int $notrigger 0=launch triggers after, 1=disable triggers $this->error .= ($this->error ? ', '.$errmsg : $errmsg);
* @return int <0 if KO, >0 if OK }
*/ $this->db->rollback();
function delete($user, $notrigger=0) return -1 * $error;
{ } else {
global $conf, $langs; $this->db->commit();
$error=0; return 1;
}
}
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_categ"; /**
$sql.= " WHERE rowid=".$this->id; * Load an object from its id and create a new one in database
$sql.= " AND entity = ".$conf->entity; *
* @param int $fromid Id of object to clone
* @return int New id of clone
*/
public function createFromClone($fromid)
{
global $user;
$this->db->begin(); $error = 0;
dol_syslog(get_class($this)."::delete", LOG_DEBUG); $object = new BankCateg($this->db);
$resql = $this->db->query($sql);
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
if (! $error)
{
if (! $notrigger)
{
// Uncomment this and change MYOBJECT to your own tag if you
// want this action call a trigger.
//// Call triggers
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
//$interface=new Interfaces($this->db);
//$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf);
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
//// End call triggers
}
}
// Commit or rollback
if ($error)
{
foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback();
return -1*$error;
}
else
{
$this->db->commit();
return 1;
}
}
/**
* Load an object from its id and create a new one in database
*
* @param int $fromid Id of object to clone
* @return int New id of clone
*/
function createFromClone($fromid)
{
global $user,$langs;
$error=0;
$object=new BankCateg($this->db);
$object->context['createfromclone'] = 'createfromclone'; $object->context['createfromclone'] = 'createfromclone';
$this->db->begin(); $this->db->begin();
// Load source object // Load source object
$object->fetch($fromid); $object->fetch($fromid);
$object->id=0; $object->id = 0;
$object->statut=0; $object->statut = 0;
// Clear fields // Create clone
// ... $result = $object->create($user);
// Create clone // Other options
$result=$object->create($user); if ($result < 0) {
$this->error = $object->error;
$error++;
}
// Other options unset($object->context['createfromclone']);
if ($result < 0)
{
$this->error=$object->error;
$error++;
}
if (! $error) // End
{ if (!$error) {
$this->db->commit();
return $object->id;
} else {
$this->db->rollback();
return -1;
}
}
/**
* Returns all bank categories
*
* @return BankCateg[]
*/
public function fetchAll()
{
global $conf;
$return = array();
} $sql = "SELECT rowid, label FROM ".MAIN_DB_PREFIX."bank_categ WHERE entity = ".$conf->entity." ORDER BY label";
$resql = $this->db->query($sql);
unset($object->context['createfromclone']); if ($resql) {
while ($obj = $this->db->fetch_object($resql)) {
$tmp = new BankCateg($this->db);
$tmp->id = $obj->rowid;
$tmp->label = $obj->label;
// End $return[] = $tmp;
if (! $error) }
{ }
$this->db->commit();
return $object->id;
}
else
{
$this->db->rollback();
return -1;
}
}
return $return;
}
/** /**
* Initialise an instance with random values. * Initialise an instance with random values.
* Used to build previews or test instances. * Used to build previews or test instances.
* id must be 0 if object instance is a specimen. * id must be 0 if object instance is a specimen.
* *
* @return void * @return void
*/ */
function initAsSpecimen() public function initAsSpecimen()
{ {
$this->id=0; $this->id = 0;
$this->label = '';
$this->label=''; }
}
} }

View File

@ -6,6 +6,7 @@
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> * Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
* Copyright (C) 2016 Marcos García <marcosgdf@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -205,24 +206,13 @@ $form = new Form($db);
llxHeader(); llxHeader();
// The list of categories is initialized // Load bank groups
$sql = "SELECT rowid, label"; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php';
$sql.= " FROM ".MAIN_DB_PREFIX."bank_categ"; $bankcateg = new BankCateg($db);
$sql.= " ORDER BY label"; $options = array();
$result = $db->query($sql);
if ($result) foreach ($bankcateg->fetchAll() as $bankcategory) {
{ $options[$bankcategory->id] = $bankcategory->label;
$var=True;
$num = $db->num_rows($result);
$i = 0;
$options = "<option value=\"0\" selected>&nbsp;</option>";
while ($i < $num)
{
$obj = $db->fetch_object($result);
$options .= "<option value=\"$obj->rowid\">$obj->label</option>\n";
$i++;
}
$db->free($result);
} }
$var=false; $var=false;
@ -620,7 +610,7 @@ print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td>'.$langs->trans("Rubriques").'</td><td colspan="2">'; print '<tr class="liste_titre"><td>'.$langs->trans("Rubriques").'</td><td colspan="2">';
if ($user->rights->banque->modifier) if ($user->rights->banque->modifier)
{ {
print '<select class="flat" name="cat1">'.$options.'</select>&nbsp;'; print Form::selectarray('cat1', $options, '', 1).' ';
print '<input type="submit" class="button" value="'.$langs->trans("Add").'"></td>'; print '<input type="submit" class="button" value="'.$langs->trans("Add").'"></td>';
} }
print '</tr>'; print '</tr>';

View File

@ -3,6 +3,7 @@
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
* Copyright (C) 2016 Marcos García <marcosgdf@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -111,28 +112,13 @@ if ($action == 'del')
} }
} }
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php';
$bankcateg = new BankCateg($db);
$options = array();
// Load bank groups foreach ($bankcateg->fetchAll() as $bankcategory) {
$sql = "SELECT rowid, label FROM ".MAIN_DB_PREFIX."bank_categ ORDER BY label"; $options[$bankcategory->id] = $bankcategory->label;
$resql = $db->query($sql);
$options="";
if ($resql)
{
$var=True;
$num = $db->num_rows($resql);
if ($num > 0) $options .= '<option value="0"'.(GETPOST('cat')?'':' selected').'>&nbsp;</option>';
$i = 0;
while ($i < $num)
{
$obj = $db->fetch_object($resql);
$options .= '<option value="'.$obj->rowid.'"'.(GETPOST('cat')==$obj->rowid?' selected':'').'>'.$obj->label.'</option>'."\n";
$i++;
}
$db->free($resql);
//print $options;
} }
else dol_print_error($db);
/* /*
* View * View
@ -236,10 +222,11 @@ if ($resql)
print '<strong>'.$langs->trans("InputReceiptNumber").'</strong>: '; print '<strong>'.$langs->trans("InputReceiptNumber").'</strong>: ';
print '<input class="flat" name="num_releve" type="text" value="'.(GETPOST('num_releve')?GETPOST('num_releve'):'').'" size="10">'; // The only default value is value we just entered print '<input class="flat" name="num_releve" type="text" value="'.(GETPOST('num_releve')?GETPOST('num_releve'):'').'" size="10">'; // The only default value is value we just entered
print '<br>'; print '<br>';
if ($options) if ($options) {
{ print $langs->trans("EventualyAddCategory").': ';
print $langs->trans("EventualyAddCategory").': <select class="flat" name="cat">'.$options.'</select><br>'; print Form::selectarray('cat', $options, GETPOST('cat'), 1);
} print '<br>';
}
print '<br>'.$langs->trans("ThenCheckLinesAndConciliate").' "'.$langs->trans("Conciliate").'"<br>'; print '<br>'.$langs->trans("ThenCheckLinesAndConciliate").' "'.$langs->trans("Conciliate").'"<br>';
print '<br>'; print '<br>';
@ -440,14 +427,6 @@ if ($resql)
print '<td align="center" class="nowrap">'; print '<td align="center" class="nowrap">';
print '<input class="flat" name="rowid['.$objp->rowid.']" type="checkbox" value="'.$objp->rowid.'" size="1"'.(! empty($_POST['rowid'][$objp->rowid])?' checked':'').'>'; print '<input class="flat" name="rowid['.$objp->rowid.']" type="checkbox" value="'.$objp->rowid.'" size="1"'.(! empty($_POST['rowid'][$objp->rowid])?' checked':'').'>';
// print '<input class="flat" name="num_releve" type="text" value="'.$objp->num_releve.'" size="8">';
// print ' &nbsp; ';
// print "<input class=\"button\" type=\"submit\" value=\"".$langs->trans("Conciliate")."\">";
// if ($options)
// {
// print "<br><select class=\"flat\" name=\"cat\">$options";
// print "</select>";
// }
print "</td>"; print "</td>";
} }
else else

View File

@ -143,16 +143,12 @@ if (empty($num))
dol_fiche_end(); dol_fiche_end();
print '<div class="tabsAction">'; print '<div class="tabsAction">';
if ($object->type != 2 && $object->rappro) if ($object->canBeConciliated() > 0) {
{
// If not cash account and can be reconciliate // If not cash account and can be reconciliate
if ($user->rights->banque->consolidate) if ($user->rights->banque->consolidate) {
{ print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/bank/rappro.php?account='.$object->id.($vline ? '&amp;vline='.$vline : '').'">'.$langs->trans("Conciliate").'</a>';
print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/bank/rappro.php?account='.$object->id.($vline?'&amp;vline='.$vline:'').'">'.$langs->trans("Conciliate").'</a>'; } else {
}
else
{
print '<a class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$langs->trans("Conciliate").'</a>'; print '<a class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$langs->trans("Conciliate").'</a>';
} }
} }

View File

@ -1027,7 +1027,7 @@ else
print_barre_liste($langs->trans("RepeatableInvoices"),$page,$_SERVER['PHP_SELF'],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecord,'title_accountancy.png',0,'','',$limit); print_barre_liste($langs->trans("RepeatableInvoices"),$page,$_SERVER['PHP_SELF'],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecord,'title_accountancy.png',0,'','',$limit);
print $langs->trans("ToCreateAPredefinedInvoice").'<br><br>'; print $langs->trans("ToCreateAPredefinedInvoice", $langs->transnoentitiesnoconv("ChangeIntoRepeatableInvoice")).'<br><br>';
$i = 0; $i = 0;
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';

View File

@ -61,6 +61,7 @@ $ref=GETPOST('ref','alpha');
$socid=GETPOST('socid','int'); $socid=GETPOST('socid','int');
$action=GETPOST('action','alpha'); $action=GETPOST('action','alpha');
$massaction=GETPOST('massaction','alpha'); $massaction=GETPOST('massaction','alpha');
$show_files=GETPOST('show_files','int');
$confirm=GETPOST('confirm','alpha'); $confirm=GETPOST('confirm','alpha');
$lineid=GETPOST('lineid','int'); $lineid=GETPOST('lineid','int');
$userid=GETPOST('userid','int'); $userid=GETPOST('userid','int');
@ -131,7 +132,8 @@ if (empty($user->socid)) $fieldstosearchall["f.note_private"]="NotePrivate";
*/ */
if (GETPOST('cancel')) { $action='list'; $massaction=''; } if (GETPOST('cancel')) { $action='list'; $massaction=''; }
if (! GETPOST('confirmmassaction')) { $massaction=''; }
$parameters=array('socid'=>$socid); $parameters=array('socid'=>$socid);
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks $reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
@ -533,8 +535,8 @@ if (empty($reshook))
$upload_dir = $diroutputpdf; $upload_dir = $diroutputpdf;
$file = $upload_dir . '/' . GETPOST('file'); $file = $upload_dir . '/' . GETPOST('file');
$ret=dol_delete_file($file); $ret=dol_delete_file($file);
if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('file')), null, 'mesgs');
else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), null, 'errors');
$action=''; $action='';
} }
@ -714,6 +716,7 @@ if ($resql)
if ($search_montant_ttc != '') $param.='&search_montant_ttc='.$search_montant_ttc; if ($search_montant_ttc != '') $param.='&search_montant_ttc='.$search_montant_ttc;
if ($search_status != '') $param.='&search_status='.$search_status; if ($search_status != '') $param.='&search_status='.$search_status;
if ($search_paymentmode > 0) $param.='search_paymentmode='.$search_paymentmode; if ($search_paymentmode > 0) $param.='search_paymentmode='.$search_paymentmode;
if ($show_files) $param.='&show_files=' .$show_files;
$param.=(! empty($option)?"&amp;option=".$option:""); $param.=(! empty($option)?"&amp;option=".$option:"");
$massactionbutton=$form->selectMassAction('', $massaction == 'presend' ? array() : array('presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"))); $massactionbutton=$form->selectMassAction('', $massaction == 'presend' ? array() : array('presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge")));
@ -1055,7 +1058,7 @@ if ($resql)
print "</form>\n"; print "</form>\n";
$db->free($resql); $db->free($resql);
if ($massaction == 'builddoc' || $action == 'remove_file') if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files)
{ {
/* /*
* Show list of available documents * Show list of available documents
@ -1067,10 +1070,16 @@ if ($resql)
$genallowed=$user->rights->facture->lire; $genallowed=$user->rights->facture->lire;
$delallowed=$user->rights->facture->lire; $delallowed=$user->rights->facture->lire;
print '<br>'; print '<br><a name="show_files"></a>';
// We disable multilang because we concat already existing pdf. $paramwithoutshowfiles=preg_replace('/show_files=1&?/','',$param);
$formfile->show_documents('unpaid','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$langs->trans("PDFMerge"),''); $title=$langs->trans("MassFilesArea").' <a href="'.$_SERVER["PHP_SELF"].'?'.$paramwithoutshowfiles.'">('.$langs->trans("Hide").')</a>';
}
$formfile->show_documents('massfilesarea','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'');
}
else
{
print '<br><a name="show_files"></a><a href="'.$_SERVER["PHP_SELF"].'?show_files=1'.$param.'#show_files">'.$langs->trans("ShowTempMassFilesArea").'</a>';
}
} }
else else
{ {

File diff suppressed because it is too large Load Diff

View File

@ -77,7 +77,7 @@ if ($_POST["action"] == 'add' && $_POST["cancel"] <> $langs->trans("Cancel"))
else else
{ {
$db->rollback(); $db->rollback();
$mesg='<div class="error">'.$localtax->error.'</div>'; setEventMessages($localtax->error, $localtax->errors, 'errors');
$_GET["action"]="create"; $_GET["action"]="create";
} }
} }
@ -112,18 +112,19 @@ if ($_GET["action"] == 'delete')
{ {
$localtax->error=$accountline->error; $localtax->error=$accountline->error;
$db->rollback(); $db->rollback();
$mesg='<div class="error">'.$localtax->error.'</div>'; setEventMessages($localtax->error, $localtax->errors, 'errors');
} }
} }
else else
{ {
$db->rollback(); $db->rollback();
$mesg='<div class="error">'.$localtax->error.'</div>'; setEventMessages($localtax->error, $localtax->errors, 'errors');
} }
} }
else else
{ {
$mesg='<div class="error">Error try do delete a line linked to a conciliated bank transaction</div>'; $mesg='Error try do delete a line linked to a conciliated bank transaction';
setEventMessages($mesg, null, 'errors');
} }
} }

View File

@ -65,11 +65,13 @@ if ($action == 'create')
$result=$bprev->create($conf->global->PRELEVEMENT_CODE_BANQUE, $conf->global->PRELEVEMENT_CODE_GUICHET); $result=$bprev->create($conf->global->PRELEVEMENT_CODE_BANQUE, $conf->global->PRELEVEMENT_CODE_GUICHET);
if ($result < 0) if ($result < 0)
{ {
$mesg='<div class="error">'.$bprev->error.'</div>'; setEventMessages($bprev->error , $bprev->errors, 'errors');
} }
if ($result == 0) if ($result == 0)
{ {
$mesg='<div class="error">'.$langs->trans("NoInvoiceCouldBeWithdrawed").'</div>'; $mesg='';
$mesg=$langs->trans("NoInvoiceCouldBeWithdrawed");
setEventMessages($mesg, null, 'errors');
foreach($bprev->invoice_in_error as $key => $val) foreach($bprev->invoice_in_error as $key => $val)
{ {
$mesg.=$val."<br>\n"; $mesg.=$val."<br>\n";

View File

@ -933,7 +933,6 @@ class FormMail extends Form
/** /**
* Set substit array from object * Set substit array from object
* *
* @param Object $object Object to use
* @param string $mode 'form' or 'emailing' * @param string $mode 'form' or 'emailing'
* @return void * @return void
*/ */

View File

@ -42,8 +42,10 @@ function contract_prepare_head(Contrat $object)
if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
{ {
$head[$h][0] = DOL_URL_ROOT.'/contrat/contact.php?id='.$object->id; $nbContact = count($object->liste_contact(-1,'internal')) + count($object->liste_contact(-1,'external'));
$head[$h][0] = DOL_URL_ROOT.'/contrat/contact.php?id='.$object->id;
$head[$h][1] = $langs->trans("ContactsAddresses"); $head[$h][1] = $langs->trans("ContactsAddresses");
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact'; $head[$h][2] = 'contact';
$h++; $h++;
} }

View File

@ -45,8 +45,10 @@ function fichinter_prepare_head($object)
if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
{ {
$head[$h][0] = DOL_URL_ROOT.'/fichinter/contact.php?id='.$object->id; $nbContact = count($object->liste_contact(-1,'internal')) + count($object->liste_contact(-1,'external'));
$head[$h][0] = DOL_URL_ROOT.'/fichinter/contact.php?id='.$object->id;
$head[$h][1] = $langs->trans('InterventionContact'); $head[$h][1] = $langs->trans('InterventionContact');
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact'; $head[$h][2] = 'contact';
$h++; $h++;
} }

View File

@ -45,8 +45,10 @@ function facturefourn_prepare_head($object)
if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
{ {
$head[$h][0] = DOL_URL_ROOT.'/fourn/facture/contact.php?facid='.$object->id; $nbContact = count($object->liste_contact(-1,'internal')) + count($object->liste_contact(-1,'external'));
$head[$h][0] = DOL_URL_ROOT.'/fourn/facture/contact.php?facid='.$object->id;
$head[$h][1] = $langs->trans('ContactsAddresses'); $head[$h][1] = $langs->trans('ContactsAddresses');
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact'; $head[$h][2] = 'contact';
$h++; $h++;
} }
@ -119,8 +121,10 @@ function ordersupplier_prepare_head($object)
if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
{ {
$head[$h][0] = DOL_URL_ROOT.'/fourn/commande/contact.php?id='.$object->id; $nbContact = count($object->liste_contact(-1,'internal')) + count($object->liste_contact(-1,'external'));
$head[$h][0] = DOL_URL_ROOT.'/fourn/commande/contact.php?id='.$object->id;
$head[$h][1] = $langs->trans('ContactsAddresses'); $head[$h][1] = $langs->trans('ContactsAddresses');
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact'; $head[$h][2] = 'contact';
$h++; $h++;
} }

View File

@ -630,14 +630,14 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename='
if ($level > $conf->global->SYSLOG_LEVEL) return; if ($level > $conf->global->SYSLOG_LEVEL) return;
// If adding log inside HTML page is required // If adding log inside HTML page is required
if (! empty($_REQUEST['logtohtml']) && ! empty($conf->global->MAIN_LOGTOHTML)) if (! empty($_REQUEST['logtohtml']) && (! empty($conf->global->MAIN_ENABLE_LOG_TO_HTML) || ! empty($conf->global->MAIN_LOGTOHTML))) // MAIN_LOGTOHTML kept for backward compatibility
{ {
$conf->logbuffer[] = dol_print_date(time(),"%Y-%m-%d %H:%M:%S")." ".$message; $conf->logbuffer[] = dol_print_date(time(),"%Y-%m-%d %H:%M:%S")." ".$message;
} }
//TODO: Remove this. MAIN_ENABLE_LOG_HTML should be deprecated and use a log handler dedicated to HTML output //TODO: Remove this. MAIN_ENABLE_LOG_INLINE_HTML should be deprecated and use a log handler dedicated to HTML output
// If enable html log tag enabled and url parameter log defined, we show output log on HTML comments // If enable html log tag enabled and url parameter log defined, we show output log on HTML comments
if (! empty($conf->global->MAIN_ENABLE_LOG_HTML) && ! empty($_GET["log"])) if (! empty($conf->global->MAIN_ENABLE_LOG_INLINE_HTML) && ! empty($_GET["log"]))
{ {
print "\n\n<!-- Log start\n"; print "\n\n<!-- Log start\n";
print $message."\n"; print $message."\n";
@ -3418,10 +3418,13 @@ function price2num($amount,$rounding='',$alreadysqlnb=0)
* @param int $unit Unit of dimension (0, -3, ...) * @param int $unit Unit of dimension (0, -3, ...)
* @param string $type 'weight', 'volume', ... * @param string $type 'weight', 'volume', ...
* @param Translate $outputlangs Translate language object * @param Translate $outputlangs Translate language object
* @param int $round -1 = non rounding, x = number of decimal
* @return string String to show dimensions * @return string String to show dimensions
*/ */
function showDimensionInBestUnit($dimension, $unit, $type, $outputlangs) function showDimensionInBestUnit($dimension, $unit, $type, $outputlangs, $round=-1)
{ {
require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php';
if ($dimension < 1/10000) if ($dimension < 1/10000)
{ {
$dimension = $dimension * 1000000; $dimension = $dimension * 1000000;
@ -3443,7 +3446,7 @@ function showDimensionInBestUnit($dimension, $unit, $type, $outputlangs)
$unit = $unit + 3; $unit = $unit + 3;
} }
$ret=price($dimension, 0, $outputlangs, 0, 0).' '.measuring_units_string($unit, $type); $ret=price($dimension, 0, $outputlangs, 0, 0, $round).' '.measuring_units_string($unit, $type);
return $ret; return $ret;
} }

View File

@ -45,8 +45,10 @@ function facture_prepare_head($object)
if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
{ {
$head[$h][0] = DOL_URL_ROOT.'/compta/facture/contact.php?facid='.$object->id; $nbContact = count($object->liste_contact(-1,'internal')) + count($object->liste_contact(-1,'external'));
$head[$h][0] = DOL_URL_ROOT.'/compta/facture/contact.php?facid='.$object->id;
$head[$h][1] = $langs->trans('ContactsAddresses'); $head[$h][1] = $langs->trans('ContactsAddresses');
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact'; $head[$h][2] = 'contact';
$h++; $h++;
} }

View File

@ -70,8 +70,10 @@ function commande_prepare_head(Commande $object)
if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
{ {
$head[$h][0] = DOL_URL_ROOT.'/commande/contact.php?id='.$object->id; $nbContact = count($object->liste_contact(-1,'internal')) + count($object->liste_contact(-1,'external'));
$head[$h][0] = DOL_URL_ROOT.'/commande/contact.php?id='.$object->id;
$head[$h][1] = $langs->trans('ContactsAddresses'); $head[$h][1] = $langs->trans('ContactsAddresses');
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact'; $head[$h][2] = 'contact';
$h++; $h++;
} }

View File

@ -64,8 +64,10 @@ function propal_prepare_head($object)
if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
{ {
$nbContact = count($object->liste_contact(-1,'internal')) + count($object->liste_contact(-1,'external'));
$head[$h][0] = DOL_URL_ROOT.'/comm/propal/contact.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/comm/propal/contact.php?id='.$object->id;
$head[$h][1] = $langs->trans('ContactsAddresses'); $head[$h][1] = $langs->trans('ContactsAddresses');
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact'; $head[$h][2] = 'contact';
$h++; $h++;
} }

View File

@ -184,7 +184,6 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->facture->enabled', __HANDLER__, 'left', 1704__+MAX_llx_menu__, 'accountancy', '', 1700__+MAX_llx_menu__, '/compta/paiement/list.php?leftmenu=customers_bills', 'Payments', 1, 'bills', '$user->rights->facture->lire', '', 2, 6, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->facture->enabled', __HANDLER__, 'left', 1704__+MAX_llx_menu__, 'accountancy', '', 1700__+MAX_llx_menu__, '/compta/paiement/list.php?leftmenu=customers_bills', 'Payments', 1, 'bills', '$user->rights->facture->lire', '', 2, 6, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->facture->enabled', __HANDLER__, 'left', 1710__+MAX_llx_menu__, 'accountancy', '', 1704__+MAX_llx_menu__, '/compta/paiement/rapport.php?leftmenu=customers_bills', 'Reportings', 2, 'bills', '$user->rights->facture->lire', '', 2, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->facture->enabled', __HANDLER__, 'left', 1710__+MAX_llx_menu__, 'accountancy', '', 1704__+MAX_llx_menu__, '/compta/paiement/rapport.php?leftmenu=customers_bills', 'Reportings', 2, 'bills', '$user->rights->facture->lire', '', 2, 1, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->facture->enabled', __HANDLER__, 'left', 1703__+MAX_llx_menu__, 'accountancy', '', 1700__+MAX_llx_menu__, '/compta/facture/mergepdftool.php?action=facturer&amp;leftmenu=customers_bills', 'MergingPDFTool', 1, 'bills', '$user->rights->facture->lire', '', 2, 7, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->facture->enabled', __HANDLER__, 'left', 1714__+MAX_llx_menu__, 'accountancy', '', 1700__+MAX_llx_menu__, '/compta/facture/stats/index.php?leftmenu=customers_bills', 'Statistics', 1, 'bills', '$user->rights->facture->lire', '', 2, 8, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->facture->enabled', __HANDLER__, 'left', 1714__+MAX_llx_menu__, 'accountancy', '', 1700__+MAX_llx_menu__, '/compta/facture/stats/index.php?leftmenu=customers_bills', 'Statistics', 1, 'bills', '$user->rights->facture->lire', '', 2, 8, __ENTITY__);
-- Accountancy - Orders to bill -- Accountancy - Orders to bill
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->commande->enabled', __HANDLER__, 'left', 1900__+MAX_llx_menu__, 'accountancy', 'orders', 6__+MAX_llx_menu__, '/commande/list.php?leftmenu=orders&amp;viewstatut=3', 'MenuOrdersToBill', 0, 'orders', '$user->rights->commande->lire', '', 0, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->commande->enabled', __HANDLER__, 'left', 1900__+MAX_llx_menu__, 'accountancy', 'orders', 6__+MAX_llx_menu__, '/commande/list.php?leftmenu=orders&amp;viewstatut=3', 'MenuOrdersToBill', 0, 'orders', '$user->rights->commande->lire', '', 0, 3, __ENTITY__);

View File

@ -802,8 +802,6 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
$newmenu->add("/compta/paiement/rapport.php",$langs->trans("Reportings"),2,$user->rights->facture->lire); $newmenu->add("/compta/paiement/rapport.php",$langs->trans("Reportings"),2,$user->rights->facture->lire);
$newmenu->add("/compta/facture/stats/index.php", $langs->trans("Statistics"),1,$user->rights->facture->lire); $newmenu->add("/compta/facture/stats/index.php", $langs->trans("Statistics"),1,$user->rights->facture->lire);
$newmenu->add("/compta/facture/mergepdftool.php",$langs->trans("MergingPDFTool"),1,$user->rights->facture->lire);
} }
// Suppliers invoices // Suppliers invoices

View File

@ -240,7 +240,9 @@ class doc_generic_order_odt extends ModelePDFCommandes
$newfileformat=substr($newfile, strrpos($newfile, '.')+1); $newfileformat=substr($newfile, strrpos($newfile, '.')+1);
if ( ! empty($conf->global->MAIN_DOC_USE_TIMING)) if ( ! empty($conf->global->MAIN_DOC_USE_TIMING))
{ {
$filename=$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.'.$newfileformat; $format=$conf->global->MAIN_DOC_USE_TIMING;
if ($format == '1') $format='%Y%m%d%H%M%S';
$filename=$newfiletmp.'-'.dol_print_date(dol_now(),$format).'.'.$newfileformat;
} }
else else
{ {

View File

@ -241,7 +241,9 @@ class doc_generic_shipment_odt extends ModelePdfExpedition
$newfileformat=substr($newfile, strrpos($newfile, '.')+1); $newfileformat=substr($newfile, strrpos($newfile, '.')+1);
if ( ! empty($conf->global->MAIN_DOC_USE_TIMING)) if ( ! empty($conf->global->MAIN_DOC_USE_TIMING))
{ {
$filename=$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.'.$newfileformat; $format=$conf->global->MAIN_DOC_USE_TIMING;
if ($format == '1') $format='%Y%m%d%H%M%S';
$filename=$newfiletmp.'-'.dol_print_date(dol_now(),$format).'.'.$newfileformat;
} }
else else
{ {

View File

@ -451,7 +451,7 @@ class pdf_rouget extends ModelePdfExpedition
$voltxt=''; $voltxt='';
if ($object->lines[$i]->fk_product_type == 0 && $object->lines[$i]->volume) if ($object->lines[$i]->fk_product_type == 0 && $object->lines[$i]->volume)
{ {
$voltxt=$object->lines[$i]->volume*$object->lines[$i]->qty_shipped.' '.measuring_units_string($object->lines[$i]->volume_units,"volume"); $voltxt=$object->lines[$i]->volume*$object->lines[$i]->qty_shipped.' '.measuring_units_string($object->lines[$i]->volume_units?$object->lines[$i]->volume_units:0,"volume");
} }
$pdf->MultiCell(($this->posxqtyordered - $this->posxweightvol), 3, $weighttxt.(($weighttxt && $voltxt)?', ':'').$voltxt,'','C'); $pdf->MultiCell(($this->posxqtyordered - $this->posxweightvol), 3, $weighttxt.(($weighttxt && $voltxt)?', ':'').$voltxt,'','C');

View File

@ -241,7 +241,9 @@ class doc_generic_invoice_odt extends ModelePDFFactures
$newfileformat=substr($newfile, strrpos($newfile, '.')+1); $newfileformat=substr($newfile, strrpos($newfile, '.')+1);
if ( ! empty($conf->global->MAIN_DOC_USE_TIMING)) if ( ! empty($conf->global->MAIN_DOC_USE_TIMING))
{ {
$filename=$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.'.$newfileformat; $format=$conf->global->MAIN_DOC_USE_TIMING;
if ($format == '1') $format='%Y%m%d%H%M%S';
$filename=$newfiletmp.'-'.dol_print_date(dol_now(),$format).'.'.$newfileformat;
} }
else else
{ {

View File

@ -450,7 +450,9 @@ class doc_generic_project_odt extends ModelePDFProjects
$newfileformat=substr($newfile, strrpos($newfile, '.')+1); $newfileformat=substr($newfile, strrpos($newfile, '.')+1);
if ( ! empty($conf->global->MAIN_DOC_USE_TIMING)) if ( ! empty($conf->global->MAIN_DOC_USE_TIMING))
{ {
$filename=$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.'.$newfileformat; $format=$conf->global->MAIN_DOC_USE_TIMING;
if ($format == '1') $format='%Y%m%d%H%M%S';
$filename=$newfiletmp.'-'.dol_print_date(dol_now(),$format).'.'.$newfileformat;
} }
else else
{ {

View File

@ -274,7 +274,9 @@ class doc_generic_proposal_odt extends ModelePDFPropales
$newfileformat=substr($newfile, strrpos($newfile, '.')+1); $newfileformat=substr($newfile, strrpos($newfile, '.')+1);
if ( ! empty($conf->global->MAIN_DOC_USE_TIMING)) if ( ! empty($conf->global->MAIN_DOC_USE_TIMING))
{ {
$filename=$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.'.$newfileformat; $format=$conf->global->MAIN_DOC_USE_TIMING;
if ($format == '1') $format='%Y%m%d%H%M%S';
$filename=$newfiletmp.'-'.dol_print_date(dol_now(),$format).'.'.$newfileformat;
} }
else else
{ {

View File

@ -686,21 +686,39 @@ class pdf_azur extends ModelePDFPropales
if (count($filetomerge->lines) > 0) { if (count($filetomerge->lines) > 0) {
foreach ( $filetomerge->lines as $linefile ) { foreach ( $filetomerge->lines as $linefile ) {
if (! empty($linefile->id) && ! empty($linefile->file_name)) { if (! empty($linefile->id) && ! empty($linefile->file_name)) {
if (! empty($conf->product->enabled))
$filetomerge_dir = $conf->product->multidir_output[$entity_product_file] . '/' . dol_sanitizeFileName($line->product_ref);
elseif (! empty($conf->service->enabled)) if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO))
$filetomerge_dir = $conf->service->multidir_output[$entity_product_file] . '/' . dol_sanitizeFileName($line->product_ref); {
if (! empty($conf->product->enabled)) {
$filetomerge_dir = $conf->product->multidir_output[$entity_product_file] . '/' . get_exdir($product->id,2,0,0,$product,'product') . $product->id ."/photos";
} elseif (! empty($conf->service->enabled)) {
$filetomerge_dir = $conf->service->multidir_output[$entity_product_file] . '/' . get_exdir($product->id,2,0,0,$product,'product') . $product->id ."/photos";
}
}
else
{
if (! empty($conf->product->enabled)) {
$filetomerge_dir = $conf->product->multidir_output[$entity_product_file] . '/' . get_exdir(0,0,0,0,$product,'product') . dol_sanitizeFileName($product->ref);
} elseif (! empty($conf->service->enabled)) {
$filetomerge_dir = $conf->service->multidir_output[$entity_product_file] . '/' . get_exdir(0,0,0,0,$product,'product') . dol_sanitizeFileName($product->ref);
}
}
dol_syslog(get_class($this) . ':: upload_dir=' . $filetomerge_dir, LOG_DEBUG); dol_syslog(get_class($this) . ':: upload_dir=' . $filetomerge_dir, LOG_DEBUG);
$infile = $filetomerge_dir . '/' . $linefile->file_name; $infile = $filetomerge_dir . '/' . $linefile->file_name;
if (is_file($infile)) { if (file_exists($infile) && is_readable($infile)) {
$pagecount = $pdf->setSourceFile($infile); $pagecount = $pdf->setSourceFile($infile);
for($i = 1; $i <= $pagecount; $i ++) { for($i = 1; $i <= $pagecount; $i ++) {
$tplidx = $pdf->ImportPage($i); $tplIdx = $pdf->importPage(1);
$s = $pdf->getTemplatesize($tplidx); if ($tplIdx!==false) {
$pdf->AddPage($s['h'] > $s['w'] ? 'P' : 'L'); $s = $pdf->getTemplatesize($tplIdx);
$pdf->useTemplate($tplidx); $pdf->AddPage($s['h'] > $s['w'] ? 'P' : 'L');
$pdf->useTemplate($tplIdx);
} else {
setEventMessages(null, array($infile.' cannot be added, probably protected PDF'),'warnings');
}
} }
} }
} }
@ -710,10 +728,6 @@ class pdf_azur extends ModelePDFPropales
} }
} }
//exit;
$pdf->Close(); $pdf->Close();
$pdf->Output($file,'F'); $pdf->Output($file,'F');

View File

@ -209,9 +209,15 @@ class doc_generic_odt extends ModeleThirdPartyDoc
$newfiletmp=preg_replace('/modele_/i','',$newfiletmp); $newfiletmp=preg_replace('/modele_/i','',$newfiletmp);
// Get extension (ods or odt) // Get extension (ods or odt)
$newfileformat=substr($newfile, strrpos($newfile, '.')+1); $newfileformat=substr($newfile, strrpos($newfile, '.')+1);
if ( ! empty($conf->global->MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME))
{
$newfiletmp = dol_sanitizeFileName(dol_string_nospecial($object->name)).'-'.$newfiletmp;
}
if ( ! empty($conf->global->MAIN_DOC_USE_TIMING)) if ( ! empty($conf->global->MAIN_DOC_USE_TIMING))
{ {
$filename=$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.'.$newfileformat; $format=$conf->global->MAIN_DOC_USE_TIMING;
if ($format == '1') $format='%Y%m%d%H%M%S';
$filename=$newfiletmp.'-'.dol_print_date(dol_now(),$format).'.'.$newfileformat;
} }
else else
{ {

View File

@ -274,7 +274,9 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal
$newfileformat=substr($newfile, strrpos($newfile, '.')+1); $newfileformat=substr($newfile, strrpos($newfile, '.')+1);
if ( ! empty($conf->global->MAIN_DOC_USE_TIMING)) if ( ! empty($conf->global->MAIN_DOC_USE_TIMING))
{ {
$filename=$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.'.$newfileformat; $format=$conf->global->MAIN_DOC_USE_TIMING;
if ($format == '1') $format='%Y%m%d%H%M%S';
$filename=$newfiletmp.'-'.dol_print_date(dol_now(),$format).'.'.$newfileformat;
} }
else else
{ {

View File

@ -265,7 +265,12 @@ if ($id > 0 || ! empty($ref))
// Date // Date
print '<tr><td>'.$langs->trans('Date').'</td>'; print '<tr><td>'.$langs->trans('Date').'</td>';
print '<td colspan="2">'.dol_print_date($commande->date,'daytext').'</td>'; print '<td colspan="2">';
print dol_print_date($commande->date,'daytext');
if ($commande->hasDelay() && empty($commande->date_livraison)) {
print ' '.img_picto($langs->trans("Late").' : '.$commande->showDelay(), "warning");
}
print '</td>';
print '</tr>'; print '</tr>';
// Delivery date planned // Delivery date planned
@ -289,6 +294,9 @@ if ($id > 0 || ! empty($ref))
else else
{ {
print dol_print_date($commande->date_livraison,'daytext'); print dol_print_date($commande->date_livraison,'daytext');
if ($commande->hasDelay() && ! empty($commande->date_livraison)) {
print ' '.img_picto($langs->trans("Late").' : '.$commande->showDelay(), "warning");
}
} }
print '</td>'; print '</td>';
// Note on several rows // Note on several rows

View File

@ -117,17 +117,20 @@ if (empty($reshook))
if ($result >= 0) if ($result >= 0)
{ {
// Define output language if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
$outputlangs = $langs;
$newlang='';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha');
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang;
if (! empty($newlang))
{ {
$outputlangs = new Translate("",$conf); // Define output language
$outputlangs->setDefaultLang($newlang); $outputlangs = $langs;
$newlang='';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha');
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang;
if (! empty($newlang))
{
$outputlangs = new Translate("",$conf);
$outputlangs->setDefaultLang($newlang);
}
$result=fichinter_create($db, $object, (!GETPOST('model','alpha'))?$object->modelpdf:GETPOST('model','alpha'), $outputlangs);
} }
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) $result=fichinter_create($db, $object, GETPOST('model','alpha'), $outputlangs);
header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id); header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id);
exit; exit;
@ -143,17 +146,20 @@ if (empty($reshook))
$result = $object->setDraft($user); $result = $object->setDraft($user);
if ($result >= 0) if ($result >= 0)
{ {
// Define output language if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
$outputlangs = $langs;
$newlang='';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha');
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang;
if (! empty($newlang))
{ {
$outputlangs = new Translate("",$conf); // Define output language
$outputlangs->setDefaultLang($newlang); $outputlangs = $langs;
$newlang='';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha');
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang;
if (! empty($newlang))
{
$outputlangs = new Translate("",$conf);
$outputlangs->setDefaultLang($newlang);
}
$result=fichinter_create($db, $object, (!GETPOST('model','alpha'))?$object->modelpdf:GETPOST('model','alpha'), $outputlangs);
} }
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) $result=fichinter_create($db, $object, (!GETPOST('model','alpha'))?$object->model:GETPOST('model','apha'), $outputlangs);
header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id); header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id);
exit; exit;

View File

@ -1,10 +1,13 @@
<?php <?php
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2006-2011 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2006-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2009-2014 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2009-2014 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr> * Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
status
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -439,6 +442,7 @@ class ProductFournisseur extends Product
$sql.= ", ".MAIN_DB_PREFIX."societe as s"; $sql.= ", ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE pfp.entity IN (".getEntity('product', 1).")"; $sql.= " WHERE pfp.entity IN (".getEntity('product', 1).")";
$sql.= " AND pfp.fk_soc = s.rowid"; $sql.= " AND pfp.fk_soc = s.rowid";
$sql.= " AND s.status=1"; // only enabled company selected
$sql.= " AND pfp.fk_product = ".$prodid; $sql.= " AND pfp.fk_product = ".$prodid;
if (empty($sortfield)) $sql.= " ORDER BY s.nom, pfp.quantity, pfp.price"; if (empty($sortfield)) $sql.= " ORDER BY s.nom, pfp.quantity, pfp.price";
else $sql.= $this->db->order($sortfield,$sortorder); else $sql.= $this->db->order($sortfield,$sortorder);
@ -545,6 +549,7 @@ class ProductFournisseur extends Product
$sql.= " WHERE s.entity IN (".getEntity('societe', 1).")"; $sql.= " WHERE s.entity IN (".getEntity('societe', 1).")";
$sql.= " AND pfp.fk_product = ".$prodid; $sql.= " AND pfp.fk_product = ".$prodid;
$sql.= " AND pfp.fk_soc = s.rowid"; $sql.= " AND pfp.fk_soc = s.rowid";
$sql.= " AND s.status = 1"; // only enabled society
if ($qty > 0) $sql.= " AND pfp.quantity <= ".$qty; if ($qty > 0) $sql.= " AND pfp.quantity <= ".$qty;
dol_syslog(get_class($this)."::find_min_price_product_fournisseur", LOG_DEBUG); dol_syslog(get_class($this)."::find_min_price_product_fournisseur", LOG_DEBUG);

View File

@ -127,7 +127,7 @@ if (! defined('DONOTLOADCONF') && file_exists($conffile) && filesize($conffile)
$includeconferror='ErrorBadFormatForConfFile'; $includeconferror='ErrorBadFormatForConfFile';
} }
} }
$conf->global->MAIN_LOGTOHTML = 1; $conf->global->MAIN_ENABLE_LOG_TO_HTML = 1;
// Define prefix // Define prefix
if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_'; if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_';

View File

@ -35,6 +35,7 @@ insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_N
insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_FEATURES_LEVEL','0','chaine','Level of features to show: -1=stable+deprecated, 0=stable only (default), 1=stable+experimental, 2=stable+experimental+development',1,0); insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_FEATURES_LEVEL','0','chaine','Level of features to show: -1=stable+deprecated, 0=stable only (default), 1=stable+experimental, 2=stable+experimental+development',1,0);
insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_LOGTOHTML','0','chaine','If this constants is defined, it is possible to have logs inside pages by adding the parameter &logtohtml=1',1,0); insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_LOGTOHTML','0','chaine','If this constants is defined, it is possible to have logs inside pages by adding the parameter &logtohtml=1',1,0);
insert into llx_const (name, value, type, note, visible, entity) values ('MAILING_LIMIT_SENDBYWEB','25','chaine','Number of targets to defined packet size when sending mass email',1,0); insert into llx_const (name, value, type, note, visible, entity) values ('MAILING_LIMIT_SENDBYWEB','25','chaine','Number of targets to defined packet size when sending mass email',1,0);
insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_ENABLE_LOG_TO_HTML','0','chaine','If this option is set to 1, it is possible to see log output at end of HTML sources by adding paramater logtohtml=1 on URL',1,0);
-- Hidden and common to all entities -- Hidden and common to all entities
insert into llx_const (name, value, type, note, visible, entity) values ('SYSLOG_HANDLERS','["mod_syslog_file"]','chaine','Which logger to use',0,0); insert into llx_const (name, value, type, note, visible, entity) values ('SYSLOG_HANDLERS','["mod_syslog_file"]','chaine','Which logger to use',0,0);

View File

@ -797,3 +797,17 @@ ALTER TABLE llx_societe_remise_except MODIFY COLUMN description text NOT NULL;
update llx_opensurvey_sondage set format = 'D' where format = 'D+'; update llx_opensurvey_sondage set format = 'D' where format = 'D+';
update llx_opensurvey_sondage set format = 'A' where format = 'A+'; update llx_opensurvey_sondage set format = 'A' where format = 'A+';
--Deal with holidays_user that do not have rowid
-- Disabled: too dangerous patch. rowid is a primary key. How is it possible to have no rowid ?
--CREATE TABLE llx_holiday_users_tmp
--(
-- rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY,
-- fk_user integer NOT NULL,
-- fk_type integer NOT NULL,
-- nb_holiday real NOT NULL DEFAULT '0'
--) ENGINE=innodb;
--INSERT INTO llx_holiday_users_tmp(fk_user,fk_type,nb_holiday) SELECT fk_user,fk_type,nb_holiday FROM llx_holiday_users;
--DROP TABLE llx_holiday_users;
--ALTER TABLE llx_holiday_users_tmp RENAME TO llx_holiday_users;

View File

@ -22,6 +22,9 @@
-- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup); -- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup);
insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_ENABLE_LOG_TO_HTML','0','chaine','If this option is set to 1, it is possible to see log output at end of HTML sources by adding paramater logtohtml=1 on URL',1,0);
-- Was done into a 3.8 fix, so we must do it also in 3.9 -- Was done into a 3.8 fix, so we must do it also in 3.9
ALTER TABLE llx_don ADD COLUMN fk_country integer NOT NULL DEFAULT 0 after country; ALTER TABLE llx_don ADD COLUMN fk_country integer NOT NULL DEFAULT 0 after country;

View File

@ -322,3 +322,4 @@ ALTER TABLE llx_expensereport_det ADD COLUMN multicurrency_total_ttc double(24,8
ALTER TABLE llx_product_lang ADD COLUMN import_key varchar(14) DEFAULT NULL; ALTER TABLE llx_product_lang ADD COLUMN import_key varchar(14) DEFAULT NULL;
ALTER TABLE llx_actioncomm MODIFY COLUMN elementtype varchar(255) DEFAULT NULL;

View File

@ -69,7 +69,7 @@ create table llx_actioncomm
recurdateend datetime, recurdateend datetime,
fk_element integer DEFAULT NULL, fk_element integer DEFAULT NULL,
elementtype varchar(32) DEFAULT NULL elementtype varchar(255) DEFAULT NULL
)ENGINE=innodb; )ENGINE=innodb;

View File

@ -21,5 +21,4 @@ CREATE TABLE llx_holiday_users
fk_user integer NOT NULL, fk_user integer NOT NULL,
fk_type integer NOT NULL, fk_type integer NOT NULL,
nb_holiday real NOT NULL DEFAULT '0' nb_holiday real NOT NULL DEFAULT '0'
) ) ENGINE=innodb;
ENGINE=innodb;

View File

@ -282,6 +282,7 @@ ModuleSetup=إعداد وحدة
ModulesSetup=نمائط الإعداد ModulesSetup=نمائط الإعداد
ModuleFamilyBase=نظام ModuleFamilyBase=نظام
ModuleFamilyCrm=إدارة علاقات العملاء (CRM) ModuleFamilyCrm=إدارة علاقات العملاء (CRM)
ModuleFamilySrm=Supplier Relation Management (SRM)
ModuleFamilyProducts=إدارة المنتجات (PM) ModuleFamilyProducts=إدارة المنتجات (PM)
ModuleFamilyHr=إدارة الموارد البشرية (HR) ModuleFamilyHr=إدارة الموارد البشرية (HR)
ModuleFamilyProjects=مشاريع / العمل التعاوني ModuleFamilyProjects=مشاريع / العمل التعاوني
@ -587,6 +588,7 @@ Permission38=منتجات التصدير
Permission41=مشاريع القراءة والمهام (مشروع مشترك ومشاريع انا اتصال ل). كما يمكن أن يدخل الوقت المستهلك في المهام الموكلة (الجدول الزمني) Permission41=مشاريع القراءة والمهام (مشروع مشترك ومشاريع انا اتصال ل). كما يمكن أن يدخل الوقت المستهلك في المهام الموكلة (الجدول الزمني)
Permission42=إنشاء / تعديل مشاريع تعديل مهام بلدي المشاريع Permission42=إنشاء / تعديل مشاريع تعديل مهام بلدي المشاريع
Permission44=حذف مشاريع Permission44=حذف مشاريع
Permission45=Export projects
Permission61=قراءة التدخلات Permission61=قراءة التدخلات
Permission62=إنشاء / تعديل التدخلات Permission62=إنشاء / تعديل التدخلات
Permission64=حذف التدخلات Permission64=حذف التدخلات
@ -640,6 +642,7 @@ Permission162=إنشاء / تعديل العقود / الاشتراكات
Permission163=تفعيل خدمة / الاشتراك عقد Permission163=تفعيل خدمة / الاشتراك عقد
Permission164=تعطيل خدمة / الاشتراك عقد Permission164=تعطيل خدمة / الاشتراك عقد
Permission165=حذف العقود / الاشتراكات Permission165=حذف العقود / الاشتراكات
Permission167=Export contracts
Permission171=قراءة الرحلات والنفقات (لك والمرؤوسين لديك) Permission171=قراءة الرحلات والنفقات (لك والمرؤوسين لديك)
Permission172=إنشاء / تعديل الرحلات والمصاريف Permission172=إنشاء / تعديل الرحلات والمصاريف
Permission173=حذف الرحلات والمصاريف Permission173=حذف الرحلات والمصاريف
@ -788,6 +791,7 @@ Permission2403=قراءة الأعمال (أو أحداث المهام) آخري
Permission2411=الإجراءات قراءة (أحداث أو المهام) للاخرين Permission2411=الإجراءات قراءة (أحداث أو المهام) للاخرين
Permission2412=إنشاء / تعديل الإجراءات (أحداث أو المهام) للاخرين Permission2412=إنشاء / تعديل الإجراءات (أحداث أو المهام) للاخرين
Permission2413=حذف الإجراءات (أحداث أو المهام) للاخرين Permission2413=حذف الإجراءات (أحداث أو المهام) للاخرين
Permission2414=Export actions/tasks of others
Permission2501=قراءة وثائق Permission2501=قراءة وثائق
Permission2502=تقديم وثائق أو حذف Permission2502=تقديم وثائق أو حذف
Permission2503=تقديم وثائق أو حذف Permission2503=تقديم وثائق أو حذف
@ -1713,3 +1717,4 @@ ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP و CRM%s هو متاح.
MultiPriceRuleDesc=عندما خيار "مستوى العديد من الأسعار لكل المنتجات / الخدمات" في وضع التشغيل، يمكنك تحديد أسعار مختلفة (واحد لكل مستوى الأسعار) لكل منتج. لتوفير الوقت، يمكنك الدخول هنا حكم أن يكون السعر لكل مستوى autocalculated وفقا لسعر المستوى الأول، لذلك سيكون لديك للدخول الثمن الوحيد للمستوى الأول على كل منتج. هذه الصفحة هي هنا لتوفر لك الوقت ويمكن أن تكون مفيدة فقط إذا كانت الأسعار الخاص لكل LEVE قريبة إلى المستوى الأول. يمكنك تجاهل هذه الصفحة في معظم الحالات. MultiPriceRuleDesc=عندما خيار "مستوى العديد من الأسعار لكل المنتجات / الخدمات" في وضع التشغيل، يمكنك تحديد أسعار مختلفة (واحد لكل مستوى الأسعار) لكل منتج. لتوفير الوقت، يمكنك الدخول هنا حكم أن يكون السعر لكل مستوى autocalculated وفقا لسعر المستوى الأول، لذلك سيكون لديك للدخول الثمن الوحيد للمستوى الأول على كل منتج. هذه الصفحة هي هنا لتوفر لك الوقت ويمكن أن تكون مفيدة فقط إذا كانت الأسعار الخاص لكل LEVE قريبة إلى المستوى الأول. يمكنك تجاهل هذه الصفحة في معظم الحالات.
ModelModulesProduct=Templates for product documents ModelModulesProduct=Templates for product documents
ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate automatically codes, you must first define a manager to auto define barcode number. ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate automatically codes, you must first define a manager to auto define barcode number.
SeeSubstitutionVars=See * note for list of possible substitution variables

View File

@ -219,6 +219,7 @@ RemainderToBill=تبقى لمشروع قانون
SendBillByMail=ارسال الفاتورة عن طريق البريد الإلكتروني SendBillByMail=ارسال الفاتورة عن طريق البريد الإلكتروني
SendReminderBillByMail=إرسال تذكرة عن طريق البريد الإلكتروني SendReminderBillByMail=إرسال تذكرة عن طريق البريد الإلكتروني
RelatedCommercialProposals=المقترحات المتعلقة التجارية RelatedCommercialProposals=المقترحات المتعلقة التجارية
RelatedRecurringCustomerInvoices=Related recurring customer invoices
MenuToValid=لصحيحة MenuToValid=لصحيحة
DateMaxPayment=قبل استحقاق الدفع DateMaxPayment=قبل استحقاق الدفع
DateEcheance=الحد من الموعد المقرر DateEcheance=الحد من الموعد المقرر
@ -319,7 +320,6 @@ toolTipFrequency=Examples:<br /><b>Set 7 / day</b>: give a new invoice every 7 d
NextDateToExecution=Date for next invoice generation NextDateToExecution=Date for next invoice generation
DateLastGeneration=Date of last generation DateLastGeneration=Date of last generation
MaxPeriodNumber=Max nb of invoice generation MaxPeriodNumber=Max nb of invoice generation
RestPeriodNumber=Rest period number
NbOfGenerationDone=Nb of invoice generation already done NbOfGenerationDone=Nb of invoice generation already done
InvoiceAutoValidate=Automatically validate invoice InvoiceAutoValidate=Automatically validate invoice
GeneratedFromRecurringInvoice=Generated from template recurring invoice %s GeneratedFromRecurringInvoice=Generated from template recurring invoice %s
@ -471,3 +471,7 @@ PDFCrevetteSituationInvoiceLine=Situation N°%s : Inv. N°%s on %s
TotalSituationInvoice=Total situation TotalSituationInvoice=Total situation
invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line
updatePriceNextInvoiceErrorUpdateline=Error : update price on invoice line : %s updatePriceNextInvoiceErrorUpdateline=Error : update price on invoice line : %s
ToCreateARecurringInvoice=To create a recurring invoice for this contract, first create this draft invoice, then convert it into an invoice template and define the frequency for generation of future invoices.
ToCreateARecurringInvoiceGene=To generate future invoices regularly and manually, just go on menu <strong>%s - %s - %s</strong>.
ToCreateARecurringInvoiceGeneAuto=If you need to have such invoices generated automatically, ask you administrator to enable and setup module <strong>%s</strong>. Note that both method (manual and automatic) can be used together with no risk of duplication.

View File

@ -60,8 +60,8 @@ BoxTitleLastContracts=العقود %s الماضية
BoxTitleLastModifiedDonations=أخر %s التبرعات تعديل BoxTitleLastModifiedDonations=أخر %s التبرعات تعديل
BoxTitleLastModifiedExpenses=أخر %s تقارير النفقات المعدلة BoxTitleLastModifiedExpenses=أخر %s تقارير النفقات المعدلة
BoxGlobalActivity=النشاط العالمي (الفواتير والمقترحات والطلبات) BoxGlobalActivity=النشاط العالمي (الفواتير والمقترحات والطلبات)
BoxGoodCustomers=Good Customers BoxGoodCustomers=Good customers
BoxTitleGoodCustomers=%s Good Customers BoxTitleGoodCustomers=%s Good customers
FailedToRefreshDataInfoNotUpToDate=فشل لتحديث تدفق RSS. تاريخ آخر تحديث ناجحا:٪ الصورة FailedToRefreshDataInfoNotUpToDate=فشل لتحديث تدفق RSS. تاريخ آخر تحديث ناجحا:٪ الصورة
LastRefreshDate=تاريخ آخر تحديث LastRefreshDate=تاريخ آخر تحديث
NoRecordedBookmarks=أية إشارات محددة. NoRecordedBookmarks=أية إشارات محددة.

View File

@ -202,7 +202,7 @@ ProfId3IN=معرف البروفيسور 3
ProfId4IN=معرف البروفيسور 4 ProfId4IN=معرف البروفيسور 4
ProfId5IN=الأستاذ رقم 5 ProfId5IN=الأستاذ رقم 5
ProfId6IN=- ProfId6IN=-
ProfId1LU=Id. prof. 1 (RCS) ProfId1LU=Id. prof. 1 (R.C.S. Luxembourg)
ProfId2LU=Id. prof. 2 (Business permit) ProfId2LU=Id. prof. 2 (Business permit)
ProfId3LU=- ProfId3LU=-
ProfId4LU=- ProfId4LU=-
@ -317,10 +317,12 @@ ShowContact=وتظهر الاتصال
ContactsAllShort=جميع (بدون فلتر) ContactsAllShort=جميع (بدون فلتر)
ContactType=نوع الاتصال ContactType=نوع الاتصال
ContactForOrders=أوامر اتصال ContactForOrders=أوامر اتصال
ContactForOrdersOrShipments=Order's or shipment's contact
ContactForProposals=مقترحات اتصال ContactForProposals=مقترحات اتصال
ContactForContracts=عقود اتصال ContactForContracts=عقود اتصال
ContactForInvoices=فواتير اتصال ContactForInvoices=فواتير اتصال
NoContactForAnyOrder=هذا الاتصال ليس من أجل أي اتصال NoContactForAnyOrder=هذا الاتصال ليس من أجل أي اتصال
NoContactForAnyOrderOrShipment=This contact is not a contact for any order or shipment
NoContactForAnyProposal=هذا الاتصال ليست على اتصال في أي اقتراح التجارية NoContactForAnyProposal=هذا الاتصال ليست على اتصال في أي اقتراح التجارية
NoContactForAnyContract=هذا الاتصال ليس أي عقد للاتصال NoContactForAnyContract=هذا الاتصال ليس أي عقد للاتصال
NoContactForAnyInvoice=هذا الاتصال ليست على اتصال في أي فاتورة NoContactForAnyInvoice=هذا الاتصال ليست على اتصال في أي فاتورة
@ -438,3 +440,6 @@ MergeThirdparties=دمج أطراف ثالثة
ConfirmMergeThirdparties=هل أنت متأكد أنك تريد دمج هذا الطرف الثالث في واحدة الحالي؟ كل الكائنات المرتبطة (الفواتير وأوامر، ...) سيتم نقلها إلى طرف ثالث الحالي لذلك سوف تكون قادرة على حذف واحد مكرر. ConfirmMergeThirdparties=هل أنت متأكد أنك تريد دمج هذا الطرف الثالث في واحدة الحالي؟ كل الكائنات المرتبطة (الفواتير وأوامر، ...) سيتم نقلها إلى طرف ثالث الحالي لذلك سوف تكون قادرة على حذف واحد مكرر.
ThirdpartiesMergeSuccess=تم دمج Thirdparties ThirdpartiesMergeSuccess=تم دمج Thirdparties
ErrorThirdpartiesMerge=كان هناك خطأ عند حذف thirdparties. يرجى التحقق من السجل. وقد عادت التغييرات. ErrorThirdpartiesMerge=كان هناك خطأ عند حذف thirdparties. يرجى التحقق من السجل. وقد عادت التغييرات.
SaleRepresentativeLogin=Login of sale representative
SaleRepresentativeFirstname=Firstname of sale representative
SaleRepresentativeLastname=Lastname of sale representative

View File

@ -172,6 +172,8 @@ ErrorMandatoryParametersNotProvided=معيار إلزامي (ق) لم تقدم
ErrorOppStatusRequiredIfAmount=قمت بتعيين المبلغ المقدر لهذه الفرصة / الرصاص. لذلك يجب عليك أيضا إدخال مكانتها ErrorOppStatusRequiredIfAmount=قمت بتعيين المبلغ المقدر لهذه الفرصة / الرصاص. لذلك يجب عليك أيضا إدخال مكانتها
ErrorBadDefinitionOfMenuArrayInModuleDescriptor=سيئة تعريف القائمة صفيف في الوحدة واصف (القيمة سيئة لfk_menu مفتاح) ErrorBadDefinitionOfMenuArrayInModuleDescriptor=سيئة تعريف القائمة صفيف في الوحدة واصف (القيمة سيئة لfk_menu مفتاح)
ErrorSavingChanges=وقد ocurred لخطأ عند حفظ التغييرات ErrorSavingChanges=وقد ocurred لخطأ عند حفظ التغييرات
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
ErrorFileMustHaveFormat=File must have format %s
# Warnings # Warnings
WarningPasswordSetWithNoAccount=تم تعيين كلمة مرور لهذا العضو. ومع ذلك، تم إنشاء أي حساب المستخدم. لذلك يتم تخزين كلمة المرور هذه ولكن لا يمكن استخدامها للدخول إلى Dolibarr. ويمكن استخدامه من قبل وحدة / واجهة خارجية ولكن إذا كنت لا تحتاج إلى تعريف أي تسجيل دخول أو كلمة المرور لأحد أفراد، يمكنك تعطيل خيار "إدارة تسجيل دخول لكل عضو" من إعداد وحدة الأعضاء. إذا كنت بحاجة إلى إدارة تسجيل الدخول ولكن لا تحتاج إلى أي كلمة المرور، يمكنك الحفاظ على هذا الحقل فارغا لتجنب هذا التحذير. ملاحظة: يمكن أيضا أن تستخدم البريد الإلكتروني لتسجيل الدخول إذا تم ربط عضو إلى المستخدم. WarningPasswordSetWithNoAccount=تم تعيين كلمة مرور لهذا العضو. ومع ذلك، تم إنشاء أي حساب المستخدم. لذلك يتم تخزين كلمة المرور هذه ولكن لا يمكن استخدامها للدخول إلى Dolibarr. ويمكن استخدامه من قبل وحدة / واجهة خارجية ولكن إذا كنت لا تحتاج إلى تعريف أي تسجيل دخول أو كلمة المرور لأحد أفراد، يمكنك تعطيل خيار "إدارة تسجيل دخول لكل عضو" من إعداد وحدة الأعضاء. إذا كنت بحاجة إلى إدارة تسجيل الدخول ولكن لا تحتاج إلى أي كلمة المرور، يمكنك الحفاظ على هذا الحقل فارغا لتجنب هذا التحذير. ملاحظة: يمكن أيضا أن تستخدم البريد الإلكتروني لتسجيل الدخول إذا تم ربط عضو إلى المستخدم.

View File

@ -128,6 +128,10 @@ SpecialCode=رمز خاص
ExportStringFilter=٪٪ يسمح استبدال حرف واحد أو أكثر في النص ExportStringFilter=٪٪ يسمح استبدال حرف واحد أو أكثر في النص
ExportDateFilter=YYYY، YYYYMM، YYYYMMDD: فلاتر لسنة واحدة / شهر / يوم <br> YYYY + YYYY، YYYYMM + YYYYMM، YYYYMMDD + YYYYMMDD: مرشحات على مجموعة من سنوات / أشهر / أيام <br> > YYYY،> YYYYMM،> YYYYMMDD: مرشحات على جميع السنوات / أشهر / يوما التالية <br> <YYYY، <YYYYMM، <YYYYMMDD: مرشحات على جميع السنوات / أشهر / يوما السابقة ExportDateFilter=YYYY، YYYYMM، YYYYMMDD: فلاتر لسنة واحدة / شهر / يوم <br> YYYY + YYYY، YYYYMM + YYYYMM، YYYYMMDD + YYYYMMDD: مرشحات على مجموعة من سنوات / أشهر / أيام <br> > YYYY،> YYYYMM،> YYYYMMDD: مرشحات على جميع السنوات / أشهر / يوما التالية <br> <YYYY، <YYYYMM، <YYYYMMDD: مرشحات على جميع السنوات / أشهر / يوما السابقة
ExportNumericFilter=مرشحات "NNNNN من حيث القيمة واحد <br> مرشحات "NNNNN + NNNNN" على مجموعة من القيم <br> '> NNNNN' المرشحات من قبل انخفاض القيم <br> '> NNNNN' المرشحات بالقيم العليا ExportNumericFilter=مرشحات "NNNNN من حيث القيمة واحد <br> مرشحات "NNNNN + NNNNN" على مجموعة من القيم <br> '> NNNNN' المرشحات من قبل انخفاض القيم <br> '> NNNNN' المرشحات بالقيم العليا
ImportFromLine=Import starting from line number
EndAtLineNb=End at line number
SetThisValueTo2ToExcludeFirstLine=For example, set this value to 3 to exclude the 2 first lines
KeepEmptyToGoToEndOfFile=Keep this field empty to go up to the end of file
## filters ## filters
SelectFilterFields=إذا كنت ترغب في تصفية على بعض القيم، قيم الإدخال فقط هنا. SelectFilterFields=إذا كنت ترغب في تصفية على بعض القيم، قيم الإدخال فقط هنا.
FilterableFields=الحقول تصفيتها FilterableFields=الحقول تصفيتها

View File

@ -25,6 +25,7 @@ FormatDateHourTextShort=%d %b %Y %H:%M
FormatDateHourText=%d %B %Y %H:%M FormatDateHourText=%d %B %Y %H:%M
DatabaseConnection=اتصال قاعدة البيانات DatabaseConnection=اتصال قاعدة البيانات
NoTemplateDefined=No template defined for this email type NoTemplateDefined=No template defined for this email type
AvailableVariables=Available substitution variables
NoTranslation=لا يوجد ترجمة NoTranslation=لا يوجد ترجمة
NoRecordFound=لا يوجد سجلات NoRecordFound=لا يوجد سجلات
NoError=لا خطأ NoError=لا خطأ

View File

@ -32,6 +32,7 @@ StatusOrderSent=شحنة في عملية
StatusOrderOnProcessShort=أمر StatusOrderOnProcessShort=أمر
StatusOrderProcessedShort=تجهيز StatusOrderProcessedShort=تجهيز
StatusOrderDelivered=تم التوصيل StatusOrderDelivered=تم التوصيل
StatusOrderDeliveredShort=Delivered
StatusOrderToBillShort=على مشروع قانون StatusOrderToBillShort=على مشروع قانون
StatusOrderToBill2Short=على مشروع قانون StatusOrderToBill2Short=على مشروع قانون
StatusOrderApprovedShort=وافق StatusOrderApprovedShort=وافق

View File

@ -45,10 +45,6 @@ LastProducts=آخر المنتجات
CardProduct0=منتجات البطاقات CardProduct0=منتجات البطاقات
CardProduct1=بطاقة الخدمة CardProduct1=بطاقة الخدمة
CardContract=عقد بطاقة CardContract=عقد بطاقة
Warehouse=مخزن
Warehouses=المستودعات
WarehouseOpened=مستودع مفتوح
WarehouseClosed=مخزن مغلق
Stock=الأسهم Stock=الأسهم
Stocks=الاسهم Stocks=الاسهم
Movement=الحركة Movement=الحركة
@ -318,3 +314,11 @@ WarningSelectOneDocument=يرجى تحديد وثيقة واحدة على الأ
DefaultUnitToShow=Unit DefaultUnitToShow=Unit
NbOfQtyInProposals=Qty in proposals NbOfQtyInProposals=Qty in proposals
ClinkOnALinkOfColumn=Click on a link of column %s to get a detailed view... ClinkOnALinkOfColumn=Click on a link of column %s to get a detailed view...
TranslatedLabel=Translated label
TranslatedDescription=Translated description
TranslatedNote=Translated notes
ProductWeight=Weight for 1 product
ProductVolume=Volume for 1 product
WeightUnits=Weight unit
VolumeUnits=Volume unit
SizeUnits=Size unit

View File

@ -74,6 +74,9 @@ Progress=تقدم
ProgressDeclared=أعلن التقدم ProgressDeclared=أعلن التقدم
ProgressCalculated=تقدم تحسب ProgressCalculated=تقدم تحسب
Time=وقت Time=وقت
ListOfTasks=List of tasks
GoToListOfTimeConsumed=Go to list of time consumed
GoToListOfTasks=Go to list of tasks
ListProposalsAssociatedProject=قائمة المقترحات التجارية المرتبطة بالمشروع. ListProposalsAssociatedProject=قائمة المقترحات التجارية المرتبطة بالمشروع.
ListOrdersAssociatedProject=قائمة الزبائن المرتبطة بالمشروع. ListOrdersAssociatedProject=قائمة الزبائن المرتبطة بالمشروع.
ListInvoicesAssociatedProject=قائمة العملاء والفواتير المرتبطة بالمشروع ListInvoicesAssociatedProject=قائمة العملاء والفواتير المرتبطة بالمشروع
@ -198,3 +201,4 @@ OppStatusNEGO=Negociation
OppStatusPENDING=بانتظار OppStatusPENDING=بانتظار
OppStatusWIN=فاز OppStatusWIN=فاز
OppStatusLOST=ضائع OppStatusLOST=ضائع
Budget=Budget

View File

@ -70,6 +70,8 @@ ProductQtyInSuppliersOrdersRunning=كمية المنتج إلى أوامر ال
ProductQtyInShipmentAlreadySent=كمية المنتج من فتح النظام العميل ارسلت بالفعل ProductQtyInShipmentAlreadySent=كمية المنتج من فتح النظام العميل ارسلت بالفعل
ProductQtyInSuppliersShipmentAlreadyRecevied=كمية المنتج من فتح المورد النظام وردت بالفعل ProductQtyInSuppliersShipmentAlreadyRecevied=كمية المنتج من فتح المورد النظام وردت بالفعل
NoProductToShipFoundIntoStock=لا يوجد منتج للسفينة وجدت في <b>مستودع٪ الصورة.</b> الأسهم الصحيح أو العودة إلى اختيار مستودع آخر. NoProductToShipFoundIntoStock=لا يوجد منتج للسفينة وجدت في <b>مستودع٪ الصورة.</b> الأسهم الصحيح أو العودة إلى اختيار مستودع آخر.
WeightVolShort=Weight/Vol.
ValidateOrderFirstBeforeShipment=You must first validate the order before being able to make shipments.
# Sending methods # Sending methods
SendingMethodCATCH=القبض على العملاء SendingMethodCATCH=القبض على العملاء

View File

@ -58,3 +58,5 @@ DefaultModelSupplierProposalCreate=إنشاء نموذج افتراضي
DefaultModelSupplierProposalToBill=القالب الافتراضي عند إغلاق طلب السعر (مقبول) DefaultModelSupplierProposalToBill=القالب الافتراضي عند إغلاق طلب السعر (مقبول)
DefaultModelSupplierProposalClosed=القالب الافتراضي عند إغلاق طلب السعر (رفض) DefaultModelSupplierProposalClosed=القالب الافتراضي عند إغلاق طلب السعر (رفض)
ListOfSupplierProposal=قائمة الطلبات اقتراح المورد ListOfSupplierProposal=قائمة الطلبات اقتراح المورد
SupplierProposalsToClose=Supplier proposals to close
SupplierProposalsToProcess=Supplier proposals to process

View File

@ -1,22 +1,22 @@
# Dolibarr language file - en_US - Accounting Expert # Dolibarr language file - en_US - Accounting Expert
ACCOUNTING_EXPORT_SEPARATORCSV=Column separator for export file ACCOUNTING_EXPORT_SEPARATORCSV=Разделител за колона за експорт на файл
ACCOUNTING_EXPORT_DATE=Date format for export file ACCOUNTING_EXPORT_DATE=Формат на дата за експорт на файл
ACCOUNTING_EXPORT_PIECE=Export the number of piece ACCOUNTING_EXPORT_PIECE=Експортирай номера от частта
ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Export with global account ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Експортирай глобалния акаунт
ACCOUNTING_EXPORT_LABEL=Export the label ACCOUNTING_EXPORT_LABEL=Експортирай етикета
ACCOUNTING_EXPORT_AMOUNT=Export the amount ACCOUNTING_EXPORT_AMOUNT=Експортирай количеството
ACCOUNTING_EXPORT_DEVISE=Export the devise ACCOUNTING_EXPORT_DEVISE=Export the devise
Selectformat=Select the format for the file Selectformat=Избери формата за файла
ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name ACCOUNTING_EXPORT_PREFIX_SPEC=Уточнете префикса за името на файла
Accounting=Accounting Accounting=Accounting
Globalparameters=Global parameters Globalparameters=Глобални параметри
Menuaccount=Accounting accounts Menuaccount=Accounting accounts
Menuthirdpartyaccount=Thirdparty accounts Menuthirdpartyaccount=Thirdparty accounts
MenuTools=Инструменти MenuTools=Инструменти
ConfigAccountingExpert=Configuration of the module accounting expert ConfigAccountingExpert=Configuration of the module accounting expert
Journaux=Journals Journaux=Журнали
JournalFinancial=Financial journals JournalFinancial=Financial journals
Exports=Exports Exports=Exports
Export=Export Export=Export
@ -104,7 +104,7 @@ Code_tiers=Трета страна
Labelcompte=Етикет на сметка Labelcompte=Етикет на сметка
Sens=Sens Sens=Sens
Codejournal=Дневник Codejournal=Дневник
NumPiece=Piece number NumPiece=Номер на част
DelBookKeeping=Delete the records of the general ledger DelBookKeeping=Delete the records of the general ledger

View File

@ -154,7 +154,7 @@ Purge=Изчистване
PurgeAreaDesc=Тази страница ви позволява да изтриете всички файлове, които са построени или съхраняват от Dolibarr (временни файлове, или всички файлове в <b>%s</b> директория). Използването на тази функция не е необходимо. Тя е предвидена за потребители, чиито Dolibarr се хоства от доставчик, който не предлага разрешения за изтриване на файлове, построени от уеб сървъра. PurgeAreaDesc=Тази страница ви позволява да изтриете всички файлове, които са построени или съхраняват от Dolibarr (временни файлове, или всички файлове в <b>%s</b> директория). Използването на тази функция не е необходимо. Тя е предвидена за потребители, чиито Dolibarr се хоства от доставчик, който не предлага разрешения за изтриване на файлове, построени от уеб сървъра.
PurgeDeleteLogFile=Изтриване на влезете файлове <b>%s,</b> определени за Syslog модул (без риск от загуба на данни) PurgeDeleteLogFile=Изтриване на влезете файлове <b>%s,</b> определени за Syslog модул (без риск от загуба на данни)
PurgeDeleteTemporaryFiles=Изтриване на всички временни файлове (без риск от загуба на данни) PurgeDeleteTemporaryFiles=Изтриване на всички временни файлове (без риск от загуба на данни)
PurgeDeleteTemporaryFilesShort=Delete temporary files PurgeDeleteTemporaryFilesShort=Изтрий временните файлове
PurgeDeleteAllFilesInDocumentsDir=Изтриване на всички файлове в директорията <b>%s.</b> Временни файлове, но също така и резервната база данни сметища, файлове, прикрепени към елементи (контрагенти, фактури, ...) и качени в модул ECM ще бъдат изтрити. PurgeDeleteAllFilesInDocumentsDir=Изтриване на всички файлове в директорията <b>%s.</b> Временни файлове, но също така и резервната база данни сметища, файлове, прикрепени към елементи (контрагенти, фактури, ...) и качени в модул ECM ще бъдат изтрити.
PurgeRunNow=Изчистване сега PurgeRunNow=Изчистване сега
PurgeNothingToDelete=Директория или файл да изтриете. PurgeNothingToDelete=Директория или файл да изтриете.
@ -282,6 +282,7 @@ ModuleSetup=Настройки на модул
ModulesSetup=Настройки на модули ModulesSetup=Настройки на модули
ModuleFamilyBase=Система ModuleFamilyBase=Система
ModuleFamilyCrm=Управление на Връзки с клиенти (CRM) ModuleFamilyCrm=Управление на Връзки с клиенти (CRM)
ModuleFamilySrm=Supplier Relation Management (SRM)
ModuleFamilyProducts=Управление на продукти ModuleFamilyProducts=Управление на продукти
ModuleFamilyHr=Управление на човешките ресурси ModuleFamilyHr=Управление на човешките ресурси
ModuleFamilyProjects=Проекти / съвместна работа ModuleFamilyProjects=Проекти / съвместна работа
@ -394,8 +395,8 @@ ExtrafieldLink=Link to an object
ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key
ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>... ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>... ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter witch is the current id of current object<br>To do a SELECT in filter use $SEL$<br>if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpsellist=Листа с параметри е от таблицата<br>Синтаксис: table_name:label_field:id_field::filter<br>Пример : c_typent:libelle:id::filter<br><br>филтъра може да бъде просто тест (напр. активен=1) за да покаже само активната стойност<br>Вие също може да използвате $ID$ във филтър, който е в настоящото id от текущия обект<br>За да направите ИЗБОР в филтъра $SEL$<br>ако желаете да филтрирате допълнителните полета използвайте синтаксиса extra.fieldcode=... (където полето код е кодана допълнителното поле)<br><br>Реда на подреждането зависи от другите :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter witch is the current id of current object<br>To do a SELECT in filter use $SEL$<br>if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpchkbxlst=Листа с параметри е от таблицата<br>Синтаксис: table_name:label_field:id_field::filter<br>Пример : c_typent:libelle:id::filter<br><br>филтъра може да бъде просто тест (напр. активен=1) за да покаже само активната стойност<br>Вие също може да използвате $ID$ във филтър, който е в настоящото id от текущия обект<br>За да направите ИЗБОР в филтъра $SEL$<br>if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath<br>Syntax : ObjectName:Classpath<br>Example : Societe:societe/class/societe.class.php ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath<br>Syntax : ObjectName:Classpath<br>Example : Societe:societe/class/societe.class.php
LibraryToBuildPDF=Библиотека използвана за направа на PDF LibraryToBuildPDF=Библиотека използвана за направа на PDF
WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b> WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
@ -417,7 +418,7 @@ ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode
AllBarcodeReset=All barcode values have been removed AllBarcodeReset=All barcode values have been removed
NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup. NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup.
NoRecordWithoutBarcodeDefined=No record with no barcode value defined. NoRecordWithoutBarcodeDefined=No record with no barcode value defined.
EnableFileCache=Enable file cache EnableFileCache=Пусни кеширането на файла
# Modules # Modules
Module0Name=Потребители и групи Module0Name=Потребители и групи
@ -587,6 +588,7 @@ Permission38=Износ на продукти
Permission41=Read projects and tasks (shared project and projects i'm contact for). Can also enter time consumed on assigned tasks (timesheet) Permission41=Read projects and tasks (shared project and projects i'm contact for). Can also enter time consumed on assigned tasks (timesheet)
Permission42=Създаване / промяна на проекти (общи проекти и проекти съм се с нас за) Permission42=Създаване / промяна на проекти (общи проекти и проекти съм се с нас за)
Permission44=Изтриване на проекти (общи проекти и проекти съм се с нас за) Permission44=Изтриване на проекти (общи проекти и проекти съм се с нас за)
Permission45=Export projects
Permission61=Прочети интервенции Permission61=Прочети интервенции
Permission62=Създаване / промяна на интервенции Permission62=Създаване / промяна на интервенции
Permission64=Изтриване на интервенции Permission64=Изтриване на интервенции
@ -640,6 +642,7 @@ Permission162=Create/modify contracts/subscriptions
Permission163=Activate a service/subscription of a contract Permission163=Activate a service/subscription of a contract
Permission164=Disable a service/subscription of a contract Permission164=Disable a service/subscription of a contract
Permission165=Delete contracts/subscriptions Permission165=Delete contracts/subscriptions
Permission167=Export contracts
Permission171=Read trips and expenses (yours and your subordinates) Permission171=Read trips and expenses (yours and your subordinates)
Permission172=Create/modify trips and expenses Permission172=Create/modify trips and expenses
Permission173=Delete trips and expenses Permission173=Delete trips and expenses
@ -788,6 +791,7 @@ Permission2403=Изтрий действия (събития или задачи
Permission2411=Прочетете действия (събития или задачи) на другите Permission2411=Прочетете действия (събития или задачи) на другите
Permission2412=Създаване / промяна действия (събития или задачи) на другите Permission2412=Създаване / промяна действия (събития или задачи) на другите
Permission2413=Изтрий действия (събития или задачи) на другите Permission2413=Изтрий действия (събития или задачи) на другите
Permission2414=Export actions/tasks of others
Permission2501=/ Изтегляне документи Permission2501=/ Изтегляне документи
Permission2502=Изтегляне на документи Permission2502=Изтегляне на документи
Permission2503=Изпращане или изтриване на документи Permission2503=Изпращане или изтриване на документи
@ -1091,7 +1095,7 @@ SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail dire
TranslationSetup=Конфигурация на превода TranslationSetup=Конфигурация на превода
TranslationDesc=Езика на интерфейса може да бъде променен:<br> * Глобално от менюто <strong>Начало - Настройки - Екран</strong> <br> * Само за потребителя от таба <strong>Изглед</strong> в картата на потребителя (кликнете върху потребителското име в горната част на екрана). TranslationDesc=Езика на интерфейса може да бъде променен:<br> * Глобално от менюто <strong>Начало - Настройки - Екран</strong> <br> * Само за потребителя от таба <strong>Изглед</strong> в картата на потребителя (кликнете върху потребителското име в горната част на екрана).
TranslationOverwriteDesc=You can also overwrite some value by completing/editing the following table. You must use for "%s" the language code, for "%s" the key found into file langs/xx_XX/somefile.lang and "%s" the new value you want to use as new translation. TranslationOverwriteDesc=You can also overwrite some value by completing/editing the following table. You must use for "%s" the language code, for "%s" the key found into file langs/xx_XX/somefile.lang and "%s" the new value you want to use as new translation.
TotalNumberOfActivatedModules=Total number of activated feature modules: <b>%s</b> / <b>%s</b> TotalNumberOfActivatedModules=Общ брой на активираните модули: <b>%s</b> / <b>%s</b>
YouMustEnableOneModule=Трябва да даде възможност на най-малко 1 модул YouMustEnableOneModule=Трябва да даде възможност на най-малко 1 модул
ClassNotFoundIntoPathWarning=Class %s not found into PHP path ClassNotFoundIntoPathWarning=Class %s not found into PHP path
YesInSummer=Yes in summer YesInSummer=Yes in summer
@ -1641,7 +1645,7 @@ CloseFiscalYear=Close fiscal year
DeleteFiscalYear=Delete fiscal year DeleteFiscalYear=Delete fiscal year
ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ? ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ?
AlwaysEditable=Can always be edited AlwaysEditable=Can always be edited
IsHidden=Is not visible IsHidden=Не е видим
MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application)
NbMajMin=Minimum number of uppercase characters NbMajMin=Minimum number of uppercase characters
NbNumMin=Minimum number of numeric characters NbNumMin=Minimum number of numeric characters
@ -1669,8 +1673,8 @@ InstallModuleFromWebHasBeenDisabledByFile=Install of external module from applic
ConfFileMuseContainCustom=Installing an external module from application save the module files into directory <strong>%s</strong>. To have this directory processed by Dolibarr, you must setup your <strong>conf/conf.php</strong> to have option<br><strong>$dolibarr_main_url_root_alt='/custom';</strong><br><strong>$dolibarr_main_document_root_alt='%s/custom';</strong> ConfFileMuseContainCustom=Installing an external module from application save the module files into directory <strong>%s</strong>. To have this directory processed by Dolibarr, you must setup your <strong>conf/conf.php</strong> to have option<br><strong>$dolibarr_main_url_root_alt='/custom';</strong><br><strong>$dolibarr_main_document_root_alt='%s/custom';</strong>
HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over
HighlightLinesColor=Цвят за подчертаване на линията, когато мишката мине отгоре (оставете празно за без подчертаване) HighlightLinesColor=Цвят за подчертаване на линията, когато мишката мине отгоре (оставете празно за без подчертаване)
TextTitleColor=Color of page title TextTitleColor=Цвят на заглавието на страницата
LinkColor=Color of links LinkColor=Цвят на връзките
PressF5AfterChangingThis=Press F5 on keyboard after changing this value to have it effective PressF5AfterChangingThis=Press F5 on keyboard after changing this value to have it effective
NotSupportedByAllThemes=Will works with eldy theme but is not supported by all themes NotSupportedByAllThemes=Will works with eldy theme but is not supported by all themes
BackgroundColor=Background color BackgroundColor=Background color
@ -1713,3 +1717,4 @@ ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Ve
MultiPriceRuleDesc=Когато опция "Няколко нива за цени на продукт/услуга" е активирана, можете да определите различни цени (по една на ниво) за всеки продукт. За да спестите време, можете да въведете правило тук да имате цена за всяко ниво автоматично изчислена спрямо цената на първо ниво, така ще трябва да въведете само цена за първо ниво на всеки продукт. Тази страница, за да пести времето ви и може да бъде полезна само ако вашите цени за всяко ниво са относителни спрямо първото ниво. Можете да игнорирате тази страница в повечето случаи. MultiPriceRuleDesc=Когато опция "Няколко нива за цени на продукт/услуга" е активирана, можете да определите различни цени (по една на ниво) за всеки продукт. За да спестите време, можете да въведете правило тук да имате цена за всяко ниво автоматично изчислена спрямо цената на първо ниво, така ще трябва да въведете само цена за първо ниво на всеки продукт. Тази страница, за да пести времето ви и може да бъде полезна само ако вашите цени за всяко ниво са относителни спрямо първото ниво. Можете да игнорирате тази страница в повечето случаи.
ModelModulesProduct=Templates for product documents ModelModulesProduct=Templates for product documents
ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate automatically codes, you must first define a manager to auto define barcode number. ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate automatically codes, you must first define a manager to auto define barcode number.
SeeSubstitutionVars=See * note for list of possible substitution variables

View File

@ -219,6 +219,7 @@ RemainderToBill=Напомняне за фактуриране
SendBillByMail=Изпращане на фактура по имейл SendBillByMail=Изпращане на фактура по имейл
SendReminderBillByMail=Изпращане на напомняне по имейл SendReminderBillByMail=Изпращане на напомняне по имейл
RelatedCommercialProposals=Свързани търговски предложения RelatedCommercialProposals=Свързани търговски предложения
RelatedRecurringCustomerInvoices=Related recurring customer invoices
MenuToValid=За валидни MenuToValid=За валидни
DateMaxPayment=Дължимо плащане преди DateMaxPayment=Дължимо плащане преди
DateEcheance=Лимит за дължимо плащане DateEcheance=Лимит за дължимо плащане
@ -319,7 +320,6 @@ toolTipFrequency=Examples:<br /><b>Set 7 / day</b>: give a new invoice every 7 d
NextDateToExecution=Date for next invoice generation NextDateToExecution=Date for next invoice generation
DateLastGeneration=Date of last generation DateLastGeneration=Date of last generation
MaxPeriodNumber=Max nb of invoice generation MaxPeriodNumber=Max nb of invoice generation
RestPeriodNumber=Rest period number
NbOfGenerationDone=Nb of invoice generation already done NbOfGenerationDone=Nb of invoice generation already done
InvoiceAutoValidate=Automatically validate invoice InvoiceAutoValidate=Automatically validate invoice
GeneratedFromRecurringInvoice=Generated from template recurring invoice %s GeneratedFromRecurringInvoice=Generated from template recurring invoice %s
@ -471,3 +471,7 @@ PDFCrevetteSituationInvoiceLine=Situation N°%s : Inv. N°%s on %s
TotalSituationInvoice=Total situation TotalSituationInvoice=Total situation
invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line
updatePriceNextInvoiceErrorUpdateline=Error : update price on invoice line : %s updatePriceNextInvoiceErrorUpdateline=Error : update price on invoice line : %s
ToCreateARecurringInvoice=To create a recurring invoice for this contract, first create this draft invoice, then convert it into an invoice template and define the frequency for generation of future invoices.
ToCreateARecurringInvoiceGene=To generate future invoices regularly and manually, just go on menu <strong>%s - %s - %s</strong>.
ToCreateARecurringInvoiceGeneAuto=If you need to have such invoices generated automatically, ask you administrator to enable and setup module <strong>%s</strong>. Note that both method (manual and automatic) can be used together with no risk of duplication.

View File

@ -60,8 +60,8 @@ BoxTitleLastContracts=Последните %s договори
BoxTitleLastModifiedDonations=Последните %s променени дарения BoxTitleLastModifiedDonations=Последните %s променени дарения
BoxTitleLastModifiedExpenses=Last %s modified expense reports BoxTitleLastModifiedExpenses=Last %s modified expense reports
BoxGlobalActivity=Обща активност (фактури, предложения, поръчки) BoxGlobalActivity=Обща активност (фактури, предложения, поръчки)
BoxGoodCustomers=Good Customers BoxGoodCustomers=Good customers
BoxTitleGoodCustomers=%s Good Customers BoxTitleGoodCustomers=%s Good customers
FailedToRefreshDataInfoNotUpToDate=Неуспешно опресняване на RSS поток. Последното успешно опресняване е на дата: %s FailedToRefreshDataInfoNotUpToDate=Неуспешно опресняване на RSS поток. Последното успешно опресняване е на дата: %s
LastRefreshDate=Последна промяна дата LastRefreshDate=Последна промяна дата
NoRecordedBookmarks=Няма дефинирани отметки. NoRecordedBookmarks=Няма дефинирани отметки.

View File

@ -202,7 +202,7 @@ ProfId3IN=Prof Id 3 (SRVC TAX)
ProfId4IN=Prof Id 4 ProfId4IN=Prof Id 4
ProfId5IN=Prof Id 5 ProfId5IN=Prof Id 5
ProfId6IN=- ProfId6IN=-
ProfId1LU=Id. prof. 1 (RCS) ProfId1LU=Id. prof. 1 (R.C.S. Luxembourg)
ProfId2LU=Id. prof. 2 (Business permit) ProfId2LU=Id. prof. 2 (Business permit)
ProfId3LU=- ProfId3LU=-
ProfId4LU=- ProfId4LU=-
@ -317,10 +317,12 @@ ShowContact=Покажи контакт
ContactsAllShort=Всички (без филтър) ContactsAllShort=Всички (без филтър)
ContactType=Тип на контакт ContactType=Тип на контакт
ContactForOrders=Контакт за поръчката ContactForOrders=Контакт за поръчката
ContactForOrdersOrShipments=Order's or shipment's contact
ContactForProposals=Контакт за предложение ContactForProposals=Контакт за предложение
ContactForContracts=Контакт за договор ContactForContracts=Контакт за договор
ContactForInvoices=Контакт за фактура ContactForInvoices=Контакт за фактура
NoContactForAnyOrder=Този контакт не е контакт за поръчка NoContactForAnyOrder=Този контакт не е контакт за поръчка
NoContactForAnyOrderOrShipment=This contact is not a contact for any order or shipment
NoContactForAnyProposal=Този контакт не е контакт за търговско предложение NoContactForAnyProposal=Този контакт не е контакт за търговско предложение
NoContactForAnyContract=Този контакт не е контакт за договор NoContactForAnyContract=Този контакт не е контакт за договор
NoContactForAnyInvoice=Този контакт не е контакт за фактура NoContactForAnyInvoice=Този контакт не е контакт за фактура
@ -438,3 +440,6 @@ MergeThirdparties=Сливане на контрагенти
ConfirmMergeThirdparties=Сигурни ли сте че искате да слеете този контрагент в текущия? Всички свързани обекти (фактури, поръчки, ...) ще бъдат преместени към текущия контрагент. ConfirmMergeThirdparties=Сигурни ли сте че искате да слеете този контрагент в текущия? Всички свързани обекти (фактури, поръчки, ...) ще бъдат преместени към текущия контрагент.
ThirdpartiesMergeSuccess=Контрагентите бяха обединени ThirdpartiesMergeSuccess=Контрагентите бяха обединени
ErrorThirdpartiesMerge=Има грешка при изтриването на контрагентите. Моля проверете системните записи. Промените са възвърнати. ErrorThirdpartiesMerge=Има грешка при изтриването на контрагентите. Моля проверете системните записи. Промените са възвърнати.
SaleRepresentativeLogin=Login of sale representative
SaleRepresentativeFirstname=Firstname of sale representative
SaleRepresentativeLastname=Lastname of sale representative

View File

@ -172,6 +172,8 @@ ErrorMandatoryParametersNotProvided=Задължителен параметър(
ErrorOppStatusRequiredIfAmount=You set an estimated amount for this opportunity/lead. So you must also enter its status ErrorOppStatusRequiredIfAmount=You set an estimated amount for this opportunity/lead. So you must also enter its status
ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu) ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu)
ErrorSavingChanges=An error has ocurred when saving the changes ErrorSavingChanges=An error has ocurred when saving the changes
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
ErrorFileMustHaveFormat=File must have format %s
# Warnings # Warnings
WarningPasswordSetWithNoAccount=Парола е зададено за този член. Обаче, няма създаден потребителски акаунт. Следователно тази парола е записана, но не може да бъде използвана за влизане в Dolibarr. Може да бъде използвана от външен модул/интерфейс, но ако нямате нужда да определите нито потребителско име нито парола за член, можете да деактивирате тази опция. Ако имате нужда да управлявате потребителско име, но нямата нужда от парола, можете да оставите това поле празно, за да избегнете това предупреждение. Забележка: Имейл също може да бъде използван като потребителско име ако члена с свързан към потребител. WarningPasswordSetWithNoAccount=Парола е зададено за този член. Обаче, няма създаден потребителски акаунт. Следователно тази парола е записана, но не може да бъде използвана за влизане в Dolibarr. Може да бъде използвана от външен модул/интерфейс, но ако нямате нужда да определите нито потребителско име нито парола за член, можете да деактивирате тази опция. Ако имате нужда да управлявате потребителско име, но нямата нужда от парола, можете да оставите това поле празно, за да избегнете това предупреждение. Забележка: Имейл също може да бъде използван като потребителско име ако члена с свързан към потребител.

View File

@ -128,6 +128,10 @@ SpecialCode=Специален код
ExportStringFilter=%% позволява заместването на един или повече знаци в текста ExportStringFilter=%% позволява заместването на един или повече знаци в текста
ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day<br>YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days<br> > YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days<br> < YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day<br>YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days<br> > YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days<br> < YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days
ExportNumericFilter='NNNNN' filters by one value<br>'NNNNN+NNNNN' filters over a range of values<br>'&gt;NNNNN' filters by lower values<br>'&gt;NNNNN' filters by higher values ExportNumericFilter='NNNNN' filters by one value<br>'NNNNN+NNNNN' filters over a range of values<br>'&gt;NNNNN' filters by lower values<br>'&gt;NNNNN' filters by higher values
ImportFromLine=Import starting from line number
EndAtLineNb=End at line number
SetThisValueTo2ToExcludeFirstLine=For example, set this value to 3 to exclude the 2 first lines
KeepEmptyToGoToEndOfFile=Keep this field empty to go up to the end of file
## filters ## filters
SelectFilterFields=Ако желаете на филтрирате по някои стойности, просто въведете стойностите тук. SelectFilterFields=Ако желаете на филтрирате по някои стойности, просто въведете стойностите тук.
FilterableFields=Полета подлежащи на филтриране FilterableFields=Полета подлежащи на филтриране

View File

@ -23,78 +23,78 @@ ErrorPHPDoesNotSupportUTF8=Вашата PHP инсталация не поддъ
ErrorDirDoesNotExists=Директорията %s не съществува. ErrorDirDoesNotExists=Директорията %s не съществува.
ErrorGoBackAndCorrectParameters=Върни се назад и коригирайте грешните параметри. ErrorGoBackAndCorrectParameters=Върни се назад и коригирайте грешните параметри.
ErrorWrongValueForParameter=Може да сте въвели грешна стойност за параметър '%s'. ErrorWrongValueForParameter=Може да сте въвели грешна стойност за параметър '%s'.
ErrorFailedToCreateDatabase=Неуспешно създаване на '%s' база данни. ErrorFailedToCreateDatabase=Неуспешно създаване на базата данни '%s'.
ErrorFailedToConnectToDatabase=Неуспешна връзка с база данни '%s'. ErrorFailedToConnectToDatabase=Неуспешна връзка с база данни '%s'.
ErrorDatabaseVersionTooLow=Версията на база данни (%s) е твърде стара. Версия %s или по-висока е нужна. ErrorDatabaseVersionTooLow=Версията на базата данни (%s) е твърде стара. Изисква се версия %s или по-нова.
ErrorPHPVersionTooLow=PHP версия твърде стар. Версия %s се изисква. ErrorPHPVersionTooLow=Версията на PHP е твърде стара. Изисква се версия %s.
WarningPHPVersionTooLow=PHP версия твърде стар. Версия %s или повече се очаква. Тази версия би трябвало да позволи инсталиране, но не се поддържа. WarningPHPVersionTooLow=Версията на PHP е твърде стара. Очаква се версия %s или по-нова. Тази версия би трябвало да позволи инсталиране, но не се поддържа.
ErrorConnectedButDatabaseNotFound=Връзка към сървъра успешен, но &quot;%s&quot; база данни не е намерен. ErrorConnectedButDatabaseNotFound=Свързването към сървъра е успешено, но базата данни '%s' не е открита.
ErrorDatabaseAlreadyExists=Базата данни %s вече съществува. ErrorDatabaseAlreadyExists=Базата данни %s вече съществува.
IfDatabaseNotExistsGoBackAndUncheckCreate=Ако базата данни не съществува, върнете се назад и проверете опцията &quot;Създаване на база данни&quot;. IfDatabaseNotExistsGoBackAndUncheckCreate=Ако базата данни не съществува, върнете се назад и проверете опцията "Създаване на база данни".
IfDatabaseExistsGoBackAndCheckCreate=Ако базата данни вече съществува, върнете се обратно и махнете отметката &quot;Създаване на база от данни&quot;. IfDatabaseExistsGoBackAndCheckCreate=Ако базата данни вече съществува, върнете се обратно и махнете отметката на "Създаване на база данни".
WarningBrowserTooOld=Е твърде стара версия на браузъра. Надстроите браузъра си до последната версия на Firefox, Chrome или Opera се лекува много. WarningBrowserTooOld=Твърде стара версия на браузъра. Надстройването на браузъра ви до последната версия на Firefox, Chrome или Opera е силно препоръчително.
PHPVersion=Версия на PHP PHPVersion=Версия на PHP
YouCanContinue=Можете да продължите ... YouCanContinue=Може да продължите..
License=Използването на лиценз License=Лиценз за използване
ConfigurationFile=Конфигурационният файл ConfigurationFile=Конфигурационен файл
WebPagesDirectory=Директорията, в която се съхраняват уеб страници WebPagesDirectory=Директорията, в която се съхраняват уеб страници
DocumentsDirectory=Директория за съхраняване качили и генерирани документи DocumentsDirectory=Директория за съхраняване качени и генерирани документи
URLRoot=URL Root URLRoot=URL корен
ForceHttps=Принудително сигурни връзки (HTTPS) ForceHttps=Принудително сигурни връзки (HTTPS)
CheckToForceHttps=Изберете тази опция, за да принуди сигурни връзки (HTTPS). <br> Това означава, че уеб сървърът е конфигуриран с SSL сертификат. CheckToForceHttps=Изберете тази опция, за принудително сигурни връзки (HTTPS). <br> Това означава, че уеб сървърът е конфигуриран с SSL сертификат.
DolibarrDatabase=Dolibarr База данни DolibarrDatabase=База данни на Dolibarr
DatabaseChoice=Избор на база данни DatabaseChoice=Избор на база данни
DatabaseType=Тип на базата данни DatabaseType=Тип на базата данни
DriverType=Тип драйвер DriverType=Тип драйвер
Server=Сървър Server=Сървър
ServerAddressDescription=Име или IP адрес на сървъра на базата данни, обикновено &quot;Localhost&quot;, когато сървъра на базата данни се хоства на същия сървър от уеб сървър ServerAddressDescription=Име или IP адрес на сървъра на базата данни, обикновено 'localhost', когато сървъра на базата данни се хоства на същия сървър като уеб сървъра
ServerPortDescription=База данни на порта на сървъра. Дръжте празна, ако са неизвестни. ServerPortDescription=Порт на сървъра на базата данни. Оставете празно ако е неизвестно.
DatabaseServer=Сървър на базата данни DatabaseServer=Сървър на базата данни
DatabaseName=Име на базата данни DatabaseName=Име на базата данни
DatabasePrefix=Таблицата база данни префикс DatabasePrefix=Префикс на таблиците
AdminLogin=Влез за база данни Dolibarr собственик. AdminLogin=Идентифициране на собственика на базата данни на Dolibarr.
PasswordAgain=Повтори парола за втори път PasswordAgain=Въведете паролата отново
AdminPassword=Парола за база данни Dolibarr собственик. AdminPassword=Парола на собственика на базата данни на Dolibarr.
CreateDatabase=Създаване на база данни CreateDatabase=Създаване на база данни
CreateUser=Създаване на собственик CreateUser=Създаване на собственик
DatabaseSuperUserAccess=Сървъра на база данни - достъп Суперпотребител DatabaseSuperUserAccess=Сървър на базата данни - Достъп супер потребител
CheckToCreateDatabase=Отметка в квадратчето, ако базата данни не съществува и трябва да бъде създаден. <br> В този случай, трябва да попълните потребителско име / парола за за суперпотребител сметка в долната част на тази страница. CheckToCreateDatabase=Отметнете ако базата данни не съществува и трябва да бъде създадена. <br> В този случай, трябва да попълните потребителско име/парола за профил на суперпотребител в долната част на тази страница.
CheckToCreateUser=Отметка в квадратчето, ако собственик на базата данни не съществува и трябва да бъде създаден. <br> В този случай, трябва да изберете потребителско име и парола и да попълните име / парола за суперпотребител сметка в долната част на тази страница. Ако това поле не е отметнато, собственик на база данни и пароли трябва да съществува. CheckToCreateUser=Отметнете ако собственика на базата данни не съществува и трябва да бъде създаден. <br> В този случай, трябва да изберете потребителско име и парола за него и да попълните име/парола за профил на суперпотребител в долната част на тази страница. Ако това поле не е отметнато, собственика на базата данни и неговите пароли трябва да съществуват.
DatabaseRootLoginDescription=Вход на потребителя е разрешено да създавате нови бази данни или нови потребители, безполезна, ако вашата база данни и потребителско име база данни вече съществува (като, когато сте домакин на уеб доставчик на хостинг услуги). DatabaseRootLoginDescription=Идентифицирането на потребителя му позволява да създава нови бази данни или нови потребители, задължително ако вашата база данни или нейния собственик вече не съществуват.
KeepEmptyIfNoPassword=Оставете празно, ако потребителят не разполага с парола (да се избягва този) KeepEmptyIfNoPassword=Оставете празно, ако потребителят няма парола (избягвайте това)
SaveConfigurationFile=Запиши стойности SaveConfigurationFile=Регистрация на конфигурационния файл
ConfigurationSaving=Запазване на конфигурационния файл ConfigurationSaving=Записване на конфигурационния файл
ServerConnection=Връзката със сървъра ServerConnection=Свързване със сървъра
DatabaseCreation=Създаването на база данни DatabaseCreation=Създаване на база данни
UserCreation=Създаване на потребител UserCreation=Създаване на потребител
CreateDatabaseObjects=Database обекти създаването CreateDatabaseObjects=Създаване на обекти в базата данни
ReferenceDataLoading=Референтен данни натоварване ReferenceDataLoading=Зареждане на референтни данни
TablesAndPrimaryKeysCreation=Маси и първични ключове за създаване на TablesAndPrimaryKeysCreation=Създаване на таблици и първични ключове
CreateTableAndPrimaryKey=Създаване на таблица %s CreateTableAndPrimaryKey=Създаване на таблицата %s
CreateOtherKeysForTable=Създаване на чужди ключове и индекси за трапезни %s CreateOtherKeysForTable=Създаване на чужди ключове и индекси за таблицата %s
OtherKeysCreation=Чужди ключове и създаване на индекси OtherKeysCreation=Създаване на чужди ключове и индекси
FunctionsCreation=Функции създаването FunctionsCreation=Създаване на функции
AdminAccountCreation=Създаване на администратор вход AdminAccountCreation=Създаване на администраторски профил
PleaseTypePassword=Моля въведете парола, празни пароли не са позволени! PleaseTypePassword=Моля, въведете парола, празни пароли не са позволени!
PleaseTypeALogin=Моля, въведете вход! PleaseTypeALogin=Моля, въведете име!
PasswordsMismatch=Паролите се различава, моля опитайте отново! PasswordsMismatch=Паролите не съвпадат, опитайте отново!
SetupEnd=Край на настройките SetupEnd=Край на настройкате
SystemIsInstalled=Инсталацията е завършена. SystemIsInstalled=Инсталирането завърши.
SystemIsUpgraded=Dolibarr е обновен успешно. SystemIsUpgraded=Dolibarr е обновен успешно.
YouNeedToPersonalizeSetup=Трябва да конфигурирате Dolibarr според вашите нужди (външен вид, функции, ...). За да направите това, моля последвайте линка по-долу: YouNeedToPersonalizeSetup=Трябва да конфигурирате Dolibarr според вашите нужди (външен вид, функции, ...). За да направите това, моля последвайте връзката по-долу:
AdminLoginCreatedSuccessfuly=<b>&quot;%s&quot;</b> dolibarr администратор вход, създаден успешно. AdminLoginCreatedSuccessfuly=Администраторския профил за Dolibarr '<b>%s</b>' е създаден успешно.
GoToDolibarr=Отиди на Dolibarr GoToDolibarr=Отиди на Dolibarr
GoToSetupArea=Отиди на Dolibarr (Настройки) GoToSetupArea=Отиди на Dolibarr (област за настройка)
MigrationNotFinished=Версия на базата данни не е напълно актуална, така че ще трябва отново да стартирате процеса на надграждане. MigrationNotFinished=Версията на вашата база данни не е напълно актуална, така че ще трябва отново да стартирате процеса на надграждане.
GoToUpgradePage=Отидете отново на страницата за обновяване GoToUpgradePage=Отидете отново на страницата за надграждане
WithNoSlashAtTheEnd=Без наклонена черта &quot;/&quot; в края WithNoSlashAtTheEnd=Без наклонена черта "/" в края
DirectoryRecommendation=Се recommanded да използвате директория извън директорията на своите уеб страници. DirectoryRecommendation=Препоръчва се да използвате директория извън директорията на своите уеб страници.
LoginAlreadyExists=Вече съществува LoginAlreadyExists=Вече съществува
DolibarrAdminLogin=Dolibarr администраторски вход DolibarrAdminLogin=Администраторски вход в Dolibarr
AdminLoginAlreadyExists=<b>&quot;%s</b> dolibarr администраторски акаунт вече съществува. Върни се обратно, ако искате да създадете друга. AdminLoginAlreadyExists=Администраторския профил за Dolibarr '<b>%s</b>' вече съществува. Върнете се назад, ако искате да създадете друг.
WarningRemoveInstallDir=Внимание, от съображения за сигурност, след инсталиране или надграждане е пълна, за да се избегне използването инсталирате инструменти отново, трябва да добавите файл наречен <b>install.lock</b> в документа Dolibarr директория, за да се избегнат злоупотребите от него. WarningRemoveInstallDir=Внимание, от съображения за сигурност, след като ведъж инсталирането или надграждането завърши, за да се избегне ново използване на инструментите за инсталиране, трябва да добавите файл наречен <b>install.lock</b> в директорията с документи на Dolibarr, за да се избегне злонамерена употреба.
ThisPHPDoesNotSupportTypeBase=Тази система PHP не поддържа интерфейс за достъп до %s тип база от данни ThisPHPDoesNotSupportTypeBase=Тази PHP система не поддържа интерфейс за достъп до бази данни от тип %s
FunctionNotAvailableInThisPHP=Не е наличен за тази PHP FunctionNotAvailableInThisPHP=Не е наличено за това PHP
MigrateScript=Скрипт за миграция MigrateScript=Скрипт за миграция
ChoosedMigrateScript=Изберете скрипт за миграция ChoosedMigrateScript=Изберете скрипт за миграция
DataMigration=Миграция на данните DataMigration=Миграция на данните
@ -102,106 +102,106 @@ DatabaseMigration=Миграция на структурата на базата
ProcessMigrateScript=Скрипта обработва ProcessMigrateScript=Скрипта обработва
ChooseYourSetupMode=Изберете режим на настройка и кликнете върху "Начало"... ChooseYourSetupMode=Изберете режим на настройка и кликнете върху "Начало"...
FreshInstall=Нова инсталация FreshInstall=Нова инсталация
FreshInstallDesc=Използвайте този режим, ако това е Вашето първо инсталиране. Ако това не е така, този режим може да поправи непълна предишна инсталация, но ако искате да надградите вашата версия, изберете режим "Обновяване". FreshInstallDesc=Използвайте този режим, ако това е вашето първо инсталиране. Ако това не е така, този режим може да поправи непълна предишна инсталация, но ако искате да надградите вашата версия, изберете режим "Надграждане".
Upgrade=Обновяване Upgrade=Надграждане
UpgradeDesc=Използвайте този режим, ако желаете да замените старите файлове на Dolibarr с файлове от по-нова версия. Това ще обнови вашата база данни и данни. UpgradeDesc=Използвайте този режим, ако желаете да замените старите файлове на Dolibarr с файлове от по-нова версия. Това ще обнови вашата база данни и данни.
Start=Начало Start=Начало
InstallNotAllowed=Настройка не разрешено от <b>conf.php</b> разрешения InstallNotAllowed=Настройката не разрешена поради правата на файла <b>conf.php</b>
YouMustCreateWithPermission=Трябва да създадете файлове %s и права за писане върху нея за уеб сървъра по време на процеса на инсталиране. YouMustCreateWithPermission=Трябва да създадете файл %s и да настроите права за запис в него от уеб сървъра по време на процеса на инсталиране.
CorrectProblemAndReloadPage=Моля, коригирайте проблема и натиснете F5, за да презаредите страницата. CorrectProblemAndReloadPage=Моля, коригирайте проблема и натиснете F5, за да презаредите страницата.
AlreadyDone=Вече са мигрирали AlreadyDone=Вече мигрирахте
DatabaseVersion=Версия на Базата данни DatabaseVersion=Версия на базата данни
ServerVersion=Версия на сървъра на базата данни ServerVersion=Версия на сървъра на базата данни
YouMustCreateItAndAllowServerToWrite=Трябва да създадете тази директория и да позволите на уеб сървъра да пише в нея. YouMustCreateItAndAllowServerToWrite=Трябва да създадете тази директория и да позволите на уеб сървъра да записва в нея.
CharsetChoice=Избор на знаците CharsetChoice=Избор на знаците
CharacterSetClient=Набор от символи, използвани за генерираните HTML уеб страници CharacterSetClient=Набор от символи, използвани за генерираните HTML уеб страници
CharacterSetClientComment=Изберете набор от знаци за уеб дисплей. <br/> Default предлагания набор от символи е един от вашата база данни. CharacterSetClientComment=Изберете кодиране, което искате за показване на страници. <br/> Кодирането, предложено по подразбиране е едно от вашата база данни.
DBSortingCollation=За символи сортиране DBSortingCollation=Ред за сортиране на символи
DBSortingCollationComment=Изберете кода на страницата, която определя подреждане характер, използван от база данни. Този параметър се нарича &quot;съпоставяне&quot; от някои бази данни. <br/> Този параметър не може да бъде определена, ако базата данни вече съществува. DBSortingCollationComment=Изберете кода на страницата, която определя сортиране на символите, използвано от базата данни. Този параметър се нарича 'collation' от някои бази данни. <br/> Този параметър не може да бъде дефиниран, ако базата данни вече съществува.
CharacterSetDatabase=Набор от знаци за база данни CharacterSetDatabase=Набор от символи за базата данни
CharacterSetDatabaseComment=Изберете набор от символи, издирван за създаването на базата данни. <br/> Този параметър не може да бъде определена, ако базата данни вече съществува. CharacterSetDatabaseComment=Изберете набор от символи, търсен за създаването на базата данни. <br/> Този параметър не може да бъде дефиниран, ако базата данни вече съществува.
YouAskDatabaseCreationSoDolibarrNeedToConnect=Ви помолим да създадете база данни <b>%s,</b> но за това, Dolibarr трябва да се свържете на сървъра <b>%s</b> с супер потребителски разрешения <b>%s.</b> YouAskDatabaseCreationSoDolibarrNeedToConnect=Искате да създадете база данни <b>%s</b>, но за това Dolibarr трябва да се свърже със сървъра <b>%s</b> чрез супер потребителя <b>%s</b>.
YouAskLoginCreationSoDolibarrNeedToConnect=Ви помолим да създадете вход база данни <b>%s,</b> но за това, Dolibarr трябва да се свържете на сървъра <b>%s</b> с супер потребителски разрешения <b>%s.</b> YouAskLoginCreationSoDolibarrNeedToConnect=Искате да създадете вход за база данни <b>%s</b>, но за това Dolibarr трябва да се свърже със сървъра <b>%s</b> чрез супер потребителя <b>%s</b>.
BecauseConnectionFailedParametersMayBeWrong=Тъй като свързването е неуспешно, хост или супер параметри на потребителите трябва да бъде погрешно. BecauseConnectionFailedParametersMayBeWrong=Тъй като свързването е неуспешно, хоста или параметрите на супер потребителя трябва да са грешни.
OrphelinsPaymentsDetectedByMethod=Сираците плащане открити по метода на %s OrphelinsPaymentsDetectedByMethod=Orphans плащане е открито по метода %s
RemoveItManuallyAndPressF5ToContinue=Извадете го ръчно и натиснете F5, за да продължите. RemoveItManuallyAndPressF5ToContinue=Премахнете го ръчно и натиснете F5, за да продължите.
KeepDefaultValuesWamp=Можете да използвате настройка Dolibarr програма от DoliWamp, така че стойности, предложени тук вече са оптимизирани. Ги промените, само ако знаете какво правите. KeepDefaultValuesWamp=Вие използвате помощника за настройка на Dolibarr от DoliWamp, така че стойностите, предложени тук вече са оптимизирани. Променете ги само ако знаете какво правите.
KeepDefaultValuesDeb=Можете да използвате съветника от настройката Dolibarr Linux пакет (Ubuntu, Debian, Fedora ...), така че стойностите, предложени тук вече са оптимизирани. Само паролата на собственика на базата данни, за да се създаде, трябва да бъде завършена. Промяна на други параметри, само ако знаете какво правите. KeepDefaultValuesDeb=Вие използвате помощника за настройка на Dolibarr от пакет за Linux (Ubuntu, Debian, Fedora ...), така че стойностите, предложени тук вече са оптимизирани. Само създаването на парола на собственика на базата данни трябва да бъде завършена. Променяйте други параметри, само ако знаете какво правите.
KeepDefaultValuesMamp=Можете да използвате настройка Dolibarr програма от DoliMamp, така че стойности, предложени тук вече са оптимизирани. Ги промените, само ако знаете какво правите. KeepDefaultValuesMamp=Вие използвате помощника за настройка на Dolibarr от DoliMamp, така че стойностите, предложени тук вече са оптимизирани. Променете ги само ако знаете какво правите.
KeepDefaultValuesProxmox=Можете да използвате съветника от настройката Dolibarr виртуална Proxmox уред, така че стойностите, предложени тук вече са оптимизирани. Ги промените, само ако знаете какво правите. KeepDefaultValuesProxmox=Вие използвате помощника за настройка на Dolibarr от Proxmox виртуална машина, така че стойностите, предложени тук вече са оптимизирани. Променете ги само ако знаете какво правите.
FieldRenamed=Полето е преименувано FieldRenamed=Полето е преименувано
IfLoginDoesNotExistsCheckCreateUser=Ако вход не съществува все още, трябва да проверите опцията &quot;Създаване на потребител&quot; IfLoginDoesNotExistsCheckCreateUser=Ако все още не съществува вписване, трябва да проверите опцията "Създаване на потребител"
ErrorConnection=Server <b>&quot;%s&quot;,</b> името на базата данни <b>&quot;%s&quot;,</b> вход <b>&quot;%s&quot;</b> или парола на базата данни може да бъде погрешно или PHP версия на програмата клиент може да бъде твърде стар в сравнение с база данни версия. ErrorConnection=Сървър "<b>%s</b>", име на база данни "<b>%s</b>", потребител "<b>%s</b>", или парола на базата данни може да са грешни или версията на PHP клиента може да е твърде стара, сравнена с версията на базата данни.
InstallChoiceRecommanded=Препоръчва се избор да инсталирате версия <b>%s</b> от текущата ви версия <b>%s</b> InstallChoiceRecommanded=Препоръчителен избор е да инсталирате версия <b>%s</b> от вашата текуща версия <b>%s</b>
InstallChoiceSuggested=<b>Инсталиране на избор, предложени от инсталатора.</b> InstallChoiceSuggested=<b>Избор за инсталиране, предложен от инсталатора</b>.
MigrateIsDoneStepByStep=Насочени версия (%s) има разлика от няколко версии, за да инсталирате съветника ще се върне, за да предложи следващата миграция след това ще бъдат завършени. MigrateIsDoneStepByStep=Целевата версия (%s) има празнина от няколко версии, така че помощника ще препоръча следваща миграция, след като тази завърши.
CheckThatDatabasenameIsCorrect=Уверете се, че името на базата данни <b>&quot;%s&quot;</b> е вярно. CheckThatDatabasenameIsCorrect=Уверете се, че името на базата данни "<b>%s</b>" е правилно.
IfAlreadyExistsCheckOption=Ако това име е вярна и тази база данни все още не съществува, трябва да проверите опцията &quot;Създаване на база данни&quot;. IfAlreadyExistsCheckOption=Ако това име е вярно и тази база данни все още не съществува, трябва да проверите опцията "Създаване на база данни".
OpenBaseDir=PHP openbasedir параметър OpenBaseDir=Параметър PHP openbasedir
YouAskToCreateDatabaseSoRootRequired=Отметка в квадратчето &quot;Създаване на база данни&quot;. За тази цел, трябва да въведете потребителско име / парола суперпотребител (дъното на формата). YouAskToCreateDatabaseSoRootRequired=Отметнахте "Създаване на база данни". За тази цел, трябва да въведете потребителско име/парола на супер потребител (най-долу на формата).
YouAskToCreateDatabaseUserSoRootRequired=Отметка в квадратчето &quot;Създаване на собственика на базата данни&quot;. За тази цел, трябва да въведете потребителско име / парола суперпотребител (дъното на формата). YouAskToCreateDatabaseUserSoRootRequired=Отметнахте "Създаване на собственик на базата данни". За тази цел, трябва да въведете потребителско име/парола на супер потребител (най-долу на формата).
NextStepMightLastALongTime=Текущата стъпка може да продължи няколко минути. Моля, изчакайте до следващия екран се показва напълно, преди да продължите. NextStepMightLastALongTime=Текущата стъпка може да продължи няколко минути. Моля, изчакайте докато следващия екран се покаже напълно, преди да продължите.
MigrationCustomerOrderShipping=Мигриране доставка за поръчки от клиенти съхранение MigrationCustomerOrderShipping=Мигриране на хранилище за пратки на поръчки от клиенти
MigrationShippingDelivery=Upgrade storage of shipping MigrationShippingDelivery=Надграждане на хранилище на доставки
MigrationShippingDelivery2=Upgrade storage of shipping 2 MigrationShippingDelivery2=Надграждане на хранилище на доставки 2
MigrationFinished=Миграцията завърши MigrationFinished=Миграцията завърши
LastStepDesc=<strong>Последна стъпка:</strong> Определете тук потребителско име и парола, планирате да използвате, за да се свържете с софтуер. Не губят, тъй като това е акаунт за администриране на всички останали. LastStepDesc=<strong>Последна стъпка</strong>: Определете тук потребителско име и парола, които планирате да използвате, за да се свързвате със софтуера. Не ги губете, тъй като това е профил за администриране на всички останали.
ActivateModule=Активиране на модул %s ActivateModule=Активиране на модул %s
ShowEditTechnicalParameters=Натиснете тук за да покажете/редактирате параметрите за напреднали (експертен режим) ShowEditTechnicalParameters=Натиснете тук за да покажете/редактирате параметрите за напреднали (експертен режим)
WarningUpgrade=Внимание:\nНаправили ли сте резервно копие на базата данни първо?\nТова е много препоръчително: например, поради някой бъгове в системите за база данни (например mysql версия 5.5.40/41/42/43), част от информация или таблици може да бъде изгубени по-време на този процес, за това е много препоръчително да имате пълен dump на вашата база данни преди започването на миграцията.\n\nКликнете OK за започване на миграционния процес... WarningUpgrade=Внимание:\nНаправихте ли резервно копие на базата данни първо?\nТова е силно препоръчително: например, поради някой бъгове в системите на базата данни (например mysql версия 5.5.40/41/42/43), част от информацията или таблиците може да бъдат изгубени по-време на този процес, за това е много препоръчително да имате пълен dump на вашата база данни преди започването на миграцията.\n\nКликнете OK за започване на миграционния процес...
ErrorDatabaseVersionForbiddenForMigration=Вашата база данни е с версия %s. Тя има критически бъг, причинявайки загуба на информация ако направите структурна промяна на вашата база данни, подобна е задължителна при миграционния процес. Поради тази причина, миграцията не ще бъде позволена, докато не обновите вашата база данни до по висока оправена версия (списък на познати бъгави версии: %s) ErrorDatabaseVersionForbiddenForMigration=Вашата база данни е с версия %s. Тя има критичен бъг, причинявайки загуба на информация ако направите структурна промяна на вашата база данни, а подобна е задължителна при миграционния процес. Поради тази причина, миграцията не е позволена, докато не обновите вашата база данни до по-нова коригирана версия (списък на познати версии с бъгове: %s)
######### #########
# upgrade # upgrade
MigrationFixData=Решете denormalized данни MigrationFixData=Корекция на denormalized данни
MigrationOrder=Миграция на данни за поръчки на клиента MigrationOrder=Миграция на данни за поръчки от клиенти
MigrationSupplierOrder=Миграция на данни за поръчки на доставчика MigrationSupplierOrder=Миграция на данни за поръчки към доставчик
MigrationProposal=Миграция на данни за търговски предложения MigrationProposal=Миграция на данни за оферти
MigrationInvoice=Миграция на данни за фактури на клиента MigrationInvoice=Миграция на данни за фактури за клиенти
MigrationContract=Миграция на данни за сключване на договори MigrationContract=Миграция на данни за договори
MigrationSuccessfullUpdate=Обновяването е успешно MigrationSuccessfullUpdate=Надграждането е успешно
MigrationUpdateFailed=Неуспешен процес на надграждане MigrationUpdateFailed=Неуспешен процес на надграждане
MigrationRelationshipTables=Миграцията на данни за отношенията таблици (%s) MigrationRelationshipTables=Миграция на данни за свързани таблици (%s)
MigrationPaymentsUpdate=Плащане данни корекция MigrationPaymentsUpdate=Корекция на данни за плащане
MigrationPaymentsNumberToUpdate=%s плащане (ия), за да се актуализира MigrationPaymentsNumberToUpdate=%s плащания за актуализиране
MigrationProcessPaymentUpdate=Актуализиране на плащане (ия) %s MigrationProcessPaymentUpdate=Актуализиране на плащания %s
MigrationPaymentsNothingToUpdate=Няма повече неща за вършене MigrationPaymentsNothingToUpdate=Няма повече задачи
MigrationPaymentsNothingUpdatable=Няма повече плащания, които могат да бъдат коригирани MigrationPaymentsNothingUpdatable=Няма повече плащания, които могат да бъдат коригирани
MigrationContractsUpdate=Договор данни корекция MigrationContractsUpdate=Корекция на данни в договор
MigrationContractsNumberToUpdate=%s договор(и) за актуализиране MigrationContractsNumberToUpdate=%s договор(и) за актуализиране
MigrationContractsLineCreation=Създаване на договора линия за %s договор изх MigrationContractsLineCreation=Създаване на ред в договор с реф. %s
MigrationContractsNothingToUpdate=Няма повече неща за вършене MigrationContractsNothingToUpdate=Няма повече задачи
MigrationContractsFieldDontExist=Поле fk_facture не съществува вече. Какво да правя. MigrationContractsFieldDontExist=Полето fk_facture вече не съществува. Нищо не може да се направи.
MigrationContractsEmptyDatesUpdate=Договор празна дата корекция MigrationContractsEmptyDatesUpdate=Корекция на празна дата в договор
MigrationContractsEmptyDatesUpdateSuccess=Направи успешно Договор за корекция emtpy дата MigrationContractsEmptyDatesUpdateSuccess=Успешна корекция на празна дата
MigrationContractsEmptyDatesNothingToUpdate=Няма договор е празна дата, за да се коригира MigrationContractsEmptyDatesNothingToUpdate=Няма празна дата на договор за коригиране
MigrationContractsEmptyCreationDatesNothingToUpdate=Не дата за създаването на договор, за да се коригира MigrationContractsEmptyCreationDatesNothingToUpdate=Няма дата за създаване на договор за коригиране
MigrationContractsInvalidDatesUpdate=Неправилна стойност за корекция дата договор MigrationContractsInvalidDatesUpdate=Корекция на неправилни дати на договор
MigrationContractsInvalidDateFix=Правилно %s договора (дата на договора = %s, като се започне обслужване дата мин. = %s) MigrationContractsInvalidDateFix=Корекция на договор %s (Дата на договора=%s, Начална дата на услуга мин.=%s)
MigrationContractsInvalidDatesNumber=%s променени договори MigrationContractsInvalidDatesNumber=%s променени договори
MigrationContractsInvalidDatesNothingToUpdate=Няма дата с лош стойност да се коригира MigrationContractsInvalidDatesNothingToUpdate=Няма дата с лоша стойност за коригиране
MigrationContractsIncoherentCreationDateUpdate=Bad стойност на поръчката корекция дата на създаване MigrationContractsIncoherentCreationDateUpdate=Лоша стойност за дата на създаване на договор
MigrationContractsIncoherentCreationDateUpdateSuccess=Bad стойност на поръчката корекция дата на създаване направи succesfuly MigrationContractsIncoherentCreationDateUpdateSuccess=ОК
MigrationContractsIncoherentCreationDateNothingToUpdate=Не е лошо стойност за дата на договор за създаването, за да се коригира MigrationContractsIncoherentCreationDateNothingToUpdate=Няма лоши стойности за дата на създаване на договор за коригиране
MigrationReopeningContracts=Open договор затворен от грешки MigrationReopeningContracts=Отворен договор затворен по грешка
MigrationReopenThisContract=Повторно договор %s MigrationReopenThisContract=Ново отваряне на договор %s
MigrationReopenedContractsNumber=%s договори промяна MigrationReopenedContractsNumber=%s договори са променени
MigrationReopeningContractsNothingToUpdate=Няма затворен договор, за да отворите MigrationReopeningContractsNothingToUpdate=Няма затворен договор за отваряне
MigrationBankTransfertsUpdate=Актуализиране на връзките между банков превод и банков превод MigrationBankTransfertsUpdate=Актуализиране на връзките между банкова транзакция и банков превод
MigrationBankTransfertsNothingToUpdate=Всички връзки са към днешна дата MigrationBankTransfertsNothingToUpdate=Всички връзки са актуални
MigrationShipmentOrderMatching=Sendings получаване актуализация MigrationShipmentOrderMatching=Актуализация на експедиционни бележки
MigrationDeliveryOrderMatching=Актуализация обратна разписка MigrationDeliveryOrderMatching=Актуализация на обратни разписки
MigrationDeliveryDetail=Доставка актуализация MigrationDeliveryDetail=Актуализация на доставката
MigrationStockDetail=Актуализиране на стойността на акциите на продукти MigrationStockDetail=Актуализиране на наличната стойност на продукти
MigrationMenusDetail=Актуализиране на динамични таблици менюта MigrationMenusDetail=Актуализиране на таблици за динамични менюта
MigrationDeliveryAddress=Актуализиране на адрес за доставка на пратки, MigrationDeliveryAddress=Актуализиране на адрес за доставка на пратки,
MigrationProjectTaskActors=Миграция на данни за llx_projet_task_actors маса MigrationProjectTaskActors=Миграция на данни за таблицата llx_projet_task_actors
MigrationProjectUserResp=Data Migration поле fk_user_resp на llx_projet llx_element_contact MigrationProjectUserResp=Миграция на полето fk_user_resp на llx_projet llx_element_contact
MigrationProjectTaskTime=Актуализация на времето, прекарано в секунда MigrationProjectTaskTime=Актуализация на времето, прекарано в секунда
MigrationActioncommElement=Актуализиране на данни за действия MigrationActioncommElement=Актуализиране на данните за действия
MigrationPaymentMode=Миграция на данни за плащане режим MigrationPaymentMode=Миграция на данни за начин на плащане
MigrationCategorieAssociation=Миграция на категории MigrationCategorieAssociation=Миграция на категории
MigrationEvents=Migration of events to add event owner into assignement table MigrationEvents=Миграция на събития за добавяне на собственик на събитие в таблицата за възлагане
MigrationReloadModule=Презареждане на модул %s MigrationReloadModule=Презареждане на модула %s
ShowNotAvailableOptions=Показване на не наличните опции ShowNotAvailableOptions=Показване на недостъпните опции
HideNotAvailableOptions=Скриване на не наличните опции HideNotAvailableOptions=Скриване на недостъпните опции

View File

@ -25,6 +25,7 @@ FormatDateHourTextShort=%d %b %Y, %H:%M
FormatDateHourText=%d %B %Y, %H:%M FormatDateHourText=%d %B %Y, %H:%M
DatabaseConnection=Свързване с базата данни DatabaseConnection=Свързване с базата данни
NoTemplateDefined=No template defined for this email type NoTemplateDefined=No template defined for this email type
AvailableVariables=Available substitution variables
NoTranslation=Няма превод NoTranslation=Няма превод
NoRecordFound=Няма открити записи NoRecordFound=Няма открити записи
NoError=Няма грешка NoError=Няма грешка

View File

@ -32,6 +32,7 @@ StatusOrderSent=Доставка в процес
StatusOrderOnProcessShort=Поръчано StatusOrderOnProcessShort=Поръчано
StatusOrderProcessedShort=Обработен StatusOrderProcessedShort=Обработен
StatusOrderDelivered=Доставени StatusOrderDelivered=Доставени
StatusOrderDeliveredShort=Delivered
StatusOrderToBillShort=За плащане StatusOrderToBillShort=За плащане
StatusOrderToBill2Short=На Бил StatusOrderToBill2Short=На Бил
StatusOrderApprovedShort=Одобрен StatusOrderApprovedShort=Одобрен

View File

@ -45,10 +45,6 @@ LastProducts=Последни продукти
CardProduct0=Карта на продукт CardProduct0=Карта на продукт
CardProduct1=Карта на услуга CardProduct1=Карта на услуга
CardContract=Карта на контакт CardContract=Карта на контакт
Warehouse=Склад
Warehouses=Складове
WarehouseOpened=Складът е отворен
WarehouseClosed=Склада е затворен
Stock=Наличност Stock=Наличност
Stocks=Наличности Stocks=Наличности
Movement=Движение Movement=Движение
@ -318,3 +314,11 @@ WarningSelectOneDocument=Моля изберете поне един докум
DefaultUnitToShow=Unit DefaultUnitToShow=Unit
NbOfQtyInProposals=Qty in proposals NbOfQtyInProposals=Qty in proposals
ClinkOnALinkOfColumn=Click on a link of column %s to get a detailed view... ClinkOnALinkOfColumn=Click on a link of column %s to get a detailed view...
TranslatedLabel=Translated label
TranslatedDescription=Translated description
TranslatedNote=Translated notes
ProductWeight=Weight for 1 product
ProductVolume=Volume for 1 product
WeightUnits=Weight unit
VolumeUnits=Volume unit
SizeUnits=Size unit

View File

@ -74,6 +74,9 @@ Progress=Напредък
ProgressDeclared=Деклариране прогрес ProgressDeclared=Деклариране прогрес
ProgressCalculated=Изчислен прогрес ProgressCalculated=Изчислен прогрес
Time=Време Time=Време
ListOfTasks=List of tasks
GoToListOfTimeConsumed=Go to list of time consumed
GoToListOfTasks=Go to list of tasks
ListProposalsAssociatedProject=Списък на търговските предложения, свързани с проекта ListProposalsAssociatedProject=Списък на търговските предложения, свързани с проекта
ListOrdersAssociatedProject=Списък на клиентски поръчки, свързани с проекта ListOrdersAssociatedProject=Списък на клиентски поръчки, свързани с проекта
ListInvoicesAssociatedProject=Списък на фактури на клиентите, свързани с проекта ListInvoicesAssociatedProject=Списък на фактури на клиентите, свързани с проекта
@ -198,3 +201,4 @@ OppStatusNEGO=Уговаряне
OppStatusPENDING=Pending OppStatusPENDING=Pending
OppStatusWIN=Won OppStatusWIN=Won
OppStatusLOST=Lost OppStatusLOST=Lost
Budget=Budget

View File

@ -70,6 +70,8 @@ ProductQtyInSuppliersOrdersRunning=Количество на продукт в
ProductQtyInShipmentAlreadySent=Количество на продукт от отворени клиентски поръчки, които вече са изпратени ProductQtyInShipmentAlreadySent=Количество на продукт от отворени клиентски поръчки, които вече са изпратени
ProductQtyInSuppliersShipmentAlreadyRecevied=Количество на продукт от отворени поръчки към доставчик, които вече са получени ProductQtyInSuppliersShipmentAlreadyRecevied=Количество на продукт от отворени поръчки към доставчик, които вече са получени
NoProductToShipFoundIntoStock=Няма намерен продукт за изпращане в склад <b>%s</b>. Поправете стоковата и се върнете обратно, за да изберете друг склад. NoProductToShipFoundIntoStock=Няма намерен продукт за изпращане в склад <b>%s</b>. Поправете стоковата и се върнете обратно, за да изберете друг склад.
WeightVolShort=Weight/Vol.
ValidateOrderFirstBeforeShipment=You must first validate the order before being able to make shipments.
# Sending methods # Sending methods
SendingMethodCATCH=Улов от клиента SendingMethodCATCH=Улов от клиента

View File

@ -58,3 +58,5 @@ DefaultModelSupplierProposalCreate=Създаване на модел по по
DefaultModelSupplierProposalToBill=Шаблон по подразбиране, когато се затваря запитване за цена (прието) DefaultModelSupplierProposalToBill=Шаблон по подразбиране, когато се затваря запитване за цена (прието)
DefaultModelSupplierProposalClosed=Шаблон по подразбиране, когато се затваря запитване за цена (отказано) DefaultModelSupplierProposalClosed=Шаблон по подразбиране, когато се затваря запитване за цена (отказано)
ListOfSupplierProposal=Списък на запитвания за цени към доставчици ListOfSupplierProposal=Списък на запитвания за цени към доставчици
SupplierProposalsToClose=Supplier proposals to close
SupplierProposalsToProcess=Supplier proposals to process

View File

@ -282,6 +282,7 @@ ModuleSetup=Module setup
ModulesSetup=Modules setup ModulesSetup=Modules setup
ModuleFamilyBase=System ModuleFamilyBase=System
ModuleFamilyCrm=Customer Relation Management (CRM) ModuleFamilyCrm=Customer Relation Management (CRM)
ModuleFamilySrm=Supplier Relation Management (SRM)
ModuleFamilyProducts=Products Management (PM) ModuleFamilyProducts=Products Management (PM)
ModuleFamilyHr=Human Resource Management (HR) ModuleFamilyHr=Human Resource Management (HR)
ModuleFamilyProjects=Projects/Collaborative work ModuleFamilyProjects=Projects/Collaborative work
@ -587,6 +588,7 @@ Permission38=Export products
Permission41=Read projects and tasks (shared project and projects i'm contact for). Can also enter time consumed on assigned tasks (timesheet) Permission41=Read projects and tasks (shared project and projects i'm contact for). Can also enter time consumed on assigned tasks (timesheet)
Permission42=Create/modify projects (shared project and projects i'm contact for) Permission42=Create/modify projects (shared project and projects i'm contact for)
Permission44=Delete projects (shared project and projects i'm contact for) Permission44=Delete projects (shared project and projects i'm contact for)
Permission45=Export projects
Permission61=Read interventions Permission61=Read interventions
Permission62=Create/modify interventions Permission62=Create/modify interventions
Permission64=Delete interventions Permission64=Delete interventions
@ -640,6 +642,7 @@ Permission162=Create/modify contracts/subscriptions
Permission163=Activate a service/subscription of a contract Permission163=Activate a service/subscription of a contract
Permission164=Disable a service/subscription of a contract Permission164=Disable a service/subscription of a contract
Permission165=Delete contracts/subscriptions Permission165=Delete contracts/subscriptions
Permission167=Export contracts
Permission171=Read trips and expenses (yours and your subordinates) Permission171=Read trips and expenses (yours and your subordinates)
Permission172=Create/modify trips and expenses Permission172=Create/modify trips and expenses
Permission173=Delete trips and expenses Permission173=Delete trips and expenses
@ -788,6 +791,7 @@ Permission2403=Delete actions (events or tasks) linked to his account
Permission2411=Read actions (events or tasks) of others Permission2411=Read actions (events or tasks) of others
Permission2412=Create/modify actions (events or tasks) of others Permission2412=Create/modify actions (events or tasks) of others
Permission2413=Delete actions (events or tasks) of others Permission2413=Delete actions (events or tasks) of others
Permission2414=Export actions/tasks of others
Permission2501=Read/Download documents Permission2501=Read/Download documents
Permission2502=Download documents Permission2502=Download documents
Permission2503=Submit or delete documents Permission2503=Submit or delete documents
@ -1713,3 +1717,4 @@ ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Ve
MultiPriceRuleDesc=When option "Several level of prices per product/service" is on, you can define different prices (one per price level) for each product. To save you time, you can enter here rule to have price for each level autocalculated according to price of first level, so you will have to enter only price for first level on each product. This page is here to save you time and can be usefull only if your prices for each leve are relative to first level. You can ignore this page in most cases. MultiPriceRuleDesc=When option "Several level of prices per product/service" is on, you can define different prices (one per price level) for each product. To save you time, you can enter here rule to have price for each level autocalculated according to price of first level, so you will have to enter only price for first level on each product. This page is here to save you time and can be usefull only if your prices for each leve are relative to first level. You can ignore this page in most cases.
ModelModulesProduct=Templates for product documents ModelModulesProduct=Templates for product documents
ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate automatically codes, you must first define a manager to auto define barcode number. ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate automatically codes, you must first define a manager to auto define barcode number.
SeeSubstitutionVars=See * note for list of possible substitution variables

View File

@ -219,6 +219,7 @@ RemainderToBill=Remainder to bill
SendBillByMail=Send invoice by email SendBillByMail=Send invoice by email
SendReminderBillByMail=Send reminder by email SendReminderBillByMail=Send reminder by email
RelatedCommercialProposals=Related commercial proposals RelatedCommercialProposals=Related commercial proposals
RelatedRecurringCustomerInvoices=Related recurring customer invoices
MenuToValid=To valid MenuToValid=To valid
DateMaxPayment=Payment due before DateMaxPayment=Payment due before
DateEcheance=Due date limit DateEcheance=Due date limit
@ -319,7 +320,6 @@ toolTipFrequency=Examples:<br /><b>Set 7 / day</b>: give a new invoice every 7 d
NextDateToExecution=Date for next invoice generation NextDateToExecution=Date for next invoice generation
DateLastGeneration=Date of last generation DateLastGeneration=Date of last generation
MaxPeriodNumber=Max nb of invoice generation MaxPeriodNumber=Max nb of invoice generation
RestPeriodNumber=Rest period number
NbOfGenerationDone=Nb of invoice generation already done NbOfGenerationDone=Nb of invoice generation already done
InvoiceAutoValidate=Automatically validate invoice InvoiceAutoValidate=Automatically validate invoice
GeneratedFromRecurringInvoice=Generated from template recurring invoice %s GeneratedFromRecurringInvoice=Generated from template recurring invoice %s
@ -471,3 +471,7 @@ PDFCrevetteSituationInvoiceLine=Situation N°%s : Inv. N°%s on %s
TotalSituationInvoice=Total situation TotalSituationInvoice=Total situation
invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line
updatePriceNextInvoiceErrorUpdateline=Error : update price on invoice line : %s updatePriceNextInvoiceErrorUpdateline=Error : update price on invoice line : %s
ToCreateARecurringInvoice=To create a recurring invoice for this contract, first create this draft invoice, then convert it into an invoice template and define the frequency for generation of future invoices.
ToCreateARecurringInvoiceGene=To generate future invoices regularly and manually, just go on menu <strong>%s - %s - %s</strong>.
ToCreateARecurringInvoiceGeneAuto=If you need to have such invoices generated automatically, ask you administrator to enable and setup module <strong>%s</strong>. Note that both method (manual and automatic) can be used together with no risk of duplication.

View File

@ -60,8 +60,8 @@ BoxTitleLastContracts=Last %s contracts
BoxTitleLastModifiedDonations=Last %s modified donations BoxTitleLastModifiedDonations=Last %s modified donations
BoxTitleLastModifiedExpenses=Last %s modified expense reports BoxTitleLastModifiedExpenses=Last %s modified expense reports
BoxGlobalActivity=Global activity (invoices, proposals, orders) BoxGlobalActivity=Global activity (invoices, proposals, orders)
BoxGoodCustomers=Good Customers BoxGoodCustomers=Good customers
BoxTitleGoodCustomers=%s Good Customers BoxTitleGoodCustomers=%s Good customers
FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Last successfull refresh date: %s FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Last successfull refresh date: %s
LastRefreshDate=Last refresh date LastRefreshDate=Last refresh date
NoRecordedBookmarks=No bookmarks defined. NoRecordedBookmarks=No bookmarks defined.

View File

@ -202,7 +202,7 @@ ProfId3IN=Prof Id 3 (SRVC TAX)
ProfId4IN=Prof Id 4 ProfId4IN=Prof Id 4
ProfId5IN=Prof Id 5 ProfId5IN=Prof Id 5
ProfId6IN=- ProfId6IN=-
ProfId1LU=Id. prof. 1 (RCS) ProfId1LU=Id. prof. 1 (R.C.S. Luxembourg)
ProfId2LU=Id. prof. 2 (Business permit) ProfId2LU=Id. prof. 2 (Business permit)
ProfId3LU=- ProfId3LU=-
ProfId4LU=- ProfId4LU=-
@ -317,10 +317,12 @@ ShowContact=Show contact
ContactsAllShort=All (No filter) ContactsAllShort=All (No filter)
ContactType=Contact type ContactType=Contact type
ContactForOrders=Order's contact ContactForOrders=Order's contact
ContactForOrdersOrShipments=Order's or shipment's contact
ContactForProposals=Proposal's contact ContactForProposals=Proposal's contact
ContactForContracts=Contract's contact ContactForContracts=Contract's contact
ContactForInvoices=Invoice's contact ContactForInvoices=Invoice's contact
NoContactForAnyOrder=This contact is not a contact for any order NoContactForAnyOrder=This contact is not a contact for any order
NoContactForAnyOrderOrShipment=This contact is not a contact for any order or shipment
NoContactForAnyProposal=This contact is not a contact for any commercial proposal NoContactForAnyProposal=This contact is not a contact for any commercial proposal
NoContactForAnyContract=This contact is not a contact for any contract NoContactForAnyContract=This contact is not a contact for any contract
NoContactForAnyInvoice=This contact is not a contact for any invoice NoContactForAnyInvoice=This contact is not a contact for any invoice
@ -438,3 +440,6 @@ MergeThirdparties=Merge third parties
ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one ? All linked objects (invoices, orders, ...) will be moved to current third party so you will be able to delete the duplicate one. ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one ? All linked objects (invoices, orders, ...) will be moved to current third party so you will be able to delete the duplicate one.
ThirdpartiesMergeSuccess=Thirdparties have been merged ThirdpartiesMergeSuccess=Thirdparties have been merged
ErrorThirdpartiesMerge=There was an error when deleting the thirdparties. Please check the log. Changes have been reverted. ErrorThirdpartiesMerge=There was an error when deleting the thirdparties. Please check the log. Changes have been reverted.
SaleRepresentativeLogin=Login of sale representative
SaleRepresentativeFirstname=Firstname of sale representative
SaleRepresentativeLastname=Lastname of sale representative

View File

@ -172,6 +172,8 @@ ErrorMandatoryParametersNotProvided=Mandatory parameter(s) not provided
ErrorOppStatusRequiredIfAmount=You set an estimated amount for this opportunity/lead. So you must also enter its status ErrorOppStatusRequiredIfAmount=You set an estimated amount for this opportunity/lead. So you must also enter its status
ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu) ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu)
ErrorSavingChanges=An error has ocurred when saving the changes ErrorSavingChanges=An error has ocurred when saving the changes
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
ErrorFileMustHaveFormat=File must have format %s
# Warnings # Warnings
WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user.

View File

@ -128,6 +128,10 @@ SpecialCode=Special code
ExportStringFilter=%% allows replacing one or more characters in the text ExportStringFilter=%% allows replacing one or more characters in the text
ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day<br>YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days<br> > YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days<br> < YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day<br>YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days<br> > YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days<br> < YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days
ExportNumericFilter='NNNNN' filters by one value<br>'NNNNN+NNNNN' filters over a range of values<br>'&gt;NNNNN' filters by lower values<br>'&gt;NNNNN' filters by higher values ExportNumericFilter='NNNNN' filters by one value<br>'NNNNN+NNNNN' filters over a range of values<br>'&gt;NNNNN' filters by lower values<br>'&gt;NNNNN' filters by higher values
ImportFromLine=Import starting from line number
EndAtLineNb=End at line number
SetThisValueTo2ToExcludeFirstLine=For example, set this value to 3 to exclude the 2 first lines
KeepEmptyToGoToEndOfFile=Keep this field empty to go up to the end of file
## filters ## filters
SelectFilterFields=If you want to filter on some values, just input values here. SelectFilterFields=If you want to filter on some values, just input values here.
FilterableFields=Filterable Fields FilterableFields=Filterable Fields

View File

@ -25,6 +25,7 @@ FormatDateHourTextShort=%b %d, %Y, %I:%M %p
FormatDateHourText=%B %d, %Y, %I:%M %p FormatDateHourText=%B %d, %Y, %I:%M %p
DatabaseConnection=Database connection DatabaseConnection=Database connection
NoTemplateDefined=No template defined for this email type NoTemplateDefined=No template defined for this email type
AvailableVariables=Available substitution variables
NoTranslation=No translation NoTranslation=No translation
NoRecordFound=No record found NoRecordFound=No record found
NoError=No error NoError=No error

View File

@ -32,6 +32,7 @@ StatusOrderSent=Shipment in process
StatusOrderOnProcessShort=Ordered StatusOrderOnProcessShort=Ordered
StatusOrderProcessedShort=Processed StatusOrderProcessedShort=Processed
StatusOrderDelivered=Delivered StatusOrderDelivered=Delivered
StatusOrderDeliveredShort=Delivered
StatusOrderToBillShort=Delivered StatusOrderToBillShort=Delivered
StatusOrderToBill2Short=To bill StatusOrderToBill2Short=To bill
StatusOrderApprovedShort=Approved StatusOrderApprovedShort=Approved

View File

@ -45,10 +45,6 @@ LastProducts=Last products
CardProduct0=Product card CardProduct0=Product card
CardProduct1=Service card CardProduct1=Service card
CardContract=Contract card CardContract=Contract card
Warehouse=Warehouse
Warehouses=Warehouses
WarehouseOpened=Warehouse open
WarehouseClosed=Warehouse closed
Stock=Stock Stock=Stock
Stocks=Stocks Stocks=Stocks
Movement=Movement Movement=Movement
@ -318,3 +314,11 @@ WarningSelectOneDocument=Please select at least one document
DefaultUnitToShow=Unit DefaultUnitToShow=Unit
NbOfQtyInProposals=Qty in proposals NbOfQtyInProposals=Qty in proposals
ClinkOnALinkOfColumn=Click on a link of column %s to get a detailed view... ClinkOnALinkOfColumn=Click on a link of column %s to get a detailed view...
TranslatedLabel=Translated label
TranslatedDescription=Translated description
TranslatedNote=Translated notes
ProductWeight=Weight for 1 product
ProductVolume=Volume for 1 product
WeightUnits=Weight unit
VolumeUnits=Volume unit
SizeUnits=Size unit

View File

@ -74,6 +74,9 @@ Progress=Progress
ProgressDeclared=Declared progress ProgressDeclared=Declared progress
ProgressCalculated=Calculated progress ProgressCalculated=Calculated progress
Time=Time Time=Time
ListOfTasks=List of tasks
GoToListOfTimeConsumed=Go to list of time consumed
GoToListOfTasks=Go to list of tasks
ListProposalsAssociatedProject=List of the commercial proposals associated with the project ListProposalsAssociatedProject=List of the commercial proposals associated with the project
ListOrdersAssociatedProject=List of customer's orders associated with the project ListOrdersAssociatedProject=List of customer's orders associated with the project
ListInvoicesAssociatedProject=List of customer's invoices associated with the project ListInvoicesAssociatedProject=List of customer's invoices associated with the project
@ -198,3 +201,4 @@ OppStatusNEGO=Negociation
OppStatusPENDING=Pending OppStatusPENDING=Pending
OppStatusWIN=Won OppStatusWIN=Won
OppStatusLOST=Lost OppStatusLOST=Lost
Budget=Budget

View File

@ -70,6 +70,8 @@ ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders
ProductQtyInShipmentAlreadySent=Product quantity from opened customer order already sent ProductQtyInShipmentAlreadySent=Product quantity from opened customer order already sent
ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received
NoProductToShipFoundIntoStock=No product to ship found into warehouse <b>%s</b>. Correct stock or go back to choose another warehouse. NoProductToShipFoundIntoStock=No product to ship found into warehouse <b>%s</b>. Correct stock or go back to choose another warehouse.
WeightVolShort=Weight/Vol.
ValidateOrderFirstBeforeShipment=You must first validate the order before being able to make shipments.
# Sending methods # Sending methods
SendingMethodCATCH=Catch by customer SendingMethodCATCH=Catch by customer

View File

@ -58,3 +58,5 @@ DefaultModelSupplierProposalCreate=Default model creation
DefaultModelSupplierProposalToBill=Default template when closing a price request (accepted) DefaultModelSupplierProposalToBill=Default template when closing a price request (accepted)
DefaultModelSupplierProposalClosed=Default template when closing a price request (refused) DefaultModelSupplierProposalClosed=Default template when closing a price request (refused)
ListOfSupplierProposal=List of supplier proposal requests ListOfSupplierProposal=List of supplier proposal requests
SupplierProposalsToClose=Supplier proposals to close
SupplierProposalsToProcess=Supplier proposals to process

View File

@ -282,6 +282,7 @@ ModuleSetup=Postavke modula
ModulesSetup=Postavke modula ModulesSetup=Postavke modula
ModuleFamilyBase=System ModuleFamilyBase=System
ModuleFamilyCrm=Customer Relation Management (CRM) ModuleFamilyCrm=Customer Relation Management (CRM)
ModuleFamilySrm=Supplier Relation Management (SRM)
ModuleFamilyProducts=Products Management (PM) ModuleFamilyProducts=Products Management (PM)
ModuleFamilyHr=Human Resource Management (HR) ModuleFamilyHr=Human Resource Management (HR)
ModuleFamilyProjects=Projects/Collaborative work ModuleFamilyProjects=Projects/Collaborative work
@ -587,6 +588,7 @@ Permission38=Export products
Permission41=Read projects and tasks (shared project and projects i'm contact for). Can also enter time consumed on assigned tasks (timesheet) Permission41=Read projects and tasks (shared project and projects i'm contact for). Can also enter time consumed on assigned tasks (timesheet)
Permission42=Create/modify projects (shared project and projects i'm contact for) Permission42=Create/modify projects (shared project and projects i'm contact for)
Permission44=Delete projects (shared project and projects i'm contact for) Permission44=Delete projects (shared project and projects i'm contact for)
Permission45=Export projects
Permission61=Read interventions Permission61=Read interventions
Permission62=Create/modify interventions Permission62=Create/modify interventions
Permission64=Delete interventions Permission64=Delete interventions
@ -640,6 +642,7 @@ Permission162=Create/modify contracts/subscriptions
Permission163=Activate a service/subscription of a contract Permission163=Activate a service/subscription of a contract
Permission164=Disable a service/subscription of a contract Permission164=Disable a service/subscription of a contract
Permission165=Delete contracts/subscriptions Permission165=Delete contracts/subscriptions
Permission167=Export contracts
Permission171=Read trips and expenses (yours and your subordinates) Permission171=Read trips and expenses (yours and your subordinates)
Permission172=Create/modify trips and expenses Permission172=Create/modify trips and expenses
Permission173=Delete trips and expenses Permission173=Delete trips and expenses
@ -788,6 +791,7 @@ Permission2403=Delete actions (events or tasks) linked to his account
Permission2411=Read actions (events or tasks) of others Permission2411=Read actions (events or tasks) of others
Permission2412=Create/modify actions (events or tasks) of others Permission2412=Create/modify actions (events or tasks) of others
Permission2413=Delete actions (events or tasks) of others Permission2413=Delete actions (events or tasks) of others
Permission2414=Export actions/tasks of others
Permission2501=Read/Download documents Permission2501=Read/Download documents
Permission2502=Download documents Permission2502=Download documents
Permission2503=Submit or delete documents Permission2503=Submit or delete documents
@ -1713,3 +1717,4 @@ ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Ve
MultiPriceRuleDesc=When option "Several level of prices per product/service" is on, you can define different prices (one per price level) for each product. To save you time, you can enter here rule to have price for each level autocalculated according to price of first level, so you will have to enter only price for first level on each product. This page is here to save you time and can be usefull only if your prices for each leve are relative to first level. You can ignore this page in most cases. MultiPriceRuleDesc=When option "Several level of prices per product/service" is on, you can define different prices (one per price level) for each product. To save you time, you can enter here rule to have price for each level autocalculated according to price of first level, so you will have to enter only price for first level on each product. This page is here to save you time and can be usefull only if your prices for each leve are relative to first level. You can ignore this page in most cases.
ModelModulesProduct=Templates for product documents ModelModulesProduct=Templates for product documents
ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate automatically codes, you must first define a manager to auto define barcode number. ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate automatically codes, you must first define a manager to auto define barcode number.
SeeSubstitutionVars=See * note for list of possible substitution variables

View File

@ -219,6 +219,7 @@ RemainderToBill=Ostatak za naplatiti
SendBillByMail=Pošalji fakturu na e-mail SendBillByMail=Pošalji fakturu na e-mail
SendReminderBillByMail=Pošalji opomenu na e-mail SendReminderBillByMail=Pošalji opomenu na e-mail
RelatedCommercialProposals=Vezani poslovni prijedlozi RelatedCommercialProposals=Vezani poslovni prijedlozi
RelatedRecurringCustomerInvoices=Related recurring customer invoices
MenuToValid=Za važeći MenuToValid=Za važeći
DateMaxPayment=Rok plaćanja do DateMaxPayment=Rok plaćanja do
DateEcheance=Datum isteka roka za plaćanje DateEcheance=Datum isteka roka za plaćanje
@ -319,7 +320,6 @@ toolTipFrequency=Examples:<br /><b>Set 7 / day</b>: give a new invoice every 7 d
NextDateToExecution=Date for next invoice generation NextDateToExecution=Date for next invoice generation
DateLastGeneration=Date of last generation DateLastGeneration=Date of last generation
MaxPeriodNumber=Max nb of invoice generation MaxPeriodNumber=Max nb of invoice generation
RestPeriodNumber=Rest period number
NbOfGenerationDone=Nb of invoice generation already done NbOfGenerationDone=Nb of invoice generation already done
InvoiceAutoValidate=Automatically validate invoice InvoiceAutoValidate=Automatically validate invoice
GeneratedFromRecurringInvoice=Generated from template recurring invoice %s GeneratedFromRecurringInvoice=Generated from template recurring invoice %s
@ -471,3 +471,7 @@ PDFCrevetteSituationInvoiceLine=Situation N°%s : Inv. N°%s on %s
TotalSituationInvoice=Total situation TotalSituationInvoice=Total situation
invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line
updatePriceNextInvoiceErrorUpdateline=Error : update price on invoice line : %s updatePriceNextInvoiceErrorUpdateline=Error : update price on invoice line : %s
ToCreateARecurringInvoice=To create a recurring invoice for this contract, first create this draft invoice, then convert it into an invoice template and define the frequency for generation of future invoices.
ToCreateARecurringInvoiceGene=To generate future invoices regularly and manually, just go on menu <strong>%s - %s - %s</strong>.
ToCreateARecurringInvoiceGeneAuto=If you need to have such invoices generated automatically, ask you administrator to enable and setup module <strong>%s</strong>. Note that both method (manual and automatic) can be used together with no risk of duplication.

View File

@ -60,8 +60,8 @@ BoxTitleLastContracts=Zadnjih %s ugovora
BoxTitleLastModifiedDonations=Zadnjih %s izmijenjenih donacija BoxTitleLastModifiedDonations=Zadnjih %s izmijenjenih donacija
BoxTitleLastModifiedExpenses=Last %s modified expense reports BoxTitleLastModifiedExpenses=Last %s modified expense reports
BoxGlobalActivity=Globalne aktivnosti (fakture, prijedlozi, narudžbe) BoxGlobalActivity=Globalne aktivnosti (fakture, prijedlozi, narudžbe)
BoxGoodCustomers=Good Customers BoxGoodCustomers=Good customers
BoxTitleGoodCustomers=%s Good Customers BoxTitleGoodCustomers=%s Good customers
FailedToRefreshDataInfoNotUpToDate=Neuspjelo osvježavanje RSS protoka. Datum zadnjeg uspješnog osvježavanja: %s FailedToRefreshDataInfoNotUpToDate=Neuspjelo osvježavanje RSS protoka. Datum zadnjeg uspješnog osvježavanja: %s
LastRefreshDate=Zadnji datum osvježavanja LastRefreshDate=Zadnji datum osvježavanja
NoRecordedBookmarks=Nema definisanih bookmark-a. NoRecordedBookmarks=Nema definisanih bookmark-a.

View File

@ -202,7 +202,7 @@ ProfId3IN=Prof Id 3 (SRVC TAX)
ProfId4IN=Prof Id 4 ProfId4IN=Prof Id 4
ProfId5IN=Prof Id 5 ProfId5IN=Prof Id 5
ProfId6IN=- ProfId6IN=-
ProfId1LU=Id. prof. 1 (RCS) ProfId1LU=Id. prof. 1 (R.C.S. Luxembourg)
ProfId2LU=Id. prof. 2 (Business permit) ProfId2LU=Id. prof. 2 (Business permit)
ProfId3LU=- ProfId3LU=-
ProfId4LU=- ProfId4LU=-
@ -317,10 +317,12 @@ ShowContact=Prikaži kontakt
ContactsAllShort=Svi (bez filtera) ContactsAllShort=Svi (bez filtera)
ContactType=Tip kontakta ContactType=Tip kontakta
ContactForOrders=Kontakt narudžbe ContactForOrders=Kontakt narudžbe
ContactForOrdersOrShipments=Order's or shipment's contact
ContactForProposals=Kontakt prijedloga ContactForProposals=Kontakt prijedloga
ContactForContracts=Kontakt ugovora ContactForContracts=Kontakt ugovora
ContactForInvoices=Kontakt fakture ContactForInvoices=Kontakt fakture
NoContactForAnyOrder=Ovaj kontakt nije kontakt za bilo koju narudžbu NoContactForAnyOrder=Ovaj kontakt nije kontakt za bilo koju narudžbu
NoContactForAnyOrderOrShipment=This contact is not a contact for any order or shipment
NoContactForAnyProposal=Ovaj kontakt nije kontakt za bilo koji poslovni prijedlog NoContactForAnyProposal=Ovaj kontakt nije kontakt za bilo koji poslovni prijedlog
NoContactForAnyContract=Ovaj kontakt nije kontakt za bilo koji ugovor NoContactForAnyContract=Ovaj kontakt nije kontakt za bilo koji ugovor
NoContactForAnyInvoice=Ovaj kontakt nije kontakt za bilo koju fakturu NoContactForAnyInvoice=Ovaj kontakt nije kontakt za bilo koju fakturu
@ -438,3 +440,6 @@ MergeThirdparties=Merge third parties
ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one ? All linked objects (invoices, orders, ...) will be moved to current third party so you will be able to delete the duplicate one. ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one ? All linked objects (invoices, orders, ...) will be moved to current third party so you will be able to delete the duplicate one.
ThirdpartiesMergeSuccess=Thirdparties have been merged ThirdpartiesMergeSuccess=Thirdparties have been merged
ErrorThirdpartiesMerge=There was an error when deleting the thirdparties. Please check the log. Changes have been reverted. ErrorThirdpartiesMerge=There was an error when deleting the thirdparties. Please check the log. Changes have been reverted.
SaleRepresentativeLogin=Login of sale representative
SaleRepresentativeFirstname=Firstname of sale representative
SaleRepresentativeLastname=Lastname of sale representative

View File

@ -172,6 +172,8 @@ ErrorMandatoryParametersNotProvided=Mandatory parameter(s) not provided
ErrorOppStatusRequiredIfAmount=You set an estimated amount for this opportunity/lead. So you must also enter its status ErrorOppStatusRequiredIfAmount=You set an estimated amount for this opportunity/lead. So you must also enter its status
ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu) ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu)
ErrorSavingChanges=An error has ocurred when saving the changes ErrorSavingChanges=An error has ocurred when saving the changes
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
ErrorFileMustHaveFormat=File must have format %s
# Warnings # Warnings
WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user.

View File

@ -128,6 +128,10 @@ SpecialCode=Special code
ExportStringFilter=%% allows replacing one or more characters in the text ExportStringFilter=%% allows replacing one or more characters in the text
ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day<br>YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days<br> > YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days<br> < YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day<br>YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days<br> > YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days<br> < YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days
ExportNumericFilter='NNNNN' filters by one value<br>'NNNNN+NNNNN' filters over a range of values<br>'&gt;NNNNN' filters by lower values<br>'&gt;NNNNN' filters by higher values ExportNumericFilter='NNNNN' filters by one value<br>'NNNNN+NNNNN' filters over a range of values<br>'&gt;NNNNN' filters by lower values<br>'&gt;NNNNN' filters by higher values
ImportFromLine=Import starting from line number
EndAtLineNb=End at line number
SetThisValueTo2ToExcludeFirstLine=For example, set this value to 3 to exclude the 2 first lines
KeepEmptyToGoToEndOfFile=Keep this field empty to go up to the end of file
## filters ## filters
SelectFilterFields=If you want to filter on some values, just input values here. SelectFilterFields=If you want to filter on some values, just input values here.
FilterableFields=Filterable Fields FilterableFields=Filterable Fields

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