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

This commit is contained in:
Florian HENRY 2014-05-13 11:40:39 +02:00
commit b6f091926f
226 changed files with 6943 additions and 7643 deletions

View File

@ -88,6 +88,7 @@ For developers:
- New: A module can add its own ECM view. - New: A module can add its own ECM view.
- New: A module can disable a standard ECM view. - New: A module can disable a standard ECM view.
- New: Add multilang support into product webservice. - New: Add multilang support into product webservice.
- New: Add hooks on project card page.
WARNING: Following change may create regression for some external modules, but was necessary to make WARNING: Following change may create regression for some external modules, but was necessary to make
Dolibarr better: Dolibarr better:
@ -116,12 +117,14 @@ Fix: Pb of records not correctly cleaned when module marge is
Fix: [ bug #1341 ] Lastname not added by file or direct input in mass e-mailing. Fix: [ bug #1341 ] Lastname not added by file or direct input in mass e-mailing.
Fix: [ bug #1357 ] Invoice creator state not printed in generated invoice documents. Fix: [ bug #1357 ] Invoice creator state not printed in generated invoice documents.
Fix: Suppliers invoice mask fails using {tttt} in numbering. Fix: Suppliers invoice mask fails using {tttt} in numbering.
Fix: pdf template name for typhon was not correctly et when enabling module. Fix: [ bug #1350 ] pdf template name for typhon was not correctly set when enabling module.
Fix: Navigation on notes for shipments was not working. Fix: Navigation on notes for shipments was not working.
Fix: [ bug #1353 ] Email notifications, wrong URL. Fix: [ bug #1353 ] Email notifications, wrong URL.
Fix: [ bug #1362 ] Note is not saved. Fix: [ bug #1362 ] Note is not saved.
Fix: tr/td balance. Fix: tr/td balance.
Fix: [ bug #1360 ] note indicator for member tab. Fix: [ bug #1360 ] note indicator for member tab.
Fix: Nb of notes and doc not visible onto tasks.
Fix: [ bug #1372 ] Margin calculation does not work in proposals
***** ChangeLog for 3.5.2 compared to 3.5.1 ***** ***** ChangeLog for 3.5.2 compared to 3.5.1 *****
Fix: Can't add user for a task. Fix: Can't add user for a task.

View File

@ -105,8 +105,8 @@ http://bugs.debian.org/package
##### Testing a package into unstable env ##### Testing a package into unstable env
Check you have a mysql server available from another interface than localhost Check you have a mysql server available from another interface than localhost
Uncomment line if required and restart mysql Comment line in /etc/mysql/my.cnf if required and restart mysql
bind-address = 127.0.0.1 #bind-address = 127.0.0.1
Create a chroot called "unstable-amd64-sbuild" Create a chroot called "unstable-amd64-sbuild"
> sudo sbuild-createchroot --keyring= unstable /srv/chroot/unstable http://ftp.uk.debian.org/debian > sudo sbuild-createchroot --keyring= unstable /srv/chroot/unstable http://ftp.uk.debian.org/debian
@ -120,14 +120,16 @@ Puis pour se connecter et préparer l'environnement
> apt-get install links mysql-client > apt-get install links mysql-client
Pour tester un package Pour tester un package
> On host server, stop any server on port 80 and 3306 (same port will be used by chroot env)
> cp ../build-area/* /srv/chroot/unstable/tmp > cp ../build-area/* /srv/chroot/unstable/tmp
> sudo schroot -c name_of_chroot > sudo schroot -c name_of_chroot
> cd /tmp > cd /tmp
> lintian --pedantic -E -I dolibarr*.deb > lintian --pedantic -E -I dolibarr*.deb
> lintian --pedantic -E -I dolibarr*.dsc > lintian --pedantic -E -I dolibarr*.dsc
> dpkg -i dolibarr*.deb > dpkg -i dolibarr*.deb ou pour avoir des traces: dpkg -D77777 -i dolibarr*.deb
> apt-get install -f > apt-get install -f
Puis http://localhost/dolibarr/ (cela peut etre appeler depuis le hote).
@ -227,9 +229,13 @@ from origin/upstream and origin/pristine.
* If new upstream is available onto sourceforge, launch: * If new upstream is available onto sourceforge, launch:
> debian/get-orig-source.sh > debian/get-orig-source.sh
* Edit tgz file to remove ckeditor and phpexcel and renama file into dolibarr-x.y.z+dsfgw.tgz
* Staying into git root directory, run * Staying into git root directory, run
> git-import-orig -vv ../dolibarr-3.3.4.tgz > git-import-orig -vv ../dolibarr-x.y.z+dsfgw.tgz
and enter version when requested. and enter version when requested with format
x.y.z+dsfgw
(x.y.z = version, w start from 1 and is increased for each new import)
Note: If there was errors solved manually after get-orig-sources.sh, you may need to make a git commit Note: If there was errors solved manually after get-orig-sources.sh, you may need to make a git commit

View File

@ -117,24 +117,25 @@ class modMyModule extends DolibarrModules
// 'objecttype:+tabname2:Title2:mylangfile@mymodule:$user->rights->othermodule->read:/mymodule/mynewtab2.php?id=__ID__', // To add another new tab identified by code tabname2 // 'objecttype:+tabname2:Title2:mylangfile@mymodule:$user->rights->othermodule->read:/mymodule/mynewtab2.php?id=__ID__', // To add another new tab identified by code tabname2
// 'objecttype:-tabname:NU:conditiontoremove'); // To remove an existing tab identified by code tabname // 'objecttype:-tabname:NU:conditiontoremove'); // To remove an existing tab identified by code tabname
// where objecttype can be // where objecttype can be
// 'thirdparty' to add a tab in third party view // 'categories_x' to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member)
// 'intervention' to add a tab in intervention view
// 'order_supplier' to add a tab in supplier order view
// 'invoice_supplier' to add a tab in supplier invoice view
// 'invoice' to add a tab in customer invoice view
// 'order' to add a tab in customer order view
// 'product' to add a tab in product view
// 'stock' to add a tab in stock view
// 'propal' to add a tab in propal view
// 'member' to add a tab in fundation member view
// 'contract' to add a tab in contract view
// 'user' to add a tab in user view
// 'group' to add a tab in group view
// 'contact' to add a tab in contact view // 'contact' to add a tab in contact view
// 'contract' to add a tab in contract view
// 'group' to add a tab in group view
// 'intervention' to add a tab in intervention view
// 'invoice' to add a tab in customer invoice view
// 'invoice_supplier' to add a tab in supplier invoice view
// 'member' to add a tab in fundation member view
// 'opensurveypoll' to add a tab in opensurvey poll view
// 'order' to add a tab in customer order view
// 'order_supplier' to add a tab in supplier order view
// 'payment' to add a tab in payment view // 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view // 'payment_supplier' to add a tab in supplier payment view
// 'categories_x' to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member) // 'product' to add a tab in product view
// 'opensurveypoll' to add a tab in opensurvey poll view // 'propal' to add a tab in propal view
// 'project' to add a tab in project view
// 'stock' to add a tab in stock view
// 'thirdparty' to add a tab in third party view
// 'user' to add a tab in user view
$this->tabs = array(); $this->tabs = array();
// Dictionaries // Dictionaries

View File

@ -473,8 +473,8 @@ if ($user->rights->adherent->cotisation->creer && $action == 'cotisation' && ! $
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $customer->default_lang; $newlang = $customer->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {

View File

@ -25,6 +25,15 @@
* \brief Include to show main page for cashdesk module * \brief Include to show main page for cashdesk module
*/ */
/*
* View
*/
$form=new Form($db);
// Get list of articles (in warehouse '$conf_fkentrepot' if defined and stock module enabled) // Get list of articles (in warehouse '$conf_fkentrepot' if defined and stock module enabled)
if ( GETPOST('filtre') ) { if ( GETPOST('filtre') ) {

View File

@ -22,6 +22,8 @@ $langs->load("main");
$langs->load("bills"); $langs->load("bills");
$langs->load("cashdesk"); $langs->load("cashdesk");
// Object $form must de defined
?> ?>
<script type="text/javascript" src="javascript/facturation1.js"></script> <script type="text/javascript" src="javascript/facturation1.js"></script>

View File

@ -18,6 +18,8 @@
$langs->load("main"); $langs->load("main");
// Object $form must de defined
?> ?>
<fieldset class="cadre_facturation"><legend class="titre1"><?php echo $langs->trans("Summary"); ?></legend> <fieldset class="cadre_facturation"><legend class="titre1"><?php echo $langs->trans("Summary"); ?></legend>

View File

@ -21,6 +21,8 @@
* \brief validation.php * \brief validation.php
*/ */
$form=new Form($db);
// Affichage des templates // Affichage des templates
require ('tpl/validation1.tpl.php'); require ('tpl/validation1.tpl.php');

View File

@ -50,7 +50,7 @@ if ($user->societe_id > 0)
unset($_GET["action"]); unset($_GET["action"]);
$action=''; $action='';
} }
$result = restrictedArea($user, 'agenda', $objectid, 'actioncomm&societe', 'myactions&allactions', 'fk_soc', 'id'); $result = restrictedArea($user, 'agenda', $objectid, 'actioncomm&societe', 'myactions|allactions', 'fk_soc', 'id');
$object = new ActionComm($db); $object = new ActionComm($db);

View File

@ -53,7 +53,7 @@ if ($user->societe_id > 0)
unset($_GET["action"]); unset($_GET["action"]);
$action=''; $action='';
} }
$result = restrictedArea($user, 'agenda', $objectid, 'actioncomm&societe', 'myactions&allactions', 'fk_soc', 'id'); $result = restrictedArea($user, 'agenda', $objectid, 'actioncomm&societe', 'myactions|allactions', 'fk_soc', 'id');
$object = new ActionComm($db); $object = new ActionComm($db);

View File

@ -58,7 +58,7 @@ $originid=GETPOST('originid','int');
$socid = GETPOST('socid','int'); $socid = GETPOST('socid','int');
$id = GETPOST('id','int'); $id = GETPOST('id','int');
if ($user->societe_id) $socid=$user->societe_id; if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'agenda', $id, 'actioncomm&societe', 'myactions&allactions', 'fk_soc', 'id'); $result = restrictedArea($user, 'agenda', $id, 'actioncomm&societe', 'myactions|allactions', 'fk_soc', 'id');
if ($user->societe_id && $socid) $result = restrictedArea($user,'societe',$socid); if ($user->societe_id && $socid) $result = restrictedArea($user,'societe',$socid);
$error=GETPOST("error"); $error=GETPOST("error");

View File

@ -40,7 +40,7 @@ if ($user->societe_id > 0)
$socid = $user->societe_id; $socid = $user->societe_id;
} }
$result = restrictedArea($user, 'agenda', $id, 'actioncomm&societe', 'myactions&allactions', 'fk_soc', 'id'); $result = restrictedArea($user, 'agenda', $id, 'actioncomm&societe', 'myactions|allactions', 'fk_soc', 'id');
/* /*

View File

@ -116,7 +116,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes') {
if ($object->id > 0) { if ($object->id > 0) {
$result = $object->createFromClone($socid); $result = $object->createFromClone($socid);
if ($result > 0) { if ($result > 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . '?id=' . $result); header("Location: " . $_SERVER['PHP_SELF'] . '?id=' . $result);
exit(); exit();
} else { } else {
setEventMessage($object->error, 'errors'); setEventMessage($object->error, 'errors');
@ -157,7 +157,7 @@ else if ($action == 'confirm_deleteline' && $confirm == 'yes' && $user->rights->
propale_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); propale_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
} }
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id);
exit(); exit();
} }
@ -331,7 +331,7 @@ else if ($action == 'add' && $user->rights->propal->creer) {
propale_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); propale_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
} }
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $id); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $id);
exit(); exit();
} else { } else {
$db->rollback(); $db->rollback();
@ -482,7 +482,7 @@ if ($action == 'send' && ! GETPOST('addfile') && ! GETPOST('removedfile') && ! G
// This avoid sending mail twice if going out and then back to page // This avoid sending mail twice if going out and then back to page
$mesg = $langs->trans('MailSuccessfulySent', $mailfile->getValidAddress($from, 2), $mailfile->getValidAddress($sendto, 2)); $mesg = $langs->trans('MailSuccessfulySent', $mailfile->getValidAddress($from, 2), $mailfile->getValidAddress($sendto, 2));
setEventMessage($mesg); setEventMessage($mesg);
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id);
exit(); exit();
} else { } else {
dol_print_error($db); dol_print_error($db);
@ -886,7 +886,7 @@ else if ($action == 'updateligne' && $user->rights->propal->creer && GETPOST('sa
} }
else if ($action == 'updateligne' && $user->rights->propal->creer && GETPOST('cancel') == $langs->trans('Cancel')) { else if ($action == 'updateligne' && $user->rights->propal->creer && GETPOST('cancel') == $langs->trans('Cancel')) {
header('Location: ' . $_SERVER ['PHP_SELF'] . '?id=' . $object->id); // Pour reaffichage de la fiche en cours d'edition header('Location: ' . $_SERVER['PHP_SELF'] . '?id=' . $object->id); // Pour reaffichage de la fiche en cours d'edition
exit(); exit();
} }
@ -910,7 +910,7 @@ else if ($action == 'builddoc' && $user->rights->propal->creer) {
dol_print_error($db, $result); dol_print_error($db, $result);
exit(); exit();
} else { } else {
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . (empty($conf->global->MAIN_JUMP_TAG) ? '' : '#builddoc')); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . (empty($conf->global->MAIN_JUMP_TAG) ? '' : '#builddoc'));
exit(); exit();
} }
} }
@ -983,7 +983,7 @@ else if ($action == 'up' && $user->rights->propal->creer) {
propale_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); propale_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
} }
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $id . '#' . GETPOST('rowid')); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $id . '#' . GETPOST('rowid'));
exit(); exit();
} }
@ -1002,7 +1002,7 @@ else if ($action == 'down' && $user->rights->propal->creer) {
propale_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); propale_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
} }
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $id . '#' . GETPOST('rowid')); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $id . '#' . GETPOST('rowid'));
exit(); exit();
} else if ($action == 'update_extras') { } else if ($action == 'update_extras') {
// Fill array 'array_options' with data from update form // Fill array 'array_options' with data from update form
@ -1040,7 +1040,7 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->propal->
} }
if ($result >= 0) { if ($result >= 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . "?id=" . $object->id); header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id);
exit(); exit();
} else { } else {
if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
@ -1067,7 +1067,7 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->propal->
$result = $object->delete_contact($lineid); $result = $object->delete_contact($lineid);
if ($result >= 0) { if ($result >= 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . "?id=" . $object->id); header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id);
exit(); exit();
} else { } else {
dol_print_error($db); dol_print_error($db);
@ -1099,7 +1099,7 @@ if ($action == 'create') {
$object = new Propal($db); $object = new Propal($db);
print '<form name="addprop" action="' . $_SERVER ["PHP_SELF"] . '" method="POST">'; print '<form name="addprop" action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="action" value="add">'; print '<input type="hidden" name="action" value="add">';
@ -1349,22 +1349,22 @@ if ($action == 'create') {
// 1), // 1),
array('type' => 'other','name' => 'socid','label' => $langs->trans("SelectThirdParty"),'value' => $form->select_company(GETPOST('socid', 'int'), 'socid', '(s.client=1 OR s.client=2 OR s.client=3)'))); array('type' => 'other','name' => 'socid','label' => $langs->trans("SelectThirdParty"),'value' => $form->select_company(GETPOST('socid', 'int'), 'socid', '(s.client=1 OR s.client=2 OR s.client=3)')));
// Paiement incomplet. On demande si motif = escompte ou autre // Paiement incomplet. On demande si motif = escompte ou autre
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ClonePropal'), $langs->trans('ConfirmClonePropal', $object->ref), 'confirm_clone', $formquestion, 'yes', 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ClonePropal'), $langs->trans('ConfirmClonePropal', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
} }
// Confirm delete // Confirm delete
else if ($action == 'delete') { else if ($action == 'delete') {
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteProp'), $langs->trans('ConfirmDeleteProp', $object->ref), 'confirm_delete', '', 0, 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteProp'), $langs->trans('ConfirmDeleteProp', $object->ref), 'confirm_delete', '', 0, 1);
} }
// Confirm reopen // Confirm reopen
else if ($action == 'reopen') { else if ($action == 'reopen') {
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ReOpen'), $langs->trans('ConfirmReOpenProp', $object->ref), 'confirm_reopen', '', 0, 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ReOpen'), $langs->trans('ConfirmReOpenProp', $object->ref), 'confirm_reopen', '', 0, 1);
} }
// Confirmation delete product/service line // Confirmation delete product/service line
else if ($action == 'ask_deleteline') { else if ($action == 'ask_deleteline') {
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&lineid=' . $lineid, $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 0, 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id . '&lineid=' . $lineid, $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 0, 1);
} }
// Confirm validate proposal // Confirm validate proposal
@ -1392,7 +1392,7 @@ if ($action == 'create') {
} }
if (! $error) if (! $error)
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ValidateProp'), $text, 'confirm_validate', '', 0, 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ValidateProp'), $text, 'confirm_validate', '', 0, 1);
} }
if (! $formconfirm) { if (! $formconfirm) {
@ -1419,7 +1419,7 @@ if ($action == 'create') {
print '<table class="nobordernopadding" width="100%"><tr><td class="nowrap">'; print '<table class="nobordernopadding" width="100%"><tr><td class="nowrap">';
print $langs->trans('RefCustomer') . '</td>'; print $langs->trans('RefCustomer') . '</td>';
if ($action != 'refclient' && ! empty($object->brouillon)) if ($action != 'refclient' && ! empty($object->brouillon))
print '<td align="right"><a href="' . $_SERVER ['PHP_SELF'] . '?action=refclient&amp;id=' . $object->id . '">' . img_edit($langs->trans('Modify')) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=refclient&amp;id=' . $object->id . '">' . img_edit($langs->trans('Modify')) . '</a></td>';
print '</td>'; print '</td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="5">'; print '</td><td colspan="5">';
@ -1458,7 +1458,7 @@ if ($action == 'create') {
// Remise dispo de type non avoir // Remise dispo de type non avoir
$filter = 'fk_facture_source IS NULL'; $filter = 'fk_facture_source IS NULL';
print '<br>'; print '<br>';
$form->form_remise_dispo($_SERVER ["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filter); $form->form_remise_dispo($_SERVER["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filter);
} }
} }
if ($absolute_creditnote) { if ($absolute_creditnote) {
@ -1475,11 +1475,11 @@ if ($action == 'create') {
print $langs->trans('Date'); print $langs->trans('Date');
print '</td>'; print '</td>';
if ($action != 'editdate' && ! empty($object->brouillon)) if ($action != 'editdate' && ! empty($object->brouillon))
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editdate&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetDate'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editdate&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetDate'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if (! empty($object->brouillon) && $action == 'editdate') { if (! empty($object->brouillon) && $action == 'editdate') {
print '<form name="editdate" action="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '" method="post">'; print '<form name="editdate" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="post">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="action" value="setdate">'; print '<input type="hidden" name="action" value="setdate">';
$form->select_date($object->date, 're', '', '', 0, "editdate"); $form->select_date($object->date, 're', '', '', 0, "editdate");
@ -1501,11 +1501,11 @@ if ($action == 'create') {
print $langs->trans('DateEndPropal'); print $langs->trans('DateEndPropal');
print '</td>'; print '</td>';
if ($action != 'editecheance' && ! empty($object->brouillon)) if ($action != 'editecheance' && ! empty($object->brouillon))
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editecheance&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetConditions'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editecheance&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetConditions'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if (! empty($object->brouillon) && $action == 'editecheance') { if (! empty($object->brouillon) && $action == 'editecheance') {
print '<form name="editecheance" action="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '" method="post">'; print '<form name="editecheance" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="post">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="action" value="setecheance">'; print '<input type="hidden" name="action" value="setecheance">';
$form->select_date($object->fin_validite, 'ech', '', '', '', "editecheance"); $form->select_date($object->fin_validite, 'ech', '', '', '', "editecheance");
@ -1529,13 +1529,13 @@ if ($action == 'create') {
print $langs->trans('PaymentConditionsShort'); print $langs->trans('PaymentConditionsShort');
print '</td>'; print '</td>';
if ($action != 'editconditions' && ! empty($object->brouillon)) if ($action != 'editconditions' && ! empty($object->brouillon))
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editconditions&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetConditions'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editconditions&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetConditions'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'editconditions') { if ($action == 'editconditions') {
$form->form_conditions_reglement($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->cond_reglement_id, 'cond_reglement_id'); $form->form_conditions_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->cond_reglement_id, 'cond_reglement_id');
} else { } else {
$form->form_conditions_reglement($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->cond_reglement_id, 'none'); $form->form_conditions_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->cond_reglement_id, 'none');
} }
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
@ -1547,11 +1547,11 @@ if ($action == 'create') {
print $langs->trans('DeliveryDate'); print $langs->trans('DeliveryDate');
print '</td>'; print '</td>';
if ($action != 'editdate_livraison' && ! empty($object->brouillon)) if ($action != 'editdate_livraison' && ! empty($object->brouillon))
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editdate_livraison&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetDeliveryDate'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editdate_livraison&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetDeliveryDate'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'editdate_livraison') { if ($action == 'editdate_livraison') {
print '<form name="editdate_livraison" action="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '" method="post">'; print '<form name="editdate_livraison" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="post">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="action" value="setdate_livraison">'; print '<input type="hidden" name="action" value="setdate_livraison">';
$form->select_date($object->date_livraison, 'liv_', '', '', '', "editdate_livraison"); $form->select_date($object->date_livraison, 'liv_', '', '', '', "editdate_livraison");
@ -1571,13 +1571,13 @@ if ($action == 'create') {
print ' (' . $langs->trans('AfterOrder') . ')'; print ' (' . $langs->trans('AfterOrder') . ')';
print '</td>'; print '</td>';
if ($action != 'editavailability' && ! empty($object->brouillon)) if ($action != 'editavailability' && ! empty($object->brouillon))
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editavailability&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetAvailability'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editavailability&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetAvailability'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'editavailability') { if ($action == 'editavailability') {
$form->form_availability($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->availability_id, 'availability_id', 1); $form->form_availability($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->availability_id, 'availability_id', 1);
} else { } else {
$form->form_availability($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->availability_id, 'none', 1); $form->form_availability($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->availability_id, 'none', 1);
} }
print '</td>'; print '</td>';
@ -1589,13 +1589,13 @@ if ($action == 'create') {
print $langs->trans('Source'); print $langs->trans('Source');
print '</td>'; print '</td>';
if ($action != 'editdemandreason' && ! empty($object->brouillon)) if ($action != 'editdemandreason' && ! empty($object->brouillon))
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editdemandreason&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetDemandReason'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editdemandreason&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetDemandReason'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'editdemandreason') { if ($action == 'editdemandreason') {
$form->formInputReason($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->demand_reason_id, 'demand_reason_id', 1); $form->formInputReason($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->demand_reason_id, 'demand_reason_id', 1);
} else { } else {
$form->formInputReason($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->demand_reason_id, 'none'); $form->formInputReason($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->demand_reason_id, 'none');
} }
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
@ -1607,13 +1607,13 @@ if ($action == 'create') {
print $langs->trans('PaymentMode'); print $langs->trans('PaymentMode');
print '</td>'; print '</td>';
if ($action != 'editmode' && ! empty($object->brouillon)) if ($action != 'editmode' && ! empty($object->brouillon))
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editmode&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetMode'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editmode&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetMode'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'editmode') { if ($action == 'editmode') {
$form->form_modes_reglement($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id'); $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id');
} else { } else {
$form->form_modes_reglement($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'none'); $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'none');
} }
print '</td></tr>'; print '</td></tr>';
@ -1625,13 +1625,13 @@ if ($action == 'create') {
print $langs->trans('Project') . '</td>'; print $langs->trans('Project') . '</td>';
if ($user->rights->propal->creer) { if ($user->rights->propal->creer) {
if ($action != 'classify') if ($action != 'classify')
print '<td align="right"><a href="' . $_SERVER ['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'classify') { if ($action == 'classify') {
$form->form_project($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid'); $form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid');
} else { } else {
$form->form_project($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none'); $form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none');
} }
print '</td></tr>'; print '</td></tr>';
} else { } else {
@ -1688,7 +1688,7 @@ if ($action == 'create') {
} }
if ($action == 'edit_extras' && $user->rights->propal->creer && GETPOST('attribute') == $key) { if ($action == 'edit_extras' && $user->rights->propal->creer && GETPOST('attribute') == $key) {
print '<form enctype="multipart/form-data" action="' . $_SERVER ["PHP_SELF"] . '" method="post" name="formsoc">'; print '<form enctype="multipart/form-data" action="' . $_SERVER["PHP_SELF"] . '" method="post" name="formsoc">';
print '<input type="hidden" name="action" value="update_extras">'; print '<input type="hidden" name="action" value="update_extras">';
print '<input type="hidden" name="attribute" value="' . $key . '">'; print '<input type="hidden" name="attribute" value="' . $key . '">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
@ -1702,7 +1702,7 @@ if ($action == 'create') {
} else { } else {
print $extrafields->showOutputField($key, $value); print $extrafields->showOutputField($key, $value);
if ($object->statut == 0 && $user->rights->propal->creer) if ($object->statut == 0 && $user->rights->propal->creer)
print '<a href="' . $_SERVER ['PHP_SELF'] . '?id=' . $object->id . '&action=edit_extras&attribute=' . $key . '">' . img_picto('', 'edit') . ' ' . $langs->trans('Modify') . '</a>'; print '<a href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=edit_extras&attribute=' . $key . '">' . img_picto('', 'edit') . ' ' . $langs->trans('Modify') . '</a>';
} }
print '</td></tr>' . "\n"; print '</td></tr>' . "\n";
} }
@ -1770,7 +1770,7 @@ if ($action == 'create') {
// Show object lines // Show object lines
$result = $object->getLinesArray(); $result = $object->getLinesArray();
print ' <form name="addproduct" id="addproduct" action="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . (($action != 'editline') ? '#add' : '#line_' . GETPOST('lineid')) . '" method="POST"> print ' <form name="addproduct" id="addproduct" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . (($action != 'editline') ? '#add' : '#line_' . GETPOST('lineid')) . '" method="POST">
<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '"> <input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateligne') . '"> <input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateligne') . '">
<input type="hidden" name="mode" value=""> <input type="hidden" name="mode" value="">
@ -1812,7 +1812,7 @@ if ($action == 'create') {
/* /*
* Form to close proposal (signed or not) * Form to close proposal (signed or not)
*/ */
$form_close = '<form action="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '" method="post">'; $form_close = '<form action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="post">';
$form_close .= '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; $form_close .= '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
$form_close .= '<table class="border" width="100%">'; $form_close .= '<table class="border" width="100%">';
$form_close .= '<tr><td width="150" align="left">' . $langs->trans("CloseAs") . '</td><td align="left">'; $form_close .= '<tr><td width="150" align="left">' . $langs->trans("CloseAs") . '</td><td align="left">';
@ -1850,7 +1850,7 @@ if ($action == 'create') {
// Validate // Validate
if ($object->statut == 0 && $object->total_ttc >= 0 && count($object->lines) > 0 && $user->rights->propal->valider) { if ($object->statut == 0 && $object->total_ttc >= 0 && count($object->lines) > 0 && $user->rights->propal->valider) {
if (count($object->lines) > 0) if (count($object->lines) > 0)
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=validate">' . $langs->trans('Validate') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=validate">' . $langs->trans('Validate') . '</a></div>';
// else print '<a class="butActionRefused" href="#">'.$langs->trans('Validate').'</a>'; // else print '<a class="butActionRefused" href="#">'.$langs->trans('Validate').'</a>';
} }
// Create event // Create event
@ -1863,19 +1863,19 @@ if ($action == 'create') {
} }
// Edit // Edit
if ($object->statut == 1 && $user->rights->propal->creer) { if ($object->statut == 1 && $user->rights->propal->creer) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=modif">' . $langs->trans('Modify') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=modif">' . $langs->trans('Modify') . '</a></div>';
} }
// ReOpen // ReOpen
if (($object->statut == 2 || $object->statut == 3) && $user->rights->propal->cloturer) { if (($object->statut == 2 || $object->statut == 3) && $user->rights->propal->cloturer) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=reopen' . (empty($conf->global->MAIN_JUMP_TAG) ? '' : '#reopen') . '"'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=reopen' . (empty($conf->global->MAIN_JUMP_TAG) ? '' : '#reopen') . '"';
print '>' . $langs->trans('ReOpen') . '</a></div>'; print '>' . $langs->trans('ReOpen') . '</a></div>';
} }
// Send // Send
if ($object->statut == 1 || $object->statut == 2) { if ($object->statut == 1 || $object->statut == 2) {
if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->propal->propal_advance->send) { if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->propal->propal_advance->send) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=presend&amp;mode=init">' . $langs->trans('SendByMail') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=presend&amp;mode=init">' . $langs->trans('SendByMail') . '</a></div>';
} else } else
print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">' . $langs->trans('SendByMail') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">' . $langs->trans('SendByMail') . '</a></div>';
} }
@ -1904,24 +1904,24 @@ if ($action == 'create') {
$arraypropal = $object->getInvoiceArrayList(); $arraypropal = $object->getInvoiceArrayList();
if (is_array($arraypropal) && count($arraypropal) > 0) { if (is_array($arraypropal) && count($arraypropal) > 0) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=classifybilled&amp;socid=' . $object->socid . '">' . $langs->trans("ClassifyBilled") . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=classifybilled&amp;socid=' . $object->socid . '">' . $langs->trans("ClassifyBilled") . '</a></div>';
} }
} }
// Close // Close
if ($object->statut == 1 && $user->rights->propal->cloturer) { if ($object->statut == 1 && $user->rights->propal->cloturer) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=statut' . (empty($conf->global->MAIN_JUMP_TAG) ? '' : '#close') . '"'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=statut' . (empty($conf->global->MAIN_JUMP_TAG) ? '' : '#close') . '"';
print '>' . $langs->trans('Close') . '</a></div>'; print '>' . $langs->trans('Close') . '</a></div>';
} }
// Clone // Clone
if ($user->rights->propal->creer) { if ($user->rights->propal->creer) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ['PHP_SELF'] . '?id=' . $object->id . '&amp;socid=' . $object->socid . '&amp;action=clone&amp;object=' . $object->element . '">' . $langs->trans("ToClone") . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&amp;socid=' . $object->socid . '&amp;action=clone&amp;object=' . $object->element . '">' . $langs->trans("ToClone") . '</a></div>';
} }
// Delete // Delete
if ($user->rights->propal->supprimer) { if ($user->rights->propal->supprimer) {
print '<div class="inline-block divButAction"><a class="butActionDelete" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=delete"'; print '<div class="inline-block divButAction"><a class="butActionDelete" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=delete"';
print '>' . $langs->trans('Delete') . '</a></div>'; print '>' . $langs->trans('Delete') . '</a></div>';
} }
} }
@ -1942,7 +1942,7 @@ if ($action == 'create') {
*/ */
$filename = dol_sanitizeFileName($object->ref); $filename = dol_sanitizeFileName($object->ref);
$filedir = $conf->propal->dir_output . "/" . dol_sanitizeFileName($object->ref); $filedir = $conf->propal->dir_output . "/" . dol_sanitizeFileName($object->ref);
$urlsource = $_SERVER ["PHP_SELF"] . "?id=" . $object->id; $urlsource = $_SERVER["PHP_SELF"] . "?id=" . $object->id;
$genallowed = $user->rights->propal->creer; $genallowed = $user->rights->propal->creer;
$delallowed = $user->rights->propal->supprimer; $delallowed = $user->rights->propal->supprimer;
@ -1982,8 +1982,8 @@ if ($action == 'create') {
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -2057,7 +2057,7 @@ if ($action == 'create') {
$formmail->param ['action'] = 'send'; $formmail->param ['action'] = 'send';
$formmail->param ['models'] = 'propal_send'; $formmail->param ['models'] = 'propal_send';
$formmail->param ['id'] = $object->id; $formmail->param ['id'] = $object->id;
$formmail->param ['returnurl'] = $_SERVER ["PHP_SELF"] . '?id=' . $object->id; $formmail->param ['returnurl'] = $_SERVER["PHP_SELF"] . '?id=' . $object->id;
// Init list of files // Init list of files
if (GETPOST("mode") == 'init') { if (GETPOST("mode") == 'init') {
$formmail->clear_attached_files(); $formmail->clear_attached_files();

View File

@ -673,16 +673,26 @@ class Propal extends CommonObject
dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR);
return -3; return -3;
} }
// Check parameters
if (! empty($this->ref)) // We check that ref is not already used
{
$result=self::isExistingObject($this->element, 0, $this->ref); // Check ref is not yet used
if ($result > 0)
{
$this->error='ErrorRefAlreadyExists';
dol_syslog(get_class($this)."::create ".$this->error,LOG_WARNING);
$this->db->rollback();
return -1;
}
}
if (empty($this->date)) if (empty($this->date))
{ {
$this->error="Date of proposal is required"; $this->error="Date of proposal is required";
dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR);
return -4; return -4;
} }
if (! empty($this->ref))
{
$result=$this->verifyNumRef(); // Check ref is not yet used
}
$this->db->begin(); $this->db->begin();

View File

@ -612,6 +612,18 @@ class Commande extends CommonOrder
dol_syslog(get_class($this)."::create user=".$user->id); dol_syslog(get_class($this)."::create user=".$user->id);
// Check parameters // Check parameters
if (! empty($this->ref)) // We check that ref is not already used
{
$result=self::isExistingObject($this->element, 0, $this->ref); // Check ref is not yet used
if ($result > 0)
{
$this->error='ErrorRefAlreadyExists';
dol_syslog(get_class($this)."::create ".$this->error,LOG_WARNING);
$this->db->rollback();
return -1;
}
}
$soc = new Societe($this->db); $soc = new Societe($this->db);
$result=$soc->fetch($this->socid); $result=$soc->fetch($this->socid);
if ($result < 0) if ($result < 0)

View File

@ -111,7 +111,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && $user->rights->commande->
if ($object->id > 0) { if ($object->id > 0) {
$result = $object->createFromClone($socid); $result = $object->createFromClone($socid);
if ($result > 0) { if ($result > 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . '?id=' . $result); header("Location: " . $_SERVER['PHP_SELF'] . '?id=' . $result);
exit(); exit();
} else { } else {
$mesg = '<div class="error">' . $object->error . '</div>'; $mesg = '<div class="error">' . $object->error . '</div>';
@ -126,7 +126,7 @@ else if ($action == 'reopen' && $user->rights->commande->creer) {
if ($object->statut == 3) { if ($object->statut == 3) {
$result = $object->set_reopen($user); $result = $object->set_reopen($user);
if ($result > 0) { if ($result > 0) {
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id);
exit(); exit();
} else { } else {
$mesg = '<div class="error">' . $object->error . '</div>'; $mesg = '<div class="error">' . $object->error . '</div>';
@ -165,7 +165,7 @@ else if ($action == 'confirm_deleteline' && $confirm == 'yes' && $user->rights->
commande_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); commande_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
} }
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id);
exit(); exit();
} else { } else {
$mesg = '<div class="error">' . $object->error . '</div>'; $mesg = '<div class="error">' . $object->error . '</div>';
@ -371,7 +371,7 @@ else if ($action == 'add' && $user->rights->commande->creer) {
// End of object creation, we show it // End of object creation, we show it
if ($object_id > 0 && ! $error) { if ($object_id > 0 && ! $error) {
$db->commit(); $db->commit();
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object_id); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object_id);
exit(); exit();
} else { } else {
$db->rollback(); $db->rollback();
@ -825,7 +825,7 @@ else if ($action == 'updateligne' && $user->rights->commande->creer && GETPOST('
} }
else if ($action == 'updateligne' && $user->rights->commande->creer && GETPOST('cancel') == $langs->trans('Cancel')) { else if ($action == 'updateligne' && $user->rights->commande->creer && GETPOST('cancel') == $langs->trans('Cancel')) {
header('Location: ' . $_SERVER ['PHP_SELF'] . '?id=' . $object->id); // Pour reaffichage de la fiche en cours d'edition header('Location: ' . $_SERVER['PHP_SELF'] . '?id=' . $object->id); // Pour reaffichage de la fiche en cours d'edition
exit(); exit();
} }
@ -847,8 +847,8 @@ else if ($action == 'confirm_validate' && $confirm == 'yes' && $user->rights->co
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -880,8 +880,8 @@ else if ($action == 'confirm_modif' && $user->rights->commande->creer) {
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -929,8 +929,8 @@ else if ($action == 'up' && $user->rights->commande->creer) {
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -941,7 +941,7 @@ else if ($action == 'up' && $user->rights->commande->creer) {
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
commande_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); commande_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '#' . GETPOST('rowid')); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '#' . GETPOST('rowid'));
exit(); exit();
} }
@ -951,8 +951,8 @@ else if ($action == 'down' && $user->rights->commande->creer) {
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -962,7 +962,7 @@ else if ($action == 'down' && $user->rights->commande->creer) {
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
commande_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); commande_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '#' . GETPOST('rowid')); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '#' . GETPOST('rowid'));
exit(); exit();
} }
@ -980,8 +980,8 @@ else if ($action == 'builddoc') // In get or post
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -1176,7 +1176,7 @@ if ($action == 'send' && ! GETPOST('addfile') && ! GETPOST('removedfile') && ! G
} else { } else {
// Redirect here // Redirect here
// This avoid sending mail twice if going out and then back to page // This avoid sending mail twice if going out and then back to page
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&mesg=' . urlencode($mesg)); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&mesg=' . urlencode($mesg));
exit(); exit();
} }
} else { } else {
@ -1219,7 +1219,7 @@ if (! $error && ! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->righ
} }
if ($result >= 0) { if ($result >= 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . "?id=" . $object->id); header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id);
exit(); exit();
} else { } else {
if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
@ -1245,7 +1245,7 @@ if (! $error && ! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->righ
$result = $object->delete_contact($lineid); $result = $object->delete_contact($lineid);
if ($result >= 0) { if ($result >= 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . "?id=" . $object->id); header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id);
exit(); exit();
} else { } else {
dol_print_error($db); dol_print_error($db);
@ -1349,7 +1349,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
$nbrow = 10; $nbrow = 10;
print '<form name="crea_commande" action="' . $_SERVER ["PHP_SELF"] . '" method="POST">'; print '<form name="crea_commande" action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="action" value="add">'; print '<input type="hidden" name="action" value="add">';
print '<input type="hidden" name="socid" value="' . $soc->id . '">' . "\n"; print '<input type="hidden" name="socid" value="' . $soc->id . '">' . "\n";
@ -1603,7 +1603,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
* Confirmation de la suppression de la commande * Confirmation de la suppression de la commande
*/ */
if ($action == 'delete') { if ($action == 'delete') {
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteOrder'), $langs->trans('ConfirmDeleteOrder'), 'confirm_delete', '', 0, 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteOrder'), $langs->trans('ConfirmDeleteOrder'), 'confirm_delete', '', 0, 1);
} }
/* /*
@ -1639,7 +1639,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
array('type' => 'other','name' => 'idwarehouse','label' => $langs->trans("SelectWarehouseForStockDecrease"),'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1))); array('type' => 'other','name' => 'idwarehouse','label' => $langs->trans("SelectWarehouseForStockDecrease"),'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1)));
} }
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ValidateOrder'), $text, 'confirm_validate', $formquestion, 0, 1, 220); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ValidateOrder'), $text, 'confirm_validate', $formquestion, 0, 1, 220);
} }
// Confirm back to draft status // Confirm back to draft status
@ -1659,14 +1659,14 @@ if ($action == 'create' && $user->rights->commande->creer) {
array('type' => 'other','name' => 'idwarehouse','label' => $langs->trans("SelectWarehouseForStockIncrease"),'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1))); array('type' => 'other','name' => 'idwarehouse','label' => $langs->trans("SelectWarehouseForStockIncrease"),'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1)));
} }
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('UnvalidateOrder'), $text, 'confirm_modif', $formquestion, "yes", 1, 220); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('UnvalidateOrder'), $text, 'confirm_modif', $formquestion, "yes", 1, 220);
} }
/* /*
* Confirmation de la cloture * Confirmation de la cloture
*/ */
if ($action == 'shipped') { if ($action == 'shipped') {
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('CloseOrder'), $langs->trans('ConfirmCloseOrder'), 'confirm_shipped', '', 0, 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('CloseOrder'), $langs->trans('ConfirmCloseOrder'), 'confirm_shipped', '', 0, 1);
} }
/* /*
@ -1688,14 +1688,14 @@ if ($action == 'create' && $user->rights->commande->creer) {
array('type' => 'other','name' => 'idwarehouse','label' => $langs->trans("SelectWarehouseForStockIncrease"),'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1))); array('type' => 'other','name' => 'idwarehouse','label' => $langs->trans("SelectWarehouseForStockIncrease"),'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1)));
} }
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('Cancel'), $text, 'confirm_cancel', $formquestion, 0, 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('Cancel'), $text, 'confirm_cancel', $formquestion, 0, 1);
} }
/* /*
* Confirmation de la suppression d'une ligne produit * Confirmation de la suppression d'une ligne produit
*/ */
if ($action == 'ask_deleteline') { if ($action == 'ask_deleteline') {
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&lineid=' . $lineid, $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 0, 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id . '&lineid=' . $lineid, $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 0, 1);
} }
// Clone confirmation // Clone confirmation
@ -1709,7 +1709,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
// => 1), // => 1),
array('type' => 'other','name' => 'socid','label' => $langs->trans("SelectThirdParty"),'value' => $form->select_company(GETPOST('socid', 'int'), 'socid', '(s.client=1 OR s.client=3)'))); array('type' => 'other','name' => 'socid','label' => $langs->trans("SelectThirdParty"),'value' => $form->select_company(GETPOST('socid', 'int'), 'socid', '(s.client=1 OR s.client=3)')));
// Paiement incomplet. On demande si motif = escompte ou autre // Paiement incomplet. On demande si motif = escompte ou autre
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('CloneOrder'), $langs->trans('ConfirmCloneOrder', $object->ref), 'confirm_clone', $formquestion, 'yes', 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('CloneOrder'), $langs->trans('ConfirmCloneOrder', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
} }
if (! $formconfirm) { if (! $formconfirm) {
@ -1751,11 +1751,11 @@ if ($action == 'create' && $user->rights->commande->creer) {
print $langs->trans('RefCustomer') . '</td><td align="left">'; print $langs->trans('RefCustomer') . '</td><td align="left">';
print '</td>'; print '</td>';
if ($action != 'refcustomer' && $object->brouillon) if ($action != 'refcustomer' && $object->brouillon)
print '<td align="right"><a href="' . $_SERVER ['PHP_SELF'] . '?action=refcustomer&amp;id=' . $object->id . '">' . img_edit($langs->trans('Modify')) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=refcustomer&amp;id=' . $object->id . '">' . img_edit($langs->trans('Modify')) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($user->rights->commande->creer && $action == 'refcustomer') { if ($user->rights->commande->creer && $action == 'refcustomer') {
print '<form action="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '" method="post">'; print '<form action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="post">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="action" value="set_ref_client">'; print '<input type="hidden" name="action" value="set_ref_client">';
print '<input type="text" class="flat" size="20" name="ref_client" value="' . $object->ref_client . '">'; print '<input type="text" class="flat" size="20" name="ref_client" value="' . $object->ref_client . '">';
@ -1782,9 +1782,9 @@ if ($action == 'create' && $user->rights->commande->creer) {
} }
// Relative and absolute discounts // Relative and absolute discounts
$addrelativediscount = '<a href="' . DOL_URL_ROOT . '/comm/remise.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER ["PHP_SELF"]) . '?facid=' . $object->id . '">' . $langs->trans("EditRelativeDiscounts") . '</a>'; $addrelativediscount = '<a href="' . DOL_URL_ROOT . '/comm/remise.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER["PHP_SELF"]) . '?facid=' . $object->id . '">' . $langs->trans("EditRelativeDiscounts") . '</a>';
$addabsolutediscount = '<a href="' . DOL_URL_ROOT . '/comm/remx.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER ["PHP_SELF"]) . '?facid=' . $object->id . '">' . $langs->trans("EditGlobalDiscounts") . '</a>'; $addabsolutediscount = '<a href="' . DOL_URL_ROOT . '/comm/remx.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER["PHP_SELF"]) . '?facid=' . $object->id . '">' . $langs->trans("EditGlobalDiscounts") . '</a>';
$addcreditnote = '<a href="' . DOL_URL_ROOT . '/compta/facture.php?action=create&socid=' . $soc->id . '&type=2&backtopage=' . urlencode($_SERVER ["PHP_SELF"]) . '?facid=' . $object->id . '">' . $langs->trans("AddCreditNote") . '</a>'; $addcreditnote = '<a href="' . DOL_URL_ROOT . '/compta/facture.php?action=create&socid=' . $soc->id . '&type=2&backtopage=' . urlencode($_SERVER["PHP_SELF"]) . '?facid=' . $object->id . '">' . $langs->trans("AddCreditNote") . '</a>';
print '<tr><td>' . $langs->trans('Discounts') . '</td><td colspan="3">'; print '<tr><td>' . $langs->trans('Discounts') . '</td><td colspan="3">';
if ($soc->remise_percent) if ($soc->remise_percent)
@ -1802,7 +1802,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
} else { } else {
// Remise dispo de type remise fixe (not credit note) // Remise dispo de type remise fixe (not credit note)
print '<br>'; print '<br>';
$form->form_remise_dispo($_SERVER ["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filterabsolutediscount); $form->form_remise_dispo($_SERVER["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filterabsolutediscount);
} }
} }
if ($absolute_creditnote) { if ($absolute_creditnote) {
@ -1819,11 +1819,11 @@ if ($action == 'create' && $user->rights->commande->creer) {
print '</td>'; print '</td>';
if ($action != 'editdate' && $object->brouillon) if ($action != 'editdate' && $object->brouillon)
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editdate&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetDate'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editdate&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetDate'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'editdate') { if ($action == 'editdate') {
print '<form name="setdate" action="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '" method="post">'; print '<form name="setdate" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="post">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="action" value="setdate">'; print '<input type="hidden" name="action" value="setdate">';
$form->select_date($object->date, 'order_', '', '', '', "setdate"); $form->select_date($object->date, 'order_', '', '', '', "setdate");
@ -1841,11 +1841,11 @@ if ($action == 'create' && $user->rights->commande->creer) {
print $langs->trans('DateDeliveryPlanned'); print $langs->trans('DateDeliveryPlanned');
print '</td>'; print '</td>';
if ($action != 'editdate_livraison') if ($action != 'editdate_livraison')
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editdate_livraison&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetDeliveryDate'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editdate_livraison&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetDeliveryDate'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'editdate_livraison') { if ($action == 'editdate_livraison') {
print '<form name="setdate_livraison" action="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '" method="post">'; print '<form name="setdate_livraison" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="post">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="action" value="setdate_livraison">'; print '<input type="hidden" name="action" value="setdate_livraison">';
$form->select_date($object->date_livraison ? $object->date_livraison : - 1, 'liv_', '', '', '', "setdate_livraison"); $form->select_date($object->date_livraison ? $object->date_livraison : - 1, 'liv_', '', '', '', "setdate_livraison");
@ -1863,13 +1863,13 @@ if ($action == 'create' && $user->rights->commande->creer) {
print $langs->trans('PaymentConditionsShort'); print $langs->trans('PaymentConditionsShort');
print '</td>'; print '</td>';
if ($action != 'editconditions' && $object->brouillon) if ($action != 'editconditions' && $object->brouillon)
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editconditions&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetConditions'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editconditions&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetConditions'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'editconditions') { if ($action == 'editconditions') {
$form->form_conditions_reglement($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->cond_reglement_id, 'cond_reglement_id', 1); $form->form_conditions_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->cond_reglement_id, 'cond_reglement_id', 1);
} else { } else {
$form->form_conditions_reglement($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->cond_reglement_id, 'none', 1); $form->form_conditions_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->cond_reglement_id, 'none', 1);
} }
print '</td>'; print '</td>';
@ -1881,13 +1881,13 @@ if ($action == 'create' && $user->rights->commande->creer) {
print $langs->trans('PaymentMode'); print $langs->trans('PaymentMode');
print '</td>'; print '</td>';
if ($action != 'editmode' && $object->brouillon) if ($action != 'editmode' && $object->brouillon)
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editmode&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetMode'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editmode&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetMode'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'editmode') { if ($action == 'editmode') {
$form->form_modes_reglement($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id'); $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id');
} else { } else {
$form->form_modes_reglement($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'none'); $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'none');
} }
print '</td></tr>'; print '</td></tr>';
@ -1897,13 +1897,13 @@ if ($action == 'create' && $user->rights->commande->creer) {
print $langs->trans('AvailabilityPeriod'); print $langs->trans('AvailabilityPeriod');
print '</td>'; print '</td>';
if ($action != 'editavailability' && $object->brouillon) if ($action != 'editavailability' && $object->brouillon)
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editavailability&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetAvailability'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editavailability&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetAvailability'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'editavailability') { if ($action == 'editavailability') {
$form->form_availability($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->availability_id, 'availability_id', 1); $form->form_availability($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->availability_id, 'availability_id', 1);
} else { } else {
$form->form_availability($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->availability_id, 'none', 1); $form->form_availability($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->availability_id, 'none', 1);
} }
print '</td></tr>'; print '</td></tr>';
@ -1913,13 +1913,13 @@ if ($action == 'create' && $user->rights->commande->creer) {
print $langs->trans('Source'); print $langs->trans('Source');
print '</td>'; print '</td>';
if ($action != 'editdemandreason' && ! empty($object->brouillon)) if ($action != 'editdemandreason' && ! empty($object->brouillon))
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editdemandreason&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetDemandReason'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editdemandreason&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetDemandReason'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'editdemandreason') { if ($action == 'editdemandreason') {
$form->formInputReason($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->demand_reason_id, 'demand_reason_id', 1); $form->formInputReason($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->demand_reason_id, 'demand_reason_id', 1);
} else { } else {
$form->formInputReason($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->demand_reason_id, 'none'); $form->formInputReason($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->demand_reason_id, 'none');
} }
// Removed because using dictionary is an admin feature, not a user feature. Ther is already the "star" to show info to admin users. // Removed because using dictionary is an admin feature, not a user feature. Ther is already the "star" to show info to admin users.
// This is to avoid too heavy screens and have an uniform look and feel for all screens. // This is to avoid too heavy screens and have an uniform look and feel for all screens.
@ -1935,14 +1935,14 @@ if ($action == 'create' && $user->rights->commande->creer) {
print $langs->trans('Project'); print $langs->trans('Project');
print '</td>'; print '</td>';
if ($action != 'classify') if ($action != 'classify')
print '<td align="right"><a href="' . $_SERVER ['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetProject')) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->trans('SetProject')) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
// print "$object->id, $object->socid, $object->fk_project"; // print "$object->id, $object->socid, $object->fk_project";
if ($action == 'classify') { if ($action == 'classify') {
$form->form_project($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid'); $form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid');
} else { } else {
$form->form_project($_SERVER ['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none'); $form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none');
} }
print '</td></tr>'; print '</td></tr>';
} }
@ -1983,7 +1983,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
} }
if ($action == 'edit_extras' && $user->rights->commande->creer && GETPOST('attribute') == $key) { if ($action == 'edit_extras' && $user->rights->commande->creer && GETPOST('attribute') == $key) {
print '<form enctype="multipart/form-data" action="' . $_SERVER ["PHP_SELF"] . '" method="post" name="formsoc">'; print '<form enctype="multipart/form-data" action="' . $_SERVER["PHP_SELF"] . '" method="post" name="formsoc">';
print '<input type="hidden" name="action" value="update_extras">'; print '<input type="hidden" name="action" value="update_extras">';
print '<input type="hidden" name="attribute" value="' . $key . '">'; print '<input type="hidden" name="attribute" value="' . $key . '">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
@ -1996,7 +1996,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
} else { } else {
print $extrafields->showOutputField($key, $value); print $extrafields->showOutputField($key, $value);
if ($object->statut == 0 && $user->rights->commande->creer) if ($object->statut == 0 && $user->rights->commande->creer)
print '<a href="' . $_SERVER ['PHP_SELF'] . '?id=' . $object->id . '&action=edit_extras&attribute=' . $key . '">' . img_picto('', 'edit') . ' ' . $langs->trans('Modify') . '</a>'; print '<a href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=edit_extras&attribute=' . $key . '">' . img_picto('', 'edit') . ' ' . $langs->trans('Modify') . '</a>';
} }
print '</td></tr>' . "\n"; print '</td></tr>' . "\n";
} }
@ -2064,7 +2064,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
*/ */
$result = $object->getLinesArray(); $result = $object->getLinesArray();
print ' <form name="addproduct" id="addproduct" action="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . (($action != 'editline') ? '#add' : '#line_' . GETPOST('lineid')) . '" method="POST"> print ' <form name="addproduct" id="addproduct" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . (($action != 'editline') ? '#add' : '#line_' . GETPOST('lineid')) . '" method="POST">
<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '"> <input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateligne') . '"> <input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateligne') . '">
<input type="hidden" name="mode" value=""> <input type="hidden" name="mode" value="">
@ -2117,7 +2117,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
if (empty($reshook)) { if (empty($reshook)) {
// Valid // Valid
if ($object->statut == 0 && $object->total_ttc >= 0 && $numlines > 0 && $user->rights->commande->valider) { if ($object->statut == 0 && $object->total_ttc >= 0 && $numlines > 0 && $user->rights->commande->valider) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=validate">' . $langs->trans('Validate') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=validate">' . $langs->trans('Validate') . '</a></div>';
} }
// Edit // Edit
if ($object->statut == 1 && $user->rights->commande->creer) { if ($object->statut == 1 && $user->rights->commande->creer) {
@ -2133,7 +2133,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
// Send // Send
if ($object->statut > 0) { if ($object->statut > 0) {
if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send)) { if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send)) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=presend&amp;mode=init">' . $langs->trans('SendByMail') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=presend&amp;mode=init">' . $langs->trans('SendByMail') . '</a></div>';
} else } else
print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">' . $langs->trans('SendByMail') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">' . $langs->trans('SendByMail') . '</a></div>';
} }
@ -2172,7 +2172,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
// Reopen a closed order // Reopen a closed order
if ($object->statut == 3 && $user->rights->commande->creer) { if ($object->statut == 3 && $user->rights->commande->creer) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ['PHP_SELF'] . '?id=' . $object->id . '&amp;action=reopen">' . $langs->trans('ReOpen') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&amp;action=reopen">' . $langs->trans('ReOpen') . '</a></div>';
} }
// Create contract // Create contract
@ -2191,29 +2191,29 @@ if ($action == 'create' && $user->rights->commande->creer) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/compta/facture.php?action=create&amp;origin=' . $object->element . '&amp;originid=' . $object->id . '&amp;socid=' . $object->socid . '">' . $langs->trans("CreateBill") . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/compta/facture.php?action=create&amp;origin=' . $object->element . '&amp;originid=' . $object->id . '&amp;socid=' . $object->socid . '">' . $langs->trans("CreateBill") . '</a></div>';
} }
if ($user->rights->commande->creer && $object->statut > 2 && empty($conf->global->WORKFLOW_DISABLE_CLASSIFY_BILLED_FROM_ORDER) && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT)) { if ($user->rights->commande->creer && $object->statut > 2 && empty($conf->global->WORKFLOW_DISABLE_CLASSIFY_BILLED_FROM_ORDER) && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT)) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=classifybilled">' . $langs->trans("ClassifyBilled") . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=classifybilled">' . $langs->trans("ClassifyBilled") . '</a></div>';
} }
} }
// Set to shipped // Set to shipped
if (($object->statut == 1 || $object->statut == 2) && $user->rights->commande->cloturer) { if (($object->statut == 1 || $object->statut == 2) && $user->rights->commande->cloturer) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=shipped">' . $langs->trans('ClassifyShipped') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=shipped">' . $langs->trans('ClassifyShipped') . '</a></div>';
} }
// Clone // Clone
if ($user->rights->commande->creer) { if ($user->rights->commande->creer) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ['PHP_SELF'] . '?id=' . $object->id . '&amp;socid=' . $object->socid . '&amp;action=clone&amp;object=order">' . $langs->trans("ToClone") . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&amp;socid=' . $object->socid . '&amp;action=clone&amp;object=order">' . $langs->trans("ToClone") . '</a></div>';
} }
// Cancel order // Cancel order
if ($object->statut == 1 && $user->rights->commande->annuler) { if ($object->statut == 1 && $user->rights->commande->annuler) {
print '<div class="inline-block divButAction"><a class="butActionDelete" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=cancel">' . $langs->trans('Cancel') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butActionDelete" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=cancel">' . $langs->trans('Cancel') . '</a></div>';
} }
// Delete order // Delete order
if ($user->rights->commande->supprimer) { if ($user->rights->commande->supprimer) {
if ($numshipping == 0) { if ($numshipping == 0) {
print '<div class="inline-block divButAction"><a class="butActionDelete" href="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '&amp;action=delete">' . $langs->trans('Delete') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butActionDelete" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&amp;action=delete">' . $langs->trans('Delete') . '</a></div>';
} else { } else {
print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="' . $langs->trans("ShippingExist") . '">' . $langs->trans("Delete") . '</a></div>'; print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="' . $langs->trans("ShippingExist") . '">' . $langs->trans("Delete") . '</a></div>';
} }
@ -2236,7 +2236,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
$file = $conf->commande->dir_output . '/' . $comref . '/' . $comref . '.pdf'; $file = $conf->commande->dir_output . '/' . $comref . '/' . $comref . '.pdf';
$relativepath = $comref . '/' . $comref . '.pdf'; $relativepath = $comref . '/' . $comref . '.pdf';
$filedir = $conf->commande->dir_output . '/' . $comref; $filedir = $conf->commande->dir_output . '/' . $comref;
$urlsource = $_SERVER ["PHP_SELF"] . "?id=" . $object->id; $urlsource = $_SERVER["PHP_SELF"] . "?id=" . $object->id;
$genallowed = $user->rights->commande->creer; $genallowed = $user->rights->commande->creer;
$delallowed = $user->rights->commande->supprimer; $delallowed = $user->rights->commande->supprimer;
$somethingshown = $formfile->show_documents('commande', $comref, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', '', '', $soc->default_lang); $somethingshown = $formfile->show_documents('commande', $comref, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', '', '', $soc->default_lang);
@ -2273,8 +2273,8 @@ if ($action == 'create' && $user->rights->commande->creer) {
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -2346,7 +2346,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
$formmail->param ['action'] = 'send'; $formmail->param ['action'] = 'send';
$formmail->param ['models'] = 'order_send'; $formmail->param ['models'] = 'order_send';
$formmail->param ['orderid'] = $object->id; $formmail->param ['orderid'] = $object->id;
$formmail->param ['returnurl'] = $_SERVER ["PHP_SELF"] . '?id=' . $object->id; $formmail->param ['returnurl'] = $_SERVER["PHP_SELF"] . '?id=' . $object->id;
// Init list of files // Init list of files
if (GETPOST("mode") == 'init') { if (GETPOST("mode") == 'init') {

View File

@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2001-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2001-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2003 Xavier DUTOIT <doli@sydesy.com> * Copyright (C) 2003 Xavier DUTOIT <doli@sydesy.com>
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004 Christophe Combelles <ccomb@free.fr> * Copyright (C) 2004 Christophe Combelles <ccomb@free.fr>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* *
@ -341,6 +341,12 @@ if ($result)
print $langs->trans("VATPayment"); print $langs->trans("VATPayment");
print '</a>'; print '</a>';
} }
else if ($links[$key]['type']=='payment_salary') {
print '<a href="'.DOL_URL_ROOT.'/compta/salaries/fiche.php?id='.$links[$key]['url_id'].'">';
print img_object($langs->trans('ShowPaymentSalary'),'payment').' ';
print $langs->trans("SalaryPayment");
print '</a>';
}
else if ($links[$key]['type']=='member') { else if ($links[$key]['type']=='member') {
print '<a href="'.DOL_URL_ROOT.'/adherents/fiche.php?rowid='.$links[$key]['url_id'].'">'; print '<a href="'.DOL_URL_ROOT.'/adherents/fiche.php?rowid='.$links[$key]['url_id'].'">';
print img_object($langs->trans('ShowMember'),'user').' '; print img_object($langs->trans('ShowMember'),'user').' ';
@ -353,6 +359,12 @@ if ($result)
print $langs->trans("TransactionOnTheOtherAccount"); print $langs->trans("TransactionOnTheOtherAccount");
print '</a>'; print '</a>';
} }
else if ($links[$key]['type']=='user') {
print '<a href="'.DOL_URL_ROOT.'/user/fiche?id='.$links[$key]['url_id'].'">';
print img_object($langs->trans('ShowUser'),'user').' ';
print $langs->trans("User");
print '</a>';
}
else { else {
print '<a href="'.$links[$key]['url'].$links[$key]['url_id'].'">'; print '<a href="'.$links[$key]['url'].$links[$key]['url_id'].'">';
print img_object('','generic').' '; print img_object('','generic').' ';

View File

@ -36,7 +36,7 @@ $langs->load("bills");
// Security check // Security check
if ($user->societe_id) $socid=$user->societe_id; if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'tax', '', '', 'charges'); $result = restrictedArea($user, 'tax|salaries', '', '', 'charges|');
$year=$_GET["year"]; $year=$_GET["year"];
$filtre=$_GET["filtre"]; $filtre=$_GET["filtre"];

View File

@ -115,13 +115,13 @@ include DOL_DOCUMENT_ROOT . '/core/actions_setnotes.inc.php'; // Must be include
// Action clone object // Action clone object
if ($action == 'confirm_clone' && $confirm == 'yes' && $user->rights->facture->creer) { if ($action == 'confirm_clone' && $confirm == 'yes' && $user->rights->facture->creer) {
if (1 == 0 && empty($_REQUEST ["clone_content"]) && empty($_REQUEST ["clone_receivers"])) { if (1 == 0 && empty($_REQUEST["clone_content"]) && empty($_REQUEST["clone_receivers"])) {
$mesgs [] = '<div class="error">' . $langs->trans("NoCloneOptionsSpecified") . '</div>'; $mesgs [] = '<div class="error">' . $langs->trans("NoCloneOptionsSpecified") . '</div>';
} else { } else {
if ($object->fetch($id) > 0) { if ($object->fetch($id) > 0) {
$result = $object->createFromClone($socid); $result = $object->createFromClone($socid);
if ($result > 0) { if ($result > 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . '?facid=' . $result); header("Location: " . $_SERVER['PHP_SELF'] . '?facid=' . $result);
exit(); exit();
} else { } else {
$mesgs [] = $object->error; $mesgs [] = $object->error;
@ -137,7 +137,7 @@ else if ($action == 'reopen' && $user->rights->facture->creer) {
if ($object->statut == 2 || ($object->statut == 3 && $object->close_code != 'replaced')) { if ($object->statut == 2 || ($object->statut == 3 && $object->close_code != 'replaced')) {
$result = $object->set_unpaid($user); $result = $object->set_unpaid($user);
if ($result > 0) { if ($result > 0) {
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id); header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $id);
exit(); exit();
} else { } else {
$mesgs [] = '<div class="error">' . $object->error . '</div>'; $mesgs [] = '<div class="error">' . $object->error . '</div>';
@ -178,8 +178,8 @@ else if ($action == 'confirm_deleteline' && $confirm == 'yes' && $user->rights->
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -191,7 +191,7 @@ else if ($action == 'confirm_deleteline' && $confirm == 'yes' && $user->rights->
$result = facture_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); $result = facture_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
} }
if ($result >= 0) { if ($result >= 0) {
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id); header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $id);
exit(); exit();
} }
} else { } else {
@ -231,7 +231,7 @@ else if ($action == 'set_thirdparty' && $user->rights->facture->creer) {
$object->fetch($id); $object->fetch($id);
$object->setValueFrom('fk_soc', $socid); $object->setValueFrom('fk_soc', $socid);
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id); header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $id);
exit(); exit();
} }
@ -384,8 +384,8 @@ else if ($action == 'confirm_valid' && $confirm == 'yes' && $user->rights->factu
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -458,8 +458,8 @@ else if ($action == 'confirm_modif' && ((empty($conf->global->MAIN_USE_ADVANCED_
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -1023,7 +1023,7 @@ else if ($action == 'add' && $user->rights->facture->creer)
if ($id > 0 && ! $error) if ($id > 0 && ! $error)
{ {
$db->commit(); $db->commit();
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id); header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $id);
exit(); exit();
} }
else else
@ -1403,7 +1403,7 @@ elseif ($action == 'updateligne' && $user->rights->facture->creer && ! GETPOST('
} }
else if ($action == 'updateligne' && $user->rights->facture->creer && $_POST['cancel'] == $langs->trans('Cancel')) { else if ($action == 'updateligne' && $user->rights->facture->creer && $_POST['cancel'] == $langs->trans('Cancel')) {
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id); // Pour reaffichage de la fiche en cours d'edition header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $id); // Pour reaffichage de la fiche en cours d'edition
exit(); exit();
} }
@ -1416,8 +1416,8 @@ else if ($action == 'up' && $user->rights->facture->creer) {
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -1427,7 +1427,7 @@ else if ($action == 'up' && $user->rights->facture->creer) {
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
facture_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); facture_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $object->id . '#' . $_GET ['rowid']); header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $object->id . '#' . $_GET ['rowid']);
exit(); exit();
} // Modify line position (down) } // Modify line position (down)
else if ($action == 'down' && $user->rights->facture->creer) { else if ($action == 'down' && $user->rights->facture->creer) {
@ -1438,8 +1438,8 @@ else if ($action == 'down' && $user->rights->facture->creer) {
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -1449,7 +1449,7 @@ else if ($action == 'down' && $user->rights->facture->creer) {
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
facture_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); facture_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $object->id . '#' . $_GET ['rowid']); header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $object->id . '#' . $_GET ['rowid']);
exit(); exit();
} }
@ -1608,7 +1608,7 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
// This avoid sending mail twice if going out and then back to page // This avoid sending mail twice if going out and then back to page
$mesg = $langs->trans('MailSuccessfulySent', $mailfile->getValidAddress($from, 2), $mailfile->getValidAddress($sendto, 2)); $mesg = $langs->trans('MailSuccessfulySent', $mailfile->getValidAddress($from, 2), $mailfile->getValidAddress($sendto, 2));
setEventMessage($mesg); setEventMessage($mesg);
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $object->id); header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $object->id);
exit(); exit();
} }
} else { } else {
@ -1715,7 +1715,7 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->facture-
} }
if ($result >= 0) { if ($result >= 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . "?id=" . $object->id); header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id);
exit(); exit();
} else { } else {
if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
@ -1742,7 +1742,7 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->facture-
$result = $object->delete_contact($lineid); $result = $object->delete_contact($lineid);
if ($result >= 0) { if ($result >= 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . "?id=" . $object->id); header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id);
exit(); exit();
} else { } else {
dol_print_error($db); dol_print_error($db);
@ -1889,7 +1889,7 @@ if ($action == 'create')
print ajax_combobox('fac_avoir'); print ajax_combobox('fac_avoir');
} }
print '<form name="add" action="' . $_SERVER ["PHP_SELF"] . '" method="POST">'; print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="action" value="add">'; print '<input type="hidden" name="action" value="add">';
if ($soc->id > 0) print '<input type="hidden" name="socid" value="' . $soc->id . '">' . "\n"; if ($soc->id > 0) print '<input type="hidden" name="socid" value="' . $soc->id . '">' . "\n";
@ -2160,17 +2160,17 @@ if ($action == 'create')
// Discounts for third party // Discounts for third party
print '<tr><td>' . $langs->trans('Discounts') . '</td><td colspan="2">'; print '<tr><td>' . $langs->trans('Discounts') . '</td><td colspan="2">';
if ($soc->remise_percent) if ($soc->remise_percent)
print $langs->trans("CompanyHasRelativeDiscount", '<a href="' . DOL_URL_ROOT . '/comm/remise.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER ["PHP_SELF"] . '?socid=' . $soc->id . '&action=' . $action . '&origin=' . GETPOST('origin') . '&originid=' . GETPOST('originid')) . '">' . $soc->remise_percent . '</a>'); print $langs->trans("CompanyHasRelativeDiscount", '<a href="' . DOL_URL_ROOT . '/comm/remise.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER["PHP_SELF"] . '?socid=' . $soc->id . '&action=' . $action . '&origin=' . GETPOST('origin') . '&originid=' . GETPOST('originid')) . '">' . $soc->remise_percent . '</a>');
else else
print $langs->trans("CompanyHasNoRelativeDiscount"); print $langs->trans("CompanyHasNoRelativeDiscount");
print ' <a href="' . DOL_URL_ROOT . '/comm/remise.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER ["PHP_SELF"] . '?socid=' . $soc->id . '&action=' . $action . '&origin=' . GETPOST('origin') . '&originid=' . GETPOST('originid')) . '">(' . $langs->trans("EditRelativeDiscount") . ')</a>'; print ' <a href="' . DOL_URL_ROOT . '/comm/remise.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER["PHP_SELF"] . '?socid=' . $soc->id . '&action=' . $action . '&origin=' . GETPOST('origin') . '&originid=' . GETPOST('originid')) . '">(' . $langs->trans("EditRelativeDiscount") . ')</a>';
print '. '; print '. ';
print '<br>'; print '<br>';
if ($absolute_discount) if ($absolute_discount)
print $langs->trans("CompanyHasAbsoluteDiscount", '<a href="' . DOL_URL_ROOT . '/comm/remx.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER ["PHP_SELF"] . '?socid=' . $soc->id . '&action=' . $action . '&origin=' . GETPOST('origin') . '&originid=' . GETPOST('originid')) . '">' . price($absolute_discount) . '</a>', $langs->trans("Currency" . $conf->currency)); print $langs->trans("CompanyHasAbsoluteDiscount", '<a href="' . DOL_URL_ROOT . '/comm/remx.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER["PHP_SELF"] . '?socid=' . $soc->id . '&action=' . $action . '&origin=' . GETPOST('origin') . '&originid=' . GETPOST('originid')) . '">' . price($absolute_discount) . '</a>', $langs->trans("Currency" . $conf->currency));
else else
print $langs->trans("CompanyHasNoAbsoluteDiscount"); print $langs->trans("CompanyHasNoAbsoluteDiscount");
print ' <a href="' . DOL_URL_ROOT . '/comm/remx.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER ["PHP_SELF"] . '?socid=' . $soc->id . '&action=' . $action . '&origin=' . GETPOST('origin') . '&originid=' . GETPOST('originid')) . '">(' . $langs->trans("EditGlobalDiscounts") . ')</a>'; print ' <a href="' . DOL_URL_ROOT . '/comm/remx.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER["PHP_SELF"] . '?socid=' . $soc->id . '&action=' . $action . '&origin=' . GETPOST('origin') . '&originid=' . GETPOST('originid')) . '">(' . $langs->trans("EditGlobalDiscounts") . ')</a>';
print '.'; print '.';
print '</td></tr>'; print '</td></tr>';
} }
@ -2426,7 +2426,7 @@ if ($action == 'create')
// Confirmation de la conversion de l'avoir en reduc // Confirmation de la conversion de l'avoir en reduc
if ($action == 'converttoreduc') { if ($action == 'converttoreduc') {
$text = $langs->trans('ConfirmConvertToReduc'); $text = $langs->trans('ConfirmConvertToReduc');
$formconfirm = $form->formconfirm($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $langs->trans('ConvertToReduc'), $text, 'confirm_converttoreduc', '', "yes", 2); $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $langs->trans('ConvertToReduc'), $text, 'confirm_converttoreduc', '', "yes", 2);
} }
// Confirmation to delete invoice // Confirmation to delete invoice
@ -2453,9 +2453,9 @@ if ($action == 'create')
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' // array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value'
// => 1), // => 1),
array('type' => 'other','name' => 'idwarehouse','label' => $label,'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1, 0, 0, $langs->trans("NoStockAction")))); array('type' => 'other','name' => 'idwarehouse','label' => $label,'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1, 0, 0, $langs->trans("NoStockAction"))));
$formconfirm = $form->formconfirm($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $langs->trans('DeleteBill'), $text, 'confirm_delete', $formquestion, "yes", 1); $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $langs->trans('DeleteBill'), $text, 'confirm_delete', $formquestion, "yes", 1);
} else { } else {
$formconfirm = $form->formconfirm($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $langs->trans('DeleteBill'), $text, 'confirm_delete', '', '', 1); $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $langs->trans('DeleteBill'), $text, 'confirm_delete', '', '', 1);
} }
} }
@ -2517,7 +2517,7 @@ if ($action == 'create')
{ {
$text .= '<br>' . img_warning() . ' ' . $langs->trans("ErrorInvoiceOfThisTypeMustBePositive"); $text .= '<br>' . img_warning() . ' ' . $langs->trans("ErrorInvoiceOfThisTypeMustBePositive");
} }
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?facid=' . $object->id, $langs->trans('ValidateBill'), $text, 'confirm_valid', $formquestion, (($object->type != Facture::TYPE_CREDIT_NOTE && $object->total_ttc < 0) ? "no" : "yes"), ($conf->notification->enabled ? 0 : 2)); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?facid=' . $object->id, $langs->trans('ValidateBill'), $text, 'confirm_valid', $formquestion, (($object->type != Facture::TYPE_CREDIT_NOTE && $object->total_ttc < 0) ? "no" : "yes"), ($conf->notification->enabled ? 0 : 2));
} }
// Confirm back to draft status // Confirm back to draft status
@ -2554,12 +2554,12 @@ if ($action == 'create')
array('type' => 'other','name' => 'idwarehouse','label' => $label,'value' => $value)); array('type' => 'other','name' => 'idwarehouse','label' => $label,'value' => $value));
} }
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?facid=' . $object->id, $langs->trans('UnvalidateBill'), $text, 'confirm_modif', $formquestion, "yes", 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?facid=' . $object->id, $langs->trans('UnvalidateBill'), $text, 'confirm_modif', $formquestion, "yes", 1);
} }
// Confirmation du classement paye // Confirmation du classement paye
if ($action == 'paid' && $resteapayer <= 0) { if ($action == 'paid' && $resteapayer <= 0) {
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?facid=' . $object->id, $langs->trans('ClassifyPaid'), $langs->trans('ConfirmClassifyPaidBill', $object->ref), 'confirm_paid', '', "yes", 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?facid=' . $object->id, $langs->trans('ClassifyPaid'), $langs->trans('ConfirmClassifyPaidBill', $object->ref), 'confirm_paid', '', "yes", 1);
} }
if ($action == 'paid' && $resteapayer > 0) { if ($action == 'paid' && $resteapayer > 0) {
// Code // Code
@ -2588,7 +2588,7 @@ if ($action == 'create')
// Cree un tableau formulaire // Cree un tableau formulaire
$formquestion = array('text' => $langs->trans("ConfirmClassifyPaidPartiallyQuestion"),array('type' => 'radio','name' => 'close_code','label' => $langs->trans("Reason"),'values' => $arrayreasons),array('type' => 'text','name' => 'close_note','label' => $langs->trans("Comment"),'value' => '','size' => '100')); $formquestion = array('text' => $langs->trans("ConfirmClassifyPaidPartiallyQuestion"),array('type' => 'radio','name' => 'close_code','label' => $langs->trans("Reason"),'values' => $arrayreasons),array('type' => 'text','name' => 'close_note','label' => $langs->trans("Comment"),'value' => '','size' => '100'));
// Paiement incomplet. On demande si motif = escompte ou autre // Paiement incomplet. On demande si motif = escompte ou autre
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?facid=' . $object->id, $langs->trans('ClassifyPaid'), $langs->trans('ConfirmClassifyPaidPartially', $object->ref), 'confirm_paid_partially', $formquestion, "yes"); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?facid=' . $object->id, $langs->trans('ClassifyPaid'), $langs->trans('ConfirmClassifyPaidPartially', $object->ref), 'confirm_paid_partially', $formquestion, "yes");
} }
// Confirmation du classement abandonne // Confirmation du classement abandonne
@ -2619,13 +2619,13 @@ if ($action == 'create')
// Cree un tableau formulaire // Cree un tableau formulaire
$formquestion = array('text' => $langs->trans("ConfirmCancelBillQuestion"),array('type' => 'radio','name' => 'close_code','label' => $langs->trans("Reason"),'values' => $arrayreasons),array('type' => 'text','name' => 'close_note','label' => $langs->trans("Comment"),'value' => '','size' => '100')); $formquestion = array('text' => $langs->trans("ConfirmCancelBillQuestion"),array('type' => 'radio','name' => 'close_code','label' => $langs->trans("Reason"),'values' => $arrayreasons),array('type' => 'text','name' => 'close_note','label' => $langs->trans("Comment"),'value' => '','size' => '100'));
$formconfirm = $form->formconfirm($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $langs->trans('CancelBill'), $langs->trans('ConfirmCancelBill', $object->ref), 'confirm_canceled', $formquestion, "yes"); $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $langs->trans('CancelBill'), $langs->trans('ConfirmCancelBill', $object->ref), 'confirm_canceled', $formquestion, "yes");
} }
} }
// Confirmation de la suppression d'une ligne produit // Confirmation de la suppression d'une ligne produit
if ($action == 'ask_deleteline') { if ($action == 'ask_deleteline') {
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?facid=' . $object->id . '&lineid=' . $lineid, $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 'no', 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?facid=' . $object->id . '&lineid=' . $lineid, $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 'no', 1);
} }
// Clone confirmation // Clone confirmation
@ -2636,7 +2636,7 @@ if ($action == 'create')
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1) // array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1)
array('type' => 'other','name' => 'socid','label' => $langs->trans("SelectThirdParty"),'value' => $form->select_company('', 'socid', '(s.client=1 OR s.client=2 OR s.client=3)', 1))); array('type' => 'other','name' => 'socid','label' => $langs->trans("SelectThirdParty"),'value' => $form->select_company('', 'socid', '(s.client=1 OR s.client=2 OR s.client=3)', 1)));
// Paiement incomplet. On demande si motif = escompte ou autre // Paiement incomplet. On demande si motif = escompte ou autre
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?facid=' . $object->id, $langs->trans('CloneInvoice'), $langs->trans('ConfirmCloneInvoice', $object->ref), 'confirm_clone', $formquestion, 'yes', 1); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?facid=' . $object->id, $langs->trans('CloneInvoice'), $langs->trans('ConfirmCloneInvoice', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
} }
if (! $formconfirm) { if (! $formconfirm) {
@ -2675,12 +2675,12 @@ if ($action == 'create')
print $langs->trans('RefCustomer'); print $langs->trans('RefCustomer');
print '</td>'; print '</td>';
if ($action != 'refclient' && ! empty($object->brouillon)) if ($action != 'refclient' && ! empty($object->brouillon))
print '<td align="right"><a href="' . $_SERVER ['PHP_SELF'] . '?action=refclient&amp;id=' . $object->id . '">' . img_edit($langs->trans('Modify')) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=refclient&amp;id=' . $object->id . '">' . img_edit($langs->trans('Modify')) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td>'; print '</td>';
print '<td colspan="5">'; print '<td colspan="5">';
if ($user->rights->facture->creer && $action == 'refclient') { if ($user->rights->facture->creer && $action == 'refclient') {
print '<form action="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '" method="post">'; print '<form action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="post">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="action" value="set_ref_client">'; print '<input type="hidden" name="action" value="set_ref_client">';
print '<input type="text" class="flat" size="20" name="ref_client" value="' . $object->ref_client . '">'; print '<input type="text" class="flat" size="20" name="ref_client" value="' . $object->ref_client . '">';
@ -2697,11 +2697,11 @@ if ($action == 'create')
print '<tr><td>' . $langs->trans('Company') . '</td>'; print '<tr><td>' . $langs->trans('Company') . '</td>';
print '</td><td colspan="5">'; print '</td><td colspan="5">';
if (! empty($conf->global->FACTURE_CHANGE_THIRDPARTY) && $action != 'editthirdparty' && $object->brouillon && $user->rights->facture->creer) if (! empty($conf->global->FACTURE_CHANGE_THIRDPARTY) && $action != 'editthirdparty' && $object->brouillon && $user->rights->facture->creer)
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editthirdparty&amp;facid=' . $object->id . '">' . img_edit($langs->trans('SetLinkToThirdParty'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editthirdparty&amp;facid=' . $object->id . '">' . img_edit($langs->trans('SetLinkToThirdParty'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="5">'; print '</td><td colspan="5">';
if ($action == 'editthirdparty') { if ($action == 'editthirdparty') {
$form->form_thirdparty($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $object->socid, 'socid'); $form->form_thirdparty($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->socid, 'socid');
} else { } else {
print ' &nbsp;' . $soc->getNomUrl(1, 'compta'); print ' &nbsp;' . $soc->getNomUrl(1, 'compta');
print ' &nbsp; '; print ' &nbsp; ';
@ -2756,9 +2756,9 @@ if ($action == 'create')
print '</td></tr>'; print '</td></tr>';
// Relative and absolute discounts // Relative and absolute discounts
$addrelativediscount = '<a href="' . DOL_URL_ROOT . '/comm/remise.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER ["PHP_SELF"]) . '?facid=' . $object->id . '">' . $langs->trans("EditRelativeDiscounts") . '</a>'; $addrelativediscount = '<a href="' . DOL_URL_ROOT . '/comm/remise.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER["PHP_SELF"]) . '?facid=' . $object->id . '">' . $langs->trans("EditRelativeDiscounts") . '</a>';
$addabsolutediscount = '<a href="' . DOL_URL_ROOT . '/comm/remx.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER ["PHP_SELF"]) . '?facid=' . $object->id . '">' . $langs->trans("EditGlobalDiscounts") . '</a>'; $addabsolutediscount = '<a href="' . DOL_URL_ROOT . '/comm/remx.php?id=' . $soc->id . '&backtopage=' . urlencode($_SERVER["PHP_SELF"]) . '?facid=' . $object->id . '">' . $langs->trans("EditGlobalDiscounts") . '</a>';
$addcreditnote = '<a href="' . DOL_URL_ROOT . '/compta/facture.php?action=create&socid=' . $soc->id . '&type=2&backtopage=' . urlencode($_SERVER ["PHP_SELF"]) . '?facid=' . $object->id . '">' . $langs->trans("AddCreditNote") . '</a>'; $addcreditnote = '<a href="' . DOL_URL_ROOT . '/compta/facture.php?action=create&socid=' . $soc->id . '&type=2&backtopage=' . urlencode($_SERVER["PHP_SELF"]) . '?facid=' . $object->id . '">' . $langs->trans("AddCreditNote") . '</a>';
print '<tr><td>' . $langs->trans('Discounts'); print '<tr><td>' . $langs->trans('Discounts');
print '</td><td colspan="5">'; print '</td><td colspan="5">';
@ -2787,7 +2787,7 @@ if ($action == 'create')
} else { } else {
// Remise dispo de type remise fixe (not credit note) // Remise dispo de type remise fixe (not credit note)
print '<br>'; print '<br>';
$form->form_remise_dispo($_SERVER ["PHP_SELF"] . '?facid=' . $object->id, GETPOST('discountid'), 'remise_id', $soc->id, $absolute_discount, $filterabsolutediscount, $resteapayer, ' (' . $addabsolutediscount . ')'); $form->form_remise_dispo($_SERVER["PHP_SELF"] . '?facid=' . $object->id, GETPOST('discountid'), 'remise_id', $soc->id, $absolute_discount, $filterabsolutediscount, $resteapayer, ' (' . $addabsolutediscount . ')');
} }
} else { } else {
if ($absolute_creditnote > 0) // If not, link will be added later if ($absolute_creditnote > 0) // If not, link will be added later
@ -2814,7 +2814,7 @@ if ($action == 'create')
print '<br>'; print '<br>';
// $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, // $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote,
// $filtercreditnote, $resteapayer); // $filtercreditnote, $resteapayer);
$form->form_remise_dispo($_SERVER ["PHP_SELF"] . '?facid=' . $object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filtercreditnote, 0); // We $form->form_remise_dispo($_SERVER["PHP_SELF"] . '?facid=' . $object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filtercreditnote, 0); // We
// must // must
// allow // allow
// credit // credit
@ -2848,13 +2848,13 @@ if ($action == 'create')
print $langs->trans('Date'); print $langs->trans('Date');
print '</td>'; print '</td>';
if ($object->type != Facture::TYPE_CREDIT_NOTE && $action != 'editinvoicedate' && ! empty($object->brouillon) && $user->rights->facture->creer) if ($object->type != Facture::TYPE_CREDIT_NOTE && $action != 'editinvoicedate' && ! empty($object->brouillon) && $user->rights->facture->creer)
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editinvoicedate&amp;facid=' . $object->id . '">' . img_edit($langs->trans('SetDate'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editinvoicedate&amp;facid=' . $object->id . '">' . img_edit($langs->trans('SetDate'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($object->type != Facture::TYPE_CREDIT_NOTE) { if ($object->type != Facture::TYPE_CREDIT_NOTE) {
if ($action == 'editinvoicedate') { if ($action == 'editinvoicedate') {
$form->form_date($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $object->date, 'invoicedate'); $form->form_date($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->date, 'invoicedate');
} else { } else {
print dol_print_date($object->date, 'daytext'); print dol_print_date($object->date, 'daytext');
} }
@ -2984,7 +2984,7 @@ if ($action == 'create')
print ' :</td>'; print ' :</td>';
print '<td align="right">' . price($obj->amount_ttc) . '</td>'; print '<td align="right">' . price($obj->amount_ttc) . '</td>';
print '<td align="right">'; print '<td align="right">';
print '<a href="' . $_SERVER ["PHP_SELF"] . '?facid=' . $object->id . '&action=unlinkdiscount&discountid=' . $obj->rowid . '">' . img_delete() . '</a>'; print '<a href="' . $_SERVER["PHP_SELF"] . '?facid=' . $object->id . '&action=unlinkdiscount&discountid=' . $obj->rowid . '">' . img_delete() . '</a>';
print '</td></tr>'; print '</td></tr>';
$i ++; $i ++;
if ($invoice->type == Facture::TYPE_CREDIT_NOTE) if ($invoice->type == Facture::TYPE_CREDIT_NOTE)
@ -3069,7 +3069,8 @@ if ($action == 'create')
print '</table>'; print '</table>';
// Margin Infos // Margin Infos
if (! empty($conf->margin->enabled)) { if (! empty($conf->margin->enabled))
{
print '<br>'; print '<br>';
$object->displayMarginInfos($object->statut > 0); $object->displayMarginInfos($object->statut > 0);
} }
@ -3082,14 +3083,14 @@ if ($action == 'create')
print $langs->trans('PaymentConditionsShort'); print $langs->trans('PaymentConditionsShort');
print '</td>'; print '</td>';
if ($object->type != Facture::TYPE_CREDIT_NOTE && $action != 'editconditions' && ! empty($object->brouillon) && $user->rights->facture->creer) if ($object->type != Facture::TYPE_CREDIT_NOTE && $action != 'editconditions' && ! empty($object->brouillon) && $user->rights->facture->creer)
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editconditions&amp;facid=' . $object->id . '">' . img_edit($langs->trans('SetConditions'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editconditions&amp;facid=' . $object->id . '">' . img_edit($langs->trans('SetConditions'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($object->type != Facture::TYPE_CREDIT_NOTE) { if ($object->type != Facture::TYPE_CREDIT_NOTE) {
if ($action == 'editconditions') { if ($action == 'editconditions') {
$form->form_conditions_reglement($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $object->cond_reglement_id, 'cond_reglement_id'); $form->form_conditions_reglement($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->cond_reglement_id, 'cond_reglement_id');
} else { } else {
$form->form_conditions_reglement($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $object->cond_reglement_id, 'none'); $form->form_conditions_reglement($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->cond_reglement_id, 'none');
} }
} else { } else {
print '&nbsp;'; print '&nbsp;';
@ -3102,12 +3103,12 @@ if ($action == 'create')
print $langs->trans('DateMaxPayment'); print $langs->trans('DateMaxPayment');
print '</td>'; print '</td>';
if ($object->type != Facture::TYPE_CREDIT_NOTE && $action != 'editpaymentterm' && ! empty($object->brouillon) && $user->rights->facture->creer) if ($object->type != Facture::TYPE_CREDIT_NOTE && $action != 'editpaymentterm' && ! empty($object->brouillon) && $user->rights->facture->creer)
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editpaymentterm&amp;facid=' . $object->id . '">' . img_edit($langs->trans('SetDate'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editpaymentterm&amp;facid=' . $object->id . '">' . img_edit($langs->trans('SetDate'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($object->type != Facture::TYPE_CREDIT_NOTE) { if ($object->type != Facture::TYPE_CREDIT_NOTE) {
if ($action == 'editpaymentterm') { if ($action == 'editpaymentterm') {
$form->form_date($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $object->date_lim_reglement, 'paymentterm'); $form->form_date($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->date_lim_reglement, 'paymentterm');
} else { } else {
print dol_print_date($object->date_lim_reglement, 'daytext'); print dol_print_date($object->date_lim_reglement, 'daytext');
if ($object->date_lim_reglement < ($now - $conf->facture->client->warning_delay) && ! $object->paye && $object->statut == 1 && ! isset($object->am)) if ($object->date_lim_reglement < ($now - $conf->facture->client->warning_delay) && ! $object->paye && $object->statut == 1 && ! isset($object->am))
@ -3124,13 +3125,13 @@ if ($action == 'create')
print $langs->trans('PaymentMode'); print $langs->trans('PaymentMode');
print '</td>'; print '</td>';
if ($action != 'editmode' && ! empty($object->brouillon) && $user->rights->facture->creer) if ($action != 'editmode' && ! empty($object->brouillon) && $user->rights->facture->creer)
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editmode&amp;facid=' . $object->id . '">' . img_edit($langs->trans('SetMode'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editmode&amp;facid=' . $object->id . '">' . img_edit($langs->trans('SetMode'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'editmode') { if ($action == 'editmode') {
$form->form_modes_reglement($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id'); $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id');
} else { } else {
$form->form_modes_reglement($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $object->mode_reglement_id, 'none'); $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->mode_reglement_id, 'none');
} }
print '</td></tr>'; print '</td></tr>';
@ -3160,11 +3161,11 @@ if ($action == 'create')
print $langs->trans('RevenueStamp'); print $langs->trans('RevenueStamp');
print '</td>'; print '</td>';
if ($action != 'editrevenuestamp' && ! empty($object->brouillon) && $user->rights->facture->creer) if ($action != 'editrevenuestamp' && ! empty($object->brouillon) && $user->rights->facture->creer)
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=editrevenuestamp&amp;facid=' . $object->id . '">' . img_edit($langs->trans('SetRevenuStamp'), 1) . '</a></td>'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editrevenuestamp&amp;facid=' . $object->id . '">' . img_edit($langs->trans('SetRevenuStamp'), 1) . '</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3" align="right">'; print '</td><td colspan="3" align="right">';
if ($action == 'editrevenuestamp') { if ($action == 'editrevenuestamp') {
print '<form action="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . '" method="post">'; print '<form action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="post">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="action" value="setrevenuestamp">'; print '<input type="hidden" name="action" value="setrevenuestamp">';
print $formother->select_revenue_stamp(GETPOST('revenuestamp'), 'revenuestamp', $mysoc->country_code); print $formother->select_revenue_stamp(GETPOST('revenuestamp'), 'revenuestamp', $mysoc->country_code);
@ -3194,7 +3195,7 @@ if ($action == 'create')
print $langs->trans('Project'); print $langs->trans('Project');
print '</td>'; print '</td>';
if ($action != 'classify') { if ($action != 'classify') {
print '<td align="right"><a href="' . $_SERVER ["PHP_SELF"] . '?action=classify&amp;facid=' . $object->id . '">'; print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=classify&amp;facid=' . $object->id . '">';
print img_edit($langs->trans('SetProject'), 1); print img_edit($langs->trans('SetProject'), 1);
print '</a></td>'; print '</a></td>';
} }
@ -3202,9 +3203,9 @@ if ($action == 'create')
print '</td><td colspan="3">'; print '</td><td colspan="3">';
if ($action == 'classify') { if ($action == 'classify') {
$form->form_project($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $object->socid, $object->fk_project, 'projectid'); $form->form_project($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->socid, $object->fk_project, 'projectid');
} else { } else {
$form->form_project($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $object->socid, $object->fk_project, 'none'); $form->form_project($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->socid, $object->fk_project, 'none');
} }
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
@ -3236,7 +3237,7 @@ if ($action == 'create')
} }
if ($action == 'edit_extras' && $user->rights->facture->creer && GETPOST('attribute') == $key) { if ($action == 'edit_extras' && $user->rights->facture->creer && GETPOST('attribute') == $key) {
print '<form enctype="multipart/form-data" action="' . $_SERVER ["PHP_SELF"] . '" method="post" name="formsoc">'; print '<form enctype="multipart/form-data" action="' . $_SERVER["PHP_SELF"] . '" method="post" name="formsoc">';
print '<input type="hidden" name="action" value="update_extras">'; print '<input type="hidden" name="action" value="update_extras">';
print '<input type="hidden" name="attribute" value="' . $key . '">'; print '<input type="hidden" name="attribute" value="' . $key . '">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
@ -3249,7 +3250,7 @@ if ($action == 'create')
} else { } else {
print $extrafields->showOutputField($key, $value); print $extrafields->showOutputField($key, $value);
if ($object->statut == 0 && $user->rights->facture->creer) if ($object->statut == 0 && $user->rights->facture->creer)
print '<a href="' . $_SERVER ['PHP_SELF'] . '?id=' . $object->id . '&action=edit_extras&attribute=' . $key . '">' . img_picto('', 'edit') . ' ' . $langs->trans('Modify') . '</a>'; print '<a href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=edit_extras&attribute=' . $key . '">' . img_picto('', 'edit') . ' ' . $langs->trans('Modify') . '</a>';
} }
print '</td></tr>' . "\n"; print '</td></tr>' . "\n";
} }
@ -3273,7 +3274,7 @@ if ($action == 'create')
// Lines // Lines
$result = $object->getLinesArray(); $result = $object->getLinesArray();
print ' <form name="addproduct" id="addproduct" action="' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id . (($action != 'editline') ? '#add' : '#line_' . GETPOST('lineid')) . '" method="POST"> print ' <form name="addproduct" id="addproduct" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . (($action != 'editline') ? '#add' : '#line_' . GETPOST('lineid')) . '" method="POST">
<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '"> <input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateligne') . '"> <input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateligne') . '">
<input type="hidden" name="mode" value=""> <input type="hidden" name="mode" value="">
@ -3330,7 +3331,7 @@ if ($action == 'create')
if ($resteapayer == $object->total_ttc && $object->paye == 0 && $ventilExportCompta == 0) { if ($resteapayer == $object->total_ttc && $object->paye == 0 && $ventilExportCompta == 0) {
if (! $objectidnext) { if (! $objectidnext) {
if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $user->rights->facture->valider) || $user->rights->facture->invoice_advance->unvalidate) { if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $user->rights->facture->valider) || $user->rights->facture->invoice_advance->unvalidate) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=modif">' . $langs->trans('Modify') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=modif">' . $langs->trans('Modify') . '</a></div>';
} else { } else {
print '<div class="inline-block divButAction"><span class="butActionRefused" title="' . $langs->trans("NotEnoughPermissions") . '">' . $langs->trans('Modify') . '</span></div>'; print '<div class="inline-block divButAction"><span class="butActionRefused" title="' . $langs->trans("NotEnoughPermissions") . '">' . $langs->trans('Modify') . '</span></div>';
} }
@ -3349,7 +3350,7 @@ if ($action == 'create')
{ {
if (! $objectidnext && $object->close_code != 'replaced') // Not replaced by another invoice if (! $objectidnext && $object->close_code != 'replaced') // Not replaced by another invoice
{ {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=reopen">' . $langs->trans('ReOpen') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=reopen">' . $langs->trans('ReOpen') . '</a></div>';
} else { } else {
print '<div class="inline-block divButAction"><span class="butActionRefused" title="' . $langs->trans("DisabledBecauseReplacedInvoice") . '">' . $langs->trans('ReOpen') . '</span></div>'; print '<div class="inline-block divButAction"><span class="butActionRefused" title="' . $langs->trans("DisabledBecauseReplacedInvoice") . '">' . $langs->trans('ReOpen') . '</span></div>';
} }
@ -3358,7 +3359,7 @@ if ($action == 'create')
// Validate // Validate
if ($object->statut == 0 && count($object->lines) > 0 && ((($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_REPLACEMENT || $object->type == Facture::TYPE_DEPOSIT || $object->type == Facture::TYPE_PROFORMA) && (! empty($conf->global->FACTURE_ENABLE_NEGATIVE) || $object->total_ttc >= 0)) || ($object->type == Facture::TYPE_CREDIT_NOTE && $object->total_ttc <= 0))) { if ($object->statut == 0 && count($object->lines) > 0 && ((($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_REPLACEMENT || $object->type == Facture::TYPE_DEPOSIT || $object->type == Facture::TYPE_PROFORMA) && (! empty($conf->global->FACTURE_ENABLE_NEGATIVE) || $object->total_ttc >= 0)) || ($object->type == Facture::TYPE_CREDIT_NOTE && $object->total_ttc <= 0))) {
if ($user->rights->facture->valider) { if ($user->rights->facture->valider) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ["PHP_SELF"] . '?facid=' . $object->id . '&amp;action=valid">' . $langs->trans('Validate') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?facid=' . $object->id . '&amp;action=valid">' . $langs->trans('Validate') . '</a></div>';
} }
} }
@ -3368,7 +3369,7 @@ if ($action == 'create')
print '<div class="inline-block divButAction"><span class="butActionRefused" title="' . $langs->trans("DisabledBecauseReplacedInvoice") . '">' . $langs->trans('SendByMail') . '</span></div>'; print '<div class="inline-block divButAction"><span class="butActionRefused" title="' . $langs->trans("DisabledBecauseReplacedInvoice") . '">' . $langs->trans('SendByMail') . '</span></div>';
} else { } else {
if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->facture->invoice_advance->send) { if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->facture->invoice_advance->send) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=presend&amp;mode=init">' . $langs->trans('SendByMail') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=presend&amp;mode=init">' . $langs->trans('SendByMail') . '</a></div>';
} else } else
print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">' . $langs->trans('SendByMail') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">' . $langs->trans('SendByMail') . '</a></div>';
} }
@ -3381,7 +3382,7 @@ if ($action == 'create')
print '<div class="inline-block divButAction"><span class="butActionRefused" title="' . $langs->trans("DisabledBecauseReplacedInvoice") . '">' . $langs->trans('SendRemindByMail') . '</span></div>'; print '<div class="inline-block divButAction"><span class="butActionRefused" title="' . $langs->trans("DisabledBecauseReplacedInvoice") . '">' . $langs->trans('SendRemindByMail') . '</span></div>';
} else { } else {
if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->facture->invoice_advance->send) { if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->facture->invoice_advance->send) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=prerelance&amp;mode=init">' . $langs->trans('SendRemindByMail') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=prerelance&amp;mode=init">' . $langs->trans('SendRemindByMail') . '</a></div>';
} else } else
print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">' . $langs->trans('SendRemindByMail') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">' . $langs->trans('SendRemindByMail') . '</a></div>';
} }
@ -3418,7 +3419,7 @@ if ($action == 'create')
// For credit note // For credit note
if ($object->type == Facture::TYPE_CREDIT_NOTE && $object->statut == 1 && $object->paye == 0 && $user->rights->facture->creer && $object->getSommePaiement() == 0) { if ($object->type == Facture::TYPE_CREDIT_NOTE && $object->statut == 1 && $object->paye == 0 && $user->rights->facture->creer && $object->getSommePaiement() == 0) {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ["PHP_SELF"] . '?facid=' . $object->id . '&amp;action=converttoreduc">' . $langs->trans('ConvertToReduc') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?facid=' . $object->id . '&amp;action=converttoreduc">' . $langs->trans('ConvertToReduc') . '</a></div>';
} }
// For deposit invoice // For deposit invoice
if ($object->type == Facture::TYPE_DEPOSIT && $object->paye == 1 && $resteapayer == 0 && $user->rights->facture->creer && empty($discount->id)) if ($object->type == Facture::TYPE_DEPOSIT && $object->paye == 1 && $resteapayer == 0 && $user->rights->facture->creer && empty($discount->id))
@ -3441,14 +3442,14 @@ if ($action == 'create')
if ($totalpaye > 0 || $totalcreditnotes > 0) if ($totalpaye > 0 || $totalcreditnotes > 0)
{ {
// If one payment or one credit note was linked to this invoice // If one payment or one credit note was linked to this invoice
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=paid">' . $langs->trans('ClassifyPaidPartially') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=paid">' . $langs->trans('ClassifyPaidPartially') . '</a></div>';
} }
else else
{ {
if ($objectidnext) { if ($objectidnext) {
print '<div class="inline-block divButAction"><span class="butActionRefused" title="' . $langs->trans("DisabledBecauseReplacedInvoice") . '">' . $langs->trans('ClassifyCanceled') . '</span></div>'; print '<div class="inline-block divButAction"><span class="butActionRefused" title="' . $langs->trans("DisabledBecauseReplacedInvoice") . '">' . $langs->trans('ClassifyCanceled') . '</span></div>';
} else { } else {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=canceled">' . $langs->trans('ClassifyCanceled') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=canceled">' . $langs->trans('ClassifyCanceled') . '</a></div>';
} }
} }
} }
@ -3456,7 +3457,7 @@ if ($action == 'create')
// Clone // Clone
if (($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_DEPOSIT || $object->type == Facture::TYPE_PROFORMA) && $user->rights->facture->creer) if (($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_DEPOSIT || $object->type == Facture::TYPE_PROFORMA) && $user->rights->facture->creer)
{ {
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER ['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=clone&amp;object=invoice">' . $langs->trans("ToClone") . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?facid=' . $object->id . '&amp;action=clone&amp;object=invoice">' . $langs->trans("ToClone") . '</a></div>';
} }
// Clone as predefined // Clone as predefined
@ -3478,7 +3479,7 @@ if ($action == 'create')
} elseif ($object->getSommePaiement()) { } elseif ($object->getSommePaiement()) {
print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="' . $langs->trans("DisabledBecausePayments") . '">' . $langs->trans('Delete') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="' . $langs->trans("DisabledBecausePayments") . '">' . $langs->trans('Delete') . '</a></div>';
} else { } else {
print '<div class="inline-block divButAction"><a class="butActionDelete" href="' . $_SERVER ["PHP_SELF"] . '?facid=' . $object->id . '&amp;action=delete">' . $langs->trans('Delete') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butActionDelete" href="' . $_SERVER["PHP_SELF"] . '?facid=' . $object->id . '&amp;action=delete">' . $langs->trans('Delete') . '</a></div>';
} }
} else { } else {
print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="' . $langs->trans("NotAllowed") . '">' . $langs->trans('Delete') . '</a></div>'; print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="' . $langs->trans("NotAllowed") . '">' . $langs->trans('Delete') . '</a></div>';
@ -3497,7 +3498,7 @@ if ($action == 'create')
// Documents generes // Documents generes
$filename = dol_sanitizeFileName($object->ref); $filename = dol_sanitizeFileName($object->ref);
$filedir = $conf->facture->dir_output . '/' . dol_sanitizeFileName($object->ref); $filedir = $conf->facture->dir_output . '/' . dol_sanitizeFileName($object->ref);
$urlsource = $_SERVER ['PHP_SELF'] . '?facid=' . $object->id; $urlsource = $_SERVER['PHP_SELF'] . '?facid=' . $object->id;
$genallowed = $user->rights->facture->creer; $genallowed = $user->rights->facture->creer;
$delallowed = $user->rights->facture->supprimer; $delallowed = $user->rights->facture->supprimer;
@ -3602,8 +3603,8 @@ if ($action == 'create')
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang = ''; $newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id'])) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST ['lang_id']; $newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang; $newlang = $object->client->default_lang;
if (! empty($newlang)) { if (! empty($newlang)) {
@ -3680,7 +3681,7 @@ if ($action == 'create')
$formmail->param ['action'] = $action; $formmail->param ['action'] = $action;
$formmail->param ['models'] = $modelmail; $formmail->param ['models'] = $modelmail;
$formmail->param ['facid'] = $object->id; $formmail->param ['facid'] = $object->id;
$formmail->param ['returnurl'] = $_SERVER ["PHP_SELF"] . '?id=' . $object->id; $formmail->param ['returnurl'] = $_SERVER["PHP_SELF"] . '?id=' . $object->id;
// Init list of files // Init list of files
if (GETPOST("mode") == 'init') { if (GETPOST("mode") == 'init') {

View File

@ -617,6 +617,7 @@ class Facture extends CommonInvoice
$this->statut=0; $this->statut=0;
// Clear fields // Clear fields
$this->date = dol_now(); // Date of invoice is set to current date when cloning. // TODO Best is to ask date into confirm box
$this->user_author = $user->id; $this->user_author = $user->id;
$this->user_valid = ''; $this->user_valid = '';
$this->fk_facture_source = 0; $this->fk_facture_source = 0;
@ -3492,7 +3493,7 @@ class FactureLigne extends CommonInvoiceLine
} }
/** /**
* Insert line in database * Insert line into database
* *
* @param int $notrigger 1 no triggers * @param int $notrigger 1 no triggers
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
@ -3530,7 +3531,21 @@ class FactureLigne extends CommonInvoiceLine
} }
// Check parameters // Check parameters
if ($this->product_type < 0) return -1; if ($this->product_type < 0)
{
$this->error='ErrorProductTypeMustBe0orMore';
return -1;
}
if (! empty($this->fk_product))
{
// Check product exists
$result=Product::isExistingObject('product', $this->fk_product);
if ($result <= 0)
{
$this->error='ErrorProductIdDoesNotExists';
return -1;
}
}
$this->db->begin(); $this->db->begin();

View File

@ -428,7 +428,7 @@ if ($object->id > 0)
/* /*
* Withdrawal request * Withdrawal request
*/ */
$sql = "SELECT pfd.rowid, pfd.traite, pfd.date_demande as date_demande"; $sql = "SELECT pfd.rowid, pfd.traite, pfd.date_demande as date_demande";
$sql .= " , pfd.date_traite as date_traite"; $sql .= " , pfd.date_traite as date_traite";
@ -462,12 +462,13 @@ if ($object->id > 0)
} }
else else
{ {
print '<a class="butActionRefused" href="#">'.$langs->trans("MakeWithdrawRequest").'</a>'; print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("NotEnoughPermissions")).'">'.$langs->trans("MakeWithdrawRequest").'</a>';
} }
} }
else else
{ {
print '<a class="butActionRefused" href="#">'.$langs->trans("MakeWithdrawRequest").'</a>'; if ($num == 0) print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("AlreadyPayed")).'">'.$langs->trans("MakeWithdrawRequest").'</a>';
else print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("RequestAlreadyDone")).'">'.$langs->trans("MakeWithdrawRequest").'</a>';
} }
print "</div><br>\n"; print "</div><br>\n";

View File

@ -359,20 +359,12 @@ class PaymentSalary extends CommonObject
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)
{ {
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."payment_salary"); // TODO should be called payment_salary $ok=1;
// Start triggers $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."payment_salary");
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
$interface=new Interfaces($this->db);
$result=$interface->run_triggers('PAYMENT_SALARY_CREATE',$this,$user,$langs,$conf);
if ($result < 0) {
$error++; $this->errors=$interface->errors;
}
// End triggers
if ($this->id > 0) if ($this->id > 0)
{ {
$ok=1;
if (! empty($conf->banque->enabled) && ! empty($this->amount)) if (! empty($conf->banque->enabled) && ! empty($this->amount))
{ {
// Insert into llx_bank // Insert into llx_bank
@ -406,42 +398,53 @@ class PaymentSalary extends CommonObject
$ok=0; $ok=0;
} }
// Add link 'payment_salary' in bank_url between payment and bank transaction if ($ok)
$url=DOL_URL_ROOT.'/compta/salaries/fiche.php?id='; {
// Add link 'payment_salary' in bank_url between payment and bank transaction
$url=DOL_URL_ROOT.'/compta/salaries/fiche.php?id=';
$result=$acc->add_url_line($bank_line_id, $this->id, $url, "(SalaryPayment)", "payment_salary");
if ($result <= 0)
{
$this->error=$acc->error;
$ok=0;
}
}
$fuser=new User($this->db);
$fuser->fetch($this->fk_user);
// Add link 'user' in bank_url between operation and bank transaction
$result=$acc->add_url_line(
$bank_line_id,
$this->fk_user,
DOL_URL_ROOT.'/user/fiche.php?id=',
$langs->trans("SalaryPayment").' '.$fuser->getFullName($langs).' '.dol_print_date($this->datesp,'dayrfc').' '.dol_print_date($this->dateep,'dayrfc'),
'(User)',
'user'
);
$result=$acc->add_url_line($bank_line_id, $this->id, $url, "(SalaryPayment)", "payment_salary");
if ($result <= 0) if ($result <= 0)
{ {
$this->error=$acc->error; $this->error=$acc->error;
$ok=0; $ok=0;
} }
// Add link 'user' in bank_url between operation and bank transaction
$linkaddedforthirdparty=array();
foreach ($this->amounts as $key => $value)
{
$sal = new PaymentSalary($this->db);
$sal->fetch($key);
$sal->fetch_user($this->fk_user);
if (! in_array($sal->user->id,$linkaddedforthirdparty)) // Not yet done for this thirdparty
{
$result=$acc->add_url_line(
$bank_line_id,
$sal->user->id,
DOL_URL_ROOT.'/user/fiche.php?id=',
$sal->user->lastname,
'user'
);
if ($result <= 0) dol_print_error($this->db);
$linkaddedforthirdparty[$sal->user->id]=$sal->user->id; // Mark as done for this thirdparty
}
}
} }
// Start triggers
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
$interface=new Interfaces($this->db);
$result=$interface->run_triggers('PAYMENT_SALARY_CREATE',$this,$user,$langs,$conf);
if ($result < 0) {
$error++; $this->errors=$interface->errors;
}
// End triggers
}
else $ok=0;
if ($ok)
{
if ($ok) if ($ok)
{ {
$this->db->commit(); $this->db->commit();

View File

@ -37,14 +37,14 @@ $id=GETPOST("id",'int');
$action=GETPOST('action'); $action=GETPOST('action');
// Security check // Security check
$socid = isset($_GET["socid"])?$_GET["socid"]:''; $socid = GETPOST("socid","int");
if ($user->societe_id) $socid=$user->societe_id; if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'tax', '', '', 'charges'); $result = restrictedArea($user, 'salaries', '', '', '');
$sal = new PaymentSalary($db); $sal = new PaymentSalary($db);
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('taxsalarycard')); $hookmanager->initHooks(array('salarycard'));
@ -78,7 +78,13 @@ if ($action == 'add' && $_POST["cancel"] <> $langs->trans("Cancel"))
$sal->note=GETPOST("note"); $sal->note=GETPOST("note");
$sal->type_payment=GETPOST("paymenttype"); $sal->type_payment=GETPOST("paymenttype");
$sal->num_payment=GETPOST("num_payment"); $sal->num_payment=GETPOST("num_payment");
$sal->fk_user_creat=$user->id;
if (empty($datep) || empty($datesp) || empty($dateep))
{
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Date")),'errors');
$error++;
}
if (empty($sal->fk_user) || $sal->fk_user < 0) if (empty($sal->fk_user) || $sal->fk_user < 0)
{ {
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Employee")),'errors'); setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Employee")),'errors');
@ -210,11 +216,11 @@ if ($action == 'create')
print "<tr>"; print "<tr>";
print '<td class="fieldrequired">'.$langs->trans("DatePayment").'</td><td>'; print '<td class="fieldrequired">'.$langs->trans("DatePayment").'</td><td>';
print $form->select_date($datep,"datep",'','','','add'); print $form->select_date((empty($datep)?-1:$datep),"datep",'','','','add',1,1);
print '</td></tr>'; print '</td></tr>';
print '<tr><td class="fieldrequired">'.$langs->trans("DateValue").'</td><td>'; print '<tr><td>'.$langs->trans("DateValue").'</td><td>';
print $form->select_date($datev,"datev",'','','','add'); print $form->select_date((empty($datev)?-1:$datev),"datev",'','','','add',1,1);
print '</td></tr>'; print '</td></tr>';
// Employee // Employee
@ -244,13 +250,16 @@ if ($action == 'create')
print '<tr><td class="fieldrequired">'.$langs->trans("Account").'</td><td>'; print '<tr><td class="fieldrequired">'.$langs->trans("Account").'</td><td>';
$form->select_comptes($_POST["accountid"],"accountid",0,"courant=1",1); // Affiche liste des comptes courant $form->select_comptes($_POST["accountid"],"accountid",0,"courant=1",1); // Affiche liste des comptes courant
print '</td></tr>'; print '</td></tr>';
}
// Type payment // Type payment
print '<tr><td class="fieldrequired">'.$langs->trans("PaymentMode").'</td><td>'; print '<tr><td class="fieldrequired">'.$langs->trans("PaymentMode").'</td><td>';
$form->select_types_paiements(GETPOST("paymenttype"), "paymenttype"); $form->select_types_paiements(GETPOST("paymenttype"), "paymenttype");
print "</td>\n"; print "</td>\n";
print "</tr>"; print "</tr>";
if (! empty($conf->banque->enabled))
{
// Number // Number
print '<tr><td>'.$langs->trans('Numero'); print '<tr><td>'.$langs->trans('Numero');
print ' <em>('.$langs->trans("ChequeOrTransferNumber").')</em>'; print ' <em>('.$langs->trans("ChequeOrTransferNumber").')</em>';

View File

@ -29,9 +29,9 @@ $langs->load("salaries");
$langs->load("bills"); $langs->load("bills");
// Security check // Security check
$socid = isset($_GET["socid"])?$_GET["socid"]:''; $socid = GETPOST("socid","int");
if ($user->societe_id) $socid=$user->societe_id; if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'tax', '', '', 'charges'); $result = restrictedArea($user, 'salaries', '', '', '');
$sortfield = GETPOST("sortfield",'alpha'); $sortfield = GETPOST("sortfield",'alpha');
$sortorder = GETPOST("sortorder",'alpha'); $sortorder = GETPOST("sortorder",'alpha');

View File

@ -60,7 +60,7 @@ if (isset($_GET["modetax"])) $modetax=$_GET["modetax"];
* *
* @param DoliDB $db Database handler * @param DoliDB $db Database handler
* @param string $sql SQL Request * @param string $sql SQL Request
* @param date $date Date * @param date $date Date
* @return void * @return void
*/ */
function pt ($db, $sql, $date) function pt ($db, $sql, $date)
@ -122,17 +122,17 @@ print $langs->trans("VATReportBuildWithOptionDefinedInModule").'<br>';
print '('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')<br>'; print '('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')<br>';
print '<br>'; print '<br>';
echo '<table width="100%" class="notopnoleftnoright">'; print '<table width="100%" class="notopnoleftnoright">';
echo '<tr><td class="notopnoleft" width="50%">'; print '<tr><td class="notopnoleft" width="50%">';
print_titre($langs->trans("VATSummary")); print_titre($langs->trans("VATSummary"));
// The report mode is the one defined by defaut in tax module setup // The report mode is the one defined by defaut in tax module setup
//print $modetax; //print $modetax;
//print '('.$langs->trans("SeeVATReportInInputOutputMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modetax=0">','</a>').')'; //print '('.$langs->trans("SeeVATReportInInputOutputMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modetax=0">','</a>').')';
echo '</td><td>'; print '</td><td>';
print_titre($langs->trans("VATPaid")); print_titre($langs->trans("VATPaid"));
echo '</td></tr>'; print '</td></tr>';
echo '<tr><td class="notopnoleft" width="50%" valign="top">'; print '<tr><td class="notopnoleft" width="50%" valign="top">';
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
@ -230,7 +230,7 @@ print '</tr>';
print '</table>'; print '</table>';
echo '</td>'; print '</td>';
print '<td class="notopnoleftnoright" valign="top" width="50%">'; print '<td class="notopnoleftnoright" valign="top" width="50%">';
/* /*
@ -242,15 +242,15 @@ $sql.= " FROM ".MAIN_DB_PREFIX."tva as f";
$sql.= " WHERE f.entity = ".$conf->entity; $sql.= " WHERE f.entity = ".$conf->entity;
$sql.= " AND f.datev >= '".$db->idate(dol_get_first_day($y,1,false))."'"; $sql.= " AND f.datev >= '".$db->idate(dol_get_first_day($y,1,false))."'";
$sql.= " AND f.datev <= '".$db->idate(dol_get_last_day($y,12,false))."'"; $sql.= " AND f.datev <= '".$db->idate(dol_get_last_day($y,12,false))."'";
$sql.= " GROUP BY dm ORDER BY dm ASC"; $sql.= " GROUP BY dm ORDER BY dm ASC";
pt($db, $sql,$langs->trans("Year")." $y"); pt($db, $sql,$langs->trans("Year")." $y");
print "</td></tr></table>"; print "</td></tr></table>";
echo '</td></tr>'; print '</td></tr>';
echo '</table>'; print '</table>';
$db->close(); $db->close();

View File

@ -6,6 +6,7 @@
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be> * Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com> * Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com>
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -105,11 +106,11 @@ if (empty($reshook))
// Creation user // Creation user
$nuser = new User($db); $nuser = new User($db);
$result=$nuser->create_from_contact($object,$_POST["login"]); $result=$nuser->create_from_contact($object,GETPOST("login")); // Do not use GETPOST(alpha)
if ($result > 0) if ($result > 0)
{ {
$result2=$nuser->setPassword($user,$_POST["password"],0,0,1); $result2=$nuser->setPassword($user,GETPOST("password"),0,0,1); // Do not use GETPOST(alpha)
if ($result2) if ($result2)
{ {
$db->commit(); $db->commit();
@ -159,37 +160,37 @@ if (empty($reshook))
if ($canvas) $object->canvas=$canvas; if ($canvas) $object->canvas=$canvas;
$object->socid = $_POST["socid"]; $object->socid = GETPOST("socid",'int');
$object->lastname = $_POST["lastname"]; $object->lastname = GETPOST("lastname");
$object->firstname = $_POST["firstname"]; $object->firstname = GETPOST("firstname");
$object->civility_id = $_POST["civility_id"]; $object->civility_id = GETPOST("civility_id",'alpha');
$object->poste = $_POST["poste"]; $object->poste = GETPOST("poste");
$object->address = $_POST["address"]; $object->address = GETPOST("address");
$object->zip = $_POST["zipcode"]; $object->zip = GETPOST("zipcode");
$object->town = $_POST["town"]; $object->town = GETPOST("town");
$object->country_id = $_POST["country_id"]; $object->country_id = GETPOST("country_id",'int');
$object->state_id = $_POST["state_id"]; $object->state_id = GETPOST("state_id",'int');
$object->skype = $_POST["skype"]; $object->skype = GETPOST("skype");
$object->email = $_POST["email"]; $object->email = GETPOST("email",'alpha');
$object->phone_pro = $_POST["phone_pro"]; $object->phone_pro = GETPOST("phone_pro");
$object->phone_perso = $_POST["phone_perso"]; $object->phone_perso = GETPOST("phone_perso");
$object->phone_mobile = $_POST["phone_mobile"]; $object->phone_mobile = GETPOST("phone_mobile");
$object->fax = $_POST["fax"]; $object->fax = GETPOST("fax");
$object->jabberid = $_POST["jabberid"]; $object->jabberid = GETPOST("jabberid",'alpha');
$object->no_email = $_POST["no_email"]; $object->no_email = GETPOST("no_email",'int');
$object->priv = $_POST["priv"]; $object->priv = GETPOST("priv",'int');
$object->note_public = GETPOST("note_public"); $object->note_public = GETPOST("note_public");
$object->note_private = GETPOST("note_private"); $object->note_private = GETPOST("note_private");
$object->statut = 1; //Defult status to Actif $object->statut = 1; //Defult status to Actif
// Note: Correct date should be completed with location to have exact GM time of birth. // Note: Correct date should be completed with location to have exact GM time of birth.
$object->birthday = dol_mktime(0,0,0,$_POST["birthdaymonth"],$_POST["birthdayday"],$_POST["birthdayyear"]); $object->birthday = dol_mktime(0,0,0,GETPOST("birthdaymonth",'int'),GETPOST("birthdayday",'int'),GETPOST("birthdayyear",'int'));
$object->birthday_alert = $_POST["birthday_alert"]; $object->birthday_alert = GETPOST("birthday_alert",'alpha');
// Fill array 'array_options' with data from add form // Fill array 'array_options' with data from add form
$ret = $extrafields->setOptionalsFromPost($extralabels,$object); $ret = $extrafields->setOptionalsFromPost($extralabels,$object);
if (! $_POST["lastname"]) if (! GETPOST("lastname"))
{ {
$error++; $errors[]=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname").' / '.$langs->transnoentities("Label")); $error++; $errors[]=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname").' / '.$langs->transnoentities("Label"));
$action = 'create'; $action = 'create';
@ -223,8 +224,8 @@ if (empty($reshook))
{ {
$result=$object->fetch($id); $result=$object->fetch($id);
$object->old_lastname = $_POST["old_lastname"]; $object->old_lastname = GETPOST("old_lastname");
$object->old_firstname = $_POST["old_firstname"]; $object->old_firstname = GETPOST("old_firstname");
$result = $object->delete(); $result = $object->delete();
if ($result > 0) if ($result > 0)
@ -254,30 +255,30 @@ if (empty($reshook))
$object->oldcopy=dol_clone($object); $object->oldcopy=dol_clone($object);
$object->old_lastname = $_POST["old_lastname"]; $object->old_lastname = GETPOST("old_lastname");
$object->old_firstname = $_POST["old_firstname"]; $object->old_firstname = GETPOST("old_firstname");
$object->socid = $_POST["socid"]; $object->socid = GETPOST("socid",'int');
$object->lastname = $_POST["lastname"]; $object->lastname = GETPOST("lastname");
$object->firstname = $_POST["firstname"]; $object->firstname = GETPOST("firstname");
$object->civility_id = $_POST["civility_id"]; $object->civility_id = GETPOST("civility_id",'alpha');
$object->poste = $_POST["poste"]; $object->poste = GETPOST("poste");
$object->address = $_POST["address"]; $object->address = GETPOST("address");
$object->zip = $_POST["zipcode"]; $object->zip = GETPOST("zipcode");
$object->town = $_POST["town"]; $object->town = GETPOST("town");
$object->state_id = $_POST["state_id"]; $object->state_id = GETPOST("state_id",'int');
$object->country_id = $_POST["country_id"]; $object->country_id = GETPOST("country_id",'int');
$object->email = $_POST["email"]; $object->email = GETPOST("email",'alpha');
$object->skype = $_POST["skype"]; $object->skype = GETPOST("skype",'alpha');
$object->phone_pro = $_POST["phone_pro"]; $object->phone_pro = GETPOST("phone_pro");
$object->phone_perso = $_POST["phone_perso"]; $object->phone_perso = GETPOST("phone_perso");
$object->phone_mobile = $_POST["phone_mobile"]; $object->phone_mobile = GETPOST("phone_mobile");
$object->fax = $_POST["fax"]; $object->fax = GETPOST("fax");
$object->jabberid = $_POST["jabberid"]; $object->jabberid = GETPOST("jabberid",'alpha');
$object->no_email = $_POST["no_email"]; $object->no_email = GETPOST("no_email",'int');
$object->priv = $_POST["priv"]; $object->priv = GETPOST("priv",'int');
$object->note_public = GETPOST("note_public"); $object->note_public = GETPOST("note_public");
$object->note_private = GETPOST("note_private"); $object->note_private = GETPOST("note_private");
@ -423,8 +424,8 @@ else
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
// Name // Name
print '<tr><td width="20%" class="fieldrequired">'.$langs->trans("Lastname").' / '.$langs->trans("Label").'</td><td width="30%"><input name="lastname" type="text" size="30" maxlength="80" value="'.(isset($_POST["lastname"])?$_POST["lastname"]:$object->lastname).'"></td>'; print '<tr><td width="20%" class="fieldrequired">'.$langs->trans("Lastname").' / '.$langs->trans("Label").'</td><td width="30%"><input name="lastname" type="text" size="30" maxlength="80" value="'.dol_escape_htmltag(GETPOST("lastname")?GETPOST("lastname"):$object->lastname).'"></td>';
print '<td width="20%">'.$langs->trans("Firstname").'</td><td width="30%"><input name="firstname" type="text" size="30" maxlength="80" value="'.(isset($_POST["firstname"])?$_POST["firstname"]:$object->firstname).'"></td></tr>'; print '<td width="20%">'.$langs->trans("Firstname").'</td><td width="30%"><input name="firstname" type="text" size="30" maxlength="80" value="'.dol_escape_htmltag(GETPOST("firstname")?GETPOST("firstname"):$object->firstname).'"></td></tr>';
// Company // Company
if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) if (empty($conf->global->SOCIETE_DISABLE_CONTACTS))
@ -447,10 +448,10 @@ else
// Civility // Civility
print '<tr><td width="15%">'.$langs->trans("UserTitle").'</td><td colspan="3">'; print '<tr><td width="15%">'.$langs->trans("UserTitle").'</td><td colspan="3">';
print $formcompany->select_civility(isset($_POST["civility_id"])?$_POST["civility_id"]:$object->civility_id); print $formcompany->select_civility(GETPOST("civility_id",'alpha')?GETPOST("civility_id",'alpha'):$object->civility_id);
print '</td></tr>'; print '</td></tr>';
print '<tr><td>'.$langs->trans("PostOrFunction").'</td><td colspan="3"><input name="poste" type="text" size="50" maxlength="80" value="'.(isset($_POST["poste"])?$_POST["poste"]:$object->poste).'"></td>'; print '<tr><td>'.$langs->trans("PostOrFunction").'</td><td colspan="3"><input name="poste" type="text" size="50" maxlength="80" value="'.dol_escape_htmltag(GETPOST("poste",'alpha')?GETPOST("poste",'alpha'):$object->poste).'"></td>';
$colspan=3; $colspan=3;
if ($conf->use_javascript_ajax && $socid > 0) $colspan=2; if ($conf->use_javascript_ajax && $socid > 0) $colspan=2;
@ -458,7 +459,7 @@ else
// Address // Address
if (($objsoc->typent_code == 'TE_PRIVATE' || ! empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->address)) == 0) $object->address = $objsoc->address; // Predefined with third party if (($objsoc->typent_code == 'TE_PRIVATE' || ! empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->address)) == 0) $object->address = $objsoc->address; // Predefined with third party
print '<tr><td>'.$langs->trans("Address"); print '<tr><td>'.$langs->trans("Address");
print '</td><td colspan="'.$colspan.'"><textarea class="flat" name="address" cols="70">'.(isset($_POST["address"])?$_POST["address"]:$object->address).'</textarea></td>'; print '</td><td colspan="'.$colspan.'"><textarea class="flat" name="address" cols="70">'.(GETPOST("address",'alpha')?GETPOST("address",'alpha'):$object->address).'</textarea></td>';
if ($conf->use_javascript_ajax && $socid > 0) if ($conf->use_javascript_ajax && $socid > 0)
{ {
@ -475,13 +476,13 @@ else
if (($objsoc->typent_code == 'TE_PRIVATE' || ! empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->zip)) == 0) $object->zip = $objsoc->zip; // Predefined with third party if (($objsoc->typent_code == 'TE_PRIVATE' || ! empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->zip)) == 0) $object->zip = $objsoc->zip; // Predefined with third party
if (($objsoc->typent_code == 'TE_PRIVATE' || ! empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->town)) == 0) $object->town = $objsoc->town; // Predefined with third party if (($objsoc->typent_code == 'TE_PRIVATE' || ! empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->town)) == 0) $object->town = $objsoc->town; // Predefined with third party
print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td colspan="'.$colspan.'" class="maxwidthonsmartphone">'; print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td colspan="'.$colspan.'" class="maxwidthonsmartphone">';
print $formcompany->select_ziptown((isset($_POST["zipcode"])?$_POST["zipcode"]:$object->zip),'zipcode',array('town','selectcountry_id','state_id'),6).'&nbsp;'; print $formcompany->select_ziptown((GETPOST("zipcode")?GETPOST("zipcode"):$object->zip),'zipcode',array('town','selectcountry_id','state_id'),6).'&nbsp;';
print $formcompany->select_ziptown((isset($_POST["town"])?$_POST["town"]:$object->town),'town',array('zipcode','selectcountry_id','state_id')); print $formcompany->select_ziptown((GETPOST("town")?GETPOST("town"):$object->town),'town',array('zipcode','selectcountry_id','state_id'));
print '</td></tr>'; print '</td></tr>';
// Country // Country
print '<tr><td>'.$langs->trans("Country").'</td><td colspan="'.$colspan.'" class="maxwidthonsmartphone">'; print '<tr><td>'.$langs->trans("Country").'</td><td colspan="'.$colspan.'" class="maxwidthonsmartphone">';
print $form->select_country((isset($_POST["country_id"])?$_POST["country_id"]:$object->country_id),'country_id'); print $form->select_country((GETPOST("country_id",'alpha')?GETPOST("country_id",'alpha'):$object->country_id),'country_id');
if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
print '</td></tr>'; print '</td></tr>';
@ -491,7 +492,7 @@ else
print '<tr><td>'.$langs->trans('State').'</td><td colspan="'.$colspan.'" class="maxwidthonsmartphone">'; print '<tr><td>'.$langs->trans('State').'</td><td colspan="'.$colspan.'" class="maxwidthonsmartphone">';
if ($object->country_id) if ($object->country_id)
{ {
print $formcompany->select_state(isset($_POST["state_id"])?$_POST["state_id"]:$object->state_id,$object->country_code,'state_id'); print $formcompany->select_state(GETPOST("state_id",'alpha')?GETPOST("state_id",'alpha'):$object->state_id,$object->country_code,'state_id');
} }
else else
{ {
@ -502,19 +503,19 @@ else
// Phone / Fax // Phone / Fax
if (($objsoc->typent_code == 'TE_PRIVATE' || ! empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->phone_pro)) == 0) $object->phone_pro = $objsoc->phone; // Predefined with third party if (($objsoc->typent_code == 'TE_PRIVATE' || ! empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->phone_pro)) == 0) $object->phone_pro = $objsoc->phone; // Predefined with third party
print '<tr><td>'.$langs->trans("PhonePro").'</td><td><input name="phone_pro" id="phone_pro" type="text" size="18" maxlength="80" value="'.(isset($_POST["phone_pro"])?$_POST["phone_pro"]:$object->phone_pro).'"></td>'; print '<tr><td>'.$langs->trans("PhonePro").'</td><td><input name="phone_pro" id="phone_pro" type="text" size="18" maxlength="80" value="'.dol_escape_htmltag(GETPOST("phone_pro")?GETPOST("phone_pro"):$object->phone_pro).'"></td>';
print '<td>'.$langs->trans("PhonePerso").'</td><td><input name="phone_perso" id="phone_perso" type="text" size="18" maxlength="80" value="'.(isset($_POST["phone_perso"])?$_POST["phone_perso"]:$object->phone_perso).'"></td></tr>'; print '<td>'.$langs->trans("PhonePerso").'</td><td><input name="phone_perso" id="phone_perso" type="text" size="18" maxlength="80" value="'.dol_escape_htmltag(GETPOST("phone_perso")?GETPOST("phone_perso"):$object->phone_perso).'"></td></tr>';
if (($objsoc->typent_code == 'TE_PRIVATE' || ! empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->fax)) == 0) $object->fax = $objsoc->fax; // Predefined with third party if (($objsoc->typent_code == 'TE_PRIVATE' || ! empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->fax)) == 0) $object->fax = $objsoc->fax; // Predefined with third party
print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input name="phone_mobile" id="phone_mobile" type="text" size="18" maxlength="80" value="'.(isset($_POST["phone_mobile"])?$_POST["phone_mobile"]:$object->phone_mobile).'"></td>'; print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input name="phone_mobile" id="phone_mobile" type="text" size="18" maxlength="80" value="'.dol_escape_htmltag(GETPOST("phone_mobile")?GETPOST("phone_mobile"):$object->phone_mobile).'"></td>';
print '<td>'.$langs->trans("Fax").'</td><td><input name="fax" id="fax" type="text" size="18" maxlength="80" value="'.(isset($_POST["fax"])?$_POST["fax"]:$object->fax).'"></td></tr>'; print '<td>'.$langs->trans("Fax").'</td><td><input name="fax" id="fax" type="text" size="18" maxlength="80" value="'.dol_escape_htmltag(GETPOST("fax",'alpha')?GETPOST("fax",'alpha'):$object->fax).'"></td></tr>';
// EMail // EMail
if (($objsoc->typent_code == 'TE_PRIVATE' || ! empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->email)) == 0) $object->email = $objsoc->email; // Predefined with third party if (($objsoc->typent_code == 'TE_PRIVATE' || ! empty($conf->global->CONTACT_USE_COMPANY_ADDRESS)) && dol_strlen(trim($object->email)) == 0) $object->email = $objsoc->email; // Predefined with third party
print '<tr><td>'.$langs->trans("Email").'</td><td><input name="email" id="email" type="text" size="50" maxlength="80" value="'.(isset($_POST["email"])?$_POST["email"]:$object->email).'"></td>'; print '<tr><td>'.$langs->trans("Email").'</td><td><input name="email" id="email" type="text" size="50" maxlength="80" value="'.(GETPOST("email",'alpha')?GETPOST("email",'alpha'):$object->email).'"></td>';
if (! empty($conf->mailing->enabled)) if (! empty($conf->mailing->enabled))
{ {
print '<td>'.$langs->trans("No_Email").'</td><td>'.$form->selectyesno('no_email',(isset($_POST["no_email"])?$_POST["no_email"]:$object->no_email), 1).'</td>'; print '<td>'.$langs->trans("No_Email").'</td><td>'.$form->selectyesno('no_email',(GETPOST("no_email",'alpha')?GETPOST("no_email",'alpha'):$object->no_email), 1).'</td>';
} }
else else
{ {
@ -523,18 +524,18 @@ else
print '</tr>'; print '</tr>';
// Instant message and no email // Instant message and no email
print '<tr><td>'.$langs->trans("IM").'</td><td colspan="3"><input name="jabberid" type="text" size="50" maxlength="80" value="'.(isset($_POST["jabberid"])?$_POST["jabberid"]:$object->jabberid).'"></td></tr>'; print '<tr><td>'.$langs->trans("IM").'</td><td colspan="3"><input name="jabberid" type="text" size="50" maxlength="80" value="'.(GETPOST("jabberid",'alpha')?GETPOST("jabberid",'alpha'):$object->jabberid).'"></td></tr>';
// Skype // Skype
if (! empty($conf->skype->enabled)) if (! empty($conf->skype->enabled))
{ {
print '<tr><td>'.$langs->trans("Skype").'</td><td colspan="3"><input name="skype" type="text" size="50" maxlength="80" value="'.(isset($_POST["skype"])?$_POST["skype"]:$object->skype).'"></td></tr>'; print '<tr><td>'.$langs->trans("Skype").'</td><td colspan="3"><input name="skype" type="text" size="50" maxlength="80" value="'.(GETPOST("skype",'alpha')?GETPOST("skype",'alpha'):$object->skype).'"></td></tr>';
} }
// Visibility // Visibility
print '<tr><td>'.$langs->trans("ContactVisibility").'</td><td colspan="3">'; print '<tr><td>'.$langs->trans("ContactVisibility").'</td><td colspan="3">';
$selectarray=array('0'=>$langs->trans("ContactPublic"),'1'=>$langs->trans("ContactPrivate")); $selectarray=array('0'=>$langs->trans("ContactPublic"),'1'=>$langs->trans("ContactPrivate"));
print $form->selectarray('priv',$selectarray,(isset($_POST["priv"])?$_POST["priv"]:$object->priv),0); print $form->selectarray('priv',$selectarray,(GETPOST("priv",'alpha')?GETPOST("priv",'alpha'):$object->priv),0);
print '</td></tr>'; print '</td></tr>';
// Other attributes // Other attributes

View File

@ -1099,18 +1099,14 @@ else
*/ */
$productstatic=new Product($db); $productstatic=new Product($db);
$usemargins=0;
if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) $usemargins=1;
// Title line for service // Title line for service
//print '<table class="notopnoleft allwidth">'; // Array with (n*2)+1 lines
$cursorline=1; $cursorline=1;
while ($cursorline <= $nbofservices) while ($cursorline <= $nbofservices)
{ {
//print '<tr '.$bc[false].'>';
//print '<td width="90" style="border-left: 1px solid #'.$colorb.'; border-top: 1px solid #'.$colorb.'; border-bottom: 1px solid #'.$colorb.';">';
//print $langs->trans("ServiceNb",$cursorline).'</td>';
// print '<td class="tab" style="border-right: 1px solid #'.$colorb.'; border-top: 1px solid #'.$colorb.'; border-bottom: 1px solid #'.$colorb.';" rowspan="2">';
print '<form name="update" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'" method="post">'; print '<form name="update" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="updateligne">'; print '<input type="hidden" name="action" value="updateligne">';
@ -1119,7 +1115,7 @@ else
print '<input type="hidden" name="fournprice" value="'.($objp->fk_fournprice?$objp->fk_fournprice:'0').'">'; print '<input type="hidden" name="fournprice" value="'.($objp->fk_fournprice?$objp->fk_fournprice:'0').'">';
// Area with common detail of line // Area with common detail of line
print '<table class="notopnoleft allwidth" width="100%">'; print '<table class="notopnoleftnoright allwidth tableforservicepart1" width="100%">';
$sql = "SELECT cd.rowid, cd.statut, cd.label as label_det, cd.fk_product, cd.description, cd.price_ht, cd.qty,"; $sql = "SELECT cd.rowid, cd.statut, cd.label as label_det, cd.fk_product, cd.description, cd.price_ht, cd.qty,";
$sql.= " cd.tva_tx, cd.remise_percent, cd.info_bits, cd.subprice,"; $sql.= " cd.tva_tx, cd.remise_percent, cd.info_bits, cd.subprice,";
@ -1289,10 +1285,10 @@ else
print '<td align="right"><input size="5" type="text" name="elprice" value="'.price($objp->subprice).'"></td>'; print '<td align="right"><input size="5" type="text" name="elprice" value="'.price($objp->subprice).'"></td>';
print '<td align="center"><input size="2" type="text" name="elqty" value="'.$objp->qty.'"></td>'; print '<td align="center"><input size="2" type="text" name="elqty" value="'.$objp->qty.'"></td>';
print '<td align="right" class="nowrap"><input size="1" type="text" name="elremise_percent" value="'.$objp->remise_percent.'">%</td>'; print '<td align="right" class="nowrap"><input size="1" type="text" name="elremise_percent" value="'.$objp->remise_percent.'">%</td>';
if ($conf->margin->enabled) { if (! empty($usemargins))
{
print '<td align="right">'; print '<td align="right">';
if ($objp->fk_product) if ($objp->fk_product) print '<select id="fournprice" name="fournprice"></select>';
print '<select id="fournprice" name="fournprice"></select>';
print '<input id="buying_price" type="text" size="5" name="buying_price" value="'.price($objp->pa_ht,0,'',0).'"></td>'; print '<input id="buying_price" type="text" size="5" name="buying_price" value="'.price($objp->pa_ht,0,'',0).'"></td>';
} }
print '<td align="center" rowspan="2" valign="middle"><input type="submit" class="button" name="save" value="'.$langs->trans("Modify").'">'; print '<td align="center" rowspan="2" valign="middle"><input type="submit" class="button" name="save" value="'.$langs->trans("Modify").'">';
@ -1389,7 +1385,7 @@ else
// Area with status and activation info of line // Area with status and activation info of line
if ($object->statut > 0) if ($object->statut > 0)
{ {
print '<table class="notopnoleft" width="100%">'; print '<table class="notopnoleftnoright tableforservicepart2" width="100%">';
print '<tr '.$bc[false].'>'; print '<tr '.$bc[false].'>';
print '<td>'.$langs->trans("ServiceStatus").': '.$object->lines[$cursorline-1]->getLibStatut(4).'</td>'; print '<td>'.$langs->trans("ServiceStatus").': '.$object->lines[$cursorline-1]->getLibStatut(4).'</td>';
@ -1447,8 +1443,7 @@ else
print '<form name="active" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;ligne='.GETPOST('ligne').'&amp;action=active" method="post">'; print '<form name="active" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;ligne='.GETPOST('ligne').'&amp;action=active" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<table class="noborder" width="100%">'; print '<table class="notopnoleftnoright" width="100%">';
//print '<tr class="liste_titre"><td colspan="5">'.$langs->trans("Status").'</td></tr>';
// Definie date debut et fin par defaut // Definie date debut et fin par defaut
$dateactstart = $objp->date_debut; $dateactstart = $objp->date_debut;
@ -1540,15 +1535,8 @@ else
print '</form>'; print '</form>';
} }
/* print '</td>'; // End td if line is 1
print '</tr>';
print '<tr><td style="border-right: 1px solid #'.$colorb.'">&nbsp;</td></tr>';*/
$cursorline++; $cursorline++;
} }
//print '</table>';
// Form to add new line // Form to add new line
if ($user->rights->contrat->creer && ($object->statut >= 0)) if ($user->rights->contrat->creer && ($object->statut >= 0))

View File

@ -110,7 +110,7 @@ abstract class CommonDocGenerator
'mycompany_web'=>$mysoc->url, 'mycompany_web'=>$mysoc->url,
'mycompany_juridicalstatus'=>$mysoc->forme_juridique, 'mycompany_juridicalstatus'=>$mysoc->forme_juridique,
'mycompany_managers'=>$mysoc->managers, 'mycompany_managers'=>$mysoc->managers,
'mycompany_capital'=>$mysoc->capital, 'mycompany_capital'=>$mysoc->capital,
'mycompany_barcode'=>$mysoc->barcode, 'mycompany_barcode'=>$mysoc->barcode,
'mycompany_idprof1'=>$mysoc->idprof1, 'mycompany_idprof1'=>$mysoc->idprof1,
'mycompany_idprof2'=>$mysoc->idprof2, 'mycompany_idprof2'=>$mysoc->idprof2,
@ -254,24 +254,22 @@ abstract class CommonDocGenerator
); );
// Retrieve extrafields // Retrieve extrafields
if (is_array($object->array_options) && count($object->array_options)) { require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php';
require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php'; $extrafields = new ExtraFields($this->db);
$extrafields = new ExtraFields($this->db); $extralabels = $extrafields->fetch_name_optionals_label('socpeople', true);
$extralabels = $extrafields->fetch_name_optionals_label('contact', true); $object->fetch_optionals($object->id, $extralabels);
$object->fetch_optionals($object->id, $extralabels);
foreach($extrafields->attribute_label as $key => $label) foreach($extrafields->attribute_label as $key => $label)
{
if ($extrafields->attribute_type[$key] == 'price')
{ {
if ($extrafields->attribute_type[$key] == 'price') $object->array_options['options_' . $key] = price($object->array_options ['options_' . $key], 0, $outputlangs, 0, 0, - 1, $conf->currency);
{
$object->array_options['options_' . $key] = price($object->array_options ['options_' . $key], 0, $outputlangs, 0, 0, - 1, $conf->currency);
}
elseif($extrafields->attribute_type[$key] == 'select')
{
$object->array_options['options_' . $key] = $extrafields->attribute_param[$key]['options'][$object->array_options['options_' . $key]];
}
$array_contact = array_merge($array_contact, array('contact_options_' . $key => $object->array_options['options_'. $key]));
} }
elseif($extrafields->attribute_type[$key] == 'select')
{
$object->array_options['options_' . $key] = $extrafields->attribute_param[$key]['options'][$object->array_options['options_' . $key]];
}
$array_contact = array_merge($array_contact, array($array_key.'_options_' . $key => $object->array_options['options_'. $key]));
} }
return $array_contact; return $array_contact;
} }

View File

@ -53,6 +53,42 @@ abstract class CommonObject
// No constructor as it is an abstract class // No constructor as it is an abstract class
/**
* Check an object id/ref exists
* If you don't need/want to instantiate object and just need to know if object exists, use this method instead of fetch
*
* @param string $element String of element ('product', 'facture', ...)
* @param int $id Id of object
* @param string $ref Ref of object to check
* @param string $ref_ext Ref ext of object to check
* @return int <0 if KO, 0 if OK but not found, >0 if OK and exists
*/
static function isExistingObject($element, $id, $ref='', $ref_ext='')
{
global $db;
$sql = "SELECT rowid, ref, ref_ext";
$sql.= " FROM ".MAIN_DB_PREFIX.$element;
if ($id > 0) $sql.= " WHERE rowid = ".$db->escape($id);
else if ($ref) $sql.= " WHERE ref = '".$db->escape($ref)."'";
else if ($ref_ext) $sql.= " WHERE ref_ext = '".$db->escape($ref_ext)."'";
else {
$error='ErrorWrongParameters';
dol_print_error(get_class()."::isExistingObject ".$error, LOG_ERR);
return -1;
}
dol_syslog(get_class()."::isExistingObject sql=".$sql);
$resql = $db->query($sql);
if ($resql)
{
$num=$db->num_rows($resql);
if ($num > 0) return 1;
else return 0;
}
return -1;
}
/** /**
* Method to output saved errors * Method to output saved errors
* *
@ -114,33 +150,6 @@ abstract class CommonObject
return dol_format_address($this, $withcountry, $sep); return dol_format_address($this, $withcountry, $sep);
} }
/**
* Check if ref is used.
*
* @return int <0 if KO, 0 if not found, >0 if found
*/
function verifyNumRef()
{
global $conf;
$sql = "SELECT rowid";
$sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element;
$sql.= " WHERE ref = '".$this->ref."'";
$sql.= " AND entity = ".$conf->entity;
dol_syslog(get_class($this)."::verifyNumRef sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql)
{
$num = $this->db->num_rows($resql);
return $num;
}
else
{
$this->error=$this->db->lasterror();
dol_syslog(get_class($this)."::verifyNumRef ".$this->error, LOG_ERR);
return -1;
}
}
/** /**
* Add a link between element $this->element and a contact * Add a link between element $this->element and a contact
@ -1827,9 +1836,6 @@ abstract class CommonObject
else if ($objecttype == 'invoice_supplier' || $objecttype == 'order_supplier') { else if ($objecttype == 'invoice_supplier' || $objecttype == 'order_supplier') {
$classpath = 'fourn/class'; $module = 'fournisseur'; $classpath = 'fourn/class'; $module = 'fournisseur';
} }
else if ($objecttype == 'order_supplier') {
$classpath = 'fourn/class';
}
else if ($objecttype == 'fichinter') { else if ($objecttype == 'fichinter') {
$classpath = 'fichinter/class'; $subelement = 'fichinter'; $module = 'ficheinter'; $classpath = 'fichinter/class'; $subelement = 'fichinter'; $module = 'ficheinter';
} }
@ -2055,7 +2061,7 @@ abstract class CommonObject
/** /**
* Get special code of line * Get special code of a line
* *
* @param int $lineid Id of line * @param int $lineid Id of line
* @return int Special code * @return int Special code
@ -2721,7 +2727,7 @@ abstract class CommonObject
*/ */
function printObjectLines($action, $seller, $buyer, $selected=0, $dateSelector=0) function printObjectLines($action, $seller, $buyer, $selected=0, $dateSelector=0)
{ {
global $conf,$langs,$user,$hookmanager; global $conf,$langs,$user,$object,$hookmanager;
print '<tr class="liste_titre nodrag nodrop">'; print '<tr class="liste_titre nodrag nodrop">';
@ -2760,11 +2766,11 @@ abstract class CommonObject
// Total HT // Total HT
print '<td align="right" width="50">'.$langs->trans('TotalHTShort').'</td>'; print '<td align="right" width="50">'.$langs->trans('TotalHTShort').'</td>';
print '<td width="10"></td>'; print '<td></td>'; // No width to allow autodim
print '<td width="10"></td>'; print '<td width="10"></td>';
print '<td class="nowrap"></td>'; // No width to allow autodim print '<td width="10"></td>';
print "</tr>\n"; print "</tr>\n";
@ -2819,7 +2825,7 @@ abstract class CommonObject
*/ */
function printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected=0,$extrafieldsline=0) function printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected=0,$extrafieldsline=0)
{ {
global $conf,$langs,$user,$hookmanager; global $conf,$langs,$user,$object,$hookmanager;
global $form,$bc,$bcdd; global $form,$bc,$bcdd;
$element=$this->element; $element=$this->element;
@ -3091,7 +3097,8 @@ abstract class CommonObject
* @param string $force_price True of not * @param string $force_price True of not
* @return mixed Array with info * @return mixed Array with info
*/ */
function getMarginInfos($force_price=false) { function getMarginInfos($force_price=false)
{
global $conf; global $conf;
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php';
@ -3211,7 +3218,7 @@ abstract class CommonObject
} }
/** /**
* displayMarginInfos * Show the array with all margin infos
* *
* @param string $force_price Force price * @param string $force_price Force price
* @return void * @return void
@ -3228,7 +3235,7 @@ abstract class CommonObject
$marginInfo = $this->getMarginInfos($force_price); $marginInfo = $this->getMarginInfos($force_price);
print '<table class="noborder" width="100%">'; print '<table class="nobordernopadding" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td width="30%">'.$langs->trans('Margins').'</td>'; print '<td width="30%">'.$langs->trans('Margins').'</td>';
print '<td width="20%" align="right">'.$langs->trans('SellingPrice').'</td>'; print '<td width="20%" align="right">'.$langs->trans('SellingPrice').'</td>';
@ -3249,9 +3256,9 @@ abstract class CommonObject
print '<td align="right">'.price($marginInfo['pa_products'], null, null, null, null, $rounding).'</td>'; print '<td align="right">'.price($marginInfo['pa_products'], null, null, null, null, $rounding).'</td>';
print '<td align="right">'.price($marginInfo['margin_on_products'], null, null, null, null, $rounding).'</td>'; print '<td align="right">'.price($marginInfo['margin_on_products'], null, null, null, null, $rounding).'</td>';
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) if (! empty($conf->global->DISPLAY_MARGIN_RATES))
print '<td align="right">'.(($marginInfo['margin_rate_products'] == '')?'n/a':price($marginInfo['margin_rate_products'], null, null, null, null, $rounding).'%').'</td>'; print '<td align="right">'.(($marginInfo['margin_rate_products'] == '')?'':price($marginInfo['margin_rate_products'], null, null, null, null, $rounding).'%').'</td>';
if (! empty($conf->global->DISPLAY_MARK_RATES)) if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'n/a':price($marginInfo['mark_rate_products'], null, null, null, null, $rounding).'%').'</td>'; print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'':price($marginInfo['mark_rate_products'], null, null, null, null, $rounding).'%').'</td>';
print '</tr>'; print '</tr>';
print '<tr class="pair">'; print '<tr class="pair">';
print '<td>'.$langs->trans('MarginOnServices').'</td>'; print '<td>'.$langs->trans('MarginOnServices').'</td>';
@ -3259,9 +3266,9 @@ abstract class CommonObject
print '<td align="right">'.price($marginInfo['pa_services'], null, null, null, null, $rounding).'</td>'; print '<td align="right">'.price($marginInfo['pa_services'], null, null, null, null, $rounding).'</td>';
print '<td align="right">'.price($marginInfo['margin_on_services'], null, null, null, null, $rounding).'</td>'; print '<td align="right">'.price($marginInfo['margin_on_services'], null, null, null, null, $rounding).'</td>';
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) if (! empty($conf->global->DISPLAY_MARGIN_RATES))
print '<td align="right">'.(($marginInfo['margin_rate_services'] == '')?'n/a':price($marginInfo['margin_rate_services'], null, null, null, null, $rounding).'%').'</td>'; print '<td align="right">'.(($marginInfo['margin_rate_services'] == '')?'':price($marginInfo['margin_rate_services'], null, null, null, null, $rounding).'%').'</td>';
if (! empty($conf->global->DISPLAY_MARK_RATES)) if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'n/a':price($marginInfo['mark_rate_services'], null, null, null, null, $rounding).'%').'</td>'; print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'':price($marginInfo['mark_rate_services'], null, null, null, null, $rounding).'%').'</td>';
print '</tr>'; print '</tr>';
//} //}
print '<tr class="impair">'; print '<tr class="impair">';
@ -3270,9 +3277,9 @@ abstract class CommonObject
print '<td align="right">'.price($marginInfo['pa_total'], null, null, null, null, $rounding).'</td>'; print '<td align="right">'.price($marginInfo['pa_total'], null, null, null, null, $rounding).'</td>';
print '<td align="right">'.price($marginInfo['total_margin'], null, null, null, null, $rounding).'</td>'; print '<td align="right">'.price($marginInfo['total_margin'], null, null, null, null, $rounding).'</td>';
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) if (! empty($conf->global->DISPLAY_MARGIN_RATES))
print '<td align="right">'.(($marginInfo['total_margin_rate'] == '')?'n/a':price($marginInfo['total_margin_rate'], null, null, null, null, $rounding).'%').'</td>'; print '<td align="right">'.(($marginInfo['total_margin_rate'] == '')?'':price($marginInfo['total_margin_rate'], null, null, null, null, $rounding).'%').'</td>';
if (! empty($conf->global->DISPLAY_MARK_RATES)) if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'n/a':price($marginInfo['total_mark_rate'], null, null, null, null, $rounding).'%').'</td>'; print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'':price($marginInfo['total_mark_rate'], null, null, null, null, $rounding).'%').'</td>';
print '</tr>'; print '</tr>';
print '</table>'; print '</table>';
} }

View File

@ -479,11 +479,11 @@ class FormOther
$numlines=count($lines); $numlines=count($lines);
for ($i = 0 ; $i < $numlines ; $i++) for ($i = 0 ; $i < $numlines ; $i++)
{ {
if ($lines[$i]->fk_parent == $parent) if ($lines[$i]->fk_parent == $parent)
{ {
$var = !$var; $var = !$var;
//var_dump($selectedproject."--".$selectedtask."--".$lines[$i]->fk_project."_".$lines[$i]->id); //var_dump($selectedproject."--".$selectedtask."--".$lines[$i]->fk_project."_".$lines[$i]->id); // $lines[$i]->id may be empty if project has no lines
// Break on a new project // Break on a new project
if ($parent == 0) // We are on a task at first level if ($parent == 0) // We are on a task at first level
@ -514,7 +514,7 @@ class FormOther
$newdisablechildoftaskid=$disablechildoftaskid; $newdisablechildoftaskid=$disablechildoftaskid;
// Print task // Print task
if ($lines[$i]->id >= 0) if (isset($lines[$i]->id)) // We use isset because $lines[$i]->id may be null if project has no task and are on root project (tasks may be caught by a left join). We enter here only if '0' or >0
{ {
// Check if we must disable entry // Check if we must disable entry
$disabled=0; $disabled=0;

View File

@ -238,7 +238,7 @@ function limitChars(textarea, limit, infodiv)
} }
} }
// To // To (target)
if ($this->withto || is_array($this->withto)) if ($this->withto || is_array($this->withto))
{ {
print '<tr><td width="180">'; print '<tr><td width="180">';

View File

@ -102,7 +102,7 @@ class Interfaces
if (in_array($modName,$modules)) if (in_array($modName,$modules))
{ {
$langs->load("errors"); $langs->load("errors");
dol_syslog(get_class($this)."::run_triggers action=".$action." ".$langs->trans("ErrorDuplicateTrigger",$modName,"/htdocs/core/triggers/"),LOG_ERR); dol_syslog(get_class($this)."::run_triggers action=".$action." ".$langs->trans("ErrorDuplicateTrigger",$modName,"/htdocs/core/triggers/"), LOG_ERR);
continue; continue;
} }
else else
@ -123,7 +123,7 @@ class Interfaces
if (! $qualified) if (! $qualified)
{ {
dol_syslog(get_class($this)."::run_triggers action=".$action." Triggers for file '".$file."' need module to be enabled",LOG_INFO); dol_syslog(get_class($this)."::run_triggers action=".$action." Triggers for file '".$file."' need module to be enabled", LOG_DEBUG);
continue; continue;
} }
@ -148,7 +148,7 @@ class Interfaces
$objMod = new $modName($this->db); $objMod = new $modName($this->db);
if ($objMod) if ($objMod)
{ {
dol_syslog(get_class($this)."::run_triggers action=".$action." Launch triggers for file '".$files[$key]."'",LOG_INFO); dol_syslog(get_class($this)."::run_triggers action=".$action." Launch triggers for file '".$files[$key]."'", LOG_INFO);
$result=$objMod->run_trigger($action,$object,$user,$langs,$conf); $result=$objMod->run_trigger($action,$object,$user,$langs,$conf);
if ($result > 0) if ($result > 0)
@ -173,7 +173,7 @@ class Interfaces
} }
else else
{ {
dol_syslog(get_class($this)."::run_triggers action=".$action." Failed to instantiate trigger for file '".$files[$key]."'",LOG_ERR); dol_syslog(get_class($this)."::run_triggers action=".$action." Failed to instantiate trigger for file '".$files[$key]."'", LOG_ERR);
} }
} }

View File

@ -48,7 +48,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
global $conf, $user, $langs, $db; global $conf, $user, $langs, $db;
// Filters // Filters
print '<form name="listactionsfilter" class="listactionsfilter" action="' . $_SERVER ["PHP_SELF"] . '" method="POST">'; print '<form name="listactionsfilter" class="listactionsfilter" action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="status" value="' . $status . '">'; print '<input type="hidden" name="status" value="' . $status . '">';
print '<input type="hidden" name="year" value="' . $year . '">'; print '<input type="hidden" name="year" value="' . $year . '">';

View File

@ -69,8 +69,6 @@ function doc_getlinedesc($line,$outputlangs,$hideref=0,$hidedesc=0,$issupplierli
// Description long of product line // Description long of product line
if ($desc && ($desc != $label)) if ($desc && ($desc != $label))
{ {
if ( $libelleproduitservice && empty($hidedesc) ) $libelleproduitservice.="\n";
if ($desc == '(CREDIT_NOTE)' && $line->fk_remise_except) if ($desc == '(CREDIT_NOTE)' && $line->fk_remise_except)
{ {
$discount=new DiscountAbsolute($db); $discount=new DiscountAbsolute($db);
@ -83,18 +81,17 @@ function doc_getlinedesc($line,$outputlangs,$hideref=0,$hidedesc=0,$issupplierli
$discount->fetch($line->fk_remise_except); $discount->fetch($line->fk_remise_except);
$libelleproduitservice=$outputlangs->transnoentitiesnoconv("DiscountFromDeposit",$discount->ref_facture_source); $libelleproduitservice=$outputlangs->transnoentitiesnoconv("DiscountFromDeposit",$discount->ref_facture_source);
// Add date of deposit // Add date of deposit
if (! empty($conf->global->INVOICE_ADD_DEPOSIT_DATE)) echo ' ('.dol_print_date($discount->datec,'day','',$outputlangs).')'; if (! empty($conf->global->INVOICE_ADD_DEPOSIT_DATE)) $libelleproduitservice.=' ('.dol_print_date($discount->datec,'day','',$outputlangs).')';
} }
else else
{ {
if ($idprod) if ($idprod)
{ {
if (empty($hidedesc)) if (empty($hidedesc)) $libelleproduitservice=dol_concatdesc($libelleproduitservice, $desc);
$libelleproduitservice.=$desc;
} }
else else
{ {
$libelleproduitservice.=$desc; $libelleproduitservice=dol_concatdesc($libelleproduitservice, $desc);
} }
} }
} }
@ -148,7 +145,7 @@ function doc_getlinedesc($line,$outputlangs,$hideref=0,$hidedesc=0,$issupplierli
$period='('.$outputlangs->transnoentitiesnoconv('DateUntil',dol_print_date($line->date_end, $format, false, $outputlangs)).')'; $period='('.$outputlangs->transnoentitiesnoconv('DateUntil',dol_print_date($line->date_end, $format, false, $outputlangs)).')';
} }
//print '>'.$outputlangs->charset_output.','.$period; //print '>'.$outputlangs->charset_output.','.$period;
$libelleproduitservice.="\n".$period; $libelleproduitservice=dol_concatdesc($libelleproduitservice, $period);
//print $libelleproduitservice; //print $libelleproduitservice;
} }

View File

@ -2560,7 +2560,7 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so
if ($picto == 'setup') $picto='title.png'; if ($picto == 'setup') $picto='title.png';
if (!empty($conf->browser->ie) && $picto=='title.png') $picto='title.gif'; if (!empty($conf->browser->ie) && $picto=='title.png') $picto='title.gif';
if ($num > $conf->liste_limit or $num == -1) if (($num > $conf->liste_limit) || ($num == -1))
{ {
$nextpage = 1; $nextpage = 1;
} }
@ -3433,13 +3433,13 @@ function picto_required()
* Clean a string from all HTML tags and entities * Clean a string from all HTML tags and entities
* *
* @param string $StringHtml String to clean * @param string $StringHtml String to clean
* @param string $removelinefeed Replace also all lines feeds by a space * @param string $removelinefeed Replace also all lines feeds by a space, otherwise only last one are removed
* @param string $pagecodeto Encoding of input/output string * @param string $pagecodeto Encoding of input/output string
* @return string String cleaned * @return string String cleaned
*/ */
function dol_string_nohtmltag($StringHtml,$removelinefeed=1,$pagecodeto='UTF-8') function dol_string_nohtmltag($StringHtml,$removelinefeed=1,$pagecodeto='UTF-8')
{ {
$pattern = "/<[^>]+>/"; $pattern = "/<[^<>]+>/";
$temp = dol_html_entity_decode($StringHtml,ENT_COMPAT,$pagecodeto); $temp = dol_html_entity_decode($StringHtml,ENT_COMPAT,$pagecodeto);
$temp = preg_replace($pattern,"",$temp); $temp = preg_replace($pattern,"",$temp);
@ -3506,7 +3506,6 @@ function dol_htmlentitiesbr($stringtoencode,$nl2brmode=0,$pagecodefrom='UTF-8',$
$newstring=strtr($newstring,array('&'=>'__and__','<'=>'__lt__','>'=>'__gt__','"'=>'__dquot__')); $newstring=strtr($newstring,array('&'=>'__and__','<'=>'__lt__','>'=>'__gt__','"'=>'__dquot__'));
$newstring=dol_htmlentities($newstring,ENT_COMPAT,$pagecodefrom); // Make entity encoding $newstring=dol_htmlentities($newstring,ENT_COMPAT,$pagecodefrom); // Make entity encoding
$newstring=strtr($newstring,array('__and__'=>'&','__lt__'=>'<','__gt__'=>'>','__dquot__'=>'"')); $newstring=strtr($newstring,array('__and__'=>'&','__lt__'=>'<','__gt__'=>'>','__dquot__'=>'"'));
//$newstring=strtr($newstring,array('__li__'=>"<li>\n")); // Restore <li>\n
} }
else else
{ {
@ -3551,7 +3550,7 @@ function dol_htmlcleanlastbr($stringtodecode)
* Replace html_entity_decode functions to manage errors * Replace html_entity_decode functions to manage errors
* *
* @param string $a Operand a * @param string $a Operand a
* @param string $b Operand b * @param string $b Operand b (ENT_QUOTES=convert simple and double quotes)
* @param string $c Operand c * @param string $c Operand c
* @return string String decoded * @return string String decoded
*/ */
@ -3691,17 +3690,10 @@ function dol_textishtml($msg,$option=0)
{ {
if (preg_match('/<html/i',$msg)) return true; if (preg_match('/<html/i',$msg)) return true;
elseif (preg_match('/<body/i',$msg)) return true; elseif (preg_match('/<body/i',$msg)) return true;
elseif (preg_match('/<b>/i',$msg)) return true; elseif (preg_match('/<(b|em|i)>/i',$msg)) return true;
elseif (preg_match('/<br/i',$msg)) return true; elseif (preg_match('/<(br|div|font|img|li|span|strong|table)>/i',$msg)) return true;
elseif (preg_match('/<div/i',$msg)) return true; elseif (preg_match('/<(br|div|font|img|li|span|strong|table)\s+[^<>\/]*>/i',$msg)) return true;
elseif (preg_match('/<em>/i',$msg)) return true; elseif (preg_match('/<(br|div|font|img|li|span|strong|table)\s+[^<>\/]*\/>/i',$msg)) return true;
elseif (preg_match('/<font/i',$msg)) return true;
elseif (preg_match('/<img/i',$msg)) return true;
elseif (preg_match('/<i>/i',$msg)) return true;
elseif (preg_match('/<li/i',$msg)) return true;
elseif (preg_match('/<span/i',$msg)) return true;
elseif (preg_match('/<strong/i',$msg)) return true;
elseif (preg_match('/<table/i',$msg)) return true;
elseif (preg_match('/&[A-Z0-9]{1,6};/i',$msg)) return true; // Html entities names (http://www.w3schools.com/tags/ref_entities.asp) elseif (preg_match('/&[A-Z0-9]{1,6};/i',$msg)) return true; // Html entities names (http://www.w3schools.com/tags/ref_entities.asp)
elseif (preg_match('/&#[0-9]{2,3};/i',$msg)) return true; // Html entities numbers (http://www.w3schools.com/tags/ref_entities.asp) elseif (preg_match('/&#[0-9]{2,3};/i',$msg)) return true; // Html entities numbers (http://www.w3schools.com/tags/ref_entities.asp)
return false; return false;
@ -3709,7 +3701,7 @@ function dol_textishtml($msg,$option=0)
} }
/** /**
* Concat 2 descriptions (second one after first one) * Concat 2 descriptions (second one after first one with a new line separator if required)
* text1 html + text2 html => text1 + '<br>' + text2 * text1 html + text2 html => text1 + '<br>' + text2
* text1 html + text2 txt => text1 + '<br>' + dol_nl2br(text2) * text1 html + text2 txt => text1 + '<br>' + dol_nl2br(text2)
* text1 txt + text2 html => dol_nl2br(text1) + '<br>' + text2 * text1 txt + text2 html => dol_nl2br(text1) + '<br>' + text2

View File

@ -26,7 +26,7 @@
* *
* @param string $url URL to call. * @param string $url URL to call.
* @param string $postorget 'POST', 'GET', 'HEAD' * @param string $postorget 'POST', 'GET', 'HEAD'
* @param string $param Paraemeters of URL (x=value1&y=value2) * @param string $param Parameters of URL (x=value1&y=value2)
* @param string $followlocation 1=Follow location, 0=Do not follow * @param string $followlocation 1=Follow location, 0=Do not follow
* @param array $addheaders Array of string to add into header. Example: ('Accept: application/xrds+xml', ....) * @param array $addheaders Array of string to add into header. Example: ('Accept: application/xrds+xml', ....)
* @return array Returns an associative array containing the response from the server array('content'=>response,'curl_error_no'=>errno,'curl_error_msg'=>errmsg...) * @return array Returns an associative array containing the response from the server array('content'=>response,'curl_error_no'=>errno,'curl_error_msg'=>errmsg...)

View File

@ -142,18 +142,24 @@ function task_prepare_head($object)
// $this->tabs = array('entity:-tabname); to remove a tab // $this->tabs = array('entity:-tabname); to remove a tab
complete_head_from_modules($conf,$langs,$object,$head,$h,'task'); complete_head_from_modules($conf,$langs,$object,$head,$h,'task');
$head[$h][0] = DOL_URL_ROOT.'/projet/tasks/document.php?id='.$object->id.(GETPOST('withproject')?'&withproject=1':'');; if (empty($conf->global->MAIN_DISABLE_NOTES_TAB))
/*$filesdir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($object->ref); {
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $nbNote = 0;
$listoffiles=dol_dir_list($filesdir,'files',1); if(!empty($object->note_private)) $nbNote++;
$head[$h][1] = (count($listoffiles)?$langs->trans('DocumentsNb',count($listoffiles)):$langs->trans('Documents'));*/ if(!empty($object->note_public)) $nbNote++;
$head[$h][1] = $langs->trans('Documents'); $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/note.php?id='.$object->id.(GETPOST('withproject')?'&withproject=1':'');;
$head[$h][2] = 'task_document'; $head[$h][1] = $langs->trans('Notes');
$h++; if($nbNote > 0) $head[$h][1].= ' ('.$nbNote.')';
$head[$h][2] = 'task_notes';
$h++;
}
$head[$h][0] = DOL_URL_ROOT.'/projet/tasks/note.php?id='.$object->id.(GETPOST('withproject')?'&withproject=1':'');; $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/document.php?id='.$object->id.(GETPOST('withproject')?'&withproject=1':'');;
$head[$h][1] = $langs->trans('Notes'); $filesdir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($object->project->ref) . '/' .dol_sanitizeFileName($object->ref);
$head[$h][2] = 'task_notes'; include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$listoffiles=dol_dir_list($filesdir,'files',1,'','thumbs');
$head[$h][1] = (count($listoffiles)?$langs->trans('DocumentsNb',count($listoffiles)):$langs->trans('Documents'));
$head[$h][2] = 'task_document';
$h++; $h++;
complete_head_from_modules($conf,$langs,$object,$head,$h,'task','remove'); complete_head_from_modules($conf,$langs,$object,$head,$h,'task','remove');

View File

@ -97,7 +97,7 @@ function dol_hash($chain,$type=0)
* If GETPOST('action') defined, we also check write and delete permission. * If GETPOST('action') defined, we also check write and delete permission.
* *
* @param User $user User to check * @param User $user User to check
* @param string $features Features to check (it must be module name. Examples: 'societe', 'contact', 'produit&service', ...) * @param string $features Features to check (it must be module name. Examples: 'societe', 'contact', 'produit&service', 'produit|service', ...)
* @param int $objectid Object ID if we want to check a particular record (optional) is linked to a owned thirdparty (optional). * @param int $objectid Object ID if we want to check a particular record (optional) is linked to a owned thirdparty (optional).
* @param string $dbtablename 'TableName&SharedElement' with Tablename is table where object is stored. SharedElement is an optional key to define where to check entity. Not used if objectid is null (optional) * @param string $dbtablename 'TableName&SharedElement' with Tablename is table where object is stored. SharedElement is an optional key to define where to check entity. Not used if objectid is null (optional)
* @param string $feature2 Feature to check, second level of permission (optional) * @param string $feature2 Feature to check, second level of permission (optional)
@ -123,12 +123,13 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
if ($dbt_select != 'rowid' && $dbt_select != 'id') $objectid = "'".$objectid."'"; if ($dbt_select != 'rowid' && $dbt_select != 'id') $objectid = "'".$objectid."'";
// More features to check // Features/modules to check
$features = explode("&", $features); $featuresarray = array($features);
if (preg_match('/&/', $features)) $featuresarray = explode("&", $features);
else if (preg_match('/\|/', $features)) $featuresarray = explode("|", $features);
// More subfeatures to check // More subfeatures to check
if (!empty($feature2)) if (! empty($feature2)) $feature2 = explode("|", $feature2);
$feature2 = explode("&", $feature2);
// More parameters // More parameters
$params = explode('&', $dbtablename); $params = explode('&', $dbtablename);
@ -138,106 +139,113 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
$listofmodules=explode(',',$conf->global->MAIN_MODULES_FOR_EXTERNAL); $listofmodules=explode(',',$conf->global->MAIN_MODULES_FOR_EXTERNAL);
// Check read permission from module // Check read permission from module
$readok=1; $readok=1; $nbko=0;
foreach ($features as $feature) foreach ($featuresarray as $feature)
{ {
if (! empty($user->societe_id) && ! empty($conf->global->MAIN_MODULES_FOR_EXTERNAL) && ! in_array($feature,$listofmodules)) // If limits on modules for external users, module must be into list of modules for external users if (! empty($user->societe_id) && ! empty($conf->global->MAIN_MODULES_FOR_EXTERNAL) && ! in_array($feature,$listofmodules)) // If limits on modules for external users, module must be into list of modules for external users
{ {
$readok=0; $readok=0; $nbko++;
continue; continue;
} }
if ($feature == 'societe') if ($feature == 'societe')
{ {
if (! $user->rights->societe->lire && ! $user->rights->fournisseur->lire) $readok=0; if (! $user->rights->societe->lire && ! $user->rights->fournisseur->lire) { $readok=0; $nbko++; }
} }
else if ($feature == 'contact') else if ($feature == 'contact')
{ {
if (! $user->rights->societe->contact->lire) $readok=0; if (! $user->rights->societe->contact->lire) { $readok=0; $nbko++; }
} }
else if ($feature == 'produit|service') else if ($feature == 'produit|service')
{ {
if (! $user->rights->produit->lire && ! $user->rights->service->lire) $readok=0; if (! $user->rights->produit->lire && ! $user->rights->service->lire) { $readok=0; $nbko++; }
} }
else if ($feature == 'prelevement') else if ($feature == 'prelevement')
{ {
if (! $user->rights->prelevement->bons->lire) $readok=0; if (! $user->rights->prelevement->bons->lire) { $readok=0; $nbko++; }
} }
else if ($feature == 'cheque') else if ($feature == 'cheque')
{ {
if (! $user->rights->banque->cheque) $readok=0; if (! $user->rights->banque->cheque) { $readok=0; $nbko++; }
} }
else if ($feature == 'projet') else if ($feature == 'projet')
{ {
if (! $user->rights->projet->lire && ! $user->rights->projet->all->lire) $readok=0; if (! $user->rights->projet->lire && ! $user->rights->projet->all->lire) { $readok=0; $nbko++; }
} }
else if (! empty($feature2)) // This should be used for future changes else if (! empty($feature2)) // This should be used for future changes
{ {
foreach($feature2 as $subfeature) foreach($feature2 as $subfeature)
{ {
if (empty($user->rights->$feature->$subfeature->lire) && empty($user->rights->$feature->$subfeature->read)) $readok=0; if (! empty($subfeature) && empty($user->rights->$feature->$subfeature->lire) && empty($user->rights->$feature->$subfeature->read)) { $readok=0; $nbko++; }
else { $readok=1; break; } // For bypass the second test if the first is ok else if (empty($subfeature) && empty($user->rights->$feature->lire) && empty($user->rights->$feature->read)) { $readok=0; $nbko++; }
else { $readok=1; break; } // Break is to bypass second test if the first is ok
} }
} }
else if (! empty($feature) && ($feature!='user' && $feature!='usergroup')) // This is for old permissions else if (! empty($feature) && ($feature!='user' && $feature!='usergroup')) // This is for old permissions
{ {
if (empty($user->rights->$feature->lire) if (empty($user->rights->$feature->lire)
&& empty($user->rights->$feature->read) && empty($user->rights->$feature->read)
&& empty($user->rights->$feature->run)) $readok=0; && empty($user->rights->$feature->run)) { $readok=0; $nbko++; }
} }
} }
// If a or and at least one ok
if (preg_match('/\|/', $features) && $nbko < count($featuresarray)) $readok=1;
if (! $readok) accessforbidden(); if (! $readok) accessforbidden();
//print "Read access is ok"; //print "Read access is ok";
// Check write permission from module // Check write permission from module
$createok=1; $createok=1; $nbko=0;
if (GETPOST("action") == 'create') if (GETPOST("action") == 'create')
{ {
foreach ($features as $feature) foreach ($featuresarray as $feature)
{ {
if ($feature == 'contact') if ($feature == 'contact')
{ {
if (! $user->rights->societe->contact->creer) $createok=0; if (! $user->rights->societe->contact->creer) { $createok=0; $nbko++; }
} }
else if ($feature == 'produit|service') else if ($feature == 'produit|service')
{ {
if (! $user->rights->produit->creer && ! $user->rights->service->creer) $createok=0; if (! $user->rights->produit->creer && ! $user->rights->service->creer) { $createok=0; $nbko++; }
} }
else if ($feature == 'prelevement') else if ($feature == 'prelevement')
{ {
if (! $user->rights->prelevement->bons->creer) $createok=0; if (! $user->rights->prelevement->bons->creer) { $createok=0; $nbko++; }
} }
else if ($feature == 'commande_fournisseur') else if ($feature == 'commande_fournisseur')
{ {
if (! $user->rights->fournisseur->commande->creer) $createok=0; if (! $user->rights->fournisseur->commande->creer) { $createok=0; $nbko++; }
} }
else if ($feature == 'banque') else if ($feature == 'banque')
{ {
if (! $user->rights->banque->modifier) $createok=0; if (! $user->rights->banque->modifier) { $createok=0; $nbko++; }
} }
else if ($feature == 'cheque') else if ($feature == 'cheque')
{ {
if (! $user->rights->banque->cheque) $createok=0; if (! $user->rights->banque->cheque) { $createok=0; $nbko++; }
} }
else if (! empty($feature2)) // This should be used for future changes else if (! empty($feature2)) // This should be used
{ {
foreach($feature2 as $subfeature) foreach($feature2 as $subfeature)
{ {
if (empty($user->rights->$feature->$subfeature->creer) if (empty($user->rights->$feature->$subfeature->creer)
&& empty($user->rights->$feature->$subfeature->write) && empty($user->rights->$feature->$subfeature->write)
&& empty($user->rights->$feature->$subfeature->create)) $createok=0; && empty($user->rights->$feature->$subfeature->create)) { $createok=0; $nbko++; }
else { $createok=1; break; } // For bypass the second test if the first is ok else { $createok=1; break; } // Break to bypass second test if the first is ok
} }
} }
else if (! empty($feature)) // This is for old permissions else if (! empty($feature)) // This is for old permissions ('creer' or 'write')
{ {
//print '<br>feature='.$feature.' creer='.$user->rights->$feature->creer.' write='.$user->rights->$feature->write; //print '<br>feature='.$feature.' creer='.$user->rights->$feature->creer.' write='.$user->rights->$feature->write;
if (empty($user->rights->$feature->creer) if (empty($user->rights->$feature->creer)
&& empty($user->rights->$feature->write)) $createok=0; && empty($user->rights->$feature->write)) { $createok=0; $nbko++; }
} }
} }
// If a or and at least one ok
if (preg_match('/\|/', $features) && $nbko < count($featuresarray)) $createok=1;
if (! $createok) accessforbidden(); if (! $createok) accessforbidden();
//print "Write access is ok"; //print "Write access is ok";
} }
@ -253,10 +261,10 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
} }
// Check delete permission from module // Check delete permission from module
$deleteok=1; $deleteok=1; $nbko=0;
if ((GETPOST("action") == 'confirm_delete' && GETPOST("confirm") == 'yes') || GETPOST("action") == 'delete') if ((GETPOST("action") == 'confirm_delete' && GETPOST("confirm") == 'yes') || GETPOST("action") == 'delete')
{ {
foreach ($features as $feature) foreach ($featuresarray as $feature)
{ {
if ($feature == 'contact') if ($feature == 'contact')
{ {
@ -312,7 +320,7 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
// is linked to a company allowed to $user. // is linked to a company allowed to $user.
if (! empty($objectid) && $objectid > 0) if (! empty($objectid) && $objectid > 0)
{ {
foreach ($features as $feature) foreach ($featuresarray as $feature)
{ {
$sql=''; $sql='';

View File

@ -175,10 +175,10 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2002__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/compta/dons/liste.php?leftmenu=donations&amp;mainmenu=accountancy', 'List', 1, 'donations', '$user->rights->don->lire', '', 2, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2002__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/compta/dons/liste.php?leftmenu=donations&amp;mainmenu=accountancy', 'List', 1, 'donations', '$user->rights->don->lire', '', 2, 1, __ENTITY__);
--insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2003__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/compta/dons/stats.php?leftmenu=donations&amp;mainmenu=accountancy', 'Statistics', 1, 'donations', '$user->rights->don->lire', '', 2, 2, __ENTITY__); --insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2003__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/compta/dons/stats.php?leftmenu=donations&amp;mainmenu=accountancy', 'Statistics', 1, 'donations', '$user->rights->don->lire', '', 2, 2, __ENTITY__);
-- Special expenses -- Special expenses
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled || $conf->salaries->enabled', __HANDLER__, 'left', 2200__+MAX_llx_menu__, 'accountancy', 'tax', 6__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax&amp;mainmenu=accountancy', 'MenuSpecialExpenses', 0, 'compta', '1', '', 0, 6, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled || $conf->salaries->enabled', __HANDLER__, 'left', 2200__+MAX_llx_menu__, 'accountancy', 'tax', 6__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax&amp;mainmenu=accountancy', 'MenuSpecialExpenses', 0, 'compta', '(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)', '', 0, 6, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled', __HANDLER__, 'left', 2201__+MAX_llx_menu__, 'accountancy', 'tax_sal', 2200__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary&amp;mainmenu=accountancy', 'Salaries', 1, 'salaries', '$user->rights->tax->charges->lire', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled', __HANDLER__, 'left', 2210__+MAX_llx_menu__, 'accountancy', 'tax_sal', 2200__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary&amp;mainmenu=accountancy', 'Salaries', 1, 'salaries', '$user->rights->salaries->read', '', 0, 1, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2202__+MAX_llx_menu__, 'accountancy', '', 2201__+MAX_llx_menu__, '/compta/salaries/fiche.php?leftmenu=tax_salary&amp;action=create', 'NewPayment', 2, 'companies', '$user->rights->tax->charges->creer', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2211__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/salaries/fiche.php?leftmenu=tax_salary&amp;action=create', 'NewPayment', 2, 'companies', '$user->rights->salaries->write', '', 0, 2, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2203__+MAX_llx_menu__, 'accountancy', '', 2201__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary', 'Payments', 2, 'companies', '$user->rights->tax->charges->lire', '', 0, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2212__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary', 'Payments', 2, 'companies', '$user->rights->salaries->read', '', 0, 3, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled', __HANDLER__, 'left', 2250__+MAX_llx_menu__, 'accountancy', 'tax_social', 2200__+MAX_llx_menu__, '/compta/sociales/index.php?leftmenu=tax_social', 'SocialContributions', 1, '', '$user->rights->tax->charges->lire', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled', __HANDLER__, 'left', 2250__+MAX_llx_menu__, 'accountancy', 'tax_social', 2200__+MAX_llx_menu__, '/compta/sociales/index.php?leftmenu=tax_social', 'SocialContributions', 1, '', '$user->rights->tax->charges->lire', '', 0, 1, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2251__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/sociales/charges.php?leftmenu=tax_social&amp;action=create', 'MenuNewSocialContribution', 2, '', '$user->rights->tax->charges->creer', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2251__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/sociales/charges.php?leftmenu=tax_social&amp;action=create', 'MenuNewSocialContribution', 2, '', '$user->rights->tax->charges->creer', '', 0, 2, __ENTITY__);
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2252__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax_social&amp;mainmenu=accountancy&amp;mode=sconly', 'Payments', 2, '', '$user->rights->tax->charges->lire', '', 0, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2252__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax_social&amp;mainmenu=accountancy&amp;mode=sconly', 'Payments', 2, '', '$user->rights->tax->charges->lire', '', 0, 3, __ENTITY__);

View File

@ -797,42 +797,46 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
{ {
global $mysoc; global $mysoc;
$newmenu->add("/compta/charges/index.php?leftmenu=tax&amp;mainmenu=accountancy",$langs->trans("MenuSpecialExpenses"), 0, $user->rights->tax->charges->lire, '', $mainmenu, 'tax'); $permtoshowmenu=((! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read));
$newmenu->add("/compta/charges/index.php?leftmenu=tax&amp;mainmenu=accountancy",$langs->trans("MenuSpecialExpenses"), 0, $permtoshowmenu, '', $mainmenu, 'tax');
// Salaries // Salaries
if (! empty($conf->salaries->enabled)) if (! empty($conf->salaries->enabled))
{ {
$langs->load("salaries"); $langs->load("salaries");
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary&amp;mainmenu=accountancy",$langs->trans("Salaries"),1,$user->rights->salaries->read, '', $mainmenu, 'tax_salary'); $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary&amp;mainmenu=accountancy",$langs->trans("Salaries"),1,$user->rights->salaries->read, '', $mainmenu, 'tax_salary');
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/salaries/fiche.php?leftmenu=tax_salary&action=create",$langs->trans("NewPayment"),2,$user->rights->salaries->create); if (empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/fiche.php?leftmenu=tax_salary&action=create",$langs->trans("NewPayment"),2,$user->rights->salaries->write);
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->read); if (empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->read);
} }
// Social contributions // Social contributions
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/sociales/index.php?leftmenu=tax_social",$langs->trans("MenuSocialContributions"),1,$user->rights->tax->charges->lire); if (! empty($conf->tax->enabled))
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/sociales/charges.php?leftmenu=tax_social&action=create",$langs->trans("MenuNewSocialContribution"), 2, $user->rights->tax->charges->creer);
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/charges/index.php?leftmenu=tax_social&amp;mainmenu=accountancy&amp;mode=sconly",$langs->trans("Payments"), 2, $user->rights->tax->charges->lire);
// VAT
if (empty($conf->global->TAX_DISABLE_VAT_MENUS))
{ {
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/tva/index.php?leftmenu=tax_vat&amp;mainmenu=accountancy",$langs->trans("VAT"),1,$user->rights->tax->charges->lire, '', $mainmenu, 'tax_vat'); $newmenu->add("/compta/sociales/index.php?leftmenu=tax_social",$langs->trans("MenuSocialContributions"),1,$user->rights->tax->charges->lire);
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/tva/fiche.php?leftmenu=tax_vat&action=create",$langs->trans("NewPayment"),2,$user->rights->tax->charges->creer); if (empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/sociales/charges.php?leftmenu=tax_social&action=create",$langs->trans("MenuNewSocialContribution"), 2, $user->rights->tax->charges->creer);
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/tva/reglement.php?leftmenu=tax_vat",$langs->trans("Payments"),2,$user->rights->tax->charges->lire); if (empty($leftmenu) || preg_match('/^tax_social/i',$leftmenu)) $newmenu->add("/compta/charges/index.php?leftmenu=tax_social&amp;mainmenu=accountancy&amp;mode=sconly",$langs->trans("Payments"), 2, $user->rights->tax->charges->lire);
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/tva/clients.php?leftmenu=tax_vat", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire); // VAT
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/tva/quadri_detail.php?leftmenu=tax_vat", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire); if (empty($conf->global->TAX_DISABLE_VAT_MENUS))
global $mysoc;
//Local Taxes
if($mysoc->country_code=='ES' && (isset($mysoc->localtax2_assuj) && $mysoc->localtax2_assuj=="1"))
{ {
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/localtax/index.php?leftmenu=tax_vat&amp;mainmenu=accountancy",$langs->transcountry("LT2",$mysoc->country_code),1,$user->rights->tax->charges->lire); $newmenu->add("/compta/tva/index.php?leftmenu=tax_vat&amp;mainmenu=accountancy",$langs->trans("VAT"),1,$user->rights->tax->charges->lire, '', $mainmenu, 'tax_vat');
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/localtax/fiche.php?leftmenu=tax_vat&action=create",$langs->trans("NewPayment"),2,$user->rights->tax->charges->creer); if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/fiche.php?leftmenu=tax_vat&action=create",$langs->trans("NewPayment"),2,$user->rights->tax->charges->creer);
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/localtax/reglement.php?leftmenu=tax_vat",$langs->trans("Payments"),2,$user->rights->tax->charges->lire); if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/reglement.php?leftmenu=tax_vat",$langs->trans("Payments"),2,$user->rights->tax->charges->lire);
if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/localtax/clients.php?leftmenu=tax_vat", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire); if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/clients.php?leftmenu=tax_vat", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire);
//if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/localtax/quadri_detail.php?leftmenu=tax_vat", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire); if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/tva/quadri_detail.php?leftmenu=tax_vat", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire);
global $mysoc;
//Local Taxes
if($mysoc->country_code=='ES' && (isset($mysoc->localtax2_assuj) && $mysoc->localtax2_assuj=="1"))
{
if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/index.php?leftmenu=tax_vat&amp;mainmenu=accountancy",$langs->transcountry("LT2",$mysoc->country_code),1,$user->rights->tax->charges->lire);
if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/fiche.php?leftmenu=tax_vat&action=create",$langs->trans("NewPayment"),2,$user->rights->tax->charges->creer);
if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/reglement.php?leftmenu=tax_vat",$langs->trans("Payments"),2,$user->rights->tax->charges->lire);
if (empty($leftmenu) || preg_match('/^tax_vat/i',$leftmenu)) $newmenu->add("/compta/localtax/clients.php?leftmenu=tax_vat", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire);
//if (empty($leftmenu) || preg_match('/^tax/i',$leftmenu)) $newmenu->add("/compta/localtax/quadri_detail.php?leftmenu=tax_vat", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire);
}
} }
} }
} }
// Compta simple // Compta simple

View File

@ -206,6 +206,32 @@ class modProduct extends DolibarrModules
if (! empty($conf->fournisseur->enabled)) $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_fournisseur_price as pf ON pf.fk_product = p.rowid LEFT JOIN '.MAIN_DB_PREFIX.'societe s ON s.rowid = pf.fk_soc'; if (! empty($conf->fournisseur->enabled)) $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_fournisseur_price as pf ON pf.fk_product = p.rowid LEFT JOIN '.MAIN_DB_PREFIX.'societe s ON s.rowid = pf.fk_soc';
$this->export_sql_end[$r] .=' WHERE p.fk_product_type = 0 AND p.entity IN ('.getEntity("product", 1).')'; $this->export_sql_end[$r] .=' WHERE p.fk_product_type = 0 AND p.entity IN ('.getEntity("product", 1).')';
if (! empty($conf->global->PRODUIT_MULTIPRICES))
{
// Exports product multiprice
$r++;
$this->export_code[$r]=$this->rights_class.'_'.$key;
$this->export_label[$r]="ProductsMultiPrice"; // Translation key (used only if key ExportDataset_xxx_z not found)
$this->export_permission[$r]=array(array("produit","export"));
$this->export_fields_array[$r]=array('p.rowid'=>"Id",'p.ref'=>"Ref",
'pr.price_base_type'=>"PriceLevelPriceBase",'pr.price_level'=>"PriceLevel",
'pr.price'=>"PriceLevelUnitPriceHT",'pr.price_ttc'=>"PriceLevelUnitPriceTTC",
'pr.price_min'=>"MinPriceLevelUnitPriceHT",'pr.price_min_ttc'=>"MinPriceLevelUnitPriceTTC",
'pr.tva_tx'=>'PriceLevelVATRate',
'pr.date_price'=>'DateCreation');
$this->export_entities_array[$r]=array('p.rowid'=>"product",'p.ref'=>"product",
'pr.price_base_type'=>"product",'pr.price_level'=>"product",'pr.price'=>"product",
'pr.price_ttc'=>"product",
'pr.price_min'=>"MinPriceLevelUnitPriceHT",'pr.price_min_ttc'=>"MinPriceLevelUnitPriceTTC",
'pr.tva_tx'=>'product',
'pr.date_price'=>"product");
$this->export_sql_start[$r]='SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'product as p';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_price as pr ON p.rowid = pr.fk_product';
$this->export_sql_end[$r] .=' WHERE p.fk_product_type = 0 AND p.entity IN ('.getEntity("product", 1).')';
}
// Imports // Imports
//-------- //--------
@ -239,15 +265,15 @@ class modProduct extends DolibarrModules
if (! empty($conf->fournisseur->enabled)) if (! empty($conf->fournisseur->enabled))
{ {
// Import product suppliers // Import suppliers prices (note: this code is duplicated into module service)
$r++; $r++;
$this->import_code[$r]=$this->rights_class.'_'.$r; $this->import_code[$r]=$this->rights_class.'_supplierprices';
$this->import_label[$r]="SuppliersPrices"; // Translation key $this->import_label[$r]="SuppliersPricesOfProductsOrServices"; // Translation key
$this->import_icon[$r]='product'; $this->import_icon[$r]=$this->picto;
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon $this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('sp'=>MAIN_DB_PREFIX.'product_fournisseur_price'); $this->import_tables_array[$r]=array('sp'=>MAIN_DB_PREFIX.'product_fournisseur_price');
$this->import_tables_creator_array[$r]=array('sp'=>'fk_user'); $this->import_tables_creator_array[$r]=array('sp'=>'fk_user');
$this->import_fields_array[$r]=array('sp.fk_product'=>"Product*", $this->import_fields_array[$r]=array('sp.fk_product'=>"ProductOrService*",
'sp.fk_soc'=>"Supplier*", 'sp.ref_fourn'=>'SupplierRef', 'sp.quantity'=>"QtyMin*", 'sp.tva_tx'=>'VATRate', 'sp.fk_soc'=>"Supplier*", 'sp.ref_fourn'=>'SupplierRef', 'sp.quantity'=>"QtyMin*", 'sp.tva_tx'=>'VATRate',
'sp.price'=>"PriceQtyMinHT*", 'sp.price'=>"PriceQtyMinHT*",
'sp.unitprice'=>'UnitPriceHT*', // TODO Make this file not required and calculate it from price and qty 'sp.unitprice'=>'UnitPriceHT*', // TODO Make this file not required and calculate it from price and qty
@ -266,55 +292,29 @@ class modProduct extends DolibarrModules
); );
} }
if (! empty($conf->global->PRODUIT_MULTIPRICES)) { if (! empty($conf->global->PRODUIT_MULTIPRICES))
// Exports product multiprice {
//-------- // Import product multiprice
$r++; $r++;
$this->export_code[$r]=$this->rights_class.'_'.$r; $this->import_code[$r]=$this->rights_class.'_multiprice';
$this->export_label[$r]="ProductsMultiPrice"; // Translation key (used only if key ExportDataset_xxx_z not found) $this->import_label[$r]="ProductsOrServiceMultiPrice"; // Translation key
$this->export_permission[$r]=array(array("produit","export")); $this->import_icon[$r]=$this->picto;
$this->export_fields_array[$r]=array('p.rowid'=>"Id",'p.ref'=>"Ref", $this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon
'pr.price_base_type'=>"PriceLevelPriceBase",'pr.price_level'=>"PriceLevel", $this->import_tables_array[$r]=array('pr'=>MAIN_DB_PREFIX.'product_price');
'pr.price'=>"PriceLevelUnitPriceHT",'pr.price_ttc'=>"PriceLevelUnitPriceTTC", $this->import_tables_creator_array[$r]=array('pr'=>'fk_user_author'); // Fields to store import user id
'pr.price_min'=>"MinPriceLevelUnitPriceHT",'pr.price_min_ttc'=>"MinPriceLevelUnitPriceTTC", $this->import_fields_array[$r]=array('pr.fk_product'=>"ProductRowid*",
'pr.tva_tx'=>'PriceLevelVATRate', 'pr.price_base_type'=>"PriceLevelPriceBase",'pr.price_level'=>"PriceLevel",
'pr.date_price'=>'DateCreation'); 'pr.price'=>"PriceLevelUnitPriceHT",'pr.price_ttc'=>"PriceLevelUnitPriceTTC",
$this->export_entities_array[$r]=array('p.rowid'=>"product",'p.ref'=>"product", 'pr.price_min'=>"MinPriceLevelUnitPriceHT",'pr.price_min_ttc'=>"MinPriceLevelUnitPriceTTC",
'pr.price_base_type'=>"product",'pr.price_level'=>"product",'pr.price'=>"product", 'pr.tva_tx'=>'PriceLevelVATRate',
'pr.price_ttc'=>"product", 'pr.date_price'=>'DateCreation*');
'pr.price_min'=>"MinPriceLevelUnitPriceHT",'pr.price_min_ttc'=>"MinPriceLevelUnitPriceTTC", $this->import_regex_array[$r]=array('pr.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$');
'pr.tva_tx'=>'product', $this->import_examplevalues_array[$r]=array('pr.fk_product'=>"1",
'pr.date_price'=>"product"); 'pr.price_base_type'=>"HT",'pr.price_level'=>"1",
$this->export_sql_start[$r]='SELECT DISTINCT '; 'pr.price'=>"100",'pr.price_ttc'=>"110",
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'product as p'; 'pr.price_min'=>"100",'pr.price_min_ttc'=>"110",
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_price as pr ON p.rowid = pr.fk_product'; 'pr.tva_tx'=>'19.6',
$this->export_sql_end[$r] .=' WHERE p.fk_product_type = 0 AND p.entity IN ('.getEntity("product", 1).')'; 'pr.date_price'=>'2013-04-10');
// Import product multiprice
//--------
$r=0;
$r++;
$this->import_code[$r]=$this->rights_class.'_'.$r;
$this->import_label[$r]="ProductsMultiPrice"; // Translation key
$this->import_icon[$r]=$this->picto;
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('pr'=>MAIN_DB_PREFIX.'product_price');
$this->import_tables_creator_array[$r]=array('pr'=>'fk_user_author'); // Fields to store import user id
$this->import_fields_array[$r]=array('pr.fk_product'=>"ProductRowid*",
'pr.price_base_type'=>"PriceLevelPriceBase",'pr.price_level'=>"PriceLevel",
'pr.price'=>"PriceLevelUnitPriceHT",'pr.price_ttc'=>"PriceLevelUnitPriceTTC",
'pr.price_min'=>"MinPriceLevelUnitPriceHT",'pr.price_min_ttc'=>"MinPriceLevelUnitPriceTTC",
'pr.tva_tx'=>'PriceLevelVATRate',
'pr.date_price'=>'DateCreation*');
$this->import_regex_array[$r]=array('pr.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$');
$this->import_examplevalues_array[$r]=array('pr.fk_product'=>"1",
'pr.price_base_type'=>"HT",'pr.price_level'=>"1",
'pr.price'=>"100",'pr.price_ttc'=>"110",
'pr.price_min'=>"100",'pr.price_min_ttc'=>"110",
'pr.tva_tx'=>'19.6',
'pr.date_price'=>'2013-04-10');
} }
} }

View File

@ -1,9 +1,10 @@
<?php <?php
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org> * Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -93,15 +94,15 @@ class modSalaries extends DolibarrModules
$this->rights[$r][5] = ''; $this->rights[$r][5] = '';
$r++; $r++;
$this->rights[$r][0] = 511; $this->rights[$r][0] = 512;
$this->rights[$r][1] = 'Create/modify salaries'; $this->rights[$r][1] = 'Create/modify salaries';
$this->rights[$r][2] = 'w'; $this->rights[$r][2] = 'w';
$this->rights[$r][3] = 0; $this->rights[$r][3] = 0;
$this->rights[$r][4] = 'create'; $this->rights[$r][4] = 'write';
$this->rights[$r][5] = ''; $this->rights[$r][5] = '';
$r++; $r++;
$this->rights[$r][0] = 512; $this->rights[$r][0] = 514;
$this->rights[$r][1] = 'Delete salaries'; $this->rights[$r][1] = 'Delete salaries';
$this->rights[$r][2] = 'd'; $this->rights[$r][2] = 'd';
$this->rights[$r][3] = 0; $this->rights[$r][3] = 0;
@ -109,7 +110,7 @@ class modSalaries extends DolibarrModules
$this->rights[$r][5] = ''; $this->rights[$r][5] = '';
$r++; $r++;
$this->rights[$r][0] = 515; $this->rights[$r][0] = 517;
$this->rights[$r][1] = 'Export salaries'; $this->rights[$r][1] = 'Export salaries';
$this->rights[$r][2] = 'r'; $this->rights[$r][2] = 'r';
$this->rights[$r][3] = 0; $this->rights[$r][3] = 0;

View File

@ -168,6 +168,35 @@ class modService extends DolibarrModules
$this->export_sql_end[$r] .=' WHERE p.fk_product_type = 1 AND p.entity IN ('.getEntity("product", 1).')'; $this->export_sql_end[$r] .=' WHERE p.fk_product_type = 1 AND p.entity IN ('.getEntity("product", 1).')';
if (empty($conf->product->enabled)) // We enable next import templates only if module product not already enabled (to avoid duplicate entries)
{
if (! empty($conf->global->PRODUIT_MULTIPRICES))
{
// Exports product multiprice
$r++;
$this->export_code[$r]=$this->rights_class.'_'.$r;
$this->export_label[$r]="ProductsMultiPrice"; // Translation key (used only if key ExportDataset_xxx_z not found)
$this->export_permission[$r]=array(array("produit","export"));
$this->export_fields_array[$r]=array('p.rowid'=>"Id",'p.ref'=>"Ref",
'pr.price_base_type'=>"PriceLevelPriceBase",'pr.price_level'=>"PriceLevel",
'pr.price'=>"PriceLevelUnitPriceHT",'pr.price_ttc'=>"PriceLevelUnitPriceTTC",
'pr.price_min'=>"MinPriceLevelUnitPriceHT",'pr.price_min_ttc'=>"MinPriceLevelUnitPriceTTC",
'pr.tva_tx'=>'PriceLevelVATRate',
'pr.date_price'=>'DateCreation');
$this->export_entities_array[$r]=array('p.rowid'=>"product",'p.ref'=>"product",
'pr.price_base_type'=>"product",'pr.price_level'=>"product",'pr.price'=>"product",
'pr.price_ttc'=>"product",
'pr.price_min'=>"MinPriceLevelUnitPriceHT",'pr.price_min_ttc'=>"MinPriceLevelUnitPriceTTC",
'pr.tva_tx'=>'product',
'pr.date_price'=>"product");
$this->export_sql_start[$r]='SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'product as p';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_price as pr ON p.rowid = pr.fk_product';
$this->export_sql_end[$r] .=' WHERE p.fk_product_type = 0 AND p.entity IN ('.getEntity("product", 1).')';
}
}
// Imports // Imports
//-------- //--------
$r=0; $r=0;
@ -196,6 +225,64 @@ class modService extends DolibarrModules
$this->import_fieldshidden_array[$r]=array('extra.fk_object'=>'lastrowid-'.MAIN_DB_PREFIX.'product'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent) $this->import_fieldshidden_array[$r]=array('extra.fk_object'=>'lastrowid-'.MAIN_DB_PREFIX.'product'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent)
$this->import_regex_array[$r]=array('p.ref'=>'[^ ]','p.tosell'=>'^[0|1]$','p.tobuy'=>'^[0|1]$','p.fk_product_type'=>'^[0|1]$','p.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$'); $this->import_regex_array[$r]=array('p.ref'=>'[^ ]','p.tosell'=>'^[0|1]$','p.tobuy'=>'^[0|1]$','p.fk_product_type'=>'^[0|1]$','p.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$');
$this->import_examplevalues_array[$r]=array('p.ref'=>"PR123456",'p.label'=>"My product",'p.description'=>"This is a description example for record",'p.note'=>"Some note",'p.price'=>"100",'p.price_ttc'=>"110",'p.tva_tx'=>'10','p.tosell'=>"0 or 1",'p.tobuy'=>"0 or 1",'p.fk_product_type'=>"0 for product/1 for service",'p.finished'=>'','p.duration'=>"1y",'p.datec'=>'2008-12-31'); $this->import_examplevalues_array[$r]=array('p.ref'=>"PR123456",'p.label'=>"My product",'p.description'=>"This is a description example for record",'p.note'=>"Some note",'p.price'=>"100",'p.price_ttc'=>"110",'p.tva_tx'=>'10','p.tosell'=>"0 or 1",'p.tobuy'=>"0 or 1",'p.fk_product_type'=>"0 for product/1 for service",'p.finished'=>'','p.duration'=>"1y",'p.datec'=>'2008-12-31');
if (empty($conf->product->enabled)) // We enable next import templates only if module product not already enabled (to avoid duplicate entries)
{
if (! empty($conf->fournisseur->enabled))
{
// Import suppliers prices (note: this code is duplicated into module product)
$r++;
$this->import_code[$r]=$this->rights_class.'_supplierprices';
$this->import_label[$r]="SuppliersPricesOfProductsOrServices"; // Translation key
$this->import_icon[$r]=$this->picto;
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('sp'=>MAIN_DB_PREFIX.'product_fournisseur_price');
$this->import_tables_creator_array[$r]=array('sp'=>'fk_user');
$this->import_fields_array[$r]=array('sp.fk_product'=>"ProductOrService*",
'sp.fk_soc'=>"Supplier*", 'sp.ref_fourn'=>'SupplierRef', 'sp.quantity'=>"QtyMin*", 'sp.tva_tx'=>'VATRate',
'sp.price'=>"PriceQtyMinHT*",
'sp.unitprice'=>'UnitPriceHT*', // TODO Make this file not required and calculate it from price and qty
'sp.remise_percent'=>'DiscountQtyMin'
);
$this->import_convertvalue_array[$r]=array(
'sp.fk_soc'=>array('rule'=>'fetchidfromref','classfile'=>'/societe/class/societe.class.php','class'=>'Societe','method'=>'fetch','element'=>'ThirdParty'),
'sp.fk_product'=>array('rule'=>'fetchidfromref','classfile'=>'/product/class/product.class.php','class'=>'Product','method'=>'fetch','element'=>'Product')
);
$this->import_examplevalues_array[$r]=array('sp.fk_product'=>"PREF123456",
'sp.fk_soc'=>"My Supplier",'sp.ref_fourn'=>"SupplierRef", 'sp.quantity'=>"1", 'sp.tva_tx'=>'21',
'sp.price'=>"50",
'sp.unitprice'=>'50',
'sp.remise_percent'=>'0'
);
}
if (! empty($conf->global->PRODUIT_MULTIPRICES))
{
// Import product multiprice
$r++;
$this->import_code[$r]=$this->rights_class.'_multiprice';
$this->import_label[$r]="ProductsOrServiceMultiPrice"; // Translation key
$this->import_icon[$r]=$this->picto;
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('pr'=>MAIN_DB_PREFIX.'product_price');
$this->import_tables_creator_array[$r]=array('pr'=>'fk_user_author'); // Fields to store import user id
$this->import_fields_array[$r]=array('pr.fk_product'=>"ProductRowid*",
'pr.price_base_type'=>"PriceLevelPriceBase",'pr.price_level'=>"PriceLevel",
'pr.price'=>"PriceLevelUnitPriceHT",'pr.price_ttc'=>"PriceLevelUnitPriceTTC",
'pr.price_min'=>"MinPriceLevelUnitPriceHT",'pr.price_min_ttc'=>"MinPriceLevelUnitPriceTTC",
'pr.tva_tx'=>'PriceLevelVATRate',
'pr.date_price'=>'DateCreation*');
$this->import_regex_array[$r]=array('pr.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$');
$this->import_examplevalues_array[$r]=array('pr.fk_product'=>"1",
'pr.price_base_type'=>"HT",'pr.price_level'=>"1",
'pr.price'=>"100",'pr.price_ttc'=>"110",
'pr.price_min'=>"100",'pr.price_min_ttc'=>"110",
'pr.tva_tx'=>'19.6',
'pr.date_price'=>'2013-04-10');
}
}
} }

View File

@ -329,7 +329,6 @@ class doc_generic_odt extends ModeleThirdPartyDoc
foreach($contact_arrray as $array_key => $contact_id) foreach($contact_arrray as $array_key => $contact_id)
{ {
$res_contact = $contactstatic->fetch($contact_id); $res_contact = $contactstatic->fetch($contact_id);
//$contact['fullname']=$objectdetail->getFullName($outputlangs,1);
$tmparray=$this->get_substitutionarray_contact($contactstatic,$outputlangs,'contact'); $tmparray=$this->get_substitutionarray_contact($contactstatic,$outputlangs,'contact');
foreach($tmparray as $key => $val) foreach($tmparray as $key => $val)
{ {

View File

@ -1,330 +0,0 @@
<?php
/* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2010-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Need to have following variables defined:
* $conf
* $langs
* $dateSelector
* $this (invoice, order, ...)
* $line defined
*/
$usemargins=0;
if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) $usemargins=1;
?>
<!-- BEGIN PHP TEMPLATE freeproductline_create.tpl.php -->
<tr class="liste_titre nodrag nodrop">
<td<?php echo (! empty($conf->global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="2"' : ''); ?>>
<div id="add"></div>
<span class="hideonsmartphone"><?php echo $langs->trans('AddNewLine').' - ' ?></span><?php echo $langs->trans("FreeZone"); ?>
</td>
<td align="right"><?php echo $langs->trans('VAT'); ?></td>
<td align="right"><?php echo $langs->trans('PriceUHT'); ?></td>
<td align="right"><?php echo $langs->trans('Qty'); ?></td>
<td align="right"><?php echo $langs->trans('ReductionShort'); ?></td>
<?php
$colspan = 4;
if (! empty($usemargins))
{
?>
<td align="right">
<?php
if ($conf->global->MARGIN_TYPE == "1")
echo $langs->trans('BuyingPrice');
else
echo $langs->trans('CostPrice');
?>
</td>
<?php
if ($user->rights->margins->creer)
{
if(! empty($conf->global->DISPLAY_MARGIN_RATES))
{
echo '<td align="right">'.$langs->trans('MarginRate').'</td>';
}
if(! empty($conf->global->DISPLAY_MARK_RATES))
{
echo '<td align="right">'.$langs->trans('MarkRate').'</td>';
}
}
else
{
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) $colspan++;
if (! empty($conf->global->DISPLAY_MARK_RATES)) $colspan++;
}
}
?>
<td colspan="<?php echo $colspan; ?>">&nbsp;</td>
</tr>
<tr <?php echo $bcnd[$var]; ?>>
<?php
if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) {
$coldisplay=2; }
else {
$coldisplay=0; }
?>
<td<?php echo (! empty($conf->global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="2"' : ''); ?>>
<?php
echo '<span>';
echo $form->select_type_of_lines(isset($_POST["type"])?$_POST["type"]:-1,'type',1);
echo '</span>';
if (is_object($hookmanager))
{
$parameters=array('fk_parent_line'=>GETPOST('fk_parent_line','int'));
$reshook=$hookmanager->executeHooks('formCreateProductOptions',$parameters,$object,$action);
}
if ((! empty($conf->product->enabled) && ! empty($conf->service->enabled)) || (empty($conf->product->enabled) && empty($conf->service->enabled))) echo '<br>';
// Editor wysiwyg
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
$nbrows=ROWS_2;
$enabled=(! empty($conf->global->FCKEDITOR_ENABLE_DETAILS)?$conf->global->FCKEDITOR_ENABLE_DETAILS:0);
if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT;
$doleditor=new DolEditor('dp_desc',GETPOST('dp_desc'),'',100,'dolibarr_details','',false,true,$enabled,$nbrows,70);
$doleditor->Create();
?>
</td>
<td align="right"><?php
if ($seller->tva_assuj == "0") echo '<input type="hidden" name="tva_tx" value="0">0';
else echo $form->load_tva('tva_tx', (isset($_POST["tva_tx"])?$_POST["tva_tx"]:-1), $seller, $buyer);
?>
</td>
<td align="right"><input type="text" size="5" name="price_ht" class="flat" value="<?php echo (isset($_POST["price_ht"])?$_POST["price_ht"]:''); ?>"></td>
<td align="right"><input type="text" size="2" name="qty" class="flat" value="<?php echo (isset($_POST["qty"])?$_POST["qty"]:1); ?>"></td>
<td align="right" class="nowrap"><input type="text" size="1" class="flat" value="<?php echo (isset($_POST["remise_percent"])?$_POST["remise_percent"]:$buyer->remise_client); ?>" name="remise_percent"><span class="hideonsmartphone">%</span></td>
<?php
$colspan = 4;
if (! empty($usemargins))
{
?>
<td align="right">
<input type="text" size="5" name="buying_price" class="flat" value="<?php echo (isset($_POST["buying_price"])?$_POST["buying_price"]:''); ?>">
</td>
<?php
$colspan++;
$coldisplay++;
if ($user->rights->margins->creer)
{
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) {
echo '<td align="right" class="nowrap"><input type="text" size="2" name="np_marginRate" value="'.(isset($_POST["np_marginRate"])?$_POST["np_marginRate"]:'').'"><span class="hideonsmartphone">%</span></td>';
$colspan++;
$coldisplay++;
}
if (! empty($conf->global->DISPLAY_MARK_RATES)) {
echo '<td align="right" class="nowrap"><input type="text" size="2" name="np_markRate" value="'.(isset($_POST["np_markRate"])?$_POST["np_markRate"]:'').'"><span class="hideonsmartphone">%</span></td>';
$colspan++;
$coldisplay++;
}
}
else
{
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) {
$colspan++;
$coldisplay++;
}
if (! empty($conf->global->DISPLAY_MARK_RATES)) {
$colspan++;
$coldisplay++;
}
}
}
?>
<td align="center" valign="middle" colspan="<?php echo $colspan; ?>">
<input type="submit" class="button" value="<?php echo $langs->trans('Add'); ?>" name="addline_libre" id="addline_libre">
</td>
<?php
//Line extrafield
if (!empty($extrafieldsline)) {
if ($this->table_element_line=='commandedet') {
$newline = new OrderLine($this->db);
}
elseif ($this->table_element_line=='propaldet') {
$newline = new PropaleLigne($this->db);
}
elseif ($this->table_element_line=='facturedet') {
$newline = new FactureLigne($this->db);
}
if (is_object($newline)) {
print $newline->showOptionals($extrafieldsline, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay+8));
}
}
?>
</tr>
<?php
if (! empty($conf->service->enabled) && $dateSelector)
{
if(! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) $colspan = 10;
else $colspan = 9;
if (! empty($usemargins))
{
$colspan++; // For the buying price
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) $colspan++;
if (! empty($conf->global->DISPLAY_MARK_RATES)) $colspan++;
}
?>
<tr <?php echo $bcnd[$var]; ?>>
<td colspan="<?php echo $colspan; ?>">
<?php
if (! empty($object->element) && $object->element == 'contrat')
{
print $langs->trans("DateStartPlanned").' ';
$form->select_date('',"date_start",$usehm,$usehm,1,"addline_sl");
print ' &nbsp; '.$langs->trans("DateEndPlanned").' ';
$form->select_date('',"date_end",$usehm,$usehm,1,"addline_sl");
}
else
{
echo $langs->trans('ServiceLimitedDuration').' '.$langs->trans('From').' ';
echo $form->select_date('','date_start',empty($conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE)?0:1,empty($conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE)?0:1,1,"addproduct");
echo ' '.$langs->trans('to').' ';
echo $form->select_date('','date_end',empty($conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE)?0:1,empty($conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE)?0:1,1,"addproduct");
}
?>
</td>
</tr>
<?php
}
?>
<?php
if (! empty($usemargins) && $user->rights->margins->creer)
{
?>
<script type="text/javascript">
jQuery(document).ready(function() {
<?php
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) { ?>
$('#addline_libre').click(function (e) {
return checkFreeLine(e, "np_marginRate");
});
$("input[name='np_marginRate']:first").blur(function(e) {
return checkFreeLine(e, "np_marginRate");
});
<?php
}
if (! empty($conf->global->DISPLAY_MARK_RATES)) { ?>
$('#addline_libre').click(function (e) {
return checkFreeLine(e, "np_markRate");
});
$("input[name='np_markRate']:first").blur(function(e) {
return checkFreeLine(e, "np_markRate");
});
<?php
}
?>
});
// TODO This works for french numbers only
function checkFreeLine(e, npRate)
{
var buying_price = $("input[name='buying_price']:first");
var remise = $("input[name='remise_percent']:first");
var rate = $("input[name='"+npRate+"']:first");
if (rate.val() == '')
return true;
if (! $.isNumeric(rate.val().replace(',','.')))
{
alert('<?php echo dol_escape_js($langs->trans("rateMustBeNumeric")); ?>');
e.stopPropagation();
setTimeout(function () { rate.focus() }, 50);
return false;
}
if (npRate == "np_markRate" && rate.val() >= 100)
{
alert('<?php echo dol_escape_js($langs->trans("markRateShouldBeLesserThan100")); ?>');
e.stopPropagation();
setTimeout(function () { rate.focus() }, 50);
return false;
}
var price = 0;
remisejs=price2numjs(remise.val());
if (remisejs != 100)
{
bpjs=price2numjs(buying_price.val());
ratejs=price2numjs(rate.val());
if (npRate == "marginRate")
price = ((bpjs * (1 + ratejs / 100)) / (1 - remisejs / 100));
else if (npRate == "markRate")
price = ((bpjs / (1 - ratejs / 100)) / (1 - remisejs / 100));
}
$("input[name='price_ht']:first").val(price); // TODO Must use a function like php price to have here a formated value
return true;
}
/* Function similar to price2num in PHP */
function price2numjs(num)
{
<?php
$dec=','; $thousand=' ';
if ($langs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->transnoentitiesnoconv("SeparatorDecimal");
if ($langs->transnoentitiesnoconv("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->transnoentitiesnoconv("SeparatorThousand");
if ($thousand == 'None') $thousand='';
print "var dec='".$dec."'; var thousand='".$thousand."';\n";
?>
var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>;
var main_rounding_unit = <?php echo $conf->global->MAIN_MAX_DECIMALS_UNIT; ?>;
var main_rounding_tot = <?php echo $conf->global->MAIN_MAX_DECIMALS_TOT; ?>;
var amount = num.toString();
// rounding for unit price
var rounding = main_rounding_unit;
var pos = amount.indexOf(dec);
var decpart = '';
if (pos >= 0) decpart = amount.substr(pos+1).replace('/0+$/i',''); // Supprime les 0 de fin de partie decimale
var nbdec = decpart.length;
if (nbdec > rounding) rounding = nbdec;
// If rounding higher than max shown
if (rounding > main_max_dec_shown) rounding = main_max_dec_shown;
if (thousand != ',' && thousand != '.') amount=amount.replace(',','.');
amount=amount.replace(' ',''); // To avoid spaces
amount=amount.replace(thousand,''); // Replace of thousand before replace of dec to avoid pb if thousand is .
amount=amount.replace(dec,'.');
return parseFloat(amount).toFixed(rounding);
}
</script>
<?php
}
?>
<!-- END PHP TEMPLATE freeproductline_create.tpl.php -->

View File

@ -41,9 +41,7 @@ if (empty($inputalsopricewithtax)) $inputalsopricewithtax=0;
// Define colspan for button Add // Define colspan for button Add
$colspan = 3; // Col total ht + col edit + col delete $colspan = 3; // Col total ht + col edit + col delete
if (! empty($inputalsopricewithtax)) $colspan++; // We add 1 if col total ttc if (! empty($inputalsopricewithtax)) $colspan++; // We add 1 if col total ttc
if (in_array($object->element,array('propal','facture','invoice','commande','order'))) $colspan++; // With this, there is a column move if (in_array($object->element,array('propal','facture','invoice','commande','order'))) $colspan++; // With this, there is a column move button
if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARGIN_RATES)) $colspan++;
if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARK_RATES)) $colspan++;
?> ?>
<!-- BEGIN PHP TEMPLATE objectline_create.tpl.php --> <!-- BEGIN PHP TEMPLATE objectline_create.tpl.php -->
@ -72,8 +70,8 @@ if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARK_RATES))
?> ?>
</td> </td>
<?php <?php
if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARGIN_RATES)) echo '<td align="right">'.$langs->trans('MarginRate').'</td>'; if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARGIN_RATES)) echo '<td align="right"><span class="np_marginRate">'.$langs->trans('MarginRate').'</span></td>';
if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARK_RATES)) echo '<td align="right">'.$langs->trans('MarkRate').'</td>'; if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARK_RATES)) echo '<td align="right"><span class="np_markRate">'.$langs->trans('MarkRate').'</span></td>';
} }
?> ?>
<td colspan="<?php echo $colspan; ?>">&nbsp;</td> <td colspan="<?php echo $colspan; ?>">&nbsp;</td>
@ -226,12 +224,12 @@ else {
{ {
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) if (! empty($conf->global->DISPLAY_MARGIN_RATES))
{ {
echo '<td align="right" class="nowrap"><input type="text" size="2" name="np_marginRate" value="'.(isset($_POST["np_marginRate"])?$_POST["np_marginRate"]:'').'"><span class="hideonsmartphone">%</span></td>'; echo '<td align="right" class="nowrap"><input type="text" size="2" id="np_marginRate" name="np_marginRate" value="'.(isset($_POST["np_marginRate"])?$_POST["np_marginRate"]:'').'"><span class="np_marginRate hideonsmartphone">%</span></td>';
$coldisplay++; $coldisplay++;
} }
if (! empty($conf->global->DISPLAY_MARK_RATES)) if (! empty($conf->global->DISPLAY_MARK_RATES))
{ {
echo '<td align="right" class="nowrap"><input type="text" size="2" name="np_markRate" value="'.(isset($_POST["np_markRate"])?$_POST["np_markRate"]:'').'"><span class="hideonsmartphone">%</span></td>'; echo '<td align="right" class="nowrap"><input type="text" size="2" id="np_markRate" name="np_markRate" value="'.(isset($_POST["np_markRate"])?$_POST["np_markRate"]:'').'"><span class="np_markRate hideonsmartphone">%</span></td>';
$coldisplay++; $coldisplay++;
} }
} }
@ -246,7 +244,7 @@ else {
<input type="submit" class="button" value="<?php echo $langs->trans('Add'); ?>" name="addline" id="addline"> <input type="submit" class="button" value="<?php echo $langs->trans('Add'); ?>" name="addline" id="addline">
</td> </td>
<?php <?php
//Line extrafield // Line extrafield
if (!empty($extrafieldsline)) { if (!empty($extrafieldsline)) {
if ($this->table_element_line=='commandedet') { if ($this->table_element_line=='commandedet') {
$newline = new OrderLine($this->db); $newline = new OrderLine($this->db);
@ -344,6 +342,7 @@ if (! empty($usemargins) && $user->rights->margins->creer)
var rate = $("input[name='"+npRate+"']:first"); var rate = $("input[name='"+npRate+"']:first");
if (rate.val() == '') if (rate.val() == '')
return true; return true;
if (! $.isNumeric(rate.val().replace(',','.'))) if (! $.isNumeric(rate.val().replace(',','.')))
{ {
alert('<?php echo dol_escape_js($langs->trans("rateMustBeNumeric")); ?>'); alert('<?php echo dol_escape_js($langs->trans("rateMustBeNumeric")); ?>');
@ -362,14 +361,16 @@ if (! empty($usemargins) && $user->rights->margins->creer)
var price = 0; var price = 0;
remisejs=price2numjs(remise.val()); remisejs=price2numjs(remise.val());
if (remisejs != 100) if (remisejs != 100) // If a discount not 100 or no discount
{ {
if (remisejs == '') remisejs=0;
bpjs=price2numjs(buying_price.val()); bpjs=price2numjs(buying_price.val());
ratejs=price2numjs(rate.val()); ratejs=price2numjs(rate.val());
if (npRate == "marginRate") if (npRate == "np_marginRate")
price = ((bpjs * (1 + ratejs / 100)) / (1 - remisejs / 100)); price = ((bpjs * (1 + ratejs / 100)) / (1 - remisejs / 100));
else if (npRate == "markRate") else if (npRate == "np_markRate")
price = ((bpjs / (1 - ratejs / 100)) / (1 - remisejs / 100)); price = ((bpjs / (1 - ratejs / 100)) / (1 - remisejs / 100));
} }
$("input[name='price_ht']:first").val(price); // TODO Must use a function like php price to have here a formated value $("input[name='price_ht']:first").val(price); // TODO Must use a function like php price to have here a formated value
@ -381,12 +382,13 @@ if (! empty($usemargins) && $user->rights->margins->creer)
/* Function similar to price2num in PHP */ /* Function similar to price2num in PHP */
function price2numjs(num) function price2numjs(num)
{ {
if (num == '') return '';
<?php <?php
$dec=','; $thousand=' '; $dec=','; $thousand=' ';
if ($langs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->transnoentitiesnoconv("SeparatorDecimal"); if ($langs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->transnoentitiesnoconv("SeparatorDecimal");
if ($langs->transnoentitiesnoconv("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->transnoentitiesnoconv("SeparatorThousand"); if ($langs->transnoentitiesnoconv("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->transnoentitiesnoconv("SeparatorThousand");
if ($thousand == 'None') $thousand=''; print "var dec='".$dec."'; var thousand='".$thousand."';\n"; // Set var in javascript
print "var dec='".$dec."'; var thousand='".$thousand."';\n";
?> ?>
var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>; var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>;
@ -497,6 +499,10 @@ function setforfree() {
jQuery("#title_vat").show(); jQuery("#title_vat").show();
jQuery("#title_up_ht").show(); jQuery("#title_up_ht").show();
jQuery("#title_up_ttc").show(); jQuery("#title_up_ttc").show();
jQuery("#np_marginRate").show(); // May no exists
jQuery("#np_markRate").show(); // May no exists
jQuery(".np_marginRate").show(); // May no exists
jQuery(".np_markRate").show(); // May no exists
} }
function setforpredef() { function setforpredef() {
jQuery("#select_type").val(-1); jQuery("#select_type").val(-1);
@ -509,6 +515,10 @@ function setforpredef() {
jQuery("#title_vat").hide(); jQuery("#title_vat").hide();
jQuery("#title_up_ht").hide(); jQuery("#title_up_ht").hide();
jQuery("#title_up_ttc").hide(); jQuery("#title_up_ttc").hide();
jQuery("#np_marginRate").hide(); // May no exists
jQuery("#np_markRate").hide(); // May no exists
jQuery(".np_marginRate").hide(); // May no exists
jQuery(".np_markRate").hide(); // May no exists
} }
</script> </script>

View File

@ -17,14 +17,31 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*
* Need to have following variables defined: * Need to have following variables defined:
* $object (invoice, order, ...)
* $conf * $conf
* $langs * $langs
* $dateSelector * $dateSelector
* $this (invoice, order, ...) * $forceall (0 by default, 1 for supplier invoices/orders)
* $line defined * $senderissupplier (0 by default, 1 for supplier invoices/orders)
* $inputalsopricewithtax (0 by default, 1 to also show column with unit price including tax)
*/ */
$usemargins=0;
if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) $usemargins=1;
global $dateSelector, $forceall, $senderissupplier, $inputalsopricewithtax;
if (empty($dateSelector)) $dateSelector=0;
if (empty($forceall)) $forceall=0;
if (empty($senderissupplier)) $senderissupplier=0;
if (empty($inputalsopricewithtax)) $inputalsopricewithtax=0;
// Define colspan for button Add
$colspan = 3; // Col total ht + col edit + col delete
if (! empty($inputalsopricewithtax)) $colspan++; // We add 1 if col total ttc
if (in_array($object->element,array('propal','facture','invoice','commande','order'))) $colspan++; // With this, there is a column move button
?> ?>
<!-- BEGIN PHP TEMPLATE objectline_edit.tpl.php --> <!-- BEGIN PHP TEMPLATE objectline_edit.tpl.php -->
@ -41,29 +58,7 @@ $coldisplay=-1; // We remove first td
<input type="hidden" id="product_id" name="productid" value="<?php echo (! empty($line->fk_product)?$line->fk_product:0); ?>" /> <input type="hidden" id="product_id" name="productid" value="<?php echo (! empty($line->fk_product)?$line->fk_product:0); ?>" />
<input type="hidden" id="special_code" name="special_code" value="<?php echo $line->special_code; ?>"> <input type="hidden" id="special_code" name="special_code" value="<?php echo $line->special_code; ?>">
<?php <?php if ($line->fk_product > 0) { ?>
if ($conf->global->MAIN_FEATURES_LEVEL > 1)
{
if ($line->fk_product > 0)
{
echo $text . ' - ';
}
else
{
echo $form->select_type_of_lines($line->product_type, 'type', 1, 1);
}
?>
<input id="product_label" name="product_label" size="40" value="<?php echo $label; ?>"<?php echo $placeholder . ((! empty($line->fk_product) && empty($line->label)) ? ' disabled="disabled"' : ''); ?>>
<input type="hidden" id="origin_label_cache" name="origin_label_cache" value="<?php echo $line->product_label; ?>" />
<span id="update_label_area" class="hideobject"><input type="checkbox" id="update_label_checkbox" name="update_label" value="1" />
<?php echo $form->textwithtooltip($langs->trans('UpdateOriginalProductLabel'), $langs->trans('HelpUpdateOriginalProductLabel'),1,0,'','',3); ?>
</span>
<span id="price_base_type" class="hideobject"></span>
<br>
<?php } else if ($line->fk_product > 0) { ?>
<a href="<?php echo DOL_URL_ROOT.'/product/fiche.php?id='.$line->fk_product; ?>"> <a href="<?php echo DOL_URL_ROOT.'/product/fiche.php?id='.$line->fk_product; ?>">
<?php <?php
@ -126,9 +121,16 @@ $coldisplay=-1; // We remove first td
<?php } ?> <?php } ?>
</td> </td>
<?php if (! empty($conf->margin->enabled)) { ?> <?php
if (! empty($usemargins))
{
?>
<td align="right"><?php $coldisplay++; ?> <td align="right"><?php $coldisplay++; ?>
<select id="fournprice" name="fournprice" class="hideobject"></select> <!-- For predef product -->
<?php if (! empty($conf->product->enabled) || ! empty($conf->service->enabled)) { ?>
<select id="fournprice_predef" name="fournprice_predef" class="flat" style="display: none;"></select>
<?php } ?>
<!-- For free product -->
<input type="text" size="5" id="buying_price" name="buying_price" class="hideobject" value="<?php echo price($line->pa_ht,0,'',0); ?>"> <input type="text" size="5" id="buying_price" name="buying_price" class="hideobject" value="<?php echo price($line->pa_ht,0,'',0); ?>">
</td> </td>
<?php if ($user->rights->margins->creer) { <?php if ($user->rights->margins->creer) {
@ -156,7 +158,7 @@ $coldisplay=-1; // We remove first td
} ?> } ?>
<!-- colspan=4 for this td because it replace total_ht+3 td for buttons --> <!-- colspan=4 for this td because it replace total_ht+3 td for buttons -->
<td align="center" colspan="4" valign="middle"><?php $coldisplay+=4; ?> <td align="center" colspan="<?php echo $colspan; ?>" valign="middle"><?php $coldisplay+=4; ?>
<input type="submit" class="button" id="savelinebutton" name="save" value="<?php echo $langs->trans("Save"); ?>"><br> <input type="submit" class="button" id="savelinebutton" name="save" value="<?php echo $langs->trans("Save"); ?>"><br>
<input type="submit" class="button" id="cancellinebutton" name="cancel" value="<?php echo $langs->trans("Cancel"); ?>"> <input type="submit" class="button" id="cancellinebutton" name="cancel" value="<?php echo $langs->trans("Cancel"); ?>">
</td> </td>
@ -185,193 +187,6 @@ $coldisplay=-1; // We remove first td
<script type="text/javascript"> <script type="text/javascript">
<?php
if ($conf->global->MAIN_FEATURES_LEVEL > 1) // TODO A virer
{
?>
jQuery(document).ready(function() {
if ($('#product_type').val() == 0) {
$('#service_duration_area').hide();
} else if ($('#product_type').val() == 1) {
$('#service_duration_area').show();
}
if ($('#product_label').attr('disabled')) {
$('#update_label_area').show();
}
$('#update_label_checkbox').change(function() {
if ($(this).attr('checked')) {
$('#product_label').removeAttr('disabled').focus();
} else {
$('#product_label')
.attr('disabled','disabled')
.val($('#origin_label_cache').val());
}
});
$('#select_type').change(function() {
var type = $(this).val();
if (type >= 0) {
if (type == 0) {
$('#service_duration_area').hide();
$('#date_start').val('').trigger('change');
$('#date_end').val('').trigger('change');
} else if (type == 1) {
$('#service_duration_area').show();
}
var addline=false;
if ($('#price_ht').val().length > 0) {
if ($('#product_id').val() == 0) {
if (typeof CKEDITOR == 'object' && typeof CKEDITOR.instances != 'undefined' && CKEDITOR.instances['product_desc'] != 'undefined') {
var content = CKEDITOR.instances['product_desc'].getData();
} else {
var content = $('#product_desc').val();
}
if (content.length > 0) {
addline=true;
}
} else {
addline=true;
}
}
if (addline) {
$('#savelinebutton').removeAttr('disabled');
} else {
$('#savelinebutton').attr('disabled','disabled');
}
} else {
$('#savelinebutton').attr('disabled','disabled');
$('#service_duration_area').hide();
$('#date_start').val('').trigger('change');
$('#date_end').val('').trigger('change');
}
});
$('#price_ht').focusin(function() {
$('#price_base_type').val('HT');
});
$('#price_ht').bind('change keyup input', function() {
if ($('#price_base_type').val() == 'HT') {
update_price('price_ht', 'price_ttc');
}
});
$('#price_ttc').focusin(function() {
$('#price_base_type').val('TTC');
});
$('#price_ttc').bind('change keyup input', function() {
if ($('#price_base_type').val() == 'TTC') {
update_price('price_ttc', 'price_ht');
}
});
if ($('#tva_tx').val() == 0) {
$('#price_ttc').attr('disabled','disabled');
}
$('#tva_tx').change(function() {
if ($(this).val() == 0) {
$('#price_ttc').attr('disabled','disabled');
$('#price_ttc').val('');
} else {
$('#price_ttc').removeAttr('disabled');
if ($('#price_base_type').val() == 'HT') {
update_price('price_ht', 'price_ttc');
} else if ($('#price_base_type').val() == 'TTC') {
update_price('price_ttc', 'price_ht');
}
}
});
// update_price
function update_price(input, output)
{
$.post('<?php echo DOL_URL_ROOT; ?>/core/ajax/price.php', {
'amount': $('#' + input).val(),
'output': output,
'tva_tx': $('#tva_tx').val()
},
function(data) {
var addline=false;
if (typeof data[output] != 'undefined') {
// Hide price_ttc if no vat
if ($('#tva_tx').val() > 0 || ($('#tva_tx').val() == 0 && output == 'price_ht')) {
$('#' + output).val(data[output]);
}
if ($('#product_id').val() == 0 && $('#select_type').val() >= 0) {
if (typeof CKEDITOR == 'object' && typeof CKEDITOR.instances != 'undefined' && CKEDITOR.instances['product_desc'] != 'undefined') {
var content = CKEDITOR.instances['product_desc'].getData();
} else {
var content = $('#product_desc').val();
}
if (content.length > 0) {
addline=true;
}
} else {
addline=true;
}
} else {
$('#' + input).val('');
$('#' + output).val('');
}
if (addline) {
$('#savelinebutton').removeAttr('disabled');
} else {
$('#savelinebutton').attr('disabled','disabled');
}
}, 'json');
}
// Check if decription is not empty for free line
<?php if (! empty($conf->fckeditor->enabled) && ! empty($conf->global->FCKEDITOR_ENABLE_DETAILS)) { ?>
CKEDITOR.on('instanceReady', function() {
CKEDITOR.instances['product_desc'].on('key', function() {
var addline=false;
if ($('#product_id').val() == 0 && $('#select_type').val() >= 0 && $('#price_ht').val().length > 0) {
var content = CKEDITOR.instances['product_desc'].getData();
if (content.length > 0) {
addline=true;
}
} else if ($('#product_id').val() > 0 && $('#price_ht').val().length > 0) {
addline=true;
}
if (addline) {
$('#savelinebutton').removeAttr('disabled');
} else {
$('#savelinebutton').attr('disabled','disabled');
}
});
});
<?php } else { ?>
$('#product_desc').keyup(function() {
var addline=false;
if ($('#product_id').val() == 0 && $('#select_type').val() >= 0 && $('#price_ht').val().length > 0) {
var content = $('#product_desc').val();
if (content.length > 0) {
addline=true;
}
} else if ($('#product_id').val() > 0 && $('#price_ht').val().length > 0) {
addline=true;
}
if (addline) {
$('#savelinebutton').removeAttr('disabled');
} else {
$('#savelinebutton').attr('disabled','disabled');
}
});
<?php } ?>
});
<?php } // End MAIN_LEVEL_FEATURES > 1 ?>
<?php <?php
if (! empty($conf->margin->enabled)) if (! empty($conf->margin->enabled))
{ {
@ -499,12 +314,13 @@ if (! empty($conf->margin->enabled))
/* Function similar to price2num in PHP */ /* Function similar to price2num in PHP */
function price2numjs(num) function price2numjs(num)
{ {
if (num == '') return '';
<?php <?php
$dec=','; $thousand=' '; $dec=','; $thousand=' ';
if ($langs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->transnoentitiesnoconv("SeparatorDecimal"); if ($langs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->transnoentitiesnoconv("SeparatorDecimal");
if ($langs->transnoentitiesnoconv("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->transnoentitiesnoconv("SeparatorThousand"); if ($langs->transnoentitiesnoconv("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->transnoentitiesnoconv("SeparatorThousand");
if ($thousand == 'None') $thousand=''; print "var dec='".$dec."'; var thousand='".$thousand."';\n"; // Set var in javascript
print "var dec='".$dec."'; var thousand='".$thousand."';\n";
?> ?>
var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>; var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>;

View File

@ -1,373 +0,0 @@
<?php
/* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2010-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Need to have following variables defined:
* $conf
* $langs
* $dateSelector
* $this (invoice, order, ...)
* $line defined
*/
$usemargins=0;
if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) $usemargins=1;
?>
<!-- BEGIN PHP TEMPLATE predefinedproductline_create.tpl.php -->
<tr class="liste_titre nodrag nodrop">
<td<?php echo (! empty($conf->global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="4"' : ' colspan="3"'); ?>>
<?php
echo '<span class="hideonsmartphone">'.$langs->trans("AddNewLine").' - </span>';
if (! empty($conf->product->enabled) && empty($conf->service->enabled)) echo $langs->trans('RecordedProducts');
else if (empty($conf->product->enabled) && ! empty($conf->service->enabled)) echo $langs->trans('RecordedServices');
else echo $langs->trans('RecordedProductsAndServices');
?>
</td>
<td align="right"><?php echo $langs->trans('Qty'); ?></td>
<td align="right"><?php echo $langs->trans('ReductionShort'); ?></td>
<?php
$colspan = 4;
if (! empty($usemargins))
{
?>
<td align="right">
<?php
if ($conf->global->MARGIN_TYPE == "1")
echo $langs->trans('BuyingPrice');
else
echo $langs->trans('CostPrice');
?>
</td>
<?php
if ($user->rights->margins->creer)
{
if(! empty($conf->global->DISPLAY_MARGIN_RATES))
{
echo '<td align="right">'.$langs->trans('MarginRate').'</td>';
}
if(! empty($conf->global->DISPLAY_MARK_RATES))
{
echo '<td align="right">'.$langs->trans('MarkRate').'</td>';
}
}
else
{
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) $colspan++;
if (! empty($conf->global->DISPLAY_MARK_RATES)) $colspan++;
}
}
?>
<td colspan="<?php echo $colspan; ?>">&nbsp;</td>
</tr>
<tr <?php echo $bcnd[$var]; ?>>
<?php
if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) {
$coldisplay=4; }
else {
$coldisplay=3; }
?>
<td<?php echo (! empty($conf->global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="4"' : ' colspan="3"'); ?>>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('#idprod').change(function() {
if (jQuery('#idprod').val() > 0) jQuery('#np_desc').focus();
});
});
</script>
<?php
echo '<span>';
$filtertype='';
if (! empty($object->element) && $object->element == 'contrat') $filtertype='1';
$form->select_produits('','idprod',$filtertype,$conf->product->limit_size,$buyer->price_level, 1, 2, '', 3, array(),$buyer->id);
echo '</span>';
if (is_object($hookmanager))
{
$parameters=array('fk_parent_line'=>GETPOST('fk_parent_line','int'));
$reshook=$hookmanager->executeHooks('formCreateProductOptions',$parameters,$object,$action);
}
echo '<br>';
// Editor wysiwyg
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
$nbrows=ROWS_2;
$enabled=(! empty($conf->global->FCKEDITOR_ENABLE_DETAILS)?$conf->global->FCKEDITOR_ENABLE_DETAILS:0);
if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT;
$doleditor=new DolEditor('np_desc',GETPOST('np_desc"'),'',100,'dolibarr_details','',false,true,$enabled,$nbrows,70);
$doleditor->Create();
?>
</td>
<td align="right"><input type="hidden" name="price_ht_predef"><input type="text" size="2" name="qty_predef" class="flat" value="1"></td>
<td align="right" class="nowrap"><input type="text" size="1" class="flat" name="remise_percent_predef" value="<?php echo $buyer->remise_percent; ?>"><span class="hideonsmartphone">%</span></td>
<?php
$colspan = 4;
if (! empty($usemargins))
{
?>
<td align="right">
<select id="fournprice_predef" name="fournprice_predef" class="flat" style="display: none;"></select>
<input type="text" size="5" id="buying_price_predef" name="buying_price_predef" class="flat" value="<?php echo (isset($_POST["buying_price_predef"])?$_POST["buying_price_predef"]:''); ?>">
</td>
<?php
$colspan++;
$coldisplay++;
if ($user->rights->margins->creer)
{
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) {
echo '<td align="right"><input type="text" size="2" name="np_marginRate_predef" value="'.(isset($_POST["np_marginRate_predef"])?$_POST["np_marginRate_predef"]:'').'">%</td>';
$colspan++;
$coldisplay++;
}
if (! empty($conf->global->DISPLAY_MARK_RATES)) {
echo '<td align="right"><input type="text" size="2" name="np_markRate_predef" value="'.(isset($_POST["np_markRate_predef"])?$_POST["np_markRate_predef"]:'').'">%</td>';
$colspan++;
$coldisplay++;
}
}
else
{
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) {
$colspan++;
$coldisplay++;
}
if (! empty($conf->global->DISPLAY_MARK_RATES)) {
$colspan++;
$coldisplay++;
}
}
}
?>
<td align="center" valign="middle" colspan="<?php echo $colspan; ?>">
<input type="submit" class="button" value="<?php echo $langs->trans('Add'); ?>" name="addline_predefined" id="addline_predefined">
</td>
<?php
//Line extrafield
if (!empty($extrafieldsline)) {
if ($this->table_element_line=='commandedet') {
$newline = new OrderLine($this->db);
}
elseif ($this->table_element_line=='propaldet') {
$newline = new PropaleLigne($this->db);
}
elseif ($this->table_element_line=='facturedet') {
$newline = new FactureLigne($this->db);
}
if (is_object($newline)) {
print $newline->showOptionals($extrafieldsline, 'edit', array('style'=>$bcnd[$var],'colspan'=>$coldisplay+5), '_predef');
}
}
?>
</tr>
<?php
if (! empty($conf->service->enabled) && $dateSelector)
{
if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) $colspan = 10;
else $colspan = 9;
if (! empty($usemargins))
{
$colspan++; // For the buying price
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) $colspan++;
if (! empty($conf->global->DISPLAY_MARK_RATES)) $colspan++;
}
?>
<tr <?php echo $bcnd[$var]; ?>>
<td colspan="<?php echo $colspan; ?>">
<?php
if (! empty($object->element) && $object->element == 'contrat')
{
print $langs->trans("DateStartPlanned").' ';
$form->select_date('',"date_start_predef",$usehm,$usehm,1,"addline");
print ' &nbsp; '.$langs->trans("DateEndPlanned").' ';
$form->select_date('',"date_end_predef",$usehm,$usehm,1,"addline");
}
else
{
echo $langs->trans('ServiceLimitedDuration').' '.$langs->trans('From').' ';
echo $form->select_date('','date_start_predef',empty($conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE)?0:1,empty($conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE)?0:1,1,"addpredefinedproduct");
echo ' '.$langs->trans('to').' ';
echo $form->select_date('','date_end_predef',empty($conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE)?0:1,empty($conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE)?0:1,1,"addpredefinedproduct");
}
?>
</td>
</tr>
<?php
}
?>
<?php
if (! empty($usemargins) && $user->rights->margins->creer)
{
?>
<script type="text/javascript">
jQuery(document).ready(function() {
<?php
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) { ?>
$('#addline_predefined').click(function (e) {
return checkLine(e, "np_marginRate_predef");
});
$("input[name='np_marginRate_predef']:last").blur(function(e) {
return checkLine(e, "np_marginRate_predef");
});
<?php
}
if (! empty($conf->global->DISPLAY_MARK_RATES)) {
?>
$('#addline_predefined').click(function (e) {
return checkLine(e, "np_markRate_predef");
});
$("input[name='np_marginRate_predef']:last").blur(function(e) {
return checkLine(e, "np_markRate_predef");
});
<?php
}
?>
});
// TODO This works for french numbers only
function checkLine(e, npRate)
{
var buying_price = $("input[name='buying_price_predef']:last");
var remise = $("input[name='remise_percent_predef']:last");
var rate = $("input[name='"+npRate+"']:last");
if (rate.val() == '')
return true;
if (! $.isNumeric(rate.val().replace(',','.')))
{
alert('<?php echo dol_escape_js($langs->trans("rateMustBeNumeric")); ?>');
e.stopPropagation();
setTimeout(function () { rate.focus() }, 50);
return false;
}
if (npRate == "np_markRate_predef" && rate.val() >= 100)
{
alert('<?php echo dol_escape_js($langs->trans("markRateShouldBeLesserThan100")); ?>');
e.stopPropagation();
setTimeout(function () { rate.focus() }, 50);
return false;
}
var price = 0;
remisejs=price2numjs(remise.val());
if (remisejs != 100)
{
bpjs=price2numjs(buying_price.val());
ratejs=price2numjs(rate.val());
if (npRate == "np_marginRate_predef")
price = ((bpjs * (1 + ratejs / 100)) / (1 - remisejs / 100));
else if (npRate == "np_markRate_predef")
price = ((bpjs / (1 - ratejs / 100)) / (1 - remisejs / 100));
}
$("input[name='price_ht_predef']:last").val(price); // TODO Must use a function like php price to have here a formated value
return true;
}
/* Function similar to price2num in PHP */
function price2numjs(num)
{
<?php
$dec=','; $thousand=' ';
if ($langs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->transnoentitiesnoconv("SeparatorDecimal");
if ($langs->transnoentitiesnoconv("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->transnoentitiesnoconv("SeparatorThousand");
if ($thousand == 'None') $thousand='';
print "var dec='".$dec."'; var thousand='".$thousand."';\n";
?>
var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>;
var main_rounding_unit = <?php echo $conf->global->MAIN_MAX_DECIMALS_UNIT; ?>;
var main_rounding_tot = <?php echo $conf->global->MAIN_MAX_DECIMALS_TOT; ?>;
var amount = num.toString();
// rounding for unit price
var rounding = main_rounding_unit;
var pos = amount.indexOf(dec);
var decpart = '';
if (pos >= 0) decpart = amount.substr(pos+1).replace('/0+$/i',''); // Supprime les 0 de fin de partie decimale
var nbdec = decpart.length;
if (nbdec > rounding) rounding = nbdec;
// If rounding higher than max shown
if (rounding > main_max_dec_shown) rounding = main_max_dec_shown;
if (thousand != ',' && thousand != '.') amount=amount.replace(',','.');
amount=amount.replace(' ',''); // To avoid spaces
amount=amount.replace(thousand,''); // Replace of thousand before replace of dec to avoid pb if thousand is .
amount=amount.replace(dec,'.');
return parseFloat(amount).toFixed(rounding);
}
jQuery(document).ready(function() {
$("#idprod").change(function()
{
$("#fournprice_predef options").remove();
$("#fournprice_predef").hide();
$("#buying_price_predef").val("").show();
$.post('<?php echo DOL_URL_ROOT; ?>/fourn/ajax/getSupplierPrices.php', { 'idprod': $(this).val() }, function(data) {
if (data && data.length > 0)
{
var options = '';
var i = 0;
$(data).each(function() {
i++;
options += '<option value="'+this.id+'" price="'+this.price+'"';
if (i == 1) {
options += ' selected';
$("#buying_price_predef").val(this.price);
}
options += '>'+this.label+'</option>';
});
options += '<option value=""><?php echo $langs->trans("InputPrice"); ?></option>';
$("#buying_price_predef").hide();
$("#fournprice_predef").html(options).show();
$("#fournprice_predef").change(function() {
var selval = $(this).find('option:selected').attr("price");
if (selval)
$("#buying_price_predef").val(selval).hide();
else
$('#buying_price_predef').show();
});
}
},
'json');
});
});
</script>
<?php
}
?>
<!-- END PHP TEMPLATE predefinedproductline_create.tpl.php -->

View File

@ -95,36 +95,28 @@ class Fichinter extends CommonObject
dol_syslog(get_class($this)."::create ref=".$this->ref); dol_syslog(get_class($this)."::create ref=".$this->ref);
// Check parameters // Check parameters
if (! is_numeric($this->duree)) { if (! empty($this->ref)) // We check that ref is not already used
$this->duree = 0; {
$result=self::isExistingObject($this->element, 0, $this->ref); // Check ref is not yet used
if ($result > 0)
{
$this->error='ErrorRefAlreadyExists';
dol_syslog(get_class($this)."::create ".$this->error,LOG_WARNING);
$this->db->rollback();
return -1;
}
} }
if (! is_numeric($this->duree)) $this->duree = 0;
if ($this->socid <= 0) if ($this->socid <= 0)
{ {
$this->error='ErrorBadParameterForFunc'; $this->error='ErrorBadParameterForFunc';
dol_syslog(get_class($this)."::create ".$this->error,LOG_ERR); dol_syslog(get_class($this)."::create ".$this->error,LOG_ERR);
return -1; return -1;
} }
// on verifie si la ref n'est pas utilisee
$soc = new Societe($this->db); $soc = new Societe($this->db);
$result=$soc->fetch($this->socid); $result=$soc->fetch($this->socid);
if (! empty($this->ref))
{
$result=$this->verifyNumRef(); // Check ref is not yet used
if ($result > 0)
{
$this->error='ErrorRefAlreadyExists';
dol_syslog(get_class($this)."::create ".$this->error,LOG_WARNING);
$this->db->rollback();
return -3;
}
else if ($result < 0)
{
$this->error=$this->db->error();
dol_syslog(get_class($this)."::create ".$this->error,LOG_ERR);
$this->db->rollback();
return -2;
}
}
$now=dol_now(); $now=dol_now();

View File

@ -186,10 +186,7 @@ if ($holiday_payes == '-1')
{ {
print_fiche_titre($langs->trans('CPTitreMenu')); print_fiche_titre($langs->trans('CPTitreMenu'));
print '<div class="tabBar">'; dol_print_error($db, $langs->trans('Error').' '.$holiday->error);
print '<span>'.$langs->trans('CPErrorSQL');
print ' '.$holiday->error.'</span>';
print '</div>';
exit(); exit();
} }

View File

@ -352,10 +352,13 @@ if ($step == 1 || ! $datatoimport)
{ {
foreach ($objimport->array_import_code as $key => $value) foreach ($objimport->array_import_code as $key => $value)
{ {
//var_dump($objimport->array_import_code[$key]);
$val=!$val; $val=!$val;
print '<tr '.$bc[$val].'><td nospan="nospan">'; print '<tr '.$bc[$val].'><td nospan="nospan">';
//print img_object($objimport->array_import_module[$key]->getName(),$import->array_import_module[$key]->picto).' '; $titleofmodule=$objimport->array_import_module[$key]->getName();
print $objimport->array_import_module[$key]->getName(); // Special cas for import common to module/services
if (in_array($objimport->array_import_code[$key], array('produit_supplierprices','produit_multiprice'))) $titleofmodule=$langs->trans("ProductOrService");
print $titleofmodule;
print '</td><td>'; print '</td><td>';
//print $value; //print $value;
print img_object($objimport->array_import_module[$key]->getName(),$objimport->array_import_icon[$key]).' '; print img_object($objimport->array_import_module[$key]->getName(),$objimport->array_import_icon[$key]).' ';
@ -407,8 +410,10 @@ if ($step == 2 && $datatoimport)
// Module // Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>'; print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>'; print '<td>';
//print img_object($objimport->array_import_module[0]->getName(),$objimport->array_import_module[0]->picto).' '; $titleofmodule=$objimport->array_import_module[0]->getName();
print $objimport->array_import_module[0]->getName(); // Special cas for import common to module/services
if (in_array($objimport->array_import_code[0], array('produit_supplierprices','produit_multiprice'))) $titleofmodule=$langs->trans("ProductOrService");
print $titleofmodule;
print '</td></tr>'; print '</td></tr>';
// Lot de donnees a importer // Lot de donnees a importer
@ -490,8 +495,10 @@ if ($step == 3 && $datatoimport)
// Module // Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>'; print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>'; print '<td>';
//print img_object($objimport->array_import_module[0]->getName(),$objimport->array_import_module[0]->picto).' '; $titleofmodule=$objimport->array_import_module[0]->getName();
print $objimport->array_import_module[0]->getName(); // Special cas for import common to module/services
if (in_array($objimport->array_import_code[0], array('produit_supplierprices','produit_multiprice'))) $titleofmodule=$langs->trans("ProductOrService");
print $titleofmodule;
print '</td></tr>'; print '</td></tr>';
// Lot de donnees a importer // Lot de donnees a importer
@ -695,8 +702,10 @@ if ($step == 4 && $datatoimport)
// Module // Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>'; print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>'; print '<td>';
//print img_object($objimport->array_import_module[0]->getName(),$objimport->array_import_module[0]->picto).' '; $titleofmodule=$objimport->array_import_module[0]->getName();
print $objimport->array_import_module[0]->getName(); // Special cas for import common to module/services
if (in_array($objimport->array_import_code[0], array('produit_supplierprices','produit_multiprice'))) $titleofmodule=$langs->trans("ProductOrService");
print $titleofmodule;
print '</td></tr>'; print '</td></tr>';
// Lot de donnees a importer // Lot de donnees a importer
@ -1144,8 +1153,10 @@ if ($step == 5 && $datatoimport)
// Module // Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>'; print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>'; print '<td>';
//print img_object($objimport->array_import_module[0]->getName(),$objimport->array_import_module[0]->picto).' '; $titleofmodule=$objimport->array_import_module[0]->getName();
print $objimport->array_import_module[0]->getName(); // Special cas for import common to module/services
if (in_array($objimport->array_import_code[0], array('produit_supplierprices','produit_multiprice'))) $titleofmodule=$langs->trans("ProductOrService");
print $titleofmodule;
print '</td></tr>'; print '</td></tr>';
// Lot de donnees a importer // Lot de donnees a importer
@ -1487,8 +1498,10 @@ if ($step == 6 && $datatoimport)
// Module // Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>'; print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>'; print '<td>';
//print img_object($objimport->array_import_module[0]->getName(),$objimport->array_import_module[0]->picto).' '; $titleofmodule=$objimport->array_import_module[0]->getName();
print $objimport->array_import_module[0]->getName(); // Special cas for import common to module/services
if (in_array($objimport->array_import_code[0], array('produit_supplierprices','produit_multiprice'))) $titleofmodule=$langs->trans("ProductOrService");
print $titleofmodule;
print '</td></tr>'; print '</td></tr>';
// Lot de donnees a importer // Lot de donnees a importer

View File

@ -136,9 +136,15 @@ class Segment implements IteratorAggregate, Countable
if (strpos($this->xml, $this->odf->getConfig('DELIMITER_LEFT') . $key . $this->odf->getConfig('DELIMITER_RIGHT')) === false) { if (strpos($this->xml, $this->odf->getConfig('DELIMITER_LEFT') . $key . $this->odf->getConfig('DELIMITER_RIGHT')) === false) {
throw new SegmentException("var $key not found in {$this->getName()}"); throw new SegmentException("var $key not found in {$this->getName()}");
} }
$value=$this->odf->htmlToUTFAndPreOdf($value);
$value = $encode ? htmlspecialchars($value) : $value; $value = $encode ? htmlspecialchars($value) : $value;
$value = ($charset == 'ISO-8859') ? utf8_encode($value) : $value; $value = ($charset == 'ISO-8859') ? utf8_encode($value) : $value;
$this->vars[$this->odf->getConfig('DELIMITER_LEFT') . $key . $this->odf->getConfig('DELIMITER_RIGHT')] = str_replace("\n", "<text:line-break/>", $value);
$value=$this->odf->preOdfToOdf($value);
$this->vars[$this->odf->getConfig('DELIMITER_LEFT') . $key . $this->odf->getConfig('DELIMITER_RIGHT')] = $value;
return $this; return $this;
} }
/** /**

View File

@ -122,12 +122,68 @@ class Odf
throw new OdfException("var $key not found in the document"); throw new OdfException("var $key not found in the document");
//} //}
} }
$value=$this->htmlToUTFAndPreOdf($value);
$value = $encode ? htmlspecialchars($value) : $value; $value = $encode ? htmlspecialchars($value) : $value;
$value = ($charset == 'ISO-8859') ? utf8_encode($value) : $value; $value = ($charset == 'ISO-8859') ? utf8_encode($value) : $value;
$this->vars[$tag] = str_replace("\n", "<text:line-break/>", $value);
$value=$this->preOdfToOdf($value);
$this->vars[$tag] = $value;
return $this; return $this;
} }
/**
* Function to convert a HTML string into an ODT string
*
* @param string $value String to convert
*/
public function htmlToUTFAndPreOdf($value)
{
// We decode into utf8, entities
$value=dol_html_entity_decode($value, ENT_QUOTES);
// We convert html tags
$ishtml=dol_textishtml($value);
if ($ishtml)
{
// If string is "MYPODUCT - Desc <strong>bold</strong> with &eacute; accent<br />\n<br />\nUn texto en espa&ntilde;ol ?"
// Result after clean must be "MYPODUCT - Desc bold with é accent\n\nUn texto en espa&ntilde;ol ?"
// We want to ignore \n and we want all <br> to be \n
$value=preg_replace('/(\r\n|\r|\n)/i','',$value);
$value=preg_replace('/<br>/i',"\n",$value);
$value=preg_replace('/<br\s+[^<>\/]*>/i',"\n",$value);
$value=preg_replace('/<br\s+[^<>\/]*\/>/i',"\n",$value);
//$value=preg_replace('/<strong>/','__lt__text:p text:style-name=__quot__bold__quot____gt__',$value);
//$value=preg_replace('/<\/strong>/','__lt__/text:p__gt__',$value);
$value=dol_string_nohtmltag($value, 0);
}
return $value;
}
/**
* Function to convert a HTML string into an ODT string
*
* @param string $value String to convert
*/
public function preOdfToOdf($value)
{
$value = str_replace("\n", "<text:line-break/>", $value);
//$value = str_replace("__lt__", "<", $value);
//$value = str_replace("__gt__", ">", $value);
//$value = str_replace("__quot__", '"', $value);
return $value;
}
/** /**
* Evaluating php codes inside the ODT and output the buffer (print, echo) inplace of the code * Evaluating php codes inside the ODT and output the buffer (print, echo) inplace of the code
* *

View File

@ -141,9 +141,10 @@ HolidaysRefused=Denied holidays
HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason : HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled holidays HolidaysCanceled=Canceled holidays
HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled. HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20001=Read/create/modify their holidays Permission20000=Read you own holidays
Permission20002=Read/modify all requests of holidays Permission20001=Create/modify your holidays
Permission20003=Delete their holidays requests Permission20002=Create/modify holidays for everybody
Permission20004=Define users holidays Permission20003=Delete holidays requests
Permission20004=Setup users holidays
Permission20005=Review log of modified holidays Permission20005=Review log of modified holidays
Permission20006=Access holidays monthly report Permission20006=Read holidays monthly report

View File

@ -25,14 +25,14 @@ ErrorGoBackAndCorrectParameters=العودة إلى الوراء وتصحيح ا
ErrorWrongValueForParameter=قد تكون لديكم مطبوعة خاطئة قيمة معلمة '٪ ق. ErrorWrongValueForParameter=قد تكون لديكم مطبوعة خاطئة قيمة معلمة '٪ ق.
ErrorFailedToCreateDatabase=فشل إنشاء قاعدة بيانات '٪ ق. ErrorFailedToCreateDatabase=فشل إنشاء قاعدة بيانات '٪ ق.
ErrorFailedToConnectToDatabase=فشل في الاتصال بقاعدة البيانات '٪ ق. ErrorFailedToConnectToDatabase=فشل في الاتصال بقاعدة البيانات '٪ ق.
# ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required.
ErrorPHPVersionTooLow=PHP نسخة قديمة جدا. النسخة ٪ ق هو مطلوب. ErrorPHPVersionTooLow=PHP نسخة قديمة جدا. النسخة ٪ ق هو مطلوب.
WarningPHPVersionTooLow=PHP نسخة قديمة جدا. ومن المتوقع %s نسخة أو أكثر. وينبغي أن تسمح هذه النسخة تثبيت ولكن لم يتم اعتماد. WarningPHPVersionTooLow=PHP نسخة قديمة جدا. ومن المتوقع %s نسخة أو أكثر. وينبغي أن تسمح هذه النسخة تثبيت ولكن لم يتم اعتماد.
ErrorConnectedButDatabaseNotFound=خادم الصدد الى قاعدة البيانات ولكن النجاح في '٪ ق' لم يتم العثور عليه. ErrorConnectedButDatabaseNotFound=خادم الصدد الى قاعدة البيانات ولكن النجاح في '٪ ق' لم يتم العثور عليه.
ErrorDatabaseAlreadyExists=قاعدة البيانات '٪ ق' موجود بالفعل. ErrorDatabaseAlreadyExists=قاعدة البيانات '٪ ق' موجود بالفعل.
IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كان لا وجود قاعدة بيانات ، والتأكد من العودة الخيار "إنشاء قاعدة بيانات". IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كان لا وجود قاعدة بيانات ، والتأكد من العودة الخيار "إنشاء قاعدة بيانات".
IfDatabaseExistsGoBackAndCheckCreate=إذا كانت قاعدة البيانات موجود بالفعل ، من العودة وإلغاء "إنشاء قاعدة بيانات" الخيار. IfDatabaseExistsGoBackAndCheckCreate=إذا كانت قاعدة البيانات موجود بالفعل ، من العودة وإلغاء "إنشاء قاعدة بيانات" الخيار.
# WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded. WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded.
PHPVersion=PHP الإصدار PHPVersion=PHP الإصدار
YouCanContinue=يمكنك الاستمرار... YouCanContinue=يمكنك الاستمرار...
PleaseBePatient=يرجى التحلي بالصبر... PleaseBePatient=يرجى التحلي بالصبر...
@ -154,11 +154,10 @@ MigrationShippingDelivery2=ترقية تخزين الشحن 2
MigrationFinished=الانتهاء من الهجرة MigrationFinished=الانتهاء من الهجرة
LastStepDesc=<strong>الخطوة الأخيرة</strong> : تعريف المستخدم وكلمة السر هنا كنت تخطط لاستخدامها للاتصال البرمجيات. لا تفقد هذا كما هو حساب لإدارة جميع الآخرين. LastStepDesc=<strong>الخطوة الأخيرة</strong> : تعريف المستخدم وكلمة السر هنا كنت تخطط لاستخدامها للاتصال البرمجيات. لا تفقد هذا كما هو حساب لإدارة جميع الآخرين.
ActivateModule=تفعيل وحدة %s ActivateModule=تفعيل وحدة %s
# ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
######### #########
# upgrade # upgrade
#########
MigrationFixData=إصلاح البيانات الذي لم تتم تسويته MigrationFixData=إصلاح البيانات الذي لم تتم تسويته
MigrationOrder=بيانات الهجرة طلبات الزبائن MigrationOrder=بيانات الهجرة طلبات الزبائن
MigrationSupplierOrder=بيانات الهجرة من أجل الموردين أوامر MigrationSupplierOrder=بيانات الهجرة من أجل الموردين أوامر
@ -206,4 +205,7 @@ MigrationProjectUserResp=بيانات fk_user_resp مجال الهجرة من ll
MigrationProjectTaskTime=تحديث الوقت الذي يقضيه في ثوان MigrationProjectTaskTime=تحديث الوقت الذي يقضيه في ثوان
MigrationActioncommElement=تحديث البيانات على الإجراءات MigrationActioncommElement=تحديث البيانات على الإجراءات
MigrationPaymentMode=بيانات الهجرة لطريقة الدفع MigrationPaymentMode=بيانات الهجرة لطريقة الدفع
# MigrationCategorieAssociation=Migration of categories MigrationCategorieAssociation=Migration of categories
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options

View File

@ -141,9 +141,10 @@ HolidaysRefused=Denied holidays
HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason : HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled holidays HolidaysCanceled=Canceled holidays
HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled. HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20001=/ Промяна на всички искания празници Permission20000=Read you own holidays
Permission20002=Read/modify all requests of holidays Permission20001=Create/modify your holidays
Permission20003=Delete their holidays requests Permission20002=Create/modify holidays for everybody
Permission20004=Define users holidays Permission20003=Delete holidays requests
Permission20004=Setup users holidays
Permission20005=Review log of modified holidays Permission20005=Review log of modified holidays
Permission20006=Access holidays monthly report Permission20006=Read holidays monthly report

View File

@ -206,3 +206,6 @@ MigrationProjectTaskTime=Актуализация на времето, прек
MigrationActioncommElement=Актуализиране на данни за действия MigrationActioncommElement=Актуализиране на данни за действия
MigrationPaymentMode=Миграция на данни за плащане режим MigrationPaymentMode=Миграция на данни за плащане режим
MigrationCategorieAssociation=Migration of categories MigrationCategorieAssociation=Migration of categories
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options

View File

@ -34,7 +34,6 @@ ReturnCP=Vrati se na prethodnu stranicu
ErrorUserViewCP=Niste autorizovani da čitate ovaj zahtjev za godišnji odmor. ErrorUserViewCP=Niste autorizovani da čitate ovaj zahtjev za godišnji odmor.
InfosCP=Informacije o zahtjevu za odmor InfosCP=Informacije o zahtjevu za odmor
InfosWorkflowCP=Workflow informacija InfosWorkflowCP=Workflow informacija
DateCreateCP=Datum kreiranja
RequestByCP=Zahtjev poslao RequestByCP=Zahtjev poslao
TitreRequestCP=Lista godišnjih odmora TitreRequestCP=Lista godišnjih odmora
NbUseDaysCP=Broj iskorištenih dana godišnjeg odmora NbUseDaysCP=Broj iskorištenih dana godišnjeg odmora
@ -130,7 +129,6 @@ ErrorMailNotSend=Desila se greška prilikom slanja emaila:
NoCPforMonth=Nema odsustva za ovaj mjesec. NoCPforMonth=Nema odsustva za ovaj mjesec.
nbJours=Broj dana nbJours=Broj dana
TitleAdminCP=Konfiguracija godišnjih odmora TitleAdminCP=Konfiguracija godišnjih odmora
#Messages #Messages
Hello=Zdravo Hello=Zdravo
HolidaysToValidate=Potvrdi godišnje odmore HolidaysToValidate=Potvrdi godišnje odmore
@ -143,10 +141,10 @@ HolidaysRefused=Odbijeni godišnji odmori
HolidaysRefusedBody=Vaš zahtjev za godišnji odmor od %s do %s je odbijen zbog: HolidaysRefusedBody=Vaš zahtjev za godišnji odmor od %s do %s je odbijen zbog:
HolidaysCanceled=Poništeni godišnji odmori HolidaysCanceled=Poništeni godišnji odmori
HolidaysCanceledBody=Vaš zahtjev za godišnji odmor od %s fo %s je poništen. HolidaysCanceledBody=Vaš zahtjev za godišnji odmor od %s fo %s je poništen.
Permission20000=Read you own holidays
Permission20001=Pročitaj/kreiraj/izmijeni njigove godišnje odmore Permission20001=Create/modify your holidays
Permission20002=Pročitaj/kreiraj/izmijeni sve zahtjeve za godišnje odmore Permission20002=Create/modify holidays for everybody
Permission20003=Obriši njihove zahtjeve za godišnje odmore Permission20003=Delete holidays requests
Permission20004=Definiši korisnikove godišnje odmore Permission20004=Setup users holidays
Permission20005=Pregledaj izvještaj o izmijenjenim godišnjim odmorima Permission20005=Pregledaj izvještaj o izmijenjenim godišnjim odmorima
Permission20006=Pristupi mjesečnom izvještaj za godišnje odmore Permission20006=Read holidays monthly report

View File

@ -1,209 +1,211 @@
# Dolibarr language file - Source file is en_US - install # Dolibarr language file - Source file is en_US - install
# InstallEasy=Just follow the instructions step by step. InstallEasy=Just follow the instructions step by step.
# MiscellaneousChecks=Prerequisites check MiscellaneousChecks=Prerequisites check
# DolibarrWelcome=Welcome to Dolibarr DolibarrWelcome=Welcome to Dolibarr
# ConfFileExists=Configuration file <b>%s</b> exists. ConfFileExists=Configuration file <b>%s</b> exists.
# ConfFileDoesNotExists=Configuration file <b>%s</b> does not exist ! ConfFileDoesNotExists=Configuration file <b>%s</b> does not exist !
# ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file <b>%s</b> does not exist and could not be created ! ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file <b>%s</b> does not exist and could not be created !
# ConfFileCouldBeCreated=Configuration file <b>%s</b> could be created. ConfFileCouldBeCreated=Configuration file <b>%s</b> could be created.
# ConfFileIsNotWritable=Configuration file <b>%s</b> is not writable. Check permissions. For first install, your web server must be granted to be able to write into this file during configuration process ("chmod 666" for example on a Unix like OS). ConfFileIsNotWritable=Configuration file <b>%s</b> is not writable. Check permissions. For first install, your web server must be granted to be able to write into this file during configuration process ("chmod 666" for example on a Unix like OS).
# ConfFileIsWritable=Configuration file <b>%s</b> is writable. ConfFileIsWritable=Configuration file <b>%s</b> is writable.
# ConfFileReload=Reload all information from configuration file. ConfFileReload=Reload all information from configuration file.
# PHPSupportSessions=This PHP supports sessions. PHPSupportSessions=This PHP supports sessions.
# PHPSupportPOSTGETOk=This PHP supports variables POST and GET. PHPSupportPOSTGETOk=This PHP supports variables POST and GET.
# PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check your parameter <b>variables_order</b> in php.ini. PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check your parameter <b>variables_order</b> in php.ini.
# PHPSupportGD=This PHP support GD graphical functions. PHPSupportGD=This PHP support GD graphical functions.
# PHPSupportUTF8=This PHP support UTF8 functions. PHPSupportUTF8=This PHP support UTF8 functions.
# PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough.
# PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This should be too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This should be too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes.
# Recheck=Click here for a more significative test Recheck=Click here for a more significative test
# ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to make Dolibarr working. Check your PHP setup. ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to make Dolibarr working. Check your PHP setup.
# ErrorPHPDoesNotSupportGD=Your PHP installation does not support graphical function GD. No graph will be available. ErrorPHPDoesNotSupportGD=Your PHP installation does not support graphical function GD. No graph will be available.
# ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr can't work correctly. Solve this before installing Dolibarr. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr can't work correctly. Solve this before installing Dolibarr.
# ErrorDirDoesNotExists=Directory %s does not exist. ErrorDirDoesNotExists=Directory %s does not exist.
# ErrorGoBackAndCorrectParameters=Go backward and correct wrong parameters. ErrorGoBackAndCorrectParameters=Go backward and correct wrong parameters.
# ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'. ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'.
# ErrorFailedToCreateDatabase=Failed to create database '%s'. ErrorFailedToCreateDatabase=Failed to create database '%s'.
# ErrorFailedToConnectToDatabase=Failed to connect to database '%s'. ErrorFailedToConnectToDatabase=Failed to connect to database '%s'.
# ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required.
# ErrorPHPVersionTooLow=PHP version too old. Version %s is required. ErrorPHPVersionTooLow=PHP version too old. Version %s is required.
# WarningPHPVersionTooLow=PHP version too old. Version %s or more is expected. This version should allow install but is not supported. WarningPHPVersionTooLow=PHP version too old. Version %s or more is expected. This version should allow install but is not supported.
# ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found. ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found.
# ErrorDatabaseAlreadyExists=Database '%s' already exists. ErrorDatabaseAlreadyExists=Database '%s' already exists.
# IfDatabaseNotExistsGoBackAndUncheckCreate=If database does not exists, go back and check option "Create database". IfDatabaseNotExistsGoBackAndUncheckCreate=If database does not exists, go back and check option "Create database".
# IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option. IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option.
# WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded. WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded.
# PHPVersion=PHP Version PHPVersion=PHP Version
# YouCanContinue=You can continue... YouCanContinue=You can continue...
# PleaseBePatient=Please be patient... PleaseBePatient=Please be patient...
# License=Using license License=Using license
# ConfigurationFile=Configuration file ConfigurationFile=Configuration file
# WebPagesDirectory=Directory where web pages are stored WebPagesDirectory=Directory where web pages are stored
# DocumentsDirectory=Directory to store uploaded and generated documents DocumentsDirectory=Directory to store uploaded and generated documents
# URLRoot=URL Root URLRoot=URL Root
# ForceHttps=Force secure connections (https) ForceHttps=Force secure connections (https)
# CheckToForceHttps=Check this option to force secure connections (https).<br>This requires that the web server is configured with an SSL certificate. CheckToForceHttps=Check this option to force secure connections (https).<br>This requires that the web server is configured with an SSL certificate.
# DolibarrDatabase=Dolibarr Database DolibarrDatabase=Dolibarr Database
# DatabaseChoice=Database choice DatabaseChoice=Database choice
# DatabaseType=Database type DatabaseType=Database type
# DriverType=Driver type DriverType=Driver type
# Server=Server Server=Server
# ServerAddressDescription=Name or ip address for database server, usually 'localhost' when database server is hosted on same server than web server ServerAddressDescription=Name or ip address for database server, usually 'localhost' when database server is hosted on same server than web server
# ServerPortDescription=Database server port. Keep empty if unknown. ServerPortDescription=Database server port. Keep empty if unknown.
# DatabaseServer=Database server DatabaseServer=Database server
# DatabaseName=Database name DatabaseName=Database name
# DatabasePrefix=Database prefix table DatabasePrefix=Database prefix table
# Login=Login Login=Login
# AdminLogin=Login for Dolibarr database owner. AdminLogin=Login for Dolibarr database owner.
# Password=Password Password=Password
# PasswordAgain=Retype password a second time PasswordAgain=Retype password a second time
# AdminPassword=Password for Dolibarr database owner. AdminPassword=Password for Dolibarr database owner.
# CreateDatabase=Create database CreateDatabase=Create database
# CreateUser=Create owner CreateUser=Create owner
# DatabaseSuperUserAccess=Database server - Superuser access DatabaseSuperUserAccess=Database server - Superuser access
# CheckToCreateDatabase=Check box if database does not exist and must be created.<br>In this case, you must fill the login/password for superuser account at the bottom of this page. CheckToCreateDatabase=Check box if database does not exist and must be created.<br>In this case, you must fill the login/password for superuser account at the bottom of this page.
# CheckToCreateUser=Check box if database owner does not exist and must be created.<br>In this case, you must choose its login and password and also fill the login/password for the superuser account at the bottom of this page. If this box is unchecked, owner database and its passwords must exists. CheckToCreateUser=Check box if database owner does not exist and must be created.<br>In this case, you must choose its login and password and also fill the login/password for the superuser account at the bottom of this page. If this box is unchecked, owner database and its passwords must exists.
# Experimental=(experimental) Experimental=(experimental)
# DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists. DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists.
# KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this) KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this)
# SaveConfigurationFile=Save values SaveConfigurationFile=Save values
# ConfigurationSaving=Saving configuration file ConfigurationSaving=Saving configuration file
# ServerConnection=Server connection ServerConnection=Server connection
# DatabaseConnection=Database connection DatabaseConnection=Database connection
# DatabaseCreation=Database creation DatabaseCreation=Database creation
# UserCreation=User creation UserCreation=User creation
# CreateDatabaseObjects=Database objects creation CreateDatabaseObjects=Database objects creation
# ReferenceDataLoading=Reference data loading ReferenceDataLoading=Reference data loading
# TablesAndPrimaryKeysCreation=Tables and Primary keys creation TablesAndPrimaryKeysCreation=Tables and Primary keys creation
# CreateTableAndPrimaryKey=Create table %s CreateTableAndPrimaryKey=Create table %s
# CreateOtherKeysForTable=Create foreign keys and indexes for table %s CreateOtherKeysForTable=Create foreign keys and indexes for table %s
# OtherKeysCreation=Foreign keys and indexes creation OtherKeysCreation=Foreign keys and indexes creation
# FunctionsCreation=Functions creation FunctionsCreation=Functions creation
# AdminAccountCreation=Administrator login creation AdminAccountCreation=Administrator login creation
# PleaseTypePassword=Please type a password, empty passwords are not allowed ! PleaseTypePassword=Please type a password, empty passwords are not allowed !
# PleaseTypeALogin=Please type a login ! PleaseTypeALogin=Please type a login !
# PasswordsMismatch=Passwords differs, please try again ! PasswordsMismatch=Passwords differs, please try again !
# SetupEnd=End of setup SetupEnd=End of setup
# SystemIsInstalled=This installation is complete. SystemIsInstalled=This installation is complete.
# SystemIsUpgraded=Dolibarr has been upgraded successfully. SystemIsUpgraded=Dolibarr has been upgraded successfully.
# YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below: YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below:
# AdminLoginCreatedSuccessfuly=Dolibarr administrator login '<b>%s</b>' created successfuly. AdminLoginCreatedSuccessfuly=Dolibarr administrator login '<b>%s</b>' created successfuly.
# GoToDolibarr=Go to Dolibarr GoToDolibarr=Go to Dolibarr
# GoToSetupArea=Go to Dolibarr (setup area) GoToSetupArea=Go to Dolibarr (setup area)
# MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again. MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again.
# GoToUpgradePage=Go to upgrade page again GoToUpgradePage=Go to upgrade page again
# Examples=Examples Examples=Examples
# WithNoSlashAtTheEnd=Without the slash "/" at the end WithNoSlashAtTheEnd=Without the slash "/" at the end
# DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages. DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages.
# LoginAlreadyExists=Already exists LoginAlreadyExists=Already exists
# DolibarrAdminLogin=Dolibarr admin login DolibarrAdminLogin=Dolibarr admin login
# AdminLoginAlreadyExists=Dolibarr administrator account '<b>%s</b>' already exists. Go back, if you want to create another one. AdminLoginAlreadyExists=Dolibarr administrator account '<b>%s</b>' already exists. Go back, if you want to create another one.
# WarningRemoveInstallDir=Warning, for security reasons, once the install or upgrade is complete, to avoid using install tools again, you should add a file called <b>install.lock</b> into Dolibarr document directory, in order to avoid malicious use of it. WarningRemoveInstallDir=Warning, for security reasons, once the install or upgrade is complete, to avoid using install tools again, you should add a file called <b>install.lock</b> into Dolibarr document directory, in order to avoid malicious use of it.
# ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s
# FunctionNotAvailableInThisPHP=Not available on this PHP FunctionNotAvailableInThisPHP=Not available on this PHP
# MigrateScript=Migration script MigrateScript=Migration script
# ChoosedMigrateScript=Choose migration script ChoosedMigrateScript=Choose migration script
# DataMigration=Data migration DataMigration=Data migration
# DatabaseMigration=Structure database migration DatabaseMigration=Structure database migration
# ProcessMigrateScript=Script processing ProcessMigrateScript=Script processing
# ChooseYourSetupMode=Choose your setup mode and click "Start"... ChooseYourSetupMode=Choose your setup mode and click "Start"...
# FreshInstall=Fresh install FreshInstall=Fresh install
# FreshInstallDesc=Use this mode if this is your first install. If not, this mode can repair a incomplete previous install, but if you want to upgrade your version, choose "Upgrade" mode. FreshInstallDesc=Use this mode if this is your first install. If not, this mode can repair a incomplete previous install, but if you want to upgrade your version, choose "Upgrade" mode.
# Upgrade=Upgrade Upgrade=Upgrade
# UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data. UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data.
# Start=Start Start=Start
# InstallNotAllowed=Setup not allowed by <b>conf.php</b> permissions InstallNotAllowed=Setup not allowed by <b>conf.php</b> permissions
# NotAvailable=Not available NotAvailable=Not available
# YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process. YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process.
# CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload page. CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload page.
# AlreadyDone=Already migrated AlreadyDone=Already migrated
# DatabaseVersion=Database version DatabaseVersion=Database version
# ServerVersion=Database server version ServerVersion=Database server version
# YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it. YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it.
# CharsetChoice=Character set choice CharsetChoice=Character set choice
# CharacterSetClient=Character set used for generated HTML web pages CharacterSetClient=Character set used for generated HTML web pages
# CharacterSetClientComment=Choose character set for web display.<br/> Default proposed character set is the one of your database. CharacterSetClientComment=Choose character set for web display.<br/> Default proposed character set is the one of your database.
# DBSortingCollation=Character sorting order DBSortingCollation=Character sorting order
# DBSortingCollationComment=Choose page code that defines character's sorting order used by database. This parameter is also called 'collation' by some databases.<br/>This parameter can't be defined if database already exists. DBSortingCollationComment=Choose page code that defines character's sorting order used by database. This parameter is also called 'collation' by some databases.<br/>This parameter can't be defined if database already exists.
# CharacterSetDatabase=Character set for database CharacterSetDatabase=Character set for database
# CharacterSetDatabaseComment=Choose character set wanted for database creation.<br/>This parameter can't be defined if database already exists. CharacterSetDatabaseComment=Choose character set wanted for database creation.<br/>This parameter can't be defined if database already exists.
# YouAskDatabaseCreationSoDolibarrNeedToConnect=You ask to create database <b>%s</b>, but for this, Dolibarr need to connect to server <b>%s</b> with super user <b>%s</b> permissions. YouAskDatabaseCreationSoDolibarrNeedToConnect=You ask to create database <b>%s</b>, but for this, Dolibarr need to connect to server <b>%s</b> with super user <b>%s</b> permissions.
# YouAskLoginCreationSoDolibarrNeedToConnect=You ask to create database login <b>%s</b>, but for this, Dolibarr need to connect to server <b>%s</b> with super user <b>%s</b> permissions. YouAskLoginCreationSoDolibarrNeedToConnect=You ask to create database login <b>%s</b>, but for this, Dolibarr need to connect to server <b>%s</b> with super user <b>%s</b> permissions.
# BecauseConnectionFailedParametersMayBeWrong=As connection failed, host or super user parameters must be wrong. BecauseConnectionFailedParametersMayBeWrong=As connection failed, host or super user parameters must be wrong.
# OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s
# RemoveItManuallyAndPressF5ToContinue=Remove it manually and press F5 to continue. RemoveItManuallyAndPressF5ToContinue=Remove it manually and press F5 to continue.
# KeepDefaultValuesWamp=You use the Dolibarr setup wizard from DoliWamp, so values proposed here are already optimized. Change them only if you know what you do. KeepDefaultValuesWamp=You use the Dolibarr setup wizard from DoliWamp, so values proposed here are already optimized. Change them only if you know what you do.
# KeepDefaultValuesDeb=You use the Dolibarr setup wizard from a Linux package (Ubuntu, Debian, Fedora...), so values proposed here are already optimized. Only the password of the database owner to create must be completed. Change other parameters only if you know what you do. KeepDefaultValuesDeb=You use the Dolibarr setup wizard from a Linux package (Ubuntu, Debian, Fedora...), so values proposed here are already optimized. Only the password of the database owner to create must be completed. Change other parameters only if you know what you do.
# KeepDefaultValuesMamp=You use the Dolibarr setup wizard from DoliMamp, so values proposed here are already optimized. Change them only if you know what you do. KeepDefaultValuesMamp=You use the Dolibarr setup wizard from DoliMamp, so values proposed here are already optimized. Change them only if you know what you do.
# KeepDefaultValuesProxmox=You use the Dolibarr setup wizard from a Proxmox virtual appliance, so values proposed here are already optimized. Change them only if you know what you do. KeepDefaultValuesProxmox=You use the Dolibarr setup wizard from a Proxmox virtual appliance, so values proposed here are already optimized. Change them only if you know what you do.
# FieldRenamed=Field renamed FieldRenamed=Field renamed
# IfLoginDoesNotExistsCheckCreateUser=If login does not exists yet, you must check option "Create user" IfLoginDoesNotExistsCheckCreateUser=If login does not exists yet, you must check option "Create user"
# ErrorConnection=Server "<b>%s</b>", database name "<b>%s</b>", login "<b>%s</b>", or database password may be wrong or PHP client version may be too old compared to database version. ErrorConnection=Server "<b>%s</b>", database name "<b>%s</b>", login "<b>%s</b>", or database password may be wrong or PHP client version may be too old compared to database version.
# InstallChoiceRecommanded=Recommended choice to install version <b>%s</b> from your current version <b>%s</b> InstallChoiceRecommanded=Recommended choice to install version <b>%s</b> from your current version <b>%s</b>
# InstallChoiceSuggested=<b>Install choice suggested by installer</b>. InstallChoiceSuggested=<b>Install choice suggested by installer</b>.
# MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions, so install wizard will come back to suggest next migration once this one will be finished. MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions, so install wizard will come back to suggest next migration once this one will be finished.
# CheckThatDatabasenameIsCorrect=Check that database name "<b>%s</b>" is correct. CheckThatDatabasenameIsCorrect=Check that database name "<b>%s</b>" is correct.
# IfAlreadyExistsCheckOption=If this name is correct and that database does not exist yet, you must check option "Create database". IfAlreadyExistsCheckOption=If this name is correct and that database does not exist yet, you must check option "Create database".
# OpenBaseDir=PHP openbasedir parameter OpenBaseDir=PHP openbasedir parameter
# YouAskToCreateDatabaseSoRootRequired=You checked the box "Create database". For this, you need to provide login/password of superuser (bottom of form). YouAskToCreateDatabaseSoRootRequired=You checked the box "Create database". For this, you need to provide login/password of superuser (bottom of form).
# YouAskToCreateDatabaseUserSoRootRequired=You checked the box "Create database owner". For this, you need to provide login/password of superuser (bottom of form). YouAskToCreateDatabaseUserSoRootRequired=You checked the box "Create database owner". For this, you need to provide login/password of superuser (bottom of form).
# NextStepMightLastALongTime=Current step may last several minutes. Please wait until the next screen is shown completely before continuing. NextStepMightLastALongTime=Current step may last several minutes. Please wait until the next screen is shown completely before continuing.
# MigrationCustomerOrderShipping=Migrate shipping for customer orders storage MigrationCustomerOrderShipping=Migrate shipping for customer orders storage
# MigrationShippingDelivery=Upgrade storage of shipping MigrationShippingDelivery=Upgrade storage of shipping
# MigrationShippingDelivery2=Upgrade storage of shipping 2 MigrationShippingDelivery2=Upgrade storage of shipping 2
# MigrationFinished=Migration finished MigrationFinished=Migration finished
# LastStepDesc=<strong>Last step</strong>: Define here login and password you plan to use to connect to software. Do not loose this as it is the account to administer all others. LastStepDesc=<strong>Last step</strong>: Define here login and password you plan to use to connect to software. Do not loose this as it is the account to administer all others.
# ActivateModule=Activate module %s ActivateModule=Activate module %s
# ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
######### #########
# upgrade # upgrade
######### MigrationFixData=Fix for denormalized data
# MigrationFixData=Fix for denormalized data MigrationOrder=Data migration for customer's orders
# MigrationOrder=Data migration for customer's orders MigrationSupplierOrder=Data migration for supplier's orders
# MigrationSupplierOrder=Data migration for supplier's orders MigrationProposal=Data migration for commercial proposals
# MigrationProposal=Data migration for commercial proposals MigrationInvoice=Data migration for customer's invoices
# MigrationInvoice=Data migration for customer's invoices MigrationContract=Data migration for contracts
# MigrationContract=Data migration for contracts MigrationSuccessfullUpdate=Upgrade successful
# MigrationSuccessfullUpdate=Upgrade successful MigrationUpdateFailed=Failed upgrade process
# MigrationUpdateFailed=Failed upgrade process MigrationRelationshipTables=Data migration for relationship tables (%s)
# MigrationRelationshipTables=Data migration for relationship tables (%s) MigrationPaymentsUpdate=Payment data correction
# MigrationPaymentsUpdate=Payment data correction MigrationPaymentsNumberToUpdate=%s payment(s) to update
# MigrationPaymentsNumberToUpdate=%s payment(s) to update MigrationProcessPaymentUpdate=Update payment(s) %s
# MigrationProcessPaymentUpdate=Update payment(s) %s MigrationPaymentsNothingToUpdate=No more things to do
# MigrationPaymentsNothingToUpdate=No more things to do MigrationPaymentsNothingUpdatable=No more payments that can be corrected
# MigrationPaymentsNothingUpdatable=No more payments that can be corrected MigrationContractsUpdate=Contract data correction
# MigrationContractsUpdate=Contract data correction MigrationContractsNumberToUpdate=%s contract(s) to update
# MigrationContractsNumberToUpdate=%s contract(s) to update MigrationContractsLineCreation=Create contract line for contract ref %s
# MigrationContractsLineCreation=Create contract line for contract ref %s MigrationContractsNothingToUpdate=No more things to do
# MigrationContractsNothingToUpdate=No more things to do MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do.
# MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do. MigrationContractsEmptyDatesUpdate=Contract empty date correction
# MigrationContractsEmptyDatesUpdate=Contract empty date correction MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly
# MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct
# MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct
# MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct MigrationContractsInvalidDatesUpdate=Bad value date contract correction
# MigrationContractsInvalidDatesUpdate=Bad value date contract correction MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s)
# MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s) MigrationContractsInvalidDatesNumber=%s contracts modified
# MigrationContractsInvalidDatesNumber=%s contracts modified MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct
# MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction
# MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly
# MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct
# MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct MigrationReopeningContracts=Open contract closed by error
# MigrationReopeningContracts=Open contract closed by error MigrationReopenThisContract=Reopen contract %s
# MigrationReopenThisContract=Reopen contract %s MigrationReopenedContractsNumber=%s contracts modified
# MigrationReopenedContractsNumber=%s contracts modified MigrationReopeningContractsNothingToUpdate=No closed contract to open
# MigrationReopeningContractsNothingToUpdate=No closed contract to open MigrationBankTransfertsUpdate=Update links between bank transaction and a bank transfer
# MigrationBankTransfertsUpdate=Update links between bank transaction and a bank transfer MigrationBankTransfertsNothingToUpdate=All links are up to date
# MigrationBankTransfertsNothingToUpdate=All links are up to date MigrationShipmentOrderMatching=Sendings receipt update
# MigrationShipmentOrderMatching=Sendings receipt update MigrationDeliveryOrderMatching=Delivery receipt update
# MigrationDeliveryOrderMatching=Delivery receipt update MigrationDeliveryDetail=Delivery update
# MigrationDeliveryDetail=Delivery update MigrationStockDetail=Update stock value of products
# MigrationStockDetail=Update stock value of products MigrationMenusDetail=Update dynamic menus tables
# MigrationMenusDetail=Update dynamic menus tables MigrationDeliveryAddress=Update delivery address in shipments
# MigrationDeliveryAddress=Update delivery address in shipments MigrationProjectTaskActors=Data migration for llx_projet_task_actors table
# MigrationProjectTaskActors=Data migration for llx_projet_task_actors table MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact
# MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact MigrationProjectTaskTime=Update time spent in seconds
# MigrationProjectTaskTime=Update time spent in seconds MigrationActioncommElement=Update data on actions
# MigrationActioncommElement=Update data on actions MigrationPaymentMode=Data migration for payment mode
# MigrationPaymentMode=Data migration for payment mode MigrationCategorieAssociation=Migration of categories
# MigrationCategorieAssociation=Migration of categories
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options

View File

@ -34,7 +34,6 @@ ReturnCP=Tornar a la pàgina anterior
ErrorUserViewCP=No està autoritzat a llegir aquesta petició de vacances. ErrorUserViewCP=No està autoritzat a llegir aquesta petició de vacances.
InfosCP=Informació de la petició de vacances InfosCP=Informació de la petició de vacances
InfosWorkflowCP=Informació del workflow InfosWorkflowCP=Informació del workflow
DateCreateCP=Data de creació
RequestByCP=Comandada per RequestByCP=Comandada per
TitreRequestCP=Fitxa vacances TitreRequestCP=Fitxa vacances
NbUseDaysCP=Nombre de dies de vacances consumits NbUseDaysCP=Nombre de dies de vacances consumits
@ -87,7 +86,7 @@ FirstDayOfHoliday=Primer dia lliure
LastDayOfHoliday=Últim dí lliure LastDayOfHoliday=Últim dí lliure
HolidaysMonthlyUpdate=Actualització mensual HolidaysMonthlyUpdate=Actualització mensual
ManualUpdate=Actualització manual ManualUpdate=Actualització manual
# HolidaysCancelation=Holidays cancelation HolidaysCancelation=Holidays cancelation
## Configuration du Module ## ## Configuration du Module ##
ConfCP=Configuració del mòdul Vacacions ConfCP=Configuració del mòdul Vacacions
@ -130,7 +129,6 @@ ErrorMailNotSend=S'ha produït un error en l'enviament del correu electrònic:
NoCPforMonth=Sense vacances aquest mes. NoCPforMonth=Sense vacances aquest mes.
nbJours=Número de dies nbJours=Número de dies
TitleAdminCP=Configuració de les vacances TitleAdminCP=Configuració de les vacances
#Messages #Messages
Hello=Hola Hello=Hola
HolidaysToValidate=Dies retribuïts a validar HolidaysToValidate=Dies retribuïts a validar
@ -143,10 +141,10 @@ HolidaysRefused=Dies retribuïts denegats
HolidaysRefusedBody=La seva sol·licitud de dies retribuïts des de %s al %s ha estat denegada pel següent motiu: HolidaysRefusedBody=La seva sol·licitud de dies retribuïts des de %s al %s ha estat denegada pel següent motiu:
HolidaysCanceled=Dies retribuïts cancel·lats HolidaysCanceled=Dies retribuïts cancel·lats
HolidaysCanceledBody=La seva sol·licitud de dies retribuïts des de %s al %s ha estat cancel·lada. HolidaysCanceledBody=La seva sol·licitud de dies retribuïts des de %s al %s ha estat cancel·lada.
Permission20000=Read you own holidays
Permission20001=Consultar/crear/modificar les seves vacances Permission20001=Create/modify your holidays
Permission20002=Consultar/modificar totes les sol·licituds de permisos retribuïts Permission20002=Create/modify holidays for everybody
Permission20003=Eliminar les sol·licituds de permisos retribuïts Permission20003=Delete holidays requests
Permission20004=Definir els permisos retribuïts dels usuaris Permission20004=Setup users holidays
Permission20005=Consultar l'historial de modificacions de permisos retribuïts Permission20005=Consultar l'historial de modificacions de permisos retribuïts
Permission20006=Accedir a l'informe mensual de permisos retribuïts Permission20006=Read holidays monthly report

View File

@ -158,7 +158,6 @@ ShowEditTechnicalParameters=Premi aquí per veure/editar els paràmetres tècnic
######### #########
# upgrade # upgrade
#########
MigrationFixData=Correcció de dades desnormalitzades MigrationFixData=Correcció de dades desnormalitzades
MigrationOrder=Migració de dades de les comandes clients MigrationOrder=Migració de dades de les comandes clients
MigrationSupplierOrder=Migració de dades de les comandes a proveïdors MigrationSupplierOrder=Migració de dades de les comandes a proveïdors
@ -207,3 +206,6 @@ MigrationProjectTaskTime=Actualització de temps dedicat en segons
MigrationActioncommElement=Actualització de les dades de accions sobre elements MigrationActioncommElement=Actualització de les dades de accions sobre elements
MigrationPaymentMode=Actualització de les formes de pagament MigrationPaymentMode=Actualització de les formes de pagament
MigrationCategorieAssociation=Actualització de les categories MigrationCategorieAssociation=Actualització de les categories
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options

View File

@ -34,7 +34,6 @@ ReturnCP=Zpět na předchozí stránku
ErrorUserViewCP=Nejste oprávněn číst toto žádosti o dovolenou. ErrorUserViewCP=Nejste oprávněn číst toto žádosti o dovolenou.
InfosCP=Informace o poptávce po prázdninách InfosCP=Informace o poptávce po prázdninách
InfosWorkflowCP=Informace Workflow InfosWorkflowCP=Informace Workflow
DateCreateCP=Datum vytvoření
RequestByCP=Žádost RequestByCP=Žádost
TitreRequestCP=List dovolenou TitreRequestCP=List dovolenou
NbUseDaysCP=Počet dní dovolené spotřebovaných NbUseDaysCP=Počet dní dovolené spotřebovaných
@ -130,7 +129,6 @@ ErrorMailNotSend=Došlo k chybě při odesílání e-mail:
NoCPforMonth=Ne opustit tento měsíc. NoCPforMonth=Ne opustit tento měsíc.
nbJours=Počet dní nbJours=Počet dní
TitleAdminCP=Konfigurace svátky TitleAdminCP=Konfigurace svátky
#Messages #Messages
Hello=Ahoj Hello=Ahoj
HolidaysToValidate=Ověřit dovolenou HolidaysToValidate=Ověřit dovolenou
@ -143,10 +141,10 @@ HolidaysRefused=Odepření prázdniny
HolidaysRefusedBody=Vaše žádost o dovolenou pro %s na %s byl zamítnut z těchto důvodů: HolidaysRefusedBody=Vaše žádost o dovolenou pro %s na %s byl zamítnut z těchto důvodů:
HolidaysCanceled=Zrušené svátky HolidaysCanceled=Zrušené svátky
HolidaysCanceledBody=Vaše žádost o dovolenou pro %s na %s byla zrušena. HolidaysCanceledBody=Vaše žádost o dovolenou pro %s na %s byla zrušena.
Permission20000=Read you own holidays
Permission20001=Čtení / zápis / přepis jejich svátky Permission20001=Create/modify your holidays
Permission20002=Přečtěte si / upravit všechny žádosti dovolenou Permission20002=Create/modify holidays for everybody
Permission20003=Odstranit svou dovolenou žádosti Permission20003=Delete holidays requests
Permission20004=Definujte uživatelům dovolenou Permission20004=Setup users holidays
Permission20005=Recenze protokol modifikovaných dovolenou Permission20005=Recenze protokol modifikovaných dovolenou
Permission20006=Přístup dovolená měsíční zprávu Permission20006=Read holidays monthly report

View File

@ -206,3 +206,6 @@ MigrationProjectTaskTime=Čas aktualizace v sekundách
MigrationActioncommElement=Aktualizovat údaje na činnostech MigrationActioncommElement=Aktualizovat údaje na činnostech
MigrationPaymentMode=Migrace dat platebního režimu MigrationPaymentMode=Migrace dat platebního režimu
MigrationCategorieAssociation=Migrace kategorií MigrationCategorieAssociation=Migrace kategorií
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options

View File

@ -1,152 +1,150 @@
# Dolibarr language file - Source file is en_US - holiday # Dolibarr language file - Source file is en_US - holiday
# HRM=HRM HRM=HRM
# Holidays=Holidays Holidays=Holidays
# CPTitreMenu=Holidays CPTitreMenu=Holidays
# MenuReportMonth=Monthly statement MenuReportMonth=Monthly statement
# MenuAddCP=Apply for holidays MenuAddCP=Apply for holidays
# NotActiveModCP=You must enable the module holidays to view this page. NotActiveModCP=You must enable the module holidays to view this page.
# NotConfigModCP=You must configure the module holidays to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>. NotConfigModCP=You must configure the module holidays to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>.
# NoCPforUser=You don't have a demand for holidays. NoCPforUser=You don't have a demand for holidays.
# AddCP=Apply for holidays AddCP=Apply for holidays
# CPErrorSQL=An SQL error occurred: CPErrorSQL=An SQL error occurred:
# Employe=Employee Employe=Employee
DateDebCP=Startdato DateDebCP=Startdato
DateFinCP=Slutdato DateFinCP=Slutdato
DateCreateCP=Lavet dato DateCreateCP=Lavet dato
DraftCP=Udkast til DraftCP=Udkast til
# ToReviewCP=Awaiting approval ToReviewCP=Awaiting approval
ApprovedCP=Godkendt ApprovedCP=Godkendt
CancelCP=Aflyst CancelCP=Aflyst
RefuseCP=Afviste RefuseCP=Afviste
# ValidatorCP=Approbator ValidatorCP=Approbator
# ListeCP=List of holidays ListeCP=List of holidays
# ReviewedByCP=Will be reviewed by ReviewedByCP=Will be reviewed by
DescCP=Beskrivelse DescCP=Beskrivelse
# SendRequestCP=Creating demand for holidays SendRequestCP=Creating demand for holidays
# DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them. DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
# MenuConfCP=Edit balance of holidays MenuConfCP=Edit balance of holidays
# UpdateAllCP=Update the holidays UpdateAllCP=Update the holidays
# SoldeCPUser=Holidays balance is <b>%s</b> days. SoldeCPUser=Holidays balance is <b>%s</b> days.
# ErrorEndDateCP=You must select an end date greater than the start date. ErrorEndDateCP=You must select an end date greater than the start date.
# ErrorSQLCreateCP=An SQL error occurred during the creation: ErrorSQLCreateCP=An SQL error occurred during the creation:
# ErrorIDFicheCP=An error has occurred, the request for holidays does not exist. ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.
# ReturnCP=Return to previous page ReturnCP=Return to previous page
# ErrorUserViewCP=You are not authorized to read this request for holidays. ErrorUserViewCP=You are not authorized to read this request for holidays.
# InfosCP=Information of the demand of holidays InfosCP=Information of the demand of holidays
# InfosWorkflowCP=Information Workflow InfosWorkflowCP=Information Workflow
DateCreateCP=Lavet dato RequestByCP=Requested by
# RequestByCP=Requested by TitreRequestCP=Sheet of holidays
# TitreRequestCP=Sheet of holidays NbUseDaysCP=Number of days of holidays consumed
# NbUseDaysCP=Number of days of holidays consumed
EditCP=Redigér EditCP=Redigér
DeleteCP=Slet DeleteCP=Slet
ActionValidCP=Validate ActionValidCP=Validate
# ActionRefuseCP=Refuse ActionRefuseCP=Refuse
ActionCancelCP=Annuller ActionCancelCP=Annuller
StatutCP=Status StatutCP=Status
# SendToValidationCP=Send to validation SendToValidationCP=Send to validation
# TitleDeleteCP=Delete the request of holidays TitleDeleteCP=Delete the request of holidays
# ConfirmDeleteCP=Confirm the deletion of this request for holidays? ConfirmDeleteCP=Confirm the deletion of this request for holidays?
# ErrorCantDeleteCP=Error you don't have the right to delete this holiday request. ErrorCantDeleteCP=Error you don't have the right to delete this holiday request.
# CantCreateCP=You don't have the right to apply for holidays. CantCreateCP=You don't have the right to apply for holidays.
# InvalidValidatorCP=You must choose an approbator to your holiday request. InvalidValidatorCP=You must choose an approbator to your holiday request.
UpdateButtonCP=Opdatering UpdateButtonCP=Opdatering
# CantUpdate=You cannot update this request of holidays. CantUpdate=You cannot update this request of holidays.
# NoDateDebut=You must select a start date. NoDateDebut=You must select a start date.
# NoDateFin=You must select an end date. NoDateFin=You must select an end date.
# ErrorDureeCP=Your request for holidays does not contain working day. ErrorDureeCP=Your request for holidays does not contain working day.
# TitleValidCP=Approve the request holidays TitleValidCP=Approve the request holidays
# ConfirmValidCP=Are you sure you want to approve the holiday request? ConfirmValidCP=Are you sure you want to approve the holiday request?
# DateValidCP=Date approved DateValidCP=Date approved
# TitleToValidCP=Send request holidays TitleToValidCP=Send request holidays
# ConfirmToValidCP=Are you sure you want to send the request of holidays? ConfirmToValidCP=Are you sure you want to send the request of holidays?
# TitleRefuseCP=Refuse the request holidays TitleRefuseCP=Refuse the request holidays
# ConfirmRefuseCP=Are you sure you want to refuse the request of holidays? ConfirmRefuseCP=Are you sure you want to refuse the request of holidays?
# NoMotifRefuseCP=You must choose a reason for refusing the request. NoMotifRefuseCP=You must choose a reason for refusing the request.
# TitleCancelCP=Cancel the request holidays TitleCancelCP=Cancel the request holidays
# ConfirmCancelCP=Are you sure you want to cancel the request of holidays? ConfirmCancelCP=Are you sure you want to cancel the request of holidays?
# DetailRefusCP=Reason for refusal DetailRefusCP=Reason for refusal
# DateRefusCP=Date of refusal DateRefusCP=Date of refusal
# DateCancelCP=Date of cancellation DateCancelCP=Date of cancellation
# DefineEventUserCP=Assign an exceptional leave for a user DefineEventUserCP=Assign an exceptional leave for a user
# addEventToUserCP=Assign leave addEventToUserCP=Assign leave
MotifCP=Årsag MotifCP=Årsag
UserCP=Bruger UserCP=Bruger
# ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
# AddEventToUserOkCP=The addition of the exceptional leave has been completed. AddEventToUserOkCP=The addition of the exceptional leave has been completed.
# MenuLogCP=View logs of holidays MenuLogCP=View logs of holidays
# LogCP=Log of updates of holidays LogCP=Log of updates of holidays
# ActionByCP=Performed by ActionByCP=Performed by
# UserUpdateCP=For the user UserUpdateCP=For the user
# PrevSoldeCP=Previous Balance PrevSoldeCP=Previous Balance
# NewSoldeCP=New Balance NewSoldeCP=New Balance
# alreadyCPexist=A request for holidays has already been done on this period. alreadyCPexist=A request for holidays has already been done on this period.
UserName=Navn UserName=Navn
# Employee=Employee Employee=Employee
# FirstDayOfHoliday=First day of holiday FirstDayOfHoliday=First day of holiday
# LastDayOfHoliday=Last day of holiday LastDayOfHoliday=Last day of holiday
# HolidaysMonthlyUpdate=Monthly update HolidaysMonthlyUpdate=Monthly update
# ManualUpdate=Manual update ManualUpdate=Manual update
# HolidaysCancelation=Holidays cancelation HolidaysCancelation=Holidays cancelation
## Configuration du Module ## ## Configuration du Module ##
# ConfCP=Configuration of holidays module ConfCP=Configuration of holidays module
# DescOptionCP=Description of the option DescOptionCP=Description of the option
ValueOptionCP=Værdi ValueOptionCP=Værdi
# GroupToValidateCP=Group with the ability to approve holidays GroupToValidateCP=Group with the ability to approve holidays
# ConfirmConfigCP=Validate the configuration ConfirmConfigCP=Validate the configuration
# LastUpdateCP=Last updated automatically of holidays LastUpdateCP=Last updated automatically of holidays
# UpdateConfCPOK=Updated successfully. UpdateConfCPOK=Updated successfully.
# ErrorUpdateConfCP=An error occurred during the update, please try again. ErrorUpdateConfCP=An error occurred during the update, please try again.
# AddCPforUsers=Please add the balance of holidays of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>. AddCPforUsers=Please add the balance of holidays of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>.
# DelayForSubmitCP=Deadline to apply for holidays DelayForSubmitCP=Deadline to apply for holidays
# AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
# AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
# AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
# nbUserCP=Number of users supported in the module holidays nbUserCP=Number of users supported in the module holidays
# nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
# nbHolidayEveryMonthCP=Number of holidays added every month nbHolidayEveryMonthCP=Number of holidays added every month
# Module27130Name= Management of holidays Module27130Name= Management of holidays
# Module27130Desc= Management of holidays Module27130Desc= Management of holidays
# TitleOptionMainCP=Main settings of holidays TitleOptionMainCP=Main settings of holidays
# TitleOptionEventCP=Settings of holidays related to events TitleOptionEventCP=Settings of holidays related to events
ValidEventCP=Validate ValidEventCP=Validate
# UpdateEventCP=Update events UpdateEventCP=Update events
CreateEventCP=Opret CreateEventCP=Opret
# NameEventCP=Event name NameEventCP=Event name
# OkCreateEventCP=The addition of the event went well. OkCreateEventCP=The addition of the event went well.
# ErrorCreateEventCP=Error creating the event. ErrorCreateEventCP=Error creating the event.
# UpdateEventOkCP=The update of the event went well. UpdateEventOkCP=The update of the event went well.
# ErrorUpdateEventCP=Error while updating the event. ErrorUpdateEventCP=Error while updating the event.
# DeleteEventCP=Delete Event DeleteEventCP=Delete Event
# DeleteEventOkCP=The event has been deleted. DeleteEventOkCP=The event has been deleted.
# ErrorDeleteEventCP=Error while deleting the event. ErrorDeleteEventCP=Error while deleting the event.
# TitleDeleteEventCP=Delete a exceptional leave TitleDeleteEventCP=Delete a exceptional leave
# TitleCreateEventCP=Create a exceptional leave TitleCreateEventCP=Create a exceptional leave
# TitleUpdateEventCP=Edit or delete a exceptional leave TitleUpdateEventCP=Edit or delete a exceptional leave
DeleteEventOptionCP=Slet DeleteEventOptionCP=Slet
UpdateEventOptionCP=Opdatering UpdateEventOptionCP=Opdatering
# ErrorMailNotSend=An error occurred while sending email: ErrorMailNotSend=An error occurred while sending email:
# NoCPforMonth=No leave this month. NoCPforMonth=No leave this month.
# nbJours=Number days nbJours=Number days
# TitleAdminCP=Configuration of Holidays TitleAdminCP=Configuration of Holidays
#Messages #Messages
# Hello=Hello Hello=Hello
# HolidaysToValidate=Validate holidays HolidaysToValidate=Validate holidays
# HolidaysToValidateBody=Below is a request for holidays to validate HolidaysToValidateBody=Below is a request for holidays to validate
# HolidaysToValidateDelay=This request for holidays will take place within a period of less than %s days. HolidaysToValidateDelay=This request for holidays will take place within a period of less than %s days.
# HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days. HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
# HolidaysValidated=Validated holidays HolidaysValidated=Validated holidays
# HolidaysValidatedBody=Your request for holidays for %s to %s has been validated. HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
# HolidaysRefused=Denied holidays HolidaysRefused=Denied holidays
# HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason : HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
# HolidaysCanceled=Canceled holidays HolidaysCanceled=Canceled holidays
# HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled. HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20000=Read you own holidays
# Permission20001=Read/create/modify their holidays Permission20001=Create/modify your holidays
# Permission20002=Read/modify all requests of holidays Permission20002=Create/modify holidays for everybody
# Permission20003=Delete their holidays requests Permission20003=Delete holidays requests
# Permission20004=Define users holidays Permission20004=Setup users holidays
# Permission20005=Review log of modified holidays Permission20005=Review log of modified holidays
# Permission20006=Access holidays monthly report Permission20006=Read holidays monthly report

View File

@ -25,14 +25,14 @@ ErrorGoBackAndCorrectParameters=Gå tilbage og rette forkerte parametre.
ErrorWrongValueForParameter=Du kan have indtastet en forkert værdi for parameter ' %s'. ErrorWrongValueForParameter=Du kan have indtastet en forkert værdi for parameter ' %s'.
ErrorFailedToCreateDatabase=Kunne ikke oprette databasen ' %s'. ErrorFailedToCreateDatabase=Kunne ikke oprette databasen ' %s'.
ErrorFailedToConnectToDatabase=Det lykkedes ikke at oprette forbindelse til databasen ' %s'. ErrorFailedToConnectToDatabase=Det lykkedes ikke at oprette forbindelse til databasen ' %s'.
# ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required.
ErrorPHPVersionTooLow=PHP version for gammel. Version %s er påkrævet. ErrorPHPVersionTooLow=PHP version for gammel. Version %s er påkrævet.
WarningPHPVersionTooLow=PHP version for gammel. Version %s eller mere er forventet. Denne version skulle gøre det muligt installere, men er ikke understøttet. WarningPHPVersionTooLow=PHP version for gammel. Version %s eller mere er forventet. Denne version skulle gøre det muligt installere, men er ikke understøttet.
ErrorConnectedButDatabaseNotFound=Forbindelsen til serveren vellykket men database ' %s' blev ikke fundet. ErrorConnectedButDatabaseNotFound=Forbindelsen til serveren vellykket men database ' %s' blev ikke fundet.
ErrorDatabaseAlreadyExists=Database ' %s' eksisterer allerede. ErrorDatabaseAlreadyExists=Database ' %s' eksisterer allerede.
IfDatabaseNotExistsGoBackAndUncheckCreate=Hvis databasen ikke findes, gå tilbage og tjekke valgmulighed "Opret database". IfDatabaseNotExistsGoBackAndUncheckCreate=Hvis databasen ikke findes, gå tilbage og tjekke valgmulighed "Opret database".
IfDatabaseExistsGoBackAndCheckCreate=Hvis database findes allerede, gå tilbage og fjerne markeringen "Opret database" valgmulighed. IfDatabaseExistsGoBackAndCheckCreate=Hvis database findes allerede, gå tilbage og fjerne markeringen "Opret database" valgmulighed.
# WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded. WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded.
PHPVersion=PHP Version PHPVersion=PHP Version
YouCanContinue=Du kan fortsætte ... YouCanContinue=Du kan fortsætte ...
PleaseBePatient=Vær tålmodig ... PleaseBePatient=Vær tålmodig ...
@ -154,11 +154,10 @@ MigrationShippingDelivery2=Opgrader opbevaring af shipping 2
MigrationFinished=Migration er færdig MigrationFinished=Migration er færdig
LastStepDesc=<strong>Sidste trin:</strong> Definer her login og adgangskode, du planlægger at bruge til at oprette forbindelse til software. Må ikke løse dette, da det er den konto, at administrere alle andre. LastStepDesc=<strong>Sidste trin:</strong> Definer her login og adgangskode, du planlægger at bruge til at oprette forbindelse til software. Må ikke løse dette, da det er den konto, at administrere alle andre.
ActivateModule=Aktiver modul %s ActivateModule=Aktiver modul %s
# ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
######### #########
# upgrade # upgrade
#########
MigrationFixData=Fix for denormalized data MigrationFixData=Fix for denormalized data
MigrationOrder=Data migration for kundernes ordrer MigrationOrder=Data migration for kundernes ordrer
MigrationSupplierOrder=Data migration for leverandører ordrer MigrationSupplierOrder=Data migration for leverandører ordrer
@ -206,4 +205,7 @@ MigrationProjectUserResp=Data migration inden fk_user_resp af llx_projet til llx
MigrationProjectTaskTime=Update tid i sekunder MigrationProjectTaskTime=Update tid i sekunder
MigrationActioncommElement=Opdatere data om tiltag MigrationActioncommElement=Opdatere data om tiltag
MigrationPaymentMode=Data migration for betaling mode MigrationPaymentMode=Data migration for betaling mode
# MigrationCategorieAssociation=Migration of categories MigrationCategorieAssociation=Migration of categories
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options

View File

@ -50,10 +50,10 @@ ErrorCodeCantContainZero=Code darf keinen Wert 0 enthalten
DisableJavascript=JavaScript- und Ajax-Funktionen deaktivieren DisableJavascript=JavaScript- und Ajax-Funktionen deaktivieren
ConfirmAjax=Ajax-Bestätigungs-Popups verwenden ConfirmAjax=Ajax-Bestätigungs-Popups verwenden
UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box. UseSearchToSelectCompany=Suchfeld statt Listenansicht für Partnerauswahl verwenden.
ActivityStateToSelectCompany= Setzt einen Filter um Partner ein-/ausblenden, welche aktiv oder inaktiv sind. ActivityStateToSelectCompany= Setzt einen Filter um Partner ein-/ausblenden, welche aktiv oder inaktiv sind.
UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box). UseSearchToSelectContact=Suchfeld statt Listenansicht für Kontaktauswahl verwenden.
SearchFilter=Suchfilter Optionen SearchFilter=Suchfilter Optionen
NumberOfKeyToSearch=Anzahl der Buchstaben um eine Suche auszulösen: %s NumberOfKeyToSearch=Anzahl der Buchstaben um eine Suche auszulösen: %s
ViewFullDateActions=Zeige alle Terminaktionen in der Partneransicht ViewFullDateActions=Zeige alle Terminaktionen in der Partneransicht
@ -1014,7 +1014,7 @@ YouMustEnableOneModule=Sie müssen mindestens 1 Modul aktivieren
ClassNotFoundIntoPathWarning=Klasse %s nicht innerhalb PHP-Pfad gefunden ClassNotFoundIntoPathWarning=Klasse %s nicht innerhalb PHP-Pfad gefunden
YesInSummer=Ja im Sommer YesInSummer=Ja im Sommer
OnlyFollowingModulesAreOpenedToExternalUsers=Bitte beachten: nur die folgenden Module sind für externe Nutzer verfügbar (unabhängig von deren Rechten): OnlyFollowingModulesAreOpenedToExternalUsers=Bitte beachten: nur die folgenden Module sind für externe Nutzer verfügbar (unabhängig von deren Rechten):
SuhosinSessionEncrypt=Session storage encrypted by Suhosin SuhosinSessionEncrypt=Sitzungsspeicher durch Suhosin verschlüsselt
ConditionIsCurrently=Einstellung ist aktuell %s ConditionIsCurrently=Einstellung ist aktuell %s
TestNotPossibleWithCurrentBrowsers=Automatische Erkennung nicht möglich TestNotPossibleWithCurrentBrowsers=Automatische Erkennung nicht möglich
YouUseBestDriver=Sie verwenden den Treiber %s, dies ist derzeit der beste verfügbare. YouUseBestDriver=Sie verwenden den Treiber %s, dies ist derzeit der beste verfügbare.
@ -1310,7 +1310,7 @@ ModifyProductDescAbility=Produktbeschreibungen in Formularen individuell anpassb
ViewProductDescInFormAbility=Anzeige dr Produktbeschreibungen in Formularen (andernfalls als Popup-Tooltip) ViewProductDescInFormAbility=Anzeige dr Produktbeschreibungen in Formularen (andernfalls als Popup-Tooltip)
ViewProductDescInThirdpartyLanguageAbility=Visualisierung von Produkten Beschreibungen in der Sprache thirdparty ViewProductDescInThirdpartyLanguageAbility=Visualisierung von Produkten Beschreibungen in der Sprache thirdparty
UseSearchToSelectProductTooltip=Also if you have a large number of product (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectProductTooltip=Also if you have a large number of product (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
UseSearchToSelectProduct=Use a search form to choose a product (rather than a drop-down list). UseSearchToSelectProduct=Suchfeld statt Listenansicht für die Produktauswahl verwenden.
UseEcoTaxeAbility=Umweltabgaben unterstüzten UseEcoTaxeAbility=Umweltabgaben unterstüzten
SetDefaultBarcodeTypeProducts=Standard-Barcode-Typ für Produkte SetDefaultBarcodeTypeProducts=Standard-Barcode-Typ für Produkte
SetDefaultBarcodeTypeThirdParties=Standard-Barcode-Typ für Partner SetDefaultBarcodeTypeThirdParties=Standard-Barcode-Typ für Partner
@ -1492,7 +1492,7 @@ TestGeoIPResult=Test einer Umwandlung IP -> Land
ProjectsNumberingModules=Projektnumerierungsmodul ProjectsNumberingModules=Projektnumerierungsmodul
ProjectsSetup=Projekteinstellungenmodul ProjectsSetup=Projekteinstellungenmodul
ProjectsModelModule=Projektvorlagenmodul ProjectsModelModule=Projektvorlagenmodul
TasksNumberingModules=Tasks numbering module TasksNumberingModules=Aufgaben-Nummerierungs-Modul
TaskModelModule=Tasks reports document model TaskModelModule=Tasks reports document model
##### ECM (GED) ##### ##### ECM (GED) #####
ECMSetup = GED Setup ECMSetup = GED Setup

View File

@ -6,7 +6,7 @@ MenuReportMonth=Monatsauszug
MenuAddCP=Ferienantrag MenuAddCP=Ferienantrag
NotActiveModCP=Sie müssen das Ferien-Modul aktivieren um diese Seite zu sehen. NotActiveModCP=Sie müssen das Ferien-Modul aktivieren um diese Seite zu sehen.
NotConfigModCP=Sie müssen das Ferien-Modul konfigurieren um diese Seite zu sehen. Dazu <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> klicken Sie hier </ a>. NotConfigModCP=Sie müssen das Ferien-Modul konfigurieren um diese Seite zu sehen. Dazu <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> klicken Sie hier </ a>.
# NoCPforUser=You don't have a demand for holidays. NoCPforUser=You don't have a demand for holidays.
AddCP=Ferienantrag AddCP=Ferienantrag
CPErrorSQL=Ein SQL Fehler ist aufgetreten: CPErrorSQL=Ein SQL Fehler ist aufgetreten:
Employe=Angestellter Employe=Angestellter
@ -18,13 +18,13 @@ ToReviewCP=Wartet auf Genehmigung
ApprovedCP=Genehmigt ApprovedCP=Genehmigt
CancelCP=Storno CancelCP=Storno
RefuseCP=Abgelehnt RefuseCP=Abgelehnt
# ValidatorCP=Approbator ValidatorCP=Approbator
ListeCP=Ferienliste ListeCP=Ferienliste
# ReviewedByCP=Will be reviewed by ReviewedByCP=Will be reviewed by
DescCP=Beschreibung DescCP=Beschreibung
# SendRequestCP=Creating demand for holidays SendRequestCP=Creating demand for holidays
DelayToRequestCP=Anträge für Ferien müssen mindestens <b>%s Tage</b> im voraus gestellt werden. DelayToRequestCP=Anträge für Ferien müssen mindestens <b>%s Tage</b> im voraus gestellt werden.
# MenuConfCP=Edit balance of holidays MenuConfCP=Edit balance of holidays
UpdateAllCP=Ferien aktualisieren UpdateAllCP=Ferien aktualisieren
SoldeCPUser=Feriensaldo ist <b>%s</b> Tage. SoldeCPUser=Feriensaldo ist <b>%s</b> Tage.
ErrorEndDateCP=Sie müssen ein End-Datum wählen, dass nach dem Start-Datum liegt. ErrorEndDateCP=Sie müssen ein End-Datum wählen, dass nach dem Start-Datum liegt.
@ -32,11 +32,10 @@ ErrorSQLCreateCP=Ein SQL Fehler trat auf bei der Eerstellung von:
ErrorIDFicheCP=Ein Fehler trat auf, der Antrag auf Ferien existiert nicht. ErrorIDFicheCP=Ein Fehler trat auf, der Antrag auf Ferien existiert nicht.
ReturnCP=Zurück zur vorherigen Seite ReturnCP=Zurück zur vorherigen Seite
ErrorUserViewCP=Sie sind nicht berechtigt diese Ferien-Anträge zu lesen. ErrorUserViewCP=Sie sind nicht berechtigt diese Ferien-Anträge zu lesen.
# InfosCP=Information of the demand of holidays InfosCP=Information of the demand of holidays
# InfosWorkflowCP=Information Workflow InfosWorkflowCP=Information Workflow
DateCreateCP=Erstellungsdatum
RequestByCP=Beantragt von RequestByCP=Beantragt von
# TitreRequestCP=Sheet of holidays TitreRequestCP=Sheet of holidays
NbUseDaysCP=Anzahl Ferientage bezogen NbUseDaysCP=Anzahl Ferientage bezogen
EditCP=Bearbeiten EditCP=Bearbeiten
DeleteCP=Lösche Gruppe DeleteCP=Lösche Gruppe
@ -49,15 +48,15 @@ TitleDeleteCP=Antrag auf Ferien löschen
ConfirmDeleteCP=Löschung dieses Ferienantrags bestätigen? ConfirmDeleteCP=Löschung dieses Ferienantrags bestätigen?
ErrorCantDeleteCP=Fehler, Sie haben nicht die Berechtigung diesen Ferien-Antrag zu löschen. ErrorCantDeleteCP=Fehler, Sie haben nicht die Berechtigung diesen Ferien-Antrag zu löschen.
CantCreateCP=Sie haben nicht die Berechtigung Ferien zu beantragen. CantCreateCP=Sie haben nicht die Berechtigung Ferien zu beantragen.
# InvalidValidatorCP=You must choose an approbator to your holiday request. InvalidValidatorCP=You must choose an approbator to your holiday request.
UpdateButtonCP=Aktualisieren UpdateButtonCP=Aktualisieren
# CantUpdate=You cannot update this request of holidays. CantUpdate=You cannot update this request of holidays.
NoDateDebut=Sie müssen ein Startdatum wählen. NoDateDebut=Sie müssen ein Startdatum wählen.
NoDateFin=Sie müssen ein Enddatum wählen. NoDateFin=Sie müssen ein Enddatum wählen.
ErrorDureeCP=Ihr Antrag auf Ferien enthält keine Werktage. ErrorDureeCP=Ihr Antrag auf Ferien enthält keine Werktage.
# TitleValidCP=Approve the request holidays TitleValidCP=Approve the request holidays
ConfirmValidCP=Möchten Sie diesen Ferienantrag wirklich genehmigen? ConfirmValidCP=Möchten Sie diesen Ferienantrag wirklich genehmigen?
# DateValidCP=Date approved DateValidCP=Date approved
TitleToValidCP=Ferienantrag senden TitleToValidCP=Ferienantrag senden
ConfirmToValidCP=Möchten Sie diesen Ferienantrag wirklich senden? ConfirmToValidCP=Möchten Sie diesen Ferienantrag wirklich senden?
TitleRefuseCP=Ferienantrag ablehnen TitleRefuseCP=Ferienantrag ablehnen
@ -67,14 +66,14 @@ TitleCancelCP=Ferienantrag abbrechen
ConfirmCancelCP=Möchten Sie diesen Ferienantrag wirklich abbrechen? ConfirmCancelCP=Möchten Sie diesen Ferienantrag wirklich abbrechen?
DetailRefusCP=Ablehnungsgrund DetailRefusCP=Ablehnungsgrund
DateRefusCP=Datum der Ablehnung DateRefusCP=Datum der Ablehnung
# DateCancelCP=Date of cancellation DateCancelCP=Date of cancellation
# DefineEventUserCP=Assign an exceptional leave for a user DefineEventUserCP=Assign an exceptional leave for a user
# addEventToUserCP=Assign leave addEventToUserCP=Assign leave
MotifCP=Grund MotifCP=Grund
UserCP=Benutzer UserCP=Benutzer
# ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
# AddEventToUserOkCP=The addition of the exceptional leave has been completed. AddEventToUserOkCP=The addition of the exceptional leave has been completed.
# MenuLogCP=View logs of holidays MenuLogCP=View logs of holidays
LogCP=Liste von neuen Ferieneinträgen LogCP=Liste von neuen Ferieneinträgen
ActionByCP=Ausgeführt von ActionByCP=Ausgeführt von
UserUpdateCP=Für den Benutzer UserUpdateCP=Für den Benutzer
@ -87,7 +86,7 @@ FirstDayOfHoliday=Erster Ferientag
LastDayOfHoliday=Letzter Ferientag LastDayOfHoliday=Letzter Ferientag
HolidaysMonthlyUpdate=Monatliches Update HolidaysMonthlyUpdate=Monatliches Update
ManualUpdate=Manuelles Update ManualUpdate=Manuelles Update
# HolidaysCancelation=Holidays cancelation HolidaysCancelation=Holidays cancelation
## Configuration du Module ## ## Configuration du Module ##
ConfCP=Konfiguration des Ferienmoduls ConfCP=Konfiguration des Ferienmoduls
@ -95,58 +94,57 @@ DescOptionCP=Beschreibung der Wahlmöglichkeit
ValueOptionCP=Warenwert ValueOptionCP=Warenwert
GroupToValidateCP=Gruppe mit der Fähigkeit Ferien zu bewilligen GroupToValidateCP=Gruppe mit der Fähigkeit Ferien zu bewilligen
ConfirmConfigCP=Konfiguration bestätigen ConfirmConfigCP=Konfiguration bestätigen
# LastUpdateCP=Last updated automatically of holidays LastUpdateCP=Last updated automatically of holidays
UpdateConfCPOK=Erfolgreich bearbeitet. UpdateConfCPOK=Erfolgreich bearbeitet.
ErrorUpdateConfCP=Ein Fehler trat beim Bearbeiten auf, bitte nochmals versuchen. ErrorUpdateConfCP=Ein Fehler trat beim Bearbeiten auf, bitte nochmals versuchen.
# AddCPforUsers=Please add the balance of holidays of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>. AddCPforUsers=Please add the balance of holidays of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>.
DelayForSubmitCP=Letzter Termin für Ferienanträge DelayForSubmitCP=Letzter Termin für Ferienanträge
# AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
# AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
# AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
nbUserCP=Anzahl unterstützte Benutzer im Ferienmodul nbUserCP=Anzahl unterstützte Benutzer im Ferienmodul
# nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
nbHolidayEveryMonthCP=Anzahl hinzugefügter Ferientage pro Monat nbHolidayEveryMonthCP=Anzahl hinzugefügter Ferientage pro Monat
Module27130Name= Verwaltung der Ferien Module27130Name= Verwaltung der Ferien
Module27130Desc= Verwaltung der Ferien Module27130Desc= Verwaltung der Ferien
TitleOptionMainCP=Wichtigste Ferien-Einstellungen TitleOptionMainCP=Wichtigste Ferien-Einstellungen
# TitleOptionEventCP=Settings of holidays related to events TitleOptionEventCP=Settings of holidays related to events
ValidEventCP=Freigeben ValidEventCP=Freigeben
# UpdateEventCP=Update events UpdateEventCP=Update events
CreateEventCP=Erstelle CreateEventCP=Erstelle
# NameEventCP=Event name NameEventCP=Event name
# OkCreateEventCP=The addition of the event went well. OkCreateEventCP=The addition of the event went well.
# ErrorCreateEventCP=Error creating the event. ErrorCreateEventCP=Error creating the event.
# UpdateEventOkCP=The update of the event went well. UpdateEventOkCP=The update of the event went well.
# ErrorUpdateEventCP=Error while updating the event. ErrorUpdateEventCP=Error while updating the event.
# DeleteEventCP=Delete Event DeleteEventCP=Delete Event
# DeleteEventOkCP=The event has been deleted. DeleteEventOkCP=The event has been deleted.
# ErrorDeleteEventCP=Error while deleting the event. ErrorDeleteEventCP=Error while deleting the event.
# TitleDeleteEventCP=Delete a exceptional leave TitleDeleteEventCP=Delete a exceptional leave
# TitleCreateEventCP=Create a exceptional leave TitleCreateEventCP=Create a exceptional leave
# TitleUpdateEventCP=Edit or delete a exceptional leave TitleUpdateEventCP=Edit or delete a exceptional leave
DeleteEventOptionCP=Lösche Gruppe DeleteEventOptionCP=Lösche Gruppe
UpdateEventOptionCP=Aktualisieren UpdateEventOptionCP=Aktualisieren
# ErrorMailNotSend=An error occurred while sending email: ErrorMailNotSend=An error occurred while sending email:
# NoCPforMonth=No leave this month. NoCPforMonth=No leave this month.
nbJours=Anzahl der Tage nbJours=Anzahl der Tage
TitleAdminCP=Konfiguration der Ferien TitleAdminCP=Konfiguration der Ferien
#Messages #Messages
Hello=Hallo Hello=Hallo
HolidaysToValidate=Ferien freigeben HolidaysToValidate=Ferien freigeben
HolidaysToValidateBody=Es folgt ein Ferienantrag zur Freigabe HolidaysToValidateBody=Es folgt ein Ferienantrag zur Freigabe
# HolidaysToValidateDelay=This request for holidays will take place within a period of less than %s days. HolidaysToValidateDelay=This request for holidays will take place within a period of less than %s days.
HolidaysToValidateAlertSolde=Der Benutzer dieses Ferienantrags besitzt nicht mehr genügend verfügbare Tage. HolidaysToValidateAlertSolde=Der Benutzer dieses Ferienantrags besitzt nicht mehr genügend verfügbare Tage.
HolidaysValidated=Freigegebene Ferien HolidaysValidated=Freigegebene Ferien
HolidaysValidatedBody=Ihr Antrag auf Ferien von %s bis %s wurde bewilligt. HolidaysValidatedBody=Ihr Antrag auf Ferien von %s bis %s wurde bewilligt.
HolidaysRefused=Abgelehnte Ferien HolidaysRefused=Abgelehnte Ferien
HolidaysRefusedBody=Ihr Antrag auf Ferien von %s bis %s wurde aus folgendem Grund abgelehnt: HolidaysRefusedBody=Ihr Antrag auf Ferien von %s bis %s wurde aus folgendem Grund abgelehnt:
# HolidaysCanceled=Canceled holidays HolidaysCanceled=Canceled holidays
HolidaysCanceledBody=Ihr Antrag auf Ferien von %s bis %s wurde storniert. HolidaysCanceledBody=Ihr Antrag auf Ferien von %s bis %s wurde storniert.
Permission20000=Read you own holidays
Permission20001=Lesen/erstellen/verändern ihrer Ferien Permission20001=Create/modify your holidays
Permission20002=Lesen/verändern sämtlicher Ferienanträge Permission20002=Create/modify holidays for everybody
Permission20003=Löschen ihrer Ferienanträge Permission20003=Delete holidays requests
Permission20004=Definiere Benutzer-Ferien Permission20004=Setup users holidays
# Permission20005=Review log of modified holidays Permission20005=Review log of modified holidays
# Permission20006=Access holidays monthly report Permission20006=Read holidays monthly report

View File

@ -147,7 +147,7 @@ IfAlreadyExistsCheckOption=Sollte dieser Name korrekt und die Datenbank noch nic
OpenBaseDir=PHP openbasedir Einstellungen OpenBaseDir=PHP openbasedir Einstellungen
YouAskToCreateDatabaseSoRootRequired=Sie haben die Option "Datenbank erstellen" ausgewählt. Hierfür müssen Sie Benutzername und Passwort des Datenbank-Super-Users in das untenstehende Formular eintragen. YouAskToCreateDatabaseSoRootRequired=Sie haben die Option "Datenbank erstellen" ausgewählt. Hierfür müssen Sie Benutzername und Passwort des Datenbank-Super-Users in das untenstehende Formular eintragen.
YouAskToCreateDatabaseUserSoRootRequired=Sie haben die Option "Datenbankbenutzer erstellen" ausgewählt. Hierfür müssen Sie Benutzername und Passwort des Datenbank-Super-Users in das untenstehende Formular eintragen. YouAskToCreateDatabaseUserSoRootRequired=Sie haben die Option "Datenbankbenutzer erstellen" ausgewählt. Hierfür müssen Sie Benutzername und Passwort des Datenbank-Super-Users in das untenstehende Formular eintragen.
NextStepMightLastALongTime=Der aktuelle Vorgang kann mehrere Minuten dauern. Holen Sie sich eine frische Tasse Kaffee, oder nutzen Sie die Gelegenheit für eine Rauchpause. Warten Sie jedoch bitte in jedem Fall, bis der nächste Bildschirm vollständig angezeigt wird, bevor Sir fortfahren. NextStepMightLastALongTime=Der aktuelle Vorgang kann mehrere Minuten dauern. Holen Sie sich eine frische Tasse Kaffee, oder nutzen Sie die Gelegenheit für eine Rauchpause. Warten Sie jedoch bitte in jedem Fall, bis der nächste Bildschirm vollständig angezeigt wird, bevor Sie fortfahren.
MigrationCustomerOrderShipping=Kundenbestellungsversand aktualisieren MigrationCustomerOrderShipping=Kundenbestellungsversand aktualisieren
MigrationShippingDelivery=Aktualisiere die Speicherung von Lieferungen (Versandart?) MigrationShippingDelivery=Aktualisiere die Speicherung von Lieferungen (Versandart?)
MigrationShippingDelivery2=Aktualisiere die Speicherung von Lieferungen 2 (Versandart 2?) MigrationShippingDelivery2=Aktualisiere die Speicherung von Lieferungen 2 (Versandart 2?)
@ -158,7 +158,6 @@ ShowEditTechnicalParameters=Hier klicken um erweiterte Funktionen zu zeigen/bear
######### #########
# upgrade # upgrade
#########
MigrationFixData=Denormalisierte Daten bereinigen MigrationFixData=Denormalisierte Daten bereinigen
MigrationOrder=Datenmigration für Kundenbestellungen MigrationOrder=Datenmigration für Kundenbestellungen
MigrationSupplierOrder=Datenmigration für Lieferantenbestellungen MigrationSupplierOrder=Datenmigration für Lieferantenbestellungen
@ -207,3 +206,6 @@ MigrationProjectTaskTime=Aktualisiere aufgewandte Zeit (in Sekunden)
MigrationActioncommElement=Aktualisiere die Maßnahmen MigrationActioncommElement=Aktualisiere die Maßnahmen
MigrationPaymentMode=Migration der Daten für die Zahlungsart MigrationPaymentMode=Migration der Daten für die Zahlungsart
MigrationCategorieAssociation=Kategorien verschieben MigrationCategorieAssociation=Kategorien verschieben
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options

View File

@ -45,9 +45,9 @@ Notify_MEMBER_SUBSCRIPTION=Mitglied hat unterzeichnet
Notify_MEMBER_RESILIATE=Mitglied auflösen Notify_MEMBER_RESILIATE=Mitglied auflösen
Notify_MEMBER_DELETE=Mitglied gelöscht Notify_MEMBER_DELETE=Mitglied gelöscht
Notify_PROJECT_CREATE=Projekt-Erstellung Notify_PROJECT_CREATE=Projekt-Erstellung
Notify_TASK_CREATE=Task created Notify_TASK_CREATE=Aufgabe erstellt
Notify_TASK_MODIFY=Task modified Notify_TASK_MODIFY=Aufgabe geändert
Notify_TASK_DELETE=Task deleted Notify_TASK_DELETE=Aufgabe gelöscht
NbOfAttachedFiles=Anzahl der angehängten Dateien/okumente NbOfAttachedFiles=Anzahl der angehängten Dateien/okumente
TotalSizeOfAttachedFiles=Gesamtgröße der angehängten Dateien/Dokumente TotalSizeOfAttachedFiles=Gesamtgröße der angehängten Dateien/Dokumente
MaxSize=Maximalgröße MaxSize=Maximalgröße

View File

@ -109,7 +109,7 @@ BarcodeValue=Barcode-Wert
NoteNotVisibleOnBill=Anmerkung (nicht sichtbar auf Rechnungen, Angeboten,...) NoteNotVisibleOnBill=Anmerkung (nicht sichtbar auf Rechnungen, Angeboten,...)
CreateCopy=Kopie erstellen CreateCopy=Kopie erstellen
ServiceLimitedDuration=Ist die Leistungserbringung eines Service zeitlich beschränkt: ServiceLimitedDuration=Ist die Leistungserbringung eines Service zeitlich beschränkt:
MultiPricesAbility=Several level of prices per product/service MultiPricesAbility=Mehrere Preisstufen pro Produkt/Service
MultiPricesNumPrices=Preisnummer MultiPricesNumPrices=Preisnummer
MultiPriceLevelsName=Preiskategorien MultiPriceLevelsName=Preiskategorien
AssociatedProductsAbility=Untergeordnete Produkte aktivieren AssociatedProductsAbility=Untergeordnete Produkte aktivieren
@ -156,12 +156,12 @@ NoSupplierPriceDefinedForThisProduct=Einkaufskonditionen für dieses Produkt noc
RecordedProducts=Erfasste Produkte RecordedProducts=Erfasste Produkte
RecordedServices=Erfasste Services RecordedServices=Erfasste Services
RecordedProductsAndServices=Erfasste Produkte/Leistungen RecordedProductsAndServices=Erfasste Produkte/Leistungen
PredefinedProductsToSell=Predefined products to sell PredefinedProductsToSell=Vordefinierte Verkaufs-Produkte
PredefinedServicesToSell=Predefined services to sell PredefinedServicesToSell=Vordefinierte Services zum Verkauf
PredefinedProductsAndServicesToSell=Predefined products/services to sell PredefinedProductsAndServicesToSell=Vordefinierte Verkaufs-Produkte/-Services
PredefinedProductsToPurchase=Predefined product to purchase PredefinedProductsToPurchase=Vordefinierte Einkaufs-Produkte
PredefinedServicesToPurchase=Predefined services to purchase PredefinedServicesToPurchase=Vordefinierte Services zum Einkauf
PredefinedProductsAndServicesToPurchase=Predefined products/services to puchase PredefinedProductsAndServicesToPurchase=Vordefinierte Einkaufs-Produkte/-Services
GenerateThumb=Erzeuge Vorschaubild GenerateThumb=Erzeuge Vorschaubild
ProductCanvasAbility=Verwende spezielle "canvas" Add-Ons ProductCanvasAbility=Verwende spezielle "canvas" Add-Ons
ServiceNb=Leistung #%s ServiceNb=Leistung #%s
@ -174,7 +174,7 @@ CloneProduct=Produkt/Leistung duplizieren
ConfirmCloneProduct=Möchten Sie <b>%s</b> wirklich duplizieren? ConfirmCloneProduct=Möchten Sie <b>%s</b> wirklich duplizieren?
CloneContentProduct=Allgemeine Informationen des Produkts/Leistungen duplizieren CloneContentProduct=Allgemeine Informationen des Produkts/Leistungen duplizieren
ClonePricesProduct=Allgemeine Informationen und Preise duplizieren ClonePricesProduct=Allgemeine Informationen und Preise duplizieren
CloneCompositionProduct=Clone virtual product/services CloneCompositionProduct=Unterprodukt/-Service duplizieren
ProductIsUsed=Produkt in Verwendung ProductIsUsed=Produkt in Verwendung
NewRefForClone=Artikel-Nr. des neuen Produkts/Leistungen NewRefForClone=Artikel-Nr. des neuen Produkts/Leistungen
CustomerPrices=Kundenpreise CustomerPrices=Kundenpreise

View File

@ -50,10 +50,10 @@ ErrorCodeCantContainZero=Ο κώδικας δεν μπορεί να περιέχ
DisableJavascript=Απενεργοποίηση συναρτήσεων JavaScript και Ajax DisableJavascript=Απενεργοποίηση συναρτήσεων JavaScript και Ajax
ConfirmAjax=Χρήση διαλόγων επιβεβαίωσης Ajax ConfirmAjax=Χρήση διαλόγων επιβεβαίωσης Ajax
UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box. UseSearchToSelectCompany=Χρησιμοποιήστε τα πεδία αυτόματης συμπλήρωσης για να επιλέξετε Πελ./Προμ. αντί να χρησιμοποιεί ένα πλαίσιο λίστας.
ActivityStateToSelectCompany= Προσθέστε μια επιλογή φίλτρου για εμφάνιση / απόκρυψη ΠΕΛ./ΠΡΟΜ. τα οποία βρίσκονται σε λειτουργία ή έχει παύσει ActivityStateToSelectCompany= Προσθέστε μια επιλογή φίλτρου για εμφάνιση / απόκρυψη ΠΕΛ./ΠΡΟΜ. τα οποία βρίσκονται σε λειτουργία ή έχει παύσει
UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box). UseSearchToSelectContact=Χρησιμοποιήστε τα πεδία αυτόματης συμπλήρωσης για να επιλέξετε την επαφή (αντί της χρήσης ενός πλαισίου λίστας).
SearchFilter=Αναζήτηση επιλογές φίλτρων SearchFilter=Αναζήτηση επιλογές φίλτρων
NumberOfKeyToSearch=Πλήθος χαρακτήρων για να ξεκινήσει η αναζήτηση: %s NumberOfKeyToSearch=Πλήθος χαρακτήρων για να ξεκινήσει η αναζήτηση: %s
ViewFullDateActions=Εμφάνιση πλήρους χρονοδιαγράμματος γεγονότων στο φύλλο ΠΕΛ./ΠΡΟΜ. ViewFullDateActions=Εμφάνιση πλήρους χρονοδιαγράμματος γεγονότων στο φύλλο ΠΕΛ./ΠΡΟΜ.
@ -102,9 +102,9 @@ OtherOptions=Άλλες Επιλογές
OtherSetup=Άλλες Ρυθμίσεις OtherSetup=Άλλες Ρυθμίσεις
CurrentValueSeparatorDecimal=Διαχωριστικό Δεκαδικών CurrentValueSeparatorDecimal=Διαχωριστικό Δεκαδικών
CurrentValueSeparatorThousand=Διαχωριστικό Χιλιάδων CurrentValueSeparatorThousand=Διαχωριστικό Χιλιάδων
Destination=Destination Destination=Προορισμός
IdModule=Module ID IdModule=Module ID
IdPermissions=Permissions ID IdPermissions=Δικαιώματα ID
Modules=Modules Modules=Modules
ModulesCommon=Βασικά modules ModulesCommon=Βασικά modules
ModulesOther=Άλλα modules ModulesOther=Άλλα modules
@ -1310,7 +1310,7 @@ ModifyProductDescAbility=Personalization of product descriptions in forms
ViewProductDescInFormAbility=Visualization of product descriptions in the forms (otherwise as popup tooltip) ViewProductDescInFormAbility=Visualization of product descriptions in the forms (otherwise as popup tooltip)
ViewProductDescInThirdpartyLanguageAbility=Οπτικοποίηση των προϊόντων περιγραφών στη γλώσσα άλλους κατασκευαστές ViewProductDescInThirdpartyLanguageAbility=Οπτικοποίηση των προϊόντων περιγραφών στη γλώσσα άλλους κατασκευαστές
UseSearchToSelectProductTooltip=Also if you have a large number of product (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectProductTooltip=Also if you have a large number of product (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
UseSearchToSelectProduct=Use a search form to choose a product (rather than a drop-down list). UseSearchToSelectProduct=Χρησιμοποιήστε μια φόρμα αναζήτησης για να επιλέξετε ένα προϊόν (αντί για μια αναπτυσσόμενη λίστα).
UseEcoTaxeAbility=Support Eco-Taxe (WEEE) UseEcoTaxeAbility=Support Eco-Taxe (WEEE)
SetDefaultBarcodeTypeProducts=Default barcode type to use for products SetDefaultBarcodeTypeProducts=Default barcode type to use for products
SetDefaultBarcodeTypeThirdParties=Default barcode type to use for third parties SetDefaultBarcodeTypeThirdParties=Default barcode type to use for third parties
@ -1499,4 +1499,4 @@ ECMSetup = GED Setup
ECMAutoTree = Automatic tree folder and document ECMAutoTree = Automatic tree folder and document
Format=Format Format=Μορφή

View File

@ -133,7 +133,7 @@ CashBudget=Προϋπολογισμός Μετρητών
PlannedTransactions=Προγραμματισμένες Συναλλαγές PlannedTransactions=Προγραμματισμένες Συναλλαγές
Graph=Γραφικά Graph=Γραφικά
ExportDataset_banque_1=Τραπεζικές συναλλαγές και κίνηση λογαριασμού ExportDataset_banque_1=Τραπεζικές συναλλαγές και κίνηση λογαριασμού
ExportDataset_banque_2=Deposit slip ExportDataset_banque_2=Απόδειξη κατάθεσης
TransactionOnTheOtherAccount=Συναλλαγή στον άλλο λογαριασμό TransactionOnTheOtherAccount=Συναλλαγή στον άλλο λογαριασμό
TransactionWithOtherAccount=Μεταφορά σε Λογαριασμό TransactionWithOtherAccount=Μεταφορά σε Λογαριασμό
PaymentNumberUpdateSucceeded=Ο αριθμός πληρωμής ενημερώθηκε επιτυχώς PaymentNumberUpdateSucceeded=Ο αριθμός πληρωμής ενημερώθηκε επιτυχώς

View File

@ -37,4 +37,4 @@ ShowCompany=Εμφάνιση εταιρείας
ShowStock=Εμφάνιση αποθήκης ShowStock=Εμφάνιση αποθήκης
DeleteArticle=Κάντε κλικ για να καταργήσετε αυτό το προϊόν DeleteArticle=Κάντε κλικ για να καταργήσετε αυτό το προϊόν
FilterRefOrLabelOrBC=Αναζήτηση (Κωδ. / Ετικέτα) FilterRefOrLabelOrBC=Αναζήτηση (Κωδ. / Ετικέτα)
# UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock. UserNeedPermissionToEditStockToUsePos=Θα ζητήσει να μειώσει το απόθεμα κατά την δημιουργία του τιμολογίου, έτσι ώστε ο χρήστης που χρησιμοποιεί το POS να χρειάζεται να έχει άδεια για να επεξεργαστείτε το απόθεμα.

View File

@ -34,7 +34,6 @@ ReturnCP=Επιστροφή στην προηγούμενη σελίδα
ErrorUserViewCP=Δεν έχετε δικαίωμα να διαβάσετε αυτό το αίτημα για τις άδειες. ErrorUserViewCP=Δεν έχετε δικαίωμα να διαβάσετε αυτό το αίτημα για τις άδειες.
InfosCP=Πληροφορίες για τη ζήτηση των αδειών InfosCP=Πληροφορίες για τη ζήτηση των αδειών
InfosWorkflowCP=Πληροφορίες για την ροή εργασιών InfosWorkflowCP=Πληροφορίες για την ροή εργασιών
DateCreateCP=Ημερομηνία Δημιουργίας
RequestByCP=Ζητήθηκε από RequestByCP=Ζητήθηκε από
TitreRequestCP=Φύλλο αδειών TitreRequestCP=Φύλλο αδειών
NbUseDaysCP=Αριθμός ημερών αδειών που καταναλώνονται NbUseDaysCP=Αριθμός ημερών αδειών που καταναλώνονται
@ -130,7 +129,6 @@ ErrorMailNotSend=Παρουσιάστηκε σφάλμα κατά την απο
NoCPforMonth=Όχι αυτό το μήνα. NoCPforMonth=Όχι αυτό το μήνα.
nbJours=Αριθμός ημερών nbJours=Αριθμός ημερών
TitleAdminCP=Διαμόρφωση αδειών TitleAdminCP=Διαμόρφωση αδειών
#Messages #Messages
Hello=Γεια σας Hello=Γεια σας
HolidaysToValidate=Επικύρωση άδειας HolidaysToValidate=Επικύρωση άδειας
@ -143,10 +141,10 @@ HolidaysRefused=Άρνηση άδειας
HolidaysRefusedBody=Το αίτημα σας για την άδεια από %s έως %s έχει απορριφθεί για τους ακόλουθους λόγους: HolidaysRefusedBody=Το αίτημα σας για την άδεια από %s έως %s έχει απορριφθεί για τους ακόλουθους λόγους:
HolidaysCanceled=Ακύρωση άδειας HolidaysCanceled=Ακύρωση άδειας
HolidaysCanceledBody=Το αίτημά σας για άδεια από %s έως %s έχει ακυρωθεί. HolidaysCanceledBody=Το αίτημά σας για άδεια από %s έως %s έχει ακυρωθεί.
Permission20000=Read you own holidays
Permission20001=Διαβάστε/δημιουργήστε/τροποποιήστε τις άδειες τους Permission20001=Create/modify your holidays
Permission20002=Διαβάστε/τροποποιήστε όλα τα αιτήματα των αδειών Permission20002=Create/modify holidays for everybody
Permission20003=Διαγραφή αιτημάτων αδειών Permission20003=Delete holidays requests
Permission20004=Ορίστε χρήστες για άδειες Permission20004=Setup users holidays
Permission20005=Επανεξέταση καταγραφής των τροποποιημένων αδειών Permission20005=Επανεξέταση καταγραφής των τροποποιημένων αδειών
Permission20006=Πρόσβαση μηνιαίας αναφοράς αδειών Permission20006=Read holidays monthly report

View File

@ -158,7 +158,6 @@ ShowEditTechnicalParameters=Κάντε κλικ εδώ για να δείτε/ε
######### #########
# upgrade # upgrade
#########
MigrationFixData=Fix for denormalized data MigrationFixData=Fix for denormalized data
MigrationOrder=Data migration for customer's orders MigrationOrder=Data migration for customer's orders
MigrationSupplierOrder=Data migration for supplier's orders MigrationSupplierOrder=Data migration for supplier's orders
@ -207,3 +206,6 @@ MigrationProjectTaskTime=Update time spent in seconds
MigrationActioncommElement=Ενημέρωση στοιχεία για τις δράσεις MigrationActioncommElement=Ενημέρωση στοιχεία για τις δράσεις
MigrationPaymentMode=Η μεταφορά δεδομένων για την κατάσταση πληρωμής MigrationPaymentMode=Η μεταφορά δεδομένων για την κατάσταση πληρωμής
MigrationCategorieAssociation=Μετακίνηση των κατηγοριών MigrationCategorieAssociation=Μετακίνηση των κατηγοριών
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options

View File

@ -605,8 +605,8 @@ Notes=Σημειώσεις
AddNewLine=Προσθήκη Γραμμής AddNewLine=Προσθήκη Γραμμής
AddFile=Προσθήκη Αρχείου AddFile=Προσθήκη Αρχείου
ListOfFiles=Λίστα Διαθέσιμων Αρχείων ListOfFiles=Λίστα Διαθέσιμων Αρχείων
FreeZone=Free entry FreeZone=Δωρεάν είσοδος
FreeLineOfType=Free entry of type FreeLineOfType=Δωρεάν είσοδος του τύπου
CloneMainAttributes=Κλωνοποίηση αντικειμένου με τα βασικά του χαρακτηριστικά CloneMainAttributes=Κλωνοποίηση αντικειμένου με τα βασικά του χαρακτηριστικά
PDFMerge=Ενσωμάτωση PDF PDFMerge=Ενσωμάτωση PDF
Merge=Ενσωμάτωση Merge=Ενσωμάτωση

View File

@ -14,9 +14,9 @@ NewService=Νέα Υπηρεσία
ProductCode=Κωδικός Προϊόντος ProductCode=Κωδικός Προϊόντος
ServiceCode=Κωδικός Υπηρεσίας ServiceCode=Κωδικός Υπηρεσίας
ProductVatMassChange=Μαζική αλλαγή ΦΠΑ ProductVatMassChange=Μαζική αλλαγή ΦΠΑ
ProductVatMassChangeDesc=This page can be used to modify a VAT rate defined on products or services from a value to another. Warning, this change is done on all database. ProductVatMassChangeDesc=Αυτή η σελίδα μπορεί να χρησιμοποιηθεί για να τροποποιήσει τον συντελεστή ΦΠΑ που ορίζεται για τα προϊόντα ή τις υπηρεσίες από μια τιμή σε μια άλλη. Προσοχή, αυτή η αλλαγή γίνεται σε όλες τις βάσης δεδομένων.
MassBarcodeInit=Μαζική barcode init MassBarcodeInit=Μαζική barcode init
MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. MassBarcodeInitDesc=Αυτή η σελίδα μπορεί να χρησιμοποιείται για να προετοιμάσει ένα barcode σε αντικείμενα που δεν έχουν barcode. Ελέγξτε πριν από την εγκατάσταση του module barcode αν έχει ολοκληρωθεί.
ProductAccountancyBuyCode=Λογιστικός κωδικός (αγορά) ProductAccountancyBuyCode=Λογιστικός κωδικός (αγορά)
ProductAccountancySellCode=Λογιστικός κωδικός (πώληση) ProductAccountancySellCode=Λογιστικός κωδικός (πώληση)
ProductOrService=Προϊόν ή Υπηρεσία ProductOrService=Προϊόν ή Υπηρεσία
@ -109,7 +109,7 @@ BarcodeValue=ΤΙμή Barcode
NoteNotVisibleOnBill=Σημείωση (μη ορατή σε τιμολόγια, προτάσεις...) NoteNotVisibleOnBill=Σημείωση (μη ορατή σε τιμολόγια, προτάσεις...)
CreateCopy=Δημιουργία Αντιγράφου CreateCopy=Δημιουργία Αντιγράφου
ServiceLimitedDuration=Εάν το προϊόν είναι μια υπηρεσία με περιορισμένη διάρκεια: ServiceLimitedDuration=Εάν το προϊόν είναι μια υπηρεσία με περιορισμένη διάρκεια:
MultiPricesAbility=Several level of prices per product/service MultiPricesAbility=Πολλά επίπεδα των τιμών ανά προϊόν/υπηρεσία
MultiPricesNumPrices=Αριθμός τιμής MultiPricesNumPrices=Αριθμός τιμής
MultiPriceLevelsName=Κατηγορίες τιμών MultiPriceLevelsName=Κατηγορίες τιμών
AssociatedProductsAbility=Ενεργοποίηση υποπροϊόντων AssociatedProductsAbility=Ενεργοποίηση υποπροϊόντων
@ -156,12 +156,12 @@ NoSupplierPriceDefinedForThisProduct=Δεν υπάρχει τιμή προμηθ
RecordedProducts=Προϊόντα που καταγράφονται RecordedProducts=Προϊόντα που καταγράφονται
RecordedServices=Services recorded RecordedServices=Services recorded
RecordedProductsAndServices=Προϊόντα / υπηρεσίες που καταγράφονται RecordedProductsAndServices=Προϊόντα / υπηρεσίες που καταγράφονται
PredefinedProductsToSell=Predefined products to sell PredefinedProductsToSell=Προκαθορισμένα προϊόντα για για την πώληση
PredefinedServicesToSell=Predefined services to sell PredefinedServicesToSell=Προκαθορισμένες υπηρεσίες προς πώληση
PredefinedProductsAndServicesToSell=Predefined products/services to sell PredefinedProductsAndServicesToSell=Προκαθορισμένα προϊόντα/υπηρεσίες προς πώληση
PredefinedProductsToPurchase=Predefined product to purchase PredefinedProductsToPurchase=Προκαθορισμένο προϊόν στην αγορά
PredefinedServicesToPurchase=Predefined services to purchase PredefinedServicesToPurchase=Προκαθορισμένες υπηρεσίες για την αγορά
PredefinedProductsAndServicesToPurchase=Predefined products/services to puchase PredefinedProductsAndServicesToPurchase=Προκαθορισμένα προϊόντα/υπηρεσίες στις αγορές
GenerateThumb=Δημιουργία μικρογραφίας GenerateThumb=Δημιουργία μικρογραφίας
ProductCanvasAbility=Χρησιμοποιήστε το ειδικό &quot;καμβά&quot; addons ProductCanvasAbility=Χρησιμοποιήστε το ειδικό &quot;καμβά&quot; addons
ServiceNb=Υπηρεσία #%s ServiceNb=Υπηρεσία #%s
@ -226,9 +226,9 @@ DefinitionOfBarCodeForProductNotComplete=Ορισμός του τύπου ή τ
DefinitionOfBarCodeForThirdpartyNotComplete=Ορισμός του τύπου ή της αξίας του barcode είναι μη πλήρης για άλλους κατασκευαστές %s. DefinitionOfBarCodeForThirdpartyNotComplete=Ορισμός του τύπου ή της αξίας του barcode είναι μη πλήρης για άλλους κατασκευαστές %s.
BarCodeDataForProduct=Πληροφορίες barcode του προϊόντος %s : BarCodeDataForProduct=Πληροφορίες barcode του προϊόντος %s :
BarCodeDataForThirdparty=Πληροφορίες Barcode από άλλους κατασκευαστές %s : BarCodeDataForThirdparty=Πληροφορίες Barcode από άλλους κατασκευαστές %s :
ResetBarcodeForAllRecords=Define barcode value for all records (this will also reset barcode value already defined with new values) ResetBarcodeForAllRecords=Ορίστε την αξία barcode για όλα τα αρχεία (προσοχή, θα επαναφέρει επίσης την αξία barcode που έχουν ήδη καθοριστεί με νέες τιμές)
PriceByCustomer=Τιμή ανά πελάτη PriceByCustomer=Τιμή ανά πελάτη
PriceCatalogue=Unique price per product/service PriceCatalogue=Μοναδική τιμή ανά προϊόν/υπηρεσία
PricingRule=Κανόνες τιμολόγησης PricingRule=Κανόνες τιμολόγησης
AddCustomerPrice=Προσθέστε τιμή των πελατών AddCustomerPrice=Προσθέστε τιμή των πελατών
ForceUpdateChildPriceSoc=Ορισμός ίδιας τιμής για τις θυγατρικές του πελάτη ForceUpdateChildPriceSoc=Ορισμός ίδιας τιμής για τις θυγατρικές του πελάτη

View File

@ -94,7 +94,7 @@ DesiredStock=Επιθυμητο απόθεμα
StockToBuy=Για να παραγγείλετε StockToBuy=Για να παραγγείλετε
Replenishment=Αναπλήρωση Replenishment=Αναπλήρωση
ReplenishmentOrders=Αναπλήρωση παραγγελίων ReplenishmentOrders=Αναπλήρωση παραγγελίων
VirtualDiffersFromPhysical=According to increase/decrease stock options, physical stock and virtual stock (physical + current orders) may differs VirtualDiffersFromPhysical=Σύμφωνα με την την αύξηση/μείωση αποθέματος, φυσικού αποθέματος και εικονικού αποθέματος (φυσική + τρέχουσες παραγγελίες) μπορεί να διαφέρει
UseVirtualStockByDefault=Χρησιμοποιήστε το εικονικό απόθεμα από προεπιλογή, αντί των φυσικών αποθεμάτων, για τη \nλειτουργία αναπλήρωσης UseVirtualStockByDefault=Χρησιμοποιήστε το εικονικό απόθεμα από προεπιλογή, αντί των φυσικών αποθεμάτων, για τη \nλειτουργία αναπλήρωσης
UseVirtualStock=Χρησιμοποιήστε το εικονικό απόθεμα UseVirtualStock=Χρησιμοποιήστε το εικονικό απόθεμα
UsePhysicalStock=Χρησιμοποιήστε το φυσικό απόθεμα UsePhysicalStock=Χρησιμοποιήστε το φυσικό απόθεμα
@ -117,8 +117,8 @@ SelectProductInAndOutWareHouse=Επιλέξτε ένα προϊόν, ποσότ
RecordMovement=Η εγγραφή μεταφέρθηκε RecordMovement=Η εγγραφή μεταφέρθηκε
ReceivingForSameOrder=Λήψη για αυτή τη σειρά ReceivingForSameOrder=Λήψη για αυτή τη σειρά
StockMovementRecorded=Οι κινήσεις των αποθεμάτων καταγράφονται StockMovementRecorded=Οι κινήσεις των αποθεμάτων καταγράφονται
RuleForStockAvailability=Rules on stock requirements RuleForStockAvailability=Κανόνες σχετικά με τις απαιτήσεις του αποθέματος
StockMustBeEnoughForInvoice=Stock level must be enough to add product/service into invoice StockMustBeEnoughForInvoice=Το επίπεδο των αποθεμάτων πρέπει να είναι επαρκής για να προσθέσετε το προϊόν / υπηρεσία στο τιμολόγιο
StockMustBeEnoughForOrder=Stock level must be enough to add product/service into order StockMustBeEnoughForOrder=Το επίπεδο των αποθεμάτων πρέπει να είναι επαρκής για να προσθέσετε το προϊόν / υπηρεσία για αγορά
StockMustBeEnoughForShipment= Stock level must be enough to add product/service into shipment StockMustBeEnoughForShipment= Το επίπεδο των αποθεμάτων πρέπει να είναι επαρκής για να προσθέσετε το προϊόν / υπηρεσία για αποστολή

View File

@ -116,7 +116,7 @@ LanguageBrowserParameter=Parameter %s
LocalisationDolibarrParameters=Localisation parameters LocalisationDolibarrParameters=Localisation parameters
ClientTZ=Client Time Zone (user) ClientTZ=Client Time Zone (user)
ClientHour=Client time (user) ClientHour=Client time (user)
OSTZ=Servre OS Time Zone OSTZ=Server OS Time Zone
PHPTZ=PHP server Time Zone PHPTZ=PHP server Time Zone
PHPServerOffsetWithGreenwich=PHP server offset width Greenwich (seconds) PHPServerOffsetWithGreenwich=PHP server offset width Greenwich (seconds)
ClientOffsetWithGreenwich=Client/Browser offset width Greenwich (seconds) ClientOffsetWithGreenwich=Client/Browser offset width Greenwich (seconds)
@ -369,9 +369,9 @@ ExtrafieldSelectList = Select from table
ExtrafieldSeparator=Separator ExtrafieldSeparator=Separator
ExtrafieldCheckBox=Checkbox ExtrafieldCheckBox=Checkbox
ExtrafieldRadio=Radio button ExtrafieldRadio=Radio button
ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key
ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>... ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>... ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
LibraryToBuildPDF=Library used to build PDF LibraryToBuildPDF=Library used to build PDF
WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b> WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
@ -472,7 +472,7 @@ Module410Desc=Webcalendar integration
Module500Name=Special expenses (tax, social contributions, dividends) Module500Name=Special expenses (tax, social contributions, dividends)
Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries
Module510Name=Salaries Module510Name=Salaries
Module510Desc=Management of empoyees salaries and payments Module510Desc=Management of employees salaries and payments
Module600Name=Notifications Module600Name=Notifications
Module600Desc=Send notifications by email on some Dolibarr business events to third party contacts Module600Desc=Send notifications by email on some Dolibarr business events to third party contacts
Module700Name=Donations Module700Name=Donations
@ -495,15 +495,15 @@ Module2400Name=Agenda
Module2400Desc=Events/tasks and agenda management Module2400Desc=Events/tasks and agenda management
Module2500Name=Electronic Content Management Module2500Name=Electronic Content Management
Module2500Desc=Save and share documents Module2500Desc=Save and share documents
Module2600Name= WebServices Module2600Name=WebServices
Module2600Desc= Enable the Dolibarr web services server Module2600Desc=Enable the Dolibarr web services server
Module2700Name= Gravatar Module2700Name=Gravatar
Module2700Desc= Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Need an internet access Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Need an internet access
Module2800Desc=FTP Client Module2800Desc=FTP Client
Module2900Name= GeoIPMaxmind Module2900Name=GeoIPMaxmind
Module2900Desc= GeoIP Maxmind conversions capabilities Module2900Desc=GeoIP Maxmind conversions capabilities
Module3100Name= Skype Module3100Name=Skype
Module3100Desc= Add a Skype button into card of adherents / third parties / contacts Module3100Desc=Add a Skype button into card of adherents / third parties / contacts
Module5000Name=Multi-company Module5000Name=Multi-company
Module5000Desc=Allows you to manage multiple companies Module5000Desc=Allows you to manage multiple companies
Module6000Name=Workflow Module6000Name=Workflow
@ -999,7 +999,7 @@ ExtraFieldsSupplierOrders=Complementary attributes (orders)
ExtraFieldsSupplierInvoices=Complementary attributes (invoices) ExtraFieldsSupplierInvoices=Complementary attributes (invoices)
ExtraFieldsProject=Complementary attributes (projects) ExtraFieldsProject=Complementary attributes (projects)
ExtraFieldsProjectTask=Complementary attributes (tasks) ExtraFieldsProjectTask=Complementary attributes (tasks)
ExtraFieldHasWrongValue=Attribut %s has a wrong value. ExtraFieldHasWrongValue=Attribute %s has a wrong value.
AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space
AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space
SendingMailSetup=Setup of sendings by email SendingMailSetup=Setup of sendings by email
@ -1018,13 +1018,13 @@ SuhosinSessionEncrypt=Session storage encrypted by Suhosin
ConditionIsCurrently=Condition is currently %s ConditionIsCurrently=Condition is currently %s
TestNotPossibleWithCurrentBrowsers=Automatic detection not possible TestNotPossibleWithCurrentBrowsers=Automatic detection not possible
YouUseBestDriver=You use driver %s that is best driver available currently. YouUseBestDriver=You use driver %s that is best driver available currently.
YouDoNotUseBestDriver=You use drive %s but driver %s is recommanded. YouDoNotUseBestDriver=You use drive %s but driver %s is recommended.
NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization. NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization.
SearchOptim=Search optimization SearchOptim=Search optimization
YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response. YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response.
BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance. BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance.
BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari. BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari.
XDebugInstalled=XDebug est chargé. XDebugInstalled=XDebug is loaded.
XCacheInstalled=XCache is loaded. XCacheInstalled=XCache is loaded.
AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink
FieldEdition=Edition of field %s FieldEdition=Edition of field %s
@ -1073,7 +1073,7 @@ WebCalServer=Server hosting calendar database
WebCalDatabaseName=Database name WebCalDatabaseName=Database name
WebCalUser=User to access database WebCalUser=User to access database
WebCalSetupSaved=Webcalendar setup saved successfully. WebCalSetupSaved=Webcalendar setup saved successfully.
WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successfull. WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful.
WebCalTestKo1=Connection to server '%s' succeed but database '%s' could not be reached. WebCalTestKo1=Connection to server '%s' succeed but database '%s' could not be reached.
WebCalTestKo2=Connection to server '%s' with user '%s' failed. WebCalTestKo2=Connection to server '%s' with user '%s' failed.
WebCalErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be a Webcalendar database. WebCalErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be a Webcalendar database.
@ -1119,7 +1119,7 @@ WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty)
OrdersSetup=Order management setup OrdersSetup=Order management setup
OrdersNumberingModules=Orders numbering models OrdersNumberingModules=Orders numbering models
OrdersModelModule=Order documents models OrdersModelModule=Order documents models
HideTreadedOrders=Hide the treated or canceled orders in the list HideTreadedOrders=Hide the treated or cancelled orders in the list
ValidOrderAfterPropalClosed=To validate the order after proposal closer, makes it possible not to step by the provisional order ValidOrderAfterPropalClosed=To validate the order after proposal closer, makes it possible not to step by the provisional order
FreeLegalTextOnOrders=Free text on orders FreeLegalTextOnOrders=Free text on orders
WatermarkOnDraftOrders=Watermark on draft orders (none if empty) WatermarkOnDraftOrders=Watermark on draft orders (none if empty)
@ -1214,9 +1214,9 @@ LDAPSynchroKO=Failed synchronization test
LDAPSynchroKOMayBePermissions=Failed synchronization test. Check that connexion to server is correctly configured and allows LDAP udpates LDAPSynchroKOMayBePermissions=Failed synchronization test. Check that connexion to server is correctly configured and allows LDAP udpates
LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s) LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s)
LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=%s) LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=%s)
LDAPBindOK=Connect/Authentificate to LDAP server sucessfull (Server=%s, Port=%s, Admin=%s, Password=%s) LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s)
LDAPBindKO=Connect/Authentificate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s) LDAPBindKO=Connect/Authentificate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s)
LDAPUnbindSuccessfull=Disconnect successfull LDAPUnbindSuccessfull=Disconnect successful
LDAPUnbindFailed=Disconnect failed LDAPUnbindFailed=Disconnect failed
LDAPConnectToDNSuccessfull=Connection to DN (%s) successful LDAPConnectToDNSuccessfull=Connection to DN (%s) successful
LDAPConnectToDNFailed=Connection to DN (%s) failed LDAPConnectToDNFailed=Connection to DN (%s) failed
@ -1273,7 +1273,7 @@ LDAPFieldSidExample=Example : objectsid
LDAPFieldEndLastSubscription=Date of subscription end LDAPFieldEndLastSubscription=Date of subscription end
LDAPFieldTitle=Post/Function LDAPFieldTitle=Post/Function
LDAPFieldTitleExample=Example: title LDAPFieldTitleExample=Example: title
LDAPParametersAreStillHardCoded=LDAP parametres are still hardcoded (in contact class) LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class)
LDAPSetupNotComplete=LDAP setup not complete (go on others tabs) LDAPSetupNotComplete=LDAP setup not complete (go on others tabs)
LDAPNoUserOrPasswordProvidedAccessIsReadOnly=No administrator or password provided. LDAP access will be anonymous and in read only mode. LDAPNoUserOrPasswordProvidedAccessIsReadOnly=No administrator or password provided. LDAP access will be anonymous and in read only mode.
LDAPDescContact=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr contacts. LDAPDescContact=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr contacts.
@ -1299,7 +1299,7 @@ FilesOfTypeNotCompressed=Files of type %s are not compressed by HTTP server
CacheByServer=Cache by server CacheByServer=Cache by server
CacheByClient=Cache by browser CacheByClient=Cache by browser
CompressionOfResources=Compression of HTTP responses CompressionOfResources=Compression of HTTP responses
TestNotPossibleWithCurrentBrowsers=Such an automatic detection is not possible with current bowsers TestNotPossibleWithCurrentBrowsers=Such an automatic detection is not possible with current browsers
##### Products ##### ##### Products #####
ProductSetup=Products module setup ProductSetup=Products module setup
ServiceSetup=Services module setup ServiceSetup=Services module setup
@ -1429,7 +1429,7 @@ OptionVATDefault=Standard
OptionVATDebitOption=Option services on Debit OptionVATDebitOption=Option services on Debit
OptionVatDefaultDesc=VAT is due:<br>- on delivery for goods (we use invoice date)<br>- on payments for services OptionVatDefaultDesc=VAT is due:<br>- on delivery for goods (we use invoice date)<br>- on payments for services
OptionVatDebitOptionDesc=VAT is due:<br>- on delivery for goods (we use invoice date)<br>- on invoice (debit) for services OptionVatDebitOptionDesc=VAT is due:<br>- on delivery for goods (we use invoice date)<br>- on invoice (debit) for services
SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to choosed option: SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to chosen option:
OnDelivery=On delivery OnDelivery=On delivery
OnPayment=On payment OnPayment=On payment
OnInvoice=On invoice OnInvoice=On invoice
@ -1446,7 +1446,7 @@ AccountancyCodeBuy=Purchase account. code
AgendaSetup=Events and agenda module setup AgendaSetup=Events and agenda module setup
PasswordTogetVCalExport=Key to authorize export link PasswordTogetVCalExport=Key to authorize export link
PastDelayVCalExport=Do not export event older than PastDelayVCalExport=Do not export event older than
AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionnary -> Type of agenda events) AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionary -> Type of agenda events)
##### ClickToDial ##### ##### ClickToDial #####
ClickToDialDesc=This module allows to add an icon after phone numbers. A click on this icon will call a server with a particular URL you define below. This can be used to call a call center system from Dolibarr that can call the phone number on a SIP system for example. ClickToDialDesc=This module allows to add an icon after phone numbers. A click on this icon will call a server with a particular URL you define below. This can be used to call a call center system from Dolibarr that can call the phone number on a SIP system for example.
##### Point Of Sales (CashDesk) ##### ##### Point Of Sales (CashDesk) #####

View File

@ -8,7 +8,6 @@ NotActiveModCP=You must enable the module holidays to view this page.
NotConfigModCP=You must configure the module holidays to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>. NotConfigModCP=You must configure the module holidays to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>.
NoCPforUser=You don't have a demand for holidays. NoCPforUser=You don't have a demand for holidays.
AddCP=Apply for holidays AddCP=Apply for holidays
CPErrorSQL=An SQL error occurred:
Employe=Employee Employe=Employee
DateDebCP=Start date DateDebCP=Start date
DateFinCP=End date DateFinCP=End date

View File

@ -551,6 +551,7 @@ MailSentBy=Email sent by
TextUsedInTheMessageBody=Email body TextUsedInTheMessageBody=Email body
SendAcknowledgementByMail=Send Ack. by email SendAcknowledgementByMail=Send Ack. by email
NoEMail=No email NoEMail=No email
NoMobilePhone=No mobile phone
Owner=Owner Owner=Owner
DetectedVersion=Detected version DetectedVersion=Detected version
FollowingConstantsWillBeSubstituted=The following constants will be replaced with the corresponding value. FollowingConstantsWillBeSubstituted=The following constants will be replaced with the corresponding value.

View File

@ -179,6 +179,7 @@ ProductIsUsed=This product is used
NewRefForClone=Ref. of new product/service NewRefForClone=Ref. of new product/service
CustomerPrices=Customers prices CustomerPrices=Customers prices
SuppliersPrices=Suppliers prices SuppliersPrices=Suppliers prices
SuppliersPricesOfProductsOrServices=Suppliers prices (of products or services)
CustomCode=Customs code CustomCode=Customs code
CountryOrigin=Origin country CountryOrigin=Origin country
HiddenIntoCombo=Hidden into select lists HiddenIntoCombo=Hidden into select lists
@ -208,6 +209,7 @@ CostPmpHT=Net total VWAP
ProductUsedForBuild=Auto consumed by production ProductUsedForBuild=Auto consumed by production
ProductBuilded=Production completed ProductBuilded=Production completed
ProductsMultiPrice=Product multi-price ProductsMultiPrice=Product multi-price
ProductsOrServiceMultiPrice=Customers prices (of products or services, multi-prices)
ProductSellByQuarterHT=Products turnover quarterly VWAP ProductSellByQuarterHT=Products turnover quarterly VWAP
ServiceSellByQuarterHT=Services turnover quarterly VWAP ServiceSellByQuarterHT=Services turnover quarterly VWAP
Quarter1=1st. Quarter Quarter1=1st. Quarter

View File

@ -49,11 +49,11 @@ ErrorReservedTypeSystemSystemAuto=El uso del tipo 'system' y 'systemauto' está
ErrorCodeCantContainZero=El código no puede contener el valor 0 ErrorCodeCantContainZero=El código no puede contener el valor 0
DisableJavascript=Desactivar las funciones Javascript y AJAX DisableJavascript=Desactivar las funciones Javascript y AJAX
ConfirmAjax=Utilizar los diálogos de confirmación Ajax ConfirmAjax=Utilizar los diálogos de confirmación Ajax
UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectCompanyTooltip=También si tiene un gran número de terceros (> 100 000), puede aumentar la velocidad mediante el establecimiento COMPANY_DONOTSEARCH_ANYWHERE constante a 1 en Configuración-> Otros. La búsqueda será limitada a la creación de cadena.
UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box. UseSearchToSelectCompany=Utilice los campos de autocompletar para elegir terceros en lugar de utilizar un cuadro de lista
ActivityStateToSelectCompany= Agregar un filtro en la búsqueda para mostrar/ocultar los terceros en activo o que hayan dejado de ejercer ActivityStateToSelectCompany= Agregar un filtro en la búsqueda para mostrar/ocultar los terceros en activo o que hayan dejado de ejercer
UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectContactTooltip=También si usted tiene un gran número de terceros (> 100 000), puede aumentar la velocidad mediante el establecimiento CONTACT_DONOTSEARCH_ANYWHERE constante a 1 en Configuración-> Otros. La búsqueda será limitada a la creación de cadena.
UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box). UseSearchToSelectContact=Utilice los campos de autocompletar para seleccionar contactos (en lugar de utilizar un cuadro de lista).
SearchFilter=Opciones filtros de búsqueda SearchFilter=Opciones filtros de búsqueda
NumberOfKeyToSearch=Nº de caracteres para desencadenar la búsqueda: %s NumberOfKeyToSearch=Nº de caracteres para desencadenar la búsqueda: %s
ViewFullDateActions=Ver las fechas de las acciones en su totalidad en la ficha de tercero ViewFullDateActions=Ver las fechas de las acciones en su totalidad en la ficha de tercero
@ -102,9 +102,9 @@ OtherOptions=Otras opciones
OtherSetup=Varios OtherSetup=Varios
CurrentValueSeparatorDecimal=Separador decimal CurrentValueSeparatorDecimal=Separador decimal
CurrentValueSeparatorThousand=Separador miles CurrentValueSeparatorThousand=Separador miles
Destination=Destination Destination=destino
IdModule=Module ID IdModule=identificador de modulo
IdPermissions=Permissions ID IdPermissions=Identificador de permisos
Modules=Módulos Modules=Módulos
ModulesCommon=Módulos principales ModulesCommon=Módulos principales
ModulesOther=Módulos complementarios ModulesOther=Módulos complementarios
@ -372,7 +372,7 @@ ExtrafieldRadio=Botón de selección excluyente
ExtrafieldParamHelpselect=El listado tiene que ser en forma clave, valor<br><br> por ejemplo : <br>1,text1<br>2,text2<br>3,text3<br>... ExtrafieldParamHelpselect=El listado tiene que ser en forma clave, valor<br><br> por ejemplo : <br>1,text1<br>2,text2<br>3,text3<br>...
ExtrafieldParamHelpcheckbox=El listado tiene que ser en forma clave, valor<br><br> por ejemplo : <br>1,text1<br>2,text2<br>3,text3<br>... ExtrafieldParamHelpcheckbox=El listado tiene que ser en forma clave, valor<br><br> por ejemplo : <br>1,text1<br>2,text2<br>3,text3<br>...
ExtrafieldParamHelpradio=El listado tiene que ser en forma clave, valor<br><br> por ejemplo : <br>1,text1<br>2,text2<br>3,text3<br>... ExtrafieldParamHelpradio=El listado tiene que ser en forma clave, valor<br><br> por ejemplo : <br>1,text1<br>2,text2<br>3,text3<br>...
ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpsellist=Lista Parámetros viene de una tabla <br> Sintaxis: nombre_tabla: etiqueta_campo: identificador_campo :: filtro <br> Ejemplo: c_typent: libelle: id :: filtro <br> filtro puede ser una prueba simple (por ejemplo, activo = 1) para mostrar el valor sólo se activa <br> si desea filtrar un campo extra utilizar la sintáxis extra.fieldcode = ... (donde el código de campo es el código del campo extra) <br> para tener la lista en función de otra: <br> c_typent: libelle: id: parent_list_code | parent_column: filtro
LibraryToBuildPDF=Librería usada para la creación de archivos PDF LibraryToBuildPDF=Librería usada para la creación de archivos PDF
WarningUsingFPDF=Atención: Su archivo <b>conf.php</b> contiene la directiva <b>dolibarr_pdf_force_fpdf=1</b>. Esto hace que se use la librería FPDF para generar sus archivos PDF. Esta librería es antigua y no cubre algunas funcionalidades (Unicode, transparencia de imágenes, idiomas cirílicos, árabes o asiáticos, etc.), por lo que puede tener problemas en la generación de los PDF.<br>Para resolverlo, y disponer de un soporte completo de PDF, puede descargar la <a href="http://www.tcpdf.org/" target="_blank">librería TCPDF</a> , y a continuación comentar o eliminar la línea <b>$dolibarr_pdf_force_fpdf=1</b>, y añadir en su lugar <b>$dolibarr_lib_TCPDF_PATH='ruta_a_TCPDF'</b> WarningUsingFPDF=Atención: Su archivo <b>conf.php</b> contiene la directiva <b>dolibarr_pdf_force_fpdf=1</b>. Esto hace que se use la librería FPDF para generar sus archivos PDF. Esta librería es antigua y no cubre algunas funcionalidades (Unicode, transparencia de imágenes, idiomas cirílicos, árabes o asiáticos, etc.), por lo que puede tener problemas en la generación de los PDF.<br>Para resolverlo, y disponer de un soporte completo de PDF, puede descargar la <a href="http://www.tcpdf.org/" target="_blank">librería TCPDF</a> , y a continuación comentar o eliminar la línea <b>$dolibarr_pdf_force_fpdf=1</b>, y añadir en su lugar <b>$dolibarr_lib_TCPDF_PATH='ruta_a_TCPDF'</b>
LocalTaxDesc=Algunos países aplican 2 o 3 tasas a cada línea de factura. Si es el caso, escoja el tipo de la segunda y tercera tasa y su valor. Los posibles tipos son:<br>1 : tasa local aplicable a productos y servicios sin IVA (IVA no se aplica en la tasa local)<br>2 : tasa local se aplica a productos y servicios antes del IVA (IVA se calcula sobre importe+tasa local)<br>3 : tasa local se aplica a productos sin IVA (IVA no se aplica en la tasa local)<br>4 : tasa local se aplica a productos antes del IVA (IVA se calcula sobre el importe+tasa local)<br>5 : tasa local se aplica a servicios sin IVA (IVA no se aplica a la tasa local)<br>6 : tasa local se aplica a servicios antes del IVA (IVA se calcula sobre importe + tasa local) LocalTaxDesc=Algunos países aplican 2 o 3 tasas a cada línea de factura. Si es el caso, escoja el tipo de la segunda y tercera tasa y su valor. Los posibles tipos son:<br>1 : tasa local aplicable a productos y servicios sin IVA (IVA no se aplica en la tasa local)<br>2 : tasa local se aplica a productos y servicios antes del IVA (IVA se calcula sobre importe+tasa local)<br>3 : tasa local se aplica a productos sin IVA (IVA no se aplica en la tasa local)<br>4 : tasa local se aplica a productos antes del IVA (IVA se calcula sobre el importe+tasa local)<br>5 : tasa local se aplica a servicios sin IVA (IVA no se aplica a la tasa local)<br>6 : tasa local se aplica a servicios antes del IVA (IVA se calcula sobre importe + tasa local)
@ -1287,8 +1287,8 @@ YouMayFindPerfAdviceHere=En esta página encontrará varias pruebas y consejos r
NotInstalled=No instalado, por lo que su servidor no baja de rendimiento con esto. NotInstalled=No instalado, por lo que su servidor no baja de rendimiento con esto.
ApplicativeCache=Aplicación caché ApplicativeCache=Aplicación caché
MemcachedNotAvailable=No se ha encontrado una aplicación de cache. Puede mejorar el rendimiento instalando un cache server Memcached y un módulo capaz de usar ese servidor de cache.<br>Más información aquí <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN</a>.<br>Tenga en cuenta que algunos hostings no ofrecen servidores de cache. MemcachedNotAvailable=No se ha encontrado una aplicación de cache. Puede mejorar el rendimiento instalando un cache server Memcached y un módulo capaz de usar ese servidor de cache.<br>Más información aquí <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN</a>.<br>Tenga en cuenta que algunos hostings no ofrecen servidores de cache.
MemcachedModuleAvailableButNotSetup=Module memcached for applicative cache found but setup of module is not complete. MemcachedModuleAvailableButNotSetup=Módulo memcached para el caché aplicativo encontrado pero la configuración del módulo no está completa.
MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled. MemcachedAvailableAndSetup=Memcached módulo dedicado a utilizar el servidor memcached está disponible.
OPCodeCache=OPCode caché OPCodeCache=OPCode caché
NoOPCodeCacheFound=No se ha encontrado ningún OPCode caché. Puede ser que esté usando otro OPCode como XCache o eAccelerator (mejor), o puede que no tenga OPCode caché (peor). NoOPCodeCacheFound=No se ha encontrado ningún OPCode caché. Puede ser que esté usando otro OPCode como XCache o eAccelerator (mejor), o puede que no tenga OPCode caché (peor).
HTTPCacheStaticResources=Caché HTTP para estadísticas de recursos (css, img, javascript) HTTPCacheStaticResources=Caché HTTP para estadísticas de recursos (css, img, javascript)
@ -1309,8 +1309,8 @@ ConfirmDeleteProductLineAbility=Confirmación de eliminación de una línea de p
ModifyProductDescAbility=Personalización de las descripciones de los productos en los formularios ModifyProductDescAbility=Personalización de las descripciones de los productos en los formularios
ViewProductDescInFormAbility=Visualización de las descripciones de los productos en los formularios ViewProductDescInFormAbility=Visualización de las descripciones de los productos en los formularios
ViewProductDescInThirdpartyLanguageAbility=Visualización de las descripciones de productos en el idioma del tercero ViewProductDescInThirdpartyLanguageAbility=Visualización de las descripciones de productos en el idioma del tercero
UseSearchToSelectProductTooltip=Also if you have a large number of product (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectProductTooltip=También si usted tiene una gran cantidad de producto (> 100 000), puede aumentar la velocidad mediante el establecimiento PRODUCT_DONOTSEARCH_ANYWHERE constante a 1 en Configuración-> Otros. La búsqueda será limitada a la creación de cadena.
UseSearchToSelectProduct=Use a search form to choose a product (rather than a drop-down list). UseSearchToSelectProduct=Utilice un formulario de búsqueda para elegir un producto (en lugar de una lista desplegable).
UseEcoTaxeAbility=Asumir ecotasa (DEEE) UseEcoTaxeAbility=Asumir ecotasa (DEEE)
SetDefaultBarcodeTypeProducts=Tipo de código de barras utilizado por defecto para los productos SetDefaultBarcodeTypeProducts=Tipo de código de barras utilizado por defecto para los productos
SetDefaultBarcodeTypeThirdParties=Tipo de código de barras utilizado por defecto para los terceros SetDefaultBarcodeTypeThirdParties=Tipo de código de barras utilizado por defecto para los terceros
@ -1499,4 +1499,4 @@ ECMSetup = Configuración del módulo GED
ECMAutoTree = El árbol automático está disponible ECMAutoTree = El árbol automático está disponible
Format=Format Format=Formatear

View File

@ -133,7 +133,7 @@ CashBudget=Presupuesto de tesorería
PlannedTransactions=Transacciones previstas PlannedTransactions=Transacciones previstas
Graph=Gráficos Graph=Gráficos
ExportDataset_banque_1=Transacción bancaria y extracto ExportDataset_banque_1=Transacción bancaria y extracto
ExportDataset_banque_2=Deposit slip ExportDataset_banque_2=Justificante bancario
TransactionOnTheOtherAccount=Transacción sobre la otra cuenta TransactionOnTheOtherAccount=Transacción sobre la otra cuenta
TransactionWithOtherAccount=Transferencia de cuenta TransactionWithOtherAccount=Transferencia de cuenta
PaymentNumberUpdateSucceeded=Numero de pago modificado PaymentNumberUpdateSucceeded=Numero de pago modificado

View File

@ -135,7 +135,7 @@ ErrorWarehouseMustDiffers=El almacén de origen y destino deben de ser diferente
ErrorBadFormat=¡El formato es erróneo! ErrorBadFormat=¡El formato es erróneo!
ErrorPaymentDateLowerThanInvoiceDate=La fecha de pago (%s) no puede ser anterior a la fecha (%s) de la factura %s. ErrorPaymentDateLowerThanInvoiceDate=La fecha de pago (%s) no puede ser anterior a la fecha (%s) de la factura %s.
ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Error, este miembro aún no está enlazado un tercero. Enlace el miembro a un tercero existente o cree un tercero nuevo antes de crear la suscripción con la factura. ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Error, este miembro aún no está enlazado un tercero. Enlace el miembro a un tercero existente o cree un tercero nuevo antes de crear la suscripción con la factura.
ErrorThereIsSomeDeliveries=Error, there is some deliveries linked to this shipment. Deletion refused. ErrorThereIsSomeDeliveries=Error, hay entregas vinculados a este envío. No se puede eliminar.
# Warnings # Warnings
WarningMandatorySetupNotComplete=Los parámetros obligatorios de configuración no están todavía definidos WarningMandatorySetupNotComplete=Los parámetros obligatorios de configuración no están todavía definidos

View File

@ -34,7 +34,6 @@ ReturnCP=Volver a la página anterior
ErrorUserViewCP=No está autorizado a leer esta petición de vacaciones. ErrorUserViewCP=No está autorizado a leer esta petición de vacaciones.
InfosCP=Información de la petición de vacaciones InfosCP=Información de la petición de vacaciones
InfosWorkflowCP=Información del workflow InfosWorkflowCP=Información del workflow
DateCreateCP=Fecha de creación
RequestByCP=Pedido por RequestByCP=Pedido por
TitreRequestCP=Ficha vacaciones TitreRequestCP=Ficha vacaciones
NbUseDaysCP=Número de días de vacaciones consumidos NbUseDaysCP=Número de días de vacaciones consumidos
@ -130,7 +129,6 @@ ErrorMailNotSend=Se ha producido un error en el envío del e-mail :
NoCPforMonth=Sin vacaciones este mes. NoCPforMonth=Sin vacaciones este mes.
nbJours=Número de días nbJours=Número de días
TitleAdminCP=Configuración de las vacaciones TitleAdminCP=Configuración de las vacaciones
#Messages #Messages
Hello=Hola Hello=Hola
HolidaysToValidate=Días retribuidos a validar HolidaysToValidate=Días retribuidos a validar
@ -143,10 +141,10 @@ HolidaysRefused=Días retribuidos denegados
HolidaysRefusedBody=Su solicitud de días retribuidos desde el %s al %s ha sido denegada por el siguiente motivo : HolidaysRefusedBody=Su solicitud de días retribuidos desde el %s al %s ha sido denegada por el siguiente motivo :
HolidaysCanceled=Días retribuidos cancelados HolidaysCanceled=Días retribuidos cancelados
HolidaysCanceledBody=Su solicitud de días retribuidos desde el %s al %s ha sido cancelada. HolidaysCanceledBody=Su solicitud de días retribuidos desde el %s al %s ha sido cancelada.
Permission20000=Leer sus propios días retribuidos
Permission20001=Consultar/crear/modificar sus vacaciones Permission20001=Crear/modificar sus días retribuidos
Permission20002=Consultar/modificar todas las solicitudes de permisos retribuídos Permission20002=Crear/modificar días retribuidos para todos
Permission20003=Eliminar las solicitudes de permisos retribuídos Permission20003=Eliminar peticiones de días retribuidos
Permission20004=Definir los permisos retribuídos de los usuarios Permission20004=Configurar días retribuidos de usuarios
Permission20005=Consultar el historial de modificaciones de permisos retribuídos Permission20005=Consultar el historial de modificaciones de permisos retribuídos
Permission20006=Acceder al informe mensual de permisos retribuídos Permission20006=Leer informe mensual de días retribuidos

View File

@ -206,3 +206,6 @@ MigrationProjectTaskTime=Actualización de tiempo dedicado en segundos
MigrationActioncommElement=Actualización de los datos de acciones sobre elementos MigrationActioncommElement=Actualización de los datos de acciones sobre elementos
MigrationPaymentMode=Actualización de los modos de pago MigrationPaymentMode=Actualización de los modos de pago
MigrationCategorieAssociation=Actualización de las categorías MigrationCategorieAssociation=Actualización de las categorías
ShowNotAvailableOptions=Mostrar opciones no disponibles
HideNotAvailableOptions=Ocultar opciones no disponibles

View File

@ -119,7 +119,7 @@ TargetsReset=Vaciar lista
ToClearAllRecipientsClickHere=Para vaciar la lista de los destinatarios de este E-Mailing, haga click en el botón ToClearAllRecipientsClickHere=Para vaciar la lista de los destinatarios de este E-Mailing, haga click en el botón
ToAddRecipientsChooseHere=Para añadir destinatarios, escoja los que figuran en las listas a continuación ToAddRecipientsChooseHere=Para añadir destinatarios, escoja los que figuran en las listas a continuación
NbOfEMailingsReceived=E-Mailings en masa recibidos NbOfEMailingsReceived=E-Mailings en masa recibidos
NbOfEMailingsSend=Mass emailings sent NbOfEMailingsSend=Emailings masivos enviados
IdRecord=ID registro IdRecord=ID registro
DeliveryReceipt=Acuse de recibo DeliveryReceipt=Acuse de recibo
YouCanUseCommaSeparatorForSeveralRecipients=Puede usar el carácter de separación <b>coma </b> para especificar múltiples destinatarios. YouCanUseCommaSeparatorForSeveralRecipients=Puede usar el carácter de separación <b>coma </b> para especificar múltiples destinatarios.

View File

@ -206,7 +206,7 @@ Limit=Límite
Limits=Límites Limits=Límites
DevelopmentTeam=Equipo de desarrollo DevelopmentTeam=Equipo de desarrollo
Logout=Desconexión Logout=Desconexión
NoLogoutProcessWithAuthMode=No applicative disconnect feature with authentication mode <b>%s</b> NoLogoutProcessWithAuthMode=Sin funcionalidades de desconexión con el modo de autenticación <b>%s</b>
Connection=Conexión Connection=Conexión
Setup=Configuración Setup=Configuración
Alert=Alerta Alert=Alerta
@ -605,8 +605,8 @@ Notes=Notas
AddNewLine=Añadir nueva línea AddNewLine=Añadir nueva línea
AddFile=Añadir archivo AddFile=Añadir archivo
ListOfFiles=Listado de archivos disponibles ListOfFiles=Listado de archivos disponibles
FreeZone=Free entry FreeZone=Entrada libre
FreeLineOfType=Free entry of type FreeLineOfType=Entrada libre del tipo
CloneMainAttributes=Clonar el objeto con estos atributos principales CloneMainAttributes=Clonar el objeto con estos atributos principales
PDFMerge=Fusión PDF PDFMerge=Fusión PDF
Merge=Fusión Merge=Fusión

View File

@ -45,9 +45,9 @@ Notify_MEMBER_SUBSCRIPTION=Afiliación miembro
Notify_MEMBER_RESILIATE=Baja miembro Notify_MEMBER_RESILIATE=Baja miembro
Notify_MEMBER_DELETE=Eliminación miembro Notify_MEMBER_DELETE=Eliminación miembro
Notify_PROJECT_CREATE=Creación de proyecto Notify_PROJECT_CREATE=Creación de proyecto
Notify_TASK_CREATE=Task created Notify_TASK_CREATE=Tarea creada
Notify_TASK_MODIFY=Task modified Notify_TASK_MODIFY=Tarea modificada
Notify_TASK_DELETE=Task deleted Notify_TASK_DELETE=Tarea eliminada
NbOfAttachedFiles=Número archivos/documentos adjuntos NbOfAttachedFiles=Número archivos/documentos adjuntos
TotalSizeOfAttachedFiles=Tamaño total de los archivos/documentos adjuntos TotalSizeOfAttachedFiles=Tamaño total de los archivos/documentos adjuntos
MaxSize=Tamaño máximo MaxSize=Tamaño máximo

View File

@ -109,7 +109,7 @@ BarcodeValue=Valor del código de barras
NoteNotVisibleOnBill=Nota (no visible en las facturas, presupuestos, etc.) NoteNotVisibleOnBill=Nota (no visible en las facturas, presupuestos, etc.)
CreateCopy=Crear cópia CreateCopy=Crear cópia
ServiceLimitedDuration=Si el servicio es de duración limitada : ServiceLimitedDuration=Si el servicio es de duración limitada :
MultiPricesAbility=Several level of prices per product/service MultiPricesAbility=Varios niveles de precio por producto/servicio
MultiPricesNumPrices=Nº de precios MultiPricesNumPrices=Nº de precios
MultiPriceLevelsName=Categoría de precios MultiPriceLevelsName=Categoría de precios
AssociatedProductsAbility=Activar productos compuestos AssociatedProductsAbility=Activar productos compuestos
@ -156,12 +156,12 @@ NoSupplierPriceDefinedForThisProduct=Ningún precio/cant. proveedor definida par
RecordedProducts=Productos en venta RecordedProducts=Productos en venta
RecordedServices=Servicios en venta RecordedServices=Servicios en venta
RecordedProductsAndServices=Productos/servicios en venta RecordedProductsAndServices=Productos/servicios en venta
PredefinedProductsToSell=Predefined products to sell PredefinedProductsToSell=Productos predefinidos para vender
PredefinedServicesToSell=Predefined services to sell PredefinedServicesToSell=Servicios predefinidos para vender
PredefinedProductsAndServicesToSell=Predefined products/services to sell PredefinedProductsAndServicesToSell=Productos/servicios predefinidos a la venta
PredefinedProductsToPurchase=Predefined product to purchase PredefinedProductsToPurchase=Producto predefinido para comprar
PredefinedServicesToPurchase=Predefined services to purchase PredefinedServicesToPurchase=Servicios predefinidos para comprar
PredefinedProductsAndServicesToPurchase=Predefined products/services to puchase PredefinedProductsAndServicesToPurchase=Productos/servicios predefinidos para comprar
GenerateThumb=Generar la etiqueta GenerateThumb=Generar la etiqueta
ProductCanvasAbility=Usar las extensiones especiales "canvas" ProductCanvasAbility=Usar las extensiones especiales "canvas"
ServiceNb=Servicio no %s ServiceNb=Servicio no %s
@ -228,7 +228,7 @@ BarCodeDataForProduct=Información del código de barras del producto %s:
BarCodeDataForThirdparty=Información del código de barras del tercero %s: BarCodeDataForThirdparty=Información del código de barras del tercero %s:
ResetBarcodeForAllRecords=Definir códigos de barras para todos los registros (machacará los valores de códigos de barras ya registrados) ResetBarcodeForAllRecords=Definir códigos de barras para todos los registros (machacará los valores de códigos de barras ya registrados)
PriceByCustomer=Precio por cliente PriceByCustomer=Precio por cliente
PriceCatalogue=Unique price per product/service PriceCatalogue=Precio único por producto/servicio
PricingRule=Reglas de precio PricingRule=Reglas de precio
AddCustomerPrice=Añadir precio por clientes AddCustomerPrice=Añadir precio por clientes
ForceUpdateChildPriceSoc=Establecer el mismo precio en las filiales de los clientes ForceUpdateChildPriceSoc=Establecer el mismo precio en las filiales de los clientes

View File

@ -34,7 +34,6 @@ ReturnCP=Mine tagasi eelmisele lehele
ErrorUserViewCP=Sul ei ole ligipääsuõigusi antud puhkusetaotluse vaatamiseks. ErrorUserViewCP=Sul ei ole ligipääsuõigusi antud puhkusetaotluse vaatamiseks.
InfosCP=Puhkusevajaduse info InfosCP=Puhkusevajaduse info
InfosWorkflowCP=Informatsiooni töövoog InfosWorkflowCP=Informatsiooni töövoog
DateCreateCP=Loomiskuupäev
RequestByCP=Taotles RequestByCP=Taotles
TitreRequestCP=Puhkuste leht TitreRequestCP=Puhkuste leht
NbUseDaysCP=Kulutatud puhkusepäevade arv NbUseDaysCP=Kulutatud puhkusepäevade arv
@ -130,7 +129,6 @@ ErrorMailNotSend=E-kirja saatmisel tekkis viga:
NoCPforMonth=Sellel kuul pole puhkusi. NoCPforMonth=Sellel kuul pole puhkusi.
nbJours=Päevade arv nbJours=Päevade arv
TitleAdminCP=Puhkuste seadistamine TitleAdminCP=Puhkuste seadistamine
#Messages #Messages
Hello=Tere Hello=Tere
HolidaysToValidate=Kinnita puhkused HolidaysToValidate=Kinnita puhkused
@ -143,10 +141,10 @@ HolidaysRefused=Tagasi lükatud puhkused
HolidaysRefusedBody=Sinu puhkusetaotlus alates %s kuni %s on tagasi lükatud põhjusel: HolidaysRefusedBody=Sinu puhkusetaotlus alates %s kuni %s on tagasi lükatud põhjusel:
HolidaysCanceled=Tühistatud puhkused HolidaysCanceled=Tühistatud puhkused
HolidaysCanceledBody=Sinu puhkusetaotlus alates %s kuni %s on tühistatud. HolidaysCanceledBody=Sinu puhkusetaotlus alates %s kuni %s on tühistatud.
Permission20000=Read you own holidays
Permission20001=Oma puhkuste vaatamine/loomine/muutmine Permission20001=Create/modify your holidays
Permission20002=Kõikide puhkusetaotluste vaatamine/muutmine Permission20002=Create/modify holidays for everybody
Permission20003=Oma puhkusetaotluste kustutamine Permission20003=Delete holidays requests
Permission20004=Kasutajate puhkuste määratlemine Permission20004=Setup users holidays
Permission20005=Muudetud puhkuste logi vaatamine Permission20005=Muudetud puhkuste logi vaatamine
Permission20006=Ligipääs puhkuste igakuisele aruandele Permission20006=Read holidays monthly report

View File

@ -158,7 +158,6 @@ ShowEditTechnicalParameters=Klõpsa siia lisaparameetrite näitamiseks/muutmisek
######### #########
# upgrade # upgrade
#########
MigrationFixData=Paranda denormaliseeritud andmed MigrationFixData=Paranda denormaliseeritud andmed
MigrationOrder=Kliendi tellimuste andmete migreerimine MigrationOrder=Kliendi tellimuste andmete migreerimine
MigrationSupplierOrder=Ostutellimuste andmete migreerimine MigrationSupplierOrder=Ostutellimuste andmete migreerimine
@ -207,3 +206,6 @@ MigrationProjectTaskTime=Uuendamiseks kulutatud aeg sekundites
MigrationActioncommElement=Uuenda tegevuste andmec MigrationActioncommElement=Uuenda tegevuste andmec
MigrationPaymentMode=Maksete režiimi andmete migreerimine MigrationPaymentMode=Maksete režiimi andmete migreerimine
MigrationCategorieAssociation=Kategooriate migreerimine MigrationCategorieAssociation=Kategooriate migreerimine
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options

View File

@ -1,152 +1,150 @@
# Dolibarr language file - Source file is en_US - holiday # Dolibarr language file - Source file is en_US - holiday
# HRM=HRM HRM=HRM
# Holidays=Holidays Holidays=Holidays
# CPTitreMenu=Holidays CPTitreMenu=Holidays
# MenuReportMonth=Monthly statement MenuReportMonth=Monthly statement
# MenuAddCP=Apply for holidays MenuAddCP=Apply for holidays
# NotActiveModCP=You must enable the module holidays to view this page. NotActiveModCP=You must enable the module holidays to view this page.
# NotConfigModCP=You must configure the module holidays to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>. NotConfigModCP=You must configure the module holidays to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>.
# NoCPforUser=You don't have a demand for holidays. NoCPforUser=You don't have a demand for holidays.
# AddCP=Apply for holidays AddCP=Apply for holidays
# CPErrorSQL=An SQL error occurred: CPErrorSQL=An SQL error occurred:
# Employe=Employee Employe=Employee
# DateDebCP=Start date DateDebCP=Start date
# DateFinCP=End date DateFinCP=End date
# DateCreateCP=Creation date DateCreateCP=Creation date
# DraftCP=Draft DraftCP=Draft
# ToReviewCP=Awaiting approval ToReviewCP=Awaiting approval
# ApprovedCP=Approved ApprovedCP=Approved
# CancelCP=Canceled CancelCP=Canceled
# RefuseCP=Refused RefuseCP=Refused
# ValidatorCP=Approbator ValidatorCP=Approbator
# ListeCP=List of holidays ListeCP=List of holidays
# ReviewedByCP=Will be reviewed by ReviewedByCP=Will be reviewed by
# DescCP=Description DescCP=Description
# SendRequestCP=Creating demand for holidays SendRequestCP=Creating demand for holidays
# DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them. DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
# MenuConfCP=Edit balance of holidays MenuConfCP=Edit balance of holidays
# UpdateAllCP=Update the holidays UpdateAllCP=Update the holidays
# SoldeCPUser=Holidays balance is <b>%s</b> days. SoldeCPUser=Holidays balance is <b>%s</b> days.
# ErrorEndDateCP=You must select an end date greater than the start date. ErrorEndDateCP=You must select an end date greater than the start date.
# ErrorSQLCreateCP=An SQL error occurred during the creation: ErrorSQLCreateCP=An SQL error occurred during the creation:
# ErrorIDFicheCP=An error has occurred, the request for holidays does not exist. ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.
# ReturnCP=Return to previous page ReturnCP=Return to previous page
# ErrorUserViewCP=You are not authorized to read this request for holidays. ErrorUserViewCP=You are not authorized to read this request for holidays.
# InfosCP=Information of the demand of holidays InfosCP=Information of the demand of holidays
# InfosWorkflowCP=Information Workflow InfosWorkflowCP=Information Workflow
# DateCreateCP=Creation date RequestByCP=Requested by
# RequestByCP=Requested by TitreRequestCP=Sheet of holidays
# TitreRequestCP=Sheet of holidays NbUseDaysCP=Number of days of holidays consumed
# NbUseDaysCP=Number of days of holidays consumed EditCP=Edit
# EditCP=Edit DeleteCP=Delete
# DeleteCP=Delete ActionValidCP=Validate
# ActionValidCP=Validate ActionRefuseCP=Refuse
# ActionRefuseCP=Refuse ActionCancelCP=Cancel
# ActionCancelCP=Cancel StatutCP=Status
# StatutCP=Status SendToValidationCP=Send to validation
# SendToValidationCP=Send to validation TitleDeleteCP=Delete the request of holidays
# TitleDeleteCP=Delete the request of holidays ConfirmDeleteCP=Confirm the deletion of this request for holidays?
# ConfirmDeleteCP=Confirm the deletion of this request for holidays? ErrorCantDeleteCP=Error you don't have the right to delete this holiday request.
# ErrorCantDeleteCP=Error you don't have the right to delete this holiday request. CantCreateCP=You don't have the right to apply for holidays.
# CantCreateCP=You don't have the right to apply for holidays. InvalidValidatorCP=You must choose an approbator to your holiday request.
# InvalidValidatorCP=You must choose an approbator to your holiday request. UpdateButtonCP=Update
# UpdateButtonCP=Update CantUpdate=You cannot update this request of holidays.
# CantUpdate=You cannot update this request of holidays. NoDateDebut=You must select a start date.
# NoDateDebut=You must select a start date. NoDateFin=You must select an end date.
# NoDateFin=You must select an end date. ErrorDureeCP=Your request for holidays does not contain working day.
# ErrorDureeCP=Your request for holidays does not contain working day. TitleValidCP=Approve the request holidays
# TitleValidCP=Approve the request holidays ConfirmValidCP=Are you sure you want to approve the holiday request?
# ConfirmValidCP=Are you sure you want to approve the holiday request? DateValidCP=Date approved
# DateValidCP=Date approved TitleToValidCP=Send request holidays
# TitleToValidCP=Send request holidays ConfirmToValidCP=Are you sure you want to send the request of holidays?
# ConfirmToValidCP=Are you sure you want to send the request of holidays? TitleRefuseCP=Refuse the request holidays
# TitleRefuseCP=Refuse the request holidays ConfirmRefuseCP=Are you sure you want to refuse the request of holidays?
# ConfirmRefuseCP=Are you sure you want to refuse the request of holidays? NoMotifRefuseCP=You must choose a reason for refusing the request.
# NoMotifRefuseCP=You must choose a reason for refusing the request. TitleCancelCP=Cancel the request holidays
# TitleCancelCP=Cancel the request holidays ConfirmCancelCP=Are you sure you want to cancel the request of holidays?
# ConfirmCancelCP=Are you sure you want to cancel the request of holidays? DetailRefusCP=Reason for refusal
# DetailRefusCP=Reason for refusal DateRefusCP=Date of refusal
# DateRefusCP=Date of refusal DateCancelCP=Date of cancellation
# DateCancelCP=Date of cancellation DefineEventUserCP=Assign an exceptional leave for a user
# DefineEventUserCP=Assign an exceptional leave for a user addEventToUserCP=Assign leave
# addEventToUserCP=Assign leave MotifCP=Reason
# MotifCP=Reason UserCP=User
# UserCP=User ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
# ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. AddEventToUserOkCP=The addition of the exceptional leave has been completed.
# AddEventToUserOkCP=The addition of the exceptional leave has been completed. MenuLogCP=View logs of holidays
# MenuLogCP=View logs of holidays LogCP=Log of updates of holidays
# LogCP=Log of updates of holidays ActionByCP=Performed by
# ActionByCP=Performed by UserUpdateCP=For the user
# UserUpdateCP=For the user PrevSoldeCP=Previous Balance
# PrevSoldeCP=Previous Balance NewSoldeCP=New Balance
# NewSoldeCP=New Balance alreadyCPexist=A request for holidays has already been done on this period.
# alreadyCPexist=A request for holidays has already been done on this period. UserName=Name
# UserName=Name Employee=Employee
# Employee=Employee FirstDayOfHoliday=First day of holiday
# FirstDayOfHoliday=First day of holiday LastDayOfHoliday=Last day of holiday
# LastDayOfHoliday=Last day of holiday HolidaysMonthlyUpdate=Monthly update
# HolidaysMonthlyUpdate=Monthly update ManualUpdate=Manual update
# ManualUpdate=Manual update HolidaysCancelation=Holidays cancelation
# HolidaysCancelation=Holidays cancelation
## Configuration du Module ## ## Configuration du Module ##
# ConfCP=Configuration of holidays module ConfCP=Configuration of holidays module
# DescOptionCP=Description of the option DescOptionCP=Description of the option
# ValueOptionCP=Value ValueOptionCP=Value
# GroupToValidateCP=Group with the ability to approve holidays GroupToValidateCP=Group with the ability to approve holidays
# ConfirmConfigCP=Validate the configuration ConfirmConfigCP=Validate the configuration
# LastUpdateCP=Last updated automatically of holidays LastUpdateCP=Last updated automatically of holidays
# UpdateConfCPOK=Updated successfully. UpdateConfCPOK=Updated successfully.
# ErrorUpdateConfCP=An error occurred during the update, please try again. ErrorUpdateConfCP=An error occurred during the update, please try again.
# AddCPforUsers=Please add the balance of holidays of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>. AddCPforUsers=Please add the balance of holidays of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>.
# DelayForSubmitCP=Deadline to apply for holidays DelayForSubmitCP=Deadline to apply for holidays
# AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
# AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
# AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
# nbUserCP=Number of users supported in the module holidays nbUserCP=Number of users supported in the module holidays
# nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
# nbHolidayEveryMonthCP=Number of holidays added every month nbHolidayEveryMonthCP=Number of holidays added every month
# Module27130Name= Management of holidays Module27130Name= Management of holidays
# Module27130Desc= Management of holidays Module27130Desc= Management of holidays
# TitleOptionMainCP=Main settings of holidays TitleOptionMainCP=Main settings of holidays
# TitleOptionEventCP=Settings of holidays related to events TitleOptionEventCP=Settings of holidays related to events
# ValidEventCP=Validate ValidEventCP=Validate
# UpdateEventCP=Update events UpdateEventCP=Update events
# CreateEventCP=Create CreateEventCP=Create
# NameEventCP=Event name NameEventCP=Event name
# OkCreateEventCP=The addition of the event went well. OkCreateEventCP=The addition of the event went well.
# ErrorCreateEventCP=Error creating the event. ErrorCreateEventCP=Error creating the event.
# UpdateEventOkCP=The update of the event went well. UpdateEventOkCP=The update of the event went well.
# ErrorUpdateEventCP=Error while updating the event. ErrorUpdateEventCP=Error while updating the event.
# DeleteEventCP=Delete Event DeleteEventCP=Delete Event
# DeleteEventOkCP=The event has been deleted. DeleteEventOkCP=The event has been deleted.
# ErrorDeleteEventCP=Error while deleting the event. ErrorDeleteEventCP=Error while deleting the event.
# TitleDeleteEventCP=Delete a exceptional leave TitleDeleteEventCP=Delete a exceptional leave
# TitleCreateEventCP=Create a exceptional leave TitleCreateEventCP=Create a exceptional leave
# TitleUpdateEventCP=Edit or delete a exceptional leave TitleUpdateEventCP=Edit or delete a exceptional leave
# DeleteEventOptionCP=Delete DeleteEventOptionCP=Delete
# UpdateEventOptionCP=Update UpdateEventOptionCP=Update
# ErrorMailNotSend=An error occurred while sending email: ErrorMailNotSend=An error occurred while sending email:
# NoCPforMonth=No leave this month. NoCPforMonth=No leave this month.
# nbJours=Number days nbJours=Number days
# TitleAdminCP=Configuration of Holidays TitleAdminCP=Configuration of Holidays
#Messages #Messages
# Hello=Hello Hello=Hello
# HolidaysToValidate=Validate holidays HolidaysToValidate=Validate holidays
# HolidaysToValidateBody=Below is a request for holidays to validate HolidaysToValidateBody=Below is a request for holidays to validate
# HolidaysToValidateDelay=This request for holidays will take place within a period of less than %s days. HolidaysToValidateDelay=This request for holidays will take place within a period of less than %s days.
# HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days. HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
# HolidaysValidated=Validated holidays HolidaysValidated=Validated holidays
# HolidaysValidatedBody=Your request for holidays for %s to %s has been validated. HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
# HolidaysRefused=Denied holidays HolidaysRefused=Denied holidays
# HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason : HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
# HolidaysCanceled=Canceled holidays HolidaysCanceled=Canceled holidays
# HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled. HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20000=Read you own holidays
# Permission20001=Read/create/modify their holidays Permission20001=Create/modify your holidays
# Permission20002=Read/modify all requests of holidays Permission20002=Create/modify holidays for everybody
# Permission20003=Delete their holidays requests Permission20003=Delete holidays requests
# Permission20004=Define users holidays Permission20004=Setup users holidays
# Permission20005=Review log of modified holidays Permission20005=Review log of modified holidays
# Permission20006=Access holidays monthly report Permission20006=Read holidays monthly report

View File

@ -1,209 +1,211 @@
# Dolibarr language file - Source file is en_US - install # Dolibarr language file - Source file is en_US - install
# InstallEasy=Just follow the instructions step by step. InstallEasy=Just follow the instructions step by step.
# MiscellaneousChecks=Prerequisites check MiscellaneousChecks=Prerequisites check
# DolibarrWelcome=Welcome to Dolibarr DolibarrWelcome=Welcome to Dolibarr
# ConfFileExists=Configuration file <b>%s</b> exists. ConfFileExists=Configuration file <b>%s</b> exists.
# ConfFileDoesNotExists=Configuration file <b>%s</b> does not exist ! ConfFileDoesNotExists=Configuration file <b>%s</b> does not exist !
# ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file <b>%s</b> does not exist and could not be created ! ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file <b>%s</b> does not exist and could not be created !
# ConfFileCouldBeCreated=Configuration file <b>%s</b> could be created. ConfFileCouldBeCreated=Configuration file <b>%s</b> could be created.
# ConfFileIsNotWritable=Configuration file <b>%s</b> is not writable. Check permissions. For first install, your web server must be granted to be able to write into this file during configuration process ("chmod 666" for example on a Unix like OS). ConfFileIsNotWritable=Configuration file <b>%s</b> is not writable. Check permissions. For first install, your web server must be granted to be able to write into this file during configuration process ("chmod 666" for example on a Unix like OS).
# ConfFileIsWritable=Configuration file <b>%s</b> is writable. ConfFileIsWritable=Configuration file <b>%s</b> is writable.
# ConfFileReload=Reload all information from configuration file. ConfFileReload=Reload all information from configuration file.
# PHPSupportSessions=This PHP supports sessions. PHPSupportSessions=This PHP supports sessions.
# PHPSupportPOSTGETOk=This PHP supports variables POST and GET. PHPSupportPOSTGETOk=This PHP supports variables POST and GET.
# PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check your parameter <b>variables_order</b> in php.ini. PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check your parameter <b>variables_order</b> in php.ini.
# PHPSupportGD=This PHP support GD graphical functions. PHPSupportGD=This PHP support GD graphical functions.
# PHPSupportUTF8=This PHP support UTF8 functions. PHPSupportUTF8=This PHP support UTF8 functions.
# PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough. PHPMemoryOK=Your PHP max session memory is set to <b>%s</b>. This should be enough.
# PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This should be too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes. PHPMemoryTooLow=Your PHP max session memory is set to <b>%s</b> bytes. This should be too low. Change your <b>php.ini</b> to set <b>memory_limit</b> parameter to at least <b>%s</b> bytes.
# Recheck=Click here for a more significative test Recheck=Click here for a more significative test
# ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to make Dolibarr working. Check your PHP setup. ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to make Dolibarr working. Check your PHP setup.
# ErrorPHPDoesNotSupportGD=Your PHP installation does not support graphical function GD. No graph will be available. ErrorPHPDoesNotSupportGD=Your PHP installation does not support graphical function GD. No graph will be available.
# ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr can't work correctly. Solve this before installing Dolibarr. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr can't work correctly. Solve this before installing Dolibarr.
# ErrorDirDoesNotExists=Directory %s does not exist. ErrorDirDoesNotExists=Directory %s does not exist.
# ErrorGoBackAndCorrectParameters=Go backward and correct wrong parameters. ErrorGoBackAndCorrectParameters=Go backward and correct wrong parameters.
# ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'. ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'.
# ErrorFailedToCreateDatabase=Failed to create database '%s'. ErrorFailedToCreateDatabase=Failed to create database '%s'.
# ErrorFailedToConnectToDatabase=Failed to connect to database '%s'. ErrorFailedToConnectToDatabase=Failed to connect to database '%s'.
# ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required.
# ErrorPHPVersionTooLow=PHP version too old. Version %s is required. ErrorPHPVersionTooLow=PHP version too old. Version %s is required.
# WarningPHPVersionTooLow=PHP version too old. Version %s or more is expected. This version should allow install but is not supported. WarningPHPVersionTooLow=PHP version too old. Version %s or more is expected. This version should allow install but is not supported.
# ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found. ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found.
# ErrorDatabaseAlreadyExists=Database '%s' already exists. ErrorDatabaseAlreadyExists=Database '%s' already exists.
# IfDatabaseNotExistsGoBackAndUncheckCreate=If database does not exists, go back and check option "Create database". IfDatabaseNotExistsGoBackAndUncheckCreate=If database does not exists, go back and check option "Create database".
# IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option. IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option.
# WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded. WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded.
# PHPVersion=PHP Version PHPVersion=PHP Version
# YouCanContinue=You can continue... YouCanContinue=You can continue...
# PleaseBePatient=Please be patient... PleaseBePatient=Please be patient...
# License=Using license License=Using license
# ConfigurationFile=Configuration file ConfigurationFile=Configuration file
# WebPagesDirectory=Directory where web pages are stored WebPagesDirectory=Directory where web pages are stored
# DocumentsDirectory=Directory to store uploaded and generated documents DocumentsDirectory=Directory to store uploaded and generated documents
# URLRoot=URL Root URLRoot=URL Root
# ForceHttps=Force secure connections (https) ForceHttps=Force secure connections (https)
# CheckToForceHttps=Check this option to force secure connections (https).<br>This requires that the web server is configured with an SSL certificate. CheckToForceHttps=Check this option to force secure connections (https).<br>This requires that the web server is configured with an SSL certificate.
# DolibarrDatabase=Dolibarr Database DolibarrDatabase=Dolibarr Database
# DatabaseChoice=Database choice DatabaseChoice=Database choice
# DatabaseType=Database type DatabaseType=Database type
# DriverType=Driver type DriverType=Driver type
# Server=Server Server=Server
# ServerAddressDescription=Name or ip address for database server, usually 'localhost' when database server is hosted on same server than web server ServerAddressDescription=Name or ip address for database server, usually 'localhost' when database server is hosted on same server than web server
# ServerPortDescription=Database server port. Keep empty if unknown. ServerPortDescription=Database server port. Keep empty if unknown.
# DatabaseServer=Database server DatabaseServer=Database server
# DatabaseName=Database name DatabaseName=Database name
# DatabasePrefix=Database prefix table DatabasePrefix=Database prefix table
# Login=Login Login=Login
# AdminLogin=Login for Dolibarr database owner. AdminLogin=Login for Dolibarr database owner.
# Password=Password Password=Password
# PasswordAgain=Retype password a second time PasswordAgain=Retype password a second time
# AdminPassword=Password for Dolibarr database owner. AdminPassword=Password for Dolibarr database owner.
# CreateDatabase=Create database CreateDatabase=Create database
# CreateUser=Create owner CreateUser=Create owner
# DatabaseSuperUserAccess=Database server - Superuser access DatabaseSuperUserAccess=Database server - Superuser access
# CheckToCreateDatabase=Check box if database does not exist and must be created.<br>In this case, you must fill the login/password for superuser account at the bottom of this page. CheckToCreateDatabase=Check box if database does not exist and must be created.<br>In this case, you must fill the login/password for superuser account at the bottom of this page.
# CheckToCreateUser=Check box if database owner does not exist and must be created.<br>In this case, you must choose its login and password and also fill the login/password for the superuser account at the bottom of this page. If this box is unchecked, owner database and its passwords must exists. CheckToCreateUser=Check box if database owner does not exist and must be created.<br>In this case, you must choose its login and password and also fill the login/password for the superuser account at the bottom of this page. If this box is unchecked, owner database and its passwords must exists.
# Experimental=(experimental) Experimental=(experimental)
# DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists. DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists.
# KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this) KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this)
# SaveConfigurationFile=Save values SaveConfigurationFile=Save values
# ConfigurationSaving=Saving configuration file ConfigurationSaving=Saving configuration file
# ServerConnection=Server connection ServerConnection=Server connection
# DatabaseConnection=Database connection DatabaseConnection=Database connection
# DatabaseCreation=Database creation DatabaseCreation=Database creation
# UserCreation=User creation UserCreation=User creation
# CreateDatabaseObjects=Database objects creation CreateDatabaseObjects=Database objects creation
# ReferenceDataLoading=Reference data loading ReferenceDataLoading=Reference data loading
# TablesAndPrimaryKeysCreation=Tables and Primary keys creation TablesAndPrimaryKeysCreation=Tables and Primary keys creation
# CreateTableAndPrimaryKey=Create table %s CreateTableAndPrimaryKey=Create table %s
# CreateOtherKeysForTable=Create foreign keys and indexes for table %s CreateOtherKeysForTable=Create foreign keys and indexes for table %s
# OtherKeysCreation=Foreign keys and indexes creation OtherKeysCreation=Foreign keys and indexes creation
# FunctionsCreation=Functions creation FunctionsCreation=Functions creation
# AdminAccountCreation=Administrator login creation AdminAccountCreation=Administrator login creation
# PleaseTypePassword=Please type a password, empty passwords are not allowed ! PleaseTypePassword=Please type a password, empty passwords are not allowed !
# PleaseTypeALogin=Please type a login ! PleaseTypeALogin=Please type a login !
# PasswordsMismatch=Passwords differs, please try again ! PasswordsMismatch=Passwords differs, please try again !
# SetupEnd=End of setup SetupEnd=End of setup
# SystemIsInstalled=This installation is complete. SystemIsInstalled=This installation is complete.
# SystemIsUpgraded=Dolibarr has been upgraded successfully. SystemIsUpgraded=Dolibarr has been upgraded successfully.
# YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below: YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below:
# AdminLoginCreatedSuccessfuly=Dolibarr administrator login '<b>%s</b>' created successfuly. AdminLoginCreatedSuccessfuly=Dolibarr administrator login '<b>%s</b>' created successfuly.
# GoToDolibarr=Go to Dolibarr GoToDolibarr=Go to Dolibarr
# GoToSetupArea=Go to Dolibarr (setup area) GoToSetupArea=Go to Dolibarr (setup area)
# MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again. MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again.
# GoToUpgradePage=Go to upgrade page again GoToUpgradePage=Go to upgrade page again
# Examples=Examples Examples=Examples
# WithNoSlashAtTheEnd=Without the slash "/" at the end WithNoSlashAtTheEnd=Without the slash "/" at the end
# DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages. DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages.
# LoginAlreadyExists=Already exists LoginAlreadyExists=Already exists
# DolibarrAdminLogin=Dolibarr admin login DolibarrAdminLogin=Dolibarr admin login
# AdminLoginAlreadyExists=Dolibarr administrator account '<b>%s</b>' already exists. Go back, if you want to create another one. AdminLoginAlreadyExists=Dolibarr administrator account '<b>%s</b>' already exists. Go back, if you want to create another one.
# WarningRemoveInstallDir=Warning, for security reasons, once the install or upgrade is complete, to avoid using install tools again, you should add a file called <b>install.lock</b> into Dolibarr document directory, in order to avoid malicious use of it. WarningRemoveInstallDir=Warning, for security reasons, once the install or upgrade is complete, to avoid using install tools again, you should add a file called <b>install.lock</b> into Dolibarr document directory, in order to avoid malicious use of it.
# ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s
# FunctionNotAvailableInThisPHP=Not available on this PHP FunctionNotAvailableInThisPHP=Not available on this PHP
# MigrateScript=Migration script MigrateScript=Migration script
# ChoosedMigrateScript=Choose migration script ChoosedMigrateScript=Choose migration script
# DataMigration=Data migration DataMigration=Data migration
# DatabaseMigration=Structure database migration DatabaseMigration=Structure database migration
# ProcessMigrateScript=Script processing ProcessMigrateScript=Script processing
# ChooseYourSetupMode=Choose your setup mode and click "Start"... ChooseYourSetupMode=Choose your setup mode and click "Start"...
# FreshInstall=Fresh install FreshInstall=Fresh install
# FreshInstallDesc=Use this mode if this is your first install. If not, this mode can repair a incomplete previous install, but if you want to upgrade your version, choose "Upgrade" mode. FreshInstallDesc=Use this mode if this is your first install. If not, this mode can repair a incomplete previous install, but if you want to upgrade your version, choose "Upgrade" mode.
# Upgrade=Upgrade Upgrade=Upgrade
# UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data. UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data.
# Start=Start Start=Start
# InstallNotAllowed=Setup not allowed by <b>conf.php</b> permissions InstallNotAllowed=Setup not allowed by <b>conf.php</b> permissions
# NotAvailable=Not available NotAvailable=Not available
# YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process. YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process.
# CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload page. CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload page.
# AlreadyDone=Already migrated AlreadyDone=Already migrated
# DatabaseVersion=Database version DatabaseVersion=Database version
# ServerVersion=Database server version ServerVersion=Database server version
# YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it. YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it.
# CharsetChoice=Character set choice CharsetChoice=Character set choice
# CharacterSetClient=Character set used for generated HTML web pages CharacterSetClient=Character set used for generated HTML web pages
# CharacterSetClientComment=Choose character set for web display.<br/> Default proposed character set is the one of your database. CharacterSetClientComment=Choose character set for web display.<br/> Default proposed character set is the one of your database.
# DBSortingCollation=Character sorting order DBSortingCollation=Character sorting order
# DBSortingCollationComment=Choose page code that defines character's sorting order used by database. This parameter is also called 'collation' by some databases.<br/>This parameter can't be defined if database already exists. DBSortingCollationComment=Choose page code that defines character's sorting order used by database. This parameter is also called 'collation' by some databases.<br/>This parameter can't be defined if database already exists.
# CharacterSetDatabase=Character set for database CharacterSetDatabase=Character set for database
# CharacterSetDatabaseComment=Choose character set wanted for database creation.<br/>This parameter can't be defined if database already exists. CharacterSetDatabaseComment=Choose character set wanted for database creation.<br/>This parameter can't be defined if database already exists.
# YouAskDatabaseCreationSoDolibarrNeedToConnect=You ask to create database <b>%s</b>, but for this, Dolibarr need to connect to server <b>%s</b> with super user <b>%s</b> permissions. YouAskDatabaseCreationSoDolibarrNeedToConnect=You ask to create database <b>%s</b>, but for this, Dolibarr need to connect to server <b>%s</b> with super user <b>%s</b> permissions.
# YouAskLoginCreationSoDolibarrNeedToConnect=You ask to create database login <b>%s</b>, but for this, Dolibarr need to connect to server <b>%s</b> with super user <b>%s</b> permissions. YouAskLoginCreationSoDolibarrNeedToConnect=You ask to create database login <b>%s</b>, but for this, Dolibarr need to connect to server <b>%s</b> with super user <b>%s</b> permissions.
# BecauseConnectionFailedParametersMayBeWrong=As connection failed, host or super user parameters must be wrong. BecauseConnectionFailedParametersMayBeWrong=As connection failed, host or super user parameters must be wrong.
# OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s
# RemoveItManuallyAndPressF5ToContinue=Remove it manually and press F5 to continue. RemoveItManuallyAndPressF5ToContinue=Remove it manually and press F5 to continue.
# KeepDefaultValuesWamp=You use the Dolibarr setup wizard from DoliWamp, so values proposed here are already optimized. Change them only if you know what you do. KeepDefaultValuesWamp=You use the Dolibarr setup wizard from DoliWamp, so values proposed here are already optimized. Change them only if you know what you do.
# KeepDefaultValuesDeb=You use the Dolibarr setup wizard from a Linux package (Ubuntu, Debian, Fedora...), so values proposed here are already optimized. Only the password of the database owner to create must be completed. Change other parameters only if you know what you do. KeepDefaultValuesDeb=You use the Dolibarr setup wizard from a Linux package (Ubuntu, Debian, Fedora...), so values proposed here are already optimized. Only the password of the database owner to create must be completed. Change other parameters only if you know what you do.
# KeepDefaultValuesMamp=You use the Dolibarr setup wizard from DoliMamp, so values proposed here are already optimized. Change them only if you know what you do. KeepDefaultValuesMamp=You use the Dolibarr setup wizard from DoliMamp, so values proposed here are already optimized. Change them only if you know what you do.
# KeepDefaultValuesProxmox=You use the Dolibarr setup wizard from a Proxmox virtual appliance, so values proposed here are already optimized. Change them only if you know what you do. KeepDefaultValuesProxmox=You use the Dolibarr setup wizard from a Proxmox virtual appliance, so values proposed here are already optimized. Change them only if you know what you do.
# FieldRenamed=Field renamed FieldRenamed=Field renamed
# IfLoginDoesNotExistsCheckCreateUser=If login does not exists yet, you must check option "Create user" IfLoginDoesNotExistsCheckCreateUser=If login does not exists yet, you must check option "Create user"
# ErrorConnection=Server "<b>%s</b>", database name "<b>%s</b>", login "<b>%s</b>", or database password may be wrong or PHP client version may be too old compared to database version. ErrorConnection=Server "<b>%s</b>", database name "<b>%s</b>", login "<b>%s</b>", or database password may be wrong or PHP client version may be too old compared to database version.
# InstallChoiceRecommanded=Recommended choice to install version <b>%s</b> from your current version <b>%s</b> InstallChoiceRecommanded=Recommended choice to install version <b>%s</b> from your current version <b>%s</b>
# InstallChoiceSuggested=<b>Install choice suggested by installer</b>. InstallChoiceSuggested=<b>Install choice suggested by installer</b>.
# MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions, so install wizard will come back to suggest next migration once this one will be finished. MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions, so install wizard will come back to suggest next migration once this one will be finished.
# CheckThatDatabasenameIsCorrect=Check that database name "<b>%s</b>" is correct. CheckThatDatabasenameIsCorrect=Check that database name "<b>%s</b>" is correct.
# IfAlreadyExistsCheckOption=If this name is correct and that database does not exist yet, you must check option "Create database". IfAlreadyExistsCheckOption=If this name is correct and that database does not exist yet, you must check option "Create database".
# OpenBaseDir=PHP openbasedir parameter OpenBaseDir=PHP openbasedir parameter
# YouAskToCreateDatabaseSoRootRequired=You checked the box "Create database". For this, you need to provide login/password of superuser (bottom of form). YouAskToCreateDatabaseSoRootRequired=You checked the box "Create database". For this, you need to provide login/password of superuser (bottom of form).
# YouAskToCreateDatabaseUserSoRootRequired=You checked the box "Create database owner". For this, you need to provide login/password of superuser (bottom of form). YouAskToCreateDatabaseUserSoRootRequired=You checked the box "Create database owner". For this, you need to provide login/password of superuser (bottom of form).
# NextStepMightLastALongTime=Current step may last several minutes. Please wait until the next screen is shown completely before continuing. NextStepMightLastALongTime=Current step may last several minutes. Please wait until the next screen is shown completely before continuing.
# MigrationCustomerOrderShipping=Migrate shipping for customer orders storage MigrationCustomerOrderShipping=Migrate shipping for customer orders storage
# MigrationShippingDelivery=Upgrade storage of shipping MigrationShippingDelivery=Upgrade storage of shipping
# MigrationShippingDelivery2=Upgrade storage of shipping 2 MigrationShippingDelivery2=Upgrade storage of shipping 2
# MigrationFinished=Migration finished MigrationFinished=Migration finished
# LastStepDesc=<strong>Last step</strong>: Define here login and password you plan to use to connect to software. Do not loose this as it is the account to administer all others. LastStepDesc=<strong>Last step</strong>: Define here login and password you plan to use to connect to software. Do not loose this as it is the account to administer all others.
# ActivateModule=Activate module %s ActivateModule=Activate module %s
# ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
######### #########
# upgrade # upgrade
######### MigrationFixData=Fix for denormalized data
# MigrationFixData=Fix for denormalized data MigrationOrder=Data migration for customer's orders
# MigrationOrder=Data migration for customer's orders MigrationSupplierOrder=Data migration for supplier's orders
# MigrationSupplierOrder=Data migration for supplier's orders MigrationProposal=Data migration for commercial proposals
# MigrationProposal=Data migration for commercial proposals MigrationInvoice=Data migration for customer's invoices
# MigrationInvoice=Data migration for customer's invoices MigrationContract=Data migration for contracts
# MigrationContract=Data migration for contracts MigrationSuccessfullUpdate=Upgrade successful
# MigrationSuccessfullUpdate=Upgrade successful MigrationUpdateFailed=Failed upgrade process
# MigrationUpdateFailed=Failed upgrade process MigrationRelationshipTables=Data migration for relationship tables (%s)
# MigrationRelationshipTables=Data migration for relationship tables (%s) MigrationPaymentsUpdate=Payment data correction
# MigrationPaymentsUpdate=Payment data correction MigrationPaymentsNumberToUpdate=%s payment(s) to update
# MigrationPaymentsNumberToUpdate=%s payment(s) to update MigrationProcessPaymentUpdate=Update payment(s) %s
# MigrationProcessPaymentUpdate=Update payment(s) %s MigrationPaymentsNothingToUpdate=No more things to do
# MigrationPaymentsNothingToUpdate=No more things to do MigrationPaymentsNothingUpdatable=No more payments that can be corrected
# MigrationPaymentsNothingUpdatable=No more payments that can be corrected MigrationContractsUpdate=Contract data correction
# MigrationContractsUpdate=Contract data correction MigrationContractsNumberToUpdate=%s contract(s) to update
# MigrationContractsNumberToUpdate=%s contract(s) to update MigrationContractsLineCreation=Create contract line for contract ref %s
# MigrationContractsLineCreation=Create contract line for contract ref %s MigrationContractsNothingToUpdate=No more things to do
# MigrationContractsNothingToUpdate=No more things to do MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do.
# MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do. MigrationContractsEmptyDatesUpdate=Contract empty date correction
# MigrationContractsEmptyDatesUpdate=Contract empty date correction MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly
# MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct
# MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct
# MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct MigrationContractsInvalidDatesUpdate=Bad value date contract correction
# MigrationContractsInvalidDatesUpdate=Bad value date contract correction MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s)
# MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s) MigrationContractsInvalidDatesNumber=%s contracts modified
# MigrationContractsInvalidDatesNumber=%s contracts modified MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct
# MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction
# MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly
# MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct
# MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct MigrationReopeningContracts=Open contract closed by error
# MigrationReopeningContracts=Open contract closed by error MigrationReopenThisContract=Reopen contract %s
# MigrationReopenThisContract=Reopen contract %s MigrationReopenedContractsNumber=%s contracts modified
# MigrationReopenedContractsNumber=%s contracts modified MigrationReopeningContractsNothingToUpdate=No closed contract to open
# MigrationReopeningContractsNothingToUpdate=No closed contract to open MigrationBankTransfertsUpdate=Update links between bank transaction and a bank transfer
# MigrationBankTransfertsUpdate=Update links between bank transaction and a bank transfer MigrationBankTransfertsNothingToUpdate=All links are up to date
# MigrationBankTransfertsNothingToUpdate=All links are up to date MigrationShipmentOrderMatching=Sendings receipt update
# MigrationShipmentOrderMatching=Sendings receipt update MigrationDeliveryOrderMatching=Delivery receipt update
# MigrationDeliveryOrderMatching=Delivery receipt update MigrationDeliveryDetail=Delivery update
# MigrationDeliveryDetail=Delivery update MigrationStockDetail=Update stock value of products
# MigrationStockDetail=Update stock value of products MigrationMenusDetail=Update dynamic menus tables
# MigrationMenusDetail=Update dynamic menus tables MigrationDeliveryAddress=Update delivery address in shipments
# MigrationDeliveryAddress=Update delivery address in shipments MigrationProjectTaskActors=Data migration for llx_projet_task_actors table
# MigrationProjectTaskActors=Data migration for llx_projet_task_actors table MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact
# MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact MigrationProjectTaskTime=Update time spent in seconds
# MigrationProjectTaskTime=Update time spent in seconds MigrationActioncommElement=Update data on actions
# MigrationActioncommElement=Update data on actions MigrationPaymentMode=Data migration for payment mode
# MigrationPaymentMode=Data migration for payment mode MigrationCategorieAssociation=Migration of categories
# MigrationCategorieAssociation=Migration of categories
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options

View File

@ -1,152 +1,150 @@
# Dolibarr language file - Source file is en_US - holiday # Dolibarr language file - Source file is en_US - holiday
# HRM=HRM HRM=HRM
# Holidays=Holidays Holidays=Holidays
# CPTitreMenu=Holidays CPTitreMenu=Holidays
# MenuReportMonth=Monthly statement MenuReportMonth=Monthly statement
# MenuAddCP=Apply for holidays MenuAddCP=Apply for holidays
# NotActiveModCP=You must enable the module holidays to view this page. NotActiveModCP=You must enable the module holidays to view this page.
# NotConfigModCP=You must configure the module holidays to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>. NotConfigModCP=You must configure the module holidays to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>.
# NoCPforUser=You don't have a demand for holidays. NoCPforUser=You don't have a demand for holidays.
# AddCP=Apply for holidays AddCP=Apply for holidays
# CPErrorSQL=An SQL error occurred: CPErrorSQL=An SQL error occurred:
# Employe=Employee Employe=Employee
DateDebCP=تاريخ البدء DateDebCP=تاريخ البدء
DateFinCP=نهاية التاريخ DateFinCP=نهاية التاريخ
DateCreateCP=تاريخ الإنشاء DateCreateCP=تاريخ الإنشاء
DraftCP=مسودة DraftCP=مسودة
# ToReviewCP=Awaiting approval ToReviewCP=Awaiting approval
ApprovedCP=وافق ApprovedCP=وافق
CancelCP=ألغيت CancelCP=ألغيت
RefuseCP=رفض RefuseCP=رفض
# ValidatorCP=Approbator ValidatorCP=Approbator
# ListeCP=List of holidays ListeCP=List of holidays
# ReviewedByCP=Will be reviewed by ReviewedByCP=Will be reviewed by
DescCP=وصف DescCP=وصف
# SendRequestCP=Creating demand for holidays SendRequestCP=Creating demand for holidays
# DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them. DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
# MenuConfCP=Edit balance of holidays MenuConfCP=Edit balance of holidays
# UpdateAllCP=Update the holidays UpdateAllCP=Update the holidays
# SoldeCPUser=Holidays balance is <b>%s</b> days. SoldeCPUser=Holidays balance is <b>%s</b> days.
# ErrorEndDateCP=You must select an end date greater than the start date. ErrorEndDateCP=You must select an end date greater than the start date.
# ErrorSQLCreateCP=An SQL error occurred during the creation: ErrorSQLCreateCP=An SQL error occurred during the creation:
# ErrorIDFicheCP=An error has occurred, the request for holidays does not exist. ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.
# ReturnCP=Return to previous page ReturnCP=Return to previous page
# ErrorUserViewCP=You are not authorized to read this request for holidays. ErrorUserViewCP=You are not authorized to read this request for holidays.
# InfosCP=Information of the demand of holidays InfosCP=Information of the demand of holidays
# InfosWorkflowCP=Information Workflow InfosWorkflowCP=Information Workflow
DateCreateCP=تاريخ الإنشاء RequestByCP=Requested by
# RequestByCP=Requested by TitreRequestCP=Sheet of holidays
# TitreRequestCP=Sheet of holidays NbUseDaysCP=Number of days of holidays consumed
# NbUseDaysCP=Number of days of holidays consumed
EditCP=ویرایش EditCP=ویرایش
DeleteCP=حذف DeleteCP=حذف
ActionValidCP=تایید کردن ActionValidCP=تایید کردن
# ActionRefuseCP=Refuse ActionRefuseCP=Refuse
ActionCancelCP=لغو ActionCancelCP=لغو
StatutCP=حالة StatutCP=حالة
# SendToValidationCP=Send to validation SendToValidationCP=Send to validation
# TitleDeleteCP=Delete the request of holidays TitleDeleteCP=Delete the request of holidays
# ConfirmDeleteCP=Confirm the deletion of this request for holidays? ConfirmDeleteCP=Confirm the deletion of this request for holidays?
# ErrorCantDeleteCP=Error you don't have the right to delete this holiday request. ErrorCantDeleteCP=Error you don't have the right to delete this holiday request.
# CantCreateCP=You don't have the right to apply for holidays. CantCreateCP=You don't have the right to apply for holidays.
# InvalidValidatorCP=You must choose an approbator to your holiday request. InvalidValidatorCP=You must choose an approbator to your holiday request.
UpdateButtonCP=به روز کردن UpdateButtonCP=به روز کردن
# CantUpdate=You cannot update this request of holidays. CantUpdate=You cannot update this request of holidays.
# NoDateDebut=You must select a start date. NoDateDebut=You must select a start date.
# NoDateFin=You must select an end date. NoDateFin=You must select an end date.
# ErrorDureeCP=Your request for holidays does not contain working day. ErrorDureeCP=Your request for holidays does not contain working day.
# TitleValidCP=Approve the request holidays TitleValidCP=Approve the request holidays
# ConfirmValidCP=Are you sure you want to approve the holiday request? ConfirmValidCP=Are you sure you want to approve the holiday request?
# DateValidCP=Date approved DateValidCP=Date approved
# TitleToValidCP=Send request holidays TitleToValidCP=Send request holidays
# ConfirmToValidCP=Are you sure you want to send the request of holidays? ConfirmToValidCP=Are you sure you want to send the request of holidays?
# TitleRefuseCP=Refuse the request holidays TitleRefuseCP=Refuse the request holidays
# ConfirmRefuseCP=Are you sure you want to refuse the request of holidays? ConfirmRefuseCP=Are you sure you want to refuse the request of holidays?
# NoMotifRefuseCP=You must choose a reason for refusing the request. NoMotifRefuseCP=You must choose a reason for refusing the request.
# TitleCancelCP=Cancel the request holidays TitleCancelCP=Cancel the request holidays
# ConfirmCancelCP=Are you sure you want to cancel the request of holidays? ConfirmCancelCP=Are you sure you want to cancel the request of holidays?
# DetailRefusCP=Reason for refusal DetailRefusCP=Reason for refusal
# DateRefusCP=Date of refusal DateRefusCP=Date of refusal
# DateCancelCP=Date of cancellation DateCancelCP=Date of cancellation
# DefineEventUserCP=Assign an exceptional leave for a user DefineEventUserCP=Assign an exceptional leave for a user
# addEventToUserCP=Assign leave addEventToUserCP=Assign leave
MotifCP=سبب MotifCP=سبب
UserCP=مستخدم UserCP=مستخدم
# ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
# AddEventToUserOkCP=The addition of the exceptional leave has been completed. AddEventToUserOkCP=The addition of the exceptional leave has been completed.
# MenuLogCP=View logs of holidays MenuLogCP=View logs of holidays
# LogCP=Log of updates of holidays LogCP=Log of updates of holidays
# ActionByCP=Performed by ActionByCP=Performed by
# UserUpdateCP=For the user UserUpdateCP=For the user
# PrevSoldeCP=Previous Balance PrevSoldeCP=Previous Balance
# NewSoldeCP=New Balance NewSoldeCP=New Balance
# alreadyCPexist=A request for holidays has already been done on this period. alreadyCPexist=A request for holidays has already been done on this period.
UserName=اسم UserName=اسم
# Employee=Employee Employee=Employee
# FirstDayOfHoliday=First day of holiday FirstDayOfHoliday=First day of holiday
# LastDayOfHoliday=Last day of holiday LastDayOfHoliday=Last day of holiday
# HolidaysMonthlyUpdate=Monthly update HolidaysMonthlyUpdate=Monthly update
# ManualUpdate=Manual update ManualUpdate=Manual update
# HolidaysCancelation=Holidays cancelation HolidaysCancelation=Holidays cancelation
## Configuration du Module ## ## Configuration du Module ##
# ConfCP=Configuration of holidays module ConfCP=Configuration of holidays module
# DescOptionCP=Description of the option DescOptionCP=Description of the option
ValueOptionCP=القيمة ValueOptionCP=القيمة
# GroupToValidateCP=Group with the ability to approve holidays GroupToValidateCP=Group with the ability to approve holidays
# ConfirmConfigCP=Validate the configuration ConfirmConfigCP=Validate the configuration
# LastUpdateCP=Last updated automatically of holidays LastUpdateCP=Last updated automatically of holidays
# UpdateConfCPOK=Updated successfully. UpdateConfCPOK=Updated successfully.
# ErrorUpdateConfCP=An error occurred during the update, please try again. ErrorUpdateConfCP=An error occurred during the update, please try again.
# AddCPforUsers=Please add the balance of holidays of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>. AddCPforUsers=Please add the balance of holidays of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>.
# DelayForSubmitCP=Deadline to apply for holidays DelayForSubmitCP=Deadline to apply for holidays
# AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
# AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
# AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
# nbUserCP=Number of users supported in the module holidays nbUserCP=Number of users supported in the module holidays
# nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
# nbHolidayEveryMonthCP=Number of holidays added every month nbHolidayEveryMonthCP=Number of holidays added every month
# Module27130Name= Management of holidays Module27130Name= Management of holidays
# Module27130Desc= Management of holidays Module27130Desc= Management of holidays
# TitleOptionMainCP=Main settings of holidays TitleOptionMainCP=Main settings of holidays
# TitleOptionEventCP=Settings of holidays related to events TitleOptionEventCP=Settings of holidays related to events
ValidEventCP=تایید کردن ValidEventCP=تایید کردن
# UpdateEventCP=Update events UpdateEventCP=Update events
CreateEventCP=خلق CreateEventCP=خلق
# NameEventCP=Event name NameEventCP=Event name
# OkCreateEventCP=The addition of the event went well. OkCreateEventCP=The addition of the event went well.
# ErrorCreateEventCP=Error creating the event. ErrorCreateEventCP=Error creating the event.
# UpdateEventOkCP=The update of the event went well. UpdateEventOkCP=The update of the event went well.
# ErrorUpdateEventCP=Error while updating the event. ErrorUpdateEventCP=Error while updating the event.
# DeleteEventCP=Delete Event DeleteEventCP=Delete Event
# DeleteEventOkCP=The event has been deleted. DeleteEventOkCP=The event has been deleted.
# ErrorDeleteEventCP=Error while deleting the event. ErrorDeleteEventCP=Error while deleting the event.
# TitleDeleteEventCP=Delete a exceptional leave TitleDeleteEventCP=Delete a exceptional leave
# TitleCreateEventCP=Create a exceptional leave TitleCreateEventCP=Create a exceptional leave
# TitleUpdateEventCP=Edit or delete a exceptional leave TitleUpdateEventCP=Edit or delete a exceptional leave
DeleteEventOptionCP=حذف DeleteEventOptionCP=حذف
UpdateEventOptionCP=به روز کردن UpdateEventOptionCP=به روز کردن
# ErrorMailNotSend=An error occurred while sending email: ErrorMailNotSend=An error occurred while sending email:
# NoCPforMonth=No leave this month. NoCPforMonth=No leave this month.
# nbJours=Number days nbJours=Number days
# TitleAdminCP=Configuration of Holidays TitleAdminCP=Configuration of Holidays
#Messages #Messages
# Hello=Hello Hello=Hello
# HolidaysToValidate=Validate holidays HolidaysToValidate=Validate holidays
# HolidaysToValidateBody=Below is a request for holidays to validate HolidaysToValidateBody=Below is a request for holidays to validate
# HolidaysToValidateDelay=This request for holidays will take place within a period of less than %s days. HolidaysToValidateDelay=This request for holidays will take place within a period of less than %s days.
# HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days. HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
# HolidaysValidated=Validated holidays HolidaysValidated=Validated holidays
# HolidaysValidatedBody=Your request for holidays for %s to %s has been validated. HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
# HolidaysRefused=Denied holidays HolidaysRefused=Denied holidays
# HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason : HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
# HolidaysCanceled=Canceled holidays HolidaysCanceled=Canceled holidays
# HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled. HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20000=Read you own holidays
# Permission20001=Read/create/modify their holidays Permission20001=Create/modify your holidays
# Permission20002=Read/modify all requests of holidays Permission20002=Create/modify holidays for everybody
# Permission20003=Delete their holidays requests Permission20003=Delete holidays requests
# Permission20004=Define users holidays Permission20004=Setup users holidays
# Permission20005=Review log of modified holidays Permission20005=Review log of modified holidays
# Permission20006=Access holidays monthly report Permission20006=Read holidays monthly report

View File

@ -8,7 +8,7 @@ ConfFileDoesNotExistsAndCouldNotBeCreated=ملفات <b>ل ٪</b> لا وجود
ConfFileCouldBeCreated=ملفات <b>ل ٪</b> ويمكن أن تنشأ. ConfFileCouldBeCreated=ملفات <b>ل ٪</b> ويمكن أن تنشأ.
ConfFileIsNotWritable=ملفات <b>٪ ق</b> ليست للكتابة. التحقق من الأذونات. أولا لتركيب وخدمة الويب الخاص بك يجب أن تمنح ليكون قادرا على الكتابة في هذا الملف خلال عملية التهيئة ( "chmod 666" على سبيل المثال ، مثل نظام التشغيل يونكس). ConfFileIsNotWritable=ملفات <b>٪ ق</b> ليست للكتابة. التحقق من الأذونات. أولا لتركيب وخدمة الويب الخاص بك يجب أن تمنح ليكون قادرا على الكتابة في هذا الملف خلال عملية التهيئة ( "chmod 666" على سبيل المثال ، مثل نظام التشغيل يونكس).
ConfFileIsWritable=ملفات للكتابة هو <b>٪ ق.</b> ConfFileIsWritable=ملفات للكتابة هو <b>٪ ق.</b>
# ConfFileReload=Reload all information from configuration file. ConfFileReload=Reload all information from configuration file.
PHPSupportSessions=ويدعم هذا PHP الدورات. PHPSupportSessions=ويدعم هذا PHP الدورات.
PHPSupportPOSTGETOk=ويدعم هذا PHP المتغيرات والحصول على الوظائف. PHPSupportPOSTGETOk=ويدعم هذا PHP المتغيرات والحصول على الوظائف.
PHPSupportPOSTGETKo=فمن الممكن PHP الإعداد الخاص بك لا يدعم الوظائف المتغيرات و / أو الحصول عليه. التحقق من اتصالك <b>variables_order</b> معلمة في php.ini. PHPSupportPOSTGETKo=فمن الممكن PHP الإعداد الخاص بك لا يدعم الوظائف المتغيرات و / أو الحصول عليه. التحقق من اتصالك <b>variables_order</b> معلمة في php.ini.
@ -25,14 +25,14 @@ ErrorGoBackAndCorrectParameters=العودة إلى الوراء وتصحيح ا
ErrorWrongValueForParameter=قد تكون لديكم مطبوعة خاطئة قيمة معلمة '٪ ق. ErrorWrongValueForParameter=قد تكون لديكم مطبوعة خاطئة قيمة معلمة '٪ ق.
ErrorFailedToCreateDatabase=فشل إنشاء قاعدة بيانات '٪ ق. ErrorFailedToCreateDatabase=فشل إنشاء قاعدة بيانات '٪ ق.
ErrorFailedToConnectToDatabase=فشل في الاتصال بقاعدة البيانات '٪ ق. ErrorFailedToConnectToDatabase=فشل في الاتصال بقاعدة البيانات '٪ ق.
# ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required.
ErrorPHPVersionTooLow=PHP نسخة قديمة جدا. النسخة ٪ ق هو مطلوب. ErrorPHPVersionTooLow=PHP نسخة قديمة جدا. النسخة ٪ ق هو مطلوب.
# WarningPHPVersionTooLow=PHP version too old. Version %s or more is expected. This version should allow install but is not supported. WarningPHPVersionTooLow=PHP version too old. Version %s or more is expected. This version should allow install but is not supported.
ErrorConnectedButDatabaseNotFound=خادم الصدد الى قاعدة البيانات ولكن النجاح في '٪ ق' لم يتم العثور عليه. ErrorConnectedButDatabaseNotFound=خادم الصدد الى قاعدة البيانات ولكن النجاح في '٪ ق' لم يتم العثور عليه.
ErrorDatabaseAlreadyExists=قاعدة البيانات '٪ ق' موجود بالفعل. ErrorDatabaseAlreadyExists=قاعدة البيانات '٪ ق' موجود بالفعل.
IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كان لا وجود قاعدة بيانات ، والتأكد من العودة الخيار "إنشاء قاعدة بيانات". IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كان لا وجود قاعدة بيانات ، والتأكد من العودة الخيار "إنشاء قاعدة بيانات".
IfDatabaseExistsGoBackAndCheckCreate=إذا كانت قاعدة البيانات موجود بالفعل ، من العودة وإلغاء "إنشاء قاعدة بيانات" الخيار. IfDatabaseExistsGoBackAndCheckCreate=إذا كانت قاعدة البيانات موجود بالفعل ، من العودة وإلغاء "إنشاء قاعدة بيانات" الخيار.
# WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded. WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded.
PHPVersion=PHP الإصدار PHPVersion=PHP الإصدار
YouCanContinue=يمكنك الاستمرار... YouCanContinue=يمكنك الاستمرار...
PleaseBePatient=يرجى التحلي بالصبر... PleaseBePatient=يرجى التحلي بالصبر...
@ -52,7 +52,7 @@ ServerAddressDescription=الملكية الفكرية في اسم أو عنوا
ServerPortDescription=قاعدة بيانات الميناء. تبقي فارغة إذا كانت غير معروفة. ServerPortDescription=قاعدة بيانات الميناء. تبقي فارغة إذا كانت غير معروفة.
DatabaseServer=خادم قاعدة البيانات DatabaseServer=خادم قاعدة البيانات
DatabaseName=اسم قاعدة البيانات DatabaseName=اسم قاعدة البيانات
# DatabasePrefix=Database prefix table DatabasePrefix=Database prefix table
Login=تسجيل الدخول Login=تسجيل الدخول
AdminLogin=ادخل لDolibarr مدير قاعدة البيانات. تبقي فارغة إذا لم يذكر اسمه في اتصال AdminLogin=ادخل لDolibarr مدير قاعدة البيانات. تبقي فارغة إذا لم يذكر اسمه في اتصال
Password=كلمة السر Password=كلمة السر
@ -135,13 +135,13 @@ RemoveItManuallyAndPressF5ToContinue=إزالته يدويا واضغط F5 لل
KeepDefaultValuesWamp=استخدام معالج الإعداد DoliWamp ، حتى القيم المقترحة هنا بالفعل الأمثل. تغييرها إلا إذا كنت تعرف ما تفعله. KeepDefaultValuesWamp=استخدام معالج الإعداد DoliWamp ، حتى القيم المقترحة هنا بالفعل الأمثل. تغييرها إلا إذا كنت تعرف ما تفعله.
KeepDefaultValuesDeb=يمكنك استخدام معالج الإعداد Dolibarr من أوبونتو أو حزمة ديبيان ، لذلك القيم المقترحة هنا هي الأمثل بالفعل. يجب أن تكتمل إلا كلمة السر للمالك قاعدة البيانات لإنشاء. تغيير معلمات أخرى إلا إذا كنت تعرف ما تفعله. KeepDefaultValuesDeb=يمكنك استخدام معالج الإعداد Dolibarr من أوبونتو أو حزمة ديبيان ، لذلك القيم المقترحة هنا هي الأمثل بالفعل. يجب أن تكتمل إلا كلمة السر للمالك قاعدة البيانات لإنشاء. تغيير معلمات أخرى إلا إذا كنت تعرف ما تفعله.
KeepDefaultValuesMamp=استخدام معالج الإعداد DoliMamp ، حتى القيم المقترحة هنا بالفعل الأمثل. تغييرها إلا إذا كنت تعرف ما تفعله. KeepDefaultValuesMamp=استخدام معالج الإعداد DoliMamp ، حتى القيم المقترحة هنا بالفعل الأمثل. تغييرها إلا إذا كنت تعرف ما تفعله.
# KeepDefaultValuesProxmox=You use the Dolibarr setup wizard from a Proxmox virtual appliance, so values proposed here are already optimized. Change them only if you know what you do. KeepDefaultValuesProxmox=You use the Dolibarr setup wizard from a Proxmox virtual appliance, so values proposed here are already optimized. Change them only if you know what you do.
FieldRenamed=تغيير اسم الميدان FieldRenamed=تغيير اسم الميدان
IfLoginDoesNotExistsCheckCreateUser=اذا ادخل لا يوجد حتى الآن ، يجب عليك التحقق من خيار "تكوين المستخدم" IfLoginDoesNotExistsCheckCreateUser=اذا ادخل لا يوجد حتى الآن ، يجب عليك التحقق من خيار "تكوين المستخدم"
ErrorConnection=الخادم <b>"٪ ل"</b> اسم قاعدة بيانات <b>"٪ ل"</b> ادخل <b>"٪ ل"</b> أو كلمة سر قاعدة البيانات قد تكون خاطئة أو PHP العميل نسخة قديمة جدا ويمكن مقارنة مع قاعدة البيانات نسخة. ErrorConnection=الخادم <b>"٪ ل"</b> اسم قاعدة بيانات <b>"٪ ل"</b> ادخل <b>"٪ ل"</b> أو كلمة سر قاعدة البيانات قد تكون خاطئة أو PHP العميل نسخة قديمة جدا ويمكن مقارنة مع قاعدة البيانات نسخة.
InstallChoiceRecommanded=وأوصت لتثبيت اختيار النسخة <b>٪ المستندات</b> الخاصة بك من النسخة الحالية <b>ل ٪</b> InstallChoiceRecommanded=وأوصت لتثبيت اختيار النسخة <b>٪ المستندات</b> الخاصة بك من النسخة الحالية <b>ل ٪</b>
InstallChoiceSuggested=<b>اقترح تثبيت اختيار المثبت.</b> InstallChoiceSuggested=<b>اقترح تثبيت اختيار المثبت.</b>
# MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions, so install wizard will come back to suggest next migration once this one will be finished. MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions, so install wizard will come back to suggest next migration once this one will be finished.
CheckThatDatabasenameIsCorrect=تأكد من أن اسم قاعدة البيانات <b>"%s"</b> هو الصحيح. CheckThatDatabasenameIsCorrect=تأكد من أن اسم قاعدة البيانات <b>"%s"</b> هو الصحيح.
IfAlreadyExistsCheckOption=وإذا كان هذا الاسم هو الصحيح وأنه لا وجود قاعدة بيانات حتى الآن ، ويجب التحقق من خيار "إنشاء قاعدة بيانات". IfAlreadyExistsCheckOption=وإذا كان هذا الاسم هو الصحيح وأنه لا وجود قاعدة بيانات حتى الآن ، ويجب التحقق من خيار "إنشاء قاعدة بيانات".
OpenBaseDir=بي openbasedir المعلمة OpenBaseDir=بي openbasedir المعلمة
@ -153,12 +153,11 @@ MigrationShippingDelivery=ترقية تخزين الشحن
MigrationShippingDelivery2=ترقية تخزين الشحن 2 MigrationShippingDelivery2=ترقية تخزين الشحن 2
MigrationFinished=مهاجرت به پایان رسید MigrationFinished=مهاجرت به پایان رسید
LastStepDesc=<strong>آخرین مرحله</strong> : در اینجا با نام کاربری خود وارد شوید و رمز عبور تعریف شما قصد دارید استفاده برای اتصال به نرم افزار. سست این ، آن را به عنوان حساب اداره از همه دیگران نیست. LastStepDesc=<strong>آخرین مرحله</strong> : در اینجا با نام کاربری خود وارد شوید و رمز عبور تعریف شما قصد دارید استفاده برای اتصال به نرم افزار. سست این ، آن را به عنوان حساب اداره از همه دیگران نیست.
# ActivateModule=Activate module %s ActivateModule=Activate module %s
# ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
######### #########
# upgrade # upgrade
#########
MigrationFixData=إصلاح البيانات الذي لم تتم تسويته MigrationFixData=إصلاح البيانات الذي لم تتم تسويته
MigrationOrder=بيانات الهجرة طلبات الزبائن MigrationOrder=بيانات الهجرة طلبات الزبائن
MigrationSupplierOrder=بيانات الهجرة من أجل الموردين أوامر MigrationSupplierOrder=بيانات الهجرة من أجل الموردين أوامر
@ -205,5 +204,8 @@ MigrationProjectTaskActors=بيانات الهجرة لllx_projet_task_actors ا
MigrationProjectUserResp=بيانات fk_user_resp مجال الهجرة من llx_projet لllx_element_contact MigrationProjectUserResp=بيانات fk_user_resp مجال الهجرة من llx_projet لllx_element_contact
MigrationProjectTaskTime=تحديث الوقت الذي يقضيه في ثوان MigrationProjectTaskTime=تحديث الوقت الذي يقضيه في ثوان
MigrationActioncommElement=به روز رسانی داده ها در اعمال MigrationActioncommElement=به روز رسانی داده ها در اعمال
# MigrationPaymentMode=Data migration for payment mode MigrationPaymentMode=Data migration for payment mode
# MigrationCategorieAssociation=Migration of categories MigrationCategorieAssociation=Migration of categories
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options

View File

@ -1,152 +1,150 @@
# Dolibarr language file - Source file is en_US - holiday # Dolibarr language file - Source file is en_US - holiday
# HRM=HRM HRM=HRM
# Holidays=Holidays Holidays=Vapaapäivät
# CPTitreMenu=Holidays CPTitreMenu=Holidays
# MenuReportMonth=Monthly statement MenuReportMonth=Monthly statement
# MenuAddCP=Apply for holidays MenuAddCP=Apply for holidays
# NotActiveModCP=You must enable the module holidays to view this page. NotActiveModCP=Sinun täytyy aktivoida lomat -moduuli nähdäksesi tämän sivun.
# NotConfigModCP=You must configure the module holidays to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>. NotConfigModCP=You must configure the module holidays to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>.
# NoCPforUser=You don't have a demand for holidays. NoCPforUser=Sinulla ei ole voimassa olevaa lomatoivomusta.
# AddCP=Apply for holidays AddCP=Apply for holidays
# CPErrorSQL=An SQL error occurred: CPErrorSQL=An SQL error occurred:
# Employe=Employee Employe=Työntekijä
DateDebCP=Aloituspäivämäärä DateDebCP=Aloituspäivämäärä
DateFinCP=Lopetuspäivä DateFinCP=Lopetuspäivä
DateCreateCP=Luontipäivämäärä DateCreateCP=Luontipäivämäärä
DraftCP=Luonnos DraftCP=Luonnos
# ToReviewCP=Awaiting approval ToReviewCP=Awaiting approval
ApprovedCP=Hyväksytty ApprovedCP=Hyväksytty
CancelCP=Peruttu CancelCP=Peruttu
RefuseCP=Refused RefuseCP=Refused
# ValidatorCP=Approbator ValidatorCP=Approbator
# ListeCP=List of holidays ListeCP=List of holidays
# ReviewedByCP=Will be reviewed by ReviewedByCP=Will be reviewed by
DescCP=Kuvaus DescCP=Kuvaus
# SendRequestCP=Creating demand for holidays SendRequestCP=Creating demand for holidays
# DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them. DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
# MenuConfCP=Edit balance of holidays MenuConfCP=Edit balance of holidays
# UpdateAllCP=Update the holidays UpdateAllCP=Update the holidays
# SoldeCPUser=Holidays balance is <b>%s</b> days. SoldeCPUser=Holidays balance is <b>%s</b> days.
# ErrorEndDateCP=You must select an end date greater than the start date. ErrorEndDateCP=You must select an end date greater than the start date.
# ErrorSQLCreateCP=An SQL error occurred during the creation: ErrorSQLCreateCP=An SQL error occurred during the creation:
# ErrorIDFicheCP=An error has occurred, the request for holidays does not exist. ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.
# ReturnCP=Return to previous page ReturnCP=Return to previous page
# ErrorUserViewCP=You are not authorized to read this request for holidays. ErrorUserViewCP=You are not authorized to read this request for holidays.
# InfosCP=Information of the demand of holidays InfosCP=Information of the demand of holidays
# InfosWorkflowCP=Information Workflow InfosWorkflowCP=Information Workflow
DateCreateCP=Luontipäivämäärä RequestByCP=Requested by
# RequestByCP=Requested by TitreRequestCP=Sheet of holidays
# TitreRequestCP=Sheet of holidays NbUseDaysCP=Number of days of holidays consumed
# NbUseDaysCP=Number of days of holidays consumed
EditCP=Muokkaa EditCP=Muokkaa
DeleteCP=Poistaa DeleteCP=Poistaa
ActionValidCP=Validate ActionValidCP=Validate
# ActionRefuseCP=Refuse ActionRefuseCP=Refuse
ActionCancelCP=Peruuta ActionCancelCP=Peruuta
StatutCP=Tila StatutCP=Tila
# SendToValidationCP=Send to validation SendToValidationCP=Send to validation
# TitleDeleteCP=Delete the request of holidays TitleDeleteCP=Delete the request of holidays
# ConfirmDeleteCP=Confirm the deletion of this request for holidays? ConfirmDeleteCP=Confirm the deletion of this request for holidays?
# ErrorCantDeleteCP=Error you don't have the right to delete this holiday request. ErrorCantDeleteCP=Error you don't have the right to delete this holiday request.
# CantCreateCP=You don't have the right to apply for holidays. CantCreateCP=You don't have the right to apply for holidays.
# InvalidValidatorCP=You must choose an approbator to your holiday request. InvalidValidatorCP=You must choose an approbator to your holiday request.
UpdateButtonCP=Päivittää UpdateButtonCP=Päivittää
# CantUpdate=You cannot update this request of holidays. CantUpdate=You cannot update this request of holidays.
# NoDateDebut=You must select a start date. NoDateDebut=You must select a start date.
# NoDateFin=You must select an end date. NoDateFin=You must select an end date.
# ErrorDureeCP=Your request for holidays does not contain working day. ErrorDureeCP=Your request for holidays does not contain working day.
# TitleValidCP=Approve the request holidays TitleValidCP=Approve the request holidays
# ConfirmValidCP=Are you sure you want to approve the holiday request? ConfirmValidCP=Are you sure you want to approve the holiday request?
# DateValidCP=Date approved DateValidCP=Date approved
# TitleToValidCP=Send request holidays TitleToValidCP=Send request holidays
# ConfirmToValidCP=Are you sure you want to send the request of holidays? ConfirmToValidCP=Are you sure you want to send the request of holidays?
# TitleRefuseCP=Refuse the request holidays TitleRefuseCP=Refuse the request holidays
# ConfirmRefuseCP=Are you sure you want to refuse the request of holidays? ConfirmRefuseCP=Are you sure you want to refuse the request of holidays?
# NoMotifRefuseCP=You must choose a reason for refusing the request. NoMotifRefuseCP=You must choose a reason for refusing the request.
# TitleCancelCP=Cancel the request holidays TitleCancelCP=Cancel the request holidays
# ConfirmCancelCP=Are you sure you want to cancel the request of holidays? ConfirmCancelCP=Are you sure you want to cancel the request of holidays?
# DetailRefusCP=Reason for refusal DetailRefusCP=Reason for refusal
# DateRefusCP=Date of refusal DateRefusCP=Date of refusal
# DateCancelCP=Date of cancellation DateCancelCP=Date of cancellation
# DefineEventUserCP=Assign an exceptional leave for a user DefineEventUserCP=Assign an exceptional leave for a user
# addEventToUserCP=Assign leave addEventToUserCP=Assign leave
MotifCP=Syy MotifCP=Syy
UserCP=Käyttäjä UserCP=Käyttäjä
# ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
# AddEventToUserOkCP=The addition of the exceptional leave has been completed. AddEventToUserOkCP=The addition of the exceptional leave has been completed.
# MenuLogCP=View logs of holidays MenuLogCP=View logs of holidays
# LogCP=Log of updates of holidays LogCP=Log of updates of holidays
# ActionByCP=Performed by ActionByCP=Performed by
# UserUpdateCP=For the user UserUpdateCP=For the user
# PrevSoldeCP=Previous Balance PrevSoldeCP=Previous Balance
# NewSoldeCP=New Balance NewSoldeCP=New Balance
# alreadyCPexist=A request for holidays has already been done on this period. alreadyCPexist=A request for holidays has already been done on this period.
UserName=Nimi UserName=Nimi
# Employee=Employee Employee=Employee
# FirstDayOfHoliday=First day of holiday FirstDayOfHoliday=First day of holiday
# LastDayOfHoliday=Last day of holiday LastDayOfHoliday=Last day of holiday
# HolidaysMonthlyUpdate=Monthly update HolidaysMonthlyUpdate=Monthly update
# ManualUpdate=Manual update ManualUpdate=Manual update
# HolidaysCancelation=Holidays cancelation HolidaysCancelation=Holidays cancelation
## Configuration du Module ## ## Configuration du Module ##
# ConfCP=Configuration of holidays module ConfCP=Configuration of holidays module
# DescOptionCP=Description of the option DescOptionCP=Description of the option
ValueOptionCP=Value ValueOptionCP=Value
# GroupToValidateCP=Group with the ability to approve holidays GroupToValidateCP=Group with the ability to approve holidays
# ConfirmConfigCP=Validate the configuration ConfirmConfigCP=Validate the configuration
# LastUpdateCP=Last updated automatically of holidays LastUpdateCP=Last updated automatically of holidays
# UpdateConfCPOK=Updated successfully. UpdateConfCPOK=Updated successfully.
# ErrorUpdateConfCP=An error occurred during the update, please try again. ErrorUpdateConfCP=An error occurred during the update, please try again.
# AddCPforUsers=Please add the balance of holidays of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>. AddCPforUsers=Please add the balance of holidays of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>.
# DelayForSubmitCP=Deadline to apply for holidays DelayForSubmitCP=Deadline to apply for holidays
# AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
# AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
# AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
# nbUserCP=Number of users supported in the module holidays nbUserCP=Number of users supported in the module holidays
# nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
# nbHolidayEveryMonthCP=Number of holidays added every month nbHolidayEveryMonthCP=Number of holidays added every month
# Module27130Name= Management of holidays Module27130Name= Management of holidays
# Module27130Desc= Management of holidays Module27130Desc= Management of holidays
# TitleOptionMainCP=Main settings of holidays TitleOptionMainCP=Main settings of holidays
# TitleOptionEventCP=Settings of holidays related to events TitleOptionEventCP=Settings of holidays related to events
ValidEventCP=Validate ValidEventCP=Validate
# UpdateEventCP=Update events UpdateEventCP=Update events
CreateEventCP=Luo CreateEventCP=Luo
# NameEventCP=Event name NameEventCP=Event name
# OkCreateEventCP=The addition of the event went well. OkCreateEventCP=The addition of the event went well.
# ErrorCreateEventCP=Error creating the event. ErrorCreateEventCP=Error creating the event.
# UpdateEventOkCP=The update of the event went well. UpdateEventOkCP=The update of the event went well.
# ErrorUpdateEventCP=Error while updating the event. ErrorUpdateEventCP=Error while updating the event.
# DeleteEventCP=Delete Event DeleteEventCP=Delete Event
# DeleteEventOkCP=The event has been deleted. DeleteEventOkCP=The event has been deleted.
# ErrorDeleteEventCP=Error while deleting the event. ErrorDeleteEventCP=Error while deleting the event.
# TitleDeleteEventCP=Delete a exceptional leave TitleDeleteEventCP=Delete a exceptional leave
# TitleCreateEventCP=Create a exceptional leave TitleCreateEventCP=Create a exceptional leave
# TitleUpdateEventCP=Edit or delete a exceptional leave TitleUpdateEventCP=Edit or delete a exceptional leave
DeleteEventOptionCP=Poistaa DeleteEventOptionCP=Poistaa
UpdateEventOptionCP=Päivittää UpdateEventOptionCP=Päivittää
# ErrorMailNotSend=An error occurred while sending email: ErrorMailNotSend=An error occurred while sending email:
# NoCPforMonth=No leave this month. NoCPforMonth=No leave this month.
# nbJours=Number days nbJours=Number days
# TitleAdminCP=Configuration of Holidays TitleAdminCP=Configuration of Holidays
#Messages #Messages
# Hello=Hello Hello=Hello
# HolidaysToValidate=Validate holidays HolidaysToValidate=Validate holidays
# HolidaysToValidateBody=Below is a request for holidays to validate HolidaysToValidateBody=Below is a request for holidays to validate
# HolidaysToValidateDelay=This request for holidays will take place within a period of less than %s days. HolidaysToValidateDelay=This request for holidays will take place within a period of less than %s days.
# HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days. HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
# HolidaysValidated=Validated holidays HolidaysValidated=Validated holidays
# HolidaysValidatedBody=Your request for holidays for %s to %s has been validated. HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
# HolidaysRefused=Denied holidays HolidaysRefused=Denied holidays
# HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason : HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
# HolidaysCanceled=Canceled holidays HolidaysCanceled=Canceled holidays
# HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled. HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20000=Read you own holidays
# Permission20001=Read/create/modify their holidays Permission20001=Create/modify your holidays
# Permission20002=Read/modify all requests of holidays Permission20002=Create/modify holidays for everybody
# Permission20003=Delete their holidays requests Permission20003=Delete holidays requests
# Permission20004=Define users holidays Permission20004=Setup users holidays
# Permission20005=Review log of modified holidays Permission20005=Review log of modified holidays
# Permission20006=Access holidays monthly report Permission20006=Read holidays monthly report

View File

@ -9,7 +9,7 @@ ConfFileCouldBeCreated=Configuration <b>file %s</b> voitaisiin luoda.
ConfFileIsNotWritable=Kokoonpano <b>tiedostoa %s</b> ei ole kirjoitettavissa. Tarkista käyttöoikeudet. Ensimmäistä kertaa asentaa, verkkopalvelimesi on myönnettävä voi kirjoittaa tämä tiedosto aikana asennusprosessi ( "chmod 666" esimerkiksi Unix kuten OS). ConfFileIsNotWritable=Kokoonpano <b>tiedostoa %s</b> ei ole kirjoitettavissa. Tarkista käyttöoikeudet. Ensimmäistä kertaa asentaa, verkkopalvelimesi on myönnettävä voi kirjoittaa tämä tiedosto aikana asennusprosessi ( "chmod 666" esimerkiksi Unix kuten OS).
ConfFileIsWritable=Configuration <b>file %s</b> on kirjoitettavissa. ConfFileIsWritable=Configuration <b>file %s</b> on kirjoitettavissa.
ConfFileReload=Päivitä kaikki tiedot asetustiedosto. ConfFileReload=Päivitä kaikki tiedot asetustiedosto.
PHPSupportSessions=Tämä PHP tukee istunnoissa. PHPSupportSessions=Tämä PHP tukee istuntoja.
PHPSupportPOSTGETOk=Tämä PHP tukee muuttujat POST ja GET. PHPSupportPOSTGETOk=Tämä PHP tukee muuttujat POST ja GET.
PHPSupportPOSTGETKo=On mahdollista, sinun PHP asennusohjelma ei tue muuttujat POST tai GET. Tarkista parametri <b>variables_order</b> vuonna php.ini. PHPSupportPOSTGETKo=On mahdollista, sinun PHP asennusohjelma ei tue muuttujat POST tai GET. Tarkista parametri <b>variables_order</b> vuonna php.ini.
PHPSupportGD=Tämä PHP tukea GD graafisia toimintoja. PHPSupportGD=Tämä PHP tukea GD graafisia toimintoja.
@ -25,14 +25,14 @@ ErrorGoBackAndCorrectParameters=Siirry taaksepäin ja korjata väärin parametri
ErrorWrongValueForParameter=Olet ehkä kirjoittanut väärän arvon parametri ' %s'. ErrorWrongValueForParameter=Olet ehkä kirjoittanut väärän arvon parametri ' %s'.
ErrorFailedToCreateDatabase=Luominen epäonnistui tietokanta ' %s'. ErrorFailedToCreateDatabase=Luominen epäonnistui tietokanta ' %s'.
ErrorFailedToConnectToDatabase=Epäonnistui muodostaa tietokanta ' %s'. ErrorFailedToConnectToDatabase=Epäonnistui muodostaa tietokanta ' %s'.
# ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. ErrorDatabaseVersionTooLow=Tietokannan versio (%s) on liian vanha. Versio %s tai korkeampi on tarpeen.
ErrorPHPVersionTooLow=PHP versio liian vanha. Versio %s on tarpeen. ErrorPHPVersionTooLow=PHP versio liian vanha. Versio %s on tarpeen.
WarningPHPVersionTooLow=PHP version liian vanha. Versio %s tai enemmän odotetaan. Tämä versio pitäisi mahdollistaa asentaa mutta ei tueta. WarningPHPVersionTooLow=PHP version liian vanha. Versio %s tai enemmän odotetaan. Tämä versio pitäisi mahdollistaa asentaa mutta ei tueta.
ErrorConnectedButDatabaseNotFound=Yhteys palvelimeen onnistunut mutta tietokantaan %s ei löydy. ErrorConnectedButDatabaseNotFound=Yhteys palvelimeen onnistunut mutta tietokantaan %s ei löydy.
ErrorDatabaseAlreadyExists=Database ' %s' on jo olemassa. ErrorDatabaseAlreadyExists=Database ' %s' on jo olemassa.
IfDatabaseNotExistsGoBackAndUncheckCreate=Jos tietokanta ei ole, palaa takaisin ja tarkistaa vaihtoehto "Luo tietokanta". IfDatabaseNotExistsGoBackAndUncheckCreate=Jos tietokanta ei ole, palaa takaisin ja tarkistaa vaihtoehto "Luo tietokanta".
IfDatabaseExistsGoBackAndCheckCreate=Jos tietokanta on jo olemassa, mene takaisin ja poista "Luo tietokanta" vaihtoehto. IfDatabaseExistsGoBackAndCheckCreate=Jos tietokanta on jo olemassa, mene takaisin ja poista "Luo tietokanta" vaihtoehto.
# WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded. WarningBrowserTooOld=Selaimesi versio on liian vanha. Selaimen päivitys tuoreimpaan versioon on suositeltavaa. Suosittelemme selaimeksi Firefoxia, Chromea tai Operaa.
PHPVersion=PHP Version PHPVersion=PHP Version
YouCanContinue=Voit jatkaa ... YouCanContinue=Voit jatkaa ...
PleaseBePatient=Ole kärsivällinen ... PleaseBePatient=Ole kärsivällinen ...
@ -154,11 +154,10 @@ MigrationShippingDelivery2=Päivitä varastointi merenkulun 2
MigrationFinished=Muuttoliike valmis MigrationFinished=Muuttoliike valmis
LastStepDesc=<strong>Viimeinen askel:</strong> Määritä tässä käyttäjätunnuksen ja salasanan aiot käyttää yhteyden ohjelmisto. Älä löysä tämä on tilin hallinnoida kaikkia muita. LastStepDesc=<strong>Viimeinen askel:</strong> Määritä tässä käyttäjätunnuksen ja salasanan aiot käyttää yhteyden ohjelmisto. Älä löysä tämä on tilin hallinnoida kaikkia muita.
ActivateModule=Aktivoi moduuli %s ActivateModule=Aktivoi moduuli %s
# ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) ShowEditTechnicalParameters=Klikkaa tästä näyttääksesi/muuttaaksesi edistyneemmät parametrit (asiantuntija tila)
######### #########
# upgrade # upgrade
#########
MigrationFixData=Korjaus denormalized tiedot MigrationFixData=Korjaus denormalized tiedot
MigrationOrder=Tietojen siirtäminen asiakkaiden tilauksia MigrationOrder=Tietojen siirtäminen asiakkaiden tilauksia
MigrationSupplierOrder=Tietojen siirtäminen toimittajille tilausten MigrationSupplierOrder=Tietojen siirtäminen toimittajille tilausten
@ -206,4 +205,7 @@ MigrationProjectUserResp=Tietojen siirtäminen alalla fk_user_resp ja llx_projet
MigrationProjectTaskTime=Päivitä aika sekunneissa MigrationProjectTaskTime=Päivitä aika sekunneissa
MigrationActioncommElement=Päivitä tiedot toimista MigrationActioncommElement=Päivitä tiedot toimista
MigrationPaymentMode=Tiedot muuttoliike maksua tilassa MigrationPaymentMode=Tiedot muuttoliike maksua tilassa
# MigrationCategorieAssociation=Migration of categories MigrationCategorieAssociation=Kategorioiden siirto
ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options

View File

@ -34,7 +34,6 @@ ReturnCP=Retour à la page précédente
ErrorUserViewCP=Vous n'êtes pas autorisé à lire cette demande de congés. ErrorUserViewCP=Vous n'êtes pas autorisé à lire cette demande de congés.
InfosCP=Informations de la demande de congés InfosCP=Informations de la demande de congés
InfosWorkflowCP=Informations du workflow InfosWorkflowCP=Informations du workflow
DateCreateCP=Date de création
RequestByCP=Demandée par RequestByCP=Demandée par
TitreRequestCP=Fiche Congés TitreRequestCP=Fiche Congés
NbUseDaysCP=Nombre de jours de congés consommés NbUseDaysCP=Nombre de jours de congés consommés
@ -130,7 +129,6 @@ ErrorMailNotSend=Une erreur est survenue lors de l'envoi du mail :
NoCPforMonth=Aucun congé ce mois-ci. NoCPforMonth=Aucun congé ce mois-ci.
nbJours=Nombre jours nbJours=Nombre jours
TitleAdminCP=Configuration des Congés TitleAdminCP=Configuration des Congés
#Messages #Messages
Hello=Bonjour Hello=Bonjour
HolidaysToValidate=Congés payés à valider HolidaysToValidate=Congés payés à valider
@ -143,10 +141,10 @@ HolidaysRefused=Congés payés refusée
HolidaysRefusedBody=Votre demande de congés payés %s à %s vient d'être refusée pour le motif suivant : HolidaysRefusedBody=Votre demande de congés payés %s à %s vient d'être refusée pour le motif suivant :
HolidaysCanceled=Congés payés annulée HolidaysCanceled=Congés payés annulée
HolidaysCanceledBody=Votre demande de congés %s à %s va été annulée. HolidaysCanceledBody=Votre demande de congés %s à %s va été annulée.
Permission20000=Lire ses propres congès
Permission20001=Lire / Créer / modifier ses congès Permission20001=Créer/modifier ses propres congès
Permission20002=Lire / Modifier toutes les demandes de congés payés Permission20002=Créer/modifier les congès pour tout le monde
Permission20003=Supprimer des demandes de congés payés Permission20003=Supprimer les demandes de congés
Permission20004=Définir les congés payés des utilisateurs Permission20004=Définir les congés des utilisateurs
Permission20005=Voir les logs de modification des congés payés Permission20005=Voir les logs de modification des congés payés
Permission20006=Accéder au rapport mensuel des congés payés Permission20006=Accéder au rapport mensuel des congés

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