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

This commit is contained in:
John Botella 2019-07-01 09:51:26 +02:00
commit 9c2e83dcae
966 changed files with 29513 additions and 4790 deletions

View File

@ -499,6 +499,41 @@ Following changes may create regressions for some external modules, but were nec
* Remove the no more used and deprecated dol_print_graph function
***** ChangeLog for 8.0.6 compared to 8.0.5 *****
FIX: #11244
FIX: #11316
FIX: Add missing end date of subscription in export
FIX: A user may read holiday and expense report without permissions
FIX: better syntax
FIX: condition
FIX: confirmation of mass email sending + option MAILING_NO_USING_PHPMAIL
FIX: crabe pdf: bad detailed VAT for situation invoices, in situations S2 and above
FIX: default value for duration of validity can be set from generic
FIX: do not include tpl from disabled modules
FIX: Error management when MAILING_NO_USING_PHPMAIL is set
FIX: Even with permission, can't validate leave once validator defined.
FIX: extrafield list search: SQL error when field is multiselect
FIX: if last char of customercode is accent making the truncate of first
FIX: in edit mode, dictionary inputs do not escape the string inside the 'value' attribute, causing errors if there are any double quotes
FIX: invalid link on user.fk_user
FIX: invoice class: bad SQL request if product type not set
FIX: mail presend: can overwrite a file previously uploaded
FIX: mail presend: can overwrite a file previously uploaded (Issue #11056)
FIX: mass send mail
FIX: missing compatibility with multicompany transverse mode
FIX: modulebuilder: hardcoded llx_
FIX: Not showing Contract and Project columns on ficheinter list
FIX: remove isolated transaction commit
FIX: security (a user can read leave or holiday of other without perm.
FIX: situation invoices: bad detailed VAT in situations following the first one
FIX: situation invoices: block progress percentage change for discount lines
FIX: syntax error
FIX: try to use WHERE EXISTS instead DISTINCT
FIX: use dol_sanitizeFileName() function to remove double spaces in filenames, as well as done on document.php when we want to download pdf
FIX: var name
FIX: we need to fetch fourn invoice with ref in current entity
FIX: Wrong stock movement on supplier credit notes
***** ChangeLog for 8.0.5 compared to 8.0.4 *****
FIX: #10381
FIX: #10460 compatibility with MariaDB 10.4

View File

@ -367,7 +367,6 @@ if ($nboftargetok) {
{
#print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\'| sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. | grep -v "Merge branch" | grep -v "Merge pull" | grep "^ " | sed -e "s/^[0-9a-z]* *//" | grep -e \'^FIX\|NEW\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
}
print "\n";
if (! $ret)
@ -382,11 +381,15 @@ if ($nboftargetok) {
}
}
}
# Build xml check file
#-----------------------
if ($CHOOSEDTARGET{'-CHKSUM'})
{
print "Go to directory $SOURCE\n";
$olddir=getcwd();
chdir("$SOURCE");
$ret=`git ls-files . --exclude-standard --others`;
if ($ret)
{

View File

@ -37,6 +37,8 @@ require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php';
// Load translation files required by the page
$langs->loadLangs(array("accountancy"));
$socid = GETPOST('socid', 'int');
$action = GETPOST('action', 'aZ09');
$search_mvt_num = GETPOST('search_mvt_num', 'int');
$search_doc_type = GETPOST("search_doc_type", 'alpha');
@ -97,8 +99,9 @@ $pagenext = $page + 1;
if ($sortorder == "") $sortorder = "ASC";
if ($sortfield == "") $sortfield = "t.piece_num,t.rowid";
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
$object = new BookKeeping($db);
$hookmanager->initHooks(array('bookkeepinglist'));
$formaccounting = new FormAccounting($db);
$formother = new FormOther($db);
@ -160,145 +163,151 @@ if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) unset($arrayfields['t.let
if (GETPOST('cancel', 'alpha')) { $action='list'; $massaction=''; }
if (! GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
$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');
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All tests are required to be compatible with all browsers
if (empty($reshook))
{
$search_mvt_num = '';
$search_doc_type = '';
$search_doc_ref = '';
$search_doc_date = '';
$search_accountancy_code = '';
$search_accountancy_code_start = '';
$search_accountancy_code_end = '';
$search_accountancy_aux_code = '';
$search_accountancy_aux_code_start = '';
$search_accountancy_aux_code_end = '';
$search_mvt_label = '';
$search_direction = '';
$search_ledger_code = '';
$search_date_start = '';
$search_date_end = '';
$search_date_creation_start = '';
$search_date_creation_end = '';
$search_date_modification_start = '';
$search_date_modification_end = '';
$search_date_export_start = '';
$search_date_export_end = '';
$search_debit = '';
$search_credit = '';
$search_lettering_code = '';
}
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
// Must be after the remove filter action, before the export.
$param = '';
$filter = array ();
if (! empty($search_date_start)) {
$filter['t.doc_date>='] = $search_date_start;
$tmp=dol_getdate($search_date_start);
$param .= '&search_date_startmonth=' . $tmp['mon'] . '&search_date_startday=' . $tmp['mday'] . '&search_date_startyear=' . $tmp['year'];
}
if (! empty($search_date_end)) {
$filter['t.doc_date<='] = $search_date_end;
$tmp=dol_getdate($search_date_end);
$param .= '&search_date_endmonth=' . $tmp['mon'] . '&search_date_endday=' . $tmp['mday'] . '&search_date_endyear=' . $tmp['year'];
}
if (! empty($search_doc_date)) {
$filter['t.doc_date'] = $search_doc_date;
$tmp=dol_getdate($search_doc_date);
$param .= '&doc_datemonth=' . $tmp['mon'] . '&doc_dateday=' . $tmp['mday'] . '&doc_dateyear=' . $tmp['year'];
}
if (! empty($search_doc_type)) {
$filter['t.doc_type'] = $search_doc_type;
$param .= '&search_doc_type=' . urlencode($search_doc_type);
}
if (! empty($search_doc_ref)) {
$filter['t.doc_ref'] = $search_doc_ref;
$param .= '&search_doc_ref=' . urlencode($search_doc_ref);
}
if (! empty($search_accountancy_code)) {
$filter['t.numero_compte'] = $search_accountancy_code;
$param .= '&search_accountancy_code=' . urlencode($search_accountancy_code);
}
if (! empty($search_accountancy_code_start)) {
$filter['t.numero_compte>='] = $search_accountancy_code_start;
$param .= '&search_accountancy_code_start=' . urlencode($search_accountancy_code_start);
}
if (! empty($search_accountancy_code_end)) {
$filter['t.numero_compte<='] = $search_accountancy_code_end;
$param .= '&search_accountancy_code_end=' . urlencode($search_accountancy_code_end);
}
if (! empty($search_accountancy_aux_code)) {
$filter['t.subledger_account'] = $search_accountancy_aux_code;
$param .= '&search_accountancy_aux_code=' . urlencode($search_accountancy_aux_code);
}
if (! empty($search_accountancy_aux_code_start)) {
$filter['t.subledger_account>='] = $search_accountancy_aux_code_start;
$param .= '&search_accountancy_aux_code_start=' . urlencode($search_accountancy_aux_code_start);
}
if (! empty($search_accountancy_aux_code_end)) {
$filter['t.subledger_account<='] = $search_accountancy_aux_code_end;
$param .= '&search_accountancy_aux_code_end=' . urlencode($search_accountancy_aux_code_end);
}
if (! empty($search_mvt_label)) {
$filter['t.label_operation'] = $search_mvt_label;
$param .= '&search_mvt_label=' . urlencode($search_mvt_label);
}
if (! empty($search_direction)) {
$filter['t.sens'] = $search_direction;
$param .= '&search_direction=' . urlencode($search_direction);
}
if (! empty($search_ledger_code)) {
$filter['t.code_journal'] = $search_ledger_code;
$param .= '&search_ledger_code=' . urlencode($search_ledger_code);
}
if (! empty($search_mvt_num)) {
$filter['t.piece_num'] = $search_mvt_num;
$param .= '&search_mvt_num=' . urlencode($search_mvt_num);
}
if (! empty($search_date_creation_start)) {
$filter['t.date_creation>='] = $search_date_creation_start;
$tmp=dol_getdate($search_date_creation_start);
$param .= '&date_creation_startmonth=' . $tmp['mon'] . '&date_creation_startday=' . $tmp['mday'] . '&date_creation_startyear=' . $tmp['year'];
}
if (! empty($search_date_creation_end)) {
$filter['t.date_creation<='] = $search_date_creation_end;
$tmp=dol_getdate($search_date_creation_end);
$param .= '&date_creation_endmonth=' . $tmp['mon'] . '&date_creation_endday=' . $tmp['mday'] . '&date_creation_endyear=' . $tmp['year'];
}
if (! empty($search_date_modification_start)) {
$filter['t.tms>='] = $search_date_modification_start;
$tmp=dol_getdate($search_date_modification_start);
$param .= '&date_modification_startmonth=' . $tmp['mon'] . '&date_modification_startday=' . $tmp['mday'] . '&date_modification_startyear=' . $tmp['year'];
}
if (! empty($search_date_modification_end)) {
$filter['t.tms<='] = $search_date_modification_end;
$tmp=dol_getdate($search_date_modification_end);
$param .= '&date_modification_endmonth=' . $tmp['mon'] . '&date_modification_endday=' . $tmp['mday'] . '&date_modification_endyear=' . $tmp['year'];
}
if (! empty($search_date_export_start)) {
$filter['t.date_export>='] = $search_date_export_start;
$tmp=dol_getdate($search_date_export_start);
$param .= '&date_export_startmonth=' . $tmp['mon'] . '&date_export_startday=' . $tmp['mday'] . '&date_export_startyear=' . $tmp['year'];
}
if (! empty($search_date_export_end)) {
$filter['t.date_export<='] = $search_date_export_end;
$tmp=dol_getdate($search_date_export_end);
$param .= '&date_export_endmonth=' . $tmp['mon'] . '&date_export_endday=' . $tmp['mday'] . '&date_export_endyear=' . $tmp['year'];
}
if (! empty($search_debit)) {
$filter['t.debit'] = $search_debit;
$param .= '&search_debit=' . urlencode($search_debit);
}
if (! empty($search_credit)) {
$filter['t.credit'] = $search_credit;
$param .= '&search_credit=' . urlencode($search_credit);
}
if (! empty($search_lettering_code)) {
$filter['t.lettering_code'] = $search_lettering_code;
$param .= '&search_lettering_code=' . urlencode($search_lettering_code);
}
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All tests are required to be compatible with all browsers
{
$search_mvt_num = '';
$search_doc_type = '';
$search_doc_ref = '';
$search_doc_date = '';
$search_accountancy_code = '';
$search_accountancy_code_start = '';
$search_accountancy_code_end = '';
$search_accountancy_aux_code = '';
$search_accountancy_aux_code_start = '';
$search_accountancy_aux_code_end = '';
$search_mvt_label = '';
$search_direction = '';
$search_ledger_code = '';
$search_date_start = '';
$search_date_end = '';
$search_date_creation_start = '';
$search_date_creation_end = '';
$search_date_modification_start = '';
$search_date_modification_end = '';
$search_date_export_start = '';
$search_date_export_end = '';
$search_debit = '';
$search_credit = '';
$search_lettering_code = '';
}
// Must be after the remove filter action, before the export.
$param = '';
$filter = array ();
if (! empty($search_date_start)) {
$filter['t.doc_date>='] = $search_date_start;
$tmp=dol_getdate($search_date_start);
$param .= '&search_date_startmonth=' . $tmp['mon'] . '&search_date_startday=' . $tmp['mday'] . '&search_date_startyear=' . $tmp['year'];
}
if (! empty($search_date_end)) {
$filter['t.doc_date<='] = $search_date_end;
$tmp=dol_getdate($search_date_end);
$param .= '&search_date_endmonth=' . $tmp['mon'] . '&search_date_endday=' . $tmp['mday'] . '&search_date_endyear=' . $tmp['year'];
}
if (! empty($search_doc_date)) {
$filter['t.doc_date'] = $search_doc_date;
$tmp=dol_getdate($search_doc_date);
$param .= '&doc_datemonth=' . $tmp['mon'] . '&doc_dateday=' . $tmp['mday'] . '&doc_dateyear=' . $tmp['year'];
}
if (! empty($search_doc_type)) {
$filter['t.doc_type'] = $search_doc_type;
$param .= '&search_doc_type=' . urlencode($search_doc_type);
}
if (! empty($search_doc_ref)) {
$filter['t.doc_ref'] = $search_doc_ref;
$param .= '&search_doc_ref=' . urlencode($search_doc_ref);
}
if (! empty($search_accountancy_code)) {
$filter['t.numero_compte'] = $search_accountancy_code;
$param .= '&search_accountancy_code=' . urlencode($search_accountancy_code);
}
if (! empty($search_accountancy_code_start)) {
$filter['t.numero_compte>='] = $search_accountancy_code_start;
$param .= '&search_accountancy_code_start=' . urlencode($search_accountancy_code_start);
}
if (! empty($search_accountancy_code_end)) {
$filter['t.numero_compte<='] = $search_accountancy_code_end;
$param .= '&search_accountancy_code_end=' . urlencode($search_accountancy_code_end);
}
if (! empty($search_accountancy_aux_code)) {
$filter['t.subledger_account'] = $search_accountancy_aux_code;
$param .= '&search_accountancy_aux_code=' . urlencode($search_accountancy_aux_code);
}
if (! empty($search_accountancy_aux_code_start)) {
$filter['t.subledger_account>='] = $search_accountancy_aux_code_start;
$param .= '&search_accountancy_aux_code_start=' . urlencode($search_accountancy_aux_code_start);
}
if (! empty($search_accountancy_aux_code_end)) {
$filter['t.subledger_account<='] = $search_accountancy_aux_code_end;
$param .= '&search_accountancy_aux_code_end=' . urlencode($search_accountancy_aux_code_end);
}
if (! empty($search_mvt_label)) {
$filter['t.label_operation'] = $search_mvt_label;
$param .= '&search_mvt_label=' . urlencode($search_mvt_label);
}
if (! empty($search_direction)) {
$filter['t.sens'] = $search_direction;
$param .= '&search_direction=' . urlencode($search_direction);
}
if (! empty($search_ledger_code)) {
$filter['t.code_journal'] = $search_ledger_code;
$param .= '&search_ledger_code=' . urlencode($search_ledger_code);
}
if (! empty($search_mvt_num)) {
$filter['t.piece_num'] = $search_mvt_num;
$param .= '&search_mvt_num=' . urlencode($search_mvt_num);
}
if (! empty($search_date_creation_start)) {
$filter['t.date_creation>='] = $search_date_creation_start;
$tmp=dol_getdate($search_date_creation_start);
$param .= '&date_creation_startmonth=' . $tmp['mon'] . '&date_creation_startday=' . $tmp['mday'] . '&date_creation_startyear=' . $tmp['year'];
}
if (! empty($search_date_creation_end)) {
$filter['t.date_creation<='] = $search_date_creation_end;
$tmp=dol_getdate($search_date_creation_end);
$param .= '&date_creation_endmonth=' . $tmp['mon'] . '&date_creation_endday=' . $tmp['mday'] . '&date_creation_endyear=' . $tmp['year'];
}
if (! empty($search_date_modification_start)) {
$filter['t.tms>='] = $search_date_modification_start;
$tmp=dol_getdate($search_date_modification_start);
$param .= '&date_modification_startmonth=' . $tmp['mon'] . '&date_modification_startday=' . $tmp['mday'] . '&date_modification_startyear=' . $tmp['year'];
}
if (! empty($search_date_modification_end)) {
$filter['t.tms<='] = $search_date_modification_end;
$tmp=dol_getdate($search_date_modification_end);
$param .= '&date_modification_endmonth=' . $tmp['mon'] . '&date_modification_endday=' . $tmp['mday'] . '&date_modification_endyear=' . $tmp['year'];
}
if (! empty($search_date_export_start)) {
$filter['t.date_export>='] = $search_date_export_start;
$tmp=dol_getdate($search_date_export_start);
$param .= '&date_export_startmonth=' . $tmp['mon'] . '&date_export_startday=' . $tmp['mday'] . '&date_export_startyear=' . $tmp['year'];
}
if (! empty($search_date_export_end)) {
$filter['t.date_export<='] = $search_date_export_end;
$tmp=dol_getdate($search_date_export_end);
$param .= '&date_export_endmonth=' . $tmp['mon'] . '&date_export_endday=' . $tmp['mday'] . '&date_export_endyear=' . $tmp['year'];
}
if (! empty($search_debit)) {
$filter['t.debit'] = $search_debit;
$param .= '&search_debit=' . urlencode($search_debit);
}
if (! empty($search_credit)) {
$filter['t.credit'] = $search_credit;
$param .= '&search_credit=' . urlencode($search_credit);
}
if (! empty($search_lettering_code)) {
$filter['t.lettering_code'] = $search_lettering_code;
$param .= '&search_lettering_code=' . urlencode($search_lettering_code);
}
}
if ($action == 'delbookkeeping' && $user->rights->accounting->mouvements->supprimer) {
@ -527,6 +536,11 @@ $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
if ($massactionbutton) $selectedfields.=$form->showCheckAddButtons('checkforselect', 1);
$parameters=array();
$reshook=$hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook
if (empty($reshook)) $moreforfilter .= $hookmanager->resPrint;
else $moreforfilter = $hookmanager->resPrint;
print '<div class="div-table-responsive">';
print '<table class="tagtable liste" width="100%">';
@ -635,6 +649,13 @@ if (! empty($arrayfields['t.code_journal']['checked']))
{
print '<td class="liste_titre center"><input type="text" name="search_ledger_code" size="3" value="' . $search_ledger_code . '"></td>';
}
// Fields from hook
$parameters=array('arrayfields'=>$arrayfields);
$reshook=$hookmanager->executeHooks('printFieldListOption', $parameters); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
// Date creation
if (! empty($arrayfields['t.date_creation']['checked']))
{
@ -695,6 +716,10 @@ if (! empty($arrayfields['t.debit']['checked'])) print_liste_field_titre($arr
if (! empty($arrayfields['t.credit']['checked'])) print_liste_field_titre($arrayfields['t.credit']['label'], $_SERVER['PHP_SELF'], "t.credit", "", $param, '', $sortfield, $sortorder, 'right ');
if (! empty($arrayfields['t.lettering_code']['checked'])) print_liste_field_titre($arrayfields['t.lettering_code']['label'], $_SERVER['PHP_SELF'], "t.lettering_code", "", $param, '', $sortfield, $sortorder, 'center ');
if (! empty($arrayfields['t.code_journal']['checked'])) print_liste_field_titre($arrayfields['t.code_journal']['label'], $_SERVER['PHP_SELF'], "t.code_journal", "", $param, '', $sortfield, $sortorder, 'center ');
// Hook fields
$parameters=array('arrayfields'=>$arrayfields,'param'=>$param,'sortfield'=>$sortfield,'sortorder'=>$sortorder);
$reshook=$hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
if (! empty($arrayfields['t.date_creation']['checked'])) print_liste_field_titre($arrayfields['t.date_creation']['label'], $_SERVER['PHP_SELF'], "t.date_creation", "", $param, '', $sortfield, $sortorder, 'center ');
if (! empty($arrayfields['t.tms']['checked'])) print_liste_field_titre($arrayfields['t.tms']['label'], $_SERVER['PHP_SELF'], "t.tms", "", $param, '', $sortfield, $sortorder, 'center ');
if (! empty($arrayfields['t.date_export']['checked'])) print_liste_field_titre($arrayfields['t.date_export']['label'], $_SERVER['PHP_SELF'], "t.date_export", "", $param, '', $sortfield, $sortorder, 'center ');
@ -796,6 +821,11 @@ if ($num > 0)
if (! $i) $totalarray['nbfield']++;
}
// Fields from hook
$parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj);
$reshook=$hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
// Creation operation date
if (! empty($arrayfields['t.date_creation']['checked']))
{
@ -853,10 +883,15 @@ if ($num > 0)
elseif ($totalarray['totalcreditfield'] == $i) print '<td class="right">'.price($totalarray['totalcredit']).'</td>';
else print '<td></td>';
}
$parameters=array('arrayfields'=>$arrayfields, 'sql'=>$sql);
$reshook=$hookmanager->executeHooks('printFieldListFooter', $parameters); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
print '</tr>';
}
}
print "</table>";
print '</div>';

View File

@ -169,7 +169,7 @@ if ($action == 'delete')
if ($action == 'switch')
{
// On permute les valeur du champ box_order des 2 lignes de la table boxes
// We switch values of field box_order for the 2 lines of table boxes
$db->begin();
$objfrom=new ModeleBoxes($db);

View File

@ -183,9 +183,9 @@ class BOM extends CommonObject
// Translate some data of arrayofkeyval
foreach($this->fields as $key => $val)
{
if (is_array($this->fields[$key]['arrayofkeyval']))
if (is_array($val['arrayofkeyval']))
{
foreach($this->fields[$key]['arrayofkeyval'] as $key2 => $val2)
foreach($val['arrayofkeyval'] as $key2 => $val2)
{
$this->fields[$key]['arrayofkeyval'][$key2]=$langs->trans($val2);
}
@ -1084,9 +1084,9 @@ class BOMLine extends CommonObject
// Translate some data of arrayofkeyval
foreach($this->fields as $key => $val)
{
if (is_array($this->fields[$key]['arrayofkeyval']))
if (is_array($val['arrayofkeyval']))
{
foreach($this->fields[$key]['arrayofkeyval'] as $key2 => $val2)
foreach($val['arrayofkeyval'] as $key2 => $val2)
{
$this->fields[$key]['arrayofkeyval'][$key2]=$langs->trans($val2);
}

View File

@ -44,7 +44,7 @@ $conf_fkaccount_cb = (! empty($_SESSION["CASHDESK_ID_BANKACCOUNT_CB"]))?$_SESSIO
// View parameters
$conf_taille_listes = (empty($conf->global->PRODUIT_LIMIT_SIZE)?1000:$conf->global->PRODUIT_LIMIT_SIZE); // Nombre max de lignes a afficher dans les listes
$conf_taille_listes = (empty($conf->global->PRODUIT_LIMIT_SIZE)?1000:$conf->global->PRODUIT_LIMIT_SIZE); // Number max of lines to show in lists
$conf_nbr_car_listes = 60; // Nombre max de caracteres par ligne dans les listes
// Add hidden option to force decrease of stock whatever is user setup

View File

@ -415,7 +415,7 @@ class Propal extends CommonObject
* @param float $remise_percent Pourcentage de remise de la ligne
* @param string $price_base_type HT or TTC
* @param float $pu_ttc Prix unitaire TTC
* @param int $info_bits Bits de type de lignes
* @param int $info_bits Bits for type of lines
* @param int $type Type of line (0=product, 1=service). Not used if fk_product is defined, the type of product is used.
* @param int $rang Position of line
* @param int $special_code Special code (also used by externals modules!)
@ -1615,11 +1615,14 @@ class Propal extends CommonObject
/**
* Load array lines
*
* @param int $only_product Return only physical products
* @param int $only_product Return only physical products
* @param int $loadalsotranslation Return translation for products
*
* @return int <0 if KO, >0 if OK
*/
public function fetch_lines($only_product = 0)
public function fetch_lines($only_product = 0, $loadalsotranslation = 0)
{
global $langs, $conf;
// phpcs:enable
$this->lines=array();
@ -1713,6 +1716,13 @@ class Propal extends CommonObject
$line->fetch_optionals();
// multilangs
if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($objp->fk_product) && ! empty($loadalsotranslation)) {
$line = new Product($this->db);
$line->fetch($objp->fk_product);
$line->getMultiLangs();
}
$this->lines[$i] = $line;
//dol_syslog("1 ".$line->fk_product);
//print "xx $i ".$this->lines[$i]->fk_product;

View File

@ -734,7 +734,7 @@ if ($socid > 0)
print load_fiche_titre($langs->trans("CustomerDiscounts"), '', '');
}
// Remises liees a lignes de factures
// Discount linked to invoice lines
$sql = "SELECT rc.rowid, rc.amount_ht, rc.amount_tva, rc.amount_ttc, rc.tva_tx, rc.multicurrency_amount_ht, rc.multicurrency_amount_tva, rc.multicurrency_amount_ttc,";
$sql.= " rc.datec as dc, rc.description, rc.fk_facture_line, rc.fk_facture,";
$sql.= " rc.fk_facture_source,";
@ -904,7 +904,7 @@ if ($socid > 0)
print load_fiche_titre($langs->trans("SupplierDiscounts"), '', '');
}
// Remises liees a lignes de factures
// Discount linked to invoice lines
$sql = "SELECT rc.rowid, rc.amount_ht, rc.amount_tva, rc.amount_ttc, rc.tva_tx, rc.multicurrency_amount_ht, rc.multicurrency_amount_tva, rc.multicurrency_amount_ttc,";
$sql.= " rc.datec as dc, rc.description, rc.fk_invoice_supplier_line, rc.fk_invoice_supplier,";
$sql.= " rc.fk_invoice_supplier_source,";

View File

@ -1312,7 +1312,7 @@ class Commande extends CommonOrder
* @param float $txlocaltax2 Local tax 2 rate (deprecated, use instead txtva with code inside)
* @param int $fk_product Id of product
* @param float $remise_percent Percentage discount of the line
* @param int $info_bits Bits de type de lignes
* @param int $info_bits Bits of type of lines
* @param int $fk_remise_except Id remise
* @param string $price_base_type HT or TTC
* @param float $pu_ttc Prix unitaire TTC
@ -1888,10 +1888,12 @@ class Commande extends CommonOrder
* Load array lines
*
* @param int $only_product Return only physical products
* @param int $loadalsotranslation Return translation for products
* @return int <0 if KO, >0 if OK
*/
public function fetch_lines($only_product = 0)
public function fetch_lines($only_product = 0, $loadalsotranslation = 0)
{
global $langs, $conf;
// phpcs:enable
$this->lines=array();
@ -1984,6 +1986,13 @@ class Commande extends CommonOrder
$line->fetch_optionals();
// multilangs
if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($objp->fk_product) && ! empty($loadalsotranslation)) {
$line = new Product($this->db);
$line->fetch($objp->fk_product);
$line->getMultiLangs();
}
$this->lines[$i] = $line;
$i++;

View File

@ -181,7 +181,8 @@ if (empty($reshook))
// Change status of invoice
elseif ($action == 'reopen' && $usercancreate) {
$result = $object->fetch($id);
if ($object->statut == 2 || ($object->statut == 3 && $object->close_code != 'replaced') || ($object->statut == 1 && $object->paye == 1)) { // ($object->statut == 1 && $object->paye == 1) should not happened but can be found when data are corrupted
if ($object->statut == Facture::STATUS_CLOSED || ($object->statut == Facture::STATUS_ABANDONED && ($object->close_code != 'replaced' || $object->getIdReplacingInvoice() == 0)) || ($object->statut == Facture::STATUS_VALIDATED && $object->paye == 1)) { // ($object->statut == 1 && $object->paye == 1) should not happened but can be found when data are corrupted
$result = $object->set_unpaid($user);
if ($result > 0) {
header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $id);
@ -3014,21 +3015,24 @@ if ($action == 'create')
}
else
{
print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
$tmp='<input type="radio" name="type" id="radio_situation" value="0" disabled> ';
$text = '<label>'.$tmp.$langs->trans("InvoiceFirstSituationAsk") . '</label> ';
$text.= '('.$langs->trans("YouMustCreateInvoiceFromThird").') ';
$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3);
print $desc;
print '</div></div>';
if (! empty($conf->global->INVOICE_USE_SITUATION))
{
print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
$tmp='<input type="radio" name="type" id="radio_situation" value="0" disabled> ';
$text = '<label>'.$tmp.$langs->trans("InvoiceFirstSituationAsk") . '</label> ';
$text.= '('.$langs->trans("YouMustCreateInvoiceFromThird").') ';
$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3);
print $desc;
print '</div></div>';
print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
$tmp='<input type="radio" name="type" id="radio_situation" value="0" disabled> ';
$text = '<label>'.$tmp.$langs->trans("InvoiceSituationAsk") . '</label> ';
$text.= '('.$langs->trans("YouMustCreateInvoiceFromThird").') ';
$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3);
print $desc;
print '</div></div>';
print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
$tmp='<input type="radio" name="type" id="radio_situation" value="0" disabled> ';
$text = '<label>'.$tmp.$langs->trans("InvoiceSituationAsk") . '</label> ';
$text.= '('.$langs->trans("YouMustCreateInvoiceFromThird").') ';
$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3);
print $desc;
print '</div></div>';
}
print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
$tmp='<input type="radio" name="type" id="radio_replacement" value="0" disabled> ';
@ -4875,7 +4879,7 @@ elseif ($id > 0 || ! empty($ref))
&& ($object->statut == 2 || $object->statut == 3 || ($object->statut == 1 && $object->paye == 1)) // Condition ($object->statut == 1 && $object->paye == 1) should not happened but can be found due to corrupted data
&& ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || $usercanreopen)) // A paid invoice (partially or completely)
{
if (! $objectidnext && $object->close_code != 'replaced') // Not replaced by another invoice
if ($object->close_code != 'replaced' || (! $objectidnext)) // Not replaced by another invoice or replaced but the replacement invoice has been deleted
{
print '<div class="inline-block divButAction"><a class="butAction'.($conf->use_javascript_ajax?' reposition':'').'" href="' . $_SERVER['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=reopen">' . $langs->trans('ReOpen') . '</a></div>';
} else {

View File

@ -510,7 +510,7 @@ class FactureRec extends CommonInvoice
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
* Recupere les lignes de factures predefinies dans this->lines
* Get lines of template invoices into this->lines
*
* @return int 1 if OK, < 0 if KO
*/
@ -876,7 +876,7 @@ class FactureRec extends CommonInvoice
* @param int $fk_product Product/Service ID predefined
* @param double $remise_percent Percentage discount of the line
* @param string $price_base_type HT or TTC
* @param int $info_bits Bits de type de lignes
* @param int $info_bits Bits of type of lines
* @param int $fk_remise_except Id remise
* @param double $pu_ttc Prix unitaire TTC (> 0 even for credit note)
* @param int $type Type of line (0=product, 1=service)
@ -1807,7 +1807,7 @@ class FactureLigneRec extends CommonInvoiceLine
/**
* Recupere les lignes de factures predefinies dans this->lines
* Get line of template invoice
*
* @param int $rowid Id of invoice
* @return int 1 if OK, < 0 if KO

View File

@ -939,7 +939,7 @@ class Facture extends CommonInvoice
$facture->origin = $this->origin;
$facture->origin_id = $this->origin_id;
$facture->lines = $this->lines; // Tableau des lignes de factures
$facture->lines = $this->lines; // Array of lines of invoice
$facture->products = $this->lines; // Tant que products encore utilise
$facture->situation_counter = $this->situation_counter;
$facture->situation_cycle_ref=$this->situation_cycle_ref;
@ -1494,10 +1494,14 @@ class Facture extends CommonInvoice
/**
* Load all detailed lines into this->lines
*
* @param int $only_product Return only physical products
* @param int $loadalsotranslation Return translation for products
*
* @return int 1 if OK, < 0 if KO
*/
public function fetch_lines()
public function fetch_lines($only_product = 0, $loadalsotranslation = 0)
{
global $langs, $conf;
// phpcs:enable
$this->lines=array();
@ -1587,6 +1591,13 @@ class Facture extends CommonInvoice
$line->fetch_optionals();
// multilangs
if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($objp->fk_product) && ! empty($loadalsotranslation)) {
$line = new Product($this->db);
$line->fetch($objp->fk_product);
$line->getMultiLangs();
}
$this->lines[$i] = $line;
$i++;
@ -2682,7 +2693,7 @@ class Facture extends CommonInvoice
* @param int $date_start Date start of service
* @param int $date_end Date end of service
* @param int $ventil Code of dispatching into accountancy
* @param int $info_bits Bits de type de lignes
* @param int $info_bits Bits of type of lines
* @param int $fk_remise_except Id discount used
* @param string $price_base_type 'HT' or 'TTC'
* @param double $pu_ttc Unit price with tax (> 0 even for credit note)

View File

@ -156,7 +156,7 @@ $sql.= " AND pl.fk_prelevement_bons = p.rowid";
$sql.= " AND f.fk_soc = s.rowid";
$sql.= " AND pf.fk_facture = f.rowid";
$sql.= " AND f.entity IN (".getEntity('invoice').")";
if ($prev_id) $sql.= " AND p.rowid=".$prev_id;
if ($object->id > 0) $sql.= " AND p.rowid=".$object->id;
if ($socid) $sql.= " AND s.rowid = ".$socid;
$sql.= $db->order($sortfield, $sortorder);

View File

@ -1096,8 +1096,6 @@ $form = new Form($db);
$formfile = new FormFile($db);
if (! empty($conf->projet->enabled)) $formproject = new FormProjets($db);
$objectlignestatic=new ContratLigne($db);
// Load object modContract
$module=(! empty($conf->global->CONTRACT_ADDON)?$conf->global->CONTRACT_ADDON:'mod_contract_serpis');
if (substr($module, 0, 13) == 'mod_contract_' && substr($module, -3) == 'php')

View File

@ -716,10 +716,14 @@ class Contrat extends CommonObject
* Load lines array into this->lines.
* This set also nbofserviceswait, nbofservicesopened, nbofservicesexpired and nbofservicesclosed
*
* @param int $only_product Return only physical products
* @param int $loadalsotranslation Return translation for products
*
* @return ContratLigne[] Return array of contract lines
*/
public function fetch_lines()
public function fetch_lines($only_product = 0, $loadalsotranslation = 0)
{
global $langs, $conf;
// phpcs:enable
$this->nbofserviceswait=0;
$this->nbofservicesopened=0;
@ -829,6 +833,13 @@ class Contrat extends CommonObject
// fetch optionals attributes and labels
$line->fetch_optionals();
// multilangs
if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($objp->fk_product) && ! empty($loadalsotranslation)) {
$line = new Product($this->db);
$line->fetch($objp->fk_product);
$line->getMultiLangs();
}
$this->lines[$pos] = $line;
$this->lines_id_index_mapper[$line->id] = $pos;
@ -1350,7 +1361,7 @@ class Contrat extends CommonObject
* @param int $date_end Date de fin prevue
* @param string $price_base_type HT or TTC
* @param float $pu_ttc Prix unitaire TTC
* @param int $info_bits Bits de type de lignes
* @param int $info_bits Bits of type of lines
* @param int $fk_fournprice Fourn price id
* @param int $pa_ht Buying price HT
* @param array $array_options extrafields array
@ -1568,7 +1579,7 @@ class Contrat extends CommonObject
* @param int|string $date_debut_reel Date de debut reelle
* @param int|string $date_fin_reel Date de fin reelle
* @param string $price_base_type HT or TTC
* @param int $info_bits Bits de type de lignes
* @param int $info_bits Bits of type of lines
* @param int $fk_fournprice Fourn price id
* @param int $pa_ht Buying price HT
* @param array $array_options extrafields array
@ -2531,7 +2542,7 @@ class Contrat extends CommonObject
/**
* Classe permettant la gestion des lignes de contrats
* Class to manage lines of contracts
*/
class ContratLigne extends CommonObjectLine
{

View File

@ -27,7 +27,7 @@ $maxsizestring=255;
$maxsizeint=10;
$mesg=array();
$extrasize=GETPOST('size', 'int');
$extrasize=GETPOST('size', 'intcomma');
$type=GETPOST('type', 'alpha');
$param=GETPOST('param', 'alpha');

View File

@ -84,7 +84,7 @@ class box_services_contracts extends ModeleBoxes
if ($user->rights->service->lire && $user->rights->contrat->lire)
{
$contractstatic=new Contrat($db);
$contratlignestatic=new ContratLigne($db);
$contractlinestatic=new ContratLigne($db);
$thirdpartytmp = new Societe($db);
$productstatic = new Product($db);
@ -116,13 +116,13 @@ class box_services_contracts extends ModeleBoxes
$objp = $db->fetch_object($result);
$datem=$db->jdate($objp->datem);
$contratlignestatic->id=$objp->cdid;
$contratlignestatic->fk_contrat=$objp->rowid;
$contratlignestatic->label=$objp->label;
$contratlignestatic->description=$objp->description;
$contratlignestatic->type=$objp->type;
$contratlignestatic->product_id=$objp->product_id;
$contratlignestatic->product_ref=$objp->product_ref;
$contractlinestatic->id=$objp->cdid;
$contractlinestatic->fk_contrat=$objp->rowid;
$contractlinestatic->label=$objp->label;
$contractlinestatic->description=$objp->description;
$contractlinestatic->type=$objp->type;
$contractlinestatic->product_id=$objp->product_id;
$contractlinestatic->product_ref=$objp->product_ref;
$contractstatic->statut=$objp->contract_status;
$contractstatic->id=$objp->rowid;
@ -153,7 +153,7 @@ class box_services_contracts extends ModeleBoxes
if ($resultd)
{
$objtp = $db->fetch_object($resultd);
if ($objtp->label != '') $contratlignestatic->label = $objtp->label;
if ($objtp->label != '') $contractlinestatic->label = $objtp->label;
}
}
@ -215,7 +215,7 @@ class box_services_contracts extends ModeleBoxes
$this->info_box_contents[$i][] = array(
'td' => 'class="right" width="18"',
'text' => $contratlignestatic->LibStatut($objp->statut, 3)
'text' => $contractlinestatic->LibStatut($objp->statut, 3)
);
$i++;

View File

@ -286,8 +286,7 @@ class CMailFile
// We now define $this->headers and $this->message
$this->headers = $smtp_headers . $mime_headers;
// On nettoie le header pour qu'il ne se termine pas par un retour chariot.
// Ceci evite aussi les lignes vides en fin qui peuvent etre interpretees
// comme des injections mail par les serveurs de messagerie.
// This avoid also empty lines at end that can be interpreted as mail injection by email servers.
$this->headers = preg_replace("/([\r\n]+)$/i", "", $this->headers);
//$this->message = $this->eol.'This is a message with multiple parts in MIME format.'.$this->eol;

View File

@ -387,26 +387,37 @@ class Conf
$this->fournisseur->payment->dir_output =$rootfordata."/fournisseur/payment"; // For backward compatibility
$this->fournisseur->payment->dir_temp =$rootfordata."/fournisseur/payment/temp"; // For backward compatibility
// To prepare split of module fournisseur into fournisseur + supplier_order + supplier_invoice
if (! empty($this->fournisseur->enabled) && empty($this->global->MAIN_USE_NEW_SUPPLIERMOD)) // By default, if module supplier is on, we set new properties
// To prepare split of module vendor(fournisseur) into vendor + supplier_order + supplier_invoice + supplierproposal
if (! empty($this->fournisseur->enabled)) // By default, if module supplier is on, we set new properties
{
$this->supplier_order=new stdClass();
$this->supplier_order->enabled=1;
$this->supplier_order->multidir_output=array($this->entity => $rootfordata."/fournisseur/commande");
$this->supplier_order->multidir_temp =array($this->entity => $rootfordata."/fournisseur/commande/temp");
$this->supplier_order->dir_output=$rootfordata."/fournisseur/commande"; // For backward compatibility
$this->supplier_order->dir_temp=$rootfordata."/fournisseur/commande/temp"; // For backward compatibility
$this->supplier_invoice=new stdClass();
$this->supplier_invoice->enabled=1;
$this->supplier_invoice->multidir_output=array($this->entity => $rootfordata."/fournisseur/facture");
$this->supplier_invoice->multidir_temp =array($this->entity => $rootfordata."/fournisseur/facture/temp");
$this->supplier_invoice->dir_output=$rootfordata."/fournisseur/facture"; // For backward compatibility
$this->supplier_invoice->dir_temp=$rootfordata."/fournisseur/facture/temp"; // For backward compatibility
$this->supplierproposal=new stdClass();
$this->supplierproposal->multidir_output=array($this->entity => $rootfordata."/supplier_proposal");
$this->supplierproposal->multidir_temp =array($this->entity => $rootfordata."/supplier_proposal/temp");
$this->supplierproposal->dir_output=$rootfordata."/supplier_proposal"; // For backward compatibility
$this->supplierproposal->dir_temp=$rootfordata."/supplier_proposal/temp"; // For backward compatibility
if (empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) // This can be set to 1 once modules purchase order and supplier invoice exists
{
$this->supplier_order=new stdClass();
$this->supplier_order->enabled=1;
$this->supplier_order->multidir_output=array($this->entity => $rootfordata."/fournisseur/commande");
$this->supplier_order->multidir_temp =array($this->entity => $rootfordata."/fournisseur/commande/temp");
$this->supplier_order->dir_output=$rootfordata."/fournisseur/commande"; // For backward compatibility
$this->supplier_order->dir_temp=$rootfordata."/fournisseur/commande/temp"; // For backward compatibility
}
if (empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) // This can be set to 1 once modules purchase order and supplier invoice exists
{
$this->supplier_invoice=new stdClass();
$this->supplier_invoice->enabled=1;
$this->supplier_invoice->multidir_output=array($this->entity => $rootfordata."/fournisseur/facture");
$this->supplier_invoice->multidir_temp =array($this->entity => $rootfordata."/fournisseur/facture/temp");
$this->supplier_invoice->dir_output=$rootfordata."/fournisseur/facture"; // For backward compatibility
$this->supplier_invoice->dir_temp=$rootfordata."/fournisseur/facture/temp"; // For backward compatibility
}
if (empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) // This can be set to 1 once modules purchase order and supplier invoice exists
{
$this->supplier_proposal=new stdClass();
$this->supplier_proposal->multidir_output=array($this->entity => $rootfordata."/supplier_proposal");
$this->supplier_proposal->multidir_temp =array($this->entity => $rootfordata."/supplier_proposal/temp");
$this->supplier_proposal->dir_output=$rootfordata."/supplier_proposal"; // For backward compatibility
$this->supplier_proposal->dir_temp=$rootfordata."/supplier_proposal/temp"; // For backward compatibility
}
}
}

View File

@ -1645,7 +1645,10 @@ class ExtraFields
elseif ($type == 'double')
{
if (!empty($value)) {
$value=price($value);
//$value=price($value);
$sizeparts = explode(",", $size);
$number_decimals = $sizeparts[1];
$value=price($value, 0, $langs, 0, 0, $number_decimals, '');
}
}
elseif ($type == 'boolean')

View File

@ -101,11 +101,11 @@ interface Database
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
* Renvoie le nombre de lignes dans le resultat d'une requete INSERT, DELETE ou UPDATE
* Return the number of lines in the result of a request INSERT, DELETE or UPDATE
*
* @param resource $resultset Curseur de la requete voulue
* @return int Nombre de lignes
* @see num_rows
* @return int Number of lines
* @see num_rows()
*/
public function affected_rows($resultset);
// phpcs:enable

View File

@ -523,10 +523,10 @@ class DoliDBMssql extends DoliDB
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
* Renvoie le nombre de lignes dans le resultat d'une requete INSERT, DELETE ou UPDATE
* Return the number of lines in the result of a request INSERT, DELETE or UPDATE
*
* @param resource $resultset Curseur de la requete voulue
* @return int Nombre de lignes
* @return int Number of lines
* @see num_rows()
*/
public function affected_rows($resultset)

View File

@ -363,10 +363,10 @@ class DoliDBMysqli extends DoliDB
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
* Renvoie le nombre de lignes dans le resultat d'une requete INSERT, DELETE ou UPDATE
* Return the number of lines in the result of a request INSERT, DELETE or UPDATE
*
* @param mysqli_result $resultset Curseur de la requete voulue
* @return int Nombre de lignes
* @return int Number of lines
* @see num_rows()
*/
public function affected_rows($resultset)

View File

@ -617,11 +617,11 @@ class DoliDBPgsql extends DoliDB
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
* Renvoie le nombre de lignes dans le resultat d'une requete INSERT, DELETE ou UPDATE
* Return the number of lines in the result of a request INSERT, DELETE or UPDATE
*
* @param resource $resultset Result set of request
* @return int Nb of lines
* @see num_rows
* @see num_rows()
*/
public function affected_rows($resultset)
{

View File

@ -1435,16 +1435,16 @@ function dol_meta_create($object)
if (is_dir($dir))
{
$nblignes = count($object->lines);
$nblines = count($object->lines);
$client = $object->thirdparty->name . " " . $object->thirdparty->address . " " . $object->thirdparty->zip . " " . $object->thirdparty->town;
$meta = "REFERENCE=\"" . $object->ref . "\"
DATE=\"" . dol_print_date($object->date, '') . "\"
NB_ITEMS=\"" . $nblignes . "\"
NB_ITEMS=\"" . $nblines . "\"
CLIENT=\"" . $client . "\"
AMOUNT_EXCL_TAX=\"" . $object->total_ht . "\"
AMOUNT=\"" . $object->total_ttc . "\"\n";
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
//Pour les articles
$meta .= "ITEM_" . $i . "_QUANTITY=\"" . $object->lines[$i]->qty . "\"

View File

@ -2045,10 +2045,10 @@ function pdf_getTotalQty($object, $type, $outputlangs)
global $hookmanager;
$total=0;
$nblignes=count($object->lines);
$nblines=count($object->lines);
// Loop on each lines
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if ($object->lines[$i]->special_code != 3)
{

View File

@ -111,7 +111,7 @@ class pdf_ban extends ModeleBankAccountDoc
if ($conf->bank->dir_output)
{
//$nblignes = count($object->lines); // This is set later with array of tasks
//$nblines = count($object->lines); // This is set later with array of tasks
// Definition of $dir and $file
if ($object->specimen)
@ -275,6 +275,7 @@ class pdf_ban extends ModeleBankAccountDoc
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
/**
* Show table for lines
*
@ -287,13 +288,15 @@ class pdf_ban extends ModeleBankAccountDoc
* @param int $hidebottom Hide bottom bar of array
* @return void
*/
private function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop = 0, $hidebottom = 0)
protected function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop = 0, $hidebottom = 0)
{
// phpcs:enable
global $conf,$mysoc;
$default_font_size = pdf_getPDFFontSize($outputlangs);
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
/**
* Show top header of page.
*
@ -303,9 +306,10 @@ class pdf_ban extends ModeleBankAccountDoc
* @param Translate $outputlangs Object lang for output
* @return void
*/
private function _pagehead(&$pdf, $object, $showaddress, $outputlangs)
protected function _pagehead(&$pdf, $object, $showaddress, $outputlangs)
{
global $langs,$conf,$mysoc;
// phpcs:enable
$default_font_size = pdf_getPDFFontSize($outputlangs);
@ -380,6 +384,7 @@ class pdf_ban extends ModeleBankAccountDoc
*/
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
/**
* Show footer of page. Need this->emetteur object
*
@ -389,9 +394,11 @@ class pdf_ban extends ModeleBankAccountDoc
* @param int $hidefreetext 1=Hide free text
* @return integer
*/
private function _pagefoot(&$pdf, $object, $outputlangs, $hidefreetext = 0)
protected function _pagefoot(&$pdf, $object, $outputlangs, $hidefreetext = 0)
{
// phpcs:enable
global $conf;
$showdetails=$conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS;
//return pdf_pagefoot($pdf,$outputlangs,'BANK_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,$showdetails,$hidefreetext);
}

View File

@ -114,7 +114,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc
if (! empty($conf->bank->dir_output))
{
//$nblignes = count($object->lines); // This is set later with array of tasks
//$nblines = count($object->lines); // This is set later with array of tasks
// Definition of $dir and $file
if ($object->specimen)
@ -418,6 +418,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
/**
* Show table for lines
*
@ -430,15 +431,17 @@ class pdf_sepamandate extends ModeleBankAccountDoc
* @param int $hidebottom Hide bottom bar of array
* @return void
*/
private function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop = 0, $hidebottom = 0)
protected function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop = 0, $hidebottom = 0)
{
// phpcs:enable
global $conf,$mysoc;
$default_font_size = pdf_getPDFFontSize($outputlangs);
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
* Show miscellaneous information (payment mode, payment term, ...)
*
@ -448,7 +451,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc
* @param Translate $outputlangs Langs object
* @return void
*/
private function _tableau_info(&$pdf, $object, $posy, $outputlangs)
protected function _tableau_info(&$pdf, $object, $posy, $outputlangs)
{
// phpcs:enable
global $conf, $mysoc;
@ -475,7 +478,8 @@ class pdf_sepamandate extends ModeleBankAccountDoc
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
* Show area for the customer to sign
*
@ -485,7 +489,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc
* @param Translate $outputlangs Objet langs
* @return int Position pour suite
*/
private function _signature_area(&$pdf, $object, $posy, $outputlangs)
protected function _signature_area(&$pdf, $object, $posy, $outputlangs)
{
// phpcs:enable
$default_font_size = pdf_getPDFFontSize($outputlangs);
@ -517,6 +521,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
/**
* Show top header of page.
*
@ -526,8 +531,9 @@ class pdf_sepamandate extends ModeleBankAccountDoc
* @param Translate $outputlangs Object lang for output
* @return void
*/
private function _pagehead(&$pdf, $object, $showaddress, $outputlangs)
protected function _pagehead(&$pdf, $object, $showaddress, $outputlangs)
{
// phpcs:enable
global $langs,$conf,$mysoc;
$default_font_size = pdf_getPDFFontSize($outputlangs);
@ -609,6 +615,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc
*/
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
/**
* Show footer of page. Need this->emetteur object
*
@ -618,9 +625,11 @@ class pdf_sepamandate extends ModeleBankAccountDoc
* @param int $hidefreetext 1=Hide free text
* @return integer
*/
private function _pagefoot(&$pdf, $object, $outputlangs, $hidefreetext = 0)
protected function _pagefoot(&$pdf, $object, $outputlangs, $hidefreetext = 0)
{
// phpcs:enable
global $conf;
$showdetails=$conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS;
return pdf_pagefoot($pdf, $outputlangs, 'PAYMENTORDER_FREE_TEXT', null, $this->marge_basse, $this->marge_gauche, $this->page_hauteur, $object, $showdetails, $hidefreetext);
}

View File

@ -219,7 +219,7 @@ class pdf_einstein extends ModelePDFCommandes
public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
{
// phpcs:enable
global $user, $langs, $conf, $mysoc, $db, $hookmanager, $nblignes;
global $user, $langs, $conf, $mysoc, $db, $hookmanager, $nblines;
if (! is_object($outputlangs)) $outputlangs=$langs;
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
@ -228,7 +228,7 @@ class pdf_einstein extends ModelePDFCommandes
// Load translation files required by the page
$outputlangs->loadLangs(array("main", "dict", "companies", "bills", "products", "orders", "deliveries"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
if ($conf->commande->dir_output)
{
@ -308,7 +308,7 @@ class pdf_einstein extends ModelePDFCommandes
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
// Positionne $this->atleastonediscount si on a au moins une remise
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if ($object->lines[$i]->remise_percent)
{
@ -400,7 +400,7 @@ class pdf_einstein extends ModelePDFCommandes
$nexY = $tab_top + 7;
// Loop on each lines
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -429,7 +429,7 @@ class pdf_einstein extends ModelePDFCommandes
$posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -540,7 +540,7 @@ class pdf_einstein extends ModelePDFCommandes
$this->tva[$vatrate] += $tvaligne;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));

View File

@ -7,7 +7,7 @@
* Copyright (C) 2012 Cedric Salvador <csalvador@gpcsolutions.fr>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
*
* 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,7 +27,7 @@
/**
* \file htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php
* \ingroup commande
* \brief File of the class allowing to generate the orders to the Eratosthene model
* \brief File of Class to generate PDF orders with template Eratosthène
*/
require_once DOL_DOCUMENT_ROOT.'/core/modules/commande/modules_commande.php';
@ -149,13 +149,13 @@ class pdf_eratosthene extends ModelePDFCommandes
$this->marge_haute =isset($conf->global->MAIN_PDF_MARGIN_TOP)?$conf->global->MAIN_PDF_MARGIN_TOP:10;
$this->marge_basse =isset($conf->global->MAIN_PDF_MARGIN_BOTTOM)?$conf->global->MAIN_PDF_MARGIN_BOTTOM:10;
$this->option_logo = 1; // Affiche logo
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
$this->option_modereg = 1; // Affiche mode reglement
$this->option_condreg = 1; // Affiche conditions reglement
$this->option_codeproduitservice = 1; // Affiche code produit-service
$this->option_multilang = 1; // Dispo en plusieurs langues
$this->option_escompte = 0; // Affiche si il y a eu escompte
$this->option_logo = 1; // Display logo
$this->option_tva = 1; // Manage the vat option FACTURE_TVAOPTION
$this->option_modereg = 1; // Display payment mode
$this->option_condreg = 1; // Display payment terms
$this->option_codeproduitservice = 1; // Display product-service code
$this->option_multilang = 1; // Available in several languages
$this->option_escompte = 0; // Displays if there has been a discount
$this->option_credit_note = 0; // Support credit notes
$this->option_freetext = 1; // Support add of a personalised text
$this->option_draft_watermark = 1; // Support add of a watermark on drafts
@ -194,7 +194,7 @@ class pdf_eratosthene extends ModelePDFCommandes
public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
{
// phpcs:enable
global $user, $langs, $conf, $mysoc, $db, $hookmanager, $nblignes;
global $user, $langs, $conf, $mysoc, $db, $hookmanager, $nblines;
if (! is_object($outputlangs)) $outputlangs=$langs;
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
@ -203,7 +203,7 @@ class pdf_eratosthene extends ModelePDFCommandes
// Translations
$outputlangs->loadLangs(array("main", "dict", "companies", "bills", "products", "orders", "deliveries"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
$hidetop=0;
if(!empty($conf->global->MAIN_PDF_DISABLE_COL_HEAD_TITLE)){
@ -217,7 +217,7 @@ class pdf_eratosthene extends ModelePDFCommandes
{
$objphoto = new Product($this->db);
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if (empty($object->lines[$i]->fk_product)) continue;
@ -541,7 +541,7 @@ class pdf_eratosthene extends ModelePDFCommandes
// Loop on each lines
$pageposbeforeprintlines=$pdf->getPage();
$pagenb = $pageposbeforeprintlines;
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -599,7 +599,7 @@ class pdf_eratosthene extends ModelePDFCommandes
$posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -738,7 +738,7 @@ class pdf_eratosthene extends ModelePDFCommandes
$this->tva[$vatrate] += $tvaligne;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -747,7 +747,7 @@ class pdf_eratosthene extends ModelePDFCommandes
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -25,7 +25,7 @@
/**
* \file htdocs/core/modules/commande/doc/pdf_proforma.modules.php
* \ingroup commande
* \brief Fichier de la classe permettant de generer les commandes au modele Proforma
* \brief File of Class to generate PDF orders with template Proforma
*/
require_once DOL_DOCUMENT_ROOT.'/core/modules/commande/doc/pdf_einstein.modules.php';
@ -36,7 +36,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php';
/**
* Classe permettant de generer les commandes au modele Proforma
* Class to generate PDF orders with template Proforma
*/
class pdf_proforma extends pdf_einstein
{

View File

@ -4,7 +4,7 @@
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr>
* Copyright (C) 2011 Fabrice CHERRIER
* Copyright (C) 2013-2018 Philippe Grand <philippe.grand@atoo-net.com>
* Copyright (C) 2013-2019 Philippe Grand <philippe.grand@atoo-net.com>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
*
@ -144,13 +144,13 @@ class pdf_strato extends ModelePDFContract
$this->marge_haute =isset($conf->global->MAIN_PDF_MARGIN_TOP)?$conf->global->MAIN_PDF_MARGIN_TOP:10;
$this->marge_basse =isset($conf->global->MAIN_PDF_MARGIN_BOTTOM)?$conf->global->MAIN_PDF_MARGIN_BOTTOM:10;
$this->option_logo = 1; // Affiche logo
$this->option_tva = 0; // Gere option tva FACTURE_TVAOPTION
$this->option_modereg = 0; // Affiche mode reglement
$this->option_condreg = 0; // Affiche conditions reglement
$this->option_codeproduitservice = 0; // Affiche code produit-service
$this->option_multilang = 0; // Dispo en plusieurs langues
$this->option_draft_watermark = 1; //Support add of a watermark on drafts
$this->option_logo = 1; // Display logo
$this->option_tva = 0; // Manage the vat option FACTURE_TVAOPTION
$this->option_modereg = 0; // Display payment mode
$this->option_condreg = 0; // Display payment terms
$this->option_codeproduitservice = 0; // Display product-service code
$this->option_multilang = 0; // Available in several languages
$this->option_draft_watermark = 1; // Support add of a watermark on drafts
// Get source company
$this->emetteur=$mysoc;

View File

@ -168,7 +168,7 @@ class pdf_espadon extends ModelePdfExpedition
// Load traductions files requiredby by page
$outputlangs->loadLangs(array("main", "bills", "products", "dict", "companies", "propal", "deliveries", "sendings", "productbatch"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
// Loop on each lines to detect if there is at least one image to show
$realpatharray=array();
@ -176,7 +176,7 @@ class pdf_espadon extends ModelePdfExpedition
{
$objphoto = new Product($this->db);
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if (empty($object->lines[$i]->fk_product)) continue;
@ -254,7 +254,7 @@ class pdf_espadon extends ModelePdfExpedition
$reshook=$hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
// Set nblignes with the new facture lines content after hook
$nblignes = count($object->lines);
$nblines = count($object->lines);
$pdf=pdf_getInstance($this->format);
$default_font_size = pdf_getPDFFontSize($outputlangs);
@ -404,7 +404,7 @@ class pdf_espadon extends ModelePdfExpedition
$nexY = $tab_top + $this->tabTitleHeight + 2;
// Loop on each lines
for ($i = 0; $i < $nblignes; $i++)
for ($i = 0; $i < $nblines; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -464,7 +464,7 @@ class pdf_espadon extends ModelePdfExpedition
//var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit;
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforsignature+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -548,7 +548,7 @@ class pdf_espadon extends ModelePdfExpedition
if ($weighttxt && $voltxt) $nexY+=2;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1', 'color'=>array(80,80,80)));

View File

@ -3,7 +3,7 @@
* Copyright (C) 2005-2015 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2011 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -23,7 +23,7 @@
/**
* \file htdocs/core/modules/expedition/doc/pdf_merou.modules.php
* \ingroup expedition
* \brief Fichier de la classe permettant de generer les bordereaux envoi au modele Merou
* \brief Class file used to generate the dispatch slips for the Merou model
*/
require_once DOL_DOCUMENT_ROOT.'/core/modules/expedition/modules_expedition.php';
@ -134,7 +134,7 @@ class pdf_merou extends ModelePdfExpedition
$this->marge_haute =isset($conf->global->MAIN_PDF_MARGIN_TOP)?$conf->global->MAIN_PDF_MARGIN_TOP:10;
$this->marge_basse =isset($conf->global->MAIN_PDF_MARGIN_BOTTOM)?$conf->global->MAIN_PDF_MARGIN_BOTTOM:10;
$this->option_logo = 1;
$this->option_logo = 1; // Display logo
// Get source company
$this->emetteur=$mysoc;
@ -222,7 +222,7 @@ class pdf_merou extends ModelePdfExpedition
global $action;
$reshook=$hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
$nblignes = count($object->lines);
$nblines = count($object->lines);
$pdf=pdf_getInstance($this->format, 'mm', 'l');
$default_font_size = pdf_getPDFFontSize($outputlangs);
@ -347,7 +347,7 @@ class pdf_merou extends ModelePdfExpedition
$pdf->MultiCell(30, 3, $object->lines[$i]->qty_shipped, 0, 'C', 0);
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -356,7 +356,7 @@ class pdf_merou extends ModelePdfExpedition
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -23,7 +23,7 @@
/**
* \file htdocs/core/modules/expedition/doc/pdf_rouget.modules.php
* \ingroup expedition
* \brief Fichier de la classe permettant de generer les bordereaux envoi au modele Rouget
* \brief Class file used to generate the dispatch slips for the Rouget model
*/
require_once DOL_DOCUMENT_ROOT.'/core/modules/expedition/modules_expedition.php';
@ -133,7 +133,7 @@ class pdf_rouget extends ModelePdfExpedition
$this->marge_haute =isset($conf->global->MAIN_PDF_MARGIN_TOP)?$conf->global->MAIN_PDF_MARGIN_TOP:10;
$this->marge_basse =isset($conf->global->MAIN_PDF_MARGIN_BOTTOM)?$conf->global->MAIN_PDF_MARGIN_BOTTOM:10;
$this->option_logo = 1;
$this->option_logo = 1; // Display logo
// Get source company
$this->emetteur=$mysoc;
@ -197,7 +197,7 @@ class pdf_rouget extends ModelePdfExpedition
// Load traductions files requiredby by page
$outputlangs->loadLangs(array("main", "bills", "products", "dict", "companies", "propal", "deliveries", "sendings", "productbatch"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
// Loop on each lines to detect if there is at least one image to show
$realpatharray=array();
@ -205,7 +205,7 @@ class pdf_rouget extends ModelePdfExpedition
{
$objphoto = new Product($this->db);
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if (empty($object->lines[$i]->fk_product)) continue;
@ -283,7 +283,7 @@ class pdf_rouget extends ModelePdfExpedition
$reshook=$hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
// Set nblignes with the new facture lines content after hook
$nblignes = count($object->lines);
$nblines = count($object->lines);
$pdf=pdf_getInstance($this->format);
$default_font_size = pdf_getPDFFontSize($outputlangs);
@ -423,7 +423,7 @@ class pdf_rouget extends ModelePdfExpedition
$nexY = $tab_top + 7;
// Loop on each lines
for ($i = 0; $i < $nblignes; $i++)
for ($i = 0; $i < $nblines; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -481,7 +481,7 @@ class pdf_rouget extends ModelePdfExpedition
//var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit;
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -563,7 +563,7 @@ class pdf_rouget extends ModelePdfExpedition
if ($weighttxt && $voltxt) $nexY+=2;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));

View File

@ -220,7 +220,7 @@ class pdf_standard extends ModeleExpenseReport
// Load traductions files requiredby by page
$outputlangs->loadLangs(array("main", "trips", "projects", "dict", "bills", "banks"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
if ($conf->expensereport->dir_output) {
// Definition of $dir and $file
@ -351,7 +351,7 @@ class pdf_standard extends ModeleExpenseReport
$nexY = $tab_top + 7;
// Loop on each lines
for ($i = 0 ; $i < $nblignes ; $i++) {
for ($i = 0 ; $i < $nblines ; $i++) {
$pdf->SetFont('', '', $default_font_size - 2); // Into loop to work with multipage
$pdf->SetTextColor(0, 0, 0);
@ -374,7 +374,7 @@ class pdf_standard extends ModeleExpenseReport
//var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit;
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) {
// There is no space left for total+free text
if ($i == ($nblignes-1)) {
if ($i == ($nblines-1)) {
// No more lines, and no space left to show total, so we create a new page
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -401,7 +401,7 @@ class pdf_standard extends ModeleExpenseReport
//$nblineFollowComment = 1;
// Cherche nombre de lignes a venir pour savoir si place suffisante
// if ($i < ($nblignes - 1)) // If it's not last line
// if ($i < ($nblines - 1)) // If it's not last line
// {
// //Fetch current description to know on which line the next one should be placed
// $follow_comment = $object->lines[$i]->comments;

View File

@ -160,13 +160,13 @@ class pdf_crabe extends ModelePDFFactures
$this->marge_haute =isset($conf->global->MAIN_PDF_MARGIN_TOP)?$conf->global->MAIN_PDF_MARGIN_TOP:10;
$this->marge_basse =isset($conf->global->MAIN_PDF_MARGIN_BOTTOM)?$conf->global->MAIN_PDF_MARGIN_BOTTOM:10;
$this->option_logo = 1; // Affiche logo
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
$this->option_modereg = 1; // Affiche mode reglement
$this->option_condreg = 1; // Affiche conditions reglement
$this->option_codeproduitservice = 1; // Affiche code produit-service
$this->option_multilang = 1; // Dispo en plusieurs langues
$this->option_escompte = 1; // Affiche si il y a eu escompte
$this->option_logo = 1; // Display logo
$this->option_tva = 1; // Manage the vat option FACTURE_TVAOPTION
$this->option_modereg = 1; // Display payment mode
$this->option_condreg = 1; // Display payment terms
$this->option_codeproduitservice = 1; // Display product-service code
$this->option_multilang = 1; // Available in several languages
$this->option_escompte = 1; // Displays if there has been a discount
$this->option_credit_note = 1; // Support credit notes
$this->option_freetext = 1; // Support add of a personalised text
$this->option_draft_watermark = 1; // Support add of a watermark on drafts
@ -235,7 +235,9 @@ class pdf_crabe extends ModelePDFFactures
public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
{
// phpcs:enable
global $user,$langs,$conf,$mysoc,$db,$hookmanager,$nblignes;
global $user,$langs,$conf,$mysoc,$db,$hookmanager,$nblines;
dol_syslog("write_file outputlangs->defaultlang=".(is_object($outputlangs) ? $outputlangs->defaultlang : 'null'));
if (! is_object($outputlangs)) $outputlangs=$langs;
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
@ -244,13 +246,13 @@ class pdf_crabe extends ModelePDFFactures
// Load traductions files requiredby by page
$outputlangs->loadLangs(array("main", "bills", "products", "dict", "companies"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
// Loop on each lines to detect if there is at least one image to show
$realpatharray=array();
if (! empty($conf->global->MAIN_GENERATE_INVOICES_WITH_PICTURE))
{
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if (empty($object->lines[$i]->fk_product)) continue;
@ -317,7 +319,7 @@ class pdf_crabe extends ModelePDFFactures
$reshook=$hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
// Set nblignes with the new facture lines content after hook
$nblignes = count($object->lines);
$nblines = count($object->lines);
$nbpayments = count($object->getListOfPayments());
// Create pdf instance
@ -358,7 +360,7 @@ class pdf_crabe extends ModelePDFFactures
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
// Positionne $this->atleastonediscount si on a au moins une remise
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if ($object->lines[$i]->remise_percent)
{
@ -465,7 +467,7 @@ class pdf_crabe extends ModelePDFFactures
$nexY = $tab_top + 7;
// Loop on each lines
for ($i = 0; $i < $nblignes; $i++)
for ($i = 0; $i < $nblines; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -521,7 +523,7 @@ class pdf_crabe extends ModelePDFFactures
//var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit;
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -650,7 +652,7 @@ class pdf_crabe extends ModelePDFFactures
if ($posYAfterImage > $posYAfterDescription) $nexY=$posYAfterImage;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -659,7 +661,7 @@ class pdf_crabe extends ModelePDFFactures
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -160,13 +160,13 @@ class pdf_sponge extends ModelePDFFactures
$this->marge_haute =isset($conf->global->MAIN_PDF_MARGIN_TOP)?$conf->global->MAIN_PDF_MARGIN_TOP:10;
$this->marge_basse =isset($conf->global->MAIN_PDF_MARGIN_BOTTOM)?$conf->global->MAIN_PDF_MARGIN_BOTTOM:10;
$this->option_logo = 1; // Affiche logo
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
$this->option_modereg = 1; // Affiche mode reglement
$this->option_condreg = 1; // Affiche conditions reglement
$this->option_codeproduitservice = 1; // Affiche code produit-service
$this->option_multilang = 1; // Dispo en plusieurs langues
$this->option_escompte = 1; // Affiche si il y a eu escompte
$this->option_logo = 1; // Display logo
$this->option_tva = 1; // Manage the vat option FACTURE_TVAOPTION
$this->option_modereg = 1; // Display payment mode
$this->option_condreg = 1; // Display payment terms
$this->option_codeproduitservice = 1; // Display product-service code
$this->option_multilang = 1; // Available in several languages
$this->option_escompte = 1; // Displays if there has been a discount
$this->option_credit_note = 1; // Support credit notes
$this->option_freetext = 1; // Support add of a personalised text
$this->option_draft_watermark = 1; // Support add of a watermark on drafts
@ -209,7 +209,7 @@ class pdf_sponge extends ModelePDFFactures
public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
{
// phpcs:enable
global $user,$langs,$conf,$mysoc,$db,$hookmanager,$nblignes;
global $user,$langs,$conf,$mysoc,$db,$hookmanager,$nblines;
if (! is_object($outputlangs)) $outputlangs=$langs;
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
@ -218,7 +218,7 @@ class pdf_sponge extends ModelePDFFactures
// Translations
$outputlangs->loadLangs(array("main", "bills", "products", "dict", "companies"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
$hidetop=0;
if(!empty($conf->global->MAIN_PDF_DISABLE_COL_HEAD_TITLE)){
@ -232,7 +232,7 @@ class pdf_sponge extends ModelePDFFactures
{
$objphoto = new Product($this->db);
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if (empty($object->lines[$i]->fk_product)) continue;
@ -330,7 +330,7 @@ class pdf_sponge extends ModelePDFFactures
$reshook=$hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
// Set nblignes with the new facture lines content after hook
$nblignes = count($object->lines);
$nblines = count($object->lines);
$nbpayments = count($object->getListOfPayments());
// Create pdf instance
@ -449,7 +449,7 @@ class pdf_sponge extends ModelePDFFactures
complete_substitutions_array($substitutionarray, $outputlangs, $object);
$notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs);
$notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow);
$pdf->startTransaction();
$pdf->SetFont('', '', $default_font_size - 1);
@ -572,7 +572,7 @@ class pdf_sponge extends ModelePDFFactures
// Loop on each lines
$pageposbeforeprintlines=$pdf->getPage();
$pagenb = $pageposbeforeprintlines;
for ($i = 0; $i < $nblignes; $i++)
for ($i = 0; $i < $nblines; $i++)
{
$curY = $nexY;
@ -630,7 +630,7 @@ class pdf_sponge extends ModelePDFFactures
//var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit;
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -782,7 +782,7 @@ class pdf_sponge extends ModelePDFFactures
$nexY = max($nexY, $posYAfterImage);
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -791,7 +791,7 @@ class pdf_sponge extends ModelePDFFactures
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -216,7 +216,7 @@ class pdf_soleil extends ModelePDFFicheinter
global $action;
$reshook=$hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
$nblignes = count($object->lines);
$nblines = count($object->lines);
// Create pdf instance
$pdf=pdf_getInstance($this->format);
@ -274,7 +274,7 @@ class pdf_soleil extends ModelePDFFicheinter
complete_substitutions_array($substitutionarray, $outputlangs, $object);
$notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs);
$notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow);
$tab_top = 88;
$pdf->SetFont('', '', $default_font_size - 1);

View File

@ -479,7 +479,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -172,7 +172,7 @@ class pdf_standard extends ModelePDFProduct
// Load traductions files requiredby by page
$outputlangs->loadLangs(array("main", "dict", "companies", "bills", "products", "orders", "deliveries"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
if ($conf->product->dir_output)
{
@ -346,7 +346,7 @@ class pdf_standard extends ModelePDFProduct
// Loop on each lines
/*
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
$curY = $nexY;
$pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage
@ -375,7 +375,7 @@ class pdf_standard extends ModelePDFProduct
$posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('','',true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -484,7 +484,7 @@ class pdf_standard extends ModelePDFProduct
$this->tva[$vatrate] += $tvaligne;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));

View File

@ -188,7 +188,7 @@ class pdf_baleine extends ModelePDFProjects
if ($conf->projet->dir_output)
{
//$nblignes = count($object->lines); // This is set later with array of tasks
//$nblines = count($object->lines); // This is set later with array of tasks
$objectref = dol_sanitizeFileName($object->ref);
$dir = $conf->projet->dir_output;
@ -250,7 +250,7 @@ class pdf_baleine extends ModelePDFProjects
}
$object->lines=$tasksarray;
$nblignes=count($object->lines);
$nblines=count($object->lines);
$pdf->Open();
$pagenb=0;
@ -287,7 +287,7 @@ class pdf_baleine extends ModelePDFProjects
complete_substitutions_array($substitutionarray, $outputlangs, $object);
$notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs);
$notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow);
$tab_top -= 2;
$pdf->SetFont('', '', $default_font_size - 1);
@ -313,7 +313,7 @@ class pdf_baleine extends ModelePDFProjects
$nexY = $tab_top + $heightoftitleline + 1;
// Loop on each lines
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -352,7 +352,7 @@ class pdf_baleine extends ModelePDFProjects
$posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -428,7 +428,7 @@ class pdf_baleine extends ModelePDFProjects
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->posxdateend, 3, $dateend, 0, 'C');
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -437,7 +437,7 @@ class pdf_baleine extends ModelePDFProjects
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -160,7 +160,7 @@ class pdf_beluga extends ModelePDFProjects
if ($conf->projet->dir_output)
{
//$nblignes = count($object->lines); // This is set later with array of tasks
//$nblines = count($object->lines); // This is set later with array of tasks
$objectref = dol_sanitizeFileName($object->ref);
$dir = $conf->projet->dir_output;
@ -223,7 +223,7 @@ class pdf_beluga extends ModelePDFProjects
}
$object->lines=$tasksarray;
$nblignes=count($object->lines);
$nblines=count($object->lines);
$pdf->Open();
$pagenb=0;
@ -260,7 +260,7 @@ class pdf_beluga extends ModelePDFProjects
complete_substitutions_array($substitutionarray, $outputlangs, $object);
$notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs);
$notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow);
$tab_top -= 2;
$pdf->SetFont('', '', $default_font_size - 1);
@ -642,7 +642,7 @@ class pdf_beluga extends ModelePDFProjects
}
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -120,7 +120,7 @@ class pdf_timespent extends ModelePDFProjects
if ($conf->projet->dir_output)
{
//$nblignes = count($object->lines); // This is set later with array of tasks
//$nblines = count($object->lines); // This is set later with array of tasks
$objectref = dol_sanitizeFileName($object->ref);
$dir = $conf->projet->dir_output;
@ -181,7 +181,7 @@ class pdf_timespent extends ModelePDFProjects
}
$object->lines=$tasksarray;
$nblignes=count($object->lines);
$nblines=count($object->lines);
$pdf->Open();
$pagenb=0;
@ -218,7 +218,7 @@ class pdf_timespent extends ModelePDFProjects
complete_substitutions_array($substitutionarray, $outputlangs, $object);
$notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs);
$notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow);
$tab_top -= 2;
$pdf->SetFont('', '', $default_font_size - 1);
@ -244,7 +244,7 @@ class pdf_timespent extends ModelePDFProjects
$nexY = $tab_top + $heightoftitleline + 1;
// Loop on each lines
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -283,7 +283,7 @@ class pdf_timespent extends ModelePDFProjects
$posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -359,7 +359,7 @@ class pdf_timespent extends ModelePDFProjects
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->posxdateend, 3, $dateend, 0, 'C');
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -368,7 +368,7 @@ class pdf_timespent extends ModelePDFProjects
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -218,7 +218,7 @@ class pdf_azur extends ModelePDFPropales
public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
{
// phpcs:enable
global $user,$langs,$conf,$mysoc,$db,$hookmanager,$nblignes;
global $user,$langs,$conf,$mysoc,$db,$hookmanager,$nblines;
if (! is_object($outputlangs)) $outputlangs=$langs;
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
@ -227,7 +227,7 @@ class pdf_azur extends ModelePDFPropales
// Load traductions files requiredby by page
$outputlangs->loadLangs(array("main", "dict", "companies", "bills", "propal", "products"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
// Loop on each lines to detect if there is at least one image to show
$realpatharray=array();
@ -235,7 +235,7 @@ class pdf_azur extends ModelePDFPropales
{
$objphoto = new Product($this->db);
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if (empty($object->lines[$i]->fk_product)) continue;
@ -362,7 +362,7 @@ class pdf_azur extends ModelePDFPropales
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
// Positionne $this->atleastonediscount si on a au moins une remise
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if ($object->lines[$i]->remise_percent)
{
@ -470,7 +470,7 @@ class pdf_azur extends ModelePDFPropales
$nexY = $tab_top + 7;
// Loop on each lines
for ($i = 0; $i < $nblignes; $i++)
for ($i = 0; $i < $nblines; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -527,7 +527,7 @@ class pdf_azur extends ModelePDFPropales
//var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit;
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforsignature+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -640,7 +640,7 @@ class pdf_azur extends ModelePDFPropales
if ($posYAfterImage > $posYAfterDescription) $nexY=$posYAfterImage;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -649,7 +649,7 @@ class pdf_azur extends ModelePDFPropales
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -193,7 +193,7 @@ class pdf_cyan extends ModelePDFPropales
public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
{
// phpcs:enable
global $user,$langs,$conf,$mysoc,$db,$hookmanager,$nblignes;
global $user,$langs,$conf,$mysoc,$db,$hookmanager,$nblines;
if (! is_object($outputlangs)) $outputlangs=$langs;
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
@ -206,7 +206,7 @@ class pdf_cyan extends ModelePDFPropales
$outputlangs->load("propal");
$outputlangs->load("products");
$nblignes = count($object->lines);
$nblines = count($object->lines);
$hidetop=0;
if(!empty($conf->global->MAIN_PDF_DISABLE_COL_HEAD_TITLE)){
@ -220,7 +220,7 @@ class pdf_cyan extends ModelePDFPropales
{
$objphoto = new Product($this->db);
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if (empty($object->lines[$i]->fk_product)) continue;
@ -557,7 +557,7 @@ class pdf_cyan extends ModelePDFPropales
// Loop on each lines
$pageposbeforeprintlines=$pdf->getPage();
$pagenb = $pageposbeforeprintlines;
for ($i = 0; $i < $nblignes; $i++)
for ($i = 0; $i < $nblines; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -617,7 +617,7 @@ class pdf_cyan extends ModelePDFPropales
//var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit;
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforsignature+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -755,7 +755,7 @@ class pdf_cyan extends ModelePDFPropales
if ($posYAfterImage > $posYAfterDescription) $nexY=$posYAfterImage;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -764,7 +764,7 @@ class pdf_cyan extends ModelePDFPropales
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -131,7 +131,7 @@ class pdf_squille extends ModelePdfReception
$outputlangs->load("receptions");
$outputlangs->load("productbatch");
$nblignes = count($object->lines);
$nblines = count($object->lines);
// Loop on each lines to detect if there is at least one image to show
$realpatharray=array();
@ -139,7 +139,7 @@ class pdf_squille extends ModelePdfReception
{
$objphoto = new Product($this->db);
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if (empty($object->lines[$i]->fk_product)) continue;
@ -217,7 +217,7 @@ class pdf_squille extends ModelePdfReception
$reshook=$hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
// Set nblignes with the new facture lines content after hook
$nblignes = count($object->lines);
$nblines = count($object->lines);
$pdf=pdf_getInstance($this->format);
$default_font_size = pdf_getPDFFontSize($outputlangs);
@ -357,7 +357,7 @@ class pdf_squille extends ModelePdfReception
$fk_commandefourndet=0;
$totalOrdered=0;
// Loop on each lines
for ($i = 0; $i < $nblignes; $i++)
for ($i = 0; $i < $nblines; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -416,7 +416,7 @@ class pdf_squille extends ModelePdfReception
//var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit;
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -496,7 +496,7 @@ class pdf_squille extends ModelePdfReception
if ($weighttxt && $voltxt) $nexY+=2;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));

View File

@ -201,7 +201,7 @@ class pdf_standard extends ModelePDFStock
// Load traductions files requiredby by page
$outputlangs->loadLangs(array("main", "dict", "companies", "bills", "stocks", "orders", "deliveries"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
if ($conf->stock->dir_output)
{
@ -323,8 +323,8 @@ class pdf_standard extends ModelePDFStock
{
$num = $db->num_rows($resql);
$i = 0;
$nblignes = $num;
for ($i = 0 ; $i < $nblignes ; $i++)
$nblines = $num;
for ($i = 0 ; $i < $nblines ; $i++)
{
$objp = $db->fetch_object($resql);
@ -372,7 +372,7 @@ class pdf_standard extends ModelePDFStock
$posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -452,7 +452,7 @@ class pdf_standard extends ModelePDFStock
$totalvaluesell+=price2num($pricemin*$objp->value, 'MT');
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -550,7 +550,7 @@ class pdf_standard extends ModelePDFStock
complete_substitutions_array($substitutionarray, $outputlangs, $object);
$notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs);
$notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow);
$tab_top = 88;
$pdf->SetFont('', '', $default_font_size - 1);
@ -576,7 +576,7 @@ class pdf_standard extends ModelePDFStock
// Loop on each lines
/*
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
$curY = $nexY;
$pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage
@ -605,7 +605,7 @@ class pdf_standard extends ModelePDFStock
$posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('','',true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -644,7 +644,7 @@ class pdf_standard extends ModelePDFStock
$pdf->MultiCell($this->posxdiscount-$this->posxqty-0.8, 4, $qty, 0, 'R');
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -653,7 +653,7 @@ class pdf_standard extends ModelePDFStock
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -331,7 +331,7 @@ class pdf_stdmovement extends ModelePDFMovement
* END TODO
**/
//$nblignes = count($object->lines);
//$nblines = count($object->lines);
if ($conf->stock->dir_output)
{
@ -481,8 +481,8 @@ class pdf_stdmovement extends ModelePDFMovement
{
$num = $db->num_rows($resql);
$i = 0;
$nblignes = $num;
for ($i = 0 ; $i < $nblignes ; $i++)
$nblines = $num;
for ($i = 0 ; $i < $nblines ; $i++)
{
$objp = $db->fetch_object($resql);
@ -530,7 +530,7 @@ class pdf_stdmovement extends ModelePDFMovement
$posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -639,9 +639,9 @@ class pdf_stdmovement extends ModelePDFMovement
$totalvaluesell+=price2num($pricemin*$objp->value, 'MT');
$nexY+=3.5; // Passe espace entre les lignes
$nexY+=3.5; // Add space between lines
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -650,7 +650,7 @@ class pdf_stdmovement extends ModelePDFMovement
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)
@ -724,7 +724,7 @@ class pdf_stdmovement extends ModelePDFMovement
complete_substitutions_array($substitutionarray, $outputlangs, $object);
$notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs);
$notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow);
$tab_top = 88;
$pdf->SetFont('', '', $default_font_size - 1);

View File

@ -199,7 +199,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
public function write_file($object, $outputlangs = '', $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
{
// phpcs:enable
global $user,$langs,$conf,$mysoc,$hookmanager,$nblignes;
global $user,$langs,$conf,$mysoc,$hookmanager,$nblines;
// Get source company
if (! is_object($object->thirdparty)) $object->fetch_thirdparty();
@ -259,7 +259,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
global $action;
$reshook=$hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
$nblignes = count($object->lines);
$nblines = count($object->lines);
$pdf=pdf_getInstance($this->format);
$default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance
@ -296,7 +296,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
// Positionne $this->atleastonediscount si on a au moins une remise
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if ($object->lines[$i]->remise_percent)
{
@ -370,7 +370,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
$nexY = $tab_top + 7;
// Loop on each lines
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -397,7 +397,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
$posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -495,7 +495,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
$this->localtax2[$localtax2rate]+=$localtax2ligne;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -504,7 +504,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -185,7 +185,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders
public function write_file($object, $outputlangs = '', $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
{
// phpcs:enable
global $user,$langs,$conf,$hookmanager,$mysoc,$nblignes;
global $user,$langs,$conf,$hookmanager,$mysoc,$nblines;
if (! is_object($outputlangs)) $outputlangs=$langs;
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
@ -194,7 +194,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders
// Load translation files required by the page
$outputlangs->loadLangs(array("main", "orders", "companies", "bills", "dict", "products"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
$hidetop=0;
if(!empty($conf->global->MAIN_PDF_DISABLE_COL_HEAD_TITLE)){
@ -205,7 +205,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders
$realpatharray=array();
if (! empty($conf->global->MAIN_GENERATE_SUPPLIER_ORDER_WITH_PICTURE))
{
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if (empty($object->lines[$i]->fk_product)) continue;
@ -284,7 +284,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders
global $action;
$reshook=$hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
$nblignes = count($object->lines);
$nblines = count($object->lines);
$pdf=pdf_getInstance($this->format);
$default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance
@ -496,7 +496,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders
// Loop on each lines
$pageposbeforeprintlines=$pdf->getPage();
$pagenb = $pageposbeforeprintlines;
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -553,7 +553,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders
$posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -689,7 +689,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders
if ($posYAfterImage > $posYAfterDescription) $nexY=$posYAfterImage;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1', 'color'=>array(80,80,80)));
@ -698,7 +698,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -213,7 +213,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
public function write_file($object, $outputlangs = '', $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
{
// phpcs:enable
global $user,$langs,$conf,$hookmanager,$mysoc,$nblignes;
global $user,$langs,$conf,$hookmanager,$mysoc,$nblines;
if (! is_object($outputlangs)) $outputlangs=$langs;
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
@ -222,13 +222,13 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
// Load translation files required by the page
$outputlangs->loadLangs(array("main", "orders", "companies", "bills", "dict", "products"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
// Loop on each lines to detect if there is at least one image to show
$realpatharray=array();
if (! empty($conf->global->MAIN_GENERATE_SUPPLIER_ORDER_WITH_PICTURE))
{
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if (empty($object->lines[$i]->fk_product)) continue;
@ -307,7 +307,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
global $action;
$reshook=$hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
$nblignes = count($object->lines);
$nblines = count($object->lines);
$pdf=pdf_getInstance($this->format);
$default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance
@ -344,7 +344,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
// Positionne $this->atleastonediscount si on a au moins une remise
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if ($object->lines[$i]->remise_percent)
{
@ -418,7 +418,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$nexY = $tab_top + 7;
// Loop on each lines
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -481,7 +481,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -591,7 +591,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
if ($posYAfterImage > $posYAfterDescription) $nexY=$posYAfterImage;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -600,7 +600,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -264,7 +264,7 @@ class pdf_standard extends ModelePDFSuppliersPayments
global $action;
$reshook=$hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
$nblignes = count($object->lines);
$nblines = count($object->lines);
$pdf=pdf_getInstance($this->format);
$default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance
@ -325,7 +325,7 @@ class pdf_standard extends ModelePDFSuppliersPayments
$nexY = $tab_top + 7;
// Loop on each lines
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -354,7 +354,7 @@ class pdf_standard extends ModelePDFSuppliersPayments
$posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -412,7 +412,7 @@ class pdf_standard extends ModelePDFSuppliersPayments
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -421,7 +421,7 @@ class pdf_standard extends ModelePDFSuppliersPayments
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -209,7 +209,7 @@ class pdf_aurore extends ModelePDFSupplierProposal
public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
{
// phpcs:enable
global $user,$langs,$conf,$mysoc,$db,$hookmanager,$nblignes;
global $user,$langs,$conf,$mysoc,$db,$hookmanager,$nblines;
if (! is_object($outputlangs)) $outputlangs=$langs;
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
@ -218,13 +218,13 @@ class pdf_aurore extends ModelePDFSupplierProposal
// Load traductions files requiredby by page
$outputlangs->loadLangs(array("main", "dict", "companies", "bills", "products", "supplier_proposal"));
$nblignes = count($object->lines);
$nblines = count($object->lines);
// Loop on each lines to detect if there is at least one image to show
$realpatharray=array();
if (! empty($conf->global->MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE))
{
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if (empty($object->lines[$i]->fk_product)) continue;
@ -333,7 +333,7 @@ class pdf_aurore extends ModelePDFSupplierProposal
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
// Positionne $this->atleastonediscount si on a au moins une remise
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
if ($object->lines[$i]->remise_percent)
{
@ -403,7 +403,7 @@ class pdf_aurore extends ModelePDFSupplierProposal
$nexY = $tab_top + 7;
// Loop on each lines
for ($i = 0 ; $i < $nblignes ; $i++)
for ($i = 0 ; $i < $nblines ; $i++)
{
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
@ -469,7 +469,7 @@ class pdf_aurore extends ModelePDFSupplierProposal
//var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit;
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text
{
if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page
if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{
$pdf->AddPage('', '', true);
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
@ -587,7 +587,7 @@ class pdf_aurore extends ModelePDFSupplierProposal
if ($posYAfterImage > $posYAfterDescription) $nexY=$posYAfterImage;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));
@ -596,7 +596,7 @@ class pdf_aurore extends ModelePDFSupplierProposal
$pdf->SetLineStyle(array('dash'=>0));
}
$nexY+=2; // Passe espace entre les lignes
$nexY+=2; // Add space between lines
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter)

View File

@ -148,10 +148,10 @@ class TraceableDB extends DoliDB
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
* Renvoie le nombre de lignes dans le resultat d'une requete INSERT, DELETE ou UPDATE
* Return the number o flines into the result of a request INSERT, DELETE or UPDATE
*
* @param resource $resultset Curseur de la requete voulue
* @return int Nombre de lignes
* @return int Number of lines
* @see num_rows()
*/
public function affected_rows($resultset)

View File

@ -209,9 +209,9 @@ class EmailCollector extends CommonObject
// Translate some data of arrayofkeyval
foreach($this->fields as $key => $val)
{
if (is_array($this->fields[$key]['arrayofkeyval']))
if (is_array($val['arrayofkeyval']))
{
foreach($this->fields[$key]['arrayofkeyval'] as $key2 => $val2)
foreach($val['arrayofkeyval'] as $key2 => $val2)
{
$this->fields[$key]['arrayofkeyval'][$key2]=$langs->trans($val2);
}

View File

@ -164,11 +164,11 @@ class EmailCollectorAction extends CommonObject
// Translate some data of arrayofkeyval
foreach($this->fields as $key => $val)
{
if (is_array($this->fields[$key]['arrayofkeyval']))
if (is_array($val['arrayofkeyval']))
{
foreach($this->fields[$key]['arrayofkeyval'] as $key2 => $val2)
foreach($val['arrayofkeyval'] as $key2 => $val2)
{
$this->fields[$key]['arrayofkeyval'][$key2]=$langs->trans($val2);
$this->fields[$key]['arrayofkeyval'][$key2]=$langs->trans($val2);
}
}
}

View File

@ -133,9 +133,9 @@ class EmailCollectorFilter extends CommonObject
// Translate some data of arrayofkeyval
foreach($this->fields as $key => $val)
{
if (is_array($this->fields[$key]['arrayofkeyval']))
if (is_array($val['arrayofkeyval']))
{
foreach($this->fields[$key]['arrayofkeyval'] as $key2 => $val2)
foreach($val['arrayofkeyval'] as $key2 => $val2)
{
$this->fields[$key]['arrayofkeyval'][$key2]=$langs->trans($val2);
}

View File

@ -347,7 +347,7 @@ class Expedition extends CommonObject
dol_syslog(get_class($this)."::create", LOG_DEBUG);
if ($this->db->query($sql))
{
// Insertion des lignes
// Insert of lines
$num=count($this->lines);
for ($i = 0; $i < $num; $i++)
{
@ -2355,7 +2355,7 @@ class Expedition extends CommonObject
/**
* Classe de gestion des lignes de bons d'expedition
* Classe to manage lines of shipment
*/
class ExpeditionLigne extends CommonObjectLine
{

View File

@ -2112,16 +2112,16 @@ class ExpenseReport extends CommonObject
dol_syslog(get_class($this)."::periode_existe sql=".$sql);
$result = $this->db->query($sql);
if ($result) {
$num_lignes = $this->db->num_rows($result); $i = 0;
$num_rows = $this->db->num_rows($result); $i = 0;
if ($num_lignes>0)
if ($num_rows > 0)
{
$date_d_form = $date_debut;
$date_f_form = $date_fin;
$existe = false;
while ($i < $num_lignes)
while ($i < $num_rows)
{
$objp = $this->db->fetch_object($result);
@ -2175,8 +2175,8 @@ class ExpenseReport extends CommonObject
$result = $this->db->query($sql);
if($result)
{
$num_lignes = $this->db->num_rows($result); $i = 0;
while ($i < $num_lignes)
$num_rows = $this->db->num_rows($result); $i = 0;
while ($i < $num_rows)
{
$objp = $this->db->fetch_object($result);
array_push($users_validator, $objp->fk_user);

View File

@ -183,7 +183,7 @@ if ($action == 'add') {
$newfichinterid = $newinter->create($user);
if ($newfichinterid > 0) {
// on ajoute les lignes de détail ensuite
// Now we add line of details
foreach ($object->lines as $ficheinterligne)
$newinter->addline($user, $newfichinterid, $ficheinterligne->desc, "", $ficheinterligne->duree, '');

View File

@ -679,9 +679,8 @@ if (empty($reshook))
}
/*
* Ordonnancement des lignes
*/
* Set position of lines
*/
elseif ($action == 'up' && $user->rights->ficheinter->creer)
{
$object->line_up($lineid);

View File

@ -312,7 +312,7 @@ class PaiementFourn extends Paiement
/**
* Supprime un paiement ainsi que les lignes qu'il a genere dans comptes
* Delete a payment and lines generated into accounts
* Si le paiement porte sur un ecriture compte qui est rapprochee, on refuse
* Si le paiement porte sur au moins une facture a "payee", on refuse
*

View File

@ -1415,7 +1415,7 @@ if (empty($reshook))
$totalpaye = $object->getSommePaiement();
$resteapayer = $object->total_ttc - $totalpaye;
// On verifie si les lignes de factures ont ete exportees en compta et/ou ventilees
// We check that lines of invoices are exported in accountancy
//$ventilExportCompta = $object->getVentilExportCompta();
// On verifie si aucun paiement n'a ete effectue

View File

@ -1899,8 +1899,8 @@ class Holiday extends CommonObject
$result = $this->db->query($sql);
if($result)
{
$num_lignes = $this->db->num_rows($result); $i = 0;
while ($i < $num_lignes)
$num_rows = $this->db->num_rows($result); $i = 0;
while ($i < $num_rows)
{
$objp = $this->db->fetch_object($result);
array_push($users_validator, $objp->fk_user);

View File

@ -216,7 +216,8 @@ DescThirdPartyReport=Consult here the list of third-party customers and vendors
ListAccounts=قائمة الحسابات المحاسبية
UnknownAccountForThirdparty=Unknown third-party account. We will use %s
UnknownAccountForThirdpartyBlocking=Unknown third-party account. Blocking error
ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Third-party account not defined or third party unknown. Blocking error.
ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Third-party account not defined or third party unknown. We will use %s
ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Third-party account not defined or third party unknown. Blocking error.
UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third-party account and waiting account not defined. Blocking error
PaymentsNotLinkedToProduct=Payment not linked to any product / service
@ -291,7 +292,7 @@ Modelcsv_cogilog=Export for Cogilog
Modelcsv_agiris=Export for Agiris
Modelcsv_openconcerto=Export for OpenConcerto (Test)
Modelcsv_configurable=Export Configurable
Modelcsv_FEC=Export FEC (Art. L47 A)
Modelcsv_FEC=Export FEC
Modelcsv_Sage50_Swiss=Export for Sage 50 Switzerland
ChartofaccountsId=Chart of accounts Id
@ -316,6 +317,9 @@ WithoutValidAccount=Without valid dedicated account
WithValidAccount=With valid dedicated account
ValueNotIntoChartOfAccount=This value of accounting account does not exist into chart of account
AccountRemovedFromGroup=Account removed from group
SaleLocal=Local sale
SaleExport=Export sale
SaleEEC=Sale in EEC
## Dictionary
Range=Range of accounting account
@ -336,7 +340,7 @@ UseMenuToSetBindindManualy=Autodection not possible, use menu <a href="%s">%s</a
## Import
ImportAccountingEntries=Accounting entries
DateExport=Date export
WarningReportNotReliable=Warning, this report is not based on the Ledger, so does not contains transaction modified manualy in the Ledger. If your journalization is up to date, the bookkeeping view is more accurate.
ExpenseReportJournal=Expense Report Journal
InventoryJournal=Inventory Journal

View File

@ -149,7 +149,7 @@ SystemToolsAreaDesc=This area provides administration functions. Use the menu to
Purge=أحذف
PurgeAreaDesc=This page allows you to delete all files generated or stored by Dolibarr (temporary files or all files in <b>%s</b> directory). Using this feature is not normally necessary. It is provided as a workaround for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files generated by the web server.
PurgeDeleteLogFile=Delete log files, including <b>%s</b> defined for Syslog module (no risk of losing data)
PurgeDeleteTemporaryFiles=Delete all temporary files (no risk of losing data)
PurgeDeleteTemporaryFiles=Delete all temporary files (no risk of losing data). Note: Deletion is done only if the temp directory was created 24 hours ago.
PurgeDeleteTemporaryFilesShort=Delete temporary files
PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory: <b>%s</b>.<br>This will delete all generated documents related to elements (third parties, invoices etc...), files uploaded into the ECM module, database backup dumps and temporary files.
PurgeRunNow=إحذف الآن
@ -804,6 +804,7 @@ Permission401=قراءة خصومات
Permission402=إنشاء / تعديل الخصومات
Permission403=تحقق من الخصومات
Permission404=حذف خصومات
Permission430=Use Debug Bar
Permission511=Read payments of salaries
Permission512=Create/modify payments of salaries
Permission514=Delete payments of salaries
@ -818,6 +819,9 @@ Permission532=إنشاء / تعديل الخدمات
Permission534=حذف خدمات
Permission536=انظر / إدارة الخدمات الخفية
Permission538=تصدير الخدمات
Permission650=Read bom of Bom
Permission651=Create/Update bom of Bom
Permission652=Delete bom of Bom
Permission701=قراءة التبرعات
Permission702=إنشاء / تعديل والهبات
Permission703=حذف التبرعات
@ -837,6 +841,12 @@ Permission1101=قراءة تسليم أوامر
Permission1102=إنشاء / تعديل أوامر التسليم
Permission1104=تحقق من توصيل الأوامر
Permission1109=حذف تسليم أوامر
Permission1121=Read supplier proposals
Permission1122=Create/modify supplier proposals
Permission1123=Validate supplier proposals
Permission1124=Send supplier proposals
Permission1125=Delete supplier proposals
Permission1126=Close supplier price requests
Permission1181=قراءة الموردين
Permission1182=Read purchase orders
Permission1183=Create/modify purchase orders
@ -859,16 +869,6 @@ Permission1251=ادارة الدمار الواردات الخارجية الب
Permission1321=تصدير العملاء والفواتير والمدفوعات والصفات
Permission1322=Reopen a paid bill
Permission1421=Export sales orders and attributes
Permission20001=Read leave requests (your leave and those of your subordinates)
Permission20002=Create/modify your leave requests (your leave and those of your subordinates)
Permission20003=حذف طلبات الإجازة
Permission20004=Read all leave requests (even of user not subordinates)
Permission20005=Create/modify leave requests for everybody (even of user not subordinates)
Permission20006=طلبات الإجازة المشرف (إعداد وتحديث التوازن)
Permission23001=قراءة مهمة مجدولة
Permission23002=إنشاء / تحديث المجدولة وظيفة
Permission23003=حذف مهمة مجدولة
Permission23004=تنفيذ مهمة مجدولة
Permission2401=قراءة الأعمال (أو أحداث المهام) مرتبطة حسابه
Permission2402=إنشاء / تعديل أو حذف الإجراءات (الأحداث أو المهام) مرتبطة حسابه
Permission2403=قراءة الأعمال (أو أحداث المهام) آخرين
@ -882,9 +882,41 @@ Permission2503=تقديم وثائق أو حذف
Permission2515=إعداد وثائق وأدلة
Permission2801=استخدام عميل FTP في وضع القراءة (تصفح وتحميل فقط)
Permission2802=العميل استخدام بروتوكول نقل الملفات في وضع الكتابة (حذف أو تحميل الملفات)
Permission3200=Read archived events and fingerprints
Permission4001=See employees
Permission4002=Create employees
Permission4003=Delete employees
Permission4004=Export employees
Permission10001=Read website content
Permission10002=Create/modify website content (html and javascript content)
Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers.
Permission10005=Delete website content
Permission20001=Read leave requests (your leave and those of your subordinates)
Permission20002=Create/modify your leave requests (your leave and those of your subordinates)
Permission20003=حذف طلبات الإجازة
Permission20004=Read all leave requests (even of user not subordinates)
Permission20005=Create/modify leave requests for everybody (even of user not subordinates)
Permission20006=طلبات الإجازة المشرف (إعداد وتحديث التوازن)
Permission23001=قراءة مهمة مجدولة
Permission23002=إنشاء / تحديث المجدولة وظيفة
Permission23003=حذف مهمة مجدولة
Permission23004=تنفيذ مهمة مجدولة
Permission50101=Use Point of Sale
Permission50201=قراءة المعاملات
Permission50202=استيراد المعاملات
Permission50401=Bind products and invoices with accounting accounts
Permission50411=Read operations in ledger
Permission50412=Write/Edit operations in ledger
Permission50414=Delete operations in ledger
Permission50415=Delete all operations by year and journal in ledger
Permission50418=Export operations of the ledger
Permission50420=Report and export reports (turnover, balance, journals, ledger)
Permission50430=Define and close a fiscal year
Permission50440=Manage chart of accounts, setup of accountancy
Permission51001=Read assets
Permission51002=Create/Update assets
Permission51003=Delete assets
Permission51005=Setup types of asset
Permission54001=طباعة
Permission55001=قراءة استطلاعات الرأي
Permission55002=إنشاء / تعديل استطلاعات الرأي
@ -1078,7 +1110,7 @@ AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only.
SystemInfoDesc=نظام المعلومات المتنوعة المعلومات التقنية تحصل في قراءة فقط وواضحة للمشرفين فقط.
SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction.
CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" or "%s" button at the bottom of the page.
AccountantDesc=Edit the details of your accountant/bookkeeper
AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information.
AccountantFileNumber=Accountant code
DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here.
AvailableModules=Available app/modules
@ -1891,3 +1923,5 @@ IFTTTDesc=This module is designed to trigger events on IFTTT and/or to execute s
UrlForIFTTT=URL endpoint for IFTTT
YouWillFindItOnYourIFTTTAccount=You will find it on your IFTTT account
EndPointFor=End point for %s : %s
DeleteEmailCollector=Delete email collector
ConfirmDeleteEmailCollector=Are you sure you want to delete this email collectore?

View File

@ -0,0 +1,65 @@
# Copyright (C) 2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Generic
#
Assets = Assets
NewAsset = New asset
AccountancyCodeAsset = Accounting code (asset)
AccountancyCodeDepreciationAsset = Accounting code (depreciation asset account)
AccountancyCodeDepreciationExpense = Accounting code (depreciation expense account)
NewAssetType=New asset type
AssetsTypeSetup=Asset type setup
AssetTypeModified=Asset type modified
AssetType=Asset type
AssetsLines=Assets
DeleteType=حذف
DeleteAnAssetType=Delete an asset type
ConfirmDeleteAssetType=Are you sure you want to delete this asset type?
ShowTypeCard=وتبين من نوع '٪ ق'
# Module label 'ModuleAssetsName'
ModuleAssetsName = Assets
# Module description 'ModuleAssetsDesc'
ModuleAssetsDesc = Assets description
#
# Admin page
#
AssetsSetup = Assets setup
Settings = Settings
AssetsSetupPage = Assets setup page
ExtraFieldsAssetsType = Complementary attributes (Asset type)
AssetsType=Asset type
AssetsTypeId=Asset type id
AssetsTypeLabel=Asset type label
AssetsTypes=Assets types
#
# Menu
#
MenuAssets = Assets
MenuNewAsset = New asset
MenuTypeAssets = Type assets
MenuListAssets = قائمة
MenuNewTypeAssets = جديد
MenuListTypeAssets = قائمة
#
# Module
#
NewAssetType=New asset type
NewAsset=New asset

View File

@ -100,7 +100,7 @@ NotReconciled=لم يتم تسويتة
CustomerInvoicePayment=مدفوعات العميل
SupplierInvoicePayment=Vendor payment
SubscriptionPayment=دفع الاشتراك
WithdrawalPayment=سحب المدفوعات
WithdrawalPayment=Debit payment order
SocialContributionPayment=مدفوعات الضرائب الاجتماعية / المالية
BankTransfer=حوالة مصرفية
BankTransfers=حوالات المصرفية

View File

@ -0,0 +1,54 @@
BlockedLog=Unalterable Logs
Field=حقل
BlockedLogDesc=This module tracks some events into an unalterable log (that you can't modify once recorded) into a block chain, in real time. This module provides compatibility with requirements of laws of some countries (like France with the law Finance 2016 - Norme NF525).
Fingerprints=Archived events and fingerprints
FingerprintsDesc=This is the tool to browse or extract the unalterable logs. Unalterable logs are generated and archived locally into a dedicated table, in real time when you record a business event. You can use this tool to export this archive and save it into an external support (some countries, like France, ask that you do it every year). Note that, there is no feature to purge this log and every change tried to be done directly into this log (by a hacker for example) will be reported with a non-valid fingerprint. If you really need to purge this table because you used your application for a demo/test purpose and want to clean your data to start your production, you can ask your reseller or integrator to reset your database (all your data will be removed).
CompanyInitialKey=Company initial key (hash of genesis block)
BrowseBlockedLog=Unalterable logs
ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long)
ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long)
DownloadBlockChain=Download fingerprints
KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists).
OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one.
OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously.
AddedByAuthority=Stored into remote authority
NotAddedByAuthorityYet=Not yet stored into remote authority
ShowDetails=Show stored details
logPAYMENT_VARIOUS_CREATE=Payment (not assigned to an invoice) created
logPAYMENT_VARIOUS_MODIFY=Payment (not assigned to an invoice) modified
logPAYMENT_VARIOUS_DELETE=Payment (not assigned to an invoice) logical deletion
logPAYMENT_ADD_TO_BANK=Payment added to bank
logPAYMENT_CUSTOMER_CREATE=Customer payment created
logPAYMENT_CUSTOMER_DELETE=Customer payment logical deletion
logDONATION_PAYMENT_CREATE=Donation payment created
logDONATION_PAYMENT_DELETE=Donation payment logical deletion
logBILL_PAYED=Customer invoice paid
logBILL_UNPAYED=Customer invoice set unpaid
logBILL_VALIDATE=فاتورة مصادق
logBILL_SENTBYMAIL=Customer invoice send by mail
logBILL_DELETE=Customer invoice logically deleted
logMODULE_RESET=Module BlockedLog was disabled
logMODULE_SET=Module BlockedLog was enabled
logDON_VALIDATE=Donation validated
logDON_MODIFY=Donation modified
logDON_DELETE=Donation logical deletion
logMEMBER_SUBSCRIPTION_CREATE=Member subscription created
logMEMBER_SUBSCRIPTION_MODIFY=Member subscription modified
logMEMBER_SUBSCRIPTION_DELETE=Member subscription logical deletion
logCASHCONTROL_VALIDATE=Cash fence recording
BlockedLogBillDownload=Customer invoice download
BlockedLogBillPreview=Customer invoice preview
BlockedlogInfoDialog=Log Details
ListOfTrackedEvents=List of tracked events
Fingerprint=Fingerprint
DownloadLogCSV=Export archived logs (CSV)
logDOC_PREVIEW=Preview of a validated document in order to print or download
logDOC_DOWNLOAD=Download of a validated document in order to print or send
DataOfArchivedEvent=Full datas of archived event
ImpossibleToReloadObject=Original object (type %s, id %s) not linked (see 'Full datas' column to get unalterable saved data)
BlockedLogAreRequiredByYourCountryLegislation=Unalterable Logs module may be required by the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they can not be validated by a tax audit.
BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Unalterable Logs module was activated because of the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they cannot be validated by a tax audit.
BlockedLogDisableNotAllowedForCountry=List of countries where usage of this module is mandatory (just to prevent to disable the module by error, if your country is in this list, disable of module is not possible without editing this list first. Note also that enabling/disabling this module will keep a track into the unalterable log).
OnlyNonValid=Non-valid
TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters.
RestrictYearToExport=Restrict month / year to export

View File

@ -68,3 +68,4 @@ Terminal=Terminal
NumberOfTerminals=Number of Terminals
TerminalSelect=Select terminal you want to use:
POSTicket=POS Ticket
BasicPhoneLayout=Use basic layout for phones

View File

@ -19,6 +19,8 @@ MailTopic=Email topic
MailText=رسالة
MailFile=الملفات المرفقة
MailMessage=هيئة البريد الإلكتروني
SubjectNotIn=Not in Subject
BodyNotIn=Not in Body
ShowEMailing=وتظهر مراسلة
ListOfEMailings=قائمة emailings
NewMailing=مراسلة جديدة
@ -76,9 +78,9 @@ GroupEmails=Group emails
OneEmailPerRecipient=One email per recipient (by default, one email per record selected)
WarningIfYouCheckOneRecipientPerEmail=Warning, if you check this box, it means only one email will be sent for several different record selected, so, if your message contains substitution variables that refers to data of a record, it becomes not possible to replace them.
ResultOfMailSending=Result of mass Email sending
NbSelected=No. selected
NbIgnored=No. ignored
NbSent=No. sent
NbSelected=Number selected
NbIgnored=Number ignored
NbSent=Number sent
SentXXXmessages=%s message(s) sent.
ConfirmUnvalidateEmailing=Are you sure you want to change email <b>%s</b> to draft status?
MailingModuleDescContactsWithThirdpartyFilter=Contact with customer filters

View File

@ -171,7 +171,7 @@ MembersStatisticsDesc=اختيار الإحصاءات التي ترغب في ق
MenuMembersStats=إحصائيات
LastMemberDate=Latest member date
LatestSubscriptionDate=Latest subscription date
Nature=طبيعة
MemberNature=Nature of member
Public=معلومات علنية
NewMemberbyWeb=وأضاف عضو جديد. تنتظر الموافقة
NewMemberForm=الأعضاء الجدد في شكل

View File

@ -0,0 +1,17 @@
MRPArea=MRP Area
MenuBOM=Bills of material
LatestBOMModified=Latest %s Bills of materials modified
BillOfMaterials=Bill of Material
BOMsSetup=Setup of module BOM
ListOfBOMs=List of bills of material - BOM
NewBOM=New bill of material
ProductBOMHelp=Product to create with this BOM
BOMsNumberingModules=BOM numbering templates
BOMsModelModule=BOMS document templates
FreeLegalTextOnBOMs=Free text on document of BOM
WatermarkOnDraftBOMs=Watermark on draft BOM
ConfirmCloneBillOfMaterials=Are you sure you want to clone this bill of material ?
ManufacturingEfficiency=Manufacturing efficiency
ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production
DeleteBillOfMaterials=Delete Bill Of Materials
ConfirmDeleteBillOfMaterials=Are you sure you want to delete this Bill Of Material?

View File

@ -159,7 +159,7 @@ SuppliersPrices=Vendor prices
SuppliersPricesOfProductsOrServices=Vendor prices (of products or services)
CustomCode=Customs / Commodity / HS code
CountryOrigin=بلد المنشأ
Nature=Product Type (material/finished)
Nature=Nature of produt (material/finished)
ShortLabel=التسمية قصيرة
Unit=وحدة
p=ش.

View File

@ -0,0 +1,45 @@
# Dolibarr language file - Source file is en_US - receptions
ReceptionsSetup=Product Reception setup
RefReception=Ref. reception
Reception=على عملية
Receptions=Receptions
AllReceptions=All Receptions
Reception=على عملية
Receptions=Receptions
ShowReception=Show Receptions
ReceptionsArea=Receptions area
ListOfReceptions=List of receptions
ReceptionMethod=Reception method
LastReceptions=Latest %s receptions
StatisticsOfReceptions=Statistics for receptions
NbOfReceptions=Number of receptions
NumberOfReceptionsByMonth=Number of receptions by month
ReceptionCard=Reception card
NewReception=New reception
CreateReception=Create reception
QtyInOtherReceptions=Qty in other receptions
OtherReceptionsForSameOrder=Other receptions for this order
ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order
ReceptionsToValidate=Receptions to validate
StatusReceptionCanceled=ألغيت
StatusReceptionDraft=مسودة
StatusReceptionValidated=صادق (لشحن المنتجات أو شحنها بالفعل)
StatusReceptionProcessed=معالجة
StatusReceptionDraftShort=مسودة
StatusReceptionValidatedShort=التحقق من صحة
StatusReceptionProcessedShort=معالجة
ReceptionSheet=Reception sheet
ConfirmDeleteReception=Are you sure you want to delete this reception?
ConfirmValidateReception=Are you sure you want to validate this reception with reference <b>%s</b>?
ConfirmCancelReception=Are you sure you want to cancel this reception?
StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated. Date used is date of validation of reception (planed delivery date is not always known).
SendReceptionByEMail=Send reception by email
SendReceptionRef=Submission of reception %s
ActionsOnReception=Events on reception
ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the order card.
ReceptionLine=Reception line
ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent
ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received
ValidateOrderFirstBeforeReception=You must first validate the order before being able to make receptions.
ReceptionsNumberingModules=Numbering module for receptions
ReceptionsReceiptModel=Document templates for receptions

View File

@ -1,18 +1,21 @@
# Dolibarr language file - Source file is en_US - salaries
SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accounting account used for user third parties
SALARIES_ACCOUNTING_ACCOUNT_PAYMENT_Desc=The dedicated accounting account defined on user card will be used for Subledger accouting only. This one will be used for General Ledger and as default value of Subledger accounting if dedicated user accouting account on user is not defined.
SALARIES_ACCOUNTING_ACCOUNT_PAYMENT_Desc=The dedicated accounting account defined on user card will be used for Subledger accounting only. This one will be used for General Ledger and as default value of Subledger accounting if dedicated user accounting account on user is not defined.
SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accounting account by default for wage payments
Salary=الراتب
Salaries=الرواتب
NewSalaryPayment=دفع الرواتب جديد
AddSalaryPayment=Add salary payment
SalaryPayment=دفع الرواتب
SalariesPayments=مدفوعات الرواتب
ShowSalaryPayment=مشاهدة دفع الرواتب
THM=Average hourly rate
TJM=Average daily rate
CurrentSalary=الراتب الحالي
THMDescription=يمكن استخدام هذه القيمة لحساب تكلفة الوقت المستهلك في المشروع المدخل من قبل المستخدمين إذا تم استخدام وحدة مشروع
TJMDescription=هذه القيمة هي حاليا فقط كمعلومات وليس لاستخدامها في أي حساب
THMDescription=This value may be used to calculate the cost of time consumed on a project entered by users if module project is used
TJMDescription=This value is currently for information only and is not used for any calculation
LastSalaries=Latest %s salary payments
AllSalaries=All salary payments
SalariesStatistics=Statistiques salaires
SalariesStatistics=Salary statistics
# Export
SalariesAndPayments=Salaries and payments

View File

@ -3,7 +3,7 @@ WarehouseCard=بطاقة مخزن
Warehouse=مخزن
Warehouses=المستودعات
ParentWarehouse=Parent warehouse
NewWarehouse=المستودع الجديد / بورصة المنطقة
NewWarehouse=New warehouse / Stock Location
WarehouseEdit=تعديل مستودع
MenuNewWarehouse=مستودع جديد
WarehouseSource=مصدر مخزن
@ -29,6 +29,8 @@ MovementId=Movement ID
StockMovementForId=Movement ID %d
ListMouvementStockProject=List of stock movements associated to project
StocksArea=منطقة المستودعات
AllWarehouses=All warehouses
IncludeAlsoDraftOrders=Include also draft orders
Location=عوضا عن
LocationSummary=باختصار اسم الموقع
NumberOfDifferentProducts=عدد من المنتجات المختلفة
@ -53,7 +55,7 @@ PMPValue=المتوسط المرجح لسعر
PMPValueShort=الواب
EnhancedValueOfWarehouses=قيمة المستودعات
UserWarehouseAutoCreate=Create a user warehouse automatically when creating a user
AllowAddLimitStockByWarehouse=Allow to add limit and desired stock per couple (product, warehouse) instead of per product
AllowAddLimitStockByWarehouse=Manage also values for minimum and desired stock per pairing (product-warehouse) in addition to values per product
IndependantSubProductStock=Product stock and subproduct stock are independent
QtyDispatched=ارسال كمية
QtyDispatchedShort=أرسل الكمية
@ -62,12 +64,14 @@ OrderDispatch=Item receipts
RuleForStockManagementDecrease=Choose Rule for automatic stock decrease (manual decrease is always possible, even if an automatic decrease rule is activated)
RuleForStockManagementIncrease=Choose Rule for automatic stock increase (manual increase is always possible, even if an automatic increase rule is activated)
DeStockOnBill=Decrease real stocks on validation of customer invoice/credit note
DeStockOnValidateOrder=Decrease real stocks on validation of customer order
DeStockOnValidateOrder=Decrease real stocks on validation of sales order
DeStockOnShipment=انخفاض أسهم حقيقي على التحقق من صحة الشحن
DeStockOnShipmentOnClosing=Decrease real stocks on shipping classification closed
ReStockOnBill=Increase real stocks on validation of supplier invoice/credit note
DeStockOnShipmentOnClosing=Decrease real stocks when shipping is set to closed
ReStockOnBill=Increase real stocks on validation of vendor invoice/credit note
ReStockOnValidateOrder=Increase real stocks on purchase order approval
ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouse, after supplier order receipt of goods
ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouse, after purchase order receipt of goods
StockOnReception=Increase real stocks on validation of reception
StockOnReceptionOnClosing=Increase real stocks when reception is set to closed
OrderStatusNotReadyToDispatch=أمر لم يتم بعد أو لا أكثر من ذلك الوضع الذي يسمح بإرسال من المنتجات في مخازن المخزون.
StockDiffPhysicTeoric=Explanation for difference between physical and virtual stock
NoPredefinedProductToDispatch=لا توجد منتجات محددة سلفا لهذا الكائن. لذلك لا إرسال في المخزون المطلوب.
@ -75,12 +79,12 @@ DispatchVerb=إيفاد
StockLimitShort=الحد الأقصى لتنبيه
StockLimit=حد الأسهم للتنبيه
StockLimitDesc=(empty) means no warning.<br>0 can be used for a warning as soon as stock is empty.
PhysicalStock=المخزون المادي
PhysicalStock=Physical Stock
RealStock=الحقيقية للاسهم
RealStockDesc=Physical or real stock is the stock you currently have into your internal warehouses/emplacements.
RealStockWillAutomaticallyWhen=The real stock will automatically change according to this rules (see stock module setup to change this):
RealStockDesc=Physical/real stock is the stock currently in the warehouses.
RealStockWillAutomaticallyWhen=The real stock will be modified according to this rule (as defined in the Stock module):
VirtualStock=الأسهم الافتراضية
VirtualStockDesc=Virtual stock is the stock you will get once all open pending actions that affect stocks will be closed (supplier order received, customer order shipped, ...)
VirtualStockDesc=Virtual stock is the calculated stock available once all open/pending actions (that affect stocks) are closed (purchase orders received, sales orders shipped etc.)
IdWarehouse=معرف مخزن
DescWareHouse=وصف المخزن
LieuWareHouse=المكان مخزن
@ -100,7 +104,7 @@ ThisWarehouseIsPersonalStock=هذا يمثل مستودع للطبيعة الش
SelectWarehouseForStockDecrease=اختيار مستودع لاستخدامها لانخفاض الأسهم
SelectWarehouseForStockIncrease=اختيار مستودع لاستخدامها لزيادة المخزون
NoStockAction=أي إجراء الأسهم
DesiredStock=Desired optimal stock
DesiredStock=Desired Stock
DesiredStockDesc=This stock amount will be the value used to fill the stock by replenishment feature.
StockToBuy=أن تأمر
Replenishment=التجديد
@ -113,13 +117,13 @@ CurentSelectionMode=وضع التحديد الحالي
CurentlyUsingVirtualStock=الأسهم الظاهري
CurentlyUsingPhysicalStock=المخزون المادي
RuleForStockReplenishment=حكم شراء أسهم التجديد
SelectProductWithNotNullQty=اختيار منتج واحد على الأقل مع الكمية غير فارغة ومورد
SelectProductWithNotNullQty=Select at least one product with a qty not null and a vendor
AlertOnly= التنبيهات فقط
WarehouseForStockDecrease=سيتم استخدام <b>مستودع٪ الصورة</b> لانخفاض الأسهم
WarehouseForStockIncrease=سيتم استخدام <b>مستودع٪ s للزيادة</b> المخزون
ForThisWarehouse=لهذا المستودع
ReplenishmentStatusDesc=هذه هي قائمة من جميع المنتجات مع مخزون أقل من الأسهم المطلوب (أو أقل من قيمة التنبيه إذا مربع "التنبيه فقط" يتم التحقق). باستخدام مربع، يمكنك إنشاء أوامر المورد لملء الفرق.
ReplenishmentOrdersDesc=This is a list of all open supplier orders including predefined products. Only open orders with predefined products, so orders that may affect stocks, are visible here.
ReplenishmentStatusDesc=This is a list of all products with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked). Using the checkbox, you can create purchase orders to fill the difference.
ReplenishmentOrdersDesc=This is a list of all open purchase orders including predefined products. Only open orders with predefined products, so orders that may affect stocks, are visible here.
Replenishments=التجديد
NbOfProductBeforePeriod=كمية من الناتج٪ الصورة في الأوراق المالية قبل الفترة المختارة (<٪ ق)
NbOfProductAfterPeriod=كمية من الناتج٪ الصورة في الأوراق المالية بعد الفترة المختارة (>٪ ق)
@ -143,11 +147,11 @@ ShowWarehouse=مشاهدة مستودع
MovementCorrectStock=تصحيح الأسهم للمنتج٪ الصورة
MovementTransferStock=نقل الأسهم من الناتج٪ الصورة إلى مستودع آخر
InventoryCodeShort=الجرد. / وسائل التحقق. رمز
NoPendingReceptionOnSupplierOrder=لا استقبال في انتظار المقرر أن يفتتح المورد أجل
NoPendingReceptionOnSupplierOrder=No pending reception due to open purchase order
ThisSerialAlreadyExistWithDifferentDate=هذا الكثير / الرقم التسلسلي <strong>(٪ ق)</strong> موجودة بالفعل ولكن مع eatby مختلفة أو تاريخ sellby <strong>(وجدت٪ الصورة</strong> ولكن قمت <strong>بإدخال%s).</strong>
OpenAll=Open for all actions
OpenInternal=Open only for internal actions
UseDispatchStatus=Use a dispatch status (approve/refuse) for product lines on supplier order reception
UseDispatchStatus=Use a dispatch status (approve/refuse) for product lines on purchase order reception
OptionMULTIPRICESIsOn=Option "several prices per segment" is on. It means a product has several selling price so value for sell can't be calculated
ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock correctly created
ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated
@ -171,16 +175,16 @@ inventoryValidate=التحقق من صحة
inventoryDraft=على التوالي
inventorySelectWarehouse=Warehouse choice
inventoryConfirmCreate=إنشاء
inventoryOfWarehouse=Inventory for warehouse : %s
inventoryErrorQtyAdd=Error : one quantity is less than zero
inventoryOfWarehouse=Inventory for warehouse: %s
inventoryErrorQtyAdd=Error: one quantity is less than zero
inventoryMvtStock=By inventory
inventoryWarningProductAlreadyExists=This product is already into list
SelectCategory=فئة فلتر
SelectFournisseur=Supplier filter
SelectFournisseur=Vendor filter
inventoryOnDate=Inventory
INVENTORY_DISABLE_VIRTUAL=Allow to not destock child product from a kit on inventory
INVENTORY_DISABLE_VIRTUAL=Virtual product (kit): do not decrement stock of a child product
INVENTORY_USE_MIN_PA_IF_NO_LAST_PA=Use the buy price if no last buy price can be found
INVENTORY_USE_INVENTORY_DATE_FROM_DATEMVT=Stock movement have date of inventory
INVENTORY_USE_INVENTORY_DATE_FROM_DATEMVT=Stock movement has date of inventory
inventoryChangePMPPermission=Allow to change PMP value for a product
ColumnNewPMP=New unit PMP
OnlyProdsInStock=Do not add product without stock
@ -202,7 +206,7 @@ inventoryDeleteLine=حذف الخط
RegulateStock=Regulate Stock
ListInventory=قائمة
StockSupportServices=Stock management supports Services
StockSupportServicesDesc=By default, you can stock only product with type "product". If on, and if module service is on, you can also stock a product with type "service"
StockSupportServicesDesc=By default, you can stock only products of type "product". You may also stock a product of type "service" if both module Services and this option are enabled.
ReceiveProducts=Receive items
StockIncreaseAfterCorrectTransfer=Increase by correction/transfer
StockDecreaseAfterCorrectTransfer=Decrease by correction/transfer

View File

@ -0,0 +1,294 @@
# en_US lang file for module ticket
# Copyright (C) 2013 Jean-François FERRY <hello@librethic.io>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Generic
#
Module56000Name=Tickets
Module56000Desc=Ticket system for issue or request management
Permission56001=See tickets
Permission56002=Modify tickets
Permission56003=Delete tickets
Permission56004=Manage tickets
Permission56005=See tickets of all third parties (not effective for external users, always be limited to the third party they depend on)
TicketDictType=Ticket - Types
TicketDictCategory=Ticket - Groupes
TicketDictSeverity=Ticket - Severities
TicketTypeShortBUGSOFT=Dysfonctionnement logiciel
TicketTypeShortBUGHARD=Dysfonctionnement matériel
TicketTypeShortCOM=Commercial question
TicketTypeShortINCIDENT=Request for assistance
TicketTypeShortPROJET=المشروع
TicketTypeShortOTHER=الآخر
TicketSeverityShortLOW=منخفض
TicketSeverityShortNORMAL=Normal
TicketSeverityShortHIGH=عال
TicketSeverityShortBLOCKING=Critical/Blocking
ErrorBadEmailAddress=Field '%s' incorrect
MenuTicketMyAssign=My tickets
MenuTicketMyAssignNonClosed=My open tickets
MenuListNonClosed=Open tickets
TypeContact_ticket_internal_CONTRIBUTOR=مساهم
TypeContact_ticket_internal_SUPPORTTEC=Assigned user
TypeContact_ticket_external_SUPPORTCLI=Customer contact / incident tracking
TypeContact_ticket_external_CONTRIBUTOR=External contributor
OriginEmail=Email source
Notify_TICKET_SENTBYMAIL=Send ticket message by email
# Status
NotRead=Not read
Read=قرأ
Assigned=Assigned
InProgress=In progress
NeedMoreInformation=Waiting for information
Answered=Answered
Waiting=انتظار
Closed=مغلق
Deleted=Deleted
# Dict
Type=اكتب
Category=Analytic code
Severity=Severity
# Email templates
MailToSendTicketMessage=To send email from ticket message
#
# Admin page
#
TicketSetup=Ticket module setup
TicketSettings=Settings
TicketSetupPage=
TicketPublicAccess=A public interface requiring no identification is available at the following url
TicketSetupDictionaries=The type of ticket, severity and analytic codes are configurable from dictionaries
TicketParamModule=Module variable setup
TicketParamMail=Email setup
TicketEmailNotificationFrom=Notification email from
TicketEmailNotificationFromHelp=Used into ticket message answer by example
TicketEmailNotificationTo=Notifications email to
TicketEmailNotificationToHelp=Send email notifications to this address.
TicketNewEmailBodyLabel=Text message sent after creating a ticket
TicketNewEmailBodyHelp=The text specified here will be inserted into the email confirming the creation of a new ticket from the public interface. Information on the consultation of the ticket are automatically added.
TicketParamPublicInterface=Public interface setup
TicketsEmailMustExist=Require an existing email address to create a ticket
TicketsEmailMustExistHelp=In the public interface, the email address should already be filled in the database to create a new ticket.
PublicInterface=Public interface
TicketUrlPublicInterfaceLabelAdmin=Alternative URL for public interface
TicketUrlPublicInterfaceHelpAdmin=It is possible to define an alias to the web server and thus make available the public interface with another URL (the server must act as a proxy on this new URL)
TicketPublicInterfaceTextHomeLabelAdmin=Welcome text of the public interface
TicketPublicInterfaceTextHome=You can create a support ticket or view existing from its identifier tracking ticket.
TicketPublicInterfaceTextHomeHelpAdmin=The text defined here will appear on the home page of the public interface.
TicketPublicInterfaceTopicLabelAdmin=Interface title
TicketPublicInterfaceTopicHelp=This text will appear as the title of the public interface.
TicketPublicInterfaceTextHelpMessageLabelAdmin=Help text to the message entry
TicketPublicInterfaceTextHelpMessageHelpAdmin=This text will appear above the message input area of the user.
ExtraFieldsTicket=Extra attributes
TicketCkEditorEmailNotActivated=HTML editor is not activated. Please put FCKEDITOR_ENABLE_MAIL content to 1 to get it.
TicketsDisableEmail=Do not send emails for ticket creation or message recording
TicketsDisableEmailHelp=By default, emails are sent when new tickets or messages created. Enable this option to disable *all* email notifications
TicketsLogEnableEmail=Enable log by email
TicketsLogEnableEmailHelp=At each change, an email will be sent **to each contact** associated with the ticket.
TicketParams=Params
TicketsShowModuleLogo=Display the logo of the module in the public interface
TicketsShowModuleLogoHelp=Enable this option to hide the logo module in the pages of the public interface
TicketsShowCompanyLogo=Display the logo of the company in the public interface
TicketsShowCompanyLogoHelp=Enable this option to hide the logo of the main company in the pages of the public interface
TicketsEmailAlsoSendToMainAddress=Also send notification to main email address
TicketsEmailAlsoSendToMainAddressHelp=Enable this option to send an email to "Notification email from" address (see setup below)
TicketsLimitViewAssignedOnly=Restrict the display to tickets assigned to the current user (not effective for external users, always be limited to the third party they depend on)
TicketsLimitViewAssignedOnlyHelp=Only tickets assigned to the current user will be visible. Does not apply to a user with tickets management rights.
TicketsActivatePublicInterface=Activate public interface
TicketsActivatePublicInterfaceHelp=Public interface allow any visitors to create tickets.
TicketsAutoAssignTicket=Automatically assign the user who created the ticket
TicketsAutoAssignTicketHelp=When creating a ticket, the user can be automatically assigned to the ticket.
TicketNumberingModules=Tickets numbering module
TicketNotifyTiersAtCreation=Notify third party at creation
TicketGroup=مجموعة
TicketsDisableCustomerEmail=Always disable emails when a ticket is created from public interface
#
# Index & list page
#
TicketsIndex=Ticket - home
TicketList=List of tickets
TicketAssignedToMeInfos=This page display ticket list created by or assigned to current user
NoTicketsFound=No ticket found
NoUnreadTicketsFound=No unread ticket found
TicketViewAllTickets=View all tickets
TicketViewNonClosedOnly=View only open tickets
TicketStatByStatus=Tickets by status
#
# Ticket card
#
Ticket=Ticket
TicketCard=Ticket card
CreateTicket=Create ticket
EditTicket=Edit ticket
TicketsManagement=Tickets Management
CreatedBy=Created by
NewTicket=New Ticket
SubjectAnswerToTicket=Ticket answer
TicketTypeRequest=Request type
TicketCategory=Analytic code
SeeTicket=See ticket
TicketMarkedAsRead=Ticket has been marked as read
TicketReadOn=Read on
TicketCloseOn=الموعد النهائي
MarkAsRead=Mark ticket as read
TicketHistory=Ticket history
AssignUser=Assign to user
TicketAssigned=Ticket is now assigned
TicketChangeType=Change type
TicketChangeCategory=Change analytic code
TicketChangeSeverity=Change severity
TicketAddMessage=Add a message
AddMessage=Add a message
MessageSuccessfullyAdded=Ticket added
TicketMessageSuccessfullyAdded=Message successfully added
TicketMessagesList=Message list
NoMsgForThisTicket=No message for this ticket
Properties=Classification
LatestNewTickets=Latest %s newest tickets (not read)
TicketSeverity=Severity
ShowTicket=See ticket
RelatedTickets=Related tickets
TicketAddIntervention=إنشاء التدخل
CloseTicket=Close ticket
CloseATicket=Close a ticket
ConfirmCloseAticket=Confirm ticket closing
ConfirmDeleteTicket=Please confirm ticket deleting
TicketDeletedSuccess=Ticket deleted with success
TicketMarkedAsClosed=Ticket marked as closed
TicketDurationAuto=Calculated duration
TicketDurationAutoInfos=Duration calculated automatically from intervention related
TicketUpdated=Ticket updated
SendMessageByEmail=Send message by email
TicketNewMessage=New message
ErrorMailRecipientIsEmptyForSendTicketMessage=Recipient is empty. No email send
TicketGoIntoContactTab=Please go into "Contacts" tab to select them
TicketMessageMailIntro=Introduction
TicketMessageMailIntroHelp=This text is added only at the beginning of the email and will not be saved.
TicketMessageMailIntroLabelAdmin=Introduction to the message when sending email
TicketMessageMailIntroText=Hello,<br>A new response was sent on a ticket that you contact. Here is the message:<br>
TicketMessageMailIntroHelpAdmin=This text will be inserted before the text of the response to a ticket.
TicketMessageMailSignature=التوقيع
TicketMessageMailSignatureHelp=This text is added only at the end of the email and will not be saved.
TicketMessageMailSignatureText=<p>Sincerely,</p><p>--</p>
TicketMessageMailSignatureLabelAdmin=Signature of response email
TicketMessageMailSignatureHelpAdmin=This text will be inserted after the response message.
TicketMessageHelp=Only this text will be saved in the message list on ticket card.
TicketMessageSubstitutionReplacedByGenericValues=Substitutions variables are replaced by generic values.
TimeElapsedSince=Time elapsed since
TicketTimeToRead=Time elapsed before read
TicketContacts=Contacts ticket
TicketDocumentsLinked=Documents linked to ticket
ConfirmReOpenTicket=Confirm reopen this ticket ?
TicketMessageMailIntroAutoNewPublicMessage=A new message was posted on the ticket with the subject %s:
TicketAssignedToYou=Ticket assigned
TicketAssignedEmailBody=You have been assigned the ticket #%s by %s
MarkMessageAsPrivate=Mark message as private
TicketMessagePrivateHelp=This message will not display to external users
TicketEmailOriginIssuer=Issuer at origin of the tickets
InitialMessage=Initial Message
LinkToAContract=Link to a contract
TicketPleaseSelectAContract=Select a contract
UnableToCreateInterIfNoSocid=Can not create an intervention when no third party is defined
TicketMailExchanges=Mail exchanges
TicketInitialMessageModified=Initial message modified
TicketMessageSuccesfullyUpdated=Message successfully updated
TicketChangeStatus=Change status
TicketConfirmChangeStatus=Confirm the status change: %s ?
TicketLogStatusChanged=Status changed: %s to %s
TicketNotNotifyTiersAtCreate=Not notify company at create
Unread=Unread
#
# Logs
#
TicketLogMesgReadBy=Ticket %s read by %s
NoLogForThisTicket=No log for this ticket yet
TicketLogAssignedTo=Ticket %s assigned to %s
TicketLogPropertyChanged=Ticket %s modified: classification from %s to %s
TicketLogClosedBy=Ticket %s closed by %s
TicketLogReopen=Ticket %s re-opened
#
# Public pages
#
TicketSystem=Ticket system
ShowListTicketWithTrackId=Display ticket list from track ID
ShowTicketWithTrackId=Display ticket from track ID
TicketPublicDesc=You can create a support ticket or check from an existing ID.
YourTicketSuccessfullySaved=Ticket has been successfully saved!
MesgInfosPublicTicketCreatedWithTrackId=A new ticket has been created with ID %s.
PleaseRememberThisId=Please keep the tracking number that we might ask you later.
TicketNewEmailSubject=Ticket creation confirmation
TicketNewEmailSubjectCustomer=New support ticket
TicketNewEmailBody=This is an automatic email to confirm you have registered a new ticket.
TicketNewEmailBodyCustomer=This is an automatic email to confirm a new ticket has just been created into your account.
TicketNewEmailBodyInfosTicket=Information for monitoring the ticket
TicketNewEmailBodyInfosTrackId=Ticket tracking number: %s
TicketNewEmailBodyInfosTrackUrl=You can view the progress of the ticket by clicking the link above.
TicketNewEmailBodyInfosTrackUrlCustomer=You can view the progress of the ticket in the specific interface by clicking the following link
TicketEmailPleaseDoNotReplyToThisEmail=Please do not reply directly to this email! Use the link to reply into the interface.
TicketPublicInfoCreateTicket=This form allows you to record a support ticket in our management system.
TicketPublicPleaseBeAccuratelyDescribe=Please accurately describe the problem. Provide the most information possible to allow us to correctly identify your request.
TicketPublicMsgViewLogIn=Please enter ticket tracking ID
TicketTrackId=Public Tracking ID
OneOfTicketTrackId=One of your tracking ID
ErrorTicketNotFound=Ticket with tracking ID %s not found!
Subject=الموضوع
ViewTicket=View ticket
ViewMyTicketList=View my ticket list
ErrorEmailMustExistToCreateTicket=Error: email address not found in our database
TicketNewEmailSubjectAdmin=New ticket created
TicketNewEmailBodyAdmin=<p>Ticket has just been created with ID #%s, see information:</p>
SeeThisTicketIntomanagementInterface=See ticket in management interface
TicketPublicInterfaceForbidden=The public interface for the tickets was not enabled
ErrorEmailOrTrackingInvalid=Bad value for tracking ID or email
OldUser=Old user
NewUser=مستخدم جديد
NumberOfTicketsByMonth=Number of tickets per month
NbOfTickets=Number of tickets
# notifications
TicketNotificationEmailSubject=Ticket %s updated
TicketNotificationEmailBody=This is an automatic message to notify you that ticket %s has just been updated
TicketNotificationRecipient=Notification recipient
TicketNotificationLogMessage=Log message
TicketNotificationEmailBodyInfosTrackUrlinternal=View ticket into interface
TicketNotificationNumberEmailSent=Notification email sent: %s
ActionsOnTicket=Events on ticket
#
# Boxes
#
BoxLastTicket=Latest created tickets
BoxLastTicketDescription=Latest %s created tickets
BoxLastTicketContent=
BoxLastTicketNoRecordedTickets=No recent unread tickets
BoxLastModifiedTicket=Latest modified tickets
BoxLastModifiedTicketDescription=Latest %s modified tickets
BoxLastModifiedTicketContent=
BoxLastModifiedTicketNoRecordedTickets=No recent modified tickets

View File

@ -101,3 +101,5 @@ NotAllowedToAddDynamicContent=You don't have permission to add or edit PHP dynam
ReplaceWebsiteContent=Replace website content
DeleteAlsoJs=Delete also all javascript files specific to this website?
DeleteAlsoMedias=Delete also all medias files specific to this website?
# Export
MyWebsitePages=My website pages

View File

@ -12,21 +12,21 @@ WithdrawalsLines=Direct debit order lines
RequestStandingOrderToTreat=Request for direct debit payment order to process
RequestStandingOrderTreated=Request for direct debit payment order processed
NotPossibleForThisStatusOfWithdrawReceiptORLine=لم يكن ممكنا حتى الآن. سحب يجب أن يتم تعيين الحالة إلى "الفضل" قبل أن يعلن رفض على خطوط محددة.
NbOfInvoiceToWithdraw=Nb. of qualified invoice with waiting direct debit order
NbOfInvoiceToWithdrawWithInfo=Nb. of customer invoice with direct debit payment orders having defined bank account information
NbOfInvoiceToWithdraw=No. of qualified invoice with waiting direct debit order
NbOfInvoiceToWithdrawWithInfo=No. of customer invoice with direct debit payment orders having defined bank account information
InvoiceWaitingWithdraw=Invoice waiting for direct debit
AmountToWithdraw=سحب المبلغ
WithdrawsRefused=Direct debit refused
NoInvoiceToWithdraw=No customer invoice with open 'Direct debit requests' is waiting. Go on tab '%s' on invoice card to make a request.
ResponsibleUser=مسؤولة المستخدم
ResponsibleUser=User Responsible
WithdrawalsSetup=Direct debit payment setup
WithdrawStatistics=Direct debit payment statistics
WithdrawRejectStatistics=Direct debit payment reject statistics
LastWithdrawalReceipt=Latest %s direct debit receipts
MakeWithdrawRequest=Make a direct debit payment request
WithdrawRequestsDone=%s direct debit payment requests recorded
ThirdPartyBankCode=طرف ثالث بنك مدونة
NoInvoiceCouldBeWithdrawed=No invoice withdrawed with success. Check that invoices are on companies with a valid default BAN and that BAN has a RUM with mode <strong>%s</strong>.
ThirdPartyBankCode=Third-party bank code
NoInvoiceCouldBeWithdrawed=No invoice debited successfully. Check that invoices are on companies with a valid IBAN and that IBAN has a UMR (Unique Mandate Reference) with mode <strong>%s</strong>.
ClassCredited=تصنيف حساب
ClassCreditedConfirm=هل أنت متأكد من أن يصنف هذا الانسحاب كما تلقي على حساب حسابك المصرفي؟
TransData=تاريخ الإرسال
@ -50,7 +50,7 @@ StatusMotif0=غير محدد
StatusMotif1=توفير insuffisante
StatusMotif2=Tirage conteste
StatusMotif3=No direct debit payment order
StatusMotif4=طلب العملاء
StatusMotif4=Sales Order
StatusMotif5=الضلع inexploitable
StatusMotif6=حساب بدون رصيد
StatusMotif7=قرار قضائي
@ -66,11 +66,11 @@ NotifyCredit=انسحاب الائتمان
NumeroNationalEmetter=رقم المرسل وطنية
WithBankUsingRIB=عن الحسابات المصرفية باستخدام RIB
WithBankUsingBANBIC=عن الحسابات المصرفية باستخدام IBAN / BIC / SWIFT
BankToReceiveWithdraw=Bank account to receive direct debit
BankToReceiveWithdraw=Receiving Bank Account
CreditDate=الائتمان على
WithdrawalFileNotCapable=غير قادر على توليد ملف استلام الانسحاب لبلدكم٪ الصورة (لا يتم اعتماد البلد)
ShowWithdraw=وتظهر سحب
IfInvoiceNeedOnWithdrawPaymentWontBeClosed=ومع ذلك، إذا فاتورة واحدة على الأقل دفع انسحاب لا تتم معالجتها حتى الآن، فإنه لن يكون كما سيولي للسماح لإدارة الانسحاب قبل.
ShowWithdraw=Show Direct Debit Order
IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one direct debit payment order not yet processed, it won't be set as paid to allow prior withdrawal management.
DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Direct Debit orders to manage the direct debit payment order. When payment order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null.
WithdrawalFile=ملف الانسحاب
SetToStatusSent=تعيين إلى حالة "المرسلة ملف"
@ -78,7 +78,7 @@ ThisWillAlsoAddPaymentOnInvoice=This will also record payments to invoices and w
StatisticsByLineStatus=إحصاءات عن طريق وضع خطوط
RUM=UMR
RUMLong=Unique Mandate Reference
RUMWillBeGenerated=If empty, UMR number will be generated once bank account information are saved
RUMWillBeGenerated=If empty, a UMR (Unique Mandate Reference) will be generated once the bank account information is saved.
WithdrawMode=Direct debit mode (FRST or RECUR)
WithdrawRequestAmount=Amount of Direct debit request:
WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty amount.
@ -87,13 +87,13 @@ SepaMandateShort=SEPA Mandate
PleaseReturnMandate=Please return this mandate form by email to %s or by mail to
SEPALegalText=By signing this mandate form, you authorize (A) %s to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with the instructions from %s. As part of your rights, you are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. A refund must be claimed within 8 weeks starting from the date on which your account was debited. Your rights regarding the above mandate are explained in a statement that you can obtain from your bank.
CreditorIdentifier=Creditor Identifier
CreditorName=Creditors Name
CreditorName=Creditor Name
SEPAFillForm=(B) Please complete all the fields marked *
SEPAFormYourName=Your name
SEPAFormYourBAN=Your Bank Account Name (IBAN)
SEPAFormYourBIC=Your Bank Identifier Code (BIC)
SEPAFrstOrRecur=Type of payment
ModeRECUR=Reccurent payment
ModeRECUR=Recurring payment
ModeFRST=One-off payment
PleaseCheckOne=Please check one only
DirectDebitOrderCreated=Direct debit order %s created
@ -102,6 +102,10 @@ SEPARCUR=SEPA CUR
SEPAFRST=SEPA FRST
ExecutionDate=Execution date
CreateForSepa=Create direct debit file
ICS=Creditor Identifier CI
END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction
USTRD="Unstructured" SEPA XML tag
ADDDAYS=Add days to Execution Date
### Notifications
InfoCreditSubject=Payment of direct debit payment order %s by the bank

View File

@ -216,7 +216,8 @@ DescThirdPartyReport=Консултирайте се тук със списък
ListAccounts=List of the accounting accounts
UnknownAccountForThirdparty=Неизвестен профил на контрагента. Ще използваме %s
UnknownAccountForThirdpartyBlocking=Неизвестен профил на контрагента. Блокираща грешка
ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Third-party account not defined or third party unknown. Blocking error.
ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Third-party account not defined or third party unknown. We will use %s
ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Third-party account not defined or third party unknown. Blocking error.
UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Неизвестен профил на контрагента и чакаща сметка не са определени. Блокираща грешка
PaymentsNotLinkedToProduct=Payment not linked to any product / service
@ -291,7 +292,7 @@ Modelcsv_cogilog=Export for Cogilog
Modelcsv_agiris=Export for Agiris
Modelcsv_openconcerto=Export for OpenConcerto (Test)
Modelcsv_configurable=Export CSV Configurable
Modelcsv_FEC=Export FEC (Art. L47 A)
Modelcsv_FEC=Export FEC
Modelcsv_Sage50_Swiss=Export for Sage 50 Switzerland
ChartofaccountsId=Chart of accounts Id
@ -316,6 +317,9 @@ WithoutValidAccount=Without valid dedicated account
WithValidAccount=With valid dedicated account
ValueNotIntoChartOfAccount=This value of accounting account does not exist into chart of account
AccountRemovedFromGroup=Account removed from group
SaleLocal=Local sale
SaleExport=Export sale
SaleEEC=Sale in EEC
## Dictionary
Range=Range of accounting account
@ -336,7 +340,7 @@ UseMenuToSetBindindManualy=Lines not yet bound, use menu <a href="%s">%s</a> to
## Import
ImportAccountingEntries=Accounting entries
DateExport=Date export
WarningReportNotReliable=Warning, this report is not based on the Ledger, so does not contains transaction modified manually in the Ledger. If your journalization is up to date, the bookkeeping view is more accurate.
ExpenseReportJournal=Expense Report Journal
InventoryJournal=Inventory Journal

View File

@ -149,7 +149,7 @@ SystemToolsAreaDesc=Тази секция осигурява администр
Purge=Изчистване
PurgeAreaDesc=Тази страница ви позволява да изтриете всички файлове, генерирани или съхранени от Dolibarr (временни файлове или всички файлове в директорията <b>%s</b>). Използването на тази функция обикновено не е необходимо. Той се предоставя като решение за потребители, чиито Dolibarr се хоства от доставчик, който не предлага разрешения за изтриване на файлове, генерирани от уеб сървъра.
PurgeDeleteLogFile=Изтриване на лог файлове, включително <b>%s</b> генериран от Debug Logs модула (няма риск от загуба на данни)
PurgeDeleteTemporaryFiles=Изтриване на всички временни файлове (няма риск от загуба на данни)
PurgeDeleteTemporaryFiles=Delete all temporary files (no risk of losing data). Note: Deletion is done only if the temp directory was created 24 hours ago.
PurgeDeleteTemporaryFilesShort=Изтриване на временни файлове
PurgeDeleteAllFilesInDocumentsDir=Изтриване на всички файлове в директорията: <b>%s</b>.<br>Това ще изтрие всички генерирани документи, свързани с елементи (контрагенти, фактури и т.н.), файлове, качени чрез ECM модула, архиви на базата данни и временни файлове.
PurgeRunNow=Изчистване сега
@ -804,6 +804,7 @@ Permission401=Прочети отстъпки
Permission402=Създаване / промяна на отстъпки
Permission403=Проверка на отстъпки
Permission404=Изтриване на отстъпки
Permission430=Use Debug Bar
Permission511=Преглед на плащания на заплати
Permission512=Създаване / редактиране на плащания на заплати
Permission514=Изтриване на плащания на заплати
@ -818,6 +819,9 @@ Permission532=Създаване / промяна услуги
Permission534=Изтриване на услуги
Permission536=Вижте / управление скрити услуги
Permission538=Износ услуги
Permission650=Read bom of Bom
Permission651=Create/Update bom of Bom
Permission652=Delete bom of Bom
Permission701=Прочети дарения
Permission702=Създаване / промяна на дарения
Permission703=Изтриване на дарения
@ -837,6 +841,12 @@ Permission1101=Поръчките за доставка
Permission1102=Създаване / промяна на поръчките за доставка
Permission1104=Проверка на поръчките за доставка
Permission1109=Изтриване на поръчките за доставка
Permission1121=Read supplier proposals
Permission1122=Create/modify supplier proposals
Permission1123=Validate supplier proposals
Permission1124=Send supplier proposals
Permission1125=Delete supplier proposals
Permission1126=Close supplier price requests
Permission1181=Прочети доставчици
Permission1182=Преглед на поръчки за покупка
Permission1183=Създаване / редактиране на поръчки за покупка
@ -859,16 +869,6 @@ Permission1251=Пусни масов внос на външни данни в б
Permission1321=Износ на клиентите фактури, атрибути и плащания
Permission1322=Повторно отваряне на платена фактура
Permission1421=Експортиране на поръчки за продажба и атрибути
Permission20001=Преглед на молби за отпуск (на служителя и неговите подчинени)
Permission20002=Създаване / редактиране на молби за отпуск (на служителя и неговите подчинени)
Permission20003=Delete leave requests
Permission20004=Преглед на всички молби за отпуск (дори на служители които не са подчинени на служителя)
Permission20005=Създаване / редактиране на всички молби за отпуск (дори на служители, които не са подчинени на служителя)
Permission20006=Admin leave requests (setup and update balance)
Permission23001=Read Scheduled job
Permission23002=Create/update Scheduled job
Permission23003=Delete Scheduled job
Permission23004=Execute Scheduled job
Permission2401=Прочетете действия (събития или задачи), свързани с неговата сметка
Permission2402=Създаване/промяна действия (събития или задачи), свързани с неговата сметка
Permission2403=Изтрий действия (събития или задачи), свързани с неговата сметка
@ -882,9 +882,41 @@ Permission2503=Изпращане или изтриване на докумен
Permission2515=Setup документи директории
Permission2801=Използвайте FTP клиент в режим на четене (да преглеждате и сваляте само)
Permission2802=Използвайте FTP клиент в режим на запис (изтриване или качване на файлове)
Permission3200=Read archived events and fingerprints
Permission4001=See employees
Permission4002=Create employees
Permission4003=Delete employees
Permission4004=Export employees
Permission10001=Read website content
Permission10002=Create/modify website content (html and javascript content)
Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers.
Permission10005=Delete website content
Permission20001=Преглед на молби за отпуск (на служителя и неговите подчинени)
Permission20002=Създаване / редактиране на молби за отпуск (на служителя и неговите подчинени)
Permission20003=Delete leave requests
Permission20004=Преглед на всички молби за отпуск (дори на служители които не са подчинени на служителя)
Permission20005=Създаване / редактиране на всички молби за отпуск (дори на служители, които не са подчинени на служителя)
Permission20006=Admin leave requests (setup and update balance)
Permission23001=Read Scheduled job
Permission23002=Create/update Scheduled job
Permission23003=Delete Scheduled job
Permission23004=Execute Scheduled job
Permission50101=Използване на точка на продажба
Permission50201=Прочети сделки
Permission50202=Сделки на внос
Permission50401=Bind products and invoices with accounting accounts
Permission50411=Read operations in ledger
Permission50412=Write/Edit operations in ledger
Permission50414=Delete operations in ledger
Permission50415=Delete all operations by year and journal in ledger
Permission50418=Export operations of the ledger
Permission50420=Report and export reports (turnover, balance, journals, ledger)
Permission50430=Define and close a fiscal year
Permission50440=Manage chart of accounts, setup of accountancy
Permission51001=Read assets
Permission51002=Create/Update assets
Permission51003=Delete assets
Permission51005=Setup types of asset
Permission54001=Print
Permission55001=Read polls
Permission55002=Create/modify polls
@ -1078,7 +1110,7 @@ AreaForAdminOnly=Параметрите за настройка могат да
SystemInfoDesc=Информационна система Разни техническа информация можете да получите в режим само за четене и видими само за администратори.
SystemAreaForAdminOnly=Тази секция е достъпна само за администратори. Потребителските права в Dolibarr не могат да променят това ограничение.
CompanyFundationDesc=Редактирайте информацията за фирма / организация като кликнете върху бутона '%s' или '%s' в долната част на страницата.
AccountantDesc=Редактирайте данните на вашия счетоводител / одитор
AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information.
AccountantFileNumber=Счетоводен код
DisplayDesc=Тук могат да се променят параметрите, които влияят на външния вид и поведението на Dolibarr.
AvailableModules=Налични приложения / модули
@ -1891,3 +1923,5 @@ IFTTTDesc=Този модул е предназначен да задейств
UrlForIFTTT=URL адрес за IFTTT
YouWillFindItOnYourIFTTTAccount=Ще го намерите във вашият IFTTT акаунт
EndPointFor=Крайна точка за %s: %s
DeleteEmailCollector=Delete email collector
ConfirmDeleteEmailCollector=Are you sure you want to delete this email collectore?

View File

@ -0,0 +1,65 @@
# Copyright (C) 2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Generic
#
Assets = Активи
NewAsset = Нов актив
AccountancyCodeAsset = Счетоводен код (актив)
AccountancyCodeDepreciationAsset = Счетоводен код (сметка за амортизационни активи)
AccountancyCodeDepreciationExpense = Счетоводен код (сметка за амортизационни разходи)
NewAssetType=Нов вид актив
AssetsTypeSetup=Настройка на тип активи
AssetTypeModified=Видът на актива е променен
AssetType=Вид актив
AssetsLines=Активи
DeleteType=Изтриване
DeleteAnAssetType=Изтриване на вид актив
ConfirmDeleteAssetType=Сигурни ли сте, че искате да изтриете този вид актив?
ShowTypeCard=Показване на вид '%s'
# Module label 'ModuleAssetsName'
ModuleAssetsName = Активи
# Module description 'ModuleAssetsDesc'
ModuleAssetsDesc = Описание на активи
#
# Admin page
#
AssetsSetup = Настройка на активи
Settings = Настройки
AssetsSetupPage = Страница за настройка на активите
ExtraFieldsAssetsType = Допълнителни атрибути (Вид на актива)
AssetsType=Вид актив
AssetsTypeId=№ на актива
AssetsTypeLabel=Вид актив етикет
AssetsTypes=Видове активи
#
# Menu
#
MenuAssets = Активи
MenuNewAsset = Нов Актив
MenuTypeAssets = Вид активи
MenuListAssets = Списък
MenuNewTypeAssets = Нов
MenuListTypeAssets = Списък
#
# Module
#
NewAssetType=Нов вид актив
NewAsset=Нов актив

View File

@ -100,7 +100,7 @@ NotReconciled=Не е съгласувано
CustomerInvoicePayment=Клиентско плащане
SupplierInvoicePayment=Плащане на доставчик
SubscriptionPayment=Плащане на членски внос
WithdrawalPayment=Оттегляне плащане
WithdrawalPayment=Платежно нареждане за дебит
SocialContributionPayment=Social/fiscal tax payment
BankTransfer=Банков превод
BankTransfers=Банкови преводи

View File

@ -263,7 +263,7 @@ Repeatables=Шаблони
ChangeIntoRepeatableInvoice=Превърни в шаблон за фактура
CreateRepeatableInvoice=Създай шаблон за фактура
CreateFromRepeatableInvoice=Създай от шаблон за фактура
CustomersInvoicesAndInvoiceLines=Фактури за продажба и техните детайли
CustomersInvoicesAndInvoiceLines=Фактури клиенти и техните детайли
CustomersInvoicesAndPayments=Продажни фактури и плащания
ExportDataset_invoice_1=Фактури за продажба и техните детайли
ExportDataset_invoice_2=Продажни фактури и плащания

View File

@ -0,0 +1,54 @@
BlockedLog=Unalterable Logs
Field=Област
BlockedLogDesc=This module tracks some events into an unalterable log (that you can't modify once recorded) into a block chain, in real time. This module provides compatibility with requirements of laws of some countries (like France with the law Finance 2016 - Norme NF525).
Fingerprints=Archived events and fingerprints
FingerprintsDesc=This is the tool to browse or extract the unalterable logs. Unalterable logs are generated and archived locally into a dedicated table, in real time when you record a business event. You can use this tool to export this archive and save it into an external support (some countries, like France, ask that you do it every year). Note that, there is no feature to purge this log and every change tried to be done directly into this log (by a hacker for example) will be reported with a non-valid fingerprint. If you really need to purge this table because you used your application for a demo/test purpose and want to clean your data to start your production, you can ask your reseller or integrator to reset your database (all your data will be removed).
CompanyInitialKey=Company initial key (hash of genesis block)
BrowseBlockedLog=Unalterable logs
ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long)
ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long)
DownloadBlockChain=Download fingerprints
KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this re after it was recorded, or has erased the previous archived record (check that line with previous # exists).
OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one.
OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously.
AddedByAuthority=Stored into remote authority
NotAddedByAuthorityYet=Not yet stored into remote authority
ShowDetails=Show stored details
logPAYMENT_VARIOUS_CREATE=Payment (not assigned to an invoice) created
logPAYMENT_VARIOUS_MODIFY=Payment (not assigned to an invoice) modified
logPAYMENT_VARIOUS_DELETE=Payment (not assigned to an invoice) logical deletion
logPAYMENT_ADD_TO_BANK=Payment added to bank
logPAYMENT_CUSTOMER_CREATE=Customer payment created
logPAYMENT_CUSTOMER_DELETE=Customer payment logical deletion
logDONATION_PAYMENT_CREATE=Donation payment created
logDONATION_PAYMENT_DELETE=Donation payment logical deletion
logBILL_PAYED=Клиентската фактура е платена
logBILL_UNPAYED=Customer invoice set unpaid
logBILL_VALIDATE=Продажната фактура е валидирана
logBILL_SENTBYMAIL=Customer invoice send by mail
logBILL_DELETE=Customer invoice logically deleted
logMODULE_RESET=Module BlockedLog was disabled
logMODULE_SET=Module BlockedLog was enabled
logDON_VALIDATE=Donation validated
logDON_MODIFY=Donation modified
logDON_DELETE=Donation logical deletion
logMEMBER_SUBSCRIPTION_CREATE=Member subscription created
logMEMBER_SUBSCRIPTION_MODIFY=Member subscription modified
logMEMBER_SUBSCRIPTION_DELETE=Member subscription logical deletion
logCASHCONTROL_VALIDATE=Cash fence recording
BlockedLogBillDownload=Customer invoice download
BlockedLogBillPreview=Customer invoice preview
BlockedlogInfoDialog=Log Details
ListOfTrackedEvents=List of tracked events
Fingerprint=Fingerprint
DownloadLogCSV=Export archived logs (CSV)
logDOC_PREVIEW=Preview of a validated document in order to print or download
logDOC_DOWNLOAD=Download of a validated document in order to print or send
DataOfArchivedEvent=Full datas of archived event
ImpossibleToReloadObject=Original object (type %s, id %s) not linked (see 'Full datas' column to get unalterable saved data)
BlockedLogAreRequiredByYourCountryLegislation=Unalterable Logs module may be required by the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they can not be validated by a tax audit.
BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Unalterable Logs module was activated because of the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they cannot be validated by a tax audit.
BlockedLogDisableNotAllowedForCountry=List of countries where usage of this module is mandatory (just to prevent to disable the module by error, if your country is in this list, disable of module is not possible without editing this list first. Note also that enabling/disabling this module will keep a track into the unalterable log).
OnlyNonValid=Non-valid
TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters.
RestrictYearToExport=Restrict month / year to export

View File

@ -35,7 +35,7 @@ BoxTitleOldestUnpaidCustomerBills=Фактури за продажба: %s на
BoxTitleOldestUnpaidSupplierBills=Фактури за доставка: %s най-стари неплатени
BoxTitleCurrentAccounts=Отворени сметки: баланси
BoxTitleLastModifiedContacts=Контакти / Адреси: %s последно променени
BoxMyLastBookmarks=Bookmarks: latest %s
BoxMyLastBookmarks=Отметки: %s последни
BoxOldestExpiredServices=Най-старите действащи изтекли услуги
BoxLastExpiredServices=Договори: %s най-стари договори с активни изтичащи услуги
BoxTitleLastActionsToDo=Действия за извършване: %s последни
@ -65,7 +65,7 @@ NoRecordedContracts=Няма регистрирани договори
NoRecordedInterventions=Няма записани намеси
BoxLatestSupplierOrders=Последни поръчки за покупка
NoSupplierOrder=Няма регистрирани поръчка за покупка
BoxCustomersInvoicesPerMonth=Фактури за продажба на месец
BoxCustomersInvoicesPerMonth=Фактури клиенти по месец
BoxSuppliersInvoicesPerMonth=Фактури за доставка на месец
BoxCustomersOrdersPerMonth=Клиентски поръчки на месец
BoxSuppliersOrdersPerMonth=Поръчки за покупка на месец

View File

@ -68,3 +68,4 @@ Terminal=Терминал
NumberOfTerminals=Брой терминали
TerminalSelect=Изберете терминал, който искате да използвате:
POSTicket=POS тикет
BasicPhoneLayout=Use basic layout for phones

View File

@ -78,9 +78,9 @@ GroupEmails=Групови имейли
OneEmailPerRecipient=Един имейл за получател (по подразбиране е избран един имейл за всеки запис)
WarningIfYouCheckOneRecipientPerEmail=Внимание, ако поставите отметка в това квадратче, това означава, че само един имейл ще бъде изпратен за няколко различни избрани записа, така че, ако съобщението ви съдържа заместващи променливи, които се отнасят до данни от даден запис, няма да е възможно да ги замените.
ResultOfMailSending=Резултат от масовото изпращане на имейл
NbSelected=Брой избрани
NbIgnored=Брой игнорирани
NbSent=Брой изпратени
NbSelected=Number selected
NbIgnored=Number ignored
NbSent=Number sent
SentXXXmessages=%s изпратен(о)(и) съобщени(е)(я).
ConfirmUnvalidateEmailing=Сигурни ли сте, че искате да превърнете имейла <b>%s</b> в чернова?
MailingModuleDescContactsWithThirdpartyFilter=Контакт с клиентски филтри

View File

@ -171,7 +171,7 @@ MembersStatisticsDesc=Изберете статистически данни, к
MenuMembersStats=Статистика
LastMemberDate=Latest member date
LatestSubscriptionDate=Latest subscription date
Nature=Същност
MemberNature=Nature of member
Public=Информацията е публичнна
NewMemberbyWeb=Новия член е добавен. Очаква се одобрение
NewMemberForm=Форма за нов член

View File

@ -0,0 +1,17 @@
MRPArea=Секция за планиране на материалните изисквания
MenuBOM=Спецификации
LatestBOMModified=Спецификации: %s последно променени
BillOfMaterials=Спецификация
BOMsSetup=Настройка на модул Спецификации
ListOfBOMs=Списък на спецификации
NewBOM=Нова спецификация
ProductBOMHelp=Продукт за създаване с тази спецификация
BOMsNumberingModules=Шаблони за номериране на спецификации
BOMsModelModule=Шаблони на документи на спецификации
FreeLegalTextOnBOMs=Свободен текст към документа на спецификация
WatermarkOnDraftBOMs=Воден знак върху чернова на спецификация
ConfirmCloneBillOfMaterials=Сигурни ли сте, че искате да клонирате тази спецификация?
ManufacturingEfficiency=Ефективност на производството
ValueOfMeansLoss=Стойност 0.95 означава средна стойност от 5%% загуба по време на производството
DeleteBillOfMaterials=Изтриване на спецификация
ConfirmDeleteBillOfMaterials=Сигурни ли сте, че искате да изтриете тази спецификация?

View File

@ -159,7 +159,7 @@ SuppliersPrices=Доставни цени
SuppliersPricesOfProductsOrServices=Доставни цени (на продукти/услуги)
CustomCode=Митнически / Стоков / ХС код
CountryOrigin=Държава на произход
Nature=Вид на продукта (материал/завършен)
Nature=Nature of produt (material/finished)
ShortLabel=Кратък етикет
Unit=Мярка
p=е.

View File

@ -0,0 +1,45 @@
# Dolibarr language file - Source file is en_US - receptions
ReceptionsSetup=Product Reception setup
RefReception=Ref. reception
Reception=Прием
Receptions=Receptions
AllReceptions=All Receptions
Reception=Прием
Receptions=Receptions
ShowReception=Show Receptions
ReceptionsArea=Receptions area
ListOfReceptions=List of receptions
ReceptionMethod=Reception method
LastReceptions=Latest %s receptions
StatisticsOfReceptions=Statistics for receptions
NbOfReceptions=Number of receptions
NumberOfReceptionsByMonth=Number of receptions by month
ReceptionCard=Reception card
NewReception=New reception
CreateReception=Create reception
QtyInOtherReceptions=Qty in other receptions
OtherReceptionsForSameOrder=Other receptions for this order
ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order
ReceptionsToValidate=Receptions to validate
StatusReceptionCanceled=Отменен
StatusReceptionDraft=Чернова
StatusReceptionValidated=Утвърден (продукти, да превозва или вече са изпратени)
StatusReceptionProcessed=Обработена
StatusReceptionDraftShort=Чернова
StatusReceptionValidatedShort=Валидирано
StatusReceptionProcessedShort=Обработена
ReceptionSheet=Reception sheet
ConfirmDeleteReception=Are you sure you want to delete this reception?
ConfirmValidateReception=Are you sure you want to validate this reception with reference <b>%s</b>?
ConfirmCancelReception=Are you sure you want to cancel this reception?
StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated. Date used is date of validation of reception (planed delivery date is not always known).
SendReceptionByEMail=Send reception by email
SendReceptionRef=Submission of reception %s
ActionsOnReception=Events on reception
ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the order card.
ReceptionLine=Reception line
ProductQtyInReceptionAlreadySent=Вече изпратено количество продукт от отворена поръчка
ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received
ValidateOrderFirstBeforeReception=You must first validate the order before being able to make receptions.
ReceptionsNumberingModules=Numbering module for receptions
ReceptionsReceiptModel=Document templates for receptions

View File

@ -1,18 +1,21 @@
# Dolibarr language file - Source file is en_US - salaries
SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accounting account used for user third parties
SALARIES_ACCOUNTING_ACCOUNT_PAYMENT_Desc=The dedicated accounting account defined on user card will be used for Subledger accouting only. This one will be used for General Ledger and as default value of Subledger accounting if dedicated user accouting account on user is not defined.
SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accounting account by default for wage payments
SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Счетоводна сметка, използвана за контрагенти
SALARIES_ACCOUNTING_ACCOUNT_PAYMENT_Desc=Специализираната счетоводна сметка, дефинирана в картата на потребителя, ще се използва само за вторично счетоводно отчитане. Тя ще бъде използвана в регистъра на главната книга и като стойност по подразбиране за вторично счетоводно отчитане, ако не е дефинирана специализирана потребителска счетоводна сметка за потребителя.
SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Счетоводна сметка по подразбиране за плащане на заплати
Salary=Заплата
Salaries=Заплати
NewSalaryPayment=Ново заплащане на заплата
NewSalaryPayment=Ново плащане на заплата
AddSalaryPayment=Добавяне на плащане на заплата
SalaryPayment=Плащане на заплата
SalariesPayments=Заплащания заплати
ShowSalaryPayment=Показване заплащане на заплата
THM=Average hourly rate
TJM=Average daily rate
CurrentSalary=Сегашна заплата
THMDescription=Тази стойност може да използва за изчисляване на отнето време по проект отделено от потребителите ако модул проект се използва
TJMDescription=Тази стойност е само сега като информация и не се използва за никакво изчисление
LastSalaries=Latest %s salary payments
AllSalaries=All salary payments
SalariesStatistics=Statistiques salaires
SalariesPayments=Плащания на заплати
ShowSalaryPayment=Показване на плащане на заплата
THM=Средна почасова ставка
TJM=Средна дневна ставка
CurrentSalary=Текуща заплата
THMDescription=Тази стойност може да се използва за изчисляване на разходите за времето, изразходвано по проект, ако модула проекти се използва.
TJMDescription=Тази стойност понастоящем е информативна и не се използва за изчисления
LastSalaries=Плащания на заплати: %s последни
AllSalaries=Всички плащания на заплати
SalariesStatistics=Статистика на заплатите
# Export
SalariesAndPayments=Salaries and payments

View File

@ -66,10 +66,12 @@ RuleForStockManagementIncrease=Избиране на правило за авт
DeStockOnBill=Намаляване на реални наличности при валидиране на фактура за продажба / кредитно известие
DeStockOnValidateOrder=Намаляване на реални наличности при валидиране на клиентска поръчка
DeStockOnShipment=Намаляване на реални наличности при валидиране на доставка
DeStockOnShipmentOnClosing=Намаляване на реални наличности при класифициране на доставка като затворена
DeStockOnShipmentOnClosing=Decrease real stocks when shipping is set to closed
ReStockOnBill=Увеличаване на реални наличности при валидиране на фактура за покупка / кредитно известие
ReStockOnValidateOrder=Увеличаване на реални наличности при одобряване на поръчка за покупка
ReStockOnDispatchOrder=Увеличаване на реални наличности при ръчно изпращане в склад, след получаване на поръчка за покупка на стоки
StockOnReception=Increase real stocks on validation of reception
StockOnReceptionOnClosing=Increase real stocks when reception is set to closed
OrderStatusNotReadyToDispatch=Поръчка все още не е или не повече статут, който позволява изпращането на продукти на склад складове.
StockDiffPhysicTeoric=Обясняване за разликата между физическа и виртуална наличност
NoPredefinedProductToDispatch=Няма предварително определени продукти за този обект, така че не се изисква изпращане на наличност.

View File

@ -0,0 +1,294 @@
# en_US lang file for module ticket
# Copyright (C) 2013 Jean-François FERRY <hello@librethic.io>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Generic
#
Module56000Name=Тикети
Module56000Desc=Тикет система за управление и обслужване на запитвания
Permission56001=Преглед на тикети
Permission56002=Промяна на тикети
Permission56003=Изтриване на тикети
Permission56004=Управление на тикети
Permission56005=Преглед на тикети от всички контрагенти (не е приложимо за външни потребители, винаги ще бъдат ограничени до контрагента, от който зависят)
TicketDictType=Тикет - Видове
TicketDictCategory=Тикет - Групи
TicketDictSeverity=Тикет - Важност
TicketTypeShortBUGSOFT=Софтуерна неизправност
TicketTypeShortBUGHARD=Хардуерна неизправност
TicketTypeShortCOM=Търговски въпрос
TicketTypeShortINCIDENT=Молба за съдействие
TicketTypeShortPROJET=Проект
TicketTypeShortOTHER=Друго
TicketSeverityShortLOW=Ниска
TicketSeverityShortNORMAL=Нормална
TicketSeverityShortHIGH=Висока
TicketSeverityShortBLOCKING=Критична/Блокираща
ErrorBadEmailAddress=Полето "%s" е неправилно
MenuTicketMyAssign=Моите тикети
MenuTicketMyAssignNonClosed=Моите отворени тикети
MenuListNonClosed=Отворени тикети
TypeContact_ticket_internal_CONTRIBUTOR=Сътрудник
TypeContact_ticket_internal_SUPPORTTEC=Отговорен служител
TypeContact_ticket_external_SUPPORTCLI=Контакт на контрагента проследяващ тикета
TypeContact_ticket_external_CONTRIBUTOR=Сътрудник от страна на контрагента
OriginEmail=Имейл източник
Notify_TICKET_SENTBYMAIL=Изпращане на тикет съобщението по имейл
# Status
NotRead=Непрочетен
Read=Прочетен
Assigned=Назначен
InProgress=В процес
NeedMoreInformation=Изчакване на информация
Answered=Отговорен
Waiting=Изчакващ
Closed=Затворен
Deleted=Изтрит
# Dict
Type=Вид
Category=Аналитичен код
Severity=Важност
# Email templates
MailToSendTicketMessage=За да изпратите имейл с това съобщение
#
# Admin page
#
TicketSetup=Настройка на тикет модула
TicketSettings=Настройки
TicketSetupPage=
TicketPublicAccess=Публичен интерфейс, който не изисква идентификация, е достъпен на следния URL адрес
TicketSetupDictionaries=Видът на тикета, важността и аналитичните кодове се конфигурират от речници
TicketParamModule=Настройка на променливите в модула
TicketParamMail=Настройка на имейл известяването
TicketEmailNotificationFrom=Известяващ имейл от
TicketEmailNotificationFromHelp=Използван при отговор и изпращане на тикет съобщения
TicketEmailNotificationTo=Известяващ имейл до
TicketEmailNotificationToHelp=Използван за получаване на известия от тикет съобщения
TicketNewEmailBodyLabel=Текстово съобщение, изпратено след създаване на тикет
TicketNewEmailBodyHelp=Текстът, посочен тук, ще бъде включен в имейла, потвърждаващ създаването на нов тикет от публичния интерфейс. Информацията с детайлите на тикета се добавя автоматично.
TicketParamPublicInterface=Настройка на публичен интерфейс
TicketsEmailMustExist=Изисква съществуващ имейл адрес, за да се създаде тикет
TicketsEmailMustExistHelp=В публичния интерфейс имейл адресът трябва да е вече въведен в базата данни, за да се създаде нов тикет.
PublicInterface=Публичен интерфейс
TicketUrlPublicInterfaceLabelAdmin=Алтернативен URL адрес за публичния интерфейс
TicketUrlPublicInterfaceHelpAdmin=Възможно е да се дефинира псевдоним на уеб сървъра и по този начин да се предостави достъп до публичния интерфейс от друг URL адрес (сървърът трябва да действа като прокси сървър в този нов URL адрес)
TicketPublicInterfaceTextHomeLabelAdmin=Приветстващ текст на публичния интерфейс
TicketPublicInterfaceTextHome=Може да създадете тикет в системата за управление и обслужване на запитвания или да прегледате съществуващ като използвате номера за проследяване и Вашият имейл адрес.
TicketPublicInterfaceTextHomeHelpAdmin=Текстът, определен тук, ще се появи на началната страница на публичния интерфейс.
TicketPublicInterfaceTopicLabelAdmin=Заглавие на интерфейса
TicketPublicInterfaceTopicHelp=Този текст ще се появи като заглавие на публичния интерфейс.
TicketPublicInterfaceTextHelpMessageLabelAdmin=Помощен текст към съобщението
TicketPublicInterfaceTextHelpMessageHelpAdmin=Този текст ще се появи над мястото с въведено съобщение от потребителя.
ExtraFieldsTicket=Допълнителни атрибути
TicketCkEditorEmailNotActivated=HTML редакторът не е активиран. Моля, задайте стойност 1 на константата FCKEDITOR_ENABLE_MAIL, за да го активирате.
TicketsDisableEmail=Не изпращай имейли при създаване или добавяне на съобщение
TicketsDisableEmailHelp=По подразбиране се изпращат имейли, когато са създадени нови тикети или съобщения. Активирайте тази опция, за да деактивирате *всички* известия по имейл
TicketsLogEnableEmail=Активиране на вход с имейл
TicketsLogEnableEmailHelp=При всяка промяна ще бъде изпратен имейл **на всеки контакт**, свързан с тикета.
TicketParams=Параметри
TicketsShowModuleLogo=Показване на логото на модула в публичния интерфейс
TicketsShowModuleLogoHelp=Активирайте тази опция, за да скриете логото на модула от страниците на публичния интерфейс
TicketsShowCompanyLogo=Показване на логото на фирмата в публичния интерфейс
TicketsShowCompanyLogoHelp=Активирайте тази опция, за да скриете логото на основната фирма от страниците на публичния интерфейс
TicketsEmailAlsoSendToMainAddress=Изпращане на известие до основния имейл адрес
TicketsEmailAlsoSendToMainAddressHelp=Активирайте тази опция, за да изпратите имейл до "Известяващ имейл от" (вижте настройката по-долу)
TicketsLimitViewAssignedOnly=Ограничаване на показването на тикети до такива, които са назначени на текущия потребител (не е приложимо за външни потребители, винаги ще бъдат ограничени до контрагента, от който зависят)
TicketsLimitViewAssignedOnlyHelp=Само тикети, възложени на текущия потребител ще бъдат показвани. Не важи за потребител с права за управление на тикети.
TicketsActivatePublicInterface=Активиране на публичния интерфейс
TicketsActivatePublicInterfaceHelp=Публичният интерфейс позволява на всички посетители да създават тикети.
TicketsAutoAssignTicket=Автоматично възлагане на тикета на потребителя, който го е създал
TicketsAutoAssignTicketHelp=При създаване на тикет, той може автоматично да бъде възложен на потребителя, който го е създал.
TicketNumberingModules=Модул за номериране на тикети
TicketNotifyTiersAtCreation=Уведомяване на контрагента при създаване
TicketGroup=Група
TicketsDisableCustomerEmail=Деактивиране на имейлите, когато тикетът е създаден от публичния интерфейс
#
# Index & list page
#
TicketsIndex=Начална страница
TicketList=Списък с тикети
TicketAssignedToMeInfos=Тази страница показва списъка с тикети, създадени от или възложени на текущия потребител
NoTicketsFound=Няма намерен тикет
NoUnreadTicketsFound=Не са открити непрочетени тикети
TicketViewAllTickets=Преглед на всички тикети
TicketViewNonClosedOnly=Преглед на отворените тикети
TicketStatByStatus=Тикети по статус
#
# Ticket card
#
Ticket=Тикет
TicketCard=Карта
CreateTicket=Създаване на тикет
EditTicket=Редактиране на тикет
TicketsManagement=Управление на тикети
CreatedBy=Създаден от
NewTicket=Нов тикет
SubjectAnswerToTicket=Отговор на тикет
TicketTypeRequest=Вид на тикета
TicketCategory=Аналитичен код
SeeTicket=Преглед на тикет
TicketMarkedAsRead=Тикетът е маркиран като прочетен
TicketReadOn=Прочетен на
TicketCloseOn=Дата на приключване
MarkAsRead=Маркиране на тикета като прочетен
TicketHistory=История
AssignUser=Възлагане на служител
TicketAssigned=Тикетът е възложен
TicketChangeType=Промяна на вида
TicketChangeCategory=Промяна на аналитичния код
TicketChangeSeverity=Промяна на важността
TicketAddMessage=Добавяне на съобщение
AddMessage=Добавяне на съобщение
MessageSuccessfullyAdded=Тикетът е добавен
TicketMessageSuccessfullyAdded=Съобщението е успешно добавено
TicketMessagesList=Списък със съобщения
NoMsgForThisTicket=Няма съобщение за този тикет
Properties=Реквизити
LatestNewTickets=Тикети: %s най-нови тикета (непрочетени)
TicketSeverity=Важност
ShowTicket=Преглед на тикет
RelatedTickets=Свързани тикети
TicketAddIntervention=Създаване на интервенция
CloseTicket=Затваряне на тикет
CloseATicket=Затваряне на тикет
ConfirmCloseAticket=Потвърдете затварянето на тикета
ConfirmDeleteTicket=Моля, потвърдете изтриването на билета
TicketDeletedSuccess=Тикетът е успешно изтрит
TicketMarkedAsClosed=Тикетът е маркиран като затворен
TicketDurationAuto=Изчислена продължителност
TicketDurationAutoInfos=Продължителност, изчислена автоматично според необходимите действия
TicketUpdated=Тикетът е актуализиран
SendMessageByEmail=Изпращане на съобщение по имейл
TicketNewMessage=Ново съобщение
ErrorMailRecipientIsEmptyForSendTicketMessage=Полето за получател е празно, не беше изпратен имейл.
TicketGoIntoContactTab=Моля отидете в раздел "Контакти", откъдето може да изберете.
TicketMessageMailIntro=Въведение
TicketMessageMailIntroHelp=Този текст се добавя само в началото на имейла и няма да бъде запазен.
TicketMessageMailIntroLabelAdmin=Въведение към съобщението при изпращане на имейл
TicketMessageMailIntroText=Здравейте,<br>Беше добавено ново съобщение към тикет, за който сте асоцииран като контакт. Ето и съобщението:<br>
TicketMessageMailIntroHelpAdmin=Този текст ще бъде вмъкнат преди текста за отговор към тикета.
TicketMessageMailSignature=Подпис
TicketMessageMailSignatureHelp=Този текст се добавя само в края на имейла и няма да бъде запазен.
TicketMessageMailSignatureText=<p>Поздрави,</p><p>--</p>
TicketMessageMailSignatureLabelAdmin=Подпис в отговора към имейла
TicketMessageMailSignatureHelpAdmin=Този текст ще бъде вмъкнат след съобщението за отговор.
TicketMessageHelp=Само този текст ще бъде запазен в списъка със съобщения към тикета.
TicketMessageSubstitutionReplacedByGenericValues=Заместващите променливи се заменят от стандартни стойности.
TimeElapsedSince=Изминало време
TicketTimeToRead=Изминало време преди прочитане
TicketContacts=Контакти
TicketDocumentsLinked=Документи свързани с тикета
ConfirmReOpenTicket=Потвърдете повторното отваряне на този тикет?
TicketMessageMailIntroAutoNewPublicMessage=Ново съобщение беше добавено към тикет с тема: %s
TicketAssignedToYou=Тикетът ви е възложен
TicketAssignedEmailBody=Беше ви възложен тикет с проследяващ код %s от %s
MarkMessageAsPrivate=Маркиране на съобщението като лично
TicketMessagePrivateHelp=Това съобщение няма да се показва на външни потребители
TicketEmailOriginIssuer=Контакт на контрагента проследяващ тикета
InitialMessage=Първоначално съобщение
LinkToAContract=Свързване към договор
TicketPleaseSelectAContract=Изберете договор
UnableToCreateInterIfNoSocid=Не може да бъде създадена интервенция без да бъде дефиниран контрагента
TicketMailExchanges=История на съобщенията
TicketInitialMessageModified=Първоначалното съобщение е променено
TicketMessageSuccesfullyUpdated=Съобщението е успешно актуализирано
TicketChangeStatus=Промяна на статус
TicketConfirmChangeStatus=Потвърдете промяната на статуса на: %s?
TicketLogStatusChanged=Статусът е променен: от %s на %s
TicketNotNotifyTiersAtCreate=Не уведомява фирмата при създаването на тикета
Unread=Непрочетен
#
# Logs
#
TicketLogMesgReadBy=Тикет %s е прочетен от %s
NoLogForThisTicket=Все още няма запис за този тикет
TicketLogAssignedTo=Тикет %s е възложен на %s
TicketLogPropertyChanged=Тикет %s е редактиран: класификация от %s на %s
TicketLogClosedBy=Тикет %s е затворен от %s
TicketLogReopen=Тикет %s е отворен повторно
#
# Public pages
#
TicketSystem=Тикет система
ShowListTicketWithTrackId=Проследяване на списък с тикети
ShowTicketWithTrackId=Проследяване на тикет
TicketPublicDesc=Може да създадете тикет или да проследите съществуващи като използвате кода за проследяване и Вашият имейл адрес.
YourTicketSuccessfullySaved=Тикетът е успешно съхранен!
MesgInfosPublicTicketCreatedWithTrackId=Беше създаден нов тикет с проследяващ код %s
PleaseRememberThisId=Моля, запазете проследяващия код, за който може да ви попитаме по-късно.
TicketNewEmailSubject=Потвърждение за създаване на тикет
TicketNewEmailSubjectCustomer=Нов тикет
TicketNewEmailBody=Това е автоматичен имейл, който потвърждава, че сте регистрирали нов тикет.
TicketNewEmailBodyCustomer=Това е автоматичен имейл, който потвърждава, че е създаден нов тикет във вашия фирмен профил.
TicketNewEmailBodyInfosTicket=Информация за наблюдение на тикета
TicketNewEmailBodyInfosTrackId=Проследяващ код на тикета: %s
TicketNewEmailBodyInfosTrackUrl=Може да следите напредъка по тикета като кликнете на връзката по-горе.
TicketNewEmailBodyInfosTrackUrlCustomer=Може да следите напредъка по тикета в специалния интерфейс като кликнете върху следната връзка
TicketEmailPleaseDoNotReplyToThisEmail=Моля, не отговаряйте директно на този имейл! Използвайте връзката, за да отговорите, чрез интерфейса.
TicketPublicInfoCreateTicket=Тази форма позволява да регистрирате тикет в системата за управление и обслужване на запитвания.
TicketPublicPleaseBeAccuratelyDescribe=Моля, опишете точно проблема. Посочете възможно най-много информация, за да ни позволите да идентифицираме правилно това запитване.
TicketPublicMsgViewLogIn=Моля, въведете проследяващ код и имейл адрес
TicketTrackId=Код за проследяване
OneOfTicketTrackId=Код за проследяване
ErrorTicketNotFound=Тикет с проследяващ код %s не е намерен!
Subject=Тема
ViewTicket=Преглед на тикет
ViewMyTicketList=Преглед на моя списък с тикети
ErrorEmailMustExistToCreateTicket=Грешка: имейл адресът не е намерен в нашата база данни
TicketNewEmailSubjectAdmin=Създаден е нов тикет
TicketNewEmailBodyAdmin=Здравейте,\nБеше създаден нов тикет с проследяващ код %s, вижте информацията за него:\n
SeeThisTicketIntomanagementInterface=Вижте тикета в системата за управление и обслужване на запитвания
TicketPublicInterfaceForbidden=Достъпът до публичния интерфейс на тикет системата е забранен
ErrorEmailOrTrackingInvalid=Неправилна стойност на проследяващ код или имейл адрес
OldUser=Бивш потребител
NewUser=Нов потребител
NumberOfTicketsByMonth=Брой тикети на месец
NbOfTickets=Брой тикети
# notifications
TicketNotificationEmailSubject=Тикет с проследяващ код %s е актуализиран
TicketNotificationEmailBody=Здравейте,\nТова е автоматично съобщение, което има за цел да Ви уведоми, че тикет с проследяващ код %s е бил наскоро актуализиран.
TicketNotificationRecipient=Получател на уведомлението
TicketNotificationLogMessage=Съобщение в историята
TicketNotificationEmailBodyInfosTrackUrlinternal=Вижте тикета в системата
TicketNotificationNumberEmailSent=Изпратено уведомление по имейл: %s
ActionsOnTicket=Свързани събития
#
# Boxes
#
BoxLastTicket=Последно създадени тикети
BoxLastTicketDescription=Тикети: %s последно създадени
BoxLastTicketContent=
BoxLastTicketNoRecordedTickets=Няма скорошни непрочетени тикети
BoxLastModifiedTicket=Последно променени тикети
BoxLastModifiedTicketDescription=Тикети: %s последно променени
BoxLastModifiedTicketContent=
BoxLastModifiedTicketNoRecordedTickets=Няма скорошни променени тикети

View File

@ -101,3 +101,5 @@ NotAllowedToAddDynamicContent=You don't have permission to add or edit PHP dynam
ReplaceWebsiteContent=Replace website content
DeleteAlsoJs=Delete also all javascript files specific to this website?
DeleteAlsoMedias=Delete also all medias files specific to this website?
# Export
MyWebsitePages=My website pages

View File

@ -69,8 +69,8 @@ WithBankUsingBANBIC=За банкови сметки с IBAN / BIC / SWIFT
BankToReceiveWithdraw=Receiving Bank Account
CreditDate=Кредит за
WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported)
ShowWithdraw=Покажи Теглене
IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Въпреки това, ако фактурата не е все още най-малко една оттегляне плащане обработват, не се определя като плаща, за да се даде възможност да управляват оттеглянето им преди.
ShowWithdraw=Show Direct Debit Order
IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one direct debit payment order not yet processed, it won't be set as paid to allow prior withdrawal management.
DoStandingOrdersBeforePayments=Този раздел ви позволява да заявите плащане с директен дебит. След като направите това, отидете в меню Банка-> плащане с директен дебит, за да управлявате платежното нареждане за директен дебит. Когато платежното нареждане е затворено, плащането по фактура ще бъде автоматично записано и фактурата ще бъде затворена, ако няма остатък за плащане.
WithdrawalFile=Withdrawal file
SetToStatusSent=Зададен към статус "Файл Изпратен"

View File

@ -216,7 +216,8 @@ DescThirdPartyReport=Consult here the list of third-party customers and vendors
ListAccounts=List of the accounting accounts
UnknownAccountForThirdparty=Unknown third-party account. We will use %s
UnknownAccountForThirdpartyBlocking=Unknown third-party account. Blocking error
ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Third-party account not defined or third party unknown. Blocking error.
ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Third-party account not defined or third party unknown. We will use %s
ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Third-party account not defined or third party unknown. Blocking error.
UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third-party account and waiting account not defined. Blocking error
PaymentsNotLinkedToProduct=Payment not linked to any product / service
@ -291,7 +292,7 @@ Modelcsv_cogilog=Export for Cogilog
Modelcsv_agiris=Export for Agiris
Modelcsv_openconcerto=Export for OpenConcerto (Test)
Modelcsv_configurable=Export CSV Configurable
Modelcsv_FEC=Export FEC (Art. L47 A)
Modelcsv_FEC=Export FEC
Modelcsv_Sage50_Swiss=Export for Sage 50 Switzerland
ChartofaccountsId=Chart of accounts Id
@ -316,6 +317,9 @@ WithoutValidAccount=Without valid dedicated account
WithValidAccount=With valid dedicated account
ValueNotIntoChartOfAccount=This value of accounting account does not exist into chart of account
AccountRemovedFromGroup=Account removed from group
SaleLocal=Local sale
SaleExport=Export sale
SaleEEC=Sale in EEC
## Dictionary
Range=Range of accounting account
@ -336,7 +340,7 @@ UseMenuToSetBindindManualy=Lines not yet bound, use menu <a href="%s">%s</a> to
## Import
ImportAccountingEntries=Accounting entries
DateExport=Date export
WarningReportNotReliable=Warning, this report is not based on the Ledger, so does not contains transaction modified manually in the Ledger. If your journalization is up to date, the bookkeeping view is more accurate.
ExpenseReportJournal=Expense Report Journal
InventoryJournal=Inventory Journal

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