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
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
{
foreach($extrafields->attribute_label as $key => $val)
{
if (! empty($arrayfields["ef.".$key]['checked'])) print '<td class="liste_titre"></td>';
}
foreach($extrafields->attribute_label as $key => $val)
{
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
$parameters=array('arrayfields'=>$arrayfields);

View File

@ -198,7 +198,8 @@ if (! $conf->use_javascript_ajax) {
$listmodelcsv = array (
'1' => $langs->trans("Modelcsv_normal"),
'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);

View File

@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
* 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
* 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') {
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$journal = 'bookkepping';
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) {
setEventMessages($object->error, $object->errors, 'errors');
}
foreach ( $object->lines as $line ) {
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) {
$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 {
$title_page = $langs->trans("AccountBalance") . ' ' . dol_print_date($search_date_start) . '-' . dol_print_date($search_date_end);
llxHeader('', $title_page);
/*
* List
*/
$nbtotalofrecords = 0;
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
$nbtotalofrecords = $object->fetchAllBalance($sortorder, $sortfield, 0, 0, $filter);
@ -188,27 +145,27 @@ else {
setEventMessages($object->error, $object->errors, 'errors');
}
}
$result = $object->fetchAllBalance($sortorder, $sortfield, $limit, $offset, $filter);
if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors');
}
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 '<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>';
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 '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
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("Action"), $_SERVER["PHP_SELF"], "", $options, "", 'width="60" align="center"', $sortfield, $sortorder);
print "</tr>\n";
print '<tr class="liste_titre">';
print '<td>';
print $langs->trans('From');
@ -226,32 +183,32 @@ else {
print $langs->trans('To');
print $formventilation->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, '');
print '</td>';
print '<td>&nbsp;</td>';
print '<td>&nbsp;</td>';
print '<td>&nbsp;</td>';
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 '&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 '</tr>';
$var = True;
$total_debit = 0;
$total_credit = 0;
foreach ( $object->lines as $line ) {
$var = ! $var;
$total_debit += $line->debit;
$total_credit += $line->credit;
print "<tr $bc[$var]>";
print '<td>' . length_accountg($line->numero_compte) . '</td>';
print '<td align="right">' . price($line->debit) . '</td>';
print '<td align="right">' . price($line->credit) . '</td>';
@ -260,7 +217,7 @@ else {
print '</td>';
print "</tr>\n";
}
print '<tr class="liste_total">';
print '<td></td>';
print '<td align="right">';
@ -272,10 +229,10 @@ else {
print '<td align="right">' . price($total_credit - $total_debit) . '</td>';
print '<td align="right"></td>';
print '</tr>';
print "</table>";
print '</form>';
llxFooter();
}
$db->close();

View File

@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013-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
* it under the terms of the GNU General Public License as published by
@ -182,9 +182,9 @@ if (! empty($search_mvt_num)) {
* Action
*/
if ($action == 'delbookkeeping') {
$import_key = GETPOST('importkey', 'alpha');
if (! empty($import_key)) {
$result = $object->deleteByImportkey($import_key);
if ($result < 0) {
@ -194,9 +194,9 @@ if ($action == 'delbookkeeping') {
exit();
}
} elseif ($action == 'delbookkeepingyearconfirm') {
$delyear = GETPOST('delyear', 'int');
if (! empty($delyear)) {
$result = $object->deleteByYear($delyear);
if ($result < 0) {
@ -206,34 +206,30 @@ if ($action == 'delbookkeeping') {
exit();
}
} elseif ($action == 'delmouvconfirm') {
$mvt_num = GETPOST('mvt_num', 'int');
if (! empty($mvt_num)) {
$result = $object->deleteMvtNum($mvt_num);
if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors');
}
// if (!empty($options)) {
// Header("Location: list.php?".urldecode($options));
// } else {
Header("Location: list.php");
// }
exit();
}
} elseif ($action == 'export_csv') {
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$journal = 'bookkepping';
include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php';
$result = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter);
if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors');
}
foreach ( $object->lines as $line ) {
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) {
$sep = ";";
// Model Cegid Expert Export
@ -246,16 +242,9 @@ if ($action == 'delbookkeeping') {
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;
@ -264,15 +253,10 @@ if ($action == 'delbookkeeping') {
print length_accounta($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;
@ -285,23 +269,48 @@ if ($action == 'delbookkeeping') {
print 'E' . $sep;
print length_accountg($line->code_tiers) . $sep;
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
*/
else {
$title_page = $langs->trans("Bookkeeping") . ' ' . dol_print_date($search_date_start) . '-' . dol_print_date($search_date_end);
llxHeader('', $title_page);
/*
* List
*/
$nbtotalofrecords = 0;
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
$nbtotalofrecords = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter);
@ -309,78 +318,48 @@ else {
setEventMessages($object->error, $object->errors, 'errors');
}
}
$result = $object->fetchAll($sortorder, $sortfield, $limit, $offset, $filter);
if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors');
}
if ($action == 'delmouv') {
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?mvt_num=' . GETPOST('mvt_num'), $langs->trans('DeleteMvt'), $langs->trans('ConfirmDeleteMvt'), 'delmouvconfirm', '', 0, 1);
print $formconfirm;
}
if ($action == 'delbookkeepingyear') {
$form_question = array ();
$delyear = GETPOST('delyear');
if (empty($delyear)) {
$delyear = dol_print_date(dol_now(), '%Y');
}
$year_array = $formventilation->selectyear_accountancy_bookkepping($delyear, 'delyear', 0, 'array');
$form_question['delyear'] = array (
'name' => 'delyear',
'type' => 'select',
'label' => $langs->trans('DelYear'),
'values' => $year_array,
'default' => $delyear
'default' => $delyear
);
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans('DeleteMvt'), $langs->trans('ConfirmDeleteMvt'), 'delbookkeepingyearconfirm', $form_question, 0, 1);
print $formconfirm;
}
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 '<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"><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>';
/*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 '<tr class="liste_titre">';
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("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("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("Action"), $_SERVER["PHP_SELF"], "", $options, "", 'width="60" align="center"', $sortfield, $sortorder);
print "</tr>\n";
print '<tr class="liste_titre">';
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="GET">';
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 $form->select_date($search_date_start, 'date_start', 0, 0, 1);
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_doc_date, 'doc_date', 0, 0, 1);
print '</td>';
print '<td><input type="text" name="search_doc_ref" size="8" value="' . $search_doc_ref . '"></td>';
print '<td>';
// print $langs->trans('From') . ' ' . $langs->trans('AccountAccounting') . ': ';
print $langs->trans('From');
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 $langs->trans('to');
print $langs->trans('To');
print $formventilation->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, '');
print '</td>';
// print '<td><input type="text" name="search_accountancy_code" size="8" value="' . $search_accountancy_code . '"></td>';
print '<td>';
// print $langs->trans('From') . ' ' . $langs->trans('ThirdPartyAccount') . ': ';
print $langs->trans('From');
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 $langs->trans('to');
print $langs->trans('To');
print $formventilation->select_auxaccount($search_accountancy_aux_code_end, 'search_accountancy_aux_code_end', 1);
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 '<input type="text" size=6 class="flat" name="search_mvt_label" value="' . $search_mvt_label . '"/>';
print '</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" 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 '&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 '</tr>';
$var = True;
$total_debit = 0;
$total_credit = 0;
foreach ( $object->lines as $line ) {
$var = ! $var;
$total_debit += $line->debit;
$total_credit += $line->credit;
print "<tr $bc[$var]>";
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>' . $line->doc_ref . '</td>';
@ -467,8 +435,6 @@ else {
print '<td>' . $line->label_compte . '</td>';
print '<td align="right">' . price($line->debit) . '</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="center">';
print '<a href="./card.php?piece_num=' . $line->piece_num . '">' . img_edit() . '</a>&nbsp;';
@ -476,7 +442,7 @@ else {
print '</td>';
print "</tr>\n";
}
print '<tr class="liste_total">';
print '<td colspan="6"></td>';
print '<td align="right">';
@ -487,10 +453,10 @@ else {
print '</td>';
print '<td colspan="2"></td>';
print '</tr>';
print "</table>";
print '</form>';
llxFooter();
}

View File

@ -1,6 +1,6 @@
<?php
/* 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>
*
* 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_end = dol_mktime(0, 0, 0, 12, 31, dol_print_date(dol_now(), '%Y'));
}
if ($sortorder == "")
$sortorder = "ASC";
if ($sortfield == "")
@ -184,13 +183,13 @@ print '</div>';
print '<div class="liste_titre">';
print $langs->trans('From') . ' ' . $langs->trans('AccountAccounting') . ': ';
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 '</div>';
print '<div class="liste_titre">';
print $langs->trans('From') . ' ' . $langs->trans('ThirdPartyAccount') . ': ';
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 '</div>';
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 '</td>';
print '<td class="liste_titre" align="right">';
$searchpitco=$form->showFilterAndCheckAddButtons(0);
print $searchpitco;
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 '&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 "</tr>\n";
@ -268,7 +268,7 @@ $var = True;
foreach ( $object->lines as $line ) {
$var = ! $var;
print "<tr $bc[$var]>";
print '<td>' . $line->piece_num . '</td>' . "\n";
print '<td>' . $line->doc_type . '</td>' . "\n";

View File

@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2007-2012 Laurent Destailleur <eldy@users.sourceforge.net>
* 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>
*
* 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 .= " WHERE piece_num = " . $piecenum;
dol_syslog(get_class($this) . "::" . __METHOD__, LOG_DEBUG);
$result = $this->db->query($sql);
if ($result) {
$obj = $this->db->fetch_object($result);
@ -1118,7 +1119,7 @@ class BookKeeping extends CommonObject
$sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element;
$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);
if ($result) {
@ -1147,7 +1148,7 @@ class BookKeeping extends CommonObject
}
} else {
$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;
}

View File

@ -48,6 +48,8 @@ $search_desc = GETPOST('search_desc', 'alpha');
$search_amount = GETPOST('search_amount', 'alpha');
$search_account = GETPOST('search_account', '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
$sortfield = GETPOST('sortfield', 'alpha');
@ -68,7 +70,7 @@ if (! empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION)) {
$offset = $limit * $page;
if (! $sortfield)
$sortfield = "f.datef, f.facnumber, l.rowid";
$sortfield = "f.datef, f.facnumber, fd.rowid";
if (! $sortorder) {
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_account = '';
$search_vat = '';
$search_country = '';
$search_tvaintra = '';
}
if (is_array($changeaccount) && count($changeaccount) > 0) {
@ -150,14 +154,27 @@ print '<script type="text/javascript">
/*
* 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 .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type";
$sql .= " FROM " . MAIN_DB_PREFIX . "facture as f";
$sql .= " , " . MAIN_DB_PREFIX . "accounting_account as aa";
$sql .= " , " . MAIN_DB_PREFIX . "facturedet as l";
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = l.fk_product";
$sql .= " WHERE f.rowid = l.fk_facture AND f.fk_statut >= 1 AND l.fk_code_ventilation <> 0 ";
$sql .= " AND aa.rowid = l.fk_code_ventilation";
$sql = "SELECT f.rowid, f.facnumber, f.type, f.datef as df, f.ref_client,";
$sql .= " fd.rowid as fdid, fd.description, fd.product_type, fd.total_ht, fd.total_tva, fd.tva_tx, fd.total_ttc,";
$sql .= " s.rowid as socid, s.nom as name, s.code_compta, s.code_client,";
$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 .= " fd.situation_percent, co.label as country, s.tva_intra";
$sql .= " FROM " . MAIN_DB_PREFIX . "facturedet as fd";
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = fd.fk_product";
$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))) {
$sql .= " AND f.facnumber like '%" . $search_invoice . "%'";
}
@ -168,16 +185,22 @@ if (strlen(trim($search_label))) {
$sql .= " AND p.label like '%" . $search_label . "%'";
}
if (strlen(trim($search_desc))) {
$sql .= " AND l.description like '%" . $search_desc . "%'";
$sql .= " AND fd.description like '%" . $search_desc . "%'";
}
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))) {
$sql .= " AND aa.account_number like '%" . $search_account . "%'";
}
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)) {
$sql .= " AND f.entity IN (" . getEntity("facture", 1) . ")";
@ -201,8 +224,8 @@ if ($result) {
$i = 0;
$param = "";
if ($search_facture)
$param .= "&search_facture=" . $search_facture;
if ($search_invoice)
$param .= "&search_invoice=" . $search_invoice;
if ($search_ref)
$param .= "&search_ref=" . $search_ref;
if ($search_label)
@ -211,8 +234,13 @@ if ($result) {
$param .= "&search_desc=" . $search_desc;
if ($search_account)
$param .= "&search_account=" . $search_account;
if ($filter)
$param .= "&filter=" . $filter;
if ($search_vat)
$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 '<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("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("Description"), $_SERVER["PHP_SELF"], "l.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("VATRate"), $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, 'align="center"', $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"], "fd.total_ht", "", $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('');
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($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 "</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_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="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" colspan="2">&nbsp;</td>';
print '<td class="liste_titre" align="right">';
$searchpitco=$form->showFilterAndCheckAddButtons(0);
print $searchpitco;
print '</td>';
print "</tr>\n";
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="center"><input type="text" class="flat" size="15" name="search_tavintra" value="' . $search_tavintra . '"></td>';
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 '<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></tr>\n";
$facture_static = new Facture($db);
$product_static = new Product($db);
@ -258,7 +285,7 @@ if ($result) {
$var = True;
while ( $objp = $db->fetch_object($result) ) {
$var = ! $var;
$codecompta = $objp->account_number . ' ' . $objp->label;
$codecompta = $objp->account_number . ' - ' . $objp->label_compte;
print "<tr $bc[$var]>";
@ -282,13 +309,12 @@ if ($result) {
print '<td>' . nl2br(dol_trunc($objp->description, 32)) . '</td>';
print '<td align="right">' . price($objp->total_ht) . '</td>';
print '<td align="center">' . price($objp->tva_tx) . '</td>';
print '<td align="center">' . $codecompta . '</td>';
print '<td align="right">' . $objp->rowid . '</td>';
print '<td align="left"><a href="./card.php?id=' . $objp->rowid . '">';
print '<td align="center">' . $codecompta . '<a href="./card.php?id=' . $objp->fdid . '">';
print img_edit();
print '</a></td>';
print '<td align="center"><input type="checkbox" name="changeaccount[]" value="' . $objp->rowid . '"/></td>';
print '<td align="right">' . $objp->country .'</td>';
print '<td align="center">' . $objp->tva_intra . '</td>';
print '<td align="center"><input type="checkbox" name="changeaccount[]" value="' . $objp->fdid . '"/></td>';
print "</tr>";
$i ++;

View File

@ -71,7 +71,7 @@ $now = dol_now();
// Security check
if ($user->societe_id > 0 && empty($id_bank_account))
accessforbidden();
/*
* View
*/
@ -122,7 +122,7 @@ $paymentsalstatic = new PaymentSalary($db);
// Get code of finance journal
$bank_code_journal = new Account($db);
$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);
$result = $db->query($sql);
@ -148,7 +148,7 @@ if ($result) {
$tabcompany[$obj->rowid] = array (
'id' => $obj->socid,
'name' => $obj->name,
'code_client' => $obj->code_compta
'code_client' => $obj->code_compta
);
// Controls
@ -251,7 +251,7 @@ if ($result) {
$tabbq[$obj->rowid][$compta_bank] += $obj->amount;
// if($obj->socid)$tabtp[$obj->rowid][$compta_soc] += $obj->amount;
$i ++;
}
} else {
@ -319,7 +319,7 @@ if ($action == 'writebookkeeping') {
$result = $bookkeeping->create($user);
if ($result < 0) {
$error ++;
setEventMessages($object->error, $object->errors, 'errors');
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
}
}
// Third party
@ -388,7 +388,7 @@ if ($action == 'writebookkeeping') {
$bookkeeping->code_tiers = $k;
$bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER;
} else {
$bookkeeping->doc_ref = $k;
$bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER;
}
@ -396,7 +396,7 @@ if ($action == 'writebookkeeping') {
$result = $bookkeeping->create($user);
if ($result < 0) {
$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);
// Model Cegid Expert Export
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2)
{
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) {
$sep = ";";
foreach ( $tabpay as $key => $val ) {
@ -436,7 +435,7 @@ if ($action == 'export_csv') {
print ($mt < 0 ? 'C' : 'D') . $sep;
print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
print $val["type_payment"] . $sep;
print $val["ref"] . $sep;
print utf8_decode($val["ref"]) . $sep;
print "\n";
}
@ -455,7 +454,7 @@ if ($action == 'export_csv') {
print ($mt < 0 ? 'D' : 'C') . $sep;
print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
print $val["type_payment"] . $sep;
print $val["ref"] . $sep;
print utf8_decode($val["ref"]) . $sep;
print "\n";
}
}
@ -468,7 +467,7 @@ if ($action == 'export_csv') {
print ($mt < 0 ? 'D' : 'C') . $sep;
print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
print $val["type_payment"] . $sep;
print $val["ref"] . $sep;
print utf8_decode($val["ref"]) . $sep;
print "\n";
}
}
@ -486,7 +485,12 @@ if ($action == 'export_csv') {
print '"' . $date . '"' . $sep;
print '"' . $val["type_payment"] . '"' . $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) : '') . '"';
print "\n";
@ -499,7 +503,12 @@ if ($action == 'export_csv') {
print '"' . $date . '"' . $sep;
print '"' . $val["type_payment"] . '"' . $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) : '') . '"';
print "\n";
@ -510,7 +519,12 @@ if ($action == 'export_csv') {
print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $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) : '') . '"';
print "\n";
@ -523,7 +537,7 @@ else {
$form = new Form($db);
llxHeader('', $langs->trans("FinanceJournal"));
$nom = $langs->trans("FinanceJournal") . ' - ' . $bank_code_journal->getNomUrl(1);
$builddate = time();
$description = $langs->trans("DescFinanceJournal") . '<br>';
@ -531,7 +545,7 @@ else {
$varlink = 'id_account=' . $id_bank_account;
report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array (
'action' => ''
'action' => ''
), '', $varlink);
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 ) {
$date = dol_print_date($db->jdate($val["date"]), 'day');
if ($val["lib"] == '(SupplierInvoicePayment)') {
$reflabel = $langs->trans('SupplierInvoicePayment');
}
@ -587,7 +601,12 @@ else {
print "<td>" . $date . "</td>";
print "<td>" . $reflabel . "</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 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 "<td>" . $date . "</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>" . $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 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>" . $reflabel . "</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 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);
// les variables
$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 ();
$tabht = array ();
$tabtva = array ();
$tabttc = array ();
$tabcompany = array ();
$i = 0;
while ( $i < $num ) {
$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_tva = (! empty($obj->account_tva) ? $obj->account_tva : $cpttva);
$tabfac[$obj->rowid]["date"] = $obj->df;
$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]["description"] = $obj->description;
$tabfac[$obj->rowid]["fk_facturefourndet"] = $obj->fdid;
@ -145,9 +149,9 @@ if ($result) {
$tabcompany[$obj->rowid] = array (
'id' => $obj->socid,
'name' => $obj->name,
'code_fournisseur' => $obj->code_compta_fournisseur
'code_fournisseur' => $obj->code_compta_fournisseur
);
$i ++;
}
} else {
@ -158,11 +162,11 @@ if ($result) {
if ($action == 'writebookkeeping') {
$now = dol_now();
$error = 0;
foreach ( $tabfac as $key => $val ) {
foreach ( $tabttc[$key] as $k => $mt ) {
// get compte id and label
$bookkeeping = new BookKeeping($db);
$bookkeeping->doc_date = $val["date"];
$bookkeeping->doc_ref = $val["ref"];
@ -179,14 +183,14 @@ if ($action == 'writebookkeeping') {
$bookkeeping->credit = ($mt > 0) ? $mt : 0;
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
$bookkeeping->fk_user_author = $user->id;
$result = $bookkeeping->create($user);
if ($result < 0) {
$error ++;
setEventMessages($object->error, $object->errors, 'errors');
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
}
}
// Product / Service
foreach ( $tabht[$key] as $k => $mt ) {
if ($mt) {
@ -209,16 +213,16 @@ if ($action == 'writebookkeeping') {
$bookkeeping->credit = ($mt <= 0) ? $mt : 0;
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
$bookkeeping->fk_user_author = $user->id;
$result = $bookkeeping->create($user);
if ($result < 0) {
$error ++;
setEventMessages($object->error, $object->errors, 'errors');
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
}
}
}
}
// VAT
// var_dump($tabtva);
foreach ( $tabtva[$key] as $k => $mt ) {
@ -240,16 +244,16 @@ if ($action == 'writebookkeeping') {
$bookkeeping->credit = ($mt <= 0) ? $mt : 0;
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
$bookkeeping->fk_user_author = $user->id;
$result = $bookkeeping->create($user);
if ($result < 0) {
$error ++;
setEventMessages($object->error, $object->errors, 'errors');
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
}
}
}
}
if (empty($error)) {
setEventMessages($langs->trans("GeneralLedgerIsWritten"), null, 'mesgs');
}
@ -265,23 +269,23 @@ $companystatic = new Fournisseur($db);
if ($action == 'export_csv') {
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php';
// Model Cegid Expert Export
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2)
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2)
{
$sep = ";";
foreach ( $tabfac as $key => $val ) {
$date = dol_print_date($db->jdate($val["date"]), '%d%m%Y');
// Product / Service
foreach ( $tabht[$key] as $k => $mt ) {
$companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name'];
$companystatic->client = $tabcompany[$key]['code_client'];
if ($mt) {
print $date . $sep;
print $purchase_journal . $sep;
@ -294,7 +298,7 @@ if ($action == 'export_csv') {
print "\n";
}
}
// VAT
foreach ( $tabtva[$key] as $k => $mt ) {
if ($mt) {
@ -309,7 +313,7 @@ if ($action == 'export_csv') {
print "\n";
}
}
foreach ( $tabttc[$key] as $k => $mt ) {
print $date . $sep;
print $purchase_journal . $sep;
@ -325,12 +329,20 @@ if ($action == 'export_csv') {
} else {
// Model Classic Export
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');
$companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name'];
$companystatic->client = $tabcompany[$key]['code_client'];
// Product / Service
foreach ( $tabht[$key] as $k => $mt ) {
$accountingaccount = new AccountingAccount($db);
@ -339,7 +351,8 @@ if ($action == 'export_csv') {
print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $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) : '') . '"';
print "\n";
@ -351,19 +364,21 @@ if ($action == 'export_csv') {
print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $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) : '') . '"';
print "\n";
}
}
// Third party
foreach ( $tabttc[$key] as $k => $mt ) {
print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $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) : '') . '"';
}
@ -371,11 +386,11 @@ if ($action == 'export_csv') {
}
}
} else {
llxHeader('', $langs->trans("PurchasesJournal"));
$form = new Form($db);
$nom = $langs->trans("PurchasesJournal");
$nomlink = '';
$periodlink = '';
@ -387,16 +402,16 @@ if ($action == 'export_csv') {
} else {
$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);
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" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />';
print '
<script type="text/javascript">
function launch_export() {
@ -410,12 +425,12 @@ if ($action == 'export_csv') {
$("div.fiche div.tabBar form input[name=\"action\"]").val("");
}
</script>';
/*
* Show result array
*/
print '<br><br>';
$i = 0;
print "<table class=\"noborder\" width=\"100%\">";
print "<tr class=\"liste_titre\">";
@ -425,31 +440,39 @@ if ($action == 'export_csv') {
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 "</tr>\n";
$var = true;
$r = '';
$invoicestatic = new FactureFournisseur($db);
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');
// Product / Service
foreach ( $tabht[$key] as $k => $mt ) {
$accountingaccount = new AccountingAccount($db);
$accountingaccount->fetch(null, $k);
if ($mt) {
print "<tr " . $bc[$var] . " >";
print "<td>" . $date . "</td>";
print "<td>" . $invoicestatic->getNomUrl(1) . "</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 "</tr>";
@ -461,34 +484,36 @@ if ($action == 'export_csv') {
print "<tr " . $bc[$var] . " >";
print "<td>" . $date . "</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 "</tr>";
}
}
print "<tr " . $bc[$var] . ">";
// Third party
foreach ( $tabttc[$key] as $k => $mt ) {
print "<td>" . $date . "</td>";
print "<td>" . $invoicestatic->getNomUrl(1) . "</td>";
$companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name'];
print "<td>" . length_accounta($k);
print "</td><td>" . $langs->trans("ThirdParty");
print ' (' . $companystatic->getNomUrl(0, 'supplier', 16) . ')';
print "</td>";
print "<td>" . length_accounta($k)."</td>";
print "<td>" . $companystatic->getNomUrl(0, 'supplier', 16). ' - '.$invoicestatic->refsupplier .' - '. $langs->trans("Code_tiers")."</td>";
//print "</td><td>" . $langs->trans("ThirdParty");
//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 "</tr>";
$var = ! $var;
}
print "</table>";
// End of page
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';
// Langs
$langs->load("commercial");
$langs->load("compta");
$langs->load("bills");
$langs->load("other");
$langs->load("main");
$langs->load("accountancy");
$date_startmonth = GETPOST('date_startmonth');
@ -119,16 +119,16 @@ if ($result) {
$tabtva = array ();
$tabttc = array ();
$tabcompany = array ();
$num = $db->num_rows($result);
$i = 0;
while ( $i < $num ) {
$obj = $db->fetch_object($result);
// les variables
$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_prod = $obj->compte;
if (empty($compta_prod)) {
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");
$compta_tva = (! empty($obj->account_tva) ? $obj->account_tva : $cpttva);
// Situation invoices handling
$line = new FactureLigne($db);
$line->fetch($obj->rowid);
@ -153,7 +153,7 @@ if ($result) {
} else {
$situation_ratio = 1;
}
// Invoice lines
$tabfac[$obj->rowid]["date"] = $obj->df;
$tabfac[$obj->rowid]["ref"] = $obj->facnumber;
@ -172,9 +172,9 @@ if ($result) {
$tabcompany[$obj->rowid] = array (
'id' => $obj->socid,
'name' => $obj->name,
'code_client' => $obj->code_compta
'code_client' => $obj->code_compta
);
$i ++;
}
} else {
@ -190,7 +190,7 @@ if ($result) {
if ($action == 'writebookkeeping') {
$now = dol_now();
$error = 0;
foreach ( $tabfac as $key => $val ) {
foreach ( $tabttc[$key] as $k => $mt ) {
$bookkeeping = new BookKeeping($db);
@ -209,14 +209,14 @@ if ($action == 'writebookkeeping') {
$bookkeeping->credit = ($mt < 0) ? $mt : 0;
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
$bookkeeping->fk_user_author = $user->id;
$result = $bookkeeping->create($user);
if ($result < 0) {
$error ++;
setEventMessages($object->error, $object->errors, 'errors');
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
}
}
// Product / Service
foreach ( $tabht[$key] as $k => $mt ) {
if ($mt) {
@ -239,16 +239,16 @@ if ($action == 'writebookkeeping') {
$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
$bookkeeping->fk_user_author = $user->id;
$result = $bookkeeping->create($user);
if ($result < 0) {
$error ++;
setEventMessages($object->error, $object->errors, 'errors');
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
}
}
}
}
// VAT
// var_dump($tabtva);
foreach ( $tabtva[$key] as $k => $mt ) {
@ -269,16 +269,16 @@ if ($action == 'writebookkeeping') {
$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
$bookkeeping->fk_user_author = $user->id;
$result = $bookkeeping->create($user);
if ($result < 0) {
$error ++;
setEventMessages($object->error, $object->errors, 'errors');
setEventMessages($bookkeeping->error, $bookkeeping->errors, 'errors');
}
}
}
}
if (empty($error)) {
setEventMessages($langs->trans("GeneralLedgerIsWritten"), null, 'mesgs');
}
@ -288,23 +288,23 @@ if ($action == 'writebookkeeping') {
if ($action == 'export_csv') {
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$sell_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php';
$companystatic = new Client($db);
// Model Cegid Expert Export
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2)
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2)
{
$sep = ";";
foreach ( $tabfac as $key => $val ) {
$companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name'];
$companystatic->client = $tabcompany[$key]['code_client'];
$date = dol_print_date($db->jdate($val["date"]), '%d%m%Y');
foreach ( $tabttc[$key] as $k => $mt ) {
print $date . $sep;
print $sell_journal . $sep;
@ -316,7 +316,7 @@ if ($action == 'export_csv') {
print $val["ref"];
print "\n";
}
// Product / Service
foreach ( $tabht[$key] as $k => $mt ) {
$accountingaccount_static = new AccountingAccount($db);
@ -332,7 +332,7 @@ if ($action == 'export_csv') {
print "\n";
}
}
// TVA
foreach ( $tabtva[$key] as $k => $mt ) {
if ($mt) {
@ -354,42 +354,45 @@ if ($action == 'export_csv') {
$companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name'];
$companystatic->client = $tabcompany[$key]['code_client'];
$date = dol_print_date($db->jdate($val["date"]), 'day');
foreach ( $tabttc[$key] as $k => $mt ) {
print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $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) : '') . '"';
print "\n";
}
// Product / Service
foreach ( $tabht[$key] as $k => $mt ) {
$accountingaccount = new AccountingAccount($db);
$accountingaccount->fetch(null, $k);
if ($mt) {
print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $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) : '') . '"';
print "\n";
}
}
// VAT
foreach ( $tabtva[$key] as $k => $mt ) {
if ($mt) {
print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $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) : '') . '"';
print "\n";
@ -398,11 +401,11 @@ if ($action == 'export_csv') {
}
}
} else {
$form = new Form($db);
llxHeader('', $langs->trans("SellsJournal"));
$nom = $langs->trans("SellsJournal");
$nomlink = '';
$periodlink = '';
@ -415,13 +418,13 @@ if ($action == 'export_csv') {
$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);
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" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />';
print '
<script type="text/javascript">
function launch_export() {
@ -435,12 +438,12 @@ if ($action == 'export_csv') {
$("div.fiche div.tabBar form input[name=\"action\"]").val("");
}
</script>';
/*
* Show result array
*/
print '<br><br>';
$i = 0;
print "<table class=\"noborder\" width=\"100%\">";
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("Credit") . "</td>";
print "</tr>\n";
$var = true;
$r = '';
$invoicestatic = new Facture($db);
$companystatic = new Client($db);
foreach ( $tabfac as $key => $val ) {
$invoicestatic->id = $key;
$invoicestatic->ref = $val["ref"];
$invoicestatic->type = $val["type"];
$date = dol_print_date($db->jdate($val["date"]), 'day');
// Third party
foreach ( $tabttc[$key] as $k => $mt ) {
print "<tr " . $bc[$var] . ">";
@ -474,30 +477,32 @@ if ($action == 'export_csv') {
$companystatic->name = $tabcompany[$key]['name'];
$companystatic->client = $tabcompany[$key]['code_client'];
print "<td>" . length_accounta($k);
print "</td><td>" . $langs->trans("ThirdParty");
print ' (' . $companystatic->getNomUrl(0, 'customer', 16) . ')';
//print "</td><td>" . $langs->trans("ThirdParty");
//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 align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>";
}
print "</tr>";
// Product / Service
foreach ( $tabht[$key] as $k => $mt ) {
$accountingaccount = new AccountingAccount($db);
$accountingaccount->fetch(null, $k);
if ($mt) {
print "<tr " . $bc[$var] . ">";
print "<td>" . $date . "</td>";
print "<td>" . $invoicestatic->getNomUrl(1) . "</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 "</tr>";
}
}
// VAT
foreach ( $tabtva[$key] as $k => $mt ) {
if ($mt) {
@ -505,18 +510,19 @@ if ($action == 'export_csv') {
print "<td>" . $date . "</td>";
print "<td>" . $invoicestatic->getNomUrl(1) . "</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 "</tr>";
}
}
$var = ! $var;
}
print "</table>";
// End of page
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_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="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" colspan="2">&nbsp;</td>';
print '<td class="liste_titre" align="right">';
@ -233,7 +233,7 @@ if ($result) {
while ( $i < min($num_lines, $limit) ) {
$objp = $db->fetch_object($result);
$var = ! $var;
$codeCompta = $objp->account_number . ' ' . $objp->label;
$codeCompta = $objp->account_number . ' - ' . $objp->label;
print "<tr $bc[$var]>";

View File

@ -1931,7 +1931,7 @@ if ($action == 'create' && $user->rights->commande->creer)
/*
* Commande
*/
*/
$nbrow = 9;
if (! empty($conf->projet->enabled))
$nbrow ++;
@ -2050,6 +2050,9 @@ if ($action == 'create' && $user->rights->commande->creer)
print '</form>';
} else {
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 '</tr>';
@ -2072,6 +2075,9 @@ if ($action == 'create' && $user->rights->commande->creer)
print '</form>';
} else {
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 '</tr>';

View File

@ -140,10 +140,6 @@ class Commande extends CommonOrder
*/
var $lines = array();
// Pour board
var $nbtodo;
var $nbtodolate;
// Multicurrency
var $fk_multicurrency;
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);
}
/**
* 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
print '<td class="nobordernopadding nowrap">';
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))
{

View File

@ -5,7 +5,7 @@
* Copyright (C) 2004 Christophe Combelles <ccomb@free.fr>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* 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) 2015 Florian Henry <florian.henry@open-concept.pro>
*
@ -209,29 +209,13 @@ if ($id > 0 || ! empty($ref))
$result=$object->fetch($id, $ref);
// Chargement des categories bancaires dans $options
$nbcategories=0;
// Load bank groups
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php';
$bankcateg = new BankCateg($db);
$options = array();
$sql = "SELECT rowid, label";
$sql.= " FROM ".MAIN_DB_PREFIX."bank_categ";
$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);
foreach ($bankcateg->fetchAll() as $bankcategory) {
$options[$bankcategory->id] = $bankcategory->label;
}
// 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 ($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>';
}
else
{
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>';
} else {
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 '<td colspan="2">';
print '<input name="label" class="flat" type="text" size="24" value="'.GETPOST("label").'">';
if ($nbcategories)
{
print '<br>'.$langs->trans("Rubrique").': <select class="flat" name="cat1">'.$options.'</select>';
if ($options) {
print '<br>'.$langs->trans("Rubrique").': ';
print Form::selectarray('cat1', $options, GETPOST('cat1'), 1);
}
print '</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" width="80">'.$langs->trans("BankBalance").'</td>';
print '<td align="center" width="60">';
if ($object->type != 2 && $object->rappro) print $langs->trans("AccountStatementShort");
else print '&nbsp;';
if ($object->canBeConciliated() > 0) {
print $langs->trans("AccountStatementShort");
} else {
print '&nbsp;';
}
print '</td></tr>';
print '<form action="'.$_SERVER["PHP_SELF"].'?'.$param.'" name="search" method="POST">';

View File

@ -292,7 +292,7 @@ if ($action == 'create')
// Currency
print '<tr><td class="fieldrequired">'.$langs->trans("Currency").'</td>';
print '<td colspan="3">';
$selectedcode=$account->account_currency_code;
$selectedcode=$account->currency_code;
if (! $selectedcode) $selectedcode=$conf->currency;
print $form->selectCurrency((isset($_POST["account_currency_code"])?$_POST["account_currency_code"]:$selectedcode), 'account_currency_code');
//print $langs->trans("Currency".$conf->currency);
@ -369,10 +369,10 @@ if ($action == 'create')
print '</td></tr>';
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 '<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 '<br>';
@ -583,7 +583,7 @@ else
// Currency
print '<tr><td>'.$langs->trans("Currency").'</td>';
print '<td colspan="3">';
$selectedcode=$account->account_currency_code;
$selectedcode=$account->currency_code;
if (! $selectedcode) $selectedcode=$conf->currency;
print $langs->trans("Currency".$selectedcode);
print '</td></tr>';
@ -851,7 +851,7 @@ else
print '<input type="hidden" value="'.$account->currency_code.'">';
print '</td>';
print '<td colspan="3">';
$selectedcode=$account->account_currency_code;
$selectedcode=$account->currency_code;
if (! $selectedcode) $selectedcode=$conf->currency;
print $form->selectCurrency((isset($_POST["account_currency_code"])?$_POST["account_currency_code"]:$selectedcode), 'account_currency_code');
//print $langs->trans("Currency".$conf->currency);

View File

@ -4,6 +4,7 @@
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2013 Charles-Fr BENKE <charles.fr@benke.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
* it under the terms of the GNU General Public License as published by
@ -27,6 +28,7 @@
require('../../main.inc.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("categories");
@ -36,70 +38,39 @@ $action=GETPOST('action');
if (!$user->rights->banque->configurer)
accessforbidden();
$bankcateg = new BankCateg($db);
$categid = GETPOST('categid');
$label = GETPOST("label");
/*
* Add category
*/
if (GETPOST('add'))
{
if (GETPOST("label"))
{
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_categ (";
$sql.= "label";
$sql.= ", entity";
$sql.= ") VALUES (";
$sql.= "'".$db->escape(GETPOST("label"))."'";
$sql.= ", ".$conf->entity;
$sql.= ")";
$result = $db->query($sql);
if (!$result)
{
dol_print_error($db);
}
if ($label) {
$bankcateg = new BankCateg($db);
$bankcateg->label = GETPOST('label');
$bankcateg->create($user);
}
}
/*
* Update category
*/
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;
if ($categid) {
$bankcateg = new BankCateg($db);
$result = $db->query($sql);
if (!$result)
{
dol_print_error($db);
if ($bankcateg->fetch($categid) > 0) {
//Update category
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
@ -174,5 +145,3 @@ if ($action != 'edit')
print '</table></form>';
llxFooter();
$db->close();

View File

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

View File

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

View File

@ -6,6 +6,7 @@
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
* 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
* it under the terms of the GNU General Public License as published by
@ -205,24 +206,13 @@ $form = new Form($db);
llxHeader();
// The list of categories is initialized
$sql = "SELECT rowid, label";
$sql.= " FROM ".MAIN_DB_PREFIX."bank_categ";
$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";
$i++;
}
$db->free($result);
// Load bank groups
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php';
$bankcateg = new BankCateg($db);
$options = array();
foreach ($bankcateg->fetchAll() as $bankcategory) {
$options[$bankcategory->id] = $bankcategory->label;
}
$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">';
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 '</tr>';

View File

@ -3,6 +3,7 @@
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
* 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
* 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
$sql = "SELECT rowid, label FROM ".MAIN_DB_PREFIX."bank_categ ORDER BY 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;
foreach ($bankcateg->fetchAll() as $bankcategory) {
$options[$bankcategory->id] = $bankcategory->label;
}
else dol_print_error($db);
/*
* View
@ -236,10 +222,11 @@ if ($resql)
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 '<br>';
if ($options)
{
print $langs->trans("EventualyAddCategory").': <select class="flat" name="cat">'.$options.'</select><br>';
}
if ($options) {
print $langs->trans("EventualyAddCategory").': ';
print Form::selectarray('cat', $options, GETPOST('cat'), 1);
print '<br>';
}
print '<br>'.$langs->trans("ThenCheckLinesAndConciliate").' "'.$langs->trans("Conciliate").'"<br>';
print '<br>';
@ -440,14 +427,6 @@ if ($resql)
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="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>";
}
else

View File

@ -143,16 +143,12 @@ if (empty($num))
dol_fiche_end();
print '<div class="tabsAction">';
if ($object->type != 2 && $object->rappro)
{
if ($object->canBeConciliated() > 0) {
// If not cash account and can be reconciliate
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>';
}
else
{
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>';
} else {
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 $langs->trans("ToCreateAPredefinedInvoice").'<br><br>';
print $langs->trans("ToCreateAPredefinedInvoice", $langs->transnoentitiesnoconv("ChangeIntoRepeatableInvoice")).'<br><br>';
$i = 0;
print '<table class="noborder" width="100%">';

View File

@ -61,6 +61,7 @@ $ref=GETPOST('ref','alpha');
$socid=GETPOST('socid','int');
$action=GETPOST('action','alpha');
$massaction=GETPOST('massaction','alpha');
$show_files=GETPOST('show_files','int');
$confirm=GETPOST('confirm','alpha');
$lineid=GETPOST('lineid','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('confirmmassaction')) { $massaction=''; }
$parameters=array('socid'=>$socid);
$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');
@ -533,8 +535,8 @@ if (empty($reshook))
$upload_dir = $diroutputpdf;
$file = $upload_dir . '/' . GETPOST('file');
$ret=dol_delete_file($file);
if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs');
else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors');
if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('file')), null, 'mesgs');
else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), null, 'errors');
$action='';
}
@ -714,6 +716,7 @@ if ($resql)
if ($search_montant_ttc != '') $param.='&search_montant_ttc='.$search_montant_ttc;
if ($search_status != '') $param.='&search_status='.$search_status;
if ($search_paymentmode > 0) $param.='search_paymentmode='.$search_paymentmode;
if ($show_files) $param.='&show_files=' .$show_files;
$param.=(! empty($option)?"&amp;option=".$option:"");
$massactionbutton=$form->selectMassAction('', $massaction == 'presend' ? array() : array('presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge")));
@ -1055,7 +1058,7 @@ if ($resql)
print "</form>\n";
$db->free($resql);
if ($massaction == 'builddoc' || $action == 'remove_file')
if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files)
{
/*
* Show list of available documents
@ -1067,10 +1070,16 @@ if ($resql)
$genallowed=$user->rights->facture->lire;
$delallowed=$user->rights->facture->lire;
print '<br>';
// We disable multilang because we concat already existing pdf.
$formfile->show_documents('unpaid','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$langs->trans("PDFMerge"),'');
}
print '<br><a name="show_files"></a>';
$paramwithoutshowfiles=preg_replace('/show_files=1&?/','',$param);
$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
{

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
{
$db->rollback();
$mesg='<div class="error">'.$localtax->error.'</div>';
setEventMessages($localtax->error, $localtax->errors, 'errors');
$_GET["action"]="create";
}
}
@ -112,18 +112,19 @@ if ($_GET["action"] == 'delete')
{
$localtax->error=$accountline->error;
$db->rollback();
$mesg='<div class="error">'.$localtax->error.'</div>';
setEventMessages($localtax->error, $localtax->errors, 'errors');
}
}
else
{
$db->rollback();
$mesg='<div class="error">'.$localtax->error.'</div>';
setEventMessages($localtax->error, $localtax->errors, 'errors');
}
}
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);
if ($result < 0)
{
$mesg='<div class="error">'.$bprev->error.'</div>';
setEventMessages($bprev->error , $bprev->errors, 'errors');
}
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)
{
$mesg.=$val."<br>\n";

View File

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

View File

@ -42,8 +42,10 @@ function contract_prepare_head(Contrat $object)
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");
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact';
$h++;
}

View File

@ -45,8 +45,10 @@ function fichinter_prepare_head($object)
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');
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact';
$h++;
}

View File

@ -45,8 +45,10 @@ function facturefourn_prepare_head($object)
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');
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact';
$h++;
}
@ -119,8 +121,10 @@ function ordersupplier_prepare_head($object)
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');
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact';
$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 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;
}
//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 (! 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 $message."\n";
@ -3418,10 +3418,13 @@ function price2num($amount,$rounding='',$alreadysqlnb=0)
* @param int $unit Unit of dimension (0, -3, ...)
* @param string $type 'weight', 'volume', ...
* @param Translate $outputlangs Translate language object
* @param int $round -1 = non rounding, x = number of decimal
* @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)
{
$dimension = $dimension * 1000000;
@ -3443,7 +3446,7 @@ function showDimensionInBestUnit($dimension, $unit, $type, $outputlangs)
$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;
}

View File

@ -45,8 +45,10 @@ function facture_prepare_head($object)
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');
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact';
$h++;
}

View File

@ -70,8 +70,10 @@ function commande_prepare_head(Commande $object)
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');
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact';
$h++;
}

View File

@ -64,8 +64,10 @@ function propal_prepare_head($object)
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][1] = $langs->trans('ContactsAddresses');
if ($nbContact > 0) $head[$h][1].= ' <span class="badge">'.$nbContact.'</span>';
$head[$h][2] = 'contact';
$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', 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__);
-- 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__);

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/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

View File

@ -240,7 +240,9 @@ class doc_generic_order_odt extends ModelePDFCommandes
$newfileformat=substr($newfile, strrpos($newfile, '.')+1);
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
{

View File

@ -241,7 +241,9 @@ class doc_generic_shipment_odt extends ModelePdfExpedition
$newfileformat=substr($newfile, strrpos($newfile, '.')+1);
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
{

View File

@ -451,7 +451,7 @@ class pdf_rouget extends ModelePdfExpedition
$voltxt='';
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');

View File

@ -241,7 +241,9 @@ class doc_generic_invoice_odt extends ModelePDFFactures
$newfileformat=substr($newfile, strrpos($newfile, '.')+1);
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
{

View File

@ -450,7 +450,9 @@ class doc_generic_project_odt extends ModelePDFProjects
$newfileformat=substr($newfile, strrpos($newfile, '.')+1);
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
{

View File

@ -274,7 +274,9 @@ class doc_generic_proposal_odt extends ModelePDFPropales
$newfileformat=substr($newfile, strrpos($newfile, '.')+1);
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
{

View File

@ -686,21 +686,39 @@ class pdf_azur extends ModelePDFPropales
if (count($filetomerge->lines) > 0) {
foreach ( $filetomerge->lines as $linefile ) {
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))
$filetomerge_dir = $conf->service->multidir_output[$entity_product_file] . '/' . dol_sanitizeFileName($line->product_ref);
if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO))
{
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);
$infile = $filetomerge_dir . '/' . $linefile->file_name;
if (is_file($infile)) {
if (file_exists($infile) && is_readable($infile)) {
$pagecount = $pdf->setSourceFile($infile);
for($i = 1; $i <= $pagecount; $i ++) {
$tplidx = $pdf->ImportPage($i);
$s = $pdf->getTemplatesize($tplidx);
$pdf->AddPage($s['h'] > $s['w'] ? 'P' : 'L');
$pdf->useTemplate($tplidx);
$tplIdx = $pdf->importPage(1);
if ($tplIdx!==false) {
$s = $pdf->getTemplatesize($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->Output($file,'F');

View File

@ -209,9 +209,15 @@ class doc_generic_odt extends ModeleThirdPartyDoc
$newfiletmp=preg_replace('/modele_/i','',$newfiletmp);
// Get extension (ods or odt)
$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))
{
$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
{

View File

@ -274,7 +274,9 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal
$newfileformat=substr($newfile, strrpos($newfile, '.')+1);
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
{

View File

@ -265,7 +265,12 @@ if ($id > 0 || ! empty($ref))
// Date
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>';
// Delivery date planned
@ -289,6 +294,9 @@ if ($id > 0 || ! empty($ref))
else
{
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>';
// Note on several rows

View File

@ -117,17 +117,20 @@ if (empty($reshook))
if ($result >= 0)
{
// Define output language
$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))
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
{
$outputlangs = new Translate("",$conf);
$outputlangs->setDefaultLang($newlang);
// Define output language
$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);
exit;
@ -143,17 +146,20 @@ if (empty($reshook))
$result = $object->setDraft($user);
if ($result >= 0)
{
// Define output language
$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))
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
{
$outputlangs = new Translate("",$conf);
$outputlangs->setDefaultLang($newlang);
// Define output language
$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);
exit;

View File

@ -1,10 +1,13 @@
<?php
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2006-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2009-2014 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2006-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2009-2014 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
* 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
* 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.= " WHERE pfp.entity IN (".getEntity('product', 1).")";
$sql.= " AND pfp.fk_soc = s.rowid";
$sql.= " AND s.status=1"; // only enabled company selected
$sql.= " AND pfp.fk_product = ".$prodid;
if (empty($sortfield)) $sql.= " ORDER BY s.nom, pfp.quantity, pfp.price";
else $sql.= $this->db->order($sortfield,$sortorder);
@ -545,6 +549,7 @@ class ProductFournisseur extends Product
$sql.= " WHERE s.entity IN (".getEntity('societe', 1).")";
$sql.= " AND pfp.fk_product = ".$prodid;
$sql.= " AND pfp.fk_soc = s.rowid";
$sql.= " AND s.status = 1"; // only enabled society
if ($qty > 0) $sql.= " AND pfp.quantity <= ".$qty;
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';
}
}
$conf->global->MAIN_LOGTOHTML = 1;
$conf->global->MAIN_ENABLE_LOG_TO_HTML = 1;
// Define prefix
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_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 ('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
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 = '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);
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
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_actioncomm MODIFY COLUMN elementtype varchar(255) DEFAULT NULL;

View File

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

View File

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

View File

@ -282,6 +282,7 @@ ModuleSetup=إعداد وحدة
ModulesSetup=نمائط الإعداد
ModuleFamilyBase=نظام
ModuleFamilyCrm=إدارة علاقات العملاء (CRM)
ModuleFamilySrm=Supplier Relation Management (SRM)
ModuleFamilyProducts=إدارة المنتجات (PM)
ModuleFamilyHr=إدارة الموارد البشرية (HR)
ModuleFamilyProjects=مشاريع / العمل التعاوني
@ -587,6 +588,7 @@ Permission38=منتجات التصدير
Permission41=مشاريع القراءة والمهام (مشروع مشترك ومشاريع انا اتصال ل). كما يمكن أن يدخل الوقت المستهلك في المهام الموكلة (الجدول الزمني)
Permission42=إنشاء / تعديل مشاريع تعديل مهام بلدي المشاريع
Permission44=حذف مشاريع
Permission45=Export projects
Permission61=قراءة التدخلات
Permission62=إنشاء / تعديل التدخلات
Permission64=حذف التدخلات
@ -640,6 +642,7 @@ Permission162=إنشاء / تعديل العقود / الاشتراكات
Permission163=تفعيل خدمة / الاشتراك عقد
Permission164=تعطيل خدمة / الاشتراك عقد
Permission165=حذف العقود / الاشتراكات
Permission167=Export contracts
Permission171=قراءة الرحلات والنفقات (لك والمرؤوسين لديك)
Permission172=إنشاء / تعديل الرحلات والمصاريف
Permission173=حذف الرحلات والمصاريف
@ -788,6 +791,7 @@ Permission2403=قراءة الأعمال (أو أحداث المهام) آخري
Permission2411=الإجراءات قراءة (أحداث أو المهام) للاخرين
Permission2412=إنشاء / تعديل الإجراءات (أحداث أو المهام) للاخرين
Permission2413=حذف الإجراءات (أحداث أو المهام) للاخرين
Permission2414=Export actions/tasks of others
Permission2501=قراءة وثائق
Permission2502=تقديم وثائق أو حذف
Permission2503=تقديم وثائق أو حذف
@ -1713,3 +1717,4 @@ ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP و CRM%s هو متاح.
MultiPriceRuleDesc=عندما خيار "مستوى العديد من الأسعار لكل المنتجات / الخدمات" في وضع التشغيل، يمكنك تحديد أسعار مختلفة (واحد لكل مستوى الأسعار) لكل منتج. لتوفير الوقت، يمكنك الدخول هنا حكم أن يكون السعر لكل مستوى autocalculated وفقا لسعر المستوى الأول، لذلك سيكون لديك للدخول الثمن الوحيد للمستوى الأول على كل منتج. هذه الصفحة هي هنا لتوفر لك الوقت ويمكن أن تكون مفيدة فقط إذا كانت الأسعار الخاص لكل LEVE قريبة إلى المستوى الأول. يمكنك تجاهل هذه الصفحة في معظم الحالات.
ModelModulesProduct=Templates for product documents
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=ارسال الفاتورة عن طريق البريد الإلكتروني
SendReminderBillByMail=إرسال تذكرة عن طريق البريد الإلكتروني
RelatedCommercialProposals=المقترحات المتعلقة التجارية
RelatedRecurringCustomerInvoices=Related recurring customer invoices
MenuToValid=لصحيحة
DateMaxPayment=قبل استحقاق الدفع
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
DateLastGeneration=Date of last generation
MaxPeriodNumber=Max nb of invoice generation
RestPeriodNumber=Rest period number
NbOfGenerationDone=Nb of invoice generation already done
InvoiceAutoValidate=Automatically validate invoice
GeneratedFromRecurringInvoice=Generated from template recurring invoice %s
@ -471,3 +471,7 @@ PDFCrevetteSituationInvoiceLine=Situation N°%s : Inv. N°%s on %s
TotalSituationInvoice=Total situation
invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line
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 التبرعات تعديل
BoxTitleLastModifiedExpenses=أخر %s تقارير النفقات المعدلة
BoxGlobalActivity=النشاط العالمي (الفواتير والمقترحات والطلبات)
BoxGoodCustomers=Good Customers
BoxTitleGoodCustomers=%s Good Customers
BoxGoodCustomers=Good customers
BoxTitleGoodCustomers=%s Good customers
FailedToRefreshDataInfoNotUpToDate=فشل لتحديث تدفق RSS. تاريخ آخر تحديث ناجحا:٪ الصورة
LastRefreshDate=تاريخ آخر تحديث
NoRecordedBookmarks=أية إشارات محددة.

View File

@ -202,7 +202,7 @@ ProfId3IN=معرف البروفيسور 3
ProfId4IN=معرف البروفيسور 4
ProfId5IN=الأستاذ رقم 5
ProfId6IN=-
ProfId1LU=Id. prof. 1 (RCS)
ProfId1LU=Id. prof. 1 (R.C.S. Luxembourg)
ProfId2LU=Id. prof. 2 (Business permit)
ProfId3LU=-
ProfId4LU=-
@ -317,10 +317,12 @@ ShowContact=وتظهر الاتصال
ContactsAllShort=جميع (بدون فلتر)
ContactType=نوع الاتصال
ContactForOrders=أوامر اتصال
ContactForOrdersOrShipments=Order's or shipment's contact
ContactForProposals=مقترحات اتصال
ContactForContracts=عقود اتصال
ContactForInvoices=فواتير اتصال
NoContactForAnyOrder=هذا الاتصال ليس من أجل أي اتصال
NoContactForAnyOrderOrShipment=This contact is not a contact for any order or shipment
NoContactForAnyProposal=هذا الاتصال ليست على اتصال في أي اقتراح التجارية
NoContactForAnyContract=هذا الاتصال ليس أي عقد للاتصال
NoContactForAnyInvoice=هذا الاتصال ليست على اتصال في أي فاتورة
@ -438,3 +440,6 @@ MergeThirdparties=دمج أطراف ثالثة
ConfirmMergeThirdparties=هل أنت متأكد أنك تريد دمج هذا الطرف الثالث في واحدة الحالي؟ كل الكائنات المرتبطة (الفواتير وأوامر، ...) سيتم نقلها إلى طرف ثالث الحالي لذلك سوف تكون قادرة على حذف واحد مكرر.
ThirdpartiesMergeSuccess=تم دمج 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=قمت بتعيين المبلغ المقدر لهذه الفرصة / الرصاص. لذلك يجب عليك أيضا إدخال مكانتها
ErrorBadDefinitionOfMenuArrayInModuleDescriptor=سيئة تعريف القائمة صفيف في الوحدة واصف (القيمة سيئة لfk_menu مفتاح)
ErrorSavingChanges=وقد ocurred لخطأ عند حفظ التغييرات
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
ErrorFileMustHaveFormat=File must have format %s
# Warnings
WarningPasswordSetWithNoAccount=تم تعيين كلمة مرور لهذا العضو. ومع ذلك، تم إنشاء أي حساب المستخدم. لذلك يتم تخزين كلمة المرور هذه ولكن لا يمكن استخدامها للدخول إلى Dolibarr. ويمكن استخدامه من قبل وحدة / واجهة خارجية ولكن إذا كنت لا تحتاج إلى تعريف أي تسجيل دخول أو كلمة المرور لأحد أفراد، يمكنك تعطيل خيار "إدارة تسجيل دخول لكل عضو" من إعداد وحدة الأعضاء. إذا كنت بحاجة إلى إدارة تسجيل الدخول ولكن لا تحتاج إلى أي كلمة المرور، يمكنك الحفاظ على هذا الحقل فارغا لتجنب هذا التحذير. ملاحظة: يمكن أيضا أن تستخدم البريد الإلكتروني لتسجيل الدخول إذا تم ربط عضو إلى المستخدم.

View File

@ -128,6 +128,10 @@ SpecialCode=رمز خاص
ExportStringFilter=٪٪ يسمح استبدال حرف واحد أو أكثر في النص
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' المرشحات بالقيم العليا
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
SelectFilterFields=إذا كنت ترغب في تصفية على بعض القيم، قيم الإدخال فقط هنا.
FilterableFields=الحقول تصفيتها

View File

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

View File

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

View File

@ -45,10 +45,6 @@ LastProducts=آخر المنتجات
CardProduct0=منتجات البطاقات
CardProduct1=بطاقة الخدمة
CardContract=عقد بطاقة
Warehouse=مخزن
Warehouses=المستودعات
WarehouseOpened=مستودع مفتوح
WarehouseClosed=مخزن مغلق
Stock=الأسهم
Stocks=الاسهم
Movement=الحركة
@ -318,3 +314,11 @@ WarningSelectOneDocument=يرجى تحديد وثيقة واحدة على الأ
DefaultUnitToShow=Unit
NbOfQtyInProposals=Qty in proposals
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=أعلن التقدم
ProgressCalculated=تقدم تحسب
Time=وقت
ListOfTasks=List of tasks
GoToListOfTimeConsumed=Go to list of time consumed
GoToListOfTasks=Go to list of tasks
ListProposalsAssociatedProject=قائمة المقترحات التجارية المرتبطة بالمشروع.
ListOrdersAssociatedProject=قائمة الزبائن المرتبطة بالمشروع.
ListInvoicesAssociatedProject=قائمة العملاء والفواتير المرتبطة بالمشروع
@ -198,3 +201,4 @@ OppStatusNEGO=Negociation
OppStatusPENDING=بانتظار
OppStatusWIN=فاز
OppStatusLOST=ضائع
Budget=Budget

View File

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

View File

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

View File

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

View File

@ -154,7 +154,7 @@ Purge=Изчистване
PurgeAreaDesc=Тази страница ви позволява да изтриете всички файлове, които са построени или съхраняват от Dolibarr (временни файлове, или всички файлове в <b>%s</b> директория). Използването на тази функция не е необходимо. Тя е предвидена за потребители, чиито Dolibarr се хоства от доставчик, който не предлага разрешения за изтриване на файлове, построени от уеб сървъра.
PurgeDeleteLogFile=Изтриване на влезете файлове <b>%s,</b> определени за Syslog модул (без риск от загуба на данни)
PurgeDeleteTemporaryFiles=Изтриване на всички временни файлове (без риск от загуба на данни)
PurgeDeleteTemporaryFilesShort=Delete temporary files
PurgeDeleteTemporaryFilesShort=Изтрий временните файлове
PurgeDeleteAllFilesInDocumentsDir=Изтриване на всички файлове в директорията <b>%s.</b> Временни файлове, но също така и резервната база данни сметища, файлове, прикрепени към елементи (контрагенти, фактури, ...) и качени в модул ECM ще бъдат изтрити.
PurgeRunNow=Изчистване сега
PurgeNothingToDelete=Директория или файл да изтриете.
@ -282,6 +282,7 @@ ModuleSetup=Настройки на модул
ModulesSetup=Настройки на модули
ModuleFamilyBase=Система
ModuleFamilyCrm=Управление на Връзки с клиенти (CRM)
ModuleFamilySrm=Supplier Relation Management (SRM)
ModuleFamilyProducts=Управление на продукти
ModuleFamilyHr=Управление на човешките ресурси
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
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>...
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
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
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=Листа с параметри е от таблицата<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
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>
@ -417,7 +418,7 @@ ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode
AllBarcodeReset=All barcode values have been removed
NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup.
NoRecordWithoutBarcodeDefined=No record with no barcode value defined.
EnableFileCache=Enable file cache
EnableFileCache=Пусни кеширането на файла
# Modules
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)
Permission42=Създаване / промяна на проекти (общи проекти и проекти съм се с нас за)
Permission44=Изтриване на проекти (общи проекти и проекти съм се с нас за)
Permission45=Export projects
Permission61=Прочети интервенции
Permission62=Създаване / промяна на интервенции
Permission64=Изтриване на интервенции
@ -640,6 +642,7 @@ Permission162=Create/modify contracts/subscriptions
Permission163=Activate a service/subscription of a contract
Permission164=Disable a service/subscription of a contract
Permission165=Delete contracts/subscriptions
Permission167=Export contracts
Permission171=Read trips and expenses (yours and your subordinates)
Permission172=Create/modify trips and expenses
Permission173=Delete trips and expenses
@ -788,6 +791,7 @@ Permission2403=Изтрий действия (събития или задачи
Permission2411=Прочетете действия (събития или задачи) на другите
Permission2412=Създаване / промяна действия (събития или задачи) на другите
Permission2413=Изтрий действия (събития или задачи) на другите
Permission2414=Export actions/tasks of others
Permission2501=/ Изтегляне документи
Permission2502=Изтегляне на документи
Permission2503=Изпращане или изтриване на документи
@ -1091,7 +1095,7 @@ SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail dire
TranslationSetup=Конфигурация на превода
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.
TotalNumberOfActivatedModules=Total number of activated feature modules: <b>%s</b> / <b>%s</b>
TotalNumberOfActivatedModules=Общ брой на активираните модули: <b>%s</b> / <b>%s</b>
YouMustEnableOneModule=Трябва да даде възможност на най-малко 1 модул
ClassNotFoundIntoPathWarning=Class %s not found into PHP path
YesInSummer=Yes in summer
@ -1641,7 +1645,7 @@ CloseFiscalYear=Close fiscal year
DeleteFiscalYear=Delete fiscal year
ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ?
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)
NbMajMin=Minimum number of uppercase 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>
HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over
HighlightLinesColor=Цвят за подчертаване на линията, когато мишката мине отгоре (оставете празно за без подчертаване)
TextTitleColor=Color of page title
LinkColor=Color of links
TextTitleColor=Цвят на заглавието на страницата
LinkColor=Цвят на връзките
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
BackgroundColor=Background color
@ -1713,3 +1717,4 @@ ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Ve
MultiPriceRuleDesc=Когато опция "Няколко нива за цени на продукт/услуга" е активирана, можете да определите различни цени (по една на ниво) за всеки продукт. За да спестите време, можете да въведете правило тук да имате цена за всяко ниво автоматично изчислена спрямо цената на първо ниво, така ще трябва да въведете само цена за първо ниво на всеки продукт. Тази страница, за да пести времето ви и може да бъде полезна само ако вашите цени за всяко ниво са относителни спрямо първото ниво. Можете да игнорирате тази страница в повечето случаи.
ModelModulesProduct=Templates for product documents
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=Изпращане на фактура по имейл
SendReminderBillByMail=Изпращане на напомняне по имейл
RelatedCommercialProposals=Свързани търговски предложения
RelatedRecurringCustomerInvoices=Related recurring customer invoices
MenuToValid=За валидни
DateMaxPayment=Дължимо плащане преди
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
DateLastGeneration=Date of last generation
MaxPeriodNumber=Max nb of invoice generation
RestPeriodNumber=Rest period number
NbOfGenerationDone=Nb of invoice generation already done
InvoiceAutoValidate=Automatically validate invoice
GeneratedFromRecurringInvoice=Generated from template recurring invoice %s
@ -471,3 +471,7 @@ PDFCrevetteSituationInvoiceLine=Situation N°%s : Inv. N°%s on %s
TotalSituationInvoice=Total situation
invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line
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 променени дарения
BoxTitleLastModifiedExpenses=Last %s modified expense reports
BoxGlobalActivity=Обща активност (фактури, предложения, поръчки)
BoxGoodCustomers=Good Customers
BoxTitleGoodCustomers=%s Good Customers
BoxGoodCustomers=Good customers
BoxTitleGoodCustomers=%s Good customers
FailedToRefreshDataInfoNotUpToDate=Неуспешно опресняване на RSS поток. Последното успешно опресняване е на дата: %s
LastRefreshDate=Последна промяна дата
NoRecordedBookmarks=Няма дефинирани отметки.

View File

@ -202,7 +202,7 @@ ProfId3IN=Prof Id 3 (SRVC TAX)
ProfId4IN=Prof Id 4
ProfId5IN=Prof Id 5
ProfId6IN=-
ProfId1LU=Id. prof. 1 (RCS)
ProfId1LU=Id. prof. 1 (R.C.S. Luxembourg)
ProfId2LU=Id. prof. 2 (Business permit)
ProfId3LU=-
ProfId4LU=-
@ -317,10 +317,12 @@ ShowContact=Покажи контакт
ContactsAllShort=Всички (без филтър)
ContactType=Тип на контакт
ContactForOrders=Контакт за поръчката
ContactForOrdersOrShipments=Order's or shipment's contact
ContactForProposals=Контакт за предложение
ContactForContracts=Контакт за договор
ContactForInvoices=Контакт за фактура
NoContactForAnyOrder=Този контакт не е контакт за поръчка
NoContactForAnyOrderOrShipment=This contact is not a contact for any order or shipment
NoContactForAnyProposal=Този контакт не е контакт за търговско предложение
NoContactForAnyContract=Този контакт не е контакт за договор
NoContactForAnyInvoice=Този контакт не е контакт за фактура
@ -438,3 +440,6 @@ MergeThirdparties=Сливане на контрагенти
ConfirmMergeThirdparties=Сигурни ли сте че искате да слеете този контрагент в текущия? Всички свързани обекти (фактури, поръчки, ...) ще бъдат преместени към текущия контрагент.
ThirdpartiesMergeSuccess=Контрагентите бяха обединени
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
ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu)
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
WarningPasswordSetWithNoAccount=Парола е зададено за този член. Обаче, няма създаден потребителски акаунт. Следователно тази парола е записана, но не може да бъде използвана за влизане в Dolibarr. Може да бъде използвана от външен модул/интерфейс, но ако нямате нужда да определите нито потребителско име нито парола за член, можете да деактивирате тази опция. Ако имате нужда да управлявате потребителско име, но нямата нужда от парола, можете да оставите това поле празно, за да избегнете това предупреждение. Забележка: Имейл също може да бъде използван като потребителско име ако члена с свързан към потребител.

View File

@ -128,6 +128,10 @@ SpecialCode=Специален код
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
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
SelectFilterFields=Ако желаете на филтрирате по някои стойности, просто въведете стойностите тук.
FilterableFields=Полета подлежащи на филтриране

View File

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

View File

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

View File

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

View File

@ -45,10 +45,6 @@ LastProducts=Последни продукти
CardProduct0=Карта на продукт
CardProduct1=Карта на услуга
CardContract=Карта на контакт
Warehouse=Склад
Warehouses=Складове
WarehouseOpened=Складът е отворен
WarehouseClosed=Склада е затворен
Stock=Наличност
Stocks=Наличности
Movement=Движение
@ -318,3 +314,11 @@ WarningSelectOneDocument=Моля изберете поне един докум
DefaultUnitToShow=Unit
NbOfQtyInProposals=Qty in proposals
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=Деклариране прогрес
ProgressCalculated=Изчислен прогрес
Time=Време
ListOfTasks=List of tasks
GoToListOfTimeConsumed=Go to list of time consumed
GoToListOfTasks=Go to list of tasks
ListProposalsAssociatedProject=Списък на търговските предложения, свързани с проекта
ListOrdersAssociatedProject=Списък на клиентски поръчки, свързани с проекта
ListInvoicesAssociatedProject=Списък на фактури на клиентите, свързани с проекта
@ -198,3 +201,4 @@ OppStatusNEGO=Уговаряне
OppStatusPENDING=Pending
OppStatusWIN=Won
OppStatusLOST=Lost
Budget=Budget

View File

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

View File

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

View File

@ -282,6 +282,7 @@ ModuleSetup=Module setup
ModulesSetup=Modules setup
ModuleFamilyBase=System
ModuleFamilyCrm=Customer Relation Management (CRM)
ModuleFamilySrm=Supplier Relation Management (SRM)
ModuleFamilyProducts=Products Management (PM)
ModuleFamilyHr=Human Resource Management (HR)
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)
Permission42=Create/modify 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
Permission62=Create/modify interventions
Permission64=Delete interventions
@ -640,6 +642,7 @@ Permission162=Create/modify contracts/subscriptions
Permission163=Activate a service/subscription of a contract
Permission164=Disable a service/subscription of a contract
Permission165=Delete contracts/subscriptions
Permission167=Export contracts
Permission171=Read trips and expenses (yours and your subordinates)
Permission172=Create/modify 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
Permission2412=Create/modify actions (events or tasks) of others
Permission2413=Delete actions (events or tasks) of others
Permission2414=Export actions/tasks of others
Permission2501=Read/Download documents
Permission2502=Download 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.
ModelModulesProduct=Templates for product documents
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
SendReminderBillByMail=Send reminder by email
RelatedCommercialProposals=Related commercial proposals
RelatedRecurringCustomerInvoices=Related recurring customer invoices
MenuToValid=To valid
DateMaxPayment=Payment due before
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
DateLastGeneration=Date of last generation
MaxPeriodNumber=Max nb of invoice generation
RestPeriodNumber=Rest period number
NbOfGenerationDone=Nb of invoice generation already done
InvoiceAutoValidate=Automatically validate invoice
GeneratedFromRecurringInvoice=Generated from template recurring invoice %s
@ -471,3 +471,7 @@ PDFCrevetteSituationInvoiceLine=Situation N°%s : Inv. N°%s on %s
TotalSituationInvoice=Total situation
invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line
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
BoxTitleLastModifiedExpenses=Last %s modified expense reports
BoxGlobalActivity=Global activity (invoices, proposals, orders)
BoxGoodCustomers=Good Customers
BoxTitleGoodCustomers=%s Good Customers
BoxGoodCustomers=Good customers
BoxTitleGoodCustomers=%s Good customers
FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Last successfull refresh date: %s
LastRefreshDate=Last refresh date
NoRecordedBookmarks=No bookmarks defined.

View File

@ -202,7 +202,7 @@ ProfId3IN=Prof Id 3 (SRVC TAX)
ProfId4IN=Prof Id 4
ProfId5IN=Prof Id 5
ProfId6IN=-
ProfId1LU=Id. prof. 1 (RCS)
ProfId1LU=Id. prof. 1 (R.C.S. Luxembourg)
ProfId2LU=Id. prof. 2 (Business permit)
ProfId3LU=-
ProfId4LU=-
@ -317,10 +317,12 @@ ShowContact=Show contact
ContactsAllShort=All (No filter)
ContactType=Contact type
ContactForOrders=Order's contact
ContactForOrdersOrShipments=Order's or shipment's contact
ContactForProposals=Proposal's contact
ContactForContracts=Contract's contact
ContactForInvoices=Invoice's contact
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
NoContactForAnyContract=This contact is not a contact for any contract
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.
ThirdpartiesMergeSuccess=Thirdparties have been merged
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
ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu)
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
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
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
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
SelectFilterFields=If you want to filter on some values, just input values here.
FilterableFields=Filterable Fields

View File

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

View File

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

View File

@ -45,10 +45,6 @@ LastProducts=Last products
CardProduct0=Product card
CardProduct1=Service card
CardContract=Contract card
Warehouse=Warehouse
Warehouses=Warehouses
WarehouseOpened=Warehouse open
WarehouseClosed=Warehouse closed
Stock=Stock
Stocks=Stocks
Movement=Movement
@ -318,3 +314,11 @@ WarningSelectOneDocument=Please select at least one document
DefaultUnitToShow=Unit
NbOfQtyInProposals=Qty in proposals
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
ProgressCalculated=Calculated progress
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
ListOrdersAssociatedProject=List of customer's orders associated with the project
ListInvoicesAssociatedProject=List of customer's invoices associated with the project
@ -198,3 +201,4 @@ OppStatusNEGO=Negociation
OppStatusPENDING=Pending
OppStatusWIN=Won
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
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.
WeightVolShort=Weight/Vol.
ValidateOrderFirstBeforeShipment=You must first validate the order before being able to make shipments.
# Sending methods
SendingMethodCATCH=Catch by customer

View File

@ -58,3 +58,5 @@ DefaultModelSupplierProposalCreate=Default model creation
DefaultModelSupplierProposalToBill=Default template when closing a price request (accepted)
DefaultModelSupplierProposalClosed=Default template when closing a price request (refused)
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
ModuleFamilyBase=System
ModuleFamilyCrm=Customer Relation Management (CRM)
ModuleFamilySrm=Supplier Relation Management (SRM)
ModuleFamilyProducts=Products Management (PM)
ModuleFamilyHr=Human Resource Management (HR)
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)
Permission42=Create/modify 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
Permission62=Create/modify interventions
Permission64=Delete interventions
@ -640,6 +642,7 @@ Permission162=Create/modify contracts/subscriptions
Permission163=Activate a service/subscription of a contract
Permission164=Disable a service/subscription of a contract
Permission165=Delete contracts/subscriptions
Permission167=Export contracts
Permission171=Read trips and expenses (yours and your subordinates)
Permission172=Create/modify 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
Permission2412=Create/modify actions (events or tasks) of others
Permission2413=Delete actions (events or tasks) of others
Permission2414=Export actions/tasks of others
Permission2501=Read/Download documents
Permission2502=Download 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.
ModelModulesProduct=Templates for product documents
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
SendReminderBillByMail=Pošalji opomenu na e-mail
RelatedCommercialProposals=Vezani poslovni prijedlozi
RelatedRecurringCustomerInvoices=Related recurring customer invoices
MenuToValid=Za važeći
DateMaxPayment=Rok plaćanja do
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
DateLastGeneration=Date of last generation
MaxPeriodNumber=Max nb of invoice generation
RestPeriodNumber=Rest period number
NbOfGenerationDone=Nb of invoice generation already done
InvoiceAutoValidate=Automatically validate invoice
GeneratedFromRecurringInvoice=Generated from template recurring invoice %s
@ -471,3 +471,7 @@ PDFCrevetteSituationInvoiceLine=Situation N°%s : Inv. N°%s on %s
TotalSituationInvoice=Total situation
invoiceLineProgressError=Invoice line progress can't be egal or upper the next invoice line
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
BoxTitleLastModifiedExpenses=Last %s modified expense reports
BoxGlobalActivity=Globalne aktivnosti (fakture, prijedlozi, narudžbe)
BoxGoodCustomers=Good Customers
BoxTitleGoodCustomers=%s Good Customers
BoxGoodCustomers=Good customers
BoxTitleGoodCustomers=%s Good customers
FailedToRefreshDataInfoNotUpToDate=Neuspjelo osvježavanje RSS protoka. Datum zadnjeg uspješnog osvježavanja: %s
LastRefreshDate=Zadnji datum osvježavanja
NoRecordedBookmarks=Nema definisanih bookmark-a.

View File

@ -202,7 +202,7 @@ ProfId3IN=Prof Id 3 (SRVC TAX)
ProfId4IN=Prof Id 4
ProfId5IN=Prof Id 5
ProfId6IN=-
ProfId1LU=Id. prof. 1 (RCS)
ProfId1LU=Id. prof. 1 (R.C.S. Luxembourg)
ProfId2LU=Id. prof. 2 (Business permit)
ProfId3LU=-
ProfId4LU=-
@ -317,10 +317,12 @@ ShowContact=Prikaži kontakt
ContactsAllShort=Svi (bez filtera)
ContactType=Tip kontakta
ContactForOrders=Kontakt narudžbe
ContactForOrdersOrShipments=Order's or shipment's contact
ContactForProposals=Kontakt prijedloga
ContactForContracts=Kontakt ugovora
ContactForInvoices=Kontakt fakture
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
NoContactForAnyContract=Ovaj kontakt nije kontakt za bilo koji ugovor
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.
ThirdpartiesMergeSuccess=Thirdparties have been merged
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
ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu)
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
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
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
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
SelectFilterFields=If you want to filter on some values, just input values here.
FilterableFields=Filterable Fields

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