Merge branch 'develop' into RightsInModuleBuilder

This commit is contained in:
lamrani abdelwadoud 2023-02-03 14:00:41 +01:00 committed by GitHub
commit 385d068ed1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
496 changed files with 5134 additions and 2972 deletions

View File

@ -18,7 +18,7 @@ jobs:
fetch-depth: 1
#php-version: '7.1'
- name: 'Qodana Scan'
uses: JetBrains/qodana-action@v2022.3.0
uses: JetBrains/qodana-action@v2022.3.2
#with:
# php-version: '7.1'
env:

View File

@ -22,8 +22,8 @@ https://www.tecklenborgh.com/post/ksa-zatca-publishes-guide-on-how-to-develop-a-
Method to encode/decode ZATCA string is available in test/phpunit/BarcodeTest.php
* FOR QR-Bill in switzerland
----------------------------
* FOR QR-Bill in switzerland - Facture-QR
-----------------------------------------
Syntax of QR Code https://www.swiss-qr-invoice.org/fr/
Syntax of complentary field named "structured information of invoice S1": https://www.swiss-qr-invoice.org/downloads/qr-bill-s1-syntax-fr.pdf
To test/validate: https://www.swiss-qr-invoice.org/validator/

View File

@ -313,10 +313,6 @@ if (empty($reshook)) {
$object->socialnetworks[$key] = trim(GETPOST($key, 'alphanohtml'));
}
}
//$object->skype = trim(GETPOST("skype", 'alpha'));
//$object->twitter = trim(GETPOST("twitter", 'alpha'));
//$object->facebook = trim(GETPOST("facebook", 'alpha'));
//$object->linkedin = trim(GETPOST("linkedin", 'alpha'));
$object->birth = $birthdate;
$object->default_lang = GETPOST('default_lang', 'alpha');
$object->typeid = GETPOST("typeid", 'int');
@ -488,11 +484,6 @@ if (empty($reshook)) {
}
}
// $object->skype = $skype;
// $object->twitter = $twitter;
// $object->facebook = $facebook;
// $object->linkedin = $linkedin;
$object->email = $email;
$object->url = $url;
$object->login = $login;

View File

@ -639,7 +639,7 @@ class AdherentType extends CommonObject
$sql .= ' AND ('.$excludefilter.')';
}
dol_syslog(get_class($this)."::listUsersForGroup", LOG_DEBUG);
dol_syslog(get_class($this)."::listMembersForMemberType", LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql) {
while ($obj = $this->db->fetch_object($resql)) {

View File

@ -195,7 +195,7 @@ if (($action == 'update' && !GETPOST("cancel", 'alpha'))
dolibarr_set_const($db, "MAIN_INFO_PROFID6", GETPOST("MAIN_INFO_PROFID6", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
dolibarr_set_const($db, "MAIN_INFO_TVAINTRA", GETPOST("tva", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
dolibarr_set_const($db, "MAIN_INFO_SOCIETE_OBJECT", GETPOST("object", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
dolibarr_set_const($db, "MAIN_INFO_SOCIETE_OBJECT", GETPOST("socialobject", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
dolibarr_set_const($db, "SOCIETE_FISCAL_MONTH_START", GETPOST("SOCIETE_FISCAL_MONTH_START", 'int'), 'chaine', 0, '', $conf->entity);
@ -676,8 +676,8 @@ print '<input name="tva" id="intra_vat" class="minwidth200" value="'.dol_escape_
print '</td></tr>';
// Object of the company
print '<tr class="oddeven"><td><label for="object">'.$langs->trans("CompanyObject").'</label></td><td>';
print '<textarea class="flat quatrevingtpercent" name="object" id="object" rows="'.ROWS_5.'">'.(!empty($conf->global->MAIN_INFO_SOCIETE_OBJECT) ? $conf->global->MAIN_INFO_SOCIETE_OBJECT : '').'</textarea></td></tr>';
print '<tr class="oddeven"><td><label for="socialobject">'.$langs->trans("CompanyObject").'</label></td><td>';
print '<textarea class="flat quatrevingtpercent" name="socialobject" id="socialobject" rows="'.ROWS_5.'">'.(!empty($conf->global->MAIN_INFO_SOCIETE_OBJECT) ? $conf->global->MAIN_INFO_SOCIETE_OBJECT : '').'</textarea></td></tr>';
print '</td></tr>';
print '</table>';

View File

@ -387,7 +387,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
$morehtmlref = '<div class="refidno">';
$morehtmlref .= '</div>';
$morehtml = $langs->trans("NbOfEmailsInInbox").' : ';
$morehtml = '';
$sourcedir = $object->source_directory;
$targetdir = ($object->target_directory ? $object->target_directory : ''); // Can be '[Gmail]/Trash' or 'mytag'
@ -404,6 +404,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
$connectstringserver = $object->getConnectStringIMAP($usessl);
if ($action == 'scan') {
$nbemail = '';
if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) {
if ($object->acces_type == 1) {
// Mode OAUth2 with PHP-IMAP
@ -493,7 +494,6 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
$f = $client->getFolders(false, $object->source_directory);
$nbemail = $f[0]->examine()["exists"];
$morehtml .= $nbemail;
} else {
try {
if ($sourcedir) {
@ -525,15 +525,15 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
}
if (!$connection) {
$morehtml .= 'Failed to open IMAP connection '.$connectstringsource;
$nbemail .= 'Failed to open IMAP connection '.$connectstringsource;
if (function_exists('imap_last_error')) {
$morehtml .= '<br>'.imap_last_error();
$nbemail .= '<br>'.imap_last_error();
}
dol_syslog("Error ".$morehtml, LOG_WARNING);
//var_dump(imap_errors())
} else {
dol_syslog("Imap connected. Now we call imap_num_msg()");
$morehtml .= imap_num_msg($connection);
$nbemail .= imap_num_msg($connection);
}
if ($connection) {
@ -541,12 +541,15 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
imap_close($connection);
}
}
} else {
$morehtml .= '<a class="flat" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=scan&token='.newToken().'">'.img_picto('', 'refresh', 'class="paddingrightonly"').$langs->trans("Refresh").'</a>';
}
$morehtml .= $form->textwithpicto('', 'connect string '.$connectstringserver);
$morehtml .= $form->textwithpicto($langs->trans("NbOfEmailsInInbox"), 'connect string '.$connectstringserver).': ';
$morehtml .= ($nbemail != '' ? $nbemail : '?');
$morehtml .= ' &nbsp; <a class="flat paddingleft marginleftonly" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=scan&token='.newToken().'">'.img_picto('', 'refresh', 'class="paddingrightonly"').$langs->trans("Refresh").'</a>';
} else {
$morehtml .= $langs->trans("NbOfEmailsInInbox").': ';
$morehtml .= 'IMAP functions not available on your PHP. ';
}

View File

@ -601,13 +601,17 @@ while ($i < $imaxinloop) {
//if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100';
if (!empty($arrayfields['t.'.$key]['checked'])) {
print '<td'.($cssforfield ? ' class="'.$cssforfield.'"' : '');
print '<td'.($cssforfield ? ' class="'.$cssforfield.(preg_match('/tdoverflow/', $cssforfield) ? ' classfortooltip' : '').'"' : '');
if (preg_match('/tdoverflow/', $cssforfield)) {
print ' title="'.dol_escape_htmltag($object->$key).'"';
}
print '>';
if ($key == 'status') {
print $object->getLibStatut(5);
} elseif ($key == 'lastresult') {
print '<div class="twolinesmax">';
print $object->showOutputField($val, $key, $object->$key, '');
print '</div>';
} elseif ($key == 'rowid') {
print $object->showOutputField($val, $key, $object->id, '');
} else {

View File

@ -1762,11 +1762,6 @@ class Setup extends DolibarrApi
throw new RestException(403, 'Error API open to admin users only or to the users with logins defined into constant API_LOGINS_ALLOWED_FOR_GET_COMPANY');
}
unset($mysoc->skype);
unset($mysoc->twitter);
unset($mysoc->facebook);
unset($mysoc->linkedin);
unset($mysoc->pays);
unset($mysoc->note);
unset($mysoc->nom);

View File

@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2017-2020 Laurent Destailleur <eldy@users.sourceforge.net>
/* Copyright (C) 2017-2023 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2019 Frédéric France <frederic.france@netlogic.fr>
*
* This program is free software; you can redistribute it and/or modify
@ -275,302 +275,303 @@ if (empty($reshook)) {
$object->calculateCosts();
}
}
}
/*
* View
*/
/*
* View
*/
$form = new Form($db);
$formfile = new FormFile($db);
$form = new Form($db);
$formfile = new FormFile($db);
$title = $langs->trans('BOM');
$help_url ='EN:Module_BOM';
llxHeader('', $title, $help_url);
$title = $langs->trans('BOM');
$help_url ='EN:Module_BOM';
llxHeader('', $title, $help_url);
// Part to create
if ($action == 'create') {
print load_fiche_titre($langs->trans("NewBOM"), '', 'bom');
// Part to create
if ($action == 'create') {
print load_fiche_titre($langs->trans("NewBOM"), '', 'bom');
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="action" value="add">';
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="action" value="add">';
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
print dol_get_fiche_head(array(), '');
print dol_get_fiche_head(array(), '');
print '<table class="border centpercent tableforfieldcreate">'."\n";
print '<table class="border centpercent tableforfieldcreate">'."\n";
// Common attributes
include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_add.tpl.php';
// Common attributes
include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_add.tpl.php';
// Other attributes
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php';
// Other attributes
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php';
print '</table>'."\n";
print '</table>'."\n";
print dol_get_fiche_end();
print dol_get_fiche_end();
print $form->buttonsSaveCancel("Create");
print $form->buttonsSaveCancel("Create");
print '</form>';
print '</form>';
}
// Part to edit record
if (($id || $ref) && $action == 'edit') {
print load_fiche_titre($langs->trans("BillOfMaterials"), '', 'cubes');
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="action" value="update">';
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
print '<input type="hidden" name="id" value="'.$object->id.'">';
print dol_get_fiche_head();
//$object->fields['keyfield']['disabled'] = 1;
print '<table class="border centpercent tableforfieldedit">'."\n";
// Common attributes
include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php';
// Other attributes
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php';
print '</table>';
print dol_get_fiche_end();
print $form->buttonsSaveCancel("Create");
print '</form>';
}
// Part to show record
if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) {
$head = bomPrepareHead($object);
print dol_get_fiche_head($head, 'card', $langs->trans("BillOfMaterials"), -1, 'bom');
$formconfirm = '';
// Confirmation to delete
if ($action == 'delete') {
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteBillOfMaterials'), $langs->trans('ConfirmDeleteBillOfMaterials'), 'confirm_delete', '', 0, 1);
}
// Confirmation to delete line
if ($action == 'deleteline') {
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$lineid, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_deleteline', '', 0, 1);
}
// Part to edit record
if (($id || $ref) && $action == 'edit') {
print load_fiche_titre($langs->trans("BillOfMaterials"), '', 'cubes');
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="action" value="update">';
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
print '<input type="hidden" name="id" value="'.$object->id.'">';
print dol_get_fiche_head();
//$object->fields['keyfield']['disabled'] = 1;
print '<table class="border centpercent tableforfieldedit">'."\n";
// Common attributes
include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php';
// Other attributes
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php';
print '</table>';
print dol_get_fiche_end();
print $form->buttonsSaveCancel("Create");
print '</form>';
}
// Part to show record
if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) {
$head = bomPrepareHead($object);
print dol_get_fiche_head($head, 'card', $langs->trans("BillOfMaterials"), -1, 'bom');
$formconfirm = '';
// Confirmation to delete
if ($action == 'delete') {
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteBillOfMaterials'), $langs->trans('ConfirmDeleteBillOfMaterials'), 'confirm_delete', '', 0, 1);
}
// Confirmation to delete line
if ($action == 'deleteline') {
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id . '&lineid=' . $lineid, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_deleteline', '', 0, 1);
}
// Confirmation of validation
if ($action == 'validate') {
// We check that object has a temporary ref
$ref = substr($object->ref, 1, 4);
if ($ref == 'PROV') {
$object->fetch_product();
$numref = $object->getNextNumRef($object->product);
} else {
$numref = $object->ref;
}
$text = $langs->trans('ConfirmValidateBom', $numref);
/*if (isModEnabled('notification'))
{
require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php';
$notify = new Notify($db);
$text .= '<br>';
$text .= $notify->confirmMessage('BOM_VALIDATE', $object->socid, $object);
}*/
$formquestion = array();
if (isModEnabled('bom')) {
$langs->load("mrp");
$forcecombo = 0;
if ($conf->browser->name == 'ie') {
$forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy
}
$formquestion = array(
// 'text' => $langs->trans("ConfirmClone"),
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
);
}
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('Validate'), $text, 'confirm_validate', $formquestion, 0, 1, 220);
}
// Confirmation of closing
if ($action == 'close') {
$text = $langs->trans('ConfirmCloseBom', $object->ref);
/*if (isModEnabled('notification'))
{
require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php';
$notify = new Notify($db);
$text .= '<br>';
$text .= $notify->confirmMessage('BOM_CLOSE', $object->socid, $object);
}*/
$formquestion = array();
if (isModEnabled('bom')) {
$langs->load("mrp");
$forcecombo = 0;
if ($conf->browser->name == 'ie') {
$forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy
}
$formquestion = array(
// 'text' => $langs->trans("ConfirmClone"),
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
);
}
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('Close'), $text, 'confirm_close', $formquestion, 0, 1, 220);
}
// Confirmation of reopen
if ($action == 'reopen') {
$text = $langs->trans('ConfirmReopenBom', $object->ref);
/*if (isModEnabled('notification'))
{
require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php';
$notify = new Notify($db);
$text .= '<br>';
$text .= $notify->confirmMessage('BOM_CLOSE', $object->socid, $object);
}*/
$formquestion = array();
if (isModEnabled('bom')) {
$langs->load("mrp");
require_once DOL_DOCUMENT_ROOT . '/product/class/html.formproduct.class.php';
$forcecombo = 0;
if ($conf->browser->name == 'ie') {
$forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy
}
$formquestion = array(
// 'text' => $langs->trans("ConfirmClone"),
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
);
}
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ReOpen'), $text, 'confirm_reopen', $formquestion, 0, 1, 220);
}
// Clone confirmation
if ($action == 'clone') {
// Create an array for form
$formquestion = array();
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneBillOfMaterials', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
}
// Confirmation of action xxxx
if ($action == 'setdraft') {
$text = $langs->trans('ConfirmSetToDraft', $object->ref);
$formquestion = array();
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('SetToDraft'), $text, 'confirm_setdraft', $formquestion, 0, 1, 220);
}
// Call Hook formConfirm
$parameters = array('formConfirm' => $formconfirm, 'lineid' => $lineid);
$reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if (empty($reshook)) {
$formconfirm .= $hookmanager->resPrint;
} elseif ($reshook > 0) {
$formconfirm = $hookmanager->resPrint;
}
// Print form confirm
print $formconfirm;
// Object card
// ------------------------------------------------------------
$linkback = '<a href="' . DOL_URL_ROOT . '/bom/bom_list.php?restore_lastsearch_values=1' . (!empty($socid) ? '&socid=' . $socid : '') . '">' . $langs->trans("BackToList") . '</a>';
$morehtmlref = '<div class="refidno">';
/*
// Ref bis
$morehtmlref.=$form->editfieldkey("RefBis", 'ref_client', $object->ref_client, $object, $user->rights->bom->creer, 'string', '', 0, 1);
$morehtmlref.=$form->editfieldval("RefBis", 'ref_client', $object->ref_client, $object, $user->rights->bom->creer, 'string', '', null, null, '', 1);
// Thirdparty
$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $soc->getNomUrl(1);
// Project
if (isModEnabled('project'))
{
$langs->load("projects");
$morehtmlref.='<br>'.$langs->trans('Project') . ' ';
if ($permissiontoadd)
{
if ($action != 'classify')
$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&token='.newToken().'&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
if ($action == 'classify') {
//$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
$morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
$morehtmlref.='<input type="hidden" name="action" value="classin">';
$morehtmlref.='<input type="hidden" name="token" value="'.newToken().'">';
$morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', 0, 0, 1, 0, 1, 0, 0, '', 1);
$morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
$morehtmlref.='</form>';
} else {
$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1);
}
// Confirmation of validation
if ($action == 'validate') {
// We check that object has a temporary ref
$ref = substr($object->ref, 1, 4);
if ($ref == 'PROV') {
$object->fetch_product();
$numref = $object->getNextNumRef($object->product);
} else {
if (! empty($object->fk_project)) {
$proj = new Project($db);
$proj->fetch($object->fk_project);
$morehtmlref.=$proj->getNomUrl();
} else {
$morehtmlref.='';
$numref = $object->ref;
}
$text = $langs->trans('ConfirmValidateBom', $numref);
/*if (isModEnabled('notification'))
{
require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php';
$notify = new Notify($db);
$text .= '<br>';
$text .= $notify->confirmMessage('BOM_VALIDATE', $object->socid, $object);
}*/
$formquestion = array();
if (isModEnabled('bom')) {
$langs->load("mrp");
$forcecombo = 0;
if ($conf->browser->name == 'ie') {
$forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy
}
$formquestion = array(
// 'text' => $langs->trans("ConfirmClone"),
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
);
}
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('Validate'), $text, 'confirm_validate', $formquestion, 0, 1, 220);
}
// Confirmation of closing
if ($action == 'close') {
$text = $langs->trans('ConfirmCloseBom', $object->ref);
/*if (isModEnabled('notification'))
{
require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php';
$notify = new Notify($db);
$text .= '<br>';
$text .= $notify->confirmMessage('BOM_CLOSE', $object->socid, $object);
}*/
$formquestion = array();
if (isModEnabled('bom')) {
$langs->load("mrp");
$forcecombo = 0;
if ($conf->browser->name == 'ie') {
$forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy
}
$formquestion = array(
// 'text' => $langs->trans("ConfirmClone"),
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
);
}
*/
$morehtmlref .= '</div>';
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('Close'), $text, 'confirm_close', $formquestion, 0, 1, 220);
}
// Confirmation of reopen
if ($action == 'reopen') {
$text = $langs->trans('ConfirmReopenBom', $object->ref);
/*if (isModEnabled('notification'))
{
require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php';
$notify = new Notify($db);
$text .= '<br>';
$text .= $notify->confirmMessage('BOM_CLOSE', $object->socid, $object);
}*/
$formquestion = array();
if (isModEnabled('bom')) {
$langs->load("mrp");
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
$forcecombo = 0;
if ($conf->browser->name == 'ie') {
$forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy
}
$formquestion = array(
// 'text' => $langs->trans("ConfirmClone"),
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
);
}
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ReOpen'), $text, 'confirm_reopen', $formquestion, 0, 1, 220);
}
// Clone confirmation
if ($action == 'clone') {
// Create an array for form
$formquestion = array();
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneBillOfMaterials', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
}
// Confirmation of action xxxx
if ($action == 'setdraft') {
$text = $langs->trans('ConfirmSetToDraft', $object->ref);
$formquestion = array();
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('SetToDraft'), $text, 'confirm_setdraft', $formquestion, 0, 1, 220);
}
// Call Hook formConfirm
$parameters = array('formConfirm' => $formconfirm, 'lineid' => $lineid);
$reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if (empty($reshook)) {
$formconfirm .= $hookmanager->resPrint;
} elseif ($reshook > 0) {
$formconfirm = $hookmanager->resPrint;
}
// Print form confirm
print $formconfirm;
dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
// Object card
// ------------------------------------------------------------
$linkback = '<a href="'.DOL_URL_ROOT.'/bom/bom_list.php?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
$morehtmlref = '<div class="refidno">';
/*
// Ref bis
$morehtmlref.=$form->editfieldkey("RefBis", 'ref_client', $object->ref_client, $object, $user->rights->bom->creer, 'string', '', 0, 1);
$morehtmlref.=$form->editfieldval("RefBis", 'ref_client', $object->ref_client, $object, $user->rights->bom->creer, 'string', '', null, null, '', 1);
// Thirdparty
$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $soc->getNomUrl(1);
// Project
if (isModEnabled('project'))
{
$langs->load("projects");
$morehtmlref.='<br>'.$langs->trans('Project') . ' ';
if ($permissiontoadd)
{
if ($action != 'classify')
$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&token='.newToken().'&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
if ($action == 'classify') {
//$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
$morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
$morehtmlref.='<input type="hidden" name="action" value="classin">';
$morehtmlref.='<input type="hidden" name="token" value="'.newToken().'">';
$morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', 0, 0, 1, 0, 1, 0, 0, '', 1);
$morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
$morehtmlref.='</form>';
} else {
$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1);
}
} else {
if (! empty($object->fk_project)) {
$proj = new Project($db);
$proj->fetch($object->fk_project);
$morehtmlref.=$proj->getNomUrl();
} else {
$morehtmlref.='';
}
}
}
*/
$morehtmlref .= '</div>';
print '<div class="fichecenter">';
print '<div class="fichehalfleft">';
print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent tableforfield">' . "\n";
dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
// Common attributes
$keyforbreak = 'duration';
include DOL_DOCUMENT_ROOT . '/core/tpl/commonfields_view.tpl.php';
print '<div class="fichecenter">';
print '<div class="fichehalfleft">';
print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent tableforfield">'."\n";
// Common attributes
$keyforbreak = 'duration';
include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php';
$object->calculateCosts();
print '<tr><td>'.$form->textwithpicto($langs->trans("TotalCost"), $langs->trans("BOMTotalCost")).'</td><td><span class="amount">'.price($object->total_cost).'</span></td></tr>';
print '<tr><td>'.$langs->trans("UnitCost").'</td><td>'.price($object->unit_cost).'</td></tr>';
// Other attributes
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
print '</table>';
print '</div>';
print '</div>';
print '<div class="clearboth"></div>';
print dol_get_fiche_end();
/*
* Lines
*/
if (!empty($object->table_element_line)) {
// Products
$res = $object->fetchLinesbytypeproduct(0);
$object->calculateCosts();
print '<tr><td>' . $form->textwithpicto($langs->trans("TotalCost"), $langs->trans("BOMTotalCost")) . '</td><td><span class="amount">' . price($object->total_cost) . '</span></td></tr>';
print '<tr><td>' . $langs->trans("UnitCost") . '</td><td>' . price($object->unit_cost) . '</td></tr>';
// Other attributes
include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_view.tpl.php';
print ($res == 0 && $object->status >= $object::STATUS_VALIDATED) ? '' : load_fiche_titre($langs->trans('BOMProductsList'), '', 'product');
print '</table>';
print '</div>';
print '</div>';
print '<div class="clearboth"></div>';
print dol_get_fiche_end();
/*
* Lines
*/
if (!empty($object->table_element_line)) {
//Products
$res = $object->fetchLinesbytypeproduct(0);
$object->calculateCosts();
print ($res == 0 && $object->status >= $object::STATUS_VALIDATED) ? '' : load_fiche_titre($langs->trans('BOMProductsList'), '', 'product');
print ' <form name="addproduct" id="addproduct" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . (($action != 'editline') ? '' : '') . '" method="POST">
print ' <form name="addproduct" id="addproduct" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . (($action != 'editline') ? '' : '') . '" method="POST">
<input type="hidden" name="token" value="' . newToken() . '">
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline') . '">
<input type="hidden" name="mode" value="">
@ -578,78 +579,30 @@ if (empty($reshook)) {
<input type="hidden" name="id" value="' . $object->id . '">
';
if (!empty($conf->use_javascript_ajax) && $object->status == 0) {
include DOL_DOCUMENT_ROOT . '/core/tpl/ajaxrow.tpl.php';
}
if (!empty($conf->use_javascript_ajax) && $object->status == 0) {
include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php';
}
print '<div class="div-table-responsive-no-min">';
if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
print '<table id="tablelines" class="noborder noshadow" width="100%">';
}
print '<div class="div-table-responsive-no-min">';
if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
print '<table id="tablelines" class="noborder noshadow centpercent">';
}
if (!empty($object->lines)) {
$object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1, '/bom/tpl');
}
if (!empty($object->lines)) {
$object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1, '/bom/tpl');
}
// Form to add new line
if ($object->status == 0 && $permissiontoadd && $action != 'selectlines') {
if ($action != 'editline') {
// Add products/services form
// Form to add new line
if ($object->status == 0 && $permissiontoadd && $action != 'selectlines') {
if ($action != 'editline') {
// Add products/services form
$parameters = array();
$reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
if (empty($reshook))
$object->formAddObjectLine(1, $mysoc, null, '/bom/tpl');
}
}
if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
print '</table>';
}
print '</div>';
print "</form>\n";
//Services
$filtertype = 1;
$res = $object->fetchLinesbytypeproduct(1);
$object->calculateCosts();
print ($res == 0 && $object->status >= $object::STATUS_VALIDATED) ? '' : load_fiche_titre($langs->trans('BOMServicesList'), '', 'service');
print ' <form name="addservice" id="addservice" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . (($action != 'editline') ? '' : '') . '" method="POST">
<input type="hidden" name="token" value="' . newToken() . '">
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline') . '">
<input type="hidden" name="mode" value="">
<input type="hidden" name="page_y" value=""> <input type="hidden" name="id" value="' . $object->id . '">
';
if (!empty($conf->use_javascript_ajax) && $object->status == 0) {
$tagidfortablednd = 'tablelinesservice';
include DOL_DOCUMENT_ROOT . '/core/tpl/ajaxrow.tpl.php';
}
print '<div class="div-table-responsive-no-min">';
if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
print '<table id="tablelinesservice" class="noborder noshadow" width="100%">';
}
if (!empty($object->lines)) {
$object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1, '/bom/tpl');
}
// Form to add new line
if ($object->status == 0 && $permissiontoadd && $action != 'selectlines') {
if ($action != 'editline') {
// Add services form
$parameters = array();
$reshook = $hookmanager->executeHooks('formAddObjectServiceLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
if (empty($reshook))
$object->formAddObjectLine(1, $mysoc, null, '/bom/tpl');
}
$parameters = array();
$reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
if (empty($reshook))
$object->formAddObjectLine(1, $mysoc, null, '/bom/tpl');
}
}
@ -660,149 +613,199 @@ if (empty($reshook)) {
print "</form>\n";
mrpCollapseBomManagement();
// Services
$filtertype = 1;
$res = $object->fetchLinesbytypeproduct(1);
$object->calculateCosts();
$res = $object->fetchLines();
print ($res == 0 && $object->status >= $object::STATUS_VALIDATED) ? '' : load_fiche_titre($langs->trans('BOMServicesList'), '', 'service');
// Buttons for actions
print ' <form name="addservice" id="addservice" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . (($action != 'editline') ? '' : '') . '" method="POST">
<input type="hidden" name="token" value="' . newToken() . '">
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline') . '">
<input type="hidden" name="mode" value="">
<input type="hidden" name="page_y" value=""> <input type="hidden" name="id" value="' . $object->id . '">
';
if ($action != 'presend' && $action != 'editline') {
print '<div class="tabsAction">' . "\n";
$parameters = array();
$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if ($reshook < 0) {
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
if (!empty($conf->use_javascript_ajax) && $object->status == 0) {
$tagidfortablednd = 'tablelinesservice';
include DOL_DOCUMENT_ROOT . '/core/tpl/ajaxrow.tpl.php';
}
print '<div class="div-table-responsive-no-min">';
if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
print '<table id="tablelinesservice" class="noborder noshadow centpercent">';
}
if (!empty($object->lines)) {
$object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1, '/bom/tpl');
}
// Form to add new line
if ($object->status == 0 && $permissiontoadd && $action != 'selectlines') {
if ($action != 'editline') {
// Add services form
$parameters = array();
$reshook = $hookmanager->executeHooks('formAddObjectServiceLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
if (empty($reshook))
$object->formAddObjectLine(1, $mysoc, null, '/bom/tpl');
}
}
}
if (empty($reshook)) {
// Send
//if (empty($user->socid)) {
// print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=presend&mode=init#formmailbeforetitle">' . $langs->trans('SendMail') . '</a>'."\n";
if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
print '</table>';
}
print '</div>';
print "</form>\n";
mrpCollapseBomManagement();
$res = $object->fetchLines();
// Buttons for actions
if ($action != 'presend' && $action != 'editline') {
print '<div class="tabsAction">'."\n";
$parameters = array();
$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if ($reshook < 0) {
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
}
if (empty($reshook)) {
// Send
//if (empty($user->socid)) {
// print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=presend&mode=init#formmailbeforetitle">' . $langs->trans('SendMail') . '</a>'."\n";
//}
// Back to draft
if ($object->status == $object::STATUS_VALIDATED) {
if ($permissiontoadd) {
print '<a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=setdraft&token=' . newToken() . '">' . $langs->trans("SetToDraft") . '</a>' . "\n";
}
if ($object->status == $object::STATUS_VALIDATED) {
if ($permissiontoadd) {
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=setdraft&token='.newToken().'">'.$langs->trans("SetToDraft").'</a>'."\n";
}
}
// Modify
if ($object->status == $object::STATUS_DRAFT) {
if ($permissiontoadd) {
print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=edit&token=' . newToken() . '">' . $langs->trans("Modify") . '</a>' . "\n";
} else {
print '<a class="butActionRefused classfortooltip" href="#" title="' . dol_escape_htmltag($langs->trans("NotEnoughPermissions")) . '">' . $langs->trans('Modify') . '</a>' . "\n";
}
if ($object->status == $object::STATUS_DRAFT) {
if ($permissiontoadd) {
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit&token='.newToken().'">'.$langs->trans("Modify").'</a>'."\n";
} else {
print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("NotEnoughPermissions")).'">'.$langs->trans('Modify').'</a>'."\n";
}
}
// Validate
if ($object->status == $object::STATUS_DRAFT) {
if ($permissiontoadd) {
if (is_array($object->lines) && count($object->lines) > 0) {
print '<a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&amp;action=validate&amp;token=' . newToken() . '">' . $langs->trans("Validate") . '</a>' . "\n";
} else {
$langs->load("errors");
print '<a class="butActionRefused" href="" title="' . $langs->trans("ErrorAddAtLeastOneLineFirst") . '">' . $langs->trans("Validate") . '</a>' . "\n";
}
if ($object->status == $object::STATUS_DRAFT) {
if ($permissiontoadd) {
if (is_array($object->lines) && count($object->lines) > 0) {
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&amp;action=validate&amp;token='.newToken().'">'.$langs->trans("Validate").'</a>'."\n";
} else {
$langs->load("errors");
print '<a class="butActionRefused" href="" title="'.$langs->trans("ErrorAddAtLeastOneLineFirst").'">'.$langs->trans("Validate").'</a>'."\n";
}
}
}
// Re-open
if ($permissiontoadd && $object->status == $object::STATUS_CANCELED) {
print '<a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=reopen&token=' . newToken() . '">' . $langs->trans("ReOpen") . '</a>' . "\n";
}
if ($permissiontoadd && $object->status == $object::STATUS_CANCELED) {
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=reopen&token='.newToken().'">'.$langs->trans("ReOpen").'</a>'."\n";
}
// Create MO
if (isModEnabled('mrp')) {
if ($object->status == $object::STATUS_VALIDATED && !empty($user->rights->mrp->write)) {
print '<a class="butAction" href="' . DOL_URL_ROOT . '/mrp/mo_card.php?action=create&fk_bom=' . $object->id . '&token=' . newToken() . '&backtopageforcancel=' . urlencode($_SERVER["PHP_SELF"] . '?id=' . $object->id) . '">' . $langs->trans("CreateMO") . '</a>' . "\n";
}
if (isModEnabled('mrp')) {
if ($object->status == $object::STATUS_VALIDATED && !empty($user->rights->mrp->write)) {
print '<a class="butAction" href="'.DOL_URL_ROOT.'/mrp/mo_card.php?action=create&fk_bom='.$object->id.'&token='.newToken().'&backtopageforcancel='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id).'">'.$langs->trans("CreateMO").'</a>'."\n";
}
}
// Clone
if ($permissiontoadd) {
print dolGetButtonAction($langs->trans("ToClone"), '', 'default', $_SERVER['PHP_SELF'] . '?id=' . $object->id . (!empty($object->socid) ? '&socid=' . $object->socid : "") . '&action=clone&object=bom', 'clone', $permissiontoadd);
}
if ($permissiontoadd) {
print dolGetButtonAction($langs->trans("ToClone"), '', 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.(!empty($object->socid) ? '&socid='.$object->socid : "").'&action=clone&object=bom', 'clone', $permissiontoadd);
}
// Close / Cancel
if ($permissiontoadd && $object->status == $object::STATUS_VALIDATED) {
print '<a class="butActionDelete" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=close&token=' . newToken() . '">' . $langs->trans("Disable") . '</a>' . "\n";
}
if ($permissiontoadd && $object->status == $object::STATUS_VALIDATED) {
print '<a class="butActionDelete" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=close&token='.newToken().'">'.$langs->trans("Disable").'</a>'."\n";
}
/*
if ($user->rights->bom->write)
{
if ($object->status == 1)
{
print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=disable&token='.newToken().'">'.$langs->trans("Disable").'</a>'."\n";
}
else
{
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=enable&token='.newToken().'">'.$langs->trans("Enable").'</a>'."\n";
}
}
*/
if ($user->rights->bom->write)
{
if ($object->status == 1)
{
print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=disable&token='.newToken().'">'.$langs->trans("Disable").'</a>'."\n";
}
else
{
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=enable&token='.newToken().'">'.$langs->trans("Enable").'</a>'."\n";
}
}
*/
// Delete
print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=delete&token=' . newToken(), 'delete', $permissiontodelete);
}
print '</div>' . "\n";
print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', $permissiontodelete);
}
// Select mail models is same action as presend
if (GETPOST('modelselected')) {
$action = 'presend';
}
if ($action != 'presend') {
print '<div class="fichecenter"><div class="fichehalfleft">';
print '<a name="builddoc"></a>'; // ancre
// Documents
$objref = dol_sanitizeFileName($object->ref);
$relativepath = $objref . '/' . $objref . '.pdf';
$filedir = $conf->bom->dir_output . '/' . $objref;
$urlsource = $_SERVER["PHP_SELF"] . "?id=" . $object->id;
$genallowed = $user->rights->bom->read; // If you can read, you can build the PDF to read content
$delallowed = $user->rights->bom->write; // If you can create/edit, you can remove a file on card
print $formfile->showdocuments('bom', $objref, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 1, 0, 0, 28, 0, '', '', '', $langs->defaultlang);
// Show links to link elements
$linktoelem = $form->showLinkToObjectBlock($object, null, array('bom'));
$somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
print '</div><div class="fichehalfright">';
$MAXEVENT = 10;
$morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', DOL_URL_ROOT . '/bom/bom_agenda.php?id=' . $object->id);
// List of actions on element
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formactions.class.php';
$formactions = new FormActions($db);
$somethingshown = $formactions->showactions($object, $object->element, 0, 1, '', $MAXEVENT, '', $morehtmlcenter);
print '</div></div>';
}
//Select mail models is same action as presend
if (GETPOST('modelselected')) {
$action = 'presend';
}
// Presend form
$modelmail = 'bom';
$defaulttopic = 'InformationMessage';
$diroutput = $conf->bom->dir_output;
$trackid = 'bom' . $object->id;
include DOL_DOCUMENT_ROOT . '/core/tpl/card_presend.tpl.php';
print '</div>'."\n";
}
// Select mail models is same action as presend
if (GETPOST('modelselected')) {
$action = 'presend';
}
if ($action != 'presend') {
print '<div class="fichecenter"><div class="fichehalfleft">';
print '<a name="builddoc"></a>'; // ancre
// Documents
$objref = dol_sanitizeFileName($object->ref);
$relativepath = $objref.'/'.$objref.'.pdf';
$filedir = $conf->bom->dir_output.'/'.$objref;
$urlsource = $_SERVER["PHP_SELF"]."?id=".$object->id;
$genallowed = $user->rights->bom->read; // If you can read, you can build the PDF to read content
$delallowed = $user->rights->bom->write; // If you can create/edit, you can remove a file on card
print $formfile->showdocuments('bom', $objref, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 1, 0, 0, 28, 0, '', '', '', $langs->defaultlang);
// Show links to link elements
$linktoelem = $form->showLinkToObjectBlock($object, null, array('bom'));
$somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
print '</div><div class="fichehalfright">';
$MAXEVENT = 10;
$morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', DOL_URL_ROOT.'/bom/bom_agenda.php?id='.$object->id);
// List of actions on element
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
$formactions = new FormActions($db);
$somethingshown = $formactions->showactions($object, $object->element, 0, 1, '', $MAXEVENT, '', $morehtmlcenter);
print '</div></div>';
}
//Select mail models is same action as presend
if (GETPOST('modelselected')) {
$action = 'presend';
}
// Presend form
$modelmail = 'bom';
$defaulttopic = 'InformationMessage';
$diroutput = $conf->bom->dir_output;
$trackid = 'bom'.$object->id;
include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php';
}
// End of page
llxFooter();
$db->close();

View File

@ -187,8 +187,8 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
print dol_get_fiche_end();
$viewlink = dolGetButtonTitle($langs->trans('GroupByProduct'), '', 'fa fa-bars imgforviewmode', $_SERVER['PHP_SELF'].'?id='.$object->id.'&token='.newToken(), '', 1, array('morecss' => 'reposition '.($action !== 'treeview' ? 'btnTitleSelected':'')));
$viewlink .= dolGetButtonTitle($langs->trans('TreeStructure'), '', 'fa fa-stream imgforviewmode', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=treeview&token='.newToken(), '', 1, array('morecss' => 'reposition marginleftonly '.($action == 'treeview' ? 'btnTitleSelected':'')));
$viewlink = dolGetButtonTitle($langs->trans('GroupByX', $langs->transnoentitiesnoconv("Products")), '', 'fa fa-bars imgforviewmode', $_SERVER['PHP_SELF'].'?id='.$object->id.'&token='.newToken(), '', 1, array('morecss' => 'reposition '.($action !== 'treeview' ? 'btnTitleSelected':'')));
$viewlink .= dolGetButtonTitle($langs->trans('TreeView'), '', 'fa fa-stream imgforviewmode', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=treeview&token='.newToken(), '', 1, array('morecss' => 'reposition marginleftonly '.($action == 'treeview' ? 'btnTitleSelected':'')));
print load_fiche_titre($langs->trans("BOMNetNeeds"), $viewlink, '');

View File

@ -102,9 +102,9 @@ class BOM extends CommonObject
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'notnull'=>1, 'searchall'=>1, 'showoncombobox'=>'2', 'autofocusoncreate'=>1, 'css'=>'minwidth300 maxwidth400', 'csslist'=>'tdoverflowmax200'),
'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'position'=>33, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing', 1=>'Disassemble'), 'css'=>'minwidth175', 'csslist'=>'minwidth175 center'),
//'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>-1, 'position'=>32, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing')),
'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:1:(finished IS NULL or finished <> 0)', 'label'=>'Product', 'picto'=>'product', 'enabled'=>1, 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'help'=>'ProductBOMHelp', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax100'),
'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:1:((finished:is:null) or (finished:!=:0))', 'label'=>'Product', 'picto'=>'product', 'enabled'=>1, 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'help'=>'ProductBOMHelp', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax100'),
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-1, 'position'=>60, 'notnull'=>-1,),
'qty' => array('type'=>'real', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>1, 'default'=>1, 'position'=>55, 'notnull'=>1, 'isameasure'=>'1', 'css'=>'maxwidth75imp'),
'qty' => array('type'=>'real', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>1, 'default'=>1, 'position'=>55, 'notnull'=>1, 'isameasure'=>'1', 'css'=>'maxwidth50imp right'),
//'efficiency' => array('type'=>'real', 'label'=>'ManufacturingEfficiency', 'enabled'=>1, 'visible'=>-1, 'default'=>1, 'position'=>100, 'notnull'=>0, 'css'=>'maxwidth50imp', 'help'=>'ValueOfMeansLossForProductProduced'),
'duration' => array('type'=>'duration', 'label'=>'EstimatedDuration', 'enabled'=>1, 'visible'=>-1, 'position'=>101, 'notnull'=>-1, 'css'=>'maxwidth50imp', 'help'=>'EstimatedDurationDesc'),
'fk_warehouse' => array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:0', 'label'=>'WarehouseForProduction', 'picto'=>'stock', 'enabled'=>1, 'visible'=>-1, 'position'=>102, 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax100'),

View File

@ -107,7 +107,7 @@ print '<td class="bordertop nobottom linecoldescription minwidth500imp">';
if (isModEnabled("product") || isModEnabled("service")) {
if ($filtertype == 1) {
print $langs->trans("Service");
} elseif (!empty($conf->global->BOM_SUB_BOM)) {
} else {
print $langs->trans("Product");
}
echo '<span class="prod_entry_mode_predef">';

View File

@ -948,26 +948,6 @@ while ($currentdaytoshow < $lastdaytoshow) {
$usernames[] = $tmpuser;
}
/*
if ($filtert > 0)
{
$tmpuser = new User($db);
$tmpuser->fetch($filtert);
$usernames[] = $tmpuser;
}
else if ($usergroup)
{
$tmpgroup = new UserGroup($db);
$tmpgroup->fetch($usergroup);
$usernames = $tmpgroup->listUsersForGroup();
}
else
{
$tmpgroup = new UserGroup($db);
//$tmpgroup->fetch($usergroup); No fetch, we want all users for all groups
$usernames = $tmpgroup->listUsersForGroup();
}*/
// Load array of colors by type
$colorsbytype = array();
$labelbytype = array();

View File

@ -72,6 +72,10 @@ if (is_array($remains)) {
unset($remains[$key]);
}
}
} elseif ($remains) {
$remains = array(price2num($remains));
} else {
$remains = array();
}
// Treatment

View File

@ -51,7 +51,7 @@ if (isModEnabled('accounting')) {
}
// Load translation files required by the page
$langs->loadLangs(array("banks", "bills", "categories", "companies", "compta"));
$langs->loadLangs(array("banks", "bills", "categories", "companies", "compta", "withdrawals"));
$action = GETPOST('action', 'aZ09');
$cancel = GETPOST('cancel', 'alpha');
@ -140,6 +140,9 @@ if (empty($reshook)) {
$object->proprio = trim(GETPOST("proprio", 'alphanohtml'));
$object->owner_address = trim(GETPOST("owner_address", 'alphanohtml'));
$object->owner_zip = trim(GETPOST("owner_zip", 'alphanohtml'));
$object->owner_town = trim(GETPOST("owner_town", 'alphanohtml'));
$object->owner_country_id = GETPOST("owner_country_id", 'int');
$object->ics = trim(GETPOST("ics", 'alpha'));
$object->ics_transfer = trim(GETPOST("ics_transfer", 'alpha'));
@ -241,6 +244,9 @@ if (empty($reshook)) {
$object->proprio = trim(GETPOST("proprio", 'alphanohtml'));
$object->owner_address = trim(GETPOST("owner_address", 'alphanohtml'));
$object->owner_zip = trim(GETPOST("owner_zip", 'alphanohtml'));
$object->owner_town = trim(GETPOST("owner_town", 'alphanohtml'));
$object->owner_country_id = GETPOST("owner_country_id", 'int');
$object->ics = trim(GETPOST("ics", 'alpha'));
$object->ics_transfer = trim(GETPOST("ics_transfer", 'alpha'));
@ -422,7 +428,8 @@ if ($action == 'create') {
print '<tr><td class="fieldrequired">'.$langs->trans("BankAccountCountry").'</td>';
print '<td>';
print img_picto('', 'country', 'class="pictofixedwidth"').$form->select_country($selectedcode, 'account_country_id');
print img_picto('', 'country', 'class="pictofixedwidth"');
print $form->select_country($selectedcode, 'account_country_id');
if ($user->admin) {
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
}
@ -438,6 +445,14 @@ if ($action == 'create') {
}
print '</td></tr>';
$type = (GETPOSTISSET("type") ? GETPOST('type', 'int') : Account::TYPE_CURRENT); // add default value
if ($type == Account::TYPE_SAVINGS || $type == Account::TYPE_CURRENT) {
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
print '<textarea class="flat quatrevingtpercent" name="domiciliation" rows="'.ROWS_2.'">';
print (GETPOSTISSET('domiciliation') ?GETPOST('domiciliation') : $object->domiciliation);
print "</textarea></td></tr>";
}
// Web
print '<tr><td>'.$langs->trans("Web").'</td>';
print '<td>';
@ -552,18 +567,15 @@ if ($action == 'create') {
print '<td><input maxlength="11" type="text" class="flat minwidth150" name="bic" value="'.(GETPOSTISSET('bic') ?GETPOST('bic', 'alpha') : $object->bic).'"></td></tr>';
if (isModEnabled('paymentbybanktransfer')) {
print '<tr><td>'.$langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation").'</td>';
print '<td><input type="checkbox" class="flat minwidth150" name="pti_in_ctti"'. (empty(GETPOST('pti_in_ctti')) ? '' : ' checked ') . '>&nbsp;';
print img_picto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp"), 'info');
print '<tr><td>'.$form->textwithpicto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation"), $langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp")).'</td>';
print '<td><input type="checkbox" class="flat" name="pti_in_ctti"'. (empty(GETPOST('pti_in_ctti')) ? '' : ' checked ') . '>';
print '</td></tr>';
}
print '</table>';
print '<hr>';
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
print '<textarea class="flat quatrevingtpercent" name="domiciliation" rows="'.ROWS_2.'">';
print (GETPOSTISSET('domiciliation') ?GETPOST('domiciliation') : $object->domiciliation);
print "</textarea></td></tr>";
print '<tr><td>'.$langs->trans("BankAccountOwner").'</td>';
print '<table class="border centpercent">';
print '<tr><td class="titlefieldcreate">'.$langs->trans("BankAccountOwner").'</td>';
print '<td><input type="text" class="flat minwidth300" name="proprio" value="'.(GETPOST('proprio') ?GETPOST('proprio', 'alpha') : $object->proprio).'">';
print '</td></tr>';
@ -572,8 +584,22 @@ if ($action == 'create') {
print (GETPOST('owner_address') ?GETPOST('owner_address', 'alpha') : $object->owner_address);
print "</textarea></td></tr>";
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerZip").'</td>';
print '<td><input type="text" class="flat maxwidth100" name="owner_zip" value="'.(GETPOST('owner_zip') ?GETPOST('owner_zip', 'alpha') : $object->owner_zip).'">';
print '</td></tr>';
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerTown").'</td>';
print '<td><input type="text" class="flat maxwidth200" name="owner_town" value="'.(GETPOST('owner_town') ?GETPOST('owner_town', 'alpha') : $object->owner_town).'">';
print '</td></tr>';
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerCountry").'</td>';
print '<td>';
print img_picto('', 'country', 'class="pictofixedwidth"');
print $form->select_country(GETPOST('owner_country_id') ?GETPOST('owner_country_id', 'alpha') : $object->owner_country_id, 'owner_country_id');
print '</td></tr>';
print '</table>';
print '<br>';
print '<hr>';
}
print '<table class="border centpercent">';
@ -722,8 +748,6 @@ if ($action == 'create') {
print '</table>';
if ($object->type == Account::TYPE_SAVINGS || $object->type == Account::TYPE_CURRENT) {
//print '<div class="underbanner clearboth"></div>';
print '<table class="border tableforfield centpercent">';
print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("BankName").'</td>';
@ -787,16 +811,11 @@ if ($action == 'create') {
print '<td>'.$object->ics_transfer.'</td>';
print '</tr>';
print '<tr><td>'.$langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation").'</td><td>';
print (empty($object->pti_in_ctti) ? $langs->trans("No") : $langs->trans("Yes")) . '&nbsp;';
print img_picto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp"), 'info');
print '<tr><td>'.$form->textwithpicto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation"), $langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp")).'</td><td>';
print (empty($object->pti_in_ctti) ? $langs->trans("No") : $langs->trans("Yes"));
print "</td></tr>\n";
}
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
print nl2br($object->domiciliation);
print "</td></tr>\n";
print '<tr><td>'.$langs->trans("BankAccountOwner").'</td><td>';
print $object->proprio;
print "</td></tr>\n";
@ -805,6 +824,22 @@ if ($action == 'create') {
print nl2br($object->owner_address);
print "</td></tr>\n";
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerZip").'</td>';
print '<td>'.$object->owner_zip;
print '</td></tr>';
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerTown").'</td>';
print '<td>'.$object->owner_town;
print '</td></tr>';
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerCountry").'</td>';
print '<td>';
$object->owner_country_code = dol_getIdFromCode($db, $object->owner_country_id, 'c_country', 'rowid', 'code');
$langs->load("dict");
print (empty($object->owner_country_code) ? '' : $langs->convToOutputCharset($langs->transnoentitiesnoconv("Country".$object->owner_country_code)));
print '</td></tr>';
print '</table>';
}
@ -933,6 +968,14 @@ if ($action == 'create') {
}
print '</td></tr>';
$type = (GETPOSTISSET('type') ? GETPOST('type', 'int') : $object->type); // add default current value
if ($type == Account::TYPE_SAVINGS || $type == Account::TYPE_CURRENT) {
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
print '<textarea class="flat quatrevingtpercent" name="domiciliation" rows="'.ROWS_2.'">';
print $object->domiciliation;
print "</textarea></td></tr>";
}
// Conciliable
print '<tr><td>'.$langs->trans("Conciliable").'</td>';
print '<td>';
@ -942,7 +985,7 @@ if ($action == 'create') {
} elseif ($conciliate == -3) {
print $langs->trans("No").' ('.$langs->trans("Closed").')';
} else {
print '<input type="checkbox" class="flat" id="norappro" name="norappro"'.(($conciliate > 0) ? '' : ' checked="checked"').'"> <label for="norappro">'.$langs->trans("DisableConciliation").'</label>';
print '<input type="checkbox" class="flat" id="norappro" name="norappro"'.(($conciliate > 0) ? '' : ' checked="checked"').'"> <label for="norappro" class="opacitymedium">'.$langs->trans("DisableConciliation").'</label>';
}
print '</td></tr>';
@ -993,7 +1036,7 @@ if ($action == 'create') {
}
print '</table>';
print '<br>';
print '<hr>';
//print '<div class="underbanner clearboth"></div>';
@ -1030,8 +1073,6 @@ if ($action == 'create') {
if ($type == Account::TYPE_SAVINGS || $type == Account::TYPE_CURRENT) {
print '<br>';
//print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent">';
// If bank account
@ -1087,26 +1128,39 @@ if ($action == 'create') {
print '<tr><td>'.$form->textwithpicto($langs->trans("IDS"), $langs->trans("IDS").' ('.$langs->trans("UsedFor", $langs->transnoentitiesnoconv("BankTransfer")).')').'</td>';
print '<td><input class="minwidth150 maxwidth200onsmartphone" maxlength="32" type="text" class="flat" name="ics_transfer" value="'.(GETPOSTISSET('ics_transfer') ? GETPOST('ics_transfer', 'alphanohtml') : $object->ics_transfer).'"></td></tr>';
print '<tr><td>'.$langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation").'</td>';
print '<td><input type="checkbox" class="flat minwidth150" name="pti_in_ctti"'. ($object->pti_in_ctti ? ' checked ' : '') . '>&nbsp;';
print img_picto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp"), 'info');
print '<tr><td>'.$form->textwithpicto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation"), $langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp")).'</td>';
print '<td><input type="checkbox" class="flat" name="pti_in_ctti"'. ($object->pti_in_ctti ? ' checked ' : '') . '>';
print '</td></tr>';
}
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
print '<textarea class="flat quatrevingtpercent" name="domiciliation" rows="'.ROWS_2.'">';
print $object->domiciliation;
print "</textarea></td></tr>";
print '<tr><td>'.$langs->trans("BankAccountOwner").'</td>';
print '<td><input class="maxwidth200onsmartphone" type="text" class="flat" name="proprio" value="'.$object->proprio.'"></td>';
print '</tr>';
print '<tr><td>'.$langs->trans("BankAccountOwnerAddress").'</td><td>';
print '</table>';
print '<hr>';
print '<table class="border centpercent">';
print '<tr><td class="titlefieldcreate">'.$langs->trans("BankAccountOwnerAddress").'</td><td>';
print '<textarea class="flat quatrevingtpercent" name="owner_address" rows="'.ROWS_2.'">';
print $object->owner_address;
print "</textarea></td></tr>";
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerZip").'</td>';
print '<td><input type="text" class="flat maxwidth100" name="owner_zip" value="'.(GETPOST('owner_zip') ?GETPOST('owner_zip', 'alpha') : $object->owner_zip).'">';
print '</td></tr>';
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerTown").'</td>';
print '<td><input type="text" class="flat maxwidth200" name="owner_town" value="'.(GETPOST('owner_town') ?GETPOST('owner_town', 'alpha') : $object->owner_town).'">';
print '</td></tr>';
print '<tr><td class="tdtop">'.$langs->trans("BankAccountOwnerCountry").'</td>';
print '<td>';
print img_picto('', 'country', 'class="pictofixedwidth"');
print $form->select_country(GETPOST('owner_country_id') ?GETPOST('owner_country_id', 'alpha') : $object->owner_country_id, 'owner_country_id');
print '</td></tr>';
print '</table>';
}

View File

@ -146,12 +146,6 @@ class Account extends CommonObject
*/
public $iban_prefix;
/**
* Address of the bank
* @var string
*/
public $domiciliation;
/**
* XML SEPA format: place Payment Type Information (PmtTpInf) in Credit Transfer Transaction Information (CdtTrfTxInf)
* @var int
@ -169,7 +163,17 @@ class Account extends CommonObject
* @var string
*/
public $owner_address;
public $owner_zip;
public $owner_town;
public $owner_country_id;
public $owner_country_code;
/**
* Address of the bank account
* @var string
*/
public $domiciliation; // deprecated, use now address
public $address;
public $state_id;
public $state_code;
public $state;
@ -297,10 +301,13 @@ class Account extends CommonObject
'country_iban' =>array('type'=>'varchar(2)', 'label'=>'Country iban', 'enabled'=>1, 'visible'=>-1, 'position'=>75),
'cle_iban' =>array('type'=>'varchar(2)', 'label'=>'Cle iban', 'enabled'=>1, 'visible'=>-1, 'position'=>80),
'domiciliation' =>array('type'=>'varchar(255)', 'label'=>'Domiciliation', 'enabled'=>1, 'visible'=>-1, 'position'=>85),
'state_id' =>array('type'=>'integer', 'label'=>'State id', 'enabled'=>1, 'visible'=>-1, 'position'=>90),
'fk_pays' =>array('type'=>'integer', 'label'=>'Fk pays', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>95),
'state_id' =>array('type'=>'integer', 'label'=>'StateId', 'enabled'=>1, 'visible'=>-1, 'position'=>90),
'fk_pays' =>array('type'=>'integer', 'label'=>'Country', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>95),
'proprio' =>array('type'=>'varchar(60)', 'label'=>'Proprio', 'enabled'=>1, 'visible'=>-1, 'position'=>100),
'owner_address' =>array('type'=>'text', 'label'=>'Owner address', 'enabled'=>1, 'visible'=>-1, 'position'=>105),
'owner_address' =>array('type'=>'varchar(255)', 'label'=>'Owner address', 'enabled'=>1, 'visible'=>-1, 'position'=>105),
'owner_zip' =>array('type'=>'varchar(25)', 'label'=>'Owner zip', 'enabled'=>1, 'visible'=>-1, 'position'=>106),
'owner_town' =>array('type'=>'varchar(50)', 'label'=>'Owner town', 'enabled'=>1, 'visible'=>-1, 'position'=>107),
'owner_country_id' =>array('type'=>'integer', 'label'=>'Owner country', 'enabled'=>1, 'visible'=>-1, 'position'=>108),
'courant' =>array('type'=>'smallint(6)', 'label'=>'Courant', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>110),
'clos' =>array('type'=>'smallint(6)', 'label'=>'Clos', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>115),
'rappro' =>array('type'=>'smallint(6)', 'label'=>'Rappro', 'enabled'=>1, 'visible'=>-1, 'position'=>120),
@ -698,6 +705,9 @@ class Account extends CommonObject
$sql .= ", pti_in_ctti";
$sql .= ", proprio";
$sql .= ", owner_address";
$sql .= ", owner_zip";
$sql .= ", owner_town";
$sql .= ", owner_country_id";
$sql .= ", currency_code";
$sql .= ", rappro";
$sql .= ", min_allowed";
@ -713,7 +723,7 @@ class Account extends CommonObject
$sql .= ", '".$this->db->escape($this->label)."'";
$sql .= ", ".((int) $conf->entity);
$sql .= ", '".$this->db->escape($this->account_number)."'";
$sql .= ", ".($this->fk_accountancy_journal > 0 ? $this->db->escape($this->fk_accountancy_journal) : "null");
$sql .= ", ".($this->fk_accountancy_journal > 0 ? ((int) $this->fk_accountancy_journal) : "null");
$sql .= ", '".$this->db->escape($this->bank)."'";
$sql .= ", '".$this->db->escape($this->code_banque)."'";
$sql .= ", '".$this->db->escape($this->code_guichet)."'";
@ -725,6 +735,9 @@ class Account extends CommonObject
$sql .= ", ".((int) $this->pti_in_ctti);
$sql .= ", '".$this->db->escape($this->proprio)."'";
$sql .= ", '".$this->db->escape($this->owner_address)."'";
$sql .= ", '".$this->db->escape($this->owner_zip)."'";
$sql .= ", '".$this->db->escape($this->owner_town)."'";
$sql .= ", ".($this->owner_country_id > 0 ? ((int) $this->owner_country_id) : "null");
$sql .= ", '".$this->db->escape($this->currency_code)."'";
$sql .= ", ".((int) $this->rappro);
$sql .= ", ".price2num($this->min_allowed, 'MT');
@ -836,7 +849,7 @@ class Account extends CommonObject
$sql .= ",rappro = ".((int) $this->rappro);
$sql .= ",url = ".($this->url ? "'".$this->db->escape($this->url)."'" : "null");
$sql .= ",account_number = '".$this->db->escape($this->account_number)."'";
$sql .= ",fk_accountancy_journal = ".($this->fk_accountancy_journal > 0 ? $this->db->escape($this->fk_accountancy_journal) : "null");
$sql .= ",fk_accountancy_journal = ".($this->fk_accountancy_journal > 0 ? ((int) $this->fk_accountancy_journal) : "null");
$sql .= ",bank = '".$this->db->escape($this->bank)."'";
$sql .= ",code_banque='".$this->db->escape($this->code_banque)."'";
$sql .= ",code_guichet='".$this->db->escape($this->code_guichet)."'";
@ -848,6 +861,9 @@ class Account extends CommonObject
$sql .= ",pti_in_ctti=".((int) $this->pti_in_ctti);
$sql .= ",proprio = '".$this->db->escape($this->proprio)."'";
$sql .= ",owner_address = '".$this->db->escape($this->owner_address)."'";
$sql .= ",owner_zip = '".$this->db->escape($this->owner_zip)."'";
$sql .= ",owner_town = '".$this->db->escape($this->owner_town)."'";
$sql .= ",owner_country_id = ".($this->owner_country_id > 0 ? ((int) $this->owner_country_id) : "null");
$sql .= ",currency_code = '".$this->db->escape($this->currency_code)."'";
@ -931,6 +947,9 @@ class Account extends CommonObject
$sql .= ",domiciliation='".$this->db->escape($this->domiciliation)."'";
$sql .= ",proprio = '".$this->db->escape($this->proprio)."'";
$sql .= ",owner_address = '".$this->db->escape($this->owner_address)."'";
$sql .= ",owner_zip = '".$this->db->escape($this->owner_zip)."'";
$sql .= ",owner_town = '".$this->db->escape($this->owner_town)."'";
$sql .= ",owner_country_id = ".($this->owner_country_id > 0 ? ((int) $this->owner_country_id) : "null");
$sql .= ",state_id = ".($this->state_id > 0 ? $this->state_id : "null");
$sql .= ",fk_pays = ".($this->country_id > 0 ? $this->country_id : "null");
$sql .= " WHERE rowid = ".((int) $this->id);
@ -967,13 +986,13 @@ class Account extends CommonObject
$sql = "SELECT ba.rowid, ba.ref, ba.label, ba.bank, ba.number, ba.courant, ba.clos, ba.rappro, ba.url,";
$sql .= " ba.code_banque, ba.code_guichet, ba.cle_rib, ba.bic, ba.iban_prefix as iban,";
$sql .= " ba.domiciliation, ba.pti_in_ctti, ba.proprio, ba.owner_address, ba.state_id, ba.fk_pays as country_id,";
$sql .= " ba.domiciliation as address, ba.pti_in_ctti, ba.proprio, ba.owner_address, ba.owner_zip, ba.owner_town, ba.owner_country_id, ba.state_id, ba.fk_pays as country_id,";
$sql .= " ba.account_number, ba.fk_accountancy_journal, ba.currency_code,";
$sql .= " ba.min_allowed, ba.min_desired, ba.comment,";
$sql .= " ba.datec as date_creation, ba.tms as date_update, ba.ics, ba.ics_transfer,";
$sql .= ' c.code as country_code, c.label as country,';
$sql .= ' d.code_departement as state_code, d.nom as state';
$sql .= ' , aj.code as accountancy_journal';
$sql .= ' d.code_departement as state_code, d.nom as state,';
$sql .= ' aj.code as accountancy_journal';
$sql .= " FROM ".MAIN_DB_PREFIX."bank_account as ba";
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON ba.fk_pays = c.rowid';
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_departements as d ON ba.state_id = d.rowid';
@ -1009,10 +1028,14 @@ class Account extends CommonObject
$this->cle_rib = $obj->cle_rib;
$this->bic = $obj->bic;
$this->iban = $obj->iban;
$this->domiciliation = $obj->domiciliation;
$this->domiciliation = $obj->address;
$this->address = $obj->address;
$this->pti_in_ctti = $obj->pti_in_ctti;
$this->proprio = $obj->proprio;
$this->owner_address = $obj->owner_address;
$this->owner_zip = $obj->owner_zip;
$this->owner_town = $obj->owner_town;
$this->owner_country_id = $obj->owner_country_id;
$this->state_id = $obj->state_id;
$this->state_code = $obj->state_code;
@ -1047,7 +1070,7 @@ class Account extends CommonObject
return 0;
}
} else {
$this->error = $this->db->lasterror;
$this->error = $this->db->lasterror();
$this->errors[] = $this->error;
return -1;
}
@ -1723,6 +1746,9 @@ class Account extends CommonObject
$this->domiciliation = 'Banque de France';
$this->proprio = 'Owner';
$this->owner_address = 'Owner address';
$this->owner_zip = 'Owner zip';
$this->owner_town = 'Owner town';
$this->owner_country_id = 'Owner country_id';
$this->country_id = 1;
}

View File

@ -643,6 +643,8 @@ class Paiement extends CommonObject
$acc = new Account($this->db);
$result = $acc->fetch($this->fk_account);
if ($result < 0) {
$this->error = $acc->error;
$this->errors = $acc->errors;
$error++;
return -1;
}
@ -768,7 +770,7 @@ class Paiement extends CommonObject
}
// Add link 'InvoiceRefused' in bank_url
if (! $error && $label == '(InvoiceRefused)') {
if (!$error && $label == '(InvoiceRefused)') {
$result=$acc->add_url_line(
$bank_line_id,
$this->id_prelevement,
@ -788,6 +790,7 @@ class Paiement extends CommonObject
}
} else {
$this->error = $acc->error;
$this->errors = $acc->errors;
$error++;
}

View File

@ -213,11 +213,6 @@ if (empty($reshook)) {
$object->town = (string) GETPOST("town", 'alpha');
$object->country_id = (int) GETPOST("country_id", 'int');
$object->state_id = (int) GETPOST("state_id", 'int');
//$object->jabberid = GETPOST("jabberid", 'alpha');
//$object->skype = GETPOST("skype", 'alpha');
//$object->twitter = GETPOST("twitter", 'alpha');
//$object->facebook = GETPOST("facebook", 'alpha');
//$object->linkedin = GETPOST("linkedin", 'alpha');
$object->socialnetworks = array();
if (isModEnabled('socialnetworks')) {
foreach ($socialnetworks as $key => $value) {
@ -419,11 +414,6 @@ if (empty($reshook)) {
$object->email = (string) GETPOST('email', 'custom', 0, FILTER_SANITIZE_EMAIL);
$object->no_email = GETPOST("no_email", "int");
//$object->jabberid = GETPOST("jabberid", 'alpha');
//$object->skype = GETPOST("skype", 'alpha');
//$object->twitter = GETPOST("twitter", 'alpha');
//$object->facebook = GETPOST("facebook", 'alpha');
//$object->linkedin = GETPOST("linkedin", 'alpha');
$object->socialnetworks = array();
if (isModEnabled('socialnetworks')) {
foreach ($socialnetworks as $key => $value) {

View File

@ -702,22 +702,6 @@ class Contact extends CommonObject
$tmpobj->socialnetworks = $this->socialnetworks;
$usermustbemodified++;
}
// if ($tmpobj->skype != $this->skype) {
// $tmpobj->skype = $this->skype;
// $usermustbemodified++;
// }
// if ($tmpobj->twitter != $this->twitter) {
// $tmpobj->twitter = $this->twitter;
// $usermustbemodified++;
// }
// if ($tmpobj->facebook != $this->facebook) {
// $tmpobj->facebook = $this->facebook;
// $usermustbemodified++;
// }
// if ($tmpobj->linkedin != $this->linkedin) {
// $tmpobj->linkedin = $this->linkedin;
// $usermustbemodified++;
// }
if ($usermustbemodified) {
$result = $tmpobj->update($user, 0, 1, 1, 1);
if ($result < 0) {
@ -850,9 +834,6 @@ class Contact extends CommonObject
if ($this->fax && !empty($conf->global->LDAP_CONTACT_FIELD_FAX)) {
$info[$conf->global->LDAP_CONTACT_FIELD_FAX] = $this->fax;
}
if ($this->skype && !empty($conf->global->LDAP_CONTACT_FIELD_SKYPE)) {
$info[$conf->global->LDAP_CONTACT_FIELD_SKYPE] = $this->skype;
}
if ($this->note_private && !empty($conf->global->LDAP_CONTACT_FIELD_DESCRIPTION)) {
$info[$conf->global->LDAP_CONTACT_FIELD_DESCRIPTION] = dol_string_nohtmltag($this->note_private, 2);
}

View File

@ -443,7 +443,7 @@ abstract class CommonDocGenerator
}
}
$date = ($object->element == 'contrat' ? $object->date_contrat : $object->date);
$date = (isset($object->element) && $object->element == 'contrat' && isset($object->date_contrat)) ? $object->date_contrat : (isset($object->date) ? $object->date : null);
$resarray = array(
$array_key.'_id'=>$object->id,
@ -452,7 +452,7 @@ abstract class CommonDocGenerator
$array_key.'_ref_ext' => (property_exists($object, 'ref_ext') ? $object->ref_ext : ''),
$array_key.'_ref_customer'=>(!empty($object->ref_client) ? $object->ref_client : (empty($object->ref_customer) ? '' : $object->ref_customer)),
$array_key.'_ref_supplier'=>(!empty($object->ref_fournisseur) ? $object->ref_fournisseur : (empty($object->ref_supplier) ? '' : $object->ref_supplier)),
$array_key.'_source_invoice_ref'=>$invoice_source->ref,
$array_key.'_source_invoice_ref'=>((empty($invoice_source) || empty($invoice_source->ref)) ? '' : $invoice_source->ref),
// Dates
$array_key.'_hour'=>dol_print_date($date, 'hour'),
$array_key.'_date'=>dol_print_date($date, 'day'),

View File

@ -1735,15 +1735,17 @@ abstract class CommonInvoice extends CommonObject
$complementaryinfo .= '/30/'.$this->thirdparty->tva_intra;
}
$bankaccount = new Account($this->db);
// Header
$s = '';
$s .= "SPC\n";
$s .= "0200\n";
$s .= "1\n";
// Info seller
if ($this->fk_account > 0) {
// Bank BAN if country is LI or CH
// TODO Add
$bankaccount = new Account($this->db);
// TODO Add test on bank iban
$bankaccount->fetch($this->fk_account);
$s .= $bankaccount->iban."\n";
} else {

View File

@ -961,27 +961,6 @@ abstract class CommonObject
}
$outdone++;
}
} else { // Old code to remove
if (!empty($this->skype)) {
$outsocialnetwork .= dol_print_socialnetworks($this->skype, $this->id, $object->id, 'skype');
}
$outdone++;
if (!empty($this->jabberid)) {
$outsocialnetwork .= dol_print_socialnetworks($this->jabberid, $this->id, $object->id, 'jabber');
}
$outdone++;
if (!empty($this->twitter)) {
$outsocialnetwork .= dol_print_socialnetworks($this->twitter, $this->id, $object->id, 'twitter');
}
$outdone++;
if (!empty($this->facebook)) {
$outsocialnetwork .= dol_print_socialnetworks($this->facebook, $this->id, $object->id, 'facebook');
}
$outdone++;
if (!empty($this->linkedin)) {
$outsocialnetwork .= dol_print_socialnetworks($this->linkedin, $this->id, $object->id, 'linkedin');
}
$outdone++;
}
if ($outsocialnetwork) {

View File

@ -27,6 +27,12 @@
*/
trait CommonSocialNetworks
{
/**
* @var array array of socialnetworks
*/
public $socialnetworks;
/**
* Show social network part if the module is enabled with hiding functionality
*

View File

@ -7801,7 +7801,7 @@ class Form
}
/**
* Function to forge a SQL criteria
* Function to forge a SQL criteria from a Dolibarr filter syntax string.
*
* @param array $matches Array of found string by regex search. Example: "t.ref:like:'SO-%'" or "t.date_creation:<:'20160101'" or "t.nature:is:NULL"
* @return string Forged criteria. Example: "t.field like 'abc%'"
@ -7816,17 +7816,30 @@ class Form
}
$tmp = explode(':', $matches[1]);
if (count($tmp) < 3) {
return '';
return '1=2'; // An always false request
}
$tmpescaped = $tmp[2];
$regbis = array();
if (preg_match('/^\'(.*)\'$/', $tmpescaped, $regbis)) {
$tmpescaped = "'".$db->escape($regbis[1])."'";
} else {
$tmpescaped = $db->escape($tmpescaped);
}
return $db->escape($tmp[0]).' '.strtoupper($db->escape($tmp[1]))." ".$tmpescaped;
if ($tmp[1] == '!=') {
$tmp[1] = '<>';
}
if (preg_match('/[\(\)]/', $tmp[0])) {
return '1=2'; // An always false request
}
if (! in_array($tmp[1], array('<', '>', '<>', 'is', 'isnot', '=', 'like'))) {
return '1=2'; // An always false request
}
return $db->escape($tmp[0]).' '.strtoupper($db->escape($tmp[1])).' '.$tmpescaped;
}
/**

View File

@ -39,6 +39,9 @@ class FormProjets
*/
public $error = '';
public $errors = array();
public $nboftasks;
@ -622,6 +625,8 @@ class FormProjets
if ($resql) {
$num = $this->db->num_rows($resql);
$i = 0;
$sellist = '';
if ($num > 0) {
$sellist = '<select class="flat elementselect css'.$table_element.($morecss ? ' '.$morecss : '').'" name="elementselect">';
$sellist .= '<option value="-1"'.($placeholder ? ' class="optiongrey"' : '').'>'.$placeholder.'</option>';

View File

@ -1291,7 +1291,6 @@ class Ldap
$this->firstname = $this->convToOutputCharset($result[0][$this->attr_firstname][0], $this->ldapcharset);
$this->login = $this->convToOutputCharset($result[0][$this->attr_login][0], $this->ldapcharset);
$this->phone = $this->convToOutputCharset($result[0][$this->attr_phone][0], $this->ldapcharset);
$this->skype = $this->convToOutputCharset($result[0][$this->attr_skype][0], $this->ldapcharset);
$this->fax = $this->convToOutputCharset($result[0][$this->attr_fax][0], $this->ldapcharset);
$this->mail = $this->convToOutputCharset($result[0][$this->attr_mail][0], $this->ldapcharset);
$this->mobile = $this->convToOutputCharset($result[0][$this->attr_mobile][0], $this->ldapcharset);

View File

@ -1433,13 +1433,17 @@ function dol_string_nounprintableascii($str, $removetabcrlf = 1)
/**
* Returns text escaped for inclusion into javascript code
*
* @param string $stringtoescape String to escape
* @param int $mode 0=Escape also ' and " into ', 1=Escape ' but not " for usage into 'string', 2=Escape " but not ' for usage into "string", 3=Escape ' and " with \
* @param int $noescapebackslashn 0=Escape also \n. 1=Do not escape \n.
* @return string Escaped string. Both ' and " are escaped into ' if they are escaped.
* @param string $stringtoescape String to escape
* @param int $mode 0=Escape also ' and " into ', 1=Escape ' but not " for usage into 'string', 2=Escape " but not ' for usage into "string", 3=Escape ' and " with \
* @param int $noescapebackslashn 0=Escape also \n. 1=Do not escape \n.
* @return string Escaped string. Both ' and " are escaped into ' if they are escaped.
*/
function dol_escape_js($stringtoescape, $mode = 0, $noescapebackslashn = 0)
{
if (is_null($stringtoescape)) {
return '';
}
// escape quotes and backslashes, newlines, etc.
$substitjs = array("&#039;"=>"\\'", "\r"=>'\\r');
//$substitjs['</']='<\/'; // We removed this. Should be useless.
@ -11929,8 +11933,8 @@ function show_actions_messaging($conf, $langs, $db, $filterobj, $objcon = '', $n
'contact_id'=>$obj->fk_contact,
'socpeopleassigned' => $contactaction->socpeopleassigned,
'lastname'=>$obj->lastname,
'firstname'=>$obj->firstname,
'lastname' => (empty($obj->lastname) ? '' : $obj->lastname),
'firstname' => (empty($obj->firstname) ? '' : $obj->firstname),
'fk_element'=>$obj->fk_element,
'elementtype'=>$obj->elementtype,
// Type of event

View File

@ -344,7 +344,9 @@ function restrictedArea(User $user, $features, $object = 0, $tableandshare = '',
} else {
$objectid = $object; // $objectid can be X or 'X,Y,Z'
}
$objectid = preg_replace('/[^0-9\.\,]/', '', $objectid); // For the case value is coming from a non sanitized user input
if ($objectid) {
$objectid = preg_replace('/[^0-9\.\,]/', '', $objectid); // For the case value is coming from a non sanitized user input
}
//dol_syslog("functions.lib:restrictedArea $feature, $objectid, $dbtablename, $feature2, $dbt_socfield, $dbt_select, $isdraft");
//print "user_id=".$user->id.", features=".$features.", feature2=".$feature2.", objectid=".$objectid;

View File

@ -162,7 +162,7 @@ class html_cerfafr extends ModeleDon
$form = str_replace('__MAIN_INFO_SOCIETE_ADDRESS__', $mysoc->address, $form);
$form = str_replace('__MAIN_INFO_SOCIETE_ZIP__', $mysoc->zip, $form);
$form = str_replace('__MAIN_INFO_SOCIETE_TOWN__', $mysoc->town, $form);
$form = str_replace('__MAIN_INFO_SOCIETE_OBJECT__', $mysoc->object, $form);
$form = str_replace('__MAIN_INFO_SOCIETE_OBJECT__', $mysoc->socialobject, $form);
$form = str_replace('__DONATOR_FIRSTNAME__', $don->firstname, $form);
$form = str_replace('__DONATOR_LASTNAME__', $don->lastname, $form);
$form = str_replace('__DONATOR_SOCIETE__', $don->societe, $form);

View File

@ -250,9 +250,17 @@ class modHRM extends DolibarrModules
$this->rights[$r][5] = 'read'; // In php code, permission will be checked by test if ($user->rights->hrm->compare_advance->read)
$r++;
// Evaluation
$this->rights[$r][0] = 4029; // Permission id (must not be already used)
$this->rights[$r][1] = 'Read all evaluations'; // Permission label
$this->rights[$r][3] = 0; // Permission by default for new user (0/1)
$this->rights[$r][4] = 'evaluation';
$this->rights[$r][5] = 'readall'; // In php code, permission will be checked by test if ($user->rights->hrm->evaluation->read)
$r++;
// Read employee
$this->rights[$r][0] = 4031; // Permission id (must not be already used)
$this->rights[$r][1] = 'Read personal information'; // Permission label
$this->rights[$r][1] = 'Read personal/HR information'; // Permission label
$this->rights[$r][3] = 0; // Permission by default for new user (0/1)
$this->rights[$r][4] = 'read_personal_information';
$this->rights[$r][5] = 'read'; // In php code, permission will be checked by test if ($user->rights->hrm->read_personal_information->read)
@ -260,19 +268,11 @@ class modHRM extends DolibarrModules
// Write employee
$this->rights[$r][0] = 4032; // Permission id (must not be already used)
$this->rights[$r][1] = 'Write personal information'; // Permission label
$this->rights[$r][1] = 'Write personal/HR information'; // Permission label
$this->rights[$r][3] = 0; // Permission by default for new user (0/1)
$this->rights[$r][4] = 'write_personal_information';
$this->rights[$r][5] = 'write'; // In php code, permission will be checked by test if ($user->rights->hrm->write_personal_information->write)
$r++;
// Evaluation
$this->rights[$r][0] = 4033; // Permission id (must not be already used)
$this->rights[$r][1] = 'Read all evaluations'; // Permission label
$this->rights[$r][3] = 0; // Permission by default for new user (0/1)
$this->rights[$r][4] = 'evaluation';
$this->rights[$r][5] = 'readall'; // In php code, permission will be checked by test if ($user->rights->hrm->evaluation->read)
$r++;
}
/**

View File

@ -32,7 +32,6 @@ include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
*/
class modImport extends DolibarrModules
{
/**
* Constructor. Define names, constants, directories, boxes, permissions
*

View File

@ -157,7 +157,7 @@ class modTicket extends DolibarrModules
'tabfieldvalue' => array("code,label,pos,use_default", "code,label,pos,use_default", "code,label,pos,use_default,public,fk_parent", "code,label,pos,use_default"),
'tabfieldinsert' => array("code,label,pos,use_default", "code,label,pos,use_default", "code,label,pos,use_default,public,fk_parent", "code,label,pos,use_default"),
'tabrowid' => array("rowid", "rowid", "rowid", "rowid"),
'tabcond' => array($conf->ticket->enabled, $conf->ticket->enabled, $conf->ticket->enabled, $conf->ticket->enabled && !empty($conf->global->TICKET_ENABLE_RESOLUTION)),
'tabcond' => array($conf->ticket->enabled, $conf->ticket->enabled, $conf->ticket->enabled, $conf->ticket->enabled && getDolGlobalString('TICKET_ENABLE_RESOLUTION')),
'tabhelp' => array(
array('code'=>$langs->trans("EnterAnyCode"), 'use_default'=>$langs->trans("Enter0or1")),
array('code'=>$langs->trans("EnterAnyCode"), 'use_default'=>$langs->trans("Enter0or1")),

View File

@ -32,7 +32,6 @@ include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
*/
class modUser extends DolibarrModules
{
/**
* Constructor. Define names, constants, directories, boxes, permissions
*

View File

@ -133,9 +133,15 @@ $(document).ready(function () {
</script>
<?php } ?>
<div class="login_center center"<?php print empty($conf->global->MAIN_LOGIN_BACKGROUND) ? ' style="background-size: cover; background-position: center center; background-attachment: fixed; background-repeat: no-repeat; background-image: linear-gradient(rgb('.$colorbackhmenu1.',0.3), rgb(240,240,240));"' : '' ?>>
<div class="login_center center"<?php
$backstyle = 'background: linear-gradient('.($conf->browser->layout == 'phone' ? '0deg' : '4deg').', rgb(240,240,240) 52%, rgb('.$colorbackhmenu1.') 52.1%);';
// old style: $backstyle = 'background-image: linear-gradient(rgb('.$colorbackhmenu1.',0.3), rgb(240,240,240));';
$backstyle = getDolGlobalString('MAIN_LOGIN_BACKGROUND_STYLE', $backstyle);
print empty($conf->global->MAIN_LOGIN_BACKGROUND) ? ' style="background-size: cover; background-position: center center; background-attachment: fixed; background-repeat: no-repeat; '.$backstyle.'"' : '';
?>>
<div class="login_vertical_align">
<form id="login" name="login" method="post" action="<?php echo $php_self; ?>">
<input type="hidden" name="token" value="<?php echo newToken(); ?>" />

View File

@ -82,11 +82,11 @@ class ActionsDatapolicy
/**
* Overloading the doActions function : replacing the parent's function with the one below
*
* @param array $parameters Hook metadatas (context, etc...)
* @param CommonObject $object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...)
* @param string $action Current action (if set). Generally create or edit or null
* @param HookManager $hookmanager Hook manager propagated to allow calling another hook
* @return int < 0 on error, 0 on success, 1 to replace standard code
* @param array $parameters Hook metadatas (context, etc...)
* @param Societe|CommonObject $object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...)
* @param string $action Current action (if set). Generally create or edit or null
* @param HookManager $hookmanager Hook manager propagated to allow calling another hook
* @return int < 0 on error, 0 on success, 1 to replace standard code
*/
public function doActions($parameters, &$object, &$action, $hookmanager)
{
@ -103,7 +103,6 @@ class ActionsDatapolicy
// on verifie si l'objet est utilisé
if ($object->isObjectUsed(GETPOST('socid'))) {
$object->name = $langs->trans('ANONYME');
$object->name_bis = '';
$object->name_alias = '';
$object->address = '';
$object->town = '';
@ -115,7 +114,7 @@ class ActionsDatapolicy
$object->state = '';
$object->country = '';
$object->state_id = '';
$object->skype = '';
$object->socialnetworks = '';
$object->country_id = '';
$object->note_private = $object->note_private.'<br>'.$langs->trans('ANONYMISER_AT', dol_print_date(time()));
@ -128,76 +127,6 @@ class ActionsDatapolicy
header('Location:'.$_SERVER["PHP_SELF"]."?socid=".$object->id);
}
}
} elseif ($parameters['currentcontext'] == 'thirdpartycard' && $action == 'datapolicy_portabilite') {
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename=datapolicy_portabilite.csv');
header('Pragma: no-cache');
$object->fetch(GETPOST('socid'));
echo 'Name;Firstname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;'.PHP_EOL;
echo $object->name.';';
echo ';';
echo ';';
echo ';';
echo ';';
echo $object->address.';';
echo $object->zip.';';
echo $object->town.';';
echo $object->state.';';
echo $object->country.';';
echo $object->email.';';
echo $object->phone.';';
echo ';';
echo ';';
echo $object->skype.';';
echo ';';
exit;
} elseif ($parameters['currentcontext'] == 'membercard' && $action == 'datapolicy_portabilite') {
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename=datapolicy_portabilite.csv');
header('Pragma: no-cache');
$soc = $object->fetch_thirdparty();
echo 'Name;Firstname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;'.PHP_EOL;
echo $object->lastname.';';
echo $object->firstname.';';
echo $object->getCivilityLabel().';';
echo ($soc != -1 ? $object->thirdparty->name : '').';';
echo ';';
echo $object->address.';';
echo $object->zip.';';
echo $object->town.';';
echo $object->state.';';
echo $object->country.';';
echo $object->email.';';
echo $object->phone.';';
echo $object->phone_perso.';';
echo $object->phone_mobile.';';
echo $object->skype.';';
echo dol_print_date($object->birth).';';
exit;
} elseif ($parameters['currentcontext'] == 'contactcard' && $action == 'datapolicy_portabilite') {
$object->fetch(GETPOST('id'));
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename=datapolicy_portabilite.csv');
header('Pragma: no-cache');
$soc = $object->fetch_thirdparty();
echo 'Name;Firstname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;'.PHP_EOL;
echo $object->lastname.';';
echo $object->firstname.';';
echo $object->getCivilityLabel().';';
echo ($soc != -1 ? $object->thirdparty->name : '').';';
echo $object->poste.';';
echo $object->address.';';
echo $object->zip.';';
echo $object->town.';';
echo $object->state.';';
echo $object->country.';';
echo $object->email.';';
echo $object->phone_pro.';';
echo $object->phone_perso.';';
echo $object->phone_mobile.';';
echo dol_print_date($object->birth).';';
exit;
} elseif ($parameters['currentcontext'] == 'contactcard' && $action == 'send_datapolicy') {
$object->fetch(GETPOST('id'));
@ -358,13 +287,7 @@ class ActionsDatapolicy
} );
</script>';
echo $dialog;
if ($parameters['currentcontext'] == 'thirdpartycard' && in_array($object->forme_juridique_code, array(11, 12, 13, 15, 17, 18, 19, 35, 60, 200, 311, 312, 316, 401, 600, 700, 1005)) || $object->typent_id == 8) {
echo '<div class="inline-block divButAction"><a target="_blank" rel="noopener noreferrer" id="rpgpdbtn" class="butAction" href="'.$_SERVER["PHP_SELF"]."?socid=".$object->id.'&action=datapolicy_portabilite" title="'.$langs->trans('DATAPOLICY_PORTABILITE_TITLE').'">'.$langs->trans("DATAPOLICY_PORTABILITE").'</a></div>';
} elseif ($parameters['currentcontext'] == 'membercard') {
echo '<div class="inline-block divButAction"><a target="_blank" rel="noopener noreferrer" id="rpgpdbtn" class="butAction" href="'.$_SERVER["PHP_SELF"]."?rowid=".$object->id.'&action=datapolicy_portabilite" title="'.$langs->trans('DATAPOLICY_PORTABILITE_TITLE').'">'.$langs->trans("DATAPOLICY_PORTABILITE").'</a></div>';
} elseif ($parameters['currentcontext'] == 'contactcard') {
echo '<div class="inline-block divButAction"><a target="_blank" rel="noopener noreferrer" id="rpgpdbtn" class="butAction" href="'.$_SERVER["PHP_SELF"]."?id=".$object->id.'&action=datapolicy_portabilite" title="'.$langs->trans('DATAPOLICY_PORTABILITE_TITLE').'">'.$langs->trans("DATAPOLICY_PORTABILITE").'</a></div>';
}
// TODO Replace test of hardcoded values
if (!empty($object->mail) && empty($object->array_options['options_datapolicy_send']) && $parameters['currentcontext'] == 'thirdpartycard' && in_array($object->forme_juridique_code, array(11, 12, 13, 15, 17, 18, 19, 35, 60, 200, 311, 312, 316, 401, 600, 700, 1005)) || $object->typent_id == 8) {
echo '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"]."?socid=".$object->id.'&action=send_datapolicy" title="'.$langs->trans('DATAPOLICY_SEND').'">'.$langs->trans("DATAPOLICY_SEND").'</a></div>';
} elseif (!empty($object->mail) && empty($object->array_options['options_datapolicy_send']) && $parameters['currentcontext'] == 'membercard') {

View File

@ -128,7 +128,7 @@ class EmailCollector extends CommonObject
public $fields = array(
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'visible'=>2, 'enabled'=>1, 'position'=>1, 'notnull'=>1, 'index'=>1),
'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'default'=>1, 'notnull'=>1, 'index'=>1, 'position'=>20),
'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1, 'help'=>'Example: MyCollector1', 'csslist'=>'tdoverflowmax150'),
'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1, 'help'=>'Example: MyCollector1', 'csslist'=>'tdoverflowmax200'),
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'visible'=>1, 'enabled'=>1, 'position'=>30, 'notnull'=>-1, 'searchall'=>1, 'help'=>'Example: My Email collector', 'csslist'=>'tdoverflowmax150'),
'description' => array('type'=>'text', 'label'=>'Description', 'visible'=>-1, 'enabled'=>1, 'position'=>60, 'notnull'=>-1, 'csslist'=>'small'),
'host' => array('type'=>'varchar(255)', 'label'=>'EMailHost', 'visible'=>1, 'enabled'=>1, 'position'=>90, 'notnull'=>1, 'searchall'=>1, 'comment'=>"IMAP server", 'help'=>'Example: imap.gmail.com', 'csslist'=>'tdoverflowmax125'),
@ -145,7 +145,7 @@ class EmailCollector extends CommonObject
'maxemailpercollect' => array('type'=>'integer', 'label'=>'MaxEmailCollectPerCollect', 'visible'=>-1, 'enabled'=>1, 'position'=>111, 'default'=>100),
'datelastresult' => array('type'=>'datetime', 'label'=>'DateLastCollectResult', 'visible'=>1, 'enabled'=>'$action != "create" && $action != "edit"', 'position'=>121, 'notnull'=>-1, 'csslist'=>'nowraponall'),
'codelastresult' => array('type'=>'varchar(16)', 'label'=>'CodeLastResult', 'visible'=>1, 'enabled'=>'$action != "create" && $action != "edit"', 'position'=>122, 'notnull'=>-1,),
'lastresult' => array('type'=>'varchar(255)', 'label'=>'LastResult', 'visible'=>1, 'enabled'=>'$action != "create" && $action != "edit"', 'position'=>123, 'notnull'=>-1, 'csslist'=>'small'),
'lastresult' => array('type'=>'varchar(255)', 'label'=>'LastResult', 'visible'=>1, 'enabled'=>'$action != "create" && $action != "edit"', 'position'=>123, 'notnull'=>-1, 'csslist'=>'small tdoverflowmax200'),
'datelastok' => array('type'=>'datetime', 'label'=>'DateLastcollectResultOk', 'visible'=>1, 'enabled'=>'$action != "create"', 'position'=>125, 'notnull'=>-1, 'csslist'=>'nowraponall'),
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'visible'=>0, 'enabled'=>1, 'position'=>61, 'notnull'=>-1,),
'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'visible'=>0, 'enabled'=>1, 'position'=>62, 'notnull'=>-1,),
@ -2932,7 +2932,11 @@ class EmailCollector extends CommonObject
// TODO Move mail using PHP-IMAP
}
} else {
dol_syslog("EmailCollector::doCollectOneCollector message ".$imapemail." to ".$connectstringtarget." was set to read", LOG_DEBUG);
if (empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) {
dol_syslog("EmailCollector::doCollectOneCollector message ".((string) $imapemail)." to ".$connectstringtarget." was set to read", LOG_DEBUG);
} else {
dol_syslog("EmailCollector::doCollectOneCollector message '".($imapemail->getHeader()->get('subject'))."' using this->host=".$this->host.", this->access_type=".$this->acces_type." was set to read", LOG_DEBUG);
}
}
} else {
$errorforemail++;

View File

@ -106,10 +106,10 @@ class ConferenceOrBooth extends ActionComm
'id' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
'ref' => array('type'=>'integer', 'label'=>'Ref', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>2, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'csslist'=>'left', 'comment'=>"Id"),
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>1, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth300', 'csslist'=>'tdoverflowmax125', 'help'=>"OrganizationEvenLabelName", 'showoncombobox'=>'1', 'autofocusoncreate'=>1),
'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'help'=>"OrganizationEventLinkToThirdParty", 'picto'=>'company', 'csslist'=>'tdoverflowmax150 maxwidth500', 'css'=>'maxwidth500'),
'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1:t.usage_organize_event=1', 'label'=>'Project', 'enabled'=>"isModEnabled('project')", 'position'=>52, 'notnull'=>-1, 'visible'=>-1, 'index'=>1, 'picto'=>'project', 'css'=>'tdoverflowmax150 maxwidth500', 'csslist'=>'width100'),
'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1:t.usage_organize_event=1', 'label'=>'Project', 'enabled'=>"isModEnabled('project')", 'position'=>52, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'picto'=>'project', 'css'=>'tdoverflowmax150 maxwidth500', 'csslist'=>'width100'),
'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'help'=>"OrganizationEventLinkToThirdParty", 'picto'=>'company', 'csslist'=>'tdoverflowmax125', 'css'=>'maxwidth500'),
'note' => array('type'=>'text', 'label'=>'Description', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>3),
'fk_action' => array('type'=>'sellist:c_actioncomm:libelle:id::module LIKE (\'%@eventorganization\')', 'label'=>'Format', 'enabled'=>'1', 'position'=>60, 'notnull'=>1, 'visible'=>1, 'css'=>'width100'),
'fk_action' => array('type'=>'sellist:c_actioncomm:libelle:id::module LIKE (\'%@eventorganization\')', 'label'=>'Format', 'enabled'=>'1', 'position'=>60, 'notnull'=>1, 'visible'=>1, 'css'=>'width100', 'csslist'=>'tdoverflowmax100'),
'datep' => array('type'=>'datetime', 'label'=>'DateStart', 'enabled'=>'1', 'position'=>70, 'notnull'=>0, 'visible'=>1, 'showoncombobox'=>'2',),
'datep2' => array('type'=>'datetime', 'label'=>'DateEnd', 'enabled'=>'1', 'position'=>71, 'notnull'=>0, 'visible'=>1, 'showoncombobox'=>'3',),
'datec' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2, 'csslist'=>'nowraponall'),

View File

@ -44,20 +44,20 @@ global $dolibarr_main_url_root;
$langs->loadLangs(array("eventorganization", "other", "projects", "companies"));
// Get Parameters
$action = GETPOST('action', 'aZ09') ?GETPOST('action', 'aZ09') : 'view'; // The action 'add', 'create', 'edit', 'update', 'view', ...
$action = GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'; // The action 'create'/'add', 'edit'/'update', 'view', ...
$massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists)
$show_files = GETPOST('show_files', 'int'); // Show files area generated by bulk actions ?
$confirm = GETPOST('confirm', 'alpha'); // Result of a confirmation
$cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button
$toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'conferenceorboothlist'; // To manage different context of search
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search
$backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
$mode = GETPOST('mode', 'aZ'); // The output mode ('list', 'kanban', 'hierarchy', 'calendar', ...)
$id = GETPOST('id', 'int');
$projectid = GETPOST('projectid', 'int');
$projectref = GETPOST('ref');
$projectref = GETPOST('ref', 'alpha');
// Load variable for pagination
$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
@ -76,7 +76,7 @@ $pagenext = $page + 1;
$object = new ConferenceOrBooth($db);
$extrafields = new ExtraFields($db);
$diroutputmassaction = $conf->eventorganization->dir_output.'/temp/massgeneration/'.$user->id;
$hookmanager->initHooks(array('conferenceorboothlist')); // Note that conf->hooks_modules contains array
$hookmanager->initHooks(array($contextpage)); // Note that conf->hooks_modules contains array
// Fetch optionals attributes and labels
$extrafields->fetch_name_optionals_label($object->table_element);
@ -140,8 +140,8 @@ $permissiontoadd = $user->rights->eventorganization->write;
$permissiontodelete = $user->rights->eventorganization->delete;
// Security check
if (empty($conf->eventorganization->enabled)) {
accessforbidden('Module not enabled');
if (!isModEnabled('eventorganization')) {
accessforbidden('Module eventorganization not enabled');
}
$socid = 0;
if ($user->socid > 0) { // Protection if external user
@ -234,7 +234,7 @@ if (empty($reshook)) {
$form = new Form($db);
$now = dol_now();
//$help_url="EN:Module_ConferenceOrBooth|FR:Module_ConferenceOrBooth_FR|ES:Módulo_ConferenceOrBooth";
//$help_url = "EN:Module_ConferenceOrBooth|FR:Module_ConferenceOrBooth_FR|ES:Módulo_ConferenceOrBooth";
$help_url = '';
$title = $langs->trans('ListOfConferencesOrBooths');
$morejs = array();
@ -772,13 +772,13 @@ foreach ($object->fields as $key => $val) {
$cssforfield .= ($cssforfield ? ' ' : '').'center';
} elseif (in_array($val['type'], array('timestamp'))) {
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'rowid' && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) {
} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'rowid' && $key != 'ref' && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) {
$cssforfield .= ($cssforfield ? ' ' : '').'right';
}
if (!empty($arrayfields['t.'.$key]['checked'])) {
print '<td class="liste_titre'.($cssforfield ? ' '.$cssforfield : '').($key == 'status' ? ' parentonrightofpage' : '').'">';
print '<td class="liste_titre'.($cssforfield ? ' '.$cssforfield : '').'">';
if (!empty($val['arrayofkeyval']) && is_array($val['arrayofkeyval'])) {
print $form->selectarray('search_'.$key, $val['arrayofkeyval'], (isset($search[$key]) ? $search[$key] : ''), $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth100'.($key == 'status' ? ' search_status width100 onrightofpage' : ''), 1);
print $form->selectarray('search_'.$key, $val['arrayofkeyval'], (isset($search[$key]) ? $search[$key] : ''), $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth100'.($key == 'status' ? ' search_status onrightofpage' : ''), 1);
} elseif ((strpos($val['type'], 'integer:') === 0) || (strpos($val['type'], 'sellist:') === 0)) {
print $object->showInputField($val, $key, (isset($search[$key]) ? $search[$key] : ''), '', '', 'search_', $cssforfield.' maxwidth250', 1);
} elseif (preg_match('/^(date|timestamp|datetime)/', $val['type'])) {
@ -831,7 +831,7 @@ foreach ($object->fields as $key => $val) {
$cssforfield .= ($cssforfield ? ' ' : '').'center';
} elseif (in_array($val['type'], array('timestamp'))) {
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'rowid' && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) {
} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'rowid' && $key != 'ref' && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) {
$cssforfield .= ($cssforfield ? ' ' : '').'right';
}
$cssforfield = preg_replace('/small\s*/', '', $cssforfield); // the 'small' css must not be used for the title label
@ -881,94 +881,110 @@ while ($i < $imaxinloop) {
// Store properties in $object
$object->setVarsFromFetchObj($obj);
// Show here line of result
$j = 0;
print '<tr data-rowid="'.$object->id.'" class="oddeven">';
// Action column
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
print '<td class="nowrap center">';
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
$selected = 0;
if (in_array($object->id, $arrayofselected)) {
$selected = 1;
}
print '<input id="cb'.$object->id.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$object->id.'"'.($selected ? ' checked="checked"' : '').'>';
if ($mode == 'kanban') {
if ($i == 0) {
print '<tr><td colspan="'.$savnbfield.'">';
print '<div class="box-flex-container">';
}
print '</td>';
}
foreach ($object->fields as $key => $val) {
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) {
$cssforfield .= ($cssforfield ? ' ' : '').'center';
} elseif ($key == 'status') {
$cssforfield .= ($cssforfield ? ' ' : '').'center';
// Output Kanban
print $object->getKanbanView('');
if ($i == ($imaxinloop - 1)) {
print '</div>';
print '</td></tr>';
}
if (in_array($val['type'], array('timestamp'))) {
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
} elseif ($key == 'ref') {
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
}
if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'status')) && empty($val['arrayofkeyval'])) {
$cssforfield .= ($cssforfield ? ' ' : '').'right';
}
//if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100';
if (!empty($arrayfields['t.'.$key]['checked'])) {
print '<td'.($cssforfield ? ' class="'.$cssforfield.'"' : '');
if (preg_match('/tdoverflow/', $cssforfield)) {
print ' title="'.dol_escape_htmltag($object->$key).'"';
}
print '>';
if ($key == 'status') {
print $object->getLibStatut(5);
} elseif ($key == 'ref') {
print $object->getNomUrl(1, 0, '', (($projectid > 0)?'withproject':''));
} else {
print $object->showOutputField($val, $key, $object->$key, '');
} else {
// Show here line of result
$j = 0;
print '<tr data-rowid="'.$object->id.'" class="oddeven">';
// Action column
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
print '<td class="nowrap center">';
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
$selected = 0;
if (in_array($object->id, $arrayofselected)) {
$selected = 1;
}
print '<input id="cb'.$object->id.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$object->id.'"'.($selected ? ' checked="checked"' : '').'>';
}
print '</td>';
if (!$i) {
$totalarray['nbfield']++;
}
if (!empty($val['isameasure']) && $val['isameasure'] == 1) {
if (!$i) {
$totalarray['pos'][$totalarray['nbfield']] = 't.'.$key;
}
if (!isset($totalarray['val'])) {
$totalarray['val'] = array();
}
if (!isset($totalarray['val']['t.'.$key])) {
$totalarray['val']['t.'.$key] = 0;
}
$totalarray['val']['t.'.$key] += $object->$key;
}
}
}
// Extra fields
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
// Fields from hook
$parameters = array('arrayfields'=>$arrayfields, 'object'=>$object, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray);
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
// Action column
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
print '<td class="nowrap center">';
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
$selected = 0;
if (in_array($object->id, $arrayofselected)) {
$selected = 1;
foreach ($object->fields as $key => $val) {
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) {
$cssforfield .= ($cssforfield ? ' ' : '').'center';
} elseif ($key == 'status') {
$cssforfield .= ($cssforfield ? ' ' : '').'center';
}
print '<input id="cb'.$object->id.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$object->id.'"'.($selected ? ' checked="checked"' : '').'>';
}
print '</td>';
}
if (!$i) {
$totalarray['nbfield']++;
}
print '</tr>'."\n";
if (in_array($val['type'], array('timestamp'))) {
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
} elseif ($key == 'ref') {
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
}
if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'ref', 'status')) && empty($val['arrayofkeyval'])) {
$cssforfield .= ($cssforfield ? ' ' : '').'right';
}
//if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100';
if (!empty($arrayfields['t.'.$key]['checked'])) {
print '<td'.($cssforfield ? ' class="'.$cssforfield.(preg_match('/tdoverflow/', $cssforfield) ? ' classfortooltip' : '').'"' : '');
if (preg_match('/tdoverflow/', $cssforfield)) {
print ' title="'.dol_escape_htmltag($object->$key).'"';
}
print '>';
if ($key == 'status') {
print $object->getLibStatut(5);
} elseif ($key == 'ref') {
print $object->getNomUrl(1, 0, '', (($projectid > 0)?'withproject':''));
} else {
print $object->showOutputField($val, $key, $object->$key, '');
}
print '</td>';
if (!$i) {
$totalarray['nbfield']++;
}
if (!empty($val['isameasure']) && $val['isameasure'] == 1) {
if (!$i) {
$totalarray['pos'][$totalarray['nbfield']] = 't.'.$key;
}
if (!isset($totalarray['val'])) {
$totalarray['val'] = array();
}
if (!isset($totalarray['val']['t.'.$key])) {
$totalarray['val']['t.'.$key] = 0;
}
$totalarray['val']['t.'.$key] += $object->$key;
}
}
}
// Extra fields
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
// Fields from hook
$parameters = array('arrayfields'=>$arrayfields, 'object'=>$object, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray);
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
// Action column
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
print '<td class="nowrap center">';
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
$selected = 0;
if (in_array($object->id, $arrayofselected)) {
$selected = 1;
}
print '<input id="cb'.$object->id.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$object->id.'"'.($selected ? ' checked="checked"' : '').'>';
}
print '</td>';
if (!$i) {
$totalarray['nbfield']++;
}
}
print '</tr>'."\n";
}
$i++;
}

View File

@ -607,7 +607,7 @@ if ($resql) {
}
print '<td class="liste_titre maxwidthonsmartphone left">';
print $form->select_dolusers($search_employee, "search_employee", 1, "", $disabled, $include, '', 0, 0, 0, $morefilter, 0, '', 'maxwidth150');
print $form->select_dolusers($search_employee, "search_employee", 1, "", $disabled, $include, '', 0, 0, 0, $morefilter, 0, '', 'maxwidth125');
print '</td>';
}
@ -617,12 +617,12 @@ if ($resql) {
print '<td class="liste_titre maxwidthonsmartphone left">';
$validator = new UserGroup($db);
$excludefilter = $user->admin ? '' : 'u.rowid <> '.$user->id;
$valideurobjects = $validator->listUsersForGroup($excludefilter);
$valideurobjects = $validator->listUsersForGroup($excludefilter, 1);
$valideurarray = array();
foreach ($valideurobjects as $val) {
$valideurarray[$val->id] = $val->id;
}
print $form->select_dolusers($search_valideur, "search_valideur", 1, "", 0, $valideurarray, '', 0, 0, 0, $morefilter, 0, '', 'maxwidth150');
print $form->select_dolusers($search_valideur, "search_valideur", 1, "", 0, $valideurarray, '', 0, 0, 0, $morefilter, 0, '', 'maxwidth125');
print '</td>';
} else {
print '<td class="liste_titre">&nbsp;</td>';
@ -642,7 +642,7 @@ if ($resql) {
//$labeltoshow .= ($val['delay'] > 0 ? ' ('.$langs->trans("NoticePeriod").': '.$val['delay'].' '.$langs->trans("days").')':'');
$arraytypeleaves[$val['rowid']] = $labeltoshow;
}
print $form->selectarray('search_type', $arraytypeleaves, $search_type, 1, 0, 0, '', 0, 0, 0, '', '', 1);
print $form->selectarray('search_type', $arraytypeleaves, $search_type, 1, 0, 0, '', 0, 0, 0, '', 'maxwidth100', 1);
}
print '</td>';
}

View File

@ -118,16 +118,16 @@ if (empty($reshook)) {
}
$arrayfields = array(
'cp.ref'=>array('label' => 'Ref', 'checked'=>1),
'cp.fk_user'=>array('label' => 'Employee', 'checked'=>1),
'cp.fk_type'=>array('label' => 'Type', 'checked'=>1),
'cp.date_debut'=>array('label' => 'DateDebCP', 'checked'=>1),
'cp.date_fin'=>array('label' => 'DateFinCP', 'checked'=>1),
'used_days'=>array('label' => 'NbUseDaysCPShort', 'checked'=>1),
'date_start_month'=>array('label' => 'DateStartInMonth', 'checked'=>1),
'date_end_month'=>array('label' => 'DateEndInMonth', 'checked'=>1),
'used_days_month'=>array('label' => 'NbUseDaysCPShortInMonth', 'checked'=>1),
'cp.description'=>array('label' => 'DescCP', 'checked'=>1),
'cp.ref'=>array('label' => 'Ref', 'checked'=>1, 'position'=>5),
'cp.fk_type'=>array('label' => 'Type', 'checked'=>1, 'position'=>10),
'cp.fk_user'=>array('label' => 'Employee', 'checked'=>1, 'position'=>20),
'cp.date_debut'=>array('label' => 'DateDebCP', 'checked'=>1, 'position'=>30),
'cp.date_fin'=>array('label' => 'DateFinCP', 'checked'=>1, 'position'=>32),
'used_days'=>array('label' => 'NbUseDaysCPShort', 'checked'=>1, 'position'=>34),
'date_start_month'=>array('label' => 'DateStartInMonth', 'checked'=>1, 'position'=>50),
'date_end_month'=>array('label' => 'DateEndInMonth', 'checked'=>1, 'position'=>52),
'used_days_month'=>array('label' => 'NbUseDaysCPShortInMonth', 'checked'=>1, 'position'=>54),
'cp.description'=>array('label' => 'DescCP', 'checked'=>-1, 'position'=>800),
);
@ -149,7 +149,7 @@ $search_month = GETPOST("remonth", 'int') ?GETPOST("remonth", 'int') : date("m",
$search_year = GETPOST("reyear", 'int') ?GETPOST("reyear", 'int') : date("Y", time());
$year_month = sprintf("%04d", $search_year).'-'.sprintf("%02d", $search_month);
$sql = "SELECT cp.rowid, cp.ref, cp.fk_user, cp.date_debut, cp.date_fin, cp.fk_type, cp.description, cp.halfday";
$sql = "SELECT cp.rowid, cp.ref, cp.fk_user, cp.date_debut, cp.date_fin, cp.fk_type, cp.description, cp.halfday, cp.statut as status";
$sql .= " FROM ".MAIN_DB_PREFIX."holiday cp";
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user u ON cp.fk_user = u.rowid";
$sql .= " WHERE cp.rowid > 0";
@ -250,13 +250,6 @@ if (!empty($arrayfields['cp.ref']['checked'])) {
print '</th>';
}
// Filter: Employee
if (!empty($arrayfields['cp.fk_user']['checked'])) {
print '<th class="liste_titre">';
print $form->select_dolusers($search_employee, "search_employee", 1, null, 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth100');
print '</th>';
}
// Filter: Type
if (!empty($arrayfields['cp.fk_type']['checked'])) {
$typeleaves = $holidaystatic->getTypes(1, -1);
@ -267,7 +260,14 @@ if (!empty($arrayfields['cp.fk_type']['checked'])) {
}
print '<th class="liste_titre">';
print $form->selectarray('search_type', $arraytypeleaves, $search_type, 1, 0, 0, '', 0, 0, 0, '', '', 1);
print $form->selectarray('search_type', $arraytypeleaves, $search_type, 1, 0, 0, '', 0, 0, 0, '', 'maxwidth100', 1);
print '</th>';
}
// Filter: Employee
if (!empty($arrayfields['cp.fk_user']['checked'])) {
print '<th class="liste_titre">';
print $form->select_dolusers($search_employee, "search_employee", 1, null, 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth100');
print '</th>';
}
@ -313,12 +313,12 @@ if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
if (!empty($arrayfields['cp.ref']['checked'])) {
print_liste_field_titre($arrayfields['cp.ref']['label'], $_SERVER["PHP_SELF"], 'cp.ref', '', '', '', $sortfield, $sortorder);
}
if (!empty($arrayfields['cp.fk_user']['checked'])) {
print_liste_field_titre($arrayfields['cp.fk_user']['label'], $_SERVER["PHP_SELF"], 'cp.fk_user', '', '', '', $sortfield, $sortorder);
}
if (!empty($arrayfields['cp.fk_type']['checked'])) {
print_liste_field_titre($arrayfields['cp.fk_type']['label'], $_SERVER["PHP_SELF"], 'cp.fk_type', '', '', '', $sortfield, $sortorder);
}
if (!empty($arrayfields['cp.fk_user']['checked'])) {
print_liste_field_titre($arrayfields['cp.fk_user']['label'], $_SERVER["PHP_SELF"], 'cp.fk_user', '', '', '', $sortfield, $sortorder);
}
if (!empty($arrayfields['ct.label']['checked'])) {
print_liste_field_titre($arrayfields['ct.label']['label'], $_SERVER["PHP_SELF"], 'ct.label', '', '', '', $sortfield, $sortorder);
}
@ -398,6 +398,15 @@ if ($num == 0) {
// Leave request
$holidaystatic->id = $obj->rowid;
$holidaystatic->ref = $obj->ref;
$holidaystatic->statut = $obj->status;
$holidaystatic->status = $obj->status;
$holidaystatic->fk_user = $obj->fk_user;
$holidaystatic->fk_type = $obj->fk_type;
$holidaystatic->description = $obj->description;
$holidaystatic->halfday = $obj->halfday;
$holidaystatic->date_debut = $db->jdate($obj->date_debut);
$holidaystatic->date_fin = $db->jdate($obj->date_fin);
print '<tr class="oddeven">';
// Action column
@ -408,12 +417,12 @@ if ($num == 0) {
if (!empty($arrayfields['cp.ref']['checked'])) {
print '<td class="nowraponall">'.$holidaystatic->getNomUrl(1, 1).'</td>';
}
if (!empty($arrayfields['cp.fk_user']['checked'])) {
print '<td>'.$user->getFullName($langs).'</td>';
}
if (!empty($arrayfields['cp.fk_type']['checked'])) {
print '<td>'.$arraytypeleaves[$obj->fk_type].'</td>';
}
if (!empty($arrayfields['cp.fk_user']['checked'])) {
print '<td class="tdoverflowmax150">'.$user->getFullName($langs).'</td>';
}
if (!empty($arrayfields['cp.date_debut']['checked'])) {
print '<td class="center">'.dol_print_date($db->jdate($obj->date_debut), 'day');
@ -447,7 +456,11 @@ if ($num == 0) {
print '<td class="right">'.num_open_day($date_start_inmonth, $date_end_inmonth, 0, 1, $halfdayinmonth).'</td>';
}
if (!empty($arrayfields['cp.description']['checked'])) {
print '<td class="maxwidth300 small">'.dolGetFirstLineOfText(dol_string_nohtmltag($obj->description, 1)).'</td>';
print '<td class="maxwidth300 small">';
print '<div class="twolinesmax">';
print dolGetFirstLineOfText(dol_string_nohtmltag($obj->description, 1));
print '</div>';
print '</td>';
}
// Action column
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {

View File

@ -333,9 +333,8 @@ if (!empty($arrayfields['cpl.date_action']['checked'])) {
if (!empty($arrayfields['cpl.fk_user_action']['checked'])) {
$validator = new UserGroup($db);
$excludefilter = $user->admin ? '' : 'u.rowid <> '.$user->id;
$valideurobjects = $validator->listUsersForGroup($excludefilter);
$valideurobjects = $validator->listUsersForGroup($excludefilter, 1);
$valideurarray = array();
foreach ($valideurobjects as $val) {
$valideurarray[$val->id] = $val->id;
}

View File

@ -13,10 +13,23 @@ require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit4da13270269c89a28e472e1f7324e6d1::getLoader();
*/
// Add class/method of PHP8 for compatibility with older versions of PHP
require_once(__DIR__.'/symfony/polyfill-php80/bootstrap.php');
spl_autoload_register(function ($class_name) {
// Enable this to detect what we need for require_once
//var_dump($class_name);
$preg_match = preg_match('/^Symfony\\\Polyfill\\\Php80\\\/', $class_name);
if (1 === $preg_match) {
$class_name = preg_replace('/\\\/', '/', $class_name);
$class_name = preg_replace('/^Symfony\\/Polyfill\\/Php80\\//', '', $class_name);
require_once __DIR__ . '/symfony/polyfill-php80/' . $class_name . '.php';
}
$preg_match = preg_match('/^Webklex\\\PHPIMAP\\\/', $class_name);
if (1 === $preg_match) {
$class_name = preg_replace('/\\\/', '/', $class_name);

View File

@ -27,6 +27,7 @@
* \brief Test if file conf can be modified and if does not exists, test if install process can create it
*/
define('ALLOWED_IF_UPGRADE_UNLOCK_FOUND', 1);
include_once 'inc.php';
global $langs;

View File

@ -180,33 +180,27 @@ if (!empty($dolibarr_main_document_root_alt)) {
}
// Security check (old method, when directory is renamed /install.lock)
if (preg_match('/install\.lock/i', $_SERVER["SCRIPT_FILENAME"])) {
if (!is_object($langs)) {
$langs = new Translate('..', $conf);
$langs->setDefaultLang('auto');
}
$langs->load("install");
// Check install.lock (for both install and upgrade)
header("X-Content-Type-Options: nosniff");
header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks)
print $langs->trans("YouTryInstallDisabledByDirLock");
if (!empty($dolibarr_main_url_root)) {
print 'Click on following link, <a href="'.$dolibarr_main_url_root.'/admin/index.php?mainmenu=home&leftmenu=setup'.(GETPOSTISSET("login") ? '&username='.urlencode(GETPOST("login")) : '').'">';
print $langs->trans("ClickHereToGoToApp");
print '</a>';
}
exit;
}
$lockfile = DOL_DATA_ROOT.'/install.lock';
$lockfile = DOL_DATA_ROOT.'/install.lock'; // To lock all /install pages
$lockfile2 = DOL_DOCUMENT_ROOT.'/install.lock'; // To lock all /install pages (recommended)
$upgradeunlockfile = DOL_DATA_ROOT.'/upgrade.unlock'; // To unlock upgrade process
$upgradeunlockfile2 = DOL_DOCUMENT_ROOT.'/upgrade.unlock'; // To unlock upgrade process
if (constant('DOL_DATA_ROOT') === null) {
// We don't have a configuration file yet
// Try to detect any lockfile in the default documents path
$lockfile = '../../documents/install.lock';
$upgradeunlockfile = '../../documents/upgrade.unlock';
}
if (@file_exists($lockfile)) {
$islocked=false;
if (@file_exists($lockfile) || @file_exists($lockfile2)) {
if (!defined('ALLOWED_IF_UPGRADE_UNLOCK_FOUND') || (! @file_exists($upgradeunlockfile) && ! @file_exists($upgradeunlockfile2))) {
// If this is a dangerous install page (ALLOWED_IF_UPGRADE_UNLOCK_FOUND not defined) or
// if there is no upgrade unlock files, we lock the pages.
$islocked = true;
}
}
if ($islocked) { // Pages are locked
if (!isset($langs) || !is_object($langs)) {
$langs = new Translate('..', $conf);
$langs->setDefaultLang('auto');
@ -216,14 +210,22 @@ if (@file_exists($lockfile)) {
header("X-Content-Type-Options: nosniff");
header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks)
print $langs->trans("YouTryInstallDisabledByFileLock");
if (GETPOST('action') != 'upgrade') {
print $langs->trans("YouTryInstallDisabledByFileLock").'<br>';
} else {
print $langs->trans("YouTryUpgradeDisabledByMissingFileUnLock").'<br>';
}
if (!empty($dolibarr_main_url_root)) {
print $langs->trans("ClickOnLinkOrRemoveManualy").'<br>';
if (GETPOST('action') != 'upgrade') {
print $langs->trans("ClickOnLinkOrRemoveManualy").'<br>';
} else {
print $langs->trans("ClickOnLinkOrCreateUnlockFileManualy").'<br>';
}
print '<a href="'.$dolibarr_main_url_root.'/admin/index.php?mainmenu=home&leftmenu=setup'.(GETPOSTISSET("login") ? '&username='.urlencode(GETPOST("login")) : '').'">';
print $langs->trans("ClickHereToGoToApp");
print '</a>';
} else {
print 'If you always reach this page, you must remove install.lock file manually.<br>';
print 'If you always reach this page, you must remove the install.lock file manually.<br>';
}
exit;
}

View File

@ -23,6 +23,8 @@
* \brief Show page to select language. This is done only for a first installation.
* For a reinstall this page redirect to page check.php
*/
define('ALLOWED_IF_UPGRADE_UNLOCK_FOUND', 1);
include_once 'inc.php';
include_once '../core/class/html.form.class.php';
include_once '../core/class/html.formadmin.class.php';

View File

@ -37,6 +37,7 @@
-- VMYSQL4.3 ALTER TABLE llx_hrm_skillrank CHANGE COLUMN `rank` rankorder integer;
-- VPGSQL8.2 ALTER TABLE llx_hrm_skillrank CHANGE COLUMN rank rankorder integer;
ALTER TABLE llx_accounting_system CHANGE COLUMN fk_pays fk_country integer;
-- v18
@ -63,3 +64,10 @@ ALTER TABLE llx_website ADD COLUMN pageviews_previous_month BIGINT UNSIGNED DEFA
ALTER TABLE llx_product_stock ADD CONSTRAINT fk_product_product_rowid FOREIGN KEY (fk_product) REFERENCES llx_product (rowid);
ALTER TABLE llx_product_stock ADD CONSTRAINT fk_entrepot_entrepot_rowid FOREIGN KEY (fk_entrepot) REFERENCES llx_entrepot (rowid);
ALTER TABLE llx_bank_account ADD COLUMN owner_zip varchar(25);
ALTER TABLE llx_bank_account ADD COLUMN owner_town varchar(50);
ALTER TABLE llx_bank_account ADD COLUMN owner_country_id integer DEFAULT NULL;

View File

@ -576,3 +576,81 @@ DELETE FROM llx_rights_def WHERE module = 'hrm' AND perms = 'employee';
-- DROP TABLE tmp_bank2;
-- CREATE TABLE tmp_bank2 SELECT b.rowid, b.amount, p.rowid as pid, p.amount as pamount, p.multicurrency_amount as pmulticurrencyamount FROM llx_bank as b INNER JOIN llx_bank_url as bu ON bu.fk_bank=b.rowid AND bu.type = 'payment_supplier' INNER JOIN llx_paiementfourn as p ON bu.url_id = p.rowid WHERE p.multicurrency_amount <> 0 AND p.multicurrency_amount <> p.amount;
-- UPDATE llx_bank as b SET b.amount_main_currency = (SELECT tb.pamount FROM tmp_bank2 as tb WHERE tb.rowid = b.rowid) WHERE b.amount_main_currency IS NULL;
-- Delete duplicate entries into llx_c_transport_mode
-- VMYSQL4.1 DELETE T1 FROM llx_c_transport_mode as T1, llx_c_transport_mode as T2 where T1.entity = T2.entity AND T1.code = T2.code and T1.rowid > T2.rowid;
-- VPGSQL8.2 DELETE FROM llx_c_transport_mode as T1 WHERE rowid NOT IN (SELECT min(rowid) FROM llx_c_transport_mode GROUP BY code, entity);
-- Delete department of regions linked to no coutry, then delete region with no country
DELETE FROM llx_c_departements WHERE fk_region <> 0 AND fk_region IN (select code_region FROM llx_c_regions WHERE fk_pays NOT IN (select rowid from llx_c_country));
DELETE from llx_c_regions WHERE fk_pays NOT IN (select rowid from llx_c_country);
-- Drop duplicate indexes not named correctly and create the only one we should have
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combination;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_2;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_3;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_4;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_5;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_6;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_7;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_8;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_9;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_10;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_11;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_12;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_13;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_14;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_15;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_16;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_17;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_18;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_19;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_20;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_21;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_22;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_23;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_24;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_25;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_26;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_27;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_28;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_29;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_30;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_31;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_32;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_33;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_34;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_35;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_36;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_37;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_38;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_39;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_40;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_41;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_42;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_43;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_44;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_45;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_46;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_47;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_48;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_49;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_50;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_51;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_52;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_53;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_54;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_55;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_56;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_57;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_58;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_59;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_60;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_61;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_62;
alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_63;
ALTER TABLE llx_product_attribute_combination_price_level ADD UNIQUE INDEX uk_prod_att_comb_price_level(fk_product_attribute_combination, fk_price_level);

View File

@ -47,6 +47,9 @@ create table llx_bank_account
fk_pays integer NOT NULL,
proprio varchar(60),
owner_address varchar(255),
owner_zip varchar(25),
owner_town varchar(50),
owner_country_id integer DEFAULT NULL,
courant smallint DEFAULT 0 NOT NULL,
clos smallint DEFAULT 0 NOT NULL,
rappro smallint DEFAULT 1,

View File

@ -24,8 +24,18 @@
* \file htdocs/install/step5.php
* \ingroup install
* \brief Last page of upgrade / install process
*
* This page is called with parameter action=set by step4.php or action=upgrade by upgrade2.php
* For installation:
* It creates the login admin and set the MAIN_SECURITY_SALT to a random value.
* It set the value for MAIN_VERSION_LAST_INSTALL
* It creates the install.lock and shows the final message.
* For upgrade:
* It updates the value for MAIN_VERSION_LAST_UPGRADE.
* It (re)creates the install.lock and shows the final message.
*/
define('ALLOWED_IF_UPGRADE_UNLOCK_FOUND', 1);
include_once 'inc.php';
if (file_exists($conffile)) {
include_once $conffile;
@ -384,7 +394,7 @@ if ($action == "set") {
if (empty($force_install_lockinstall) || $force_install_lockinstall == 1) {
$force_install_lockinstall = 444; // For backward compatibility
}
fwrite($fp, "This is a lock file to prevent use of install pages (set with permission ".$force_install_lockinstall.")");
fwrite($fp, "This is a lock file to prevent use of install or upgrade pages (set with permission ".$force_install_lockinstall.")");
fclose($fp);
@chmod($lockfile, octdec($force_install_lockinstall));
$createlock = 1;
@ -416,8 +426,9 @@ if ($action == "set") {
} elseif (empty($action) || preg_match('/upgrade/i', $action)) {
// If upgrade
if (empty($conf->global->MAIN_VERSION_LAST_UPGRADE) || ($conf->global->MAIN_VERSION_LAST_UPGRADE == DOL_VERSION)) {
// Upgrade is finished (database is on same version than files)
print '<img class="valignmiddle inline-block paddingright" src="../theme/common/octicons/build/svg/checklist.svg" width="20" alt="Configuration"> <span class="valignmiddle">'.$langs->trans("SystemIsUpgraded")."</span><br>";
// Upgrade is finished (database is on the same version than files)
print '<img class="valignmiddle inline-block paddingright" src="../theme/common/octicons/build/svg/checklist.svg" width="20" alt="Configuration">';
print ' <span class="valignmiddle">'.$langs->trans("SystemIsUpgraded")."</span><br>";
// Create install.lock file if it does not exists.
// Note: it should always exists. A better solution to allow upgrade will be to add an upgrade.unlock file
@ -430,7 +441,7 @@ if ($action == "set") {
if (empty($force_install_lockinstall) || $force_install_lockinstall == 1) {
$force_install_lockinstall = 444; // For backward compatibility
}
fwrite($fp, "This is a lock file to prevent use of install pages (set with permission ".$force_install_lockinstall.")");
fwrite($fp, "This is a lock file to prevent use of install or upgrade pages (set with permission ".$force_install_lockinstall.")");
fclose($fp);
@chmod($lockfile, octdec($force_install_lockinstall));
$createlock = 1;

View File

@ -36,6 +36,7 @@
* \brief Run migration script
*/
define('ALLOWED_IF_UPGRADE_UNLOCK_FOUND', 1);
include_once 'inc.php';
if (!file_exists($conffile)) {
print 'Error: Dolibarr config file was not found. This may means that Dolibarr is not installed yet. Please call the page "/install/index.php" instead of "/install/upgrade.php").';

View File

@ -38,6 +38,7 @@
* \brief Upgrade some data
*/
define('ALLOWED_IF_UPGRADE_UNLOCK_FOUND', 1);
include_once 'inc.php';
if (!file_exists($conffile)) {
print 'Error: Dolibarr config file was not found. This may means that Dolibarr is not installed yet. Please call the page "/install/index.php" instead of "/install/upgrade.php").';

View File

@ -0,0 +1,3 @@
# Dolibarr language file - Source file is en_US - companies
HasRelativeDiscountFromSupplier=You have a default discount of <b>%s%%</b> with this vendor
HasNoRelativeDiscountFromSupplier=No default relative discount with this vendor

View File

@ -14,8 +14,8 @@ ACCOUNTING_EXPORT_ENDLINE=حدد نوع إرجاع السطر
ACCOUNTING_EXPORT_PREFIX_SPEC=تحديد بادئة لاسم الملف
ThisService=هذه الخدمة
ThisProduct=هذا المنتج
DefaultForService=افتراضي للخدمة
DefaultForProduct=افتراضي للمنتج
DefaultForService=Default for services
DefaultForProduct=Default for products
ProductForThisThirdparty=منتج لهذا الطرف الثالث
ServiceForThisThirdparty=خدمة لهذا الطرف الثالث
CantSuggest=لا أستطيع أن أقترح
@ -101,7 +101,8 @@ ShowAccountingAccount=عرض حساب المحاسبة
ShowAccountingJournal=عرض دفتر يومية
ShowAccountingAccountInLedger=عرض حساب المحاسبة في دفتر الأستاذ
ShowAccountingAccountInJournals=عرض حساب المحاسبة في دفاتر اليومية
AccountAccountingSuggest=حساب المحاسبة المقترح
DataUsedToSuggestAccount=Data used to suggest account
AccountAccountingSuggest=Account suggested
MenuDefaultAccounts=الحسابات الافتراضية
MenuBankAccounts=الحسابات المصرفية
MenuVatAccounts=حسابات ضريبة القيمة المضافة
@ -126,6 +127,7 @@ WriteBookKeeping=تسجيل المعاملات في المحاسبة
Bookkeeping=دفتر حسابات
BookkeepingSubAccount=حساب استاذ فرعي
AccountBalance=رصيد الحساب
AccountBalanceSubAccount=Sub-accounts balance
ObjectsRef=مرجع الكائن المصدر
CAHTF=Total purchase vendor before tax
TotalExpenseReport=تقرير المصاريف الإجمالية
@ -189,6 +191,7 @@ ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Account (from the Chart Of Account) to be us
UseAuxiliaryAccountOnCustomerDeposit=تخزين حساب العميل كحساب فردي في دفتر الأستاذ الفرعي لخطوط الدفعات المقدمة (إذا تم تعطيله ، فسيظل الحساب الفردي لبنود الدَفعة المقدمة فارغًا)
ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Account (from the Chart Of Account) to be used as the default
UseAuxiliaryAccountOnSupplierDeposit=Store supplier account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty)
ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY=Accounting account by default to register customer retained warranty
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased within same country (used if not defined in the product sheet)
ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased from EEC to another EEC country (used if not defined in the product sheet)
@ -218,6 +221,7 @@ JournalLabel=اسم دفتر اليومية
NumPiece=رقم القطعة
TransactionNumShort=رقم. العملية
AccountingCategory=Custom group of accounts
AccountingCategories=Custom groups of accounts
GroupByAccountAccounting=تجميع حسب حساب دفتر الأستاذ العام
GroupBySubAccountAccounting=تجميع حسب حساب دفتر الأستاذ الفرعي
AccountingAccountGroupsDesc=يمكنك هنا تحديد بعض مجموعات الحساب. سيتم استخدامها لتقارير المحاسبة الشخصية.
@ -265,6 +269,7 @@ ShowSubtotalByGroup=عرض المجموع الفرعي حسب المستوى
Pcgtype=مجموعة الحساب
PcgtypeDesc=تُستخدم مجموعة الحسابات كمعايير "تصفية" و "تجميع" محددة مسبقًا لبعض التقارير المحاسبية. على سبيل المثال ، يتم استخدام "الدخل" أو "المصاريف" كمجموعات لحسابات المنتجات لإنشاء تقرير المصاريف / الدخل.
AccountingCategoriesDesc=Custom group of accounts can be used to group accounting accounts into one name to ease filter use or building of custom reports.
Reconcilable=قابل للتسوية
@ -294,6 +299,7 @@ DescValidateMovements=سيتم حظر أي تعديل أو حذف للكتابة
ValidateHistory=ربط تلقائي
AutomaticBindingDone=تم إجراء عمليات ربط تلقائية (%s) - الربط التلقائي غير ممكن لبعض السجلات (%s)
DoManualBindingForFailedRecord=You have to do a manual link for the %s row(s) not linked automatically.
ErrorAccountancyCodeIsAlreadyUse=Error, you cannot remove or disable this account of chart of account because it is used
MvtNotCorrectlyBalanced=الحركة غير متوازنة بشكل صحيح. الخصم = %s والائتمان = %s
@ -337,11 +343,13 @@ ACCOUNTING_DISABLE_BINDING_ON_SALES=تعطيل الربط والتحويل في
ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=تعطيل الربط والتحويل في المحاسبة على المشتريات (لن يتم أخذ فواتير البائعين في الاعتبار في المحاسبة)
ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=تعطيل الربط والتحويل في المحاسبة على تقارير المصروفات (لن يتم أخذ تقارير المصروفات في الاعتبار في المحاسبة)
ACCOUNTING_ENABLE_LETTERING=Enable the lettering function in the accounting
ACCOUNTING_ENABLE_AUTOLETTERING=Enable the automatic lettering when transferring to accounting
## Export
NotExportLettering=Do not export the lettering when generating the file
NotifiedExportDate=ضع علامة على الخطوط المصدرة كـ <span class="warning"> (لتعديل سطر ، ستحتاج إلى حذف المعاملة بالكامل وإعادة تحويلها إلى المحاسبة) </span>
NotifiedValidationDate=تحقق من صحة الإدخالات التي تم تصديرها وقفلها <span class="warning"> (نفس التأثير من ميزة "%s" ، ولن يكون تعديل الأسطر وحذفها بالتأكيد ممكنًا) </span>
NotifiedExportFull=Export documents ?
DateValidationAndLock=التحقق من صحة التاريخ والقفل
ConfirmExportFile=تأكيد إنشاء ملف محاسبي تصدير؟
ExportDraftJournal=تصدير مسودة دفتر اليومية
@ -398,7 +406,7 @@ SaleLocal=بيع محلي
SaleExport=بيع تصدير
SaleEEC=بيع في الاتحاد الاوروبي
SaleEECWithVAT=البيع في EEC مع ضريبة القيمة المضافة ليست فارغة ، لذلك نفترض أن هذا ليس بيعًا داخل الاتحاد والحساب المقترح هو حساب المنتج القياسي.
SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fallback on the product account for standard sales. You can fix the VAT ID of thirdparty or the product account if needed.
SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fall back on the account for standard sales. You can fix the VAT ID of the thirdparty, or change the product account suggested for binding if needed.
ForbiddenTransactionAlreadyExported=ممنوع: تم التحقق من صحة المعاملة و / أو تصديرها.
ForbiddenTransactionAlreadyValidated=ممنوع: تم التحقق من صحة المعاملة.
## Dictionary
@ -442,6 +450,7 @@ AccountancyErrorMismatchLetterCode=عدم تطابق في التوفيق بين
AccountancyErrorMismatchBalanceAmount=الرصيد (%s) لا يساوي 0
AccountancyErrorLetteringBookkeeping=حدثت أخطاء بخصوص المعاملات: %s
ErrorAccountNumberAlreadyExists=رقم المحاسبة %s موجود بالفعل
ErrorArchiveAddFile=Can't put "%s" file in archive
## Import
ImportAccountingEntries=مداخيل حسابية
@ -468,5 +477,7 @@ FECFormatMulticurrencyCode=كود متعدد العملات (ايديفيز)
DateExport=تاريخ التصدير
WarningReportNotReliable=تحذير ، هذا التقرير لا يستند إلى دفتر الأستاذ ، لذلك لا يحتوي على معاملة تم تعديلها يدويًا في دفتر الأستاذ. إذا كان تسجيل دفتر اليومية الخاص بك محدثًا ، فسيكون عرض مسك الدفاتر أكثر دقة.
ExpenseReportJournal=تقرير دفتر المصاريف
DocsAlreadyExportedAreExcluded=Docs already exported are excluded
ClickToHideAlreadyExportedLines=Click to hide already exported lines
NAccounts=%s حساباً

View File

@ -226,6 +226,7 @@ NoUserGroupDefined=لم يتم تحديد مجموعة مستخدمين
Password=كلمة المرور
PasswordRetype=Repeat your password
NoteSomeFeaturesAreDisabled=لاحظ أنه تم تعطيل الكثير من الميزات | الوحدات في هذا العرض التوضيحي.
YourUserFile=Your user file
Name=اسم
NameSlashCompany=الاسم | الشركة
Person=شخص
@ -897,6 +898,9 @@ MassFilesArea=مساحة للملفات التي تم إنشاؤها بواسط
ShowTempMassFilesArea=عرض مساحة الملفات التي تم إنشاؤها بواسطة الإجراءات الجماعية
ConfirmMassDeletion=تأكيد الحذف الضخم
ConfirmMassDeletionQuestion=هل أنت متأكد من أنك تريد حذف %s السجل (السجلات) المحددة؟
ConfirmMassClone=Bulk clone confirmation
ConfirmMassCloneQuestion=Select project to clone to
ConfirmMassCloneToOneProject=Clone to project %s
RelatedObjects=كائنات ذات صلة
ClassifyBilled=تصنيف الفواتير
ClassifyUnbilled=تصنيف غير مفوتر
@ -912,8 +916,8 @@ ExportFilteredList=تصدير قائمة التى تم تصفيتها
ExportList=قائمة التصدير
ExportOptions=خيارات التصدير
IncludeDocsAlreadyExported=تضمين المستندات التي تم تصديرها
ExportOfPiecesAlreadyExportedIsEnable=Export of pieces already exported is enable
ExportOfPiecesAlreadyExportedIsDisable=Export of pieces already exported is disable
ExportOfPiecesAlreadyExportedIsEnable=Documents already exported are visible and will be exported
ExportOfPiecesAlreadyExportedIsDisable=Documents already exported are hidden and won't be exported
AllExportedMovementsWereRecordedAsExported=تم تسجيل جميع حركات التصدير على أنها مصدرة
NotAllExportedMovementsCouldBeRecordedAsExported=لا يمكن تسجيل جميع حركات التصدير على أنها مصدرة
Miscellaneous=متفرقات
@ -1128,6 +1132,7 @@ DeleteFileText=هل تريد حقا حذف هذا الملف؟
ShowOtherLanguages=عرض اللغات الأخرى
SwitchInEditModeToAddTranslation=قم بالتبديل في وضع التحرير لإضافة ترجمات لهذه اللغة
NotUsedForThisCustomer=غير مستخدم لهذا العميل
NotUsedForThisVendor=Not used for this vendor
AmountMustBePositive=المبلغ يجب أن يكون موجبًا
ByStatus=حسب الحالة
InformationMessage=معلومات
@ -1148,14 +1153,14 @@ EventReminder=تذكير بالحدث
UpdateForAllLines=تحديث لجميع البنود
OnHold=في الانتظار
Civility=Civility
AffectTag=Assign Tag
AffectUser=Assign User
SetSupervisor=Set Supervisor
AffectTag=Assign a Tag
AffectUser=Assign a User
SetSupervisor=Set the supervisor
CreateExternalUser=إنشاء مستخدم خارجي
ConfirmAffectTag=Bulk Tag Assignement
ConfirmAffectUser=Bulk User Assignement
ProjectRole=Role assigned on each project
TasksRole=Role assigned on each task of each project
ProjectRole=Role assigned on each project/opportunity
TasksRole=Role assigned on each task (if used)
ConfirmSetSupervisor=Bulk Supervisor Set
ConfirmUpdatePrice=Choose a increase/decrease price rate
ConfirmAffectTagQuestion=Are you sure you want to assign tags to the %s selected record(s)?
@ -1210,3 +1215,10 @@ CreatedByPublicPortal=تم إنشاؤه من بوابة عامة
UserAgent=User Agent
InternalUser=مستخدم داخلي
ExternalUser=مستخدم خارجي
NoSpecificContactAddress=No specific contact or address
NoSpecificContactAddressBis=This tab is dedicated to force specific contacts or addresses for the current object. Use it only if you want to define one or several specific contacts or addresses for the object when the information on the thirdparty is not enough or not accurate.
HideOnVCard=Hide %s
AddToContacts=Add address to my contacts
LastAccess=Last access
UploadAnImageToSeeAPhotoHere=Upload an image from the tab %s to see a photo here
LastPasswordChangeDate=Last password change date

View File

@ -41,7 +41,8 @@ STRIPE_LIVE_WEBHOOK_KEY=المفتاح المباشر للخطاف التلقا
ONLINE_PAYMENT_WAREHOUSE=المخزون الذي سيتم استخدامه لتقليل المخزون عند إتمام الدفع عبر الإنترنت <br> (TODO عندما يتم تنفيذ خيار تقليل المخزون على إجراء على الفاتورة ويقوم الدفع عبر الإنترنت بإنشاء الفاتورة بنفسه؟)
StripeLiveEnabled=تم تمكين Stripe Live (بخلاف ذلك وضع الاختبار / وضع الحماية)
StripeImportPayment=استيراد مدفوعات الشريط
ExampleOfTestCreditCard=مثال على بطاقة الائتمان للاختبار: %s => صالحة ، %s => خطأ CVC ، %s => منتهية الصلاحية ، %s => فشل الشحن
ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails
ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s
StripeGateways=بوابات شريطية
OAUTH_STRIPE_TEST_ID=معرف عميل Stripe Connect (ca _...)
OAUTH_STRIPE_LIVE_ID=معرف عميل Stripe Connect (ca _...)
@ -70,5 +71,8 @@ ToOfferALinkForLiveWebhook=رابط لإعداد Stripe WebHook لاستدعاء
PaymentWillBeRecordedForNextPeriod=سيتم تسجيل الدفع للفترة القادمة.
ClickHereToTryAgain= <a href="%s"> انقر هنا للمحاولة مرة أخرى ... </a>
CreationOfPaymentModeMustBeDoneFromStripeInterface=نظرًا لقواعد مصادقة العميل القوية ، يجب أن يتم إنشاء بطاقة من Stripe backoffice. يمكنك النقر هنا للتبديل إلى سجل عميل Stripe: %s
TERMINAL_LOCATION=موقع (العنوان) للمحطات
STRIPE_CARD_PRESENT=Card Present for Stripe Terminals
TERMINAL_LOCATION=Location (address) for Stripe Terminals
RequestDirectDebitWithStripe=Request Direct Debit with Stripe
STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe

View File

@ -26,6 +26,7 @@ Permission56002=تعديل التذاكر
Permission56003=حذف التذاكر
Permission56004=إدارة التذاكر
Permission56005=عرض جميع تذاكر الأطراف الثالثة (غير فعالة للمستخدمين الخارجيين ، دائماً محدودين بالطرف الثالث المعتمدين عليه)
Permission56006=Export tickets
Tickets=التذاكر
TicketDictType=انواع - التذاكر
@ -61,6 +62,8 @@ TypeContact_ticket_external_CONTRIBUTOR=مساهم خارجي
OriginEmail=البريد الإلكتروني للمبلغ
Notify_TICKET_SENTBYMAIL=إرسال إشعار التذكرة بالبريد الإلكتروني
ExportDataset_ticket_1=التذاكر
# Status
Read=قراءة
Assigned=مسند

View File

@ -66,7 +66,8 @@ LinkedToDolibarrUser=ارتباط بالمستخدم
LinkedToDolibarrThirdParty=رابط لطرف ثالث
CreateDolibarrLogin=انشاء مستخدم
CreateDolibarrThirdParty=إيجاد طرف ثالث
LoginAccountDisableInDolibarr=في حساب المعاقين Dolibarr.
LoginAccountDisableInDolibarr=Account disabled in Dolibarr
PASSWORDInDolibarr=Password modified in Dolibarr
UsePersonalValue=استخدام الشخصي قيمة
ExportDataset_user_1=المستخدمون وخصائصهم
DomainUser=النطاق المستخدم ق ٪
@ -129,3 +130,6 @@ IPLastLogin=آخر تسجيل دخول إلى IP
IPPreviousLogin=تسجيل الدخول السابق إلى IP
ShowAllPerms=Show all permission rows
HideAllPerms=Hide all permission rows
UserPublicPageDesc=You can enable a virtual card for this user. An url with the user profile and a barcode will be available to allow anybody with a smartphone to scan it and add your contact to its address book.
EnablePublicVirtualCard=Enable the public virtual user card
PublicVirtualCardUrl=Public virtual user card

View File

@ -14,8 +14,8 @@ ACCOUNTING_EXPORT_ENDLINE=Изберете типа пренасяне на но
ACCOUNTING_EXPORT_PREFIX_SPEC=Посочете префикса в името на файла
ThisService=Тази услуга
ThisProduct=Този продукт
DefaultForService=По подразбиране за услуга
DefaultForProduct=По подразбиране за продукт
DefaultForService=Default for services
DefaultForProduct=Default for products
ProductForThisThirdparty=Product for this thirdparty
ServiceForThisThirdparty=Service for this thirdparty
CantSuggest=Не може да се предложи
@ -101,7 +101,8 @@ ShowAccountingAccount=Показване на счетоводна сметка
ShowAccountingJournal=Показване на счетоводен журнал
ShowAccountingAccountInLedger=Show accounting account in ledger
ShowAccountingAccountInJournals=Show accounting account in journals
AccountAccountingSuggest=Предложена счетоводна сметка
DataUsedToSuggestAccount=Data used to suggest account
AccountAccountingSuggest=Account suggested
MenuDefaultAccounts=Сметки по подразбиране
MenuBankAccounts=Банкови сметки
MenuVatAccounts=Сметки за ДДС
@ -126,6 +127,7 @@ WriteBookKeeping=Record transactions in accounting
Bookkeeping=Главна счетоводна книга
BookkeepingSubAccount=Subledger
AccountBalance=Салдо по сметка
AccountBalanceSubAccount=Sub-accounts balance
ObjectsRef=Обект №
CAHTF=Обща покупка от доставчик преди ДДС
TotalExpenseReport=Общ разходен отчет
@ -189,6 +191,7 @@ ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Account (from the Chart Of Account) to be us
UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty)
ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Account (from the Chart Of Account) to be used as the default
UseAuxiliaryAccountOnSupplierDeposit=Store supplier account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty)
ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY=Accounting account by default to register customer retained warranty
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased within same country (used if not defined in the product sheet)
ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased from EEC to another EEC country (used if not defined in the product sheet)
@ -218,6 +221,7 @@ JournalLabel=Име на журнал
NumPiece=Пореден номер
TransactionNumShort=Транзакция №
AccountingCategory=Custom group of accounts
AccountingCategories=Custom groups of accounts
GroupByAccountAccounting=Group by general ledger account
GroupBySubAccountAccounting=Group by subledger account
AccountingAccountGroupsDesc=Тук може да определите някои групи счетоводни сметки. Те ще бъдат използвани за персонализирани счетоводни отчети.
@ -265,6 +269,7 @@ ShowSubtotalByGroup=Show subtotal by level
Pcgtype=Група от сметки
PcgtypeDesc=Групата от сметки се използва като предварително зададен критерий за филтриране и групиране за някои счетоводни отчети. Например 'Приход' или 'Разход' се използват като групи за счетоводни сметки на продукти за съставяне на отчет за разходи / приходи.
AccountingCategoriesDesc=Custom group of accounts can be used to group accounting accounts into one name to ease filter use or building of custom reports.
Reconcilable=Съвместим
@ -294,6 +299,7 @@ DescValidateMovements=Всякакви промени или изтриване
ValidateHistory=Автоматично свързване
AutomaticBindingDone=Automatic bindings done (%s) - Automatic binding not possible for some record (%s)
DoManualBindingForFailedRecord=You have to do a manual link for the %s row(s) not linked automatically.
ErrorAccountancyCodeIsAlreadyUse=Error, you cannot remove or disable this account of chart of account because it is used
MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s & Credit = %s
@ -337,11 +343,13 @@ ACCOUNTING_DISABLE_BINDING_ON_SALES=Disable binding & transfer in accountancy on
ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Disable binding & transfer in accountancy on purchases (vendor invoices will not be taken into account in accounting)
ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Disable binding & transfer in accountancy on expense reports (expense reports will not be taken into account in accounting)
ACCOUNTING_ENABLE_LETTERING=Enable the lettering function in the accounting
ACCOUNTING_ENABLE_AUTOLETTERING=Enable the automatic lettering when transferring to accounting
## Export
NotExportLettering=Do not export the lettering when generating the file
NotifiedExportDate=Flag exported lines as Exported <span class="warning">(to modify a line, you will need to delete the whole transaction and re-transfert it into accounting)</span>
NotifiedValidationDate=Validate and Lock the exported entries <span class="warning">(same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible)</span>
NotifiedExportFull=Export documents ?
DateValidationAndLock=Date validation and lock
ConfirmExportFile=Confirmation of the generation of the accounting export file ?
ExportDraftJournal=Експортиране на журнал в чернова
@ -398,7 +406,7 @@ SaleLocal=Локална продажба
SaleExport=Експортна продажба
SaleEEC=Вътреобщностна продажба
SaleEECWithVAT=Продажба в ЕИО с ДДС различен от нула, за която се предполага, че НЕ е вътреобщностна продажба, поради тази причина се препоръчва стандартната сметка за продукти.
SaleEECWithoutVATNumber=Продажба в ЕИО без ДДС, но идентификационният номер по ДДС на контрагента не е определен. Ще се използва стандартната сметка за продажба на продукти. Може да въведете идентификационен номер по ДДС на контрагента или сметка на продукта, ако е необходимо.
SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fall back on the account for standard sales. You can fix the VAT ID of the thirdparty, or change the product account suggested for binding if needed.
ForbiddenTransactionAlreadyExported=Forbidden: The transaction has been validated and/or exported.
ForbiddenTransactionAlreadyValidated=Forbidden: The transaction has been validated.
## Dictionary
@ -442,6 +450,7 @@ AccountancyErrorMismatchLetterCode=Mismatch in reconcile code
AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0
AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s
ErrorAccountNumberAlreadyExists=The accounting number %s already exists
ErrorArchiveAddFile=Can't put "%s" file in archive
## Import
ImportAccountingEntries=Счетоводни записи
@ -468,5 +477,7 @@ FECFormatMulticurrencyCode=Multicurrency code (Idevise)
DateExport=Дата на експортиране
WarningReportNotReliable=Внимание, тази справка не се основава на главната счетоводна книга, така че не съдържа транзакция, ръчно променена в книгата. Ако осчетоводяването ви е актуално, то прегледът на счетоводството е по-точен.
ExpenseReportJournal=Журнал за разходни отчети
DocsAlreadyExportedAreExcluded=Docs already exported are excluded
ClickToHideAlreadyExportedLines=Click to hide already exported lines
NAccounts=%s accounts

View File

@ -226,6 +226,7 @@ NoUserGroupDefined=Няма дефинирана потребителска гр
Password=Парола
PasswordRetype=Repeat your password
NoteSomeFeaturesAreDisabled=Имайте предвид, че много функции / модули са деактивирани в тази демонстрация.
YourUserFile=Your user file
Name=Име
NameSlashCompany=Име / Фирма
Person=Лице
@ -897,6 +898,9 @@ MassFilesArea=Секция с файлове, създадени от масов
ShowTempMassFilesArea=Показване на секцията с файлове, създадени от масови действия
ConfirmMassDeletion=Потвърждение за масово изтриване
ConfirmMassDeletionQuestion=Сигурни ли сте, че искате да изтриете избраните %s записа?
ConfirmMassClone=Bulk clone confirmation
ConfirmMassCloneQuestion=Select project to clone to
ConfirmMassCloneToOneProject=Clone to project %s
RelatedObjects=Свързани обекти
ClassifyBilled=Класифициране като фактурирано
ClassifyUnbilled=Класифициране като нетаксувано
@ -912,8 +916,8 @@ ExportFilteredList=Експортиране на филтрирания спис
ExportList=Списък за експортиране
ExportOptions=Настройки за експортиране
IncludeDocsAlreadyExported=Включените документи са вече експортирани
ExportOfPiecesAlreadyExportedIsEnable=Експортът на вече експортирани части е разрешен
ExportOfPiecesAlreadyExportedIsDisable=Експортът на вече експортирани части е забранен
ExportOfPiecesAlreadyExportedIsEnable=Documents already exported are visible and will be exported
ExportOfPiecesAlreadyExportedIsDisable=Documents already exported are hidden and won't be exported
AllExportedMovementsWereRecordedAsExported=Всички експортирани движения бяха записани като експортирани
NotAllExportedMovementsCouldBeRecordedAsExported=Не всички експортирани движения могат да бъдат записани като експортирани
Miscellaneous=Разни
@ -1128,6 +1132,7 @@ DeleteFileText=Сигурни ли сте, че искате да изтриет
ShowOtherLanguages=Показване на други езици
SwitchInEditModeToAddTranslation=Превключете в режим на редактиране, за да добавите преводи за този език.
NotUsedForThisCustomer=Не се използва за този клиент
NotUsedForThisVendor=Not used for this vendor
AmountMustBePositive=Amount must be positive
ByStatus=By status
InformationMessage=Информация
@ -1148,14 +1153,14 @@ EventReminder=Event Reminder
UpdateForAllLines=Update for all lines
OnHold=На изчакване
Civility=Civility
AffectTag=Assign Tag
AffectUser=Assign User
SetSupervisor=Set Supervisor
AffectTag=Assign a Tag
AffectUser=Assign a User
SetSupervisor=Set the supervisor
CreateExternalUser=Create external user
ConfirmAffectTag=Bulk Tag Assignement
ConfirmAffectUser=Bulk User Assignement
ProjectRole=Role assigned on each project
TasksRole=Role assigned on each task of each project
ProjectRole=Role assigned on each project/opportunity
TasksRole=Role assigned on each task (if used)
ConfirmSetSupervisor=Bulk Supervisor Set
ConfirmUpdatePrice=Choose a increase/decrease price rate
ConfirmAffectTagQuestion=Are you sure you want to assign tags to the %s selected record(s)?
@ -1210,3 +1215,10 @@ CreatedByPublicPortal=Created from Public portal
UserAgent=User Agent
InternalUser=Вътрешен потребител
ExternalUser=Външен потребител
NoSpecificContactAddress=No specific contact or address
NoSpecificContactAddressBis=This tab is dedicated to force specific contacts or addresses for the current object. Use it only if you want to define one or several specific contacts or addresses for the object when the information on the thirdparty is not enough or not accurate.
HideOnVCard=Hide %s
AddToContacts=Add address to my contacts
LastAccess=Last access
UploadAnImageToSeeAPhotoHere=Upload an image from the tab %s to see a photo here
LastPasswordChangeDate=Last password change date

View File

@ -41,7 +41,8 @@ STRIPE_LIVE_WEBHOOK_KEY=Работен Webhook ключ
ONLINE_PAYMENT_WAREHOUSE=Склад, който да се използва за намаляване на наличности, когато се извършва онлайн плащане<br>(Да се направи, когато възможността за намаляване на наличности се извършва при действие върху фактура и онлайн плащането генерира фактурата?)
StripeLiveEnabled=Активиран е работен режим на Stripe (в противен случай тестов режим / пясъчник)
StripeImportPayment=Импортиране на Stripe плащания
ExampleOfTestCreditCard=Пример с кредитна карта за тест: %s => валидна, %s => грешка в CVC, %s => изтекла, %s => неуспешно таксуване
ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails
ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s
StripeGateways=Stripe шлюзове
OAUTH_STRIPE_TEST_ID=Тестов Stripe Connect Client ID (ca_...)
OAUTH_STRIPE_LIVE_ID=Реален Stripe Connect Client ID (ca_...)
@ -61,6 +62,7 @@ DeleteACard=Изтриване на карта
ConfirmDeleteCard=Сигурни ли сте, че искате да изтриете тази кредитна или дебитна карта?
CreateCustomerOnStripe=Създаване на клиент в Stripe
CreateCardOnStripe=Създаване на карта в Stripe
CreateBANOnStripe=Create bank on Stripe
ShowInStripe=Показване в Stripe
StripeUserAccountForActions=Потребителски акаунт, който да се използва за известяване по имейл при някои Stripe събития (Stripe изплащания)
StripePayoutList=Списък със Stripe изплащания
@ -69,3 +71,8 @@ ToOfferALinkForLiveWebhook=Връзка към настройка на Stripe We
PaymentWillBeRecordedForNextPeriod=Плащането ще бъде регистрирано за следващия период.
ClickHereToTryAgain=<a href="%s">Кликнете тук, за да опитате отново ...</a>
CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s
STRIPE_CARD_PRESENT=Card Present for Stripe Terminals
TERMINAL_LOCATION=Location (address) for Stripe Terminals
RequestDirectDebitWithStripe=Request Direct Debit with Stripe
STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe

View File

@ -26,6 +26,7 @@ Permission56002=Промяна на тикети
Permission56003=Изтриване на тикети
Permission56004=Управление на тикети
Permission56005=Преглед на тикети от всички контрагенти (не е приложимо за външни потребители, винаги ще бъдат ограничени до контрагента от който зависят)
Permission56006=Export tickets
Tickets=Тикети
TicketDictType=Тикет - Видове
@ -61,6 +62,8 @@ TypeContact_ticket_external_CONTRIBUTOR=Сътрудник от страна н
OriginEmail=Reporter Email
Notify_TICKET_SENTBYMAIL=Изпращане на тикет съобщението по имейл
ExportDataset_ticket_1=Тикети
# Status
Read=Прочетен
Assigned=Възложен

View File

@ -66,7 +66,8 @@ LinkedToDolibarrUser=Link to user
LinkedToDolibarrThirdParty=Link to third party
CreateDolibarrLogin=Създаване на потребител
CreateDolibarrThirdParty=Създаване на контрагент
LoginAccountDisableInDolibarr=Профилът е деактивиран в системата.
LoginAccountDisableInDolibarr=Account disabled in Dolibarr
PASSWORDInDolibarr=Password modified in Dolibarr
UsePersonalValue=Използване на лична стойност
ExportDataset_user_1=Потребители и техните реквизити
DomainUser=Домейн потребител %s
@ -129,3 +130,6 @@ IPLastLogin=IP last login
IPPreviousLogin=IP previous login
ShowAllPerms=Show all permission rows
HideAllPerms=Hide all permission rows
UserPublicPageDesc=You can enable a virtual card for this user. An url with the user profile and a barcode will be available to allow anybody with a smartphone to scan it and add your contact to its address book.
EnablePublicVirtualCard=Enable the public virtual user card
PublicVirtualCardUrl=Public virtual user card

View File

@ -14,8 +14,8 @@ ACCOUNTING_EXPORT_ENDLINE=Select the carriage return type
ACCOUNTING_EXPORT_PREFIX_SPEC=Odredi prefiks za naziv datoteke
ThisService=This service
ThisProduct=Ovaj proizvod
DefaultForService=Default for service
DefaultForProduct=Pretpostavljeno za proizvod
DefaultForService=Default for services
DefaultForProduct=Default for products
ProductForThisThirdparty=Product for this thirdparty
ServiceForThisThirdparty=Service for this thirdparty
CantSuggest=Can't suggest
@ -101,7 +101,8 @@ ShowAccountingAccount=Show accounting account
ShowAccountingJournal=Show accounting journal
ShowAccountingAccountInLedger=Show accounting account in ledger
ShowAccountingAccountInJournals=Show accounting account in journals
AccountAccountingSuggest=Predloženi računovodstveni račun
DataUsedToSuggestAccount=Data used to suggest account
AccountAccountingSuggest=Account suggested
MenuDefaultAccounts=Default accounts
MenuBankAccounts=Žiro računi
MenuVatAccounts=Vat accounts
@ -126,6 +127,7 @@ WriteBookKeeping=Record transactions in accounting
Bookkeeping=Ledger
BookkeepingSubAccount=Subledger
AccountBalance=Account balance
AccountBalanceSubAccount=Sub-accounts balance
ObjectsRef=Source object ref
CAHTF=Total purchase vendor before tax
TotalExpenseReport=Total expense report
@ -189,6 +191,7 @@ ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Account (from the Chart Of Account) to be us
UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty)
ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Account (from the Chart Of Account) to be used as the default
UseAuxiliaryAccountOnSupplierDeposit=Store supplier account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty)
ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY=Accounting account by default to register customer retained warranty
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased within same country (used if not defined in the product sheet)
ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased from EEC to another EEC country (used if not defined in the product sheet)
@ -218,6 +221,7 @@ JournalLabel=Journal label
NumPiece=Piece number
TransactionNumShort=Num. transaction
AccountingCategory=Custom group of accounts
AccountingCategories=Custom groups of accounts
GroupByAccountAccounting=Group by general ledger account
GroupBySubAccountAccounting=Group by subledger account
AccountingAccountGroupsDesc=You can define here some groups of accounting account. They will be used for personalized accounting reports.
@ -265,6 +269,7 @@ ShowSubtotalByGroup=Show subtotal by level
Pcgtype=Group of account
PcgtypeDesc=Group of account are used as predefined 'filter' and 'grouping' criteria for some accounting reports. For example, 'INCOME' or 'EXPENSE' are used as groups for accounting accounts of products to build the expense/income report.
AccountingCategoriesDesc=Custom group of accounts can be used to group accounting accounts into one name to ease filter use or building of custom reports.
Reconcilable=Reconcilable
@ -294,6 +299,7 @@ DescValidateMovements=Any modification or deletion of writing, lettering and del
ValidateHistory=Bind Automatically
AutomaticBindingDone=Automatic bindings done (%s) - Automatic binding not possible for some record (%s)
DoManualBindingForFailedRecord=You have to do a manual link for the %s row(s) not linked automatically.
ErrorAccountancyCodeIsAlreadyUse=Error, you cannot remove or disable this account of chart of account because it is used
MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s & Credit = %s
@ -337,11 +343,13 @@ ACCOUNTING_DISABLE_BINDING_ON_SALES=Disable binding & transfer in accountancy on
ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Disable binding & transfer in accountancy on purchases (vendor invoices will not be taken into account in accounting)
ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Disable binding & transfer in accountancy on expense reports (expense reports will not be taken into account in accounting)
ACCOUNTING_ENABLE_LETTERING=Enable the lettering function in the accounting
ACCOUNTING_ENABLE_AUTOLETTERING=Enable the automatic lettering when transferring to accounting
## Export
NotExportLettering=Do not export the lettering when generating the file
NotifiedExportDate=Flag exported lines as Exported <span class="warning">(to modify a line, you will need to delete the whole transaction and re-transfert it into accounting)</span>
NotifiedValidationDate=Validate and Lock the exported entries <span class="warning">(same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible)</span>
NotifiedExportFull=Export documents ?
DateValidationAndLock=Date validation and lock
ConfirmExportFile=Confirmation of the generation of the accounting export file ?
ExportDraftJournal=Export draft journal
@ -398,7 +406,7 @@ SaleLocal=Local sale
SaleExport=Export sale
SaleEEC=Sale in EEC
SaleEECWithVAT=Sale in EEC with a VAT not null, so we suppose this is NOT an intracommunautary sale and the suggested account is the standard product account.
SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fallback on the product account for standard sales. You can fix the VAT ID of thirdparty or the product account if needed.
SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fall back on the account for standard sales. You can fix the VAT ID of the thirdparty, or change the product account suggested for binding if needed.
ForbiddenTransactionAlreadyExported=Forbidden: The transaction has been validated and/or exported.
ForbiddenTransactionAlreadyValidated=Forbidden: The transaction has been validated.
## Dictionary
@ -442,6 +450,7 @@ AccountancyErrorMismatchLetterCode=Mismatch in reconcile code
AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0
AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s
ErrorAccountNumberAlreadyExists=The accounting number %s already exists
ErrorArchiveAddFile=Can't put "%s" file in archive
## Import
ImportAccountingEntries=Accounting entries
@ -468,5 +477,7 @@ FECFormatMulticurrencyCode=Multicurrency code (Idevise)
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
DocsAlreadyExportedAreExcluded=Docs already exported are excluded
ClickToHideAlreadyExportedLines=Click to hide already exported lines
NAccounts=%s accounts

View File

@ -66,7 +66,8 @@ LinkedToDolibarrUser=Link to user
LinkedToDolibarrThirdParty=Link to third party
CreateDolibarrLogin=Kreiraj korisnika
CreateDolibarrThirdParty=Napravi subjekat
LoginAccountDisableInDolibarr=Račun isključen u Dolibarru.
LoginAccountDisableInDolibarr=Account disabled in Dolibarr
PASSWORDInDolibarr=Password modified in Dolibarr
UsePersonalValue=Koristite lične vrijednosti
ExportDataset_user_1=Users and their properties
DomainUser=Korisnik domene %s
@ -129,3 +130,6 @@ IPLastLogin=IP last login
IPPreviousLogin=IP previous login
ShowAllPerms=Show all permission rows
HideAllPerms=Hide all permission rows
UserPublicPageDesc=You can enable a virtual card for this user. An url with the user profile and a barcode will be available to allow anybody with a smartphone to scan it and add your contact to its address book.
EnablePublicVirtualCard=Enable the public virtual user card
PublicVirtualCardUrl=Public virtual user card

View File

@ -14,8 +14,8 @@ ACCOUNTING_EXPORT_ENDLINE=Seleccioneu el tipus de retorn
ACCOUNTING_EXPORT_PREFIX_SPEC=Especifica el prefix del nom del fitxer
ThisService=Aquest servei
ThisProduct=Aquest producte
DefaultForService=Defecte per al servei
DefaultForProduct=Defecte per al producte
DefaultForService=Default for services
DefaultForProduct=Default for products
ProductForThisThirdparty=Producte per a aquest tercer
ServiceForThisThirdparty=Servei per a aquest tercer
CantSuggest=No es pot suggerir
@ -101,7 +101,8 @@ ShowAccountingAccount=Mostrar diari de comptes
ShowAccountingJournal=Mostrar diari comptable
ShowAccountingAccountInLedger=Mostra el compte comptable al Llibre major
ShowAccountingAccountInJournals=Mostra el compte comptable als diaris
AccountAccountingSuggest=Compte comptable suggerit
DataUsedToSuggestAccount=Data used to suggest account
AccountAccountingSuggest=Account suggested
MenuDefaultAccounts=Comptes per defecte
MenuBankAccounts=Comptes bancaris
MenuVatAccounts=Comptes d'IVA
@ -126,6 +127,7 @@ WriteBookKeeping=Registrar transaccions en comptabilitat
Bookkeeping=Llibre major
BookkeepingSubAccount=Subcompte
AccountBalance=Compte saldo
AccountBalanceSubAccount=Sub-accounts balance
ObjectsRef=Referència de l'objecte origen
CAHTF=Total de compra a Proveïdor abans d'impostos
TotalExpenseReport=Informe de despeses totals
@ -165,8 +167,8 @@ ACCOUNTANCY_COMBO_FOR_AUX=Activa la llista combinada per a un compte subsidiari
ACCOUNTING_DATE_START_BINDING=Definiu una data per a començar la vinculació i transferència a la comptabilitat. Per sota daquesta data, les transaccions no es transferiran a la comptabilitat.
ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=En la transferència comptable, quin és el període seleccionat per defecte
ACCOUNTING_SELL_JOURNAL=Sales journal (sales and returns)
ACCOUNTING_PURCHASE_JOURNAL=Purchase journal (purchase and returns)
ACCOUNTING_SELL_JOURNAL=Diari de vendes (vendes i devolucions)
ACCOUNTING_PURCHASE_JOURNAL=Diari de compres (compres i devolucions)
ACCOUNTING_BANK_JOURNAL=Cash journal (receipts and disbursements)
ACCOUNTING_EXPENSEREPORT_JOURNAL=Diari de l'informe de despeses
ACCOUNTING_MISCELLANEOUS_JOURNAL=Diari general
@ -189,6 +191,7 @@ ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Account (from the Chart Of Account) to be us
UseAuxiliaryAccountOnCustomerDeposit=Emmagatzema el compte del client com a compte individual al llibre major subsidiari per a les línies de pagament inicial (si està desactivat, el compte individual per a les línies de pagament inicial romandrà buit)
ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Account (from the Chart Of Account) to be used as the default
UseAuxiliaryAccountOnSupplierDeposit=Emmagatzema el compte del proveïdor com a compte individual al llibre major subsidiari per a les línies de pagament inicial (si està desactivat, el compte individual de les línies de pagament inicial romandrà buit)
ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY=Accounting account by default to register customer retained warranty
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased within same country (used if not defined in the product sheet)
ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased from EEC to another EEC country (used if not defined in the product sheet)
@ -217,7 +220,8 @@ Codejournal=Diari
JournalLabel=Nom del diari
NumPiece=Número de peça
TransactionNumShort=Número de transacció
AccountingCategory=Custom group of accounts
AccountingCategory=Grup de comptes personalitzat
AccountingCategories=Custom groups of accounts
GroupByAccountAccounting=Agrupa per compte major
GroupBySubAccountAccounting=Agrupa per subcompte comptable
AccountingAccountGroupsDesc=Podeu definir aquí alguns grups de comptes comptables. S'utilitzaran per a informes comptables personalitzats.
@ -265,6 +269,7 @@ ShowSubtotalByGroup=Mostra el subtotal per nivell
Pcgtype=Grup de comptes
PcgtypeDesc=S'utilitzen grups de comptes com a criteris predefinits de «filtre» i «agrupació» per a alguns informes de comptabilitat. Per exemple, «INGRESSOS» o «DESPESES» s'utilitzen com a grups per a comptes comptables de productes per a crear l'informe de despeses/ingressos.
AccountingCategoriesDesc=Custom group of accounts can be used to group accounting accounts into one name to ease filter use or building of custom reports.
Reconcilable=Reconciliable
@ -294,6 +299,7 @@ DescValidateMovements=Queda prohibida qualsevol modificació o supressió de reg
ValidateHistory=Comptabilitza automàticament
AutomaticBindingDone=Enllaços automàtics fets (%s): l'enllaç automàtic no és possible per a alguns registres (%s)
DoManualBindingForFailedRecord=You have to do a manual link for the %s row(s) not linked automatically.
ErrorAccountancyCodeIsAlreadyUse=Error, you cannot remove or disable this account of chart of account because it is used
MvtNotCorrectlyBalanced=Moviment no equilibrat correctament. Dèbit = %s i crèdit = %s
@ -337,11 +343,13 @@ ACCOUNTING_DISABLE_BINDING_ON_SALES=Desactiva la vinculació i transferència de
ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Desactiva la vinculació i transferència a la comptabilitat de les compres (les factures de proveïdors no es tindran en compte a la comptabilitat)
ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Desactiva la vinculació i transferència de comptes en els informes de despeses (els informes de despeses no es tindran en compte a la comptabilitat)
ACCOUNTING_ENABLE_LETTERING=Enable the lettering function in the accounting
ACCOUNTING_ENABLE_AUTOLETTERING=Enable the automatic lettering when transferring to accounting
## Export
NotExportLettering=Do not export the lettering when generating the file
NotifiedExportDate=Marca les línies exportades com a Exportades <span class="warning"> (per a modificar una línia, hauràs de suprimir tota la transacció i tornar-la a transferir a la comptabilitat) </span>
NotifiedValidationDate=Validar i bloquejar les entrades exportades <span class="warning"> (mateix efecte que la característica "%s", la modificació i la supressió de les línies DEFINITIVAMENT no seran possibles) </span>
NotifiedValidationDate=Validar i bloquejar les entrades exportades <span class="warning">(mateix efecte que la característica "%s", la modificació i la supressió de les línies DEFINITIVAMENT no seran possibles)</span>
NotifiedExportFull=Export documents ?
DateValidationAndLock=Validació de data i bloqueig
ConfirmExportFile=Confirmació de la generació del fitxer d'exportació comptable?
ExportDraftJournal=Exporta els esborranys del llibre
@ -398,7 +406,7 @@ SaleLocal=Venda local
SaleExport=Venda dexportació
SaleEEC=Venda en CEE
SaleEECWithVAT=Venda a la CEE amb un IVA que no és nul, per la qual cosa suposem que NO es tracta duna venda intracomunitària i el compte suggerit és el compte estàndard del producte.
SaleEECWithoutVATNumber=Venda a la CEE sense IVA, però lidentificador dIVA del tercer no està definit. S'ha emprat el compte del producte per a vendes estàndard. Podeu corregir lidentificador dIVA del tercer o el compte del producte si cal.
SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fall back on the account for standard sales. You can fix the VAT ID of the thirdparty, or change the product account suggested for binding if needed.
ForbiddenTransactionAlreadyExported=Prohibit: la transacció ha estat validada i/o exportada.
ForbiddenTransactionAlreadyValidated=Prohibit: la transacció s'ha validat.
## Dictionary
@ -429,19 +437,20 @@ ConfirmMassDeleteBookkeepingWritingQuestion=Això suprimirà la transacció de l
## Error
SomeMandatoryStepsOfSetupWereNotDone=No s'han fet alguns passos obligatoris de configuració, si us plau, completeu-los
ErrorNoAccountingCategoryForThisCountry=No hi ha cap grup de comptes comptables disponible per al país %s (Vegeu Inici - Configuració - Diccionaris)
ErrorInvoiceContainsLinesNotYetBounded=Intenta actualitzar algunes línies de la factura <strong> %s </strong>, però algunes altres encara no estan vinculades al compte de comptabilitat. Es rebutja el registre comptable de totes les línies d'aquesta factura.
ErrorInvoiceContainsLinesNotYetBounded=Intenteu registrar algunes línies de la factura <strong>%s</strong>, però algunes altres línies encara no estan vinculades al compte comptable. Es denega el registre al diari de totes les línies d'aquesta factura.
ErrorInvoiceContainsLinesNotYetBoundedShort=Algunes línies a la factura no estan vinculades al compte de comptabilitat.
ExportNotSupported=El format d'exportació configurat no està suportat en aquesta pàgina
BookeppingLineAlreayExists=Les línies ja existeixen en la comptabilitat
NoJournalDefined=Cap diari definit
Binded=Línies comptabilitzades
ToBind=Línies a comptabilitzar
UseMenuToSetBindindManualy=Línies encara no enllaçades, utilitzeu el menú <a href="%s"> %s </a> per a fer l'enllaç manualment
UseMenuToSetBindindManualy=Línies encara no enllaçades, utilitzeu el menú <a href="%s">%s</a> per a fer l'enllaç manualment
SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Ho sentim, aquest mòdul no és compatible amb la funció experimental de les factures de situació
AccountancyErrorMismatchLetterCode=No coincideix en el codi de conciliació
AccountancyErrorMismatchBalanceAmount=El saldo (%s) no és igual a 0
AccountancyErrorLetteringBookkeeping=S'han produït errors relacionats amb les transaccions: %s
ErrorAccountNumberAlreadyExists=El número de comptabilitat %s ja existeix
ErrorArchiveAddFile=Can't put "%s" file in archive
## Import
ImportAccountingEntries=Entrades de comptabilitat
@ -468,5 +477,7 @@ FECFormatMulticurrencyCode=Codi multidivisa (Idevise)
DateExport=Data d'exportació
WarningReportNotReliable=Avís, aquest informe no està basat en el Llibre Major, de manera que no conté assentaments modificats manualment en el Llibre Major. Si el registre diari està actualitzat, la vista de comptes és més precisa.
ExpenseReportJournal=Diari d'informe de despeses
DocsAlreadyExportedAreExcluded=Docs already exported are excluded
ClickToHideAlreadyExportedLines=Click to hide already exported lines
NAccounts=comptes %s

View File

@ -645,6 +645,8 @@ Module2300Name=Tasques programades
Module2300Desc=Gestió de tasques programades (àlies cron o taula de crons)
Module2400Name=Esdeveniments/Agenda
Module2400Desc=Seguiment d'esdeveniments. Registre d'esdeveniments automàtics per a fer el seguiment o registrar esdeveniments manuals o reunions. Aquest és el mòdul principal per a una bona gestió de la relació amb clients o proveïdors.
Module2430Name=Booking Calendar System
Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities.
Module2500Name=SGD / GCE
Module2500Desc=Sistema de gestió de documents / Gestió de continguts electrònics. Organització automàtica dels vostres documents generats o emmagatzemats. Compartiu-los quan ho necessiteu.
Module2600Name=Serveis API / Web (servidor SOAP)
@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind
Module2900Desc=Capacitats de conversió GeoIP Maxmind
Module3200Name=Arxius inalterables
Module3200Desc=Activa el registre d'alguns esdeveniments de negoci en un registre inalterable. Els esdeveniments s'arxiven en temps real. El registre és una taula d'esdeveniments encadenats que només es poden llegir i exportar. Aquest mòdul pot ser obligatori per a alguns països.
Module3300Name=Module Builder
Module3200Desc=Activa el registre d'alguns esdeveniments de negoci en un registre inalterable. Els esdeveniments s'arxiven en temps real. El registre és una taula d'esdeveniments encadenats que només es poden llegir i exportar. Aquest mòdul pot ser obligatori per a alguns països.
Module3400Name=Xarxes socials
Module3400Desc=Activa els camps de les xarxes socials a tercers i adreces (skype, twitter, facebook...).
Module4000Name=RH
@ -1270,6 +1274,7 @@ TriggerActiveAsModuleActive=Els activadors d'aquest fitxer estan actius, ja que
GeneratedPasswordDesc=Trieu el mètode que s'utilitzarà per a les contrasenyes generades automàticament.
DictionaryDesc=Afegeix totes les dades de referència. Pots afegir els teus valors per defecte.
ConstDesc=Aquesta pàgina permet editar (anul·lar) paràmetres no disponibles en altres pàgines. Aquests són paràmetres reservats només per a desenvolupadors o solucions avançades de problemes.
MiscellaneousOptions=Miscellaneous options
MiscellaneousDesc=Aquí es defineixen la resta de paràmetres relacionats amb la seguretat.
LimitsSetup=Configuració de límits i precisions
LimitsDesc=Podeu definir aquí els límits i precisions utilitzats per Dolibarr
@ -1496,7 +1501,7 @@ AdherentLoginRequired= Gestiona un compte d'usuari per a cada soci
AdherentMailRequired=Cal un correu electrònic per a crear un soci nou
MemberSendInformationByMailByDefault=La casella de selecció per a enviar una confirmació per correu electrònic als socis (validació o nova subscripció) està activada per defecte
MemberCreateAnExternalUserForSubscriptionValidated=Creeu un usuari extern per a cada subscripció nova membre validada
VisitorCanChooseItsPaymentMode=Visitor can choose from any available payment modes
VisitorCanChooseItsPaymentMode=El visitant pot triar entre qualsevol forma de pagament disponible
MEMBER_REMINDER_EMAIL=Activa el recordatori automàtic <b> per correu electrònic </b> de les subscripcions caducades. Nota: El mòdul <strong> %s </strong> s'ha d'habilitar i configurar correctament per a enviar recordatoris.
MembersDocModules=Plantilles de documents per a documents generats a partir del registre de socis
##### LDAP setup #####
@ -1826,6 +1831,9 @@ AGENDA_USE_EVENT_TYPE=Utilitzeu tipus d'esdeveniments (gestionats en el menú Co
AGENDA_USE_EVENT_TYPE_DEFAULT=Estableix automàticament aquest valor predeterminat per al tipus d'esdeveniment en el formulari de creació de l'esdeveniment
AGENDA_DEFAULT_FILTER_TYPE=Estableix automàticament aquest tipus d'esdeveniment al filtre de cerca de la vista d'agenda
AGENDA_DEFAULT_FILTER_STATUS=Estableix automàticament aquest estat per a esdeveniments al filtre de cerca de la visualització d'agenda
AGENDA_EVENT_PAST_COLOR=Past event color
AGENDA_EVENT_CURRENT_COLOR=Current event color
AGENDA_EVENT_FUTURE_COLOR=Future event color
AGENDA_DEFAULT_VIEW=Quina vista voleu obrir de manera predeterminada en seleccionar el menú Agenda
AGENDA_REMINDER_BROWSER=Activa el recordatori d'esdeveniments <b> al navegador de l'usuari </b> (Quan s'arriba a la data de recordatori, el navegador mostra una finestra emergent. Cada usuari pot desactivar aquestes notificacions des de la configuració de notificacions del navegador).
AGENDA_REMINDER_BROWSER_SOUND=Habilita les notificacions sonores
@ -2129,6 +2137,7 @@ CodeLastResult=Últim codi retornat
NbOfEmailsInInbox=Nombre de correus electrònics en el directori font
LoadThirdPartyFromName=Carregueu la cerca de tercers al %s (només carrega)
LoadThirdPartyFromNameOrCreate=Carregueu la cerca de tercers a %s (crear si no es troba)
LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found)
AttachJoinedDocumentsToObject=Deseu els fitxers adjunts als documents d'objectes si es troba una referència d'un objecte al tema del correu electrònic.
WithDolTrackingID=Missatge d'una conversa iniciada per un primer correu electrònic enviat des de Dolibarr
WithoutDolTrackingID=Missatge d'una conversa iniciada per un primer correu electrònic NO enviat des de Dolibarr
@ -2355,3 +2364,5 @@ AllowExternalDownload=Allow external download (without login, using a shared lin
DeadlineDayVATSubmission=Deadline day for vat submission on the next month
MaxNumberOfAttachementOnForms=Max number of joinded files in a form
IfDefinedUseAValueBeetween=If defined, use a value between %s and %s
Reload=Reload
ConfirmReload=Confirm module reload

View File

@ -17,7 +17,7 @@ DisabledBecauseNotLastSituationInvoice=Disabled because invoice is not erasable.
DisabledBecauseNotErasable=S'ha desactivat perquè no es pot esborrar
InvoiceStandard=Factura estàndard
InvoiceStandardAsk=Factura estàndard
InvoiceStandardDesc=Aquest tipus de factura és la factura tradicional. També es coneix com <b>factura de dèbit</ b> (del verb deure).
InvoiceStandardDesc=Aquest tipus de factura és la factura comuna.
InvoiceStandardShort=Estàndard
InvoiceDeposit=Factura de bestreta
InvoiceDepositAsk=Factura de bestreta
@ -31,7 +31,7 @@ InvoiceReplacementAsk=Factura rectificativa de la factura
InvoiceReplacementDesc=<b>La factura de substitució</b> sutilitza per a substituir completament una factura sense que shagi rebut cap pagament. <br><br> Nota: Només es poden substituir les factures sense pagament. Si la factura que reemplaça encara no està tancada, es tancarà automàticament a 'abandonada'
InvoiceAvoir=Abonament
InvoiceAvoirAsk=Abonament per factura rectificativa
InvoiceAvoirDesc=L'<b>abonament</b> és una factura negativa destinada a compensar un import de factura que difereix de l'import realment pagat (per haver pagat de més o per devolució de productes, per exemple).
InvoiceAvoirDesc=La <b>nota de crèdit</b> és una factura negativa que s'utilitza per a corregir el fet que una factura mostra un import diferent de l'import realment pagat (p. ex., el client va pagar massa per error o no pagarà l'import complet perquè alguns productes van ser retornats) .
invoiceAvoirWithLines=Crear abonament amb les línies de la factura d'origen
invoiceAvoirWithPaymentRestAmount=Crear abonament de la factura pendent de pagament
invoiceAvoirLineWithPaymentRestAmount=Abonament per a la quantitat restant no pagada
@ -244,7 +244,7 @@ RemainderToPayMulticurrency=La moneda original pendent de pagament
RemainderToTake=Import restant per a cobrar
RemainderToTakeMulticurrency=Import restant, moneda original
RemainderToPayBack=Import restant a reemborsar
RemainderToPayBackMulticurrency=Import restant per reembossar, moneda original
RemainderToPayBackMulticurrency=Import restant a reemborsar, moneda original
NegativeIfExcessRefunded=negatiu si es reemborsa l'excés
Rest=Pendent
AmountExpected=Import reclamat
@ -263,7 +263,7 @@ NoOtherDraftBills=Cap altra factura esborrany
NoDraftInvoices=Sense factures esborrany
RefBill=Ref. factura
ToBill=A facturar
RemainderToBill=Queda per facturar
RemainderToBill=Queda per a facturar
SendBillByMail=Envia factura per e-mail
SendReminderBillByMail=Envia recordatori per e-mail
RelatedCommercialProposals=Pressupostos relacionats

View File

@ -8,34 +8,12 @@ BrowseBlockedLog=Registres inalterables
ShowAllFingerPrintsMightBeTooLong=Mostra tots els registres arxivats (pot ser llarg)
ShowAllFingerPrintsErrorsMightBeTooLong=Mostra tots els registres d'arxiu no vàlids (pot ser llarg)
DownloadBlockChain=Baixa les empremtes dactilars
KoCheckFingerprintValidity=Lentrada de registre arxivada no és vàlida. Significa que algú (un pirata informàtic?) ha modificat algunes dades daquest registre després que es va gravar, o que ha estat esborrat el registre arxivat anterior (comproveu que la línia amb numeració anterior existeix) o ha sigut modificat el el checksum del registre anterior.
KoCheckFingerprintValidity=L'entrada de registre arxivada no és vàlida. Significa que algú (un pirata informàtic?) ha modificat algunes dades d'aquest registre després d'haver-lo enregistrat, o ha esborrat el registre arxivat anterior (comproveu que existeixi la línia amb la numeració anterior) o ha modificat la suma de verificació del registre anterior.
OkCheckFingerprintValidity=El registre del registre arxivat és vàlid. Les dades d'aquesta línia no s'han modificat i l'entrada segueix l'anterior.
OkCheckFingerprintValidityButChainIsKo=El registre arxivat sembla ser vàlid en comparació amb l'anterior, però la cadena s'ha corromput prèviament.
AddedByAuthority=Emmagatzemat a l'autoritat remota
NotAddedByAuthorityYet=Encara no emmagatzemat a l'autoritat remota
ShowDetails=Mostra els detalls emmagatzemats
logPAYMENT_VARIOUS_CREATE=S'ha creat el pagament (no assignat a una factura)
logPAYMENT_VARIOUS_MODIFY=S'ha modificat el pagament (no assignat a una factura)
logPAYMENT_VARIOUS_DELETE=Supressió lògica de pagament (no assignada a una factura)
logPAYMENT_ADD_TO_BANK=Pagament afegit al banc
logPAYMENT_CUSTOMER_CREATE=S'ha creat el pagament del client
logPAYMENT_CUSTOMER_DELETE=Lògica de liquidació del pagament del client
logDONATION_PAYMENT_CREATE=Pagament de donació creat
logDONATION_PAYMENT_DELETE=Llicència de pagament de la donació
logBILL_PAYED=S'ha pagat la factura del client
logBILL_UNPAYED=Establiment de la factura del client no remunerat
logBILL_VALIDATE=Validació factura
logBILL_SENTBYMAIL=La factura del client s'envia per correu
logBILL_DELETE=S'ha suprimit la factura del client lògicament
logMODULE_RESET=S'ha desactivat el mòdul bloquejat
logMODULE_SET=S'ha habilitat el mòdul bloquejat
logDON_VALIDATE=Donació validada
logDON_MODIFY=Donació modificada
logDON_DELETE=Donació de l'eliminació lògica
logMEMBER_SUBSCRIPTION_CREATE=S'ha creat una subscripció de membre
logMEMBER_SUBSCRIPTION_MODIFY=S'ha modificat la subscripció de membre
logMEMBER_SUBSCRIPTION_DELETE=Supressió lògica de subscripció de membre
logCASHCONTROL_VALIDATE=Registre de tancament de caixa
BlockedLogBillDownload=Descarrega la factura del client
BlockedLogBillPreview=Previsualització de la factura del client
BlockedlogInfoDialog=Detalls del registre
@ -48,10 +26,36 @@ DataOfArchivedEvent=Dades completes d'esdeveniments arxivats
ImpossibleToReloadObject=Objecte original (tipus %s, identificador %s) no enllaçat (vegeu la columna "Dades completes" per a obtenir dades desades inalterables)
BlockedLogAreRequiredByYourCountryLegislation=El mòdul de registres inalterables pot ser requerit per la legislació del vostre país. La desactivació d'aquest mòdul pot fer que qualsevol transacció futura sigui invàlida pel que fa a la llei i l'ús del programari legal, ja que no es pot validar mitjançant una auditoria fiscal.
BlockedLogActivatedBecauseRequiredByYourCountryLegislation=El mòdul de registres inalterables s'ha activat a causa de la legislació del vostre país. La desactivació d'aquest mòdul pot fer que qualsevol transacció futura sigui invàlida pel que fa a la llei i l'ús del programari legal, ja que no es pot validar mitjançant una auditoria fiscal.
BlockedLogDisableNotAllowedForCountry=Llista de països on l'ús d'aquest mòdul és obligatori (només per impedir que es desactivi el mòdul per error, si el vostre país està en aquesta llista, la desactivació del mòdul no és possible sense editar aquesta llista. Noteu també que habilitar / desactivar aquest mòdul seguiu una pista en el registre inalterable).
BlockedLogDisableNotAllowedForCountry=Llista de països on l'ús d'aquest mòdul és obligatori (només per a evitar que es desactivi el mòdul per error, si el vostre país és en aquesta llista, no és possible desactivar el mòdul sense editar aquesta llista primer. Tingueu en compte també que activar/desactivar aquest mòdul mantindrà un registre al registre inalterable).
OnlyNonValid=No vàlid
TooManyRecordToScanRestrictFilters=Hi ha massa registres per a escanejar/analitzar. Limita la llista amb filtres més restrictius.
RestrictYearToExport=Restringeix el mes / any per a exportar
BlockedLogEnabled=S'ha habilitat el sistema per a fer el seguiment d'esdeveniments en registres inalterables
BlockedLogDisabled=El sistema per a fer el seguiment d'esdeveniments en registres inalterables s'ha desactivat després de fer algunes gravacions. Hem desat una empremta digital especial per a fer un seguiment de la cadena com a trencada
BlockedLogDisabledBis=S'ha desactivat el sistema per a fer el seguiment d'esdeveniments en registres inalterables. Això és possible perquè encara no s'ha fet cap registre.
## logTypes
logBILL_DELETE=S'ha suprimit la factura del client lògicament
logBILL_PAYED=S'ha pagat la factura del client
logBILL_SENTBYMAIL=La factura del client s'envia per correu
logBILL_UNPAYED=Establiment de la factura del client no remunerat
logBILL_VALIDATE=Validació factura
logCASHCONTROL_VALIDATE=Registre de tancament de caixa
logDOC_DOWNLOAD=Descàrrega d'un document validat per a imprimir o enviar
logDOC_PREVIEW=Vista prèvia d'un document validat per a imprimir o descarregar
logDONATION_PAYMENT_CREATE=Pagament de donació creat
logDONATION_PAYMENT_DELETE=Llicència de pagament de la donació
logDON_DELETE=Donació de l'eliminació lògica
logDON_MODIFY=Donació modificada
logDON_VALIDATE=Donació validada
logMEMBER_SUBSCRIPTION_CREATE=S'ha creat una subscripció de membre
logMEMBER_SUBSCRIPTION_DELETE=Supressió lògica de subscripció de membre
logMEMBER_SUBSCRIPTION_MODIFY=S'ha modificat la subscripció de membre
logMODULE_RESET=S'ha desactivat el mòdul bloquejat
logMODULE_SET=S'ha habilitat el mòdul bloquejat
logPAYMENT_ADD_TO_BANK=Pagament afegit al banc
logPAYMENT_CUSTOMER_CREATE=S'ha creat el pagament del client
logPAYMENT_CUSTOMER_DELETE=Lògica de liquidació del pagament del client
logPAYMENT_VARIOUS_CREATE=S'ha creat el pagament (no assignat a una factura)
logPAYMENT_VARIOUS_DELETE=Supressió lògica de pagament (no assignada a una factura)
logPAYMENT_VARIOUS_MODIFY=S'ha modificat el pagament (no assignat a una factura)

View File

@ -312,8 +312,8 @@ CustomerRelativeDiscountShort=Descompte relatiu
CustomerAbsoluteDiscountShort=Descompte fixe
CompanyHasRelativeDiscount=Aquest client té un descompte per defecte de <b>%s%%</b>
CompanyHasNoRelativeDiscount=Aquest client no té descomptes relatius per defecte
HasRelativeDiscountFromSupplier=Teniu un descompte predeterminat de <b> %s%% </b> d'aquest proveïdor
HasNoRelativeDiscountFromSupplier=No default relative discount from this vendor
HasRelativeDiscountFromSupplier=You have a default discount of <b>%s%%</b> with this vendor
HasNoRelativeDiscountFromSupplier=No default relative discount with this vendor
CompanyHasAbsoluteDiscount=Aquest client té descomptes disponibles (notes de crèdit o bestretes) per <b>%s</b> %s
CompanyHasDownPaymentOrCommercialDiscount=Aquest client té un descompte disponible (comercial, de pagament) per a <b>%s</b>%s
CompanyHasCreditNote=Aquest client encara té abonaments per <b>%s</b> %s
@ -499,4 +499,7 @@ OutOfEurope=Fora dEuropa (CEE)
CurrentOutstandingBillLate=Factura pendent actual en retard
BecarefullChangeThirdpartyBeforeAddProductToInvoice=Ves amb compte, en funció de la configuració del preu del producte, has de canviar de tercer abans dafegir el producte al TPV.
EmailAlreadyExistsPleaseRewriteYourCompanyName=El correu electrònic ja existeix, si us plau, reescriu el nom de la teva empresa
TwoRecordsOfCompanyName=Hi ha més d'un registre per a aquesta empresa, poseu-vos en contacte amb nosaltres per a completar la vostra sol·licitud d'associació"
TwoRecordsOfCompanyName=more than one record exists for this company, please contact us to complete your partnership request
CompanySection=Secció d'empresa
ShowSocialNetworks=Mostra les xarxes socials
HideSocialNetworks=Amaga les xarxes socials

View File

@ -84,14 +84,14 @@ MakeLocalDatabaseDumpShort=Còpia de seguretat de la base de dades local
MakeLocalDatabaseDump=Crear un bolcat de la base de dades local. Els paràmetres són: compressió ('gz' o 'bz' o 'none'), tipus de còpia de seguretat ('mysql' o 'pgsql'), 1, 'auto' o nom de fitxer per a compilar, nombre de fitxers de còpia de seguretat per conservar
MakeSendLocalDatabaseDumpShort=Envia una còpia de seguretat de la base de dades local
MakeSendLocalDatabaseDump=Envieu una còpia de seguretat de la base de dades local per correu electrònic. Els paràmetres són: to, from, subject, message, filename (nom del fitxer enviat), filtre ('sql' només per a la còpia de seguretat de la base de dades)
BackupIsTooLargeSend=Sorry, last backup file is too large to be send by email
BackupIsTooLargeSend=Ho sentim, l'últim fitxer de còpia de seguretat és massa gran per a enviar-lo per correu electrònic
CleanUnfinishedCronjobShort=Neteja les tasques programades inacabades
CleanUnfinishedCronjob=Neteja les tasques programades bloquejades en el processament quan el procés ja no s'executa
WarningCronDelayed=Atenció, a efectes de rendiment, sigui quina sigui la propera data d'execució de les tasques habilitades, és possible que les vostres tasques es retardin a un màxim de %s hores abans de ser executades.
DATAPOLICYJob=Netejador de dades i anonimitzador
JobXMustBeEnabled=La tasca %s s'ha d'activar
EmailIfError=Email for warning on error
ErrorInBatch=Error when running the job %s
EmailIfError=Correu electrònic per a advertir d'error
ErrorInBatch=Error en executar la tasca %s
# Cron Boxes
LastExecutedScheduledJob=Darrera tasca programada executada

View File

@ -303,6 +303,7 @@ ErrorValueForTooLow=Value for <b>%s</b> is too low
ErrorValueCantBeNull=Value for <b>%s</b> can't be null
ErrorDateOfMovementLowerThanDateOfFileTransmission=The date of the bank transaction can't be lower than the date of the file transmission
ErrorTooMuchFileInForm=Too much files in form, the maximum number is %s file(s)
ErrorSessionInvalidatedAfterPasswordChange=The session was been invalidated following a change of password, status or dates of validity. Please relogin.
# Warnings
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=El paràmetre PHP upload_max_filesize (%s) és superior al paràmetre PHP post_max_size (%s). No es tracta duna configuració consistent.
@ -325,6 +326,7 @@ WarningPaymentDateLowerThanInvoiceDate=La data de pagament (%s) és anterior a l
WarningTooManyDataPleaseUseMoreFilters=Massa dades (més de %s línies). Utilitza més filtres o indica la constant %s amb un límit superior.
WarningSomeLinesWithNullHourlyRate=Algunes vegades es van registrar per alguns usuaris quan no s'havia definit el seu preu per hora. Es va utilitzar un valor de 0 %s per hora, però això pot resultar una valoració incorrecta del temps dedicat.
WarningYourLoginWasModifiedPleaseLogin=El vostre nom d'usuari s'ha modificat. Per motius de seguretat, haureu d'iniciar sessió amb el vostre nou nom d'usuari abans de la propera acció.
WarningYourPasswordWasModifiedPleaseLogin=S'ha modificat la teva contrasenya. Per motius de seguretat, haureu d'iniciar sessió ara amb la vostra nova contrasenya.
WarningAnEntryAlreadyExistForTransKey=Ja existeix una entrada per la clau de traducció d'aquest idioma
WarningNumberOfRecipientIsRestrictedInMassAction=Advertència: el nombre de destinataris diferents està limitat a <b> %s </b> quan s'utilitzen les accions massives a les llistes.
WarningDateOfLineMustBeInExpenseReportRange=Advertència, la data de la línia no està dins del rang de l'informe de despeses

View File

@ -172,3 +172,5 @@ ErrorSeveralCompaniesWithEmailContactUs=S'han trobat diverses empreses amb aques
ErrorSeveralCompaniesWithNameContactUs=S'han trobat diverses empreses amb aquest nom, de manera que no podem validar automàticament el vostre registre. Si us plau, poseu-vos en contacte amb nosaltres a %s per a obtenir una validació manual
NoPublicActionsAllowedForThisEvent=No hi ha cap acció pública oberta al públic per a aquest esdeveniment
MaxNbOfAttendees=Nombre màxim d'assistents
DateStartEvent=Data d'inici de l'esdeveniment
DateEndEvent=Data de finalització de l'esdeveniment

View File

@ -226,6 +226,7 @@ NoUserGroupDefined=Grup d'usuari no definit
Password=Contrasenya
PasswordRetype=Repetiu la vostra contrasenya
NoteSomeFeaturesAreDisabled=Tingues en compte que molts mòduls i funcionalitats estan deshabilitats en aquesta demostració.
YourUserFile=Your user file
Name=Nom
NameSlashCompany=Nom / Empresa
Person=Persona
@ -897,6 +898,9 @@ MassFilesArea=Àrea de fitxers generats per accions massives
ShowTempMassFilesArea=Mostra l'àrea de fitxers generats per accions massives
ConfirmMassDeletion=Confirmació d'esborrament massiu
ConfirmMassDeletionQuestion=Esteu segur que voleu suprimir els (s) registre (s) %s?
ConfirmMassClone=Bulk clone confirmation
ConfirmMassCloneQuestion=Select project to clone to
ConfirmMassCloneToOneProject=Clone to project %s
RelatedObjects=Objectes relacionats
ClassifyBilled=Classifica facturat
ClassifyUnbilled=Classifica no facturat
@ -912,8 +916,8 @@ ExportFilteredList=Llistat filtrat d'exportació
ExportList=Llistat d'exportació
ExportOptions=Opcions d'exportació
IncludeDocsAlreadyExported=Inclou documents ja exportats
ExportOfPiecesAlreadyExportedIsEnable=Lexportació de peces ja exportades està habilitada
ExportOfPiecesAlreadyExportedIsDisable=Lexportació de peces ja exportades està inhabilitada
ExportOfPiecesAlreadyExportedIsEnable=Documents already exported are visible and will be exported
ExportOfPiecesAlreadyExportedIsDisable=Documents already exported are hidden and won't be exported
AllExportedMovementsWereRecordedAsExported=Tots els moviments exportats s'han registrat com a exportats
NotAllExportedMovementsCouldBeRecordedAsExported=No s'ha pogut registrar tots els moviments exportats com a exportats
Miscellaneous=Diversos
@ -1128,6 +1132,7 @@ DeleteFileText=Realment vols suprimir aquest fitxer?
ShowOtherLanguages=Mostrar altres idiomes
SwitchInEditModeToAddTranslation=Canviar a mode d'edició per a afegir traduccions per a aquest idioma
NotUsedForThisCustomer=No s'utilitza per a aquest client
NotUsedForThisVendor=Not used for this vendor
AmountMustBePositive=L'import ha de ser positiu
ByStatus=Per estat
InformationMessage=Informació
@ -1148,14 +1153,14 @@ EventReminder=Recordatori d'esdeveniments
UpdateForAllLines=Actualització per a totes les línies
OnHold=Fora de servei
Civility=Civilitat
AffectTag=Assign Tag
AffectUser=Assign User
SetSupervisor=Set Supervisor
AffectTag=Assign a Tag
AffectUser=Assign a User
SetSupervisor=Set the supervisor
CreateExternalUser=Crea un usuari extern
ConfirmAffectTag=Bulk Tag Assignement
ConfirmAffectUser=Bulk User Assignement
ProjectRole=Role assigned on each project
TasksRole=Role assigned on each task of each project
ProjectRole=Role assigned on each project/opportunity
TasksRole=Role assigned on each task (if used)
ConfirmSetSupervisor=Bulk Supervisor Set
ConfirmUpdatePrice=Choose a increase/decrease price rate
ConfirmAffectTagQuestion=Are you sure you want to assign tags to the %s selected record(s)?
@ -1210,3 +1215,10 @@ CreatedByPublicPortal=Creat a partir del portal públic
UserAgent=Agent d'usuari
InternalUser=Usuari intern
ExternalUser=Usuari extern
NoSpecificContactAddress=No specific contact or address
NoSpecificContactAddressBis=This tab is dedicated to force specific contacts or addresses for the current object. Use it only if you want to define one or several specific contacts or addresses for the object when the information on the thirdparty is not enough or not accurate.
HideOnVCard=Hide %s
AddToContacts=Add address to my contacts
LastAccess=Últim accés
UploadAnImageToSeeAPhotoHere=Carregueu una imatge de la pestanya %s per a veure una foto aquí
LastPasswordChangeDate=Last password change date

View File

@ -207,7 +207,7 @@ NbOfSubscriptions=Nombre de contribucions
AmountOfSubscriptions=Import recaptat de les contribucions
TurnoverOrBudget=Volum de vendes (empresa) o Pressupost (associació o col.lectiu)
DefaultAmount=Import per defecte de la contribució
CanEditAmount=Subscription amount is free
CanEditAmount=L'import de la subscripció és gratuït
CanEditAmountDetail=El visitant pot triar/editar la quantitat de la seva contribució independentment del tipus de soci
AmountIsLowerToMinimumNotice=sobre un total d'%s
MEMBER_NEWFORM_PAYONLINE=After the online registration, switch automatically on the online payment page

View File

@ -96,6 +96,10 @@ OrdersStatisticsSuppliers=Estadístiques de comandes de compra
NumberOfOrdersByMonth=Nombre de comandes per mes
AmountOfOrdersByMonthHT=Quantitat de comandes per mes (sense IVA)
ListOfOrders=Llistat de comandes
ListOrderLigne=Lines of orders
productobuy=Products to buy only
productonly=Només productes
disablelinefree=No lines free
CloseOrder=Tancar comanda
ConfirmCloseOrder=Vols classificar aquesta comanda com entregada? Un cop s'entrega la comanda, es podrà classificar com a facturada.
ConfirmDeleteOrder=Vols eliminar aquesta comanda?
@ -131,6 +135,7 @@ SupplierOrderClassifiedBilled=Comanda de compra %s com a facturada
OtherOrders=Altres comandes
SupplierOrderValidatedAndApproved=La comanda del proveïdor està validada i aprovada: %s
SupplierOrderValidated=La comanda del proveïdor està validada: %s
OrderShowDetail=Show order detail
##### Types de contacts #####
TypeContact_commande_internal_SALESREPFOLL=Ordre de venda de seguiment representatiu
TypeContact_commande_internal_SHIPPING=Responsable del seguiment de l'enviament
@ -199,3 +204,5 @@ StatusSupplierOrderApproved=Aprovat
StatusSupplierOrderRefused=Rebutjat
StatusSupplierOrderReceivedPartially=Rebuda parcialment
StatusSupplierOrderReceivedAll=Tots els productes rebuts
NeedAtLeastOneInvoice = Hi ha d'haver almenys una factura
LineAlreadyDispatched = La línia de comanda ja s'ha rebut.

View File

@ -125,7 +125,7 @@ ValidateProject=Validar projecte
ConfirmValidateProject=Vols validar aquest projecte?
CloseAProject=Tancar projecte
ConfirmCloseAProject=Vols tancar aquest projecte?
AlsoCloseAProject=Also close project
AlsoCloseAProject=Tanca el projecte també
AlsoCloseAProjectTooltip=Manteniu-lo obert si encara heu de seguir les tasques de producció
ReOpenAProject=Reobrir projecte
ConfirmReOpenAProject=Vols reobrir aquest projecte?
@ -259,6 +259,7 @@ RecordsClosed=%s projecte(s) tancat(s)
SendProjectRef=Informació del projecte %s
ModuleSalaryToDefineHourlyRateMustBeEnabled=El mòdul "Salaris" ha d'estar habilitat per a definir la tarifa horària dels empleats per tal de valorar el temps dedicat
NewTaskRefSuggested=Tasca ref en ús, es requereix una nova tasca ref
NumberOfTasksCloned=%s task(s) cloned
TimeSpentInvoiced=Temps de facturació facturat
TimeSpentForIntervention=Temps dedicat
TimeSpentForInvoice=Temps dedicat
@ -287,7 +288,7 @@ AddPersonToTask=Afegeix també a les tasques
UsageOrganizeEvent=Ús: organització d'esdeveniments
PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=Classifica un projecte com a tancat quan s'hagin completat totes les seves tasques (progrés 100%%)
PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with all tasks already set to a progress of 100%% won't be affected: you will have to close them manually. This option only affects open projects.
SelectLinesOfTimeSpentToInvoice=Seleccioneu les línies de temps que no es facturen i, a continuació, feu una acció massiva "Genera factura" per facturar-les
SelectLinesOfTimeSpentToInvoice=Seleccioneu les línies de temps invertides que no estiguin facturades i, a continuació, feu l'acció massiva "Genera factura" per a facturar-les.
ProjectTasksWithoutTimeSpent=Projecte tasques sense temps dedicat
FormForNewLeadDesc=Gràcies per omplir el següent formulari per contactar amb nosaltres. També podeu enviar-nos un correu electrònic directament a <b> %s </b>.
ProjectsHavingThisContact=Projectes amb aquest contacte

View File

@ -49,7 +49,7 @@ StockCorrection=Regularització d'estoc
CorrectStock=Regularització d'estoc
StockTransfer=Transferència destoc
TransferStock=Transferència d'estoc
MassStockTransferShort=Bulk stock change
MassStockTransferShort=Canvi d'estoc massiu
StockMovement=Moviment d'estoc
StockMovements=Moviments d'estoc
NumberOfUnit=Nombre d'unitats
@ -107,7 +107,7 @@ LieuWareHouse=Localització magatzem
WarehousesAndProducts=Magatzems i productes
WarehousesAndProductsBatchDetail=Magatzems i productes (amb detall per lot/sèrie)
AverageUnitPricePMPShort=Preu mitjà ponderat
AverageUnitPricePMPDesc=El preu unitari mitjà dentrada que vam haver de gastar per aconseguir una unitat de producte al nostre estoc.
AverageUnitPricePMPDesc=El preu unitari mitjà d'entrada que hem hagut de gastar per a incorporar 1 unitat de producte al nostre estoc.
SellPriceMin=Preu de venda unitari
EstimatedStockValueSellShort=Valor per vendre
EstimatedStockValueSell=Valor per vendre

View File

@ -28,7 +28,7 @@ AccountParameter=Paràmetres del compte
UsageParameter=Paràmetres d'ús
InformationToFindParameters=Ajuda per a trobar la vostra informació del compte %s
STRIPE_CGI_URL_V2=URL CGI del mòdul Stripe per al pagament
CSSUrlForPaymentForm=Url del full d'estil CSS per al formulari de pagament
CSSUrlForPaymentForm=URL del full d'estil CSS per al formulari de pagament
NewStripePaymentReceived=S'ha rebut un pagament nou de Stripe
NewStripePaymentFailed=S'ha intentat el pagament nou de Stripe, però ha fallat
FailedToChargeCard=No s'ha pogut fer el càrrec a la targeta
@ -41,7 +41,8 @@ STRIPE_LIVE_WEBHOOK_KEY=Webhook clau en directe
ONLINE_PAYMENT_WAREHOUSE=Estoc a utilitzar per a disminuir l'estoc quan es fa el pagament en línia <br>(Pendent de fer quan l'opció per a reduir l'estoc es fa en una acció a la factura i el pagament en línia es genera la seva factura?)
StripeLiveEnabled=Stripe live activat (en cas contrari, mode de prova/sandbox)
StripeImportPayment=Importar pagaments per Stripe
ExampleOfTestCreditCard=Exemple de targeta de crèdit per a la prova: %s => vàlid, %s => error CVC, %s => caducat, %s => falla la càrrega
ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails
ExampleOfTestBankAcountForSEPA=Exemple de compte bancari BAN per a la prova de domiciliació bancària: %s
StripeGateways=Passarel·les Stripe
OAUTH_STRIPE_TEST_ID=Identificador de client de Stripe Connect (ca _...)
OAUTH_STRIPE_LIVE_ID=Identificador de client de Stripe Connect (ca _...)
@ -61,6 +62,7 @@ DeleteACard=Suprimeix la targeta
ConfirmDeleteCard=Estàs segur que vols eliminar aquesta targeta de crèdit o de dèbit?
CreateCustomerOnStripe=Crea un client a Stripe
CreateCardOnStripe=Crea una targeta a Stripe
CreateBANOnStripe=Create bank on Stripe
ShowInStripe=Mostra a Stripe
StripeUserAccountForActions=Compte d'usuari que s'utilitzarà per a la notificació per correu electrònic d'alguns esdeveniments de Stripe (pagaments de Stripe)
StripePayoutList=Llista de pagaments de Stripe
@ -69,4 +71,8 @@ ToOfferALinkForLiveWebhook=Enllaç a la configuració de Stripe WebHook per truc
PaymentWillBeRecordedForNextPeriod=El pagament es registrarà per al període següent.
ClickHereToTryAgain=<a href="%s"> Feu clic aquí per a tornar-ho a provar... </a>
CreationOfPaymentModeMustBeDoneFromStripeInterface=A causa de les fortes regles d'autenticació de clients, la creació d'una fitxa s'ha de fer des del panell de Stripe. Podeu fer clic aquí per a activar el registre de clients de Stripe: %s
TERMINAL_LOCATION=Ubicació (adreça) per a terminals
STRIPE_CARD_PRESENT=Card Present for Stripe Terminals
TERMINAL_LOCATION=Location (address) for Stripe Terminals
RequestDirectDebitWithStripe=Request Direct Debit with Stripe
STRIPE_SEPA_DIRECT_DEBIT=Activeu els pagaments per domiciliació bancària mitjançant Stripe

View File

@ -26,6 +26,7 @@ Permission56002=Modifica tiquets
Permission56003=Esborrar tiquets
Permission56004=Gestiona els tiquets
Permission56005=Veure els tiquets de tots els tercers (no efectiu per als usuaris externs, sempre estarà limitat al tercer del qual depenen)
Permission56006=Export tickets
Tickets=Tiquets
TicketDictType=Tiquet - Tipus
@ -61,6 +62,8 @@ TypeContact_ticket_external_CONTRIBUTOR=Col·laborador extern
OriginEmail=Correu electrònic del reporter
Notify_TICKET_SENTBYMAIL=Envia el missatge del tiquet per correu electrònic
ExportDataset_ticket_1=Tiquets
# Status
Read=Llegit
Assigned=Assignat

View File

@ -47,7 +47,7 @@ RemoveFromGroup=Eliminar del grup
PasswordChangedAndSentTo=Contrasenya canviada i enviada a <b>%s</b>.
PasswordChangeRequest=Sol·licitud de canvi de contrasenya per <b> %s </b>
PasswordChangeRequestSent=Petició de canvi de contrasenya per a <b>%s</b> enviada a <b>%s</b>.
IfLoginExistPasswordRequestSent=Si aquest inici de sessió és un compte vàlid, s'ha enviat un correu electrònic per a restablir la contrasenya.
IfLoginExistPasswordRequestSent=If this login is a valid account (with a valid email), an email to reset password has been sent.
IfEmailExistPasswordRequestSent=Si aquest correu electrònic és un compte vàlid, s'ha enviat un correu electrònic per a restablir la contrasenya.
ConfirmPasswordReset=Confirma la restauració de la contrasenya
MenuUsersAndGroups=Usuaris i grups
@ -66,9 +66,9 @@ LinkedToDolibarrUser=Enllaç a l'usuari
LinkedToDolibarrThirdParty=Enllaç a tercers
CreateDolibarrLogin=Crear un compte d'usuari
CreateDolibarrThirdParty=Crea un tercer
LoginAccountDisableInDolibarr=El compte està desactivat en Dolibarr
LoginAccountDisableInDolibarr=Compte desactivat a Dolibarr
PASSWORDInDolibarr=Contrasenya modificada a Dolibarr
UsePersonalValue=Utilitzar valors personalitzats
InternalUser=Usuari intern
ExportDataset_user_1=Usuaris i les seves propietats
DomainUser=Usuari de domini
Reactivate=Reactivar
@ -128,3 +128,8 @@ DateLastLogin=Data darrera sessió
DatePreviousLogin=Data d'inici de sessió anterior
IPLastLogin=IP darrer inici de sessió
IPPreviousLogin=IP d'inici de sessió anterior
ShowAllPerms=Show all permission rows
HideAllPerms=Hide all permission rows
UserPublicPageDesc=You can enable a virtual card for this user. An url with the user profile and a barcode will be available to allow anybody with a smartphone to scan it and add your contact to its address book.
EnablePublicVirtualCard=Enable the public virtual user card
PublicVirtualCardUrl=Public virtual user card

View File

@ -101,11 +101,11 @@ CreditDate=Abonada el
WithdrawalFileNotCapable=No es pot generar el fitxer de rebut de domiciliació del vostre país %s (El vostre país no és compatible)
ShowWithdraw=Mostra l'ordre de domiciliació
IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Tot i això, si la factura té com a mínim una ordre de pagament per domiciliació bancària encara no processada, no sestablirà com a pagament per a permetre la gestió prèvia de la retirada.
DoStandingOrdersBeforePayments=Aquesta pestanya permet sol·licitar una ordre de pagament per domiciliació bancària. Un cop fet, podeu entrar al menú "Banc->Pagament per domiciliació bancària" per generar i gestionar un fitxer de comanda de domiciliació bancària.
DoStandingOrdersBeforePayments=Aquesta pestanya permet sol·licitar una ordre de pagament per domiciliació bancària. Un cop fet, podeu entrar al menú "Banc->Pagament per domiciliació bancària" per a generar i gestionar un fitxer de domiciliació bancària.
DoStandingOrdersBeforePayments2=També podeu enviar una sol·licitud directament a un processador de pagaments SEPA com Stripe, ...
DoStandingOrdersBeforePayments3=Quan es tanqui l'ordre de domiciliació bancària, el pagament de les factures es registrarà automàticament i les factures es tanquen si la resta per pagar és nul·la.
DoCreditTransferBeforePayments=Aquesta pestanya us permet sol·licitar una ordre de transferència de crèdit. Un cop fet, aneu al menú "Banc->Pagament per transferència de crèdit" per generar i gestionar un fitxer d'ordre de transferència de crèdit.
DoCreditTransferBeforePayments3=Quan es tanqui l'ordre de transferència de crèdit, el pagament de les factures es registrarà automàticament i les factures es tanquen si la resta per pagar és nul·la.
DoStandingOrdersBeforePayments3=Quan es tanqui l'ordre de domiciliació bancària, el pagament de les factures es registrarà automàticament i les factures es tanquen si la resta per a pagar és nul·la.
DoCreditTransferBeforePayments=Aquesta pestanya us permet sol·licitar una ordre de transferència de crèdit. Un cop fet, aneu al menú "Banc->Pagament per transferència de crèdit" per a generar i gestionar un fitxer d'ordre de transferència de crèdit.
DoCreditTransferBeforePayments3=Quan es tanqui l'ordre de transferència de crèdit, el pagament de les factures es registrarà automàticament i les factures es tanquen si la resta per a pagar és nul·la.
WithdrawalFile=Fitxer de comanda de dèbit
CreditTransferFile=Fitxer de transferència de crèdit
SetToStatusSent=Estableix l'estat "Fitxer enviat"
@ -122,7 +122,7 @@ WithdrawRequestErrorNilAmount=No és possible crear una domiciliació sense impo
SepaMandate=Mandat de domiciliació bancària SEPA
SepaMandateShort=Mandat SEPA
PleaseReturnMandate=Si us plau, envieu aquest formulari de mandat per correu electrònic a %s o per correu postal a
SEPALegalText=En signar aquest formulari de mandat, autoritzeu (A) a %s i al seu proveïdor de serveis de pagament a enviar instruccions al vostre banc per carregar el vostre compte i (B) al vostre banc a domiciliar el vostre compte d'acord amb les instruccions d'%s. Com a part dels vostres drets, teniu dret a un reemborsament del vostre banc segons els termes i condicions del vostre acord amb el vostre banc. Els vostres drets respecte al mandat anterior s'expliquen en un comunicat que podeu obtenir al vostre banc.
SEPALegalText=En signar aquest formulari de mandat, autoritzeu (A) a %s i al seu proveïdor de serveis de pagament a enviar instruccions al vostre banc per a carregar el vostre compte i (B) al vostre banc a domiciliar el vostre compte d'acord amb les instruccions d'%s. Com a part dels vostres drets, teniu dret a un reemborsament del vostre banc segons els termes i condicions del vostre acord amb el vostre banc. Els vostres drets respecte al mandat anterior s'expliquen en un comunicat que podeu obtenir al vostre banc.
CreditorIdentifier=Identificador del creditor
CreditorName=Nom del creditor
SEPAFillForm=(B) Si us plau completa tots els camps marcats amb *

View File

@ -18,4 +18,4 @@ ModuleZapierForDolibarrDesc = Mòdul Zapier per a Dolibarr
ZapierForDolibarrSetup=Configuració de Zapier per a Dolibarr
ZapierDescription=Interfície amb Zapier
ZapierAbout=Quant al mòdul Zapier
ZapierSetupPage=No cal una configuració de Dolibarr per a utilitzar Zapier. Tanmateix, heu de generar i publicar un paquet a zapier per a poder utilitzar Zapier amb Dolibarr. Vegeu la documentació sobre <a href="https://wiki.dolibarr.org/index.php/Module_Zapier"> aquesta pàgina wiki </a>.
ZapierSetupPage=No cal una configuració de Dolibarr per a utilitzar Zapier. Tanmateix, heu de generar i publicar un paquet a zapier per a poder utilitzar Zapier amb Dolibarr. Vegeu la documentació sobre <a href="https://wiki.dolibarr.org/index.php/Module_Zapier">aquesta pàgina wiki</a>.

View File

@ -14,8 +14,8 @@ ACCOUNTING_EXPORT_ENDLINE=Zvolte typ návratu vozíku
ACCOUNTING_EXPORT_PREFIX_SPEC=Určete předponu pro název souboru
ThisService=Tato služba
ThisProduct=Tento výrobek
DefaultForService=Výchozí nastavení pro službu
DefaultForProduct=Výchozí produkt
DefaultForService=Default for services
DefaultForProduct=Default for products
ProductForThisThirdparty=Produkty pro tento subjekt
ServiceForThisThirdparty=Služby pro tento subjekt
CantSuggest=Nelze navrhnout
@ -101,7 +101,8 @@ ShowAccountingAccount=Zobrazit účetní účet
ShowAccountingJournal=Zobrazit účetní deník
ShowAccountingAccountInLedger=Show accounting account in ledger
ShowAccountingAccountInJournals=Show accounting account in journals
AccountAccountingSuggest=Účetní účet navrhl
DataUsedToSuggestAccount=Data used to suggest account
AccountAccountingSuggest=Account suggested
MenuDefaultAccounts=výchozí účty
MenuBankAccounts=Bankovní účty
MenuVatAccounts=Účty DPH
@ -126,6 +127,7 @@ WriteBookKeeping=Record transactions in accounting
Bookkeeping=účetní kniha
BookkeepingSubAccount=Subledger
AccountBalance=Zůstatek na účtu
AccountBalanceSubAccount=Sub-accounts balance
ObjectsRef=Zdrojový objekt ref
CAHTF=Celkový prodejce před zdaněním
TotalExpenseReport=Celková výkaz výdajů
@ -189,6 +191,7 @@ ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Account (from the Chart Of Account) to be us
UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty)
ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Account (from the Chart Of Account) to be used as the default
UseAuxiliaryAccountOnSupplierDeposit=Store supplier account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty)
ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY=Accounting account by default to register customer retained warranty
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased within same country (used if not defined in the product sheet)
ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased from EEC to another EEC country (used if not defined in the product sheet)
@ -218,6 +221,7 @@ JournalLabel=Označení časopisu
NumPiece=počet kusů
TransactionNumShort=Num. transakce
AccountingCategory=Custom group of accounts
AccountingCategories=Custom groups of accounts
GroupByAccountAccounting=Group by general ledger account
GroupBySubAccountAccounting=Group by subledger account
AccountingAccountGroupsDesc=Zde můžete definovat některé skupiny účetních účtů. Budou se používat pro personalizované účetní výkazy.
@ -265,6 +269,7 @@ ShowSubtotalByGroup=Show subtotal by level
Pcgtype=Skupina účtů
PcgtypeDesc=Skupina účtů se používá jako předdefinovaná kritéria pro filtrování a seskupování pro některé účetní výkazy. Například „PŘÍJMY“ nebo „VÝDAJE“ se používají jako skupiny pro účetní účty produktů k sestavení výkazu nákladů / výnosů.
AccountingCategoriesDesc=Custom group of accounts can be used to group accounting accounts into one name to ease filter use or building of custom reports.
Reconcilable=Smíření
@ -294,6 +299,7 @@ DescValidateMovements=Jakékoli úpravy nebo vymazání písem, nápisů a vymaz
ValidateHistory=Ověřit automaticky
AutomaticBindingDone=Automatic bindings done (%s) - Automatic binding not possible for some record (%s)
DoManualBindingForFailedRecord=You have to do a manual link for the %s row(s) not linked automatically.
ErrorAccountancyCodeIsAlreadyUse=Error, you cannot remove or disable this account of chart of account because it is used
MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s & Credit = %s
@ -337,11 +343,13 @@ ACCOUNTING_DISABLE_BINDING_ON_SALES=Disable binding & transfer in accountancy on
ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Disable binding & transfer in accountancy on purchases (vendor invoices will not be taken into account in accounting)
ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Disable binding & transfer in accountancy on expense reports (expense reports will not be taken into account in accounting)
ACCOUNTING_ENABLE_LETTERING=Enable the lettering function in the accounting
ACCOUNTING_ENABLE_AUTOLETTERING=Enable the automatic lettering when transferring to accounting
## Export
NotExportLettering=Do not export the lettering when generating the file
NotifiedExportDate=Flag exported lines as Exported <span class="warning">(to modify a line, you will need to delete the whole transaction and re-transfert it into accounting)</span>
NotifiedValidationDate=Validate and Lock the exported entries <span class="warning">(same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible)</span>
NotifiedExportFull=Export documents ?
DateValidationAndLock=Date validation and lock
ConfirmExportFile=Confirmation of the generation of the accounting export file ?
ExportDraftJournal=Exportovat deník návrhu
@ -398,7 +406,7 @@ SaleLocal=Místní prodej
SaleExport=Exportní prodej
SaleEEC=Prodej v EHS
SaleEECWithVAT=Prodej v EHS s nulovou DPH, takže předpokládáme, že se nejedná o intrakomunitní prodej a navrhovaný účet je standardní produktový účet.
SaleEECWithoutVATNumber=Prodej v EHS bez DPH, ale DIČ třetí strany není definováno. Pro standardní prodej jsme upadli na produktový účet. V případě potřeby můžete opravit DIČ třetí strany nebo produktový účet.
SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fall back on the account for standard sales. You can fix the VAT ID of the thirdparty, or change the product account suggested for binding if needed.
ForbiddenTransactionAlreadyExported=Forbidden: The transaction has been validated and/or exported.
ForbiddenTransactionAlreadyValidated=Forbidden: The transaction has been validated.
## Dictionary
@ -442,6 +450,7 @@ AccountancyErrorMismatchLetterCode=Mismatch in reconcile code
AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0
AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s
ErrorAccountNumberAlreadyExists=The accounting number %s already exists
ErrorArchiveAddFile=Can't put "%s" file in archive
## Import
ImportAccountingEntries=Účetní zápisy
@ -468,5 +477,7 @@ FECFormatMulticurrencyCode=Multicurrency code (Idevise)
DateExport=Datum exportu
WarningReportNotReliable=Upozornění: Tento přehled není založen na záznamníku, takže neobsahuje transakci upravenou ručně v Knihovně. Je-li vaše deník aktuální, zobrazení účetnictví je přesnější.
ExpenseReportJournal=Účet výkazů výdajů
DocsAlreadyExportedAreExcluded=Docs already exported are excluded
ClickToHideAlreadyExportedLines=Click to hide already exported lines
NAccounts=%s accounts

View File

@ -226,6 +226,7 @@ NoUserGroupDefined=Žádná uživatelská skupina není definována
Password=Heslo
PasswordRetype=Repeat your password
NoteSomeFeaturesAreDisabled=Všimněte si, že v této demonstraci je mnoho funkcí / modulů zakázáno.
YourUserFile=Your user file
Name=Název
NameSlashCompany=Název / společnost
Person=Osoba
@ -897,6 +898,9 @@ MassFilesArea=Plocha pro soubory postavený masových akcí
ShowTempMassFilesArea=Show area souborů postavený masových akcí
ConfirmMassDeletion=Hromadné smazání potvrzení
ConfirmMassDeletionQuestion=Opravdu chcete odstranit vybraný záznam(y) %s?
ConfirmMassClone=Bulk clone confirmation
ConfirmMassCloneQuestion=Select project to clone to
ConfirmMassCloneToOneProject=Clone to project %s
RelatedObjects=Související objekty
ClassifyBilled=Označit jako účtováno
ClassifyUnbilled=Zařadit nevyfakturované
@ -912,8 +916,8 @@ ExportFilteredList=Export filtrovaný seznam
ExportList=seznam export
ExportOptions=Možnosti exportu
IncludeDocsAlreadyExported=Zahrnout již exportované dokumenty
ExportOfPiecesAlreadyExportedIsEnable=Export již exportovaných kusů je povolen
ExportOfPiecesAlreadyExportedIsDisable=Export již exportovaných kusů je zakázán
ExportOfPiecesAlreadyExportedIsEnable=Documents already exported are visible and will be exported
ExportOfPiecesAlreadyExportedIsDisable=Documents already exported are hidden and won't be exported
AllExportedMovementsWereRecordedAsExported=Všechny exportované pohyby byly zaznamenány jako exportované
NotAllExportedMovementsCouldBeRecordedAsExported=Ne všechny exportované pohyby nelze zaznamenat jako exportované
Miscellaneous=Smíšený
@ -1128,6 +1132,7 @@ DeleteFileText=Opravdu chcete tento soubor odstranit?
ShowOtherLanguages=Zobrazit další jazyky
SwitchInEditModeToAddTranslation=Přepnutím v režimu úprav přidáte překlady do tohoto jazyka
NotUsedForThisCustomer=Nepoužívá se pro tohoto zákazníka
NotUsedForThisVendor=Not used for this vendor
AmountMustBePositive=Amount must be positive
ByStatus=By status
InformationMessage=Informace
@ -1148,14 +1153,14 @@ EventReminder=Event Reminder
UpdateForAllLines=Update for all lines
OnHold=Pozdržen
Civility=Civility
AffectTag=Assign Tag
AffectUser=Assign User
SetSupervisor=Set Supervisor
AffectTag=Assign a Tag
AffectUser=Assign a User
SetSupervisor=Set the supervisor
CreateExternalUser=Create external user
ConfirmAffectTag=Bulk Tag Assignement
ConfirmAffectUser=Bulk User Assignement
ProjectRole=Role assigned on each project
TasksRole=Role assigned on each task of each project
ProjectRole=Role assigned on each project/opportunity
TasksRole=Role assigned on each task (if used)
ConfirmSetSupervisor=Bulk Supervisor Set
ConfirmUpdatePrice=Choose a increase/decrease price rate
ConfirmAffectTagQuestion=Are you sure you want to assign tags to the %s selected record(s)?
@ -1210,3 +1215,10 @@ CreatedByPublicPortal=Created from Public portal
UserAgent=User Agent
InternalUser=Interní uživatel
ExternalUser=Externí uživatel
NoSpecificContactAddress=No specific contact or address
NoSpecificContactAddressBis=This tab is dedicated to force specific contacts or addresses for the current object. Use it only if you want to define one or several specific contacts or addresses for the object when the information on the thirdparty is not enough or not accurate.
HideOnVCard=Hide %s
AddToContacts=Add address to my contacts
LastAccess=Last access
UploadAnImageToSeeAPhotoHere=Upload an image from the tab %s to see a photo here
LastPasswordChangeDate=Last password change date

View File

@ -41,7 +41,8 @@ STRIPE_LIVE_WEBHOOK_KEY=Webhook live klíč
ONLINE_PAYMENT_WAREHOUSE=Sklad, který se má použít k poklesu akcií, když je hotovo on-line platba <br> (TODO Pokud se volba k poklesu zásob uskuteční na akci na faktuře a on-line platba vygeneruje fakturu?)
StripeLiveEnabled=Stripe live povoleno (jinak testovací režim / režim sandbox)
StripeImportPayment=Platby importu Stripe
ExampleOfTestCreditCard=Příklad kreditní karty pro test: %s (platný), %s (chyba CVC), %s (uplynula), %s (poplatek selže)
ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails
ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s
StripeGateways=Brána Stripe
OAUTH_STRIPE_TEST_ID=Připojení klienta Stripe Connect (ca _...)
OAUTH_STRIPE_LIVE_ID=Připojení klienta Stripe Connect (ca _...)
@ -61,6 +62,7 @@ DeleteACard=Smazat kartu
ConfirmDeleteCard=Opravdu chcete tuto kreditní nebo debetní kartu smazat?
CreateCustomerOnStripe=Vytvořte zákazníka na Stripe
CreateCardOnStripe=Vytvořte kartu na Stripe
CreateBANOnStripe=Create bank on Stripe
ShowInStripe=Zobrazit ve Stripe
StripeUserAccountForActions=Uživatelský účet, který se má používat pro e-mailové upozornění na některé události Stripe (Stripe výplaty)
StripePayoutList=Seznam páskových výplat
@ -69,3 +71,8 @@ ToOfferALinkForLiveWebhook=Odkaz na nastavení Stripe WebHook pro volání IPN (
PaymentWillBeRecordedForNextPeriod=Platba bude zaznamenána pro další období.
ClickHereToTryAgain= <a href="%s"> Klikněte zde a zkuste to znovu ... </a>
CreationOfPaymentModeMustBeDoneFromStripeInterface=Vzhledem k přísným pravidlům pro ověřování zákazníků musí být karta vytvořena z backoffice Stripe. Klepnutím sem zapnete záznam zákazníka Stripe: %s
STRIPE_CARD_PRESENT=Card Present for Stripe Terminals
TERMINAL_LOCATION=Location (address) for Stripe Terminals
RequestDirectDebitWithStripe=Request Direct Debit with Stripe
STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe

View File

@ -26,6 +26,7 @@ Permission56002=Změnit vstupenky
Permission56003=Smazat vstupenky
Permission56004=Správa vstupenek
Permission56005=Viz vstupenky všech subjektů (neplatí pro externí uživatele, vždy se omezují na subjekt, na který se vztahují)
Permission56006=Export tickets
Tickets=Vstupenky
TicketDictType=Vstupenka - Typy
@ -61,6 +62,8 @@ TypeContact_ticket_external_CONTRIBUTOR=Externí přispěvatel
OriginEmail=Reporter Email
Notify_TICKET_SENTBYMAIL=Odeslat e-mailem zprávu o lince
ExportDataset_ticket_1=Vstupenky
# Status
Read=Číst
Assigned=Přidělené

View File

@ -66,7 +66,8 @@ LinkedToDolibarrUser=Link to user
LinkedToDolibarrThirdParty=Link to third party
CreateDolibarrLogin=Vytvoření uživatele
CreateDolibarrThirdParty=Vytvořit třetí stranu
LoginAccountDisableInDolibarr=Účet byl zakázán v Dolibarr.
LoginAccountDisableInDolibarr=Account disabled in Dolibarr
PASSWORDInDolibarr=Password modified in Dolibarr
UsePersonalValue=Používejte osobní hodnotu
ExportDataset_user_1=Uživatelé a jejich vlastnosti
DomainUser=Doménový uživatel %s
@ -129,3 +130,6 @@ IPLastLogin=IP last login
IPPreviousLogin=IP previous login
ShowAllPerms=Show all permission rows
HideAllPerms=Hide all permission rows
UserPublicPageDesc=You can enable a virtual card for this user. An url with the user profile and a barcode will be available to allow anybody with a smartphone to scan it and add your contact to its address book.
EnablePublicVirtualCard=Enable the public virtual user card
PublicVirtualCardUrl=Public virtual user card

View File

@ -14,8 +14,8 @@ ACCOUNTING_EXPORT_ENDLINE=Dewiswch y math dychwelyd cerbyd
ACCOUNTING_EXPORT_PREFIX_SPEC=Nodwch y rhagddodiad ar gyfer enw'r ffeil
ThisService=Y gwasanaeth hwn
ThisProduct=Mae'r cynnyrch hwn
DefaultForService=Diofyn ar gyfer gwasanaeth
DefaultForProduct=Diofyn ar gyfer cynnyrch
DefaultForService=Default for services
DefaultForProduct=Default for products
ProductForThisThirdparty=Cynnyrch ar gyfer y trydydd parti hwn
ServiceForThisThirdparty=Gwasanaeth ar gyfer y trydydd parti hwn
CantSuggest=Methu awgrymu
@ -101,7 +101,8 @@ ShowAccountingAccount=Dangos cyfrif cyfrifeg
ShowAccountingJournal=Dangos dyddlyfr cyfrifo
ShowAccountingAccountInLedger=Dangos cyfrif cyfrifeg yn y cyfriflyfr
ShowAccountingAccountInJournals=Dangos cyfrif cyfrifeg mewn cyfnodolion
AccountAccountingSuggest=Awgrymu cyfrif cyfrifo
DataUsedToSuggestAccount=Data used to suggest account
AccountAccountingSuggest=Account suggested
MenuDefaultAccounts=Cyfrifon rhagosodedig
MenuBankAccounts=Cyfrifon banc
MenuVatAccounts=Cyfrifon TAW
@ -126,6 +127,7 @@ WriteBookKeeping=Cofnodi trafodion mewn cyfrifeg
Bookkeeping=Cyfriflyfr
BookkeepingSubAccount=Subledger
AccountBalance=Balans cyfrif
AccountBalanceSubAccount=Sub-accounts balance
ObjectsRef=Ffynhonnell gwrthrych cyf
CAHTF=Cyfanswm y gwerthwr pryniant cyn treth
TotalExpenseReport=Adroddiad cyfanswm gwariant
@ -189,6 +191,7 @@ ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Account (from the Chart Of Account) to be us
UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty)
ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Account (from the Chart Of Account) to be used as the default
UseAuxiliaryAccountOnSupplierDeposit=Store supplier account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty)
ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY=Accounting account by default to register customer retained warranty
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased within same country (used if not defined in the product sheet)
ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased from EEC to another EEC country (used if not defined in the product sheet)
@ -218,6 +221,7 @@ JournalLabel=Label cyfnodolyn
NumPiece=Rhif y darn
TransactionNumShort=Rhif. trafodiad
AccountingCategory=Custom group of accounts
AccountingCategories=Custom groups of accounts
GroupByAccountAccounting=Grwpio yn ôl cyfrif cyfriflyfr cyffredinol
GroupBySubAccountAccounting=Grwpio yn ôl cyfrif subledger
AccountingAccountGroupsDesc=Gallwch ddiffinio yma rai grwpiau o gyfrifon cyfrifeg. Cânt eu defnyddio ar gyfer adroddiadau cyfrifyddu personol.
@ -265,6 +269,7 @@ ShowSubtotalByGroup=Dangos is-gyfanswm yn ôl lefel
Pcgtype=Grŵp o gyfrifon
PcgtypeDesc=Defnyddir grŵp cyfrifon fel meini prawf 'hidlo' a 'grwpio' rhagnodedig ar gyfer rhai adroddiadau cyfrifyddu. Er enghraifft, defnyddir 'INCOME' neu 'GREUL' fel grwpiau ar gyfer cyfrifon cyfrifon cynhyrchion i adeiladu'r adroddiad treuliau/incwm.
AccountingCategoriesDesc=Custom group of accounts can be used to group accounting accounts into one name to ease filter use or building of custom reports.
Reconcilable=Cymodi
@ -294,6 +299,7 @@ DescValidateMovements=Gwaherddir unrhyw newid neu ddileu ysgrifen, llythrennau a
ValidateHistory=Rhwymo'n Awtomatig
AutomaticBindingDone=Cwblhawyd rhwymiadau awtomatig (%s) - Nid yw rhwymo awtomatig yn bosibl ar gyfer rhywfaint o gofnod (%s)
DoManualBindingForFailedRecord=You have to do a manual link for the %s row(s) not linked automatically.
ErrorAccountancyCodeIsAlreadyUse=Error, you cannot remove or disable this account of chart of account because it is used
MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s & Credit = %s
@ -337,11 +343,13 @@ ACCOUNTING_DISABLE_BINDING_ON_SALES=Analluogi rhwymo a throsglwyddo cyfrifyddiae
ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Analluogi rhwymo a throsglwyddo cyfrifyddiaeth ar bryniannau (ni fydd anfonebau gwerthwr yn cael eu hystyried wrth gyfrifo)
ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Analluogi rhwymo a throsglwyddo cyfrifon ar adroddiadau treuliau (ni fydd adroddiadau gwariant yn cael eu hystyried wrth gyfrifo)
ACCOUNTING_ENABLE_LETTERING=Enable the lettering function in the accounting
ACCOUNTING_ENABLE_AUTOLETTERING=Enable the automatic lettering when transferring to accounting
## Export
NotExportLettering=Do not export the lettering when generating the file
NotifiedExportDate=Baner llinellau wedi'u hallforio fel Allforiwyd <span class="warning"> (i addasu llinell, bydd angen i chi ddileu'r trafodiad cyfan a'i ail-drosglwyddo i gyfrifeg) </span>
NotifiedValidationDate=Validate and Lock the exported entries <span class="warning">(same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible)</span>
NotifiedExportFull=Export documents ?
DateValidationAndLock=Dyddiad dilysu a chlo
ConfirmExportFile=Cadarnhad o gynhyrchu'r ffeil allforio cyfrifo ?
ExportDraftJournal=Allforio cyfnodolyn drafft
@ -398,7 +406,7 @@ SaleLocal=Gwerthiant lleol
SaleExport=Gwerthu allforio
SaleEEC=Gwerthu yn EEC
SaleEECWithVAT=Gwerthiant mewn EEC gyda TAW nid nwl, felly mae'n debyg NID yw hwn yn werthiant mewngymunedol a'r cyfrif a awgrymir yw'r cyfrif cynnyrch safonol.
SaleEECWithoutVATNumber=Gwerthu mewn EEC heb TAW ond nid yw ID TAW trydydd parti wedi'i ddiffinio. Rydym wrth gefn ar y cyfrif cynnyrch ar gyfer gwerthiannau safonol. Gallwch drwsio ID TAW trydydd parti neu gyfrif y cynnyrch os oes angen.
SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fall back on the account for standard sales. You can fix the VAT ID of the thirdparty, or change the product account suggested for binding if needed.
ForbiddenTransactionAlreadyExported=Wedi'i wahardd: Mae'r trafodiad wedi'i ddilysu a/neu ei allforio.
ForbiddenTransactionAlreadyValidated=Wedi'i wahardd: Mae'r trafodiad wedi'i ddilysu.
## Dictionary
@ -442,6 +450,7 @@ AccountancyErrorMismatchLetterCode=Mismatch in reconcile code
AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0
AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s
ErrorAccountNumberAlreadyExists=The accounting number %s already exists
ErrorArchiveAddFile=Can't put "%s" file in archive
## Import
ImportAccountingEntries=Cofnodion cyfrifeg
@ -468,5 +477,7 @@ FECFormatMulticurrencyCode=Cod aml-arian (Dyfeisio)
DateExport=Dyddiad allforio
WarningReportNotReliable=Rhybudd, nid yw'r adroddiad hwn yn seiliedig ar y Cyfriflyfr, felly nid yw'n cynnwys trafodiad a addaswyd â llaw yn y Cyfriflyfr. Os yw eich cyfnodolyn yn gyfredol, mae'r olwg cadw cyfrifon yn fwy cywir.
ExpenseReportJournal=Cyfnodolyn Adroddiad Treuliau
DocsAlreadyExportedAreExcluded=Docs already exported are excluded
ClickToHideAlreadyExportedLines=Click to hide already exported lines
NAccounts=%s cyfrifon

View File

@ -226,6 +226,7 @@ NoUserGroupDefined=Dim grŵp defnyddwyr wedi'i ddiffinio
Password=Cyfrinair
PasswordRetype=Repeat your password
NoteSomeFeaturesAreDisabled=Sylwch fod llawer o nodweddion/modiwlau wedi'u hanalluogi yn yr arddangosiad hwn.
YourUserFile=Your user file
Name=Enw
NameSlashCompany=Enw / Cwmni
Person=Person
@ -897,6 +898,9 @@ MassFilesArea=Ardal ar gyfer ffeiliau a adeiladwyd gan gamau gweithredu torfol
ShowTempMassFilesArea=Dangos arwynebedd y ffeiliau a adeiladwyd gan weithredoedd torfol
ConfirmMassDeletion=Cadarnhad Swmp Dileu
ConfirmMassDeletionQuestion=A ydych yn siŵr eich bod am ddileu'r cofnod(au) %s a ddewiswyd?
ConfirmMassClone=Bulk clone confirmation
ConfirmMassCloneQuestion=Select project to clone to
ConfirmMassCloneToOneProject=Clone to project %s
RelatedObjects=Gwrthrychau Cysylltiedig
ClassifyBilled=Dosbarthu wedi'i bilio
ClassifyUnbilled=Dosbarthu heb ei filio
@ -912,8 +916,8 @@ ExportFilteredList=Allforio rhestr wedi'i hidlo
ExportList=Rhestr allforio
ExportOptions=Opsiynau Allforio
IncludeDocsAlreadyExported=Cynnwys dogfennau sydd eisoes wedi'u hallforio
ExportOfPiecesAlreadyExportedIsEnable=Allforio darnau a allforiwyd eisoes yn galluogi
ExportOfPiecesAlreadyExportedIsDisable=Mae allforio darnau sydd eisoes wedi'u hallforio yn analluog
ExportOfPiecesAlreadyExportedIsEnable=Documents already exported are visible and will be exported
ExportOfPiecesAlreadyExportedIsDisable=Documents already exported are hidden and won't be exported
AllExportedMovementsWereRecordedAsExported=Cofnodwyd bod yr holl symudiadau a allforiwyd wedi'u hallforio
NotAllExportedMovementsCouldBeRecordedAsExported=Ni ellid cofnodi pob symudiad a allforiwyd fel un wedi'i allforio
Miscellaneous=Amrywiol
@ -1128,6 +1132,7 @@ DeleteFileText=Ydych chi wir eisiau dileu'r ffeil hon?
ShowOtherLanguages=Dangos ieithoedd eraill
SwitchInEditModeToAddTranslation=Newidiwch y modd golygu i ychwanegu cyfieithiadau ar gyfer yr iaith hon
NotUsedForThisCustomer=Heb ei ddefnyddio ar gyfer y cwsmer hwn
NotUsedForThisVendor=Not used for this vendor
AmountMustBePositive=Rhaid i'r swm fod yn bositif
ByStatus=Yn ôl statws
InformationMessage=Gwybodaeth
@ -1148,14 +1153,14 @@ EventReminder=Nodyn Atgoffa am Ddigwyddiad
UpdateForAllLines=Diweddariad ar gyfer pob llinell
OnHold=Ar stop
Civility=Gwareiddiad
AffectTag=Assign Tag
AffectUser=Assign User
SetSupervisor=Set Supervisor
AffectTag=Assign a Tag
AffectUser=Assign a User
SetSupervisor=Set the supervisor
CreateExternalUser=Creu defnyddiwr allanol
ConfirmAffectTag=Bulk Tag Assignement
ConfirmAffectUser=Bulk User Assignement
ProjectRole=Role assigned on each project
TasksRole=Role assigned on each task of each project
ProjectRole=Role assigned on each project/opportunity
TasksRole=Role assigned on each task (if used)
ConfirmSetSupervisor=Bulk Supervisor Set
ConfirmUpdatePrice=Choose a increase/decrease price rate
ConfirmAffectTagQuestion=Are you sure you want to assign tags to the %s selected record(s)?
@ -1210,3 +1215,10 @@ CreatedByPublicPortal=Created from Public portal
UserAgent=User Agent
InternalUser=Internal user
ExternalUser=External user
NoSpecificContactAddress=No specific contact or address
NoSpecificContactAddressBis=This tab is dedicated to force specific contacts or addresses for the current object. Use it only if you want to define one or several specific contacts or addresses for the object when the information on the thirdparty is not enough or not accurate.
HideOnVCard=Hide %s
AddToContacts=Add address to my contacts
LastAccess=Last access
UploadAnImageToSeeAPhotoHere=Upload an image from the tab %s to see a photo here
LastPasswordChangeDate=Last password change date

View File

@ -41,7 +41,8 @@ STRIPE_LIVE_WEBHOOK_KEY=Webhook allwedd byw
ONLINE_PAYMENT_WAREHOUSE=Stoc i'w ddefnyddio ar gyfer gostyngiad stoc pan wneir taliad ar-lein <br> (TODO Pan fydd opsiwn i leihau stoc yn cael ei wneud ar weithred ar anfoneb a'r taliad ar-lein yn cynhyrchu'r anfoneb ei hun ?)
StripeLiveEnabled=Stripe live wedi'i alluogi (modd prawf / blwch tywod fel arall)
StripeImportPayment=Mewnforio taliadau Stripe
ExampleOfTestCreditCard=Enghraifft o gerdyn credyd ar gyfer prawf: %s => dilys, %s => gwall CVC, %s => wedi dod i ben, %s => tâl yn methu
ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails
ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s
StripeGateways=Pyrth streipen
OAUTH_STRIPE_TEST_ID=ID Cleient Stripe Connect (ca_...)
OAUTH_STRIPE_LIVE_ID=ID Cleient Stripe Connect (ca_...)
@ -61,6 +62,7 @@ DeleteACard=Dileu Cerdyn
ConfirmDeleteCard=Ydych chi'n siŵr eich bod am ddileu'r cerdyn Credyd neu Ddebyd hwn?
CreateCustomerOnStripe=Creu cwsmer ar Stripe
CreateCardOnStripe=Creu cerdyn ar Stripe
CreateBANOnStripe=Create bank on Stripe
ShowInStripe=Dangos yn Stripe
StripeUserAccountForActions=Cyfrif defnyddiwr i'w ddefnyddio ar gyfer hysbysiad e-bost o rai digwyddiadau Stripe (taliadau Stripe)
StripePayoutList=Rhestr o daliadau Stripe
@ -69,3 +71,8 @@ ToOfferALinkForLiveWebhook=Dolen i'r gosodiad Stripe WebHook i ffonio'r IPN (mod
PaymentWillBeRecordedForNextPeriod=Bydd taliad yn cael ei gofnodi ar gyfer y cyfnod nesaf.
ClickHereToTryAgain= <a href="%s"> Cliciwch yma i geisio eto... </a>
CreationOfPaymentModeMustBeDoneFromStripeInterface=Oherwydd rheolau Dilysu Cwsmeriaid Cryf, rhaid creu cerdyn o swyddfa gefn Stripe. Gallwch glicio yma i droi cofnod cwsmer Stripe ymlaen: %s
STRIPE_CARD_PRESENT=Card Present for Stripe Terminals
TERMINAL_LOCATION=Location (address) for Stripe Terminals
RequestDirectDebitWithStripe=Request Direct Debit with Stripe
STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe

View File

@ -66,7 +66,8 @@ LinkedToDolibarrUser=Dolen i'r defnyddiwr
LinkedToDolibarrThirdParty=Dolen i drydydd parti
CreateDolibarrLogin=Creu defnyddiwr
CreateDolibarrThirdParty=Creu trydydd parti
LoginAccountDisableInDolibarr=Cyfrif wedi'i analluogi yn Dolibarr.
LoginAccountDisableInDolibarr=Account disabled in Dolibarr
PASSWORDInDolibarr=Password modified in Dolibarr
UsePersonalValue=Defnyddiwch werth personol
ExportDataset_user_1=Defnyddwyr a'u priodweddau
DomainUser=Defnyddiwr parth %s
@ -129,3 +130,6 @@ IPLastLogin=IP last login
IPPreviousLogin=IP previous login
ShowAllPerms=Show all permission rows
HideAllPerms=Hide all permission rows
UserPublicPageDesc=You can enable a virtual card for this user. An url with the user profile and a barcode will be available to allow anybody with a smartphone to scan it and add your contact to its address book.
EnablePublicVirtualCard=Enable the public virtual user card
PublicVirtualCardUrl=Public virtual user card

View File

@ -14,8 +14,8 @@ ACCOUNTING_EXPORT_ENDLINE=Vælg linjeskift type
ACCOUNTING_EXPORT_PREFIX_SPEC=Angiv præfiks for filnavnet
ThisService=Denne ydelse
ThisProduct=Dette produkt
DefaultForService=Forvalg ydelse
DefaultForProduct=Forvalg produkt
DefaultForService=Standard for tjenester
DefaultForProduct=Standard for produkter
ProductForThisThirdparty=Produkt til denne tredjepart
ServiceForThisThirdparty=Service for denne tredjepart
CantSuggest=Kan ikke foreslå
@ -101,7 +101,8 @@ ShowAccountingAccount=Vis regnskabs konto
ShowAccountingJournal=Vis kontokladde
ShowAccountingAccountInLedger=Vis regnskabskonto i hovedbog
ShowAccountingAccountInJournals=Vis regnskabskonto i tidsskrifter
AccountAccountingSuggest=Forelslået regnskabskonto
DataUsedToSuggestAccount=Data brugt til at foreslå konto
AccountAccountingSuggest=Konto foreslået
MenuDefaultAccounts=Standardkonti
MenuBankAccounts=Bankkonti
MenuVatAccounts=Momskonti
@ -126,6 +127,7 @@ WriteBookKeeping=Registrer transaktioner i regnskabet
Bookkeeping=Hovedbog
BookkeepingSubAccount=Underkonti
AccountBalance=Kontobalance
AccountBalanceSubAccount=Underkonti balance
ObjectsRef=Objektreference
CAHTF=Samlet købeleverandør før skat
TotalExpenseReport=Rapport for samlede udgifter
@ -189,6 +191,7 @@ ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Konto (fra kontoplanen) skal bruges som stan
UseAuxiliaryAccountOnCustomerDeposit=Gem kundekonto som individuel konto i hovedbog for linjer med forudbetalinger (hvis den er deaktiveret, forbliver individuel konto for forudbetalingslinjer tomme)
ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Konto (fra kontoplanen), der skal bruges som standard
UseAuxiliaryAccountOnSupplierDeposit=Gem leverandørkonto som individuel konto i hovedbog for linjer med forudbetalinger (hvis den er deaktiveret, vil individuel konto for forudbetalingslinjer forblive tom)
ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY=Regnskabskonto som standard for at registrere kundebeholdt garanti
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Konto (fra kontoplanen), der skal bruges som standardkonto for de produkter, der er købt i samme land (bruges, hvis det ikke er defineret i produktarket)
ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Konto (fra kontoplanen), der skal bruges som standardkonto for produkter købt fra EF til et andet EF-land (bruges, hvis det ikke er defineret i produktarket)
@ -218,6 +221,7 @@ JournalLabel=Journalmærke
NumPiece=Partsnummer
TransactionNumShort=Transaktionsnr.
AccountingCategory=Brugerdefineret gruppe af konti
AccountingCategories=Brugerdefinerede grupper af konti
GroupByAccountAccounting=Gruppér efter hovedkontokonto
GroupBySubAccountAccounting=Gruppér efter underkonti
AccountingAccountGroupsDesc=Du kan definere her nogle grupper af regnskabskonto. De vil blive brugt til personlige regnskabsrapporter.
@ -265,6 +269,7 @@ ShowSubtotalByGroup=Vis subtotal efter niveau
Pcgtype=Kontoens gruppe
PcgtypeDesc=Kontogruppe bruges som foruddefinerede 'filter' og 'gruppering' kriterier for nogle regnskabsrapporter. For eksempel bruges 'INKOMST' eller 'UDGIFT' som grupper til regnskabsmæssige regnskaber for produkter til at oprette omkostnings- / indkomstrapporten.
AccountingCategoriesDesc=Brugerdefineret gruppe af konti kan bruges til at gruppere regnskabskonti i ét navn for at lette filterbrug eller opbygning af tilpassede rapporter.
Reconcilable=Afstemning
@ -294,6 +299,7 @@ DescValidateMovements=Enhver ændring eller sletning af skrivning, bogstaver og
ValidateHistory=Automatisk Bogføring
AutomaticBindingDone=Automatiske bindinger udført (%s) - Automatisk binding er ikke mulig for nogle poster (%s)
DoManualBindingForFailedRecord=Du skal lave et manuelt link for %s række(r), der ikke linkes automatisk.
ErrorAccountancyCodeIsAlreadyUse=Fejl, du kan ikke fjerne eller deaktivere denne kontoplan, fordi den er brugt
MvtNotCorrectlyBalanced=Bevægelse ikke korrekt afbalanceret. Debet = %s & Kredit = %s
@ -337,11 +343,13 @@ ACCOUNTING_DISABLE_BINDING_ON_SALES=Deaktiver binding og overførsel i regnskab
ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Deaktiver binding og overførsel i regnskab ved køb (leverandørfakturaer tages ikke med i regnskabet)
ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Deaktiver binding og overførsel i regnskab på udgiftsrapporter (udgiftsrapporter tages ikke med i regnskabet)
ACCOUNTING_ENABLE_LETTERING=Aktiver bogstavfunktionen i regnskabet
ACCOUNTING_ENABLE_AUTOLETTERING=Aktiver den automatiske bogstaver ved overførsel til regnskab
## Export
NotExportLettering=Eksporter ikke bogstaverne, når du genererer filen
NotifiedExportDate=Flag eksporterede linjer som eksporteret <span class="warning"> (for at ændre en linje skal du slette hele transaktionen og overføre den til regnskab igen) </span>
NotifiedValidationDate=Valider og lås de eksporterede indgange <span class="warning"> (samme effekt som "%s"-funktionen, ændring og sletning af linjerne vil DEFINITIVT ikke være mulig) </span>
NotifiedExportFull=Eksportere dokumenter?
DateValidationAndLock=Datovalidering og lås
ConfirmExportFile=Bekræftelse af genereringen af den regnskabsmæssige eksportfil?
ExportDraftJournal=Eksporter udkast til kladde
@ -398,7 +406,7 @@ SaleLocal=Lokalt salg
SaleExport=Eksport salg
SaleEEC=Salg i EU
SaleEECWithVAT=Salg i EU med en moms, der ikke er null, så vi antager, at dette IKKE er et intrakommunalt salg, og den foreslåede konto er standardproduktskontoen.
SaleEECWithoutVATNumber=Du kan fastsætte moms nummer for tredjepart eller produktkonto om nødvendigt.
SaleEECWithoutVATNumber=Salg i EEC uden moms, men tredjemands moms-id er ikke defineret. Vi falder tilbage på kontoen for standardsalg. Du kan rette tredjepartens moms-id eller ændre den produktkonto, der er foreslået til binding, hvis det er nødvendigt.
ForbiddenTransactionAlreadyExported=Forbudt: Transaktionen er blevet valideret og/eller eksporteret.
ForbiddenTransactionAlreadyValidated=Forbudt: Transaktionen er blevet valideret.
## Dictionary
@ -442,6 +450,7 @@ AccountancyErrorMismatchLetterCode=Uoverensstemmelse i afstemningskode
AccountancyErrorMismatchBalanceAmount=Saldoen (%s) er ikke lig med 0
AccountancyErrorLetteringBookkeeping=Der er opstået fejl vedrørende transaktionerne: %s
ErrorAccountNumberAlreadyExists=Kontonummeret %s findes allerede
ErrorArchiveAddFile=Kan ikke lægge "%s" fil i arkivet
## Import
ImportAccountingEntries=Regnskabsposter
@ -468,5 +477,7 @@ FECFormatMulticurrencyCode=MultiValuta-kode (Idevise)
DateExport=Eksport dato
WarningReportNotReliable=Advarsel, denne rapport er ikke baseret på Ledger, så indeholder ikke transaktion ændret manuelt i Ledger. Hvis din journalisering er opdateret, er bogføringsvisningen mere præcis.
ExpenseReportJournal=Udgifts Journal
DocsAlreadyExportedAreExcluded=Dokumenter, der allerede er eksporteret, er ekskluderet
ClickToHideAlreadyExportedLines=Klik for at skjule allerede eksporterede linjer
NAccounts=%s konti

View File

@ -645,6 +645,8 @@ Module2300Name=Planlagte job
Module2300Desc=Planlagt job styring (alias cron eller chrono tabel)
Module2400Name=Begivenheder/tidsplan
Module2400Desc=Spor begivenheder. Log automatiske begivenheder til sporingsformål eller optag manuelle begivenheder eller møder. Dette er hovedmodulet for god kunde- eller leverandør-relationsstyring.
Module2430Name=Bestillingskalendersystem
Module2430Desc=Giv en onlinekalender, så alle kan booke et møde, i henhold til foruddefinerede intervaller eller tilgængeligheder.
Module2500Name=DMS / ECM
Module2500Desc=Dokumentstyringssystem / Elektronisk indholdsstyring. Automatisk organisering af dine genererede eller gemte dokumenter. Del dem, når du har behov for det.
Module2600Name=API / webtjenester (SOAP-server)
@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind
Module2900Desc=GeoIP Maxmind konverteringsmuligheder
Module3200Name=Uforanderlige arkiver
Module3200Desc=Aktiver en uforanderlig log over forretningsbegivenheder. Begivenheder arkiveres i realtid. Loggen er en skrivebeskyttet tabel over kædede hændelser, der kan eksporteres. Dette modul er obligatorisk i nogle lande.
Module3300Name=Modulbygger
Module3200Desc=Aktiver en uforanderlig log over forretningsbegivenheder. Begivenheder arkiveres i realtid. Loggen er en skrivebeskyttet tabel over kædede hændelser, der kan eksporteres. Dette modul er obligatorisk i nogle lande.
Module3400Name=Sociale netværk
Module3400Desc=Aktiver sociale netværksfelter til tredjeparter og adresser (Skype, Twitter, Facebook, ...).
Module4000Name=Personaleadministration
@ -1270,6 +1274,7 @@ TriggerActiveAsModuleActive=Udløsere i denne fil er aktive, da modulet <b>%s</b
GeneratedPasswordDesc=Vælg den metode, der skal bruges til automatisk genererede adgangskoder.
DictionaryDesc=Indsæt alle referencedata. Du kan tilføje dine værdier til standarden.
ConstDesc=Denne side giver dig mulighed for at redigere (tilsidesætte) parametre, der ikke er tilgængelige på andre sider. Disse er for det meste reserverede parametre kun til udviklere/avanceret fejlfinding.
MiscellaneousOptions=Forskellige muligheder
MiscellaneousDesc=Alle andre sikkerhedsrelaterede parametre er defineret her.
LimitsSetup=Begrænsninger/Nøjagtigheds opsætning
LimitsDesc=Du kan definere grænser, nøjagtighed og optimeringer brugen af Dolibarr her
@ -1826,6 +1831,9 @@ AGENDA_USE_EVENT_TYPE=Brug begivenhedstyper (administreret i menuen Opsætning -
AGENDA_USE_EVENT_TYPE_DEFAULT=Indstil automatisk denne standardværdi for begivenhedstype i begivenhedsoprettelsesformularen
AGENDA_DEFAULT_FILTER_TYPE=Indstil automatisk denne type begivenhed i søgefilteret i dagsordensvisningen
AGENDA_DEFAULT_FILTER_STATUS=Indstil automatisk denne status for begivenheder i søgefilteret i dagsordensvisningen
AGENDA_EVENT_PAST_COLOR=Farve på tidligere begivenheder
AGENDA_EVENT_CURRENT_COLOR=Aktuel begivenhedsfarve
AGENDA_EVENT_FUTURE_COLOR=Fremtidig begivenhed farve
AGENDA_DEFAULT_VIEW=Hvilken visning vil du som standard åbne, når du vælger menu Tidsplan
AGENDA_REMINDER_BROWSER=Aktiver hændelsespåmindelse <b>på brugerens browser</b> (Når påmindelsesdatoen er nået, vises en pop op af browseren. Hver bruger kan deaktivere sådanne meddelelser fra sin browsermeddelelsesopsætning).
AGENDA_REMINDER_BROWSER_SOUND=Aktiver lydmeddelelse
@ -2129,6 +2137,7 @@ CodeLastResult=Seneste resultatkode
NbOfEmailsInInbox=Antal e-mails i kildekataloget
LoadThirdPartyFromName=Indlæs tredjepartssøgning på %s (kun indlæsning)
LoadThirdPartyFromNameOrCreate=Indlæs tredjepartssøgning på %s (opret, hvis den ikke findes)
LoadContactFromEmailOrCreate=Indlæs kontaktsøgning på %s (opret, hvis den ikke findes)
AttachJoinedDocumentsToObject=Gem vedhæftede filer i objektdokumenter, hvis der findes en ref af et objekt i e-mail emnet.
WithDolTrackingID=Besked fra en samtale initieret af en første e-mail sendt fra Dolibarr
WithoutDolTrackingID=Besked fra en samtale initieret af en første e-mail IKKE sendt fra Dolibarr
@ -2355,3 +2364,5 @@ AllowExternalDownload=Tillad ekstern download (uden login, ved hjælp af et delt
DeadlineDayVATSubmission=Deadline dag for momsindsendelse den næste måned
MaxNumberOfAttachementOnForms=Maks. antal sammenføjede filer i en formular
IfDefinedUseAValueBeetween=Hvis det er defineret, skal du bruge en værdi mellem %s og %s
Reload=Genindlæs
ConfirmReload=Bekræft modulgenindlæsning

View File

@ -24,6 +24,7 @@ BoxFicheInter=Latest interventions
BoxCurrentAccounts=Open accounts balance
BoxTitleMemberNextBirthdays=Fødselsdage i denne måned (medlemmer)
BoxTitleMembersByType=Medlemmer efter type og status
BoxTitleMembersByTags=Medlemmer efter tags og status
BoxTitleMembersSubscriptionsByYear=Medlemmer Abonnementer efter år
BoxTitleLastRssInfos=Latest %s news from %s
BoxTitleLastProducts=Produkter / tjenester: sidst %s ændret

View File

@ -312,8 +312,8 @@ CustomerRelativeDiscountShort=Relativ rabat
CustomerAbsoluteDiscountShort=Absolut rabat
CompanyHasRelativeDiscount=Denne kunde har en standardrabat på <b>%s%%</b>
CompanyHasNoRelativeDiscount=Denne kunde har som standard ingen rabat
HasRelativeDiscountFromSupplier=Du har en standardrabat på <b>%s%%</b> fra denne leverandør
HasNoRelativeDiscountFromSupplier=Ingen standard relativ rabat fra denne leverandør
HasRelativeDiscountFromSupplier=Du har en standardrabat på <b> %s%% </b> hos denne leverandør
HasNoRelativeDiscountFromSupplier=Ingen standard relativ rabat hos denne leverandør
CompanyHasAbsoluteDiscount=Denne kunde har tilgodehavender (kreditnotaer eller forudbetalinger) for <b>%s</b> %s
CompanyHasDownPaymentOrCommercialDiscount=Denne kunde har tilgængelige rabatter (kommercielle, forudbetalinger) for <b>%s</b> %s
CompanyHasCreditNote=Denne kunde har stadig kreditnotaer for <b>%s</b> %s
@ -499,4 +499,7 @@ OutOfEurope=Uden for Europa (EØF)
CurrentOutstandingBillLate=Aktuel udestående regninger i restance
BecarefullChangeThirdpartyBeforeAddProductToInvoice=Vær forsigtig, afhængigt af dine produkt prisindstillinger bør du ændre tredjepart, før du tilføjer produkt til POS.
EmailAlreadyExistsPleaseRewriteYourCompanyName=e-mail eksisterer allerede, skriv venligst dit firmanavn
TwoRecordsOfCompanyName=der findes mere end én registrering for denne virksomhed, kontakt os venligst for at fuldføre din partnerskabsanmodning"
TwoRecordsOfCompanyName=der findes mere end én registrering for denne virksomhed, kontakt os venligst for at fuldføre din partnerskabsanmodning
CompanySection=Virksomhedssektion
ShowSocialNetworks=Vis sociale netværk
HideSocialNetworks=Skjul sociale netværk

View File

@ -303,6 +303,7 @@ ErrorValueForTooLow=Værdien for <b> %s </b> er for lav
ErrorValueCantBeNull=Værdien for <b> %s </b> kan ikke være 0
ErrorDateOfMovementLowerThanDateOfFileTransmission=Datoen for banktransaktionen må ikke være lavere end datoen for filoverførslen
ErrorTooMuchFileInForm=For mange filer i form, det maksimale antal er %s fil(er)
ErrorSessionInvalidatedAfterPasswordChange=Sessionen blev ugyldiggjort efter en ændring af adgangskode, status eller gyldighedsdatoer. Log venligst på igen.
# Warnings
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Din PHP-parameter upload_max_filesize (%s) er højere end PHP-parameter post_max_size (%s). Dette er ikke en ensartet opsætning.
@ -325,6 +326,7 @@ WarningPaymentDateLowerThanInvoiceDate=Betalingsdato (%s) er tidligere end faktu
WarningTooManyDataPleaseUseMoreFilters=For mange data (mere end %s linjer). Brug venligst flere filtre eller indstil konstanten %s til en højere grænse.
WarningSomeLinesWithNullHourlyRate=Nogle tidspunkter blev registreret af nogle brugere, mens deres timepris ikke var defineret. Der blev brugt en værdi på 0 %s pr. time, men dette kan resultere i forkert værdiansættelse af brugt tid.
WarningYourLoginWasModifiedPleaseLogin=Dit login blev ændret. Af sikkerhedsmæssige årsager skal du logge ind med dit nye login før næste handling.
WarningYourPasswordWasModifiedPleaseLogin=Din adgangskode blev ændret. Af sikkerhedsmæssige årsager skal du logge ind nu med din nye adgangskode.
WarningAnEntryAlreadyExistForTransKey=Der findes allerede en post for oversættelsesnøglen for dette sprog
WarningNumberOfRecipientIsRestrictedInMassAction=Advarsel, antallet af forskellige modtagere er begrænset til <b> %s</b>, når du bruger massehandlingerne på lister
WarningDateOfLineMustBeInExpenseReportRange=Advarsel, datoen for linjen ligger ikke inden for udgiftsrapporten

View File

@ -172,3 +172,5 @@ ErrorSeveralCompaniesWithEmailContactUs=Flere virksomheder med denne e -mail er
ErrorSeveralCompaniesWithNameContactUs=Flere virksomheder med dette navn er fundet, så vi kan ikke automatisk validere din registrering. Kontakt os venligst på %s for en manuel validering
NoPublicActionsAllowedForThisEvent=Ingen offentlige handlinger er åbne for offentligheden for denne begivenhed
MaxNbOfAttendees=Max antal deltagere
DateStartEvent=Begivenhedens startdato
DateEndEvent=Begivenheds slutdato

View File

@ -226,6 +226,7 @@ NoUserGroupDefined=Ingen brugergruppe defineret
Password=Adgangskode
PasswordRetype=Gentag din adgangskode
NoteSomeFeaturesAreDisabled=Bemærk, at mange funktioner/moduler er deaktiveret i denne demonstration.
YourUserFile=Din brugerfil
Name=Navn
NameSlashCompany=Navn/virksomhed
Person=Person
@ -897,6 +898,9 @@ MassFilesArea=Område for filer opbygget af massehandlinger
ShowTempMassFilesArea=Vis område af filer bygget af massehandlinger
ConfirmMassDeletion=Bekræftelse på massesletning
ConfirmMassDeletionQuestion=Er du sikker på, at du vil slette den/de valgt/valgte %s post(er)?
ConfirmMassClone=Bulk klon bekræftelse
ConfirmMassCloneQuestion=Vælg det projekt, der skal klones til
ConfirmMassCloneToOneProject=Klon for at projektere %s
RelatedObjects=Relaterede objekter
ClassifyBilled=Klassificere faktureret
ClassifyUnbilled=Klassificer Ikke faktureret
@ -912,8 +916,8 @@ ExportFilteredList=Eksporter filtreret liste
ExportList=Eksportliste
ExportOptions=Eksport indstillinger
IncludeDocsAlreadyExported=Inkluder dokumenter, der allerede er eksporteret
ExportOfPiecesAlreadyExportedIsEnable=Eksport af allerede eksporterede stykker er aktiveret
ExportOfPiecesAlreadyExportedIsDisable=Eksport af allerede eksporterede stykker er deaktiveret
ExportOfPiecesAlreadyExportedIsEnable=Dokumenter, der allerede er eksporteret, er synlige og vil blive eksporteret
ExportOfPiecesAlreadyExportedIsDisable=Dokumenter, der allerede er eksporteret, er skjulte og vil ikke blive eksporteret
AllExportedMovementsWereRecordedAsExported=Alle eksporterede bevægelser blev registreret som eksporteret
NotAllExportedMovementsCouldBeRecordedAsExported=Ikke alle eksporterede bevægelser kunne registreres som eksporteret
Miscellaneous=Diverse
@ -1128,6 +1132,7 @@ DeleteFileText=Vil du virkelig slette denne fil?
ShowOtherLanguages=Vis andre sprog
SwitchInEditModeToAddTranslation=Skift i redigeringsfunktion for at tilføje oversættelser til dette sprog
NotUsedForThisCustomer=Ikke brugt til denne kunde
NotUsedForThisVendor=Ikke brugt til denne leverandør
AmountMustBePositive=Beløbet skal være positivt
ByStatus=Efter status
InformationMessage=Information
@ -1148,14 +1153,14 @@ EventReminder=Påmindelse om begivenhed
UpdateForAllLines=Opdatering til alle linjer
OnHold=Afventer
Civility=Høflighed
AffectTag=Tildel tag
AffectUser=Tildel bruger
SetSupervisor=Sæt Supervisor
AffectTag=Tildel et tag
AffectUser=Tildel en bruger
SetSupervisor=Indstil vejlederen
CreateExternalUser=Opret ekstern bruger
ConfirmAffectTag=Bulk Tag Tildeling
ConfirmAffectUser=Massebrugertildeling
ProjectRole=Rolle tildelt på hvert projekt
TasksRole=Rolle tildelt på hver opgave i hvert projekt
ProjectRole=Rolle tildelt på hvert projekt/mulighed
TasksRole=Rolle tildelt hver opgave (hvis brugt)
ConfirmSetSupervisor=Bulk supervisor sæt
ConfirmUpdatePrice=Vælg en stigning/reduktionspris
ConfirmAffectTagQuestion=Er du sikker på, at du vil tildele tags til de(n) valgte post(er) %s?
@ -1210,3 +1215,10 @@ CreatedByPublicPortal=Oprettet fra offentlig portal
UserAgent=Brugeragent
InternalUser=Intern bruger
ExternalUser=Ekstern bruger
NoSpecificContactAddress=Ingen specifik kontakt eller adresse
NoSpecificContactAddressBis=Denne fane er dedikeret til at tvinge specifikke kontakter eller adresser til det aktuelle objekt. Brug det kun, hvis du ønsker at definere en eller flere specifikke kontakter eller adresser for objektet, når oplysningerne om tredjeparten ikke er tilstrækkelige eller ikke nøjagtige.
HideOnVCard=Skjul %s
AddToContacts=Tilføj adresse til mine kontakter
LastAccess=Sidste adgang
UploadAnImageToSeeAPhotoHere=Upload et billede fra fanen %s for at se et billede her
LastPasswordChangeDate=Dato for sidste ændring af adgangskode

View File

@ -102,6 +102,7 @@ NbOperatorsRequired=Antal krævede operatører
THMOperatorEstimated=Anslået operatør THM
THMMachineEstimated=Anslået maskine THM
WorkstationType=Arbejdsstationstype
DefaultWorkstation=Standard arbejdsstation
Human=Person
Machine=Maskine
HumanMachine=Person / maskine

View File

@ -96,6 +96,10 @@ OrdersStatisticsSuppliers=Indkøbsordrestatistik
NumberOfOrdersByMonth=Antallet af ordrer efter måned
AmountOfOrdersByMonthHT=Mængden af ordrer efter måned (ekskl. Moms)
ListOfOrders=Liste af ordrer
ListOrderLigne=Ordrerækker
productobuy=Kun produkter til køb
productonly=Kun produkter
disablelinefree=Ingen linjer fri
CloseOrder=Luk for
ConfirmCloseOrder=Er du sikker på, at du vil indstille denne ordre til levering? Når en ordre er leveret, kan den indstilles til fakturering.
ConfirmDeleteOrder=Er du sikker på, at du vil slette denne ordre?
@ -131,6 +135,7 @@ SupplierOrderClassifiedBilled=Indkøbsordre %s er faktureret
OtherOrders=Andre ordrer
SupplierOrderValidatedAndApproved=Leverandørordre er valideret og godkendt: %s
SupplierOrderValidated=Leverandørordre er valideret: %s
OrderShowDetail=Vis ordredetaljer
##### Types de contacts #####
TypeContact_commande_internal_SALESREPFOLL=Repræsentative opfølgning salgsordre
TypeContact_commande_internal_SHIPPING=Repræsentant opfølgning shipping
@ -199,3 +204,5 @@ StatusSupplierOrderApproved=Godkendt
StatusSupplierOrderRefused=Afvist
StatusSupplierOrderReceivedPartially=Delvist modtaget
StatusSupplierOrderReceivedAll=Alle varer modtaget
NeedAtLeastOneInvoice = Der skal være mindst én faktura
LineAlreadyDispatched = Ordrelinjen er allerede modtaget.

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