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 disable a standard ECM view.
- 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
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 #1357 ] Invoice creator state not printed in generated invoice documents.
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: [ bug #1353 ] Email notifications, wrong URL.
Fix: [ bug #1362 ] Note is not saved.
Fix: tr/td balance.
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 *****
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
Check you have a mysql server available from another interface than localhost
Uncomment line if required and restart mysql
bind-address = 127.0.0.1
Comment line in /etc/mysql/my.cnf if required and restart mysql
#bind-address = 127.0.0.1
Create a chroot called "unstable-amd64-sbuild"
> 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
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
> sudo schroot -c name_of_chroot
> cd /tmp
> lintian --pedantic -E -I dolibarr*.deb
> 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
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:
> 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
> git-import-orig -vv ../dolibarr-3.3.4.tgz
and enter version when requested.
> git-import-orig -vv ../dolibarr-x.y.z+dsfgw.tgz
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

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:-tabname:NU:conditiontoremove'); // To remove an existing tab identified by code tabname
// where objecttype can be
// 'thirdparty' to add a tab in third party view
// '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
// 'categories_x' to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member)
// '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_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)
// 'opensurveypoll' to add a tab in opensurvey poll view
// 'product' to add a tab in product 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();
// Dictionaries

View File

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

View File

@ -25,6 +25,15 @@
* \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)
if ( GETPOST('filtre') ) {

View File

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

View File

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

View File

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

View File

@ -50,7 +50,7 @@ if ($user->societe_id > 0)
unset($_GET["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);
@ -236,9 +236,9 @@ if ($id > 0 || ! empty($ref))
print '</table>';
dol_fiche_end();
print '<br>';
// Contacts lines (modules that overwrite templates must declare this into descriptor)
$dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl'));
foreach($dirtpls as $reldir)

View File

@ -53,7 +53,7 @@ if ($user->societe_id > 0)
unset($_GET["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);

View File

@ -58,7 +58,7 @@ $originid=GETPOST('originid','int');
$socid = GETPOST('socid','int');
$id = GETPOST('id','int');
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);
$error=GETPOST("error");

View File

@ -40,7 +40,7 @@ if ($user->societe_id > 0)
$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) {
$result = $object->createFromClone($socid);
if ($result > 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . '?id=' . $result);
header("Location: " . $_SERVER['PHP_SELF'] . '?id=' . $result);
exit();
} else {
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);
}
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id);
header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id);
exit();
}
@ -331,7 +331,7 @@ else if ($action == 'add' && $user->rights->propal->creer) {
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();
} else {
$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
$mesg = $langs->trans('MailSuccessfulySent', $mailfile->getValidAddress($from, 2), $mailfile->getValidAddress($sendto, 2));
setEventMessage($mesg);
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id);
header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id);
exit();
} else {
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')) {
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();
}
@ -910,7 +910,7 @@ else if ($action == 'builddoc' && $user->rights->propal->creer) {
dol_print_error($db, $result);
exit();
} 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();
}
}
@ -983,7 +983,7 @@ else if ($action == 'up' && $user->rights->propal->creer) {
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();
}
@ -1002,7 +1002,7 @@ else if ($action == 'down' && $user->rights->propal->creer) {
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();
} else if ($action == 'update_extras') {
// 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) {
header("Location: " . $_SERVER ['PHP_SELF'] . "?id=" . $object->id);
header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id);
exit();
} else {
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);
if ($result >= 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . "?id=" . $object->id);
header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id);
exit();
} else {
dol_print_error($db);
@ -1099,7 +1099,7 @@ if ($action == 'create') {
$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="action" value="add">';
@ -1349,22 +1349,22 @@ if ($action == 'create') {
// 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)')));
// 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
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
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
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
@ -1392,7 +1392,7 @@ if ($action == 'create') {
}
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) {
@ -1419,7 +1419,7 @@ if ($action == 'create') {
print '<table class="nobordernopadding" width="100%"><tr><td class="nowrap">';
print $langs->trans('RefCustomer') . '</td>';
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 '</tr></table>';
print '</td><td colspan="5">';
@ -1458,7 +1458,7 @@ if ($action == 'create') {
// Remise dispo de type non avoir
$filter = 'fk_facture_source IS NULL';
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) {
@ -1475,11 +1475,11 @@ if ($action == 'create') {
print $langs->trans('Date');
print '</td>';
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 '</td><td colspan="3">';
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="action" value="setdate">';
$form->select_date($object->date, 're', '', '', 0, "editdate");
@ -1501,11 +1501,11 @@ if ($action == 'create') {
print $langs->trans('DateEndPropal');
print '</td>';
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 '</td><td colspan="3">';
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="action" value="setecheance">';
$form->select_date($object->fin_validite, 'ech', '', '', '', "editecheance");
@ -1529,13 +1529,13 @@ if ($action == 'create') {
print $langs->trans('PaymentConditionsShort');
print '</td>';
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 '</td><td colspan="3">';
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 {
$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 '</tr>';
@ -1547,11 +1547,11 @@ if ($action == 'create') {
print $langs->trans('DeliveryDate');
print '</td>';
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 '</td><td colspan="3">';
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="action" value="setdate_livraison">';
$form->select_date($object->date_livraison, 'liv_', '', '', '', "editdate_livraison");
@ -1571,13 +1571,13 @@ if ($action == 'create') {
print ' (' . $langs->trans('AfterOrder') . ')';
print '</td>';
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 '</td><td colspan="3">';
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 {
$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>';
@ -1589,13 +1589,13 @@ if ($action == 'create') {
print $langs->trans('Source');
print '</td>';
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 '</td><td colspan="3">';
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 {
$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 '</tr>';
@ -1607,13 +1607,13 @@ if ($action == 'create') {
print $langs->trans('PaymentMode');
print '</td>';
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 '</td><td colspan="3">';
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 {
$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>';
@ -1625,13 +1625,13 @@ if ($action == 'create') {
print $langs->trans('Project') . '</td>';
if ($user->rights->propal->creer) {
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 '</td><td colspan="3">';
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 {
$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>';
} else {
@ -1688,7 +1688,7 @@ if ($action == 'create') {
}
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="attribute" value="' . $key . '">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
@ -1702,7 +1702,7 @@ if ($action == 'create') {
} else {
print $extrafields->showOutputField($key, $value);
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";
}
@ -1770,7 +1770,7 @@ if ($action == 'create') {
// Show object lines
$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="action" value="' . (($action != 'editline') ? 'addline' : 'updateligne') . '">
<input type="hidden" name="mode" value="">
@ -1812,7 +1812,7 @@ if ($action == 'create') {
/*
* 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 .= '<table class="border" width="100%">';
$form_close .= '<tr><td width="150" align="left">' . $langs->trans("CloseAs") . '</td><td align="left">';
@ -1850,7 +1850,7 @@ if ($action == 'create') {
// Validate
if ($object->statut == 0 && $object->total_ttc >= 0 && count($object->lines) > 0 && $user->rights->propal->valider) {
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>';
}
// Create event
@ -1863,19 +1863,19 @@ if ($action == 'create') {
}
// Edit
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
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>';
}
// Send
if ($object->statut == 1 || $object->statut == 2) {
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
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();
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
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>';
}
// Clone
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
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>';
}
}
@ -1942,7 +1942,7 @@ if ($action == 'create') {
*/
$filename = 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;
$delallowed = $user->rights->propal->supprimer;
@ -1982,8 +1982,8 @@ if ($action == 'create') {
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
if (! empty($newlang)) {
@ -2057,7 +2057,7 @@ if ($action == 'create') {
$formmail->param ['action'] = 'send';
$formmail->param ['models'] = 'propal_send';
$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
if (GETPOST("mode") == 'init') {
$formmail->clear_attached_files();

View File

@ -673,16 +673,26 @@ class Propal extends CommonObject
dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR);
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))
{
$this->error="Date of proposal is required";
dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR);
return -4;
}
if (! empty($this->ref))
{
$result=$this->verifyNumRef(); // Check ref is not yet used
}
$this->db->begin();

View File

@ -612,6 +612,18 @@ class Commande extends CommonOrder
dol_syslog(get_class($this)."::create user=".$user->id);
// 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);
$result=$soc->fetch($this->socid);
if ($result < 0)
@ -1039,7 +1051,7 @@ class Commande extends CommonOrder
function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1=0, $txlocaltax2=0, $fk_product=0, $remise_percent=0, $info_bits=0, $fk_remise_except=0, $price_base_type='HT', $pu_ttc=0, $date_start='', $date_end='', $type=0, $rang=-1, $special_code=0, $fk_parent_line=0, $fk_fournprice=null, $pa_ht=0, $label='',$array_option=0)
{
global $mysoc, $conf, $langs;
$commandeid=$this->id;
dol_syslog(get_class($this)."::addline commandeid=$commandeid, desc=$desc, pu_ht=$pu_ht, qty=$qty, txtva=$txtva, fk_product=$fk_product, remise_percent=$remise_percent, info_bits=$info_bits, fk_remise_except=$fk_remise_except, price_base_type=$price_base_type, pu_ttc=$pu_ttc, date_start=$date_start, date_end=$date_end, type=$type", LOG_DEBUG);
@ -1086,9 +1098,9 @@ class Commande extends CommonOrder
// qty, pu, remise_percent et txtva
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$mysoc);
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type,'', $localtaxes_type);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
@ -1103,14 +1115,14 @@ class Commande extends CommonOrder
$rangmax = $this->line_max($fk_parent_line);
$rangtouse = $rangmax + 1;
}
$product_type=$type;
if (!empty($fk_product))
{
$product=new Product($this->db);
$result=$product->fetch($fk_product);
$product_type=$product->type;
if($conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER && $product_type == 0 && $product->stock_reel < $qty) {
$this->error=$langs->trans('ErrorStockIsNotEnough');
$this->db->rollback();
@ -2303,9 +2315,9 @@ class Commande extends CommonOrder
// qty, pu, remise_percent et txtva
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$mysoc);
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, '', $localtaxes_type);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];

View File

@ -111,7 +111,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && $user->rights->commande->
if ($object->id > 0) {
$result = $object->createFromClone($socid);
if ($result > 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . '?id=' . $result);
header("Location: " . $_SERVER['PHP_SELF'] . '?id=' . $result);
exit();
} else {
$mesg = '<div class="error">' . $object->error . '</div>';
@ -126,7 +126,7 @@ else if ($action == 'reopen' && $user->rights->commande->creer) {
if ($object->statut == 3) {
$result = $object->set_reopen($user);
if ($result > 0) {
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id);
header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id);
exit();
} else {
$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);
}
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object->id);
header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id);
exit();
} else {
$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
if ($object_id > 0 && ! $error) {
$db->commit();
header('Location: ' . $_SERVER ["PHP_SELF"] . '?id=' . $object_id);
header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object_id);
exit();
} else {
$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')) {
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();
}
@ -847,8 +847,8 @@ else if ($action == 'confirm_validate' && $confirm == 'yes' && $user->rights->co
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
if (! empty($newlang)) {
@ -880,8 +880,8 @@ else if ($action == 'confirm_modif' && $user->rights->commande->creer) {
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
if (! empty($newlang)) {
@ -929,8 +929,8 @@ else if ($action == 'up' && $user->rights->commande->creer) {
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
if (! empty($newlang)) {
@ -941,7 +941,7 @@ else if ($action == 'up' && $user->rights->commande->creer) {
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
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();
}
@ -951,8 +951,8 @@ else if ($action == 'down' && $user->rights->commande->creer) {
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
if (! empty($newlang)) {
@ -962,7 +962,7 @@ else if ($action == 'down' && $user->rights->commande->creer) {
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
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();
}
@ -980,8 +980,8 @@ else if ($action == 'builddoc') // In get or post
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
if (! empty($newlang)) {
@ -1176,7 +1176,7 @@ if ($action == 'send' && ! GETPOST('addfile') && ! GETPOST('removedfile') && ! G
} else {
// Redirect here
// 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();
}
} else {
@ -1219,7 +1219,7 @@ if (! $error && ! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->righ
}
if ($result >= 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . "?id=" . $object->id);
header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id);
exit();
} else {
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);
if ($result >= 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . "?id=" . $object->id);
header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id);
exit();
} else {
dol_print_error($db);
@ -1349,7 +1349,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
$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="action" value="add">';
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
*/
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)));
}
$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
@ -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)));
}
$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
*/
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)));
}
$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
*/
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
@ -1709,7 +1709,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
// => 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)')));
// 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) {
@ -1751,11 +1751,11 @@ if ($action == 'create' && $user->rights->commande->creer) {
print $langs->trans('RefCustomer') . '</td><td align="left">';
print '</td>';
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 '</td><td colspan="3">';
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="action" value="set_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
$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>';
$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>';
$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>';
$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">';
if ($soc->remise_percent)
@ -1802,7 +1802,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
} else {
// Remise dispo de type remise fixe (not credit note)
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) {
@ -1819,11 +1819,11 @@ if ($action == 'create' && $user->rights->commande->creer) {
print '</td>';
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 '</td><td colspan="3">';
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="action" value="setdate">';
$form->select_date($object->date, 'order_', '', '', '', "setdate");
@ -1841,11 +1841,11 @@ if ($action == 'create' && $user->rights->commande->creer) {
print $langs->trans('DateDeliveryPlanned');
print '</td>';
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 '</td><td colspan="3">';
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="action" value="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 '</td>';
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 '</td><td colspan="3">';
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 {
$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>';
@ -1881,13 +1881,13 @@ if ($action == 'create' && $user->rights->commande->creer) {
print $langs->trans('PaymentMode');
print '</td>';
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 '</td><td colspan="3">';
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 {
$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>';
@ -1897,13 +1897,13 @@ if ($action == 'create' && $user->rights->commande->creer) {
print $langs->trans('AvailabilityPeriod');
print '</td>';
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 '</td><td colspan="3">';
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 {
$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>';
@ -1913,13 +1913,13 @@ if ($action == 'create' && $user->rights->commande->creer) {
print $langs->trans('Source');
print '</td>';
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 '</td><td colspan="3">';
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 {
$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.
// 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 '</td>';
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 '</td><td colspan="3">';
// print "$object->id, $object->socid, $object->fk_project";
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 {
$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>';
}
@ -1983,7 +1983,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
}
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="attribute" value="' . $key . '">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
@ -1996,7 +1996,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
} else {
print $extrafields->showOutputField($key, $value);
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";
}
@ -2064,7 +2064,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
*/
$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="action" value="' . (($action != 'editline') ? 'addline' : 'updateligne') . '">
<input type="hidden" name="mode" value="">
@ -2117,7 +2117,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
if (empty($reshook)) {
// Valid
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
if ($object->statut == 1 && $user->rights->commande->creer) {
@ -2133,7 +2133,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
// Send
if ($object->statut > 0) {
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
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
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
@ -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>';
}
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
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
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
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
if ($user->rights->commande->supprimer) {
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 {
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';
$relativepath = $comref . '/' . $comref . '.pdf';
$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;
$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);
@ -2273,8 +2273,8 @@ if ($action == 'create' && $user->rights->commande->creer) {
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
if (! empty($newlang)) {
@ -2346,7 +2346,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
$formmail->param ['action'] = 'send';
$formmail->param ['models'] = 'order_send';
$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
if (GETPOST("mode") == 'init') {

View File

@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2001-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* 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) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
*
@ -267,7 +267,7 @@ if ($result)
if ($action == 'delete_categ')
{
print $form->formconfirm($_SERVER['PHP_SELF']."?rowid=".$rowid."&cat1=".GETPOST("fk_categ")."&orig_account=".$orig_account, $langs->trans("RemoveFromRubrique"), $langs->trans("RemoveFromRubriqueConfirm"), "confirm_delete_categ", '', 'yes', 1);
}
print '<form name="update" method="POST" action="'.$_SERVER['PHP_SELF'].'?rowid='.$rowid.'">';
@ -341,6 +341,12 @@ if ($result)
print $langs->trans("VATPayment");
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') {
print '<a href="'.DOL_URL_ROOT.'/adherents/fiche.php?rowid='.$links[$key]['url_id'].'">';
print img_object($langs->trans('ShowMember'),'user').' ';
@ -353,6 +359,12 @@ if ($result)
print $langs->trans("TransactionOnTheOtherAccount");
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 {
print '<a href="'.$links[$key]['url'].$links[$key]['url_id'].'">';
print img_object('','generic').' ';

View File

@ -36,7 +36,7 @@ $langs->load("bills");
// Security check
if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'tax', '', '', 'charges');
$result = restrictedArea($user, 'tax|salaries', '', '', 'charges|');
$year=$_GET["year"];
$filtre=$_GET["filtre"];
@ -247,13 +247,13 @@ if ($conf->tax->enabled)
// Type payment
print '<td>';
if ($obj->payment_code) print $langs->trans("PaymentTypeShort".$obj->payment_code).' ';
print $obj->num_payment.'</td>';
print $obj->num_payment.'</td>';
// Paid
print '<td align="right">';
if ($obj->totalpaye) print price($obj->totalpaye);
print '</td>';
print '</tr>';
$total = $total + $obj->total;
$totalnb = $totalnb + $obj->nb;
$totalpaye = $totalpaye + $obj->totalpaye;

View File

@ -115,13 +115,13 @@ include DOL_DOCUMENT_ROOT . '/core/actions_setnotes.inc.php'; // Must be include
// Action clone object
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>';
} else {
if ($object->fetch($id) > 0) {
$result = $object->createFromClone($socid);
if ($result > 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . '?facid=' . $result);
header("Location: " . $_SERVER['PHP_SELF'] . '?facid=' . $result);
exit();
} else {
$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')) {
$result = $object->set_unpaid($user);
if ($result > 0) {
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id);
header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $id);
exit();
} else {
$mesgs [] = '<div class="error">' . $object->error . '</div>';
@ -178,8 +178,8 @@ else if ($action == 'confirm_deleteline' && $confirm == 'yes' && $user->rights->
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
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);
}
if ($result >= 0) {
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id);
header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $id);
exit();
}
} else {
@ -231,7 +231,7 @@ else if ($action == 'set_thirdparty' && $user->rights->facture->creer) {
$object->fetch($id);
$object->setValueFrom('fk_soc', $socid);
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id);
header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $id);
exit();
}
@ -384,8 +384,8 @@ else if ($action == 'confirm_valid' && $confirm == 'yes' && $user->rights->factu
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
if (! empty($newlang)) {
@ -458,8 +458,8 @@ else if ($action == 'confirm_modif' && ((empty($conf->global->MAIN_USE_ADVANCED_
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
if (! empty($newlang)) {
@ -1023,7 +1023,7 @@ else if ($action == 'add' && $user->rights->facture->creer)
if ($id > 0 && ! $error)
{
$db->commit();
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id);
header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $id);
exit();
}
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')) {
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();
}
@ -1416,8 +1416,8 @@ else if ($action == 'up' && $user->rights->facture->creer) {
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
if (! empty($newlang)) {
@ -1427,7 +1427,7 @@ else if ($action == 'up' && $user->rights->facture->creer) {
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
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();
} // Modify line position (down)
else if ($action == 'down' && $user->rights->facture->creer) {
@ -1438,8 +1438,8 @@ else if ($action == 'down' && $user->rights->facture->creer) {
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
if (! empty($newlang)) {
@ -1449,7 +1449,7 @@ else if ($action == 'down' && $user->rights->facture->creer) {
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
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();
}
@ -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
$mesg = $langs->trans('MailSuccessfulySent', $mailfile->getValidAddress($from, 2), $mailfile->getValidAddress($sendto, 2));
setEventMessage($mesg);
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $object->id);
header('Location: ' . $_SERVER["PHP_SELF"] . '?facid=' . $object->id);
exit();
}
} else {
@ -1715,7 +1715,7 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->facture-
}
if ($result >= 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . "?id=" . $object->id);
header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id);
exit();
} else {
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);
if ($result >= 0) {
header("Location: " . $_SERVER ['PHP_SELF'] . "?id=" . $object->id);
header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id);
exit();
} else {
dol_print_error($db);
@ -1889,7 +1889,7 @@ if ($action == 'create')
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="action" value="add">';
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
print '<tr><td>' . $langs->trans('Discounts') . '</td><td colspan="2">';
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
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 '<br>';
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
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 '</td></tr>';
}
@ -2426,7 +2426,7 @@ if ($action == 'create')
// Confirmation de la conversion de l'avoir en reduc
if ($action == 'converttoreduc') {
$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
@ -2453,9 +2453,9 @@ if ($action == 'create')
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value'
// => 1),
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 {
$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");
}
$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
@ -2554,12 +2554,12 @@ if ($action == 'create')
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
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) {
// Code
@ -2588,7 +2588,7 @@ if ($action == 'create')
// 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'));
// 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
@ -2619,13 +2619,13 @@ if ($action == 'create')
// 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'));
$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
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
@ -2636,7 +2636,7 @@ if ($action == 'create')
// 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)));
// 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) {
@ -2675,12 +2675,12 @@ if ($action == 'create')
print $langs->trans('RefCustomer');
print '</td>';
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 '</td>';
print '<td colspan="5">';
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="action" value="set_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 '</td><td colspan="5">';
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 '</td><td colspan="5">';
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 {
print ' &nbsp;' . $soc->getNomUrl(1, 'compta');
print ' &nbsp; ';
@ -2756,9 +2756,9 @@ if ($action == 'create')
print '</td></tr>';
// 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>';
$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>';
$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>';
$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 '</td><td colspan="5">';
@ -2787,7 +2787,7 @@ if ($action == 'create')
} else {
// Remise dispo de type remise fixe (not credit note)
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 {
if ($absolute_creditnote > 0) // If not, link will be added later
@ -2814,7 +2814,7 @@ if ($action == 'create')
print '<br>';
// $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote,
// $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
// allow
// credit
@ -2848,13 +2848,13 @@ if ($action == 'create')
print $langs->trans('Date');
print '</td>';
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 '</td><td colspan="3">';
if ($object->type != Facture::TYPE_CREDIT_NOTE) {
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 {
print dol_print_date($object->date, 'daytext');
}
@ -2984,7 +2984,7 @@ if ($action == 'create')
print ' :</td>';
print '<td align="right">' . price($obj->amount_ttc) . '</td>';
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>';
$i ++;
if ($invoice->type == Facture::TYPE_CREDIT_NOTE)
@ -3069,7 +3069,8 @@ if ($action == 'create')
print '</table>';
// Margin Infos
if (! empty($conf->margin->enabled)) {
if (! empty($conf->margin->enabled))
{
print '<br>';
$object->displayMarginInfos($object->statut > 0);
}
@ -3082,14 +3083,14 @@ if ($action == 'create')
print $langs->trans('PaymentConditionsShort');
print '</td>';
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 '</td><td colspan="3">';
if ($object->type != Facture::TYPE_CREDIT_NOTE) {
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 {
$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 {
print '&nbsp;';
@ -3102,12 +3103,12 @@ if ($action == 'create')
print $langs->trans('DateMaxPayment');
print '</td>';
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 '</td><td colspan="3">';
if ($object->type != Facture::TYPE_CREDIT_NOTE) {
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 {
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))
@ -3124,13 +3125,13 @@ if ($action == 'create')
print $langs->trans('PaymentMode');
print '</td>';
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 '</td><td colspan="3">';
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 {
$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>';
@ -3160,11 +3161,11 @@ if ($action == 'create')
print $langs->trans('RevenueStamp');
print '</td>';
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 '</td><td colspan="3" align="right">';
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="action" value="setrevenuestamp">';
print $formother->select_revenue_stamp(GETPOST('revenuestamp'), 'revenuestamp', $mysoc->country_code);
@ -3194,7 +3195,7 @@ if ($action == 'create')
print $langs->trans('Project');
print '</td>';
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 '</a></td>';
}
@ -3202,9 +3203,9 @@ if ($action == 'create')
print '</td><td colspan="3">';
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 {
$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 '</tr>';
@ -3236,7 +3237,7 @@ if ($action == 'create')
}
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="attribute" value="' . $key . '">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
@ -3249,7 +3250,7 @@ if ($action == 'create')
} else {
print $extrafields->showOutputField($key, $value);
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";
}
@ -3273,7 +3274,7 @@ if ($action == 'create')
// Lines
$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="action" value="' . (($action != 'editline') ? 'addline' : 'updateligne') . '">
<input type="hidden" name="mode" value="">
@ -3330,7 +3331,7 @@ if ($action == 'create')
if ($resteapayer == $object->total_ttc && $object->paye == 0 && $ventilExportCompta == 0) {
if (! $objectidnext) {
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 {
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
{
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 {
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
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) {
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>';
} else {
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
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>';
} else {
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
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
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
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 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
{
if ($objectidnext) {
print '<div class="inline-block divButAction"><span class="butActionRefused" title="' . $langs->trans("DisabledBecauseReplacedInvoice") . '">' . $langs->trans('ClassifyCanceled') . '</span></div>';
} 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
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
@ -3478,7 +3479,7 @@ if ($action == 'create')
} elseif ($object->getSommePaiement()) {
print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="' . $langs->trans("DisabledBecausePayments") . '">' . $langs->trans('Delete') . '</a></div>';
} 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 {
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
$filename = 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;
$delallowed = $user->rights->facture->supprimer;
@ -3602,8 +3603,8 @@ if ($action == 'create')
// Define output language
$outputlangs = $langs;
$newlang = '';
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST ['lang_id']))
$newlang = $_REQUEST ['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
$newlang = $_REQUEST['lang_id'];
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
$newlang = $object->client->default_lang;
if (! empty($newlang)) {
@ -3680,7 +3681,7 @@ if ($action == 'create')
$formmail->param ['action'] = $action;
$formmail->param ['models'] = $modelmail;
$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
if (GETPOST("mode") == 'init') {

View File

@ -617,6 +617,7 @@ class Facture extends CommonInvoice
$this->statut=0;
// 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_valid = '';
$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
* @return int <0 if KO, >0 if OK
@ -3530,7 +3531,21 @@ class FactureLigne extends CommonInvoiceLine
}
// 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();

View File

@ -428,7 +428,7 @@ if ($object->id > 0)
/*
* Withdrawal request
*/
*/
$sql = "SELECT pfd.rowid, pfd.traite, pfd.date_demande as date_demande";
$sql .= " , pfd.date_traite as date_traite";
@ -462,12 +462,13 @@ if ($object->id > 0)
}
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
{
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";

View File

@ -359,20 +359,12 @@ class PaymentSalary extends CommonObject
$result = $this->db->query($sql);
if ($result)
{
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."payment_salary"); // TODO should be called payment_salary
$ok=1;
// 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
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."payment_salary");
if ($this->id > 0)
{
$ok=1;
if (! empty($conf->banque->enabled) && ! empty($this->amount))
{
// Insert into llx_bank
@ -406,42 +398,53 @@ class PaymentSalary extends CommonObject
$ok=0;
}
// Add link 'payment_salary' in bank_url between payment and bank transaction
$url=DOL_URL_ROOT.'/compta/salaries/fiche.php?id=';
if ($ok)
{
// 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)
{
$this->error=$acc->error;
$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)
{
$this->db->commit();

View File

@ -37,14 +37,14 @@ $id=GETPOST("id",'int');
$action=GETPOST('action');
// Security check
$socid = isset($_GET["socid"])?$_GET["socid"]:'';
$socid = GETPOST("socid","int");
if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'tax', '', '', 'charges');
$result = restrictedArea($user, 'salaries', '', '', '');
$sal = new PaymentSalary($db);
// 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->type_payment=GETPOST("paymenttype");
$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)
{
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Employee")),'errors');
@ -98,7 +104,7 @@ if ($action == 'add' && $_POST["cancel"] <> $langs->trans("Cancel"))
if (! $error)
{
$db->begin();
$ret=$sal->create($user);
if ($ret > 0)
{
@ -210,11 +216,11 @@ if ($action == 'create')
print "<tr>";
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 '<tr><td class="fieldrequired">'.$langs->trans("DateValue").'</td><td>';
print $form->select_date($datev,"datev",'','','','add');
print '<tr><td>'.$langs->trans("DateValue").'</td><td>';
print $form->select_date((empty($datev)?-1:$datev),"datev",'','','','add',1,1);
print '</td></tr>';
// Employee
@ -244,19 +250,22 @@ if ($action == 'create')
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
print '</td></tr>';
// Type payment
print '<tr><td class="fieldrequired">'.$langs->trans("PaymentMode").'</td><td>';
$form->select_types_paiements(GETPOST("paymenttype"), "paymenttype");
print "</td>\n";
print "</tr>";
}
// Type payment
print '<tr><td class="fieldrequired">'.$langs->trans("PaymentMode").'</td><td>';
$form->select_types_paiements(GETPOST("paymenttype"), "paymenttype");
print "</td>\n";
print "</tr>";
if (! empty($conf->banque->enabled))
{
// Number
print '<tr><td>'.$langs->trans('Numero');
print ' <em>('.$langs->trans("ChequeOrTransferNumber").')</em>';
print '<td><input name="num_payment" type="text" value="'.GETPOST("num_payment").'"></td></tr>'."\n";
}
// Other attributes
$parameters=array('colspan' => ' colspan="1"');
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook

View File

@ -29,9 +29,9 @@ $langs->load("salaries");
$langs->load("bills");
// Security check
$socid = isset($_GET["socid"])?$_GET["socid"]:'';
$socid = GETPOST("socid","int");
if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'tax', '', '', 'charges');
$result = restrictedArea($user, 'salaries', '', '', '');
$sortfield = GETPOST("sortfield",'alpha');
$sortorder = GETPOST("sortorder",'alpha');
@ -101,11 +101,11 @@ if ($result)
$param='';
if ($typeid) $param.='&amp;typeid='.$typeid;
print_barre_liste($langs->trans("SalariesPayments"),$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$totalnboflines);
dol_htmloutput_mesg($mesg);
print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">';
print '<table class="noborder" width="100%">';
@ -118,7 +118,7 @@ if ($result)
print_liste_field_titre($langs->trans("PayedByThisPayment"),$_SERVER["PHP_SELF"],"s.amount","",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre("");
print "</tr>\n";
print '<tr class="liste_titre">';
print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre">&nbsp;</td>';
@ -133,7 +133,7 @@ if ($result)
print '<input type="image" class="liste_titre" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" name="button_search" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
print '</td>';
print "</tr>\n";
while ($i < min($num,$limit))
{
$obj = $db->fetch_object($result);
@ -157,7 +157,7 @@ if ($result)
print "</tr>\n";
$total = $total + $obj->amount;
$i++;
}
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total").'</td>';
@ -165,9 +165,9 @@ if ($result)
print "<td>&nbsp;</td></tr>";
print "</table>";
print '</form>';
$db->free($result);
}
else

View File

@ -60,7 +60,7 @@ if (isset($_GET["modetax"])) $modetax=$_GET["modetax"];
*
* @param DoliDB $db Database handler
* @param string $sql SQL Request
* @param date $date Date
* @param date $date Date
* @return void
*/
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 '<br>';
echo '<table width="100%" class="notopnoleftnoright">';
echo '<tr><td class="notopnoleft" width="50%">';
print '<table width="100%" class="notopnoleftnoright">';
print '<tr><td class="notopnoleft" width="50%">';
print_titre($langs->trans("VATSummary"));
// The report mode is the one defined by defaut in tax module setup
//print $modetax;
//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"));
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 '<tr class="liste_titre">';
@ -230,7 +230,7 @@ print '</tr>';
print '</table>';
echo '</td>';
print '</td>';
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.= " 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.= " GROUP BY dm ORDER BY dm ASC";
$sql.= " GROUP BY dm ORDER BY dm ASC";
pt($db, $sql,$langs->trans("Year")." $y");
print "</td></tr></table>";
echo '</td></tr>';
echo '</table>';
print '</td></tr>';
print '</table>';
$db->close();

View File

@ -6,6 +6,7 @@
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
* 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
* it under the terms of the GNU General Public License as published by
@ -105,11 +106,11 @@ if (empty($reshook))
// Creation user
$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)
{
$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)
{
$db->commit();
@ -159,37 +160,37 @@ if (empty($reshook))
if ($canvas) $object->canvas=$canvas;
$object->socid = $_POST["socid"];
$object->lastname = $_POST["lastname"];
$object->firstname = $_POST["firstname"];
$object->civility_id = $_POST["civility_id"];
$object->poste = $_POST["poste"];
$object->address = $_POST["address"];
$object->zip = $_POST["zipcode"];
$object->town = $_POST["town"];
$object->country_id = $_POST["country_id"];
$object->state_id = $_POST["state_id"];
$object->skype = $_POST["skype"];
$object->email = $_POST["email"];
$object->phone_pro = $_POST["phone_pro"];
$object->phone_perso = $_POST["phone_perso"];
$object->phone_mobile = $_POST["phone_mobile"];
$object->fax = $_POST["fax"];
$object->jabberid = $_POST["jabberid"];
$object->no_email = $_POST["no_email"];
$object->priv = $_POST["priv"];
$object->socid = GETPOST("socid",'int');
$object->lastname = GETPOST("lastname");
$object->firstname = GETPOST("firstname");
$object->civility_id = GETPOST("civility_id",'alpha');
$object->poste = GETPOST("poste");
$object->address = GETPOST("address");
$object->zip = GETPOST("zipcode");
$object->town = GETPOST("town");
$object->country_id = GETPOST("country_id",'int');
$object->state_id = GETPOST("state_id",'int');
$object->skype = GETPOST("skype");
$object->email = GETPOST("email",'alpha');
$object->phone_pro = GETPOST("phone_pro");
$object->phone_perso = GETPOST("phone_perso");
$object->phone_mobile = GETPOST("phone_mobile");
$object->fax = GETPOST("fax");
$object->jabberid = GETPOST("jabberid",'alpha');
$object->no_email = GETPOST("no_email",'int');
$object->priv = GETPOST("priv",'int');
$object->note_public = GETPOST("note_public");
$object->note_private = GETPOST("note_private");
$object->statut = 1; //Defult status to Actif
// 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_alert = $_POST["birthday_alert"];
$object->birthday = dol_mktime(0,0,0,GETPOST("birthdaymonth",'int'),GETPOST("birthdayday",'int'),GETPOST("birthdayyear",'int'));
$object->birthday_alert = GETPOST("birthday_alert",'alpha');
// Fill array 'array_options' with data from add form
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
if (! $_POST["lastname"])
if (! GETPOST("lastname"))
{
$error++; $errors[]=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname").' / '.$langs->transnoentities("Label"));
$action = 'create';
@ -223,8 +224,8 @@ if (empty($reshook))
{
$result=$object->fetch($id);
$object->old_lastname = $_POST["old_lastname"];
$object->old_firstname = $_POST["old_firstname"];
$object->old_lastname = GETPOST("old_lastname");
$object->old_firstname = GETPOST("old_firstname");
$result = $object->delete();
if ($result > 0)
@ -254,30 +255,30 @@ if (empty($reshook))
$object->oldcopy=dol_clone($object);
$object->old_lastname = $_POST["old_lastname"];
$object->old_firstname = $_POST["old_firstname"];
$object->old_lastname = GETPOST("old_lastname");
$object->old_firstname = GETPOST("old_firstname");
$object->socid = $_POST["socid"];
$object->lastname = $_POST["lastname"];
$object->firstname = $_POST["firstname"];
$object->civility_id = $_POST["civility_id"];
$object->poste = $_POST["poste"];
$object->socid = GETPOST("socid",'int');
$object->lastname = GETPOST("lastname");
$object->firstname = GETPOST("firstname");
$object->civility_id = GETPOST("civility_id",'alpha');
$object->poste = GETPOST("poste");
$object->address = $_POST["address"];
$object->zip = $_POST["zipcode"];
$object->town = $_POST["town"];
$object->state_id = $_POST["state_id"];
$object->country_id = $_POST["country_id"];
$object->address = GETPOST("address");
$object->zip = GETPOST("zipcode");
$object->town = GETPOST("town");
$object->state_id = GETPOST("state_id",'int');
$object->country_id = GETPOST("country_id",'int');
$object->email = $_POST["email"];
$object->skype = $_POST["skype"];
$object->phone_pro = $_POST["phone_pro"];
$object->phone_perso = $_POST["phone_perso"];
$object->phone_mobile = $_POST["phone_mobile"];
$object->fax = $_POST["fax"];
$object->jabberid = $_POST["jabberid"];
$object->no_email = $_POST["no_email"];
$object->priv = $_POST["priv"];
$object->email = GETPOST("email",'alpha');
$object->skype = GETPOST("skype",'alpha');
$object->phone_pro = GETPOST("phone_pro");
$object->phone_perso = GETPOST("phone_perso");
$object->phone_mobile = GETPOST("phone_mobile");
$object->fax = GETPOST("fax");
$object->jabberid = GETPOST("jabberid",'alpha');
$object->no_email = GETPOST("no_email",'int');
$object->priv = GETPOST("priv",'int');
$object->note_public = GETPOST("note_public");
$object->note_private = GETPOST("note_private");
@ -423,8 +424,8 @@ else
print '<table class="border" width="100%">';
// 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 '<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 '<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="'.dol_escape_htmltag(GETPOST("firstname")?GETPOST("firstname"):$object->firstname).'"></td></tr>';
// Company
if (empty($conf->global->SOCIETE_DISABLE_CONTACTS))
@ -447,10 +448,10 @@ else
// Civility
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 '<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;
if ($conf->use_javascript_ajax && $socid > 0) $colspan=2;
@ -458,7 +459,7 @@ else
// 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
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)
{
@ -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->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 $formcompany->select_ziptown((isset($_POST["zipcode"])?$_POST["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("zipcode")?GETPOST("zipcode"):$object->zip),'zipcode',array('town','selectcountry_id','state_id'),6).'&nbsp;';
print $formcompany->select_ziptown((GETPOST("town")?GETPOST("town"):$object->town),'town',array('zipcode','selectcountry_id','state_id'));
print '</td></tr>';
// Country
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);
print '</td></tr>';
@ -491,7 +492,7 @@ else
print '<tr><td>'.$langs->trans('State').'</td><td colspan="'.$colspan.'" class="maxwidthonsmartphone">';
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
{
@ -502,19 +503,19 @@ else
// 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
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 '<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 '<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="'.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
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 '<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 '<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="'.dol_escape_htmltag(GETPOST("fax",'alpha')?GETPOST("fax",'alpha'):$object->fax).'"></td></tr>';
// 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
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))
{
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
{
@ -523,18 +524,18 @@ else
print '</tr>';
// 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
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
print '<tr><td>'.$langs->trans("ContactVisibility").'</td><td colspan="3">';
$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>';
// Other attributes

View File

@ -1099,18 +1099,14 @@ else
*/
$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
//print '<table class="notopnoleft allwidth">'; // Array with (n*2)+1 lines
$cursorline=1;
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 '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
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').'">';
// 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.= " 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="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>';
if ($conf->margin->enabled) {
if (! empty($usemargins))
{
print '<td align="right">';
if ($objp->fk_product)
print '<select id="fournprice" name="fournprice"></select>';
if ($objp->fk_product) 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 '<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
if ($object->statut > 0)
{
print '<table class="notopnoleft" width="100%">';
print '<table class="notopnoleftnoright tableforservicepart2" width="100%">';
print '<tr '.$bc[false].'>';
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 '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<table class="noborder" width="100%">';
//print '<tr class="liste_titre"><td colspan="5">'.$langs->trans("Status").'</td></tr>';
print '<table class="notopnoleftnoright" width="100%">';
// Definie date debut et fin par defaut
$dateactstart = $objp->date_debut;
@ -1540,15 +1535,8 @@ else
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++;
}
//print '</table>';
// Form to add new line
if ($user->rights->contrat->creer && ($object->statut >= 0))

View File

@ -110,7 +110,7 @@ abstract class CommonDocGenerator
'mycompany_web'=>$mysoc->url,
'mycompany_juridicalstatus'=>$mysoc->forme_juridique,
'mycompany_managers'=>$mysoc->managers,
'mycompany_capital'=>$mysoc->capital,
'mycompany_capital'=>$mysoc->capital,
'mycompany_barcode'=>$mysoc->barcode,
'mycompany_idprof1'=>$mysoc->idprof1,
'mycompany_idprof2'=>$mysoc->idprof2,
@ -254,24 +254,22 @@ abstract class CommonDocGenerator
);
// Retrieve extrafields
if (is_array($object->array_options) && count($object->array_options)) {
require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php';
$extrafields = new ExtraFields($this->db);
$extralabels = $extrafields->fetch_name_optionals_label('contact', true);
$object->fetch_optionals($object->id, $extralabels);
foreach($extrafields->attribute_label as $key => $label)
require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php';
$extrafields = new ExtraFields($this->db);
$extralabels = $extrafields->fetch_name_optionals_label('socpeople', true);
$object->fetch_optionals($object->id, $extralabels);
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);
}
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]));
$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($array_key.'_options_' . $key => $object->array_options['options_'. $key]));
}
return $array_contact;
}

View File

@ -53,6 +53,42 @@ abstract class CommonObject
// 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
*
@ -114,33 +150,6 @@ abstract class CommonObject
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
@ -1827,9 +1836,6 @@ abstract class CommonObject
else if ($objecttype == 'invoice_supplier' || $objecttype == 'order_supplier') {
$classpath = 'fourn/class'; $module = 'fournisseur';
}
else if ($objecttype == 'order_supplier') {
$classpath = 'fourn/class';
}
else if ($objecttype == 'fichinter') {
$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
* @return int Special code
@ -2721,7 +2727,7 @@ abstract class CommonObject
*/
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">';
@ -2760,11 +2766,11 @@ abstract class CommonObject
// Total HT
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 class="nowrap"></td>'; // No width to allow autodim
print '<td width="10"></td>';
print "</tr>\n";
@ -2819,7 +2825,7 @@ abstract class CommonObject
*/
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;
$element=$this->element;
@ -3091,7 +3097,8 @@ abstract class CommonObject
* @param string $force_price True of not
* @return mixed Array with info
*/
function getMarginInfos($force_price=false) {
function getMarginInfos($force_price=false)
{
global $conf;
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
* @return void
@ -3228,7 +3235,7 @@ abstract class CommonObject
$marginInfo = $this->getMarginInfos($force_price);
print '<table class="noborder" width="100%">';
print '<table class="nobordernopadding" width="100%">';
print '<tr class="liste_titre">';
print '<td width="30%">'.$langs->trans('Margins').'</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['margin_on_products'], null, null, null, null, $rounding).'</td>';
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))
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 class="pair">';
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['margin_on_services'], null, null, null, null, $rounding).'</td>';
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))
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 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['total_margin'], null, null, null, null, $rounding).'</td>';
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))
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 '</table>';
}

View File

@ -479,11 +479,11 @@ class FormOther
$numlines=count($lines);
for ($i = 0 ; $i < $numlines ; $i++)
{
if ($lines[$i]->fk_parent == $parent)
if ($lines[$i]->fk_parent == $parent)
{
$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
if ($parent == 0) // We are on a task at first level
@ -514,7 +514,7 @@ class FormOther
$newdisablechildoftaskid=$disablechildoftaskid;
// 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
$disabled=0;

View File

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

View File

@ -102,7 +102,7 @@ class Interfaces
if (in_array($modName,$modules))
{
$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;
}
else
@ -123,7 +123,7 @@ class Interfaces
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;
}
@ -148,7 +148,7 @@ class Interfaces
$objMod = new $modName($this->db);
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);
if ($result > 0)
@ -173,7 +173,7 @@ class Interfaces
}
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);
}
}
@ -270,7 +270,7 @@ class Interfaces
print 'Error: A trigger file was found but its class "'.$modName.'" was not found.'."<br>\n";
continue;
}
$objMod = new $modName($this->db);
// Define disabledbyname and disabledbymodule

View File

@ -48,7 +48,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
global $conf, $user, $langs, $db;
// 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="status" value="' . $status . '">';
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
if ($desc && ($desc != $label))
{
if ( $libelleproduitservice && empty($hidedesc) ) $libelleproduitservice.="\n";
if ($desc == '(CREDIT_NOTE)' && $line->fk_remise_except)
{
$discount=new DiscountAbsolute($db);
@ -83,18 +81,17 @@ function doc_getlinedesc($line,$outputlangs,$hideref=0,$hidedesc=0,$issupplierli
$discount->fetch($line->fk_remise_except);
$libelleproduitservice=$outputlangs->transnoentitiesnoconv("DiscountFromDeposit",$discount->ref_facture_source);
// 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
{
if ($idprod)
{
if (empty($hidedesc))
$libelleproduitservice.=$desc;
if (empty($hidedesc)) $libelleproduitservice=dol_concatdesc($libelleproduitservice, $desc);
}
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)).')';
}
//print '>'.$outputlangs->charset_output.','.$period;
$libelleproduitservice.="\n".$period;
$libelleproduitservice=dol_concatdesc($libelleproduitservice, $period);
//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 (!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;
}
@ -3433,13 +3433,13 @@ function picto_required()
* Clean a string from all HTML tags and entities
*
* @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
* @return string String cleaned
*/
function dol_string_nohtmltag($StringHtml,$removelinefeed=1,$pagecodeto='UTF-8')
{
$pattern = "/<[^>]+>/";
$pattern = "/<[^<>]+>/";
$temp = dol_html_entity_decode($StringHtml,ENT_COMPAT,$pagecodeto);
$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=dol_htmlentities($newstring,ENT_COMPAT,$pagecodefrom); // Make entity encoding
$newstring=strtr($newstring,array('__and__'=>'&','__lt__'=>'<','__gt__'=>'>','__dquot__'=>'"'));
//$newstring=strtr($newstring,array('__li__'=>"<li>\n")); // Restore <li>\n
}
else
{
@ -3551,7 +3550,7 @@ function dol_htmlcleanlastbr($stringtodecode)
* Replace html_entity_decode functions to manage errors
*
* @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
* @return string String decoded
*/
@ -3691,17 +3690,10 @@ function dol_textishtml($msg,$option=0)
{
if (preg_match('/<html/i',$msg)) return true;
elseif (preg_match('/<body/i',$msg)) return true;
elseif (preg_match('/<b>/i',$msg)) return true;
elseif (preg_match('/<br/i',$msg)) return true;
elseif (preg_match('/<div/i',$msg)) return true;
elseif (preg_match('/<em>/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('/<(b|em|i)>/i',$msg)) return true;
elseif (preg_match('/<(br|div|font|img|li|span|strong|table)>/i',$msg)) return true;
elseif (preg_match('/<(br|div|font|img|li|span|strong|table)\s+[^<>\/]*>/i',$msg)) return true;
elseif (preg_match('/<(br|div|font|img|li|span|strong|table)\s+[^<>\/]*\/>/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('/&#[0-9]{2,3};/i',$msg)) return true; // Html entities numbers (http://www.w3schools.com/tags/ref_entities.asp)
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 txt => text1 + '<br>' + dol_nl2br(text2)
* text1 txt + text2 html => dol_nl2br(text1) + '<br>' + text2

View File

@ -26,7 +26,7 @@
*
* @param string $url URL to call.
* @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 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...)

View File

@ -142,18 +142,24 @@ function task_prepare_head($object)
// $this->tabs = array('entity:-tabname); to remove a tab
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':'');;
/*$filesdir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($object->ref);
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$listoffiles=dol_dir_list($filesdir,'files',1);
$head[$h][1] = (count($listoffiles)?$langs->trans('DocumentsNb',count($listoffiles)):$langs->trans('Documents'));*/
$head[$h][1] = $langs->trans('Documents');
$head[$h][2] = 'task_document';
$h++;
if (empty($conf->global->MAIN_DISABLE_NOTES_TAB))
{
$nbNote = 0;
if(!empty($object->note_private)) $nbNote++;
if(!empty($object->note_public)) $nbNote++;
$head[$h][0] = DOL_URL_ROOT.'/projet/tasks/note.php?id='.$object->id.(GETPOST('withproject')?'&withproject=1':'');;
$head[$h][1] = $langs->trans('Notes');
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][1] = $langs->trans('Notes');
$head[$h][2] = 'task_notes';
$head[$h][0] = DOL_URL_ROOT.'/projet/tasks/document.php?id='.$object->id.(GETPOST('withproject')?'&withproject=1':'');;
$filesdir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($object->project->ref) . '/' .dol_sanitizeFileName($object->ref);
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++;
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.
*
* @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 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)
@ -123,12 +123,13 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
if ($dbt_select != 'rowid' && $dbt_select != 'id') $objectid = "'".$objectid."'";
// More features to check
$features = explode("&", $features);
// Features/modules to check
$featuresarray = array($features);
if (preg_match('/&/', $features)) $featuresarray = explode("&", $features);
else if (preg_match('/\|/', $features)) $featuresarray = explode("|", $features);
// More subfeatures to check
if (!empty($feature2))
$feature2 = explode("&", $feature2);
if (! empty($feature2)) $feature2 = explode("|", $feature2);
// More parameters
$params = explode('&', $dbtablename);
@ -138,106 +139,113 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
$listofmodules=explode(',',$conf->global->MAIN_MODULES_FOR_EXTERNAL);
// Check read permission from module
$readok=1;
foreach ($features as $feature)
$readok=1; $nbko=0;
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
{
$readok=0;
$readok=0; $nbko++;
continue;
}
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')
{
if (! $user->rights->societe->contact->lire) $readok=0;
if (! $user->rights->societe->contact->lire) { $readok=0; $nbko++; }
}
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')
{
if (! $user->rights->prelevement->bons->lire) $readok=0;
if (! $user->rights->prelevement->bons->lire) { $readok=0; $nbko++; }
}
else if ($feature == 'cheque')
{
if (! $user->rights->banque->cheque) $readok=0;
if (! $user->rights->banque->cheque) { $readok=0; $nbko++; }
}
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
{
foreach($feature2 as $subfeature)
{
if (empty($user->rights->$feature->$subfeature->lire) && empty($user->rights->$feature->$subfeature->read)) $readok=0;
else { $readok=1; break; } // For bypass the second test if the first is ok
if (! empty($subfeature) && empty($user->rights->$feature->$subfeature->lire) && empty($user->rights->$feature->$subfeature->read)) { $readok=0; $nbko++; }
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
{
if (empty($user->rights->$feature->lire)
&& 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();
//print "Read access is ok";
// Check write permission from module
$createok=1;
$createok=1; $nbko=0;
if (GETPOST("action") == 'create')
{
foreach ($features as $feature)
foreach ($featuresarray as $feature)
{
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')
{
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')
{
if (! $user->rights->prelevement->bons->creer) $createok=0;
if (! $user->rights->prelevement->bons->creer) { $createok=0; $nbko++; }
}
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')
{
if (! $user->rights->banque->modifier) $createok=0;
if (! $user->rights->banque->modifier) { $createok=0; $nbko++; }
}
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)
{
if (empty($user->rights->$feature->$subfeature->creer)
&& empty($user->rights->$feature->$subfeature->write)
&& empty($user->rights->$feature->$subfeature->create)) $createok=0;
else { $createok=1; break; } // For bypass the second test if the first is ok
&& empty($user->rights->$feature->$subfeature->create)) { $createok=0; $nbko++; }
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;
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();
//print "Write access is ok";
}
@ -253,10 +261,10 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
}
// Check delete permission from module
$deleteok=1;
$deleteok=1; $nbko=0;
if ((GETPOST("action") == 'confirm_delete' && GETPOST("confirm") == 'yes') || GETPOST("action") == 'delete')
{
foreach ($features as $feature)
foreach ($featuresarray as $feature)
{
if ($feature == 'contact')
{
@ -312,7 +320,7 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
// is linked to a company allowed to $user.
if (! empty($objectid) && $objectid > 0)
{
foreach ($features as $feature)
foreach ($featuresarray as $feature)
{
$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', 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
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', __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->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->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->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->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->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->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 && $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__);

View File

@ -797,42 +797,46 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
{
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
if (! empty($conf->salaries->enabled))
{
$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');
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/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->read);
$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_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_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->read);
}
// 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($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($conf->tax->enabled))
{
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');
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/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/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/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"))
$newmenu->add("/compta/sociales/index.php?leftmenu=tax_social",$langs->trans("MenuSocialContributions"),1,$user->rights->tax->charges->lire);
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_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);
// VAT
if (empty($conf->global->TAX_DISABLE_VAT_MENUS))
{
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);
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/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/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);
$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_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_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_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_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

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';
$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
//--------
@ -239,15 +265,15 @@ class modProduct extends DolibarrModules
if (! empty($conf->fournisseur->enabled))
{
// Import product suppliers
// Import suppliers prices (note: this code is duplicated into module service)
$r++;
$this->import_code[$r]=$this->rights_class.'_'.$r;
$this->import_label[$r]="SuppliersPrices"; // Translation key
$this->import_icon[$r]='product';
$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'=>"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.price'=>"PriceQtyMinHT*",
'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)) {
// 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).')';
// 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');
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

@ -1,9 +1,10 @@
<?php
/* 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 Benoit Mortier <benoit.mortier@opensides.be>
* 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
* 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] = '';
$r++;
$this->rights[$r][0] = 511;
$this->rights[$r][0] = 512;
$this->rights[$r][1] = 'Create/modify salaries';
$this->rights[$r][2] = 'w';
$this->rights[$r][3] = 0;
$this->rights[$r][4] = 'create';
$this->rights[$r][4] = 'write';
$this->rights[$r][5] = '';
$r++;
$this->rights[$r][0] = 512;
$this->rights[$r][0] = 514;
$this->rights[$r][1] = 'Delete salaries';
$this->rights[$r][2] = 'd';
$this->rights[$r][3] = 0;
@ -109,7 +110,7 @@ class modSalaries extends DolibarrModules
$this->rights[$r][5] = '';
$r++;
$this->rights[$r][0] = 515;
$this->rights[$r][0] = 517;
$this->rights[$r][1] = 'Export salaries';
$this->rights[$r][2] = 'r';
$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).')';
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
//--------
$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_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');
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)
{
$res_contact = $contactstatic->fetch($contact_id);
//$contact['fullname']=$objectdetail->getFullName($outputlangs,1);
$tmparray=$this->get_substitutionarray_contact($contactstatic,$outputlangs,'contact');
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
$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
if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARGIN_RATES)) $colspan++;
if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARK_RATES)) $colspan++;
if (in_array($object->element,array('propal','facture','invoice','commande','order'))) $colspan++; // With this, there is a column move button
?>
<!-- BEGIN PHP TEMPLATE objectline_create.tpl.php -->
@ -72,8 +70,8 @@ if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARK_RATES))
?>
</td>
<?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_MARK_RATES)) echo '<td align="right">'.$langs->trans('MarkRate').'</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"><span class="np_markRate">'.$langs->trans('MarkRate').'</span></td>';
}
?>
<td colspan="<?php echo $colspan; ?>">&nbsp;</td>
@ -226,12 +224,12 @@ else {
{
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++;
}
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++;
}
}
@ -246,7 +244,7 @@ else {
<input type="submit" class="button" value="<?php echo $langs->trans('Add'); ?>" name="addline" id="addline">
</td>
<?php
//Line extrafield
// Line extrafield
if (!empty($extrafieldsline)) {
if ($this->table_element_line=='commandedet') {
$newline = new OrderLine($this->db);
@ -344,6 +342,7 @@ if (! empty($usemargins) && $user->rights->margins->creer)
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")); ?>');
@ -362,14 +361,16 @@ if (! empty($usemargins) && $user->rights->margins->creer)
var price = 0;
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());
ratejs=price2numjs(rate.val());
if (npRate == "marginRate")
if (npRate == "np_marginRate")
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));
}
$("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 price2numjs(num)
{
if (num == '') return '';
<?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";
print "var dec='".$dec."'; var thousand='".$thousand."';\n"; // Set var in javascript
?>
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_up_ht").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() {
jQuery("#select_type").val(-1);
@ -509,6 +515,10 @@ function setforpredef() {
jQuery("#title_vat").hide();
jQuery("#title_up_ht").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>

View File

@ -17,14 +17,31 @@
* 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:
* $object (invoice, order, ...)
* $conf
* $langs
* $dateSelector
* $this (invoice, order, ...)
* $line defined
* $forceall (0 by default, 1 for supplier invoices/orders)
* $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 -->
@ -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="special_code" name="special_code" value="<?php echo $line->special_code; ?>">
<?php
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) { ?>
<?php if ($line->fk_product > 0) { ?>
<a href="<?php echo DOL_URL_ROOT.'/product/fiche.php?id='.$line->fk_product; ?>">
<?php
@ -126,9 +121,16 @@ $coldisplay=-1; // We remove first td
<?php } ?>
</td>
<?php if (! empty($conf->margin->enabled)) { ?>
<?php
if (! empty($usemargins))
{
?>
<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); ?>">
</td>
<?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 -->
<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="cancellinebutton" name="cancel" value="<?php echo $langs->trans("Cancel"); ?>">
</td>
@ -185,193 +187,6 @@ $coldisplay=-1; // We remove first td
<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
if (! empty($conf->margin->enabled))
{
@ -499,12 +314,13 @@ if (! empty($conf->margin->enabled))
/* Function similar to price2num in PHP */
function price2numjs(num)
{
if (num == '') return '';
<?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";
print "var dec='".$dec."'; var thousand='".$thousand."';\n"; // Set var in javascript
?>
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);
// Check parameters
if (! is_numeric($this->duree)) {
$this->duree = 0;
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 (! is_numeric($this->duree)) $this->duree = 0;
if ($this->socid <= 0)
{
$this->error='ErrorBadParameterForFunc';
dol_syslog(get_class($this)."::create ".$this->error,LOG_ERR);
return -1;
}
// on verifie si la ref n'est pas utilisee
$soc = new Societe($this->db);
$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();

View File

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

View File

@ -352,10 +352,13 @@ if ($step == 1 || ! $datatoimport)
{
foreach ($objimport->array_import_code as $key => $value)
{
//var_dump($objimport->array_import_code[$key]);
$val=!$val;
print '<tr '.$bc[$val].'><td nospan="nospan">';
//print img_object($objimport->array_import_module[$key]->getName(),$import->array_import_module[$key]->picto).' ';
print $objimport->array_import_module[$key]->getName();
$titleofmodule=$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 $value;
print img_object($objimport->array_import_module[$key]->getName(),$objimport->array_import_icon[$key]).' ';
@ -407,8 +410,10 @@ if ($step == 2 && $datatoimport)
// Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>';
//print img_object($objimport->array_import_module[0]->getName(),$objimport->array_import_module[0]->picto).' ';
print $objimport->array_import_module[0]->getName();
$titleofmodule=$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>';
// Lot de donnees a importer
@ -490,8 +495,10 @@ if ($step == 3 && $datatoimport)
// Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>';
//print img_object($objimport->array_import_module[0]->getName(),$objimport->array_import_module[0]->picto).' ';
print $objimport->array_import_module[0]->getName();
$titleofmodule=$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>';
// Lot de donnees a importer
@ -695,8 +702,10 @@ if ($step == 4 && $datatoimport)
// Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>';
//print img_object($objimport->array_import_module[0]->getName(),$objimport->array_import_module[0]->picto).' ';
print $objimport->array_import_module[0]->getName();
$titleofmodule=$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>';
// Lot de donnees a importer
@ -1144,8 +1153,10 @@ if ($step == 5 && $datatoimport)
// Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>';
//print img_object($objimport->array_import_module[0]->getName(),$objimport->array_import_module[0]->picto).' ';
print $objimport->array_import_module[0]->getName();
$titleofmodule=$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>';
// Lot de donnees a importer
@ -1487,8 +1498,10 @@ if ($step == 6 && $datatoimport)
// Module
print '<tr><td width="25%">'.$langs->trans("Module").'</td>';
print '<td>';
//print img_object($objimport->array_import_module[0]->getName(),$objimport->array_import_module[0]->picto).' ';
print $objimport->array_import_module[0]->getName();
$titleofmodule=$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>';
// 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) {
throw new SegmentException("var $key not found in {$this->getName()}");
}
$value=$this->odf->htmlToUTFAndPreOdf($value);
$value = $encode ? htmlspecialchars($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;
}
/**

View File

@ -122,12 +122,68 @@ class Odf
throw new OdfException("var $key not found in the document");
//}
}
$value=$this->htmlToUTFAndPreOdf($value);
$value = $encode ? htmlspecialchars($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;
}
/**
* 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
*
@ -422,25 +478,25 @@ IMG;
public function exportAsAttachedPDF($name="")
{
global $conf;
if( $name == "" ) $name = md5(uniqid());
dol_syslog(get_class($this).'::exportAsAttachedPDF $name='.$name, LOG_DEBUG);
$this->saveToDisk($name);
$execmethod=(empty($conf->global->MAIN_EXEC_USE_POPEN)?1:2); // 1 or 2
$name=str_replace('.odt', '', $name);
if (!empty($conf->global->MAIN_DOL_SCRIPTS_ROOT)) {
$command = $conf->global->MAIN_DOL_SCRIPTS_ROOT.'/scripts/odt2pdf/odt2pdf.sh '.$name;
}else {
$command = '../../scripts/odt2pdf/odt2pdf.sh '.$name;
}
//$dirname=dirname($name);
//$command = DOL_DOCUMENT_ROOT.'/includes/odtphp/odt2pdf.sh '.$name.' '.$dirname;
dol_syslog(get_class($this).'::exportAsAttachedPDF $execmethod='.$execmethod.' Run command='.$command,LOG_DEBUG);
if ($execmethod == 1)
{
@ -483,7 +539,7 @@ IMG;
} else {
dol_syslog(get_class($this).'::exportAsAttachedPDF $ret_val='.$retval, LOG_DEBUG);
dol_syslog(get_class($this).'::exportAsAttachedPDF $output_arr='.var_export($output_arr,true), LOG_DEBUG);
if ($retval==126) {
throw new OdfException('Permission execute convert script : ' . $command);
}

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 :
HolidaysCanceled=Canceled holidays
HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20001=Read/create/modify their holidays
Permission20002=Read/modify all requests of holidays
Permission20003=Delete their holidays requests
Permission20004=Define users holidays
Permission20000=Read you own holidays
Permission20001=Create/modify your holidays
Permission20002=Create/modify holidays for everybody
Permission20003=Delete holidays requests
Permission20004=Setup users 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=قد تكون لديكم مطبوعة خاطئة قيمة معلمة '٪ ق.
ErrorFailedToCreateDatabase=فشل إنشاء قاعدة بيانات '٪ ق.
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 نسخة قديمة جدا. النسخة ٪ ق هو مطلوب.
WarningPHPVersionTooLow=PHP نسخة قديمة جدا. ومن المتوقع %s نسخة أو أكثر. وينبغي أن تسمح هذه النسخة تثبيت ولكن لم يتم اعتماد.
ErrorConnectedButDatabaseNotFound=خادم الصدد الى قاعدة البيانات ولكن النجاح في '٪ ق' لم يتم العثور عليه.
ErrorDatabaseAlreadyExists=قاعدة البيانات '٪ ق' موجود بالفعل.
IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كان لا وجود قاعدة بيانات ، والتأكد من العودة الخيار "إنشاء قاعدة بيانات".
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 الإصدار
YouCanContinue=يمكنك الاستمرار...
PleaseBePatient=يرجى التحلي بالصبر...
@ -154,11 +154,10 @@ MigrationShippingDelivery2=ترقية تخزين الشحن 2
MigrationFinished=الانتهاء من الهجرة
LastStepDesc=<strong>الخطوة الأخيرة</strong> : تعريف المستخدم وكلمة السر هنا كنت تخطط لاستخدامها للاتصال البرمجيات. لا تفقد هذا كما هو حساب لإدارة جميع الآخرين.
ActivateModule=تفعيل وحدة %s
# ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
#########
# upgrade
#########
MigrationFixData=إصلاح البيانات الذي لم تتم تسويته
MigrationOrder=بيانات الهجرة طلبات الزبائن
MigrationSupplierOrder=بيانات الهجرة من أجل الموردين أوامر
@ -206,4 +205,7 @@ MigrationProjectUserResp=بيانات fk_user_resp مجال الهجرة من ll
MigrationProjectTaskTime=تحديث الوقت الذي يقضيه في ثوان
MigrationActioncommElement=تحديث البيانات على الإجراءات
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 :
HolidaysCanceled=Canceled holidays
HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20001=/ Промяна на всички искания празници
Permission20002=Read/modify all requests of holidays
Permission20003=Delete their holidays requests
Permission20004=Define users holidays
Permission20000=Read you own holidays
Permission20001=Create/modify your holidays
Permission20002=Create/modify holidays for everybody
Permission20003=Delete holidays requests
Permission20004=Setup users 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=Актуализиране на данни за действия
MigrationPaymentMode=Миграция на данни за плащане режим
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.
InfosCP=Informacije o zahtjevu za odmor
InfosWorkflowCP=Workflow informacija
DateCreateCP=Datum kreiranja
RequestByCP=Zahtjev poslao
TitreRequestCP=Lista godišnjih 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.
nbJours=Broj dana
TitleAdminCP=Konfiguracija godišnjih odmora
#Messages
Hello=Zdravo
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:
HolidaysCanceled=Poništeni godišnji odmori
HolidaysCanceledBody=Vaš zahtjev za godišnji odmor od %s fo %s je poništen.
Permission20001=Pročitaj/kreiraj/izmijeni njigove godišnje odmore
Permission20002=Pročitaj/kreiraj/izmijeni sve zahtjeve za godišnje odmore
Permission20003=Obriši njihove zahtjeve za godišnje odmore
Permission20004=Definiši korisnikove godišnje odmore
Permission20000=Read you own holidays
Permission20001=Create/modify your holidays
Permission20002=Create/modify holidays for everybody
Permission20003=Delete holidays requests
Permission20004=Setup users holidays
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
# InstallEasy=Just follow the instructions step by step.
# MiscellaneousChecks=Prerequisites check
# DolibarrWelcome=Welcome to Dolibarr
# ConfFileExists=Configuration file <b>%s</b> exists.
# ConfFileDoesNotExists=Configuration file <b>%s</b> does not exist !
# ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file <b>%s</b> does not exist and could not 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).
# ConfFileIsWritable=Configuration file <b>%s</b> is writable.
# ConfFileReload=Reload all information from configuration file.
# PHPSupportSessions=This PHP supports sessions.
# 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.
# PHPSupportGD=This PHP support GD graphical functions.
# PHPSupportUTF8=This PHP support UTF8 functions.
# 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.
# 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.
# 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.
# ErrorDirDoesNotExists=Directory %s does not exist.
# ErrorGoBackAndCorrectParameters=Go backward and correct wrong parameters.
# ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'.
# ErrorFailedToCreateDatabase=Failed to create database '%s'.
# ErrorFailedToConnectToDatabase=Failed to connect to database '%s'.
# ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher 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.
# ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found.
# ErrorDatabaseAlreadyExists=Database '%s' already exists.
# 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.
# WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded.
# PHPVersion=PHP Version
# YouCanContinue=You can continue...
# PleaseBePatient=Please be patient...
# License=Using license
# ConfigurationFile=Configuration file
# WebPagesDirectory=Directory where web pages are stored
# DocumentsDirectory=Directory to store uploaded and generated documents
# URLRoot=URL Root
# 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.
# DolibarrDatabase=Dolibarr Database
# DatabaseChoice=Database choice
# DatabaseType=Database type
# DriverType=Driver type
# Server=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.
# DatabaseServer=Database server
# DatabaseName=Database name
# DatabasePrefix=Database prefix table
# Login=Login
# AdminLogin=Login for Dolibarr database owner.
# Password=Password
# PasswordAgain=Retype password a second time
# AdminPassword=Password for Dolibarr database owner.
# CreateDatabase=Create database
# CreateUser=Create owner
# 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.
# 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)
# 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)
# SaveConfigurationFile=Save values
# ConfigurationSaving=Saving configuration file
# ServerConnection=Server connection
# DatabaseConnection=Database connection
# DatabaseCreation=Database creation
# UserCreation=User creation
# CreateDatabaseObjects=Database objects creation
# ReferenceDataLoading=Reference data loading
# TablesAndPrimaryKeysCreation=Tables and Primary keys creation
# CreateTableAndPrimaryKey=Create table %s
# CreateOtherKeysForTable=Create foreign keys and indexes for table %s
# OtherKeysCreation=Foreign keys and indexes creation
# FunctionsCreation=Functions creation
# AdminAccountCreation=Administrator login creation
# PleaseTypePassword=Please type a password, empty passwords are not allowed !
# PleaseTypeALogin=Please type a login !
# PasswordsMismatch=Passwords differs, please try again !
# SetupEnd=End of setup
# SystemIsInstalled=This installation is complete.
# 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:
# AdminLoginCreatedSuccessfuly=Dolibarr administrator login '<b>%s</b>' created successfuly.
# GoToDolibarr=Go to Dolibarr
# 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.
# GoToUpgradePage=Go to upgrade page again
# Examples=Examples
# WithNoSlashAtTheEnd=Without the slash "/" at the end
# DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages.
# LoginAlreadyExists=Already exists
# DolibarrAdminLogin=Dolibarr admin login
# 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.
# ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s
# FunctionNotAvailableInThisPHP=Not available on this PHP
# MigrateScript=Migration script
# ChoosedMigrateScript=Choose migration script
# DataMigration=Data migration
# DatabaseMigration=Structure database migration
# ProcessMigrateScript=Script processing
# ChooseYourSetupMode=Choose your setup mode and click "Start"...
# 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.
# 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.
# Start=Start
# InstallNotAllowed=Setup not allowed by <b>conf.php</b> permissions
# NotAvailable=Not available
# 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.
# AlreadyDone=Already migrated
# DatabaseVersion=Database version
# ServerVersion=Database server version
# YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it.
# CharsetChoice=Character set choice
# 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.
# 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.
# CharacterSetDatabase=Character set for database
# 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.
# 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.
# OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s
# 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.
# 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.
# 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
# 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.
# InstallChoiceRecommanded=Recommended choice to install version <b>%s</b> from your current version <b>%s</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.
# 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".
# OpenBaseDir=PHP openbasedir parameter
# 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).
# 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
# MigrationShippingDelivery=Upgrade storage of shipping
# MigrationShippingDelivery2=Upgrade storage of shipping 2
# 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.
# ActivateModule=Activate module %s
# ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
InstallEasy=Just follow the instructions step by step.
MiscellaneousChecks=Prerequisites check
DolibarrWelcome=Welcome to Dolibarr
ConfFileExists=Configuration file <b>%s</b> exists.
ConfFileDoesNotExists=Configuration file <b>%s</b> does not exist !
ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file <b>%s</b> does not exist and could not 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).
ConfFileIsWritable=Configuration file <b>%s</b> is writable.
ConfFileReload=Reload all information from configuration file.
PHPSupportSessions=This PHP supports sessions.
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.
PHPSupportGD=This PHP support GD graphical functions.
PHPSupportUTF8=This PHP support UTF8 functions.
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.
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.
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.
ErrorDirDoesNotExists=Directory %s does not exist.
ErrorGoBackAndCorrectParameters=Go backward and correct wrong parameters.
ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'.
ErrorFailedToCreateDatabase=Failed to create database '%s'.
ErrorFailedToConnectToDatabase=Failed to connect to database '%s'.
ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher 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.
ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found.
ErrorDatabaseAlreadyExists=Database '%s' already exists.
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.
WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded.
PHPVersion=PHP Version
YouCanContinue=You can continue...
PleaseBePatient=Please be patient...
License=Using license
ConfigurationFile=Configuration file
WebPagesDirectory=Directory where web pages are stored
DocumentsDirectory=Directory to store uploaded and generated documents
URLRoot=URL Root
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.
DolibarrDatabase=Dolibarr Database
DatabaseChoice=Database choice
DatabaseType=Database type
DriverType=Driver type
Server=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.
DatabaseServer=Database server
DatabaseName=Database name
DatabasePrefix=Database prefix table
Login=Login
AdminLogin=Login for Dolibarr database owner.
Password=Password
PasswordAgain=Retype password a second time
AdminPassword=Password for Dolibarr database owner.
CreateDatabase=Create database
CreateUser=Create owner
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.
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)
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)
SaveConfigurationFile=Save values
ConfigurationSaving=Saving configuration file
ServerConnection=Server connection
DatabaseConnection=Database connection
DatabaseCreation=Database creation
UserCreation=User creation
CreateDatabaseObjects=Database objects creation
ReferenceDataLoading=Reference data loading
TablesAndPrimaryKeysCreation=Tables and Primary keys creation
CreateTableAndPrimaryKey=Create table %s
CreateOtherKeysForTable=Create foreign keys and indexes for table %s
OtherKeysCreation=Foreign keys and indexes creation
FunctionsCreation=Functions creation
AdminAccountCreation=Administrator login creation
PleaseTypePassword=Please type a password, empty passwords are not allowed !
PleaseTypeALogin=Please type a login !
PasswordsMismatch=Passwords differs, please try again !
SetupEnd=End of setup
SystemIsInstalled=This installation is complete.
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:
AdminLoginCreatedSuccessfuly=Dolibarr administrator login '<b>%s</b>' created successfuly.
GoToDolibarr=Go to Dolibarr
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.
GoToUpgradePage=Go to upgrade page again
Examples=Examples
WithNoSlashAtTheEnd=Without the slash "/" at the end
DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages.
LoginAlreadyExists=Already exists
DolibarrAdminLogin=Dolibarr admin login
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.
ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s
FunctionNotAvailableInThisPHP=Not available on this PHP
MigrateScript=Migration script
ChoosedMigrateScript=Choose migration script
DataMigration=Data migration
DatabaseMigration=Structure database migration
ProcessMigrateScript=Script processing
ChooseYourSetupMode=Choose your setup mode and click "Start"...
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.
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.
Start=Start
InstallNotAllowed=Setup not allowed by <b>conf.php</b> permissions
NotAvailable=Not available
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.
AlreadyDone=Already migrated
DatabaseVersion=Database version
ServerVersion=Database server version
YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it.
CharsetChoice=Character set choice
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.
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.
CharacterSetDatabase=Character set for database
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.
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.
OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s
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.
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.
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
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.
InstallChoiceRecommanded=Recommended choice to install version <b>%s</b> from your current version <b>%s</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.
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".
OpenBaseDir=PHP openbasedir parameter
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).
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
MigrationShippingDelivery=Upgrade storage of shipping
MigrationShippingDelivery2=Upgrade storage of shipping 2
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.
ActivateModule=Activate module %s
ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
#########
# upgrade
#########
# MigrationFixData=Fix for denormalized data
# MigrationOrder=Data migration for customer's orders
# MigrationSupplierOrder=Data migration for supplier's orders
# MigrationProposal=Data migration for commercial proposals
# MigrationInvoice=Data migration for customer's invoices
# MigrationContract=Data migration for contracts
# MigrationSuccessfullUpdate=Upgrade successful
# MigrationUpdateFailed=Failed upgrade process
# MigrationRelationshipTables=Data migration for relationship tables (%s)
# MigrationPaymentsUpdate=Payment data correction
# MigrationPaymentsNumberToUpdate=%s payment(s) to update
# MigrationProcessPaymentUpdate=Update payment(s) %s
# MigrationPaymentsNothingToUpdate=No more things to do
# MigrationPaymentsNothingUpdatable=No more payments that can be corrected
# MigrationContractsUpdate=Contract data correction
# MigrationContractsNumberToUpdate=%s contract(s) to update
# MigrationContractsLineCreation=Create contract line for contract ref %s
# MigrationContractsNothingToUpdate=No more things to do
# MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do.
# MigrationContractsEmptyDatesUpdate=Contract empty date correction
# MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly
# MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct
# MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct
# MigrationContractsInvalidDatesUpdate=Bad value date contract correction
# MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s)
# MigrationContractsInvalidDatesNumber=%s contracts modified
# MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct
# MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction
# MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly
# MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct
# MigrationReopeningContracts=Open contract closed by error
# MigrationReopenThisContract=Reopen contract %s
# MigrationReopenedContractsNumber=%s contracts modified
# MigrationReopeningContractsNothingToUpdate=No closed contract to open
# MigrationBankTransfertsUpdate=Update links between bank transaction and a bank transfer
# MigrationBankTransfertsNothingToUpdate=All links are up to date
# MigrationShipmentOrderMatching=Sendings receipt update
# MigrationDeliveryOrderMatching=Delivery receipt update
# MigrationDeliveryDetail=Delivery update
# MigrationStockDetail=Update stock value of products
# MigrationMenusDetail=Update dynamic menus tables
# MigrationDeliveryAddress=Update delivery address in shipments
# MigrationProjectTaskActors=Data migration for llx_projet_task_actors table
# MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact
# MigrationProjectTaskTime=Update time spent in seconds
# MigrationActioncommElement=Update data on actions
# MigrationPaymentMode=Data migration for payment mode
# MigrationCategorieAssociation=Migration of categories
MigrationFixData=Fix for denormalized data
MigrationOrder=Data migration for customer's orders
MigrationSupplierOrder=Data migration for supplier's orders
MigrationProposal=Data migration for commercial proposals
MigrationInvoice=Data migration for customer's invoices
MigrationContract=Data migration for contracts
MigrationSuccessfullUpdate=Upgrade successful
MigrationUpdateFailed=Failed upgrade process
MigrationRelationshipTables=Data migration for relationship tables (%s)
MigrationPaymentsUpdate=Payment data correction
MigrationPaymentsNumberToUpdate=%s payment(s) to update
MigrationProcessPaymentUpdate=Update payment(s) %s
MigrationPaymentsNothingToUpdate=No more things to do
MigrationPaymentsNothingUpdatable=No more payments that can be corrected
MigrationContractsUpdate=Contract data correction
MigrationContractsNumberToUpdate=%s contract(s) to update
MigrationContractsLineCreation=Create contract line for contract ref %s
MigrationContractsNothingToUpdate=No more things to do
MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do.
MigrationContractsEmptyDatesUpdate=Contract empty date correction
MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly
MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct
MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct
MigrationContractsInvalidDatesUpdate=Bad value date contract correction
MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s)
MigrationContractsInvalidDatesNumber=%s contracts modified
MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct
MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction
MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly
MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct
MigrationReopeningContracts=Open contract closed by error
MigrationReopenThisContract=Reopen contract %s
MigrationReopenedContractsNumber=%s contracts modified
MigrationReopeningContractsNothingToUpdate=No closed contract to open
MigrationBankTransfertsUpdate=Update links between bank transaction and a bank transfer
MigrationBankTransfertsNothingToUpdate=All links are up to date
MigrationShipmentOrderMatching=Sendings receipt update
MigrationDeliveryOrderMatching=Delivery receipt update
MigrationDeliveryDetail=Delivery update
MigrationStockDetail=Update stock value of products
MigrationMenusDetail=Update dynamic menus tables
MigrationDeliveryAddress=Update delivery address in shipments
MigrationProjectTaskActors=Data migration for llx_projet_task_actors table
MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact
MigrationProjectTaskTime=Update time spent in seconds
MigrationActioncommElement=Update data on actions
MigrationPaymentMode=Data migration for payment mode
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.
InfosCP=Informació de la petició de vacances
InfosWorkflowCP=Informació del workflow
DateCreateCP=Data de creació
RequestByCP=Comandada per
TitreRequestCP=Fitxa vacances
NbUseDaysCP=Nombre de dies de vacances consumits
@ -87,7 +86,7 @@ FirstDayOfHoliday=Primer dia lliure
LastDayOfHoliday=Últim dí lliure
HolidaysMonthlyUpdate=Actualització mensual
ManualUpdate=Actualització manual
# HolidaysCancelation=Holidays cancelation
HolidaysCancelation=Holidays cancelation
## Configuration du Module ##
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.
nbJours=Número de dies
TitleAdminCP=Configuració de les vacances
#Messages
Hello=Hola
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:
HolidaysCanceled=Dies retribuïts cancel·lats
HolidaysCanceledBody=La seva sol·licitud de dies retribuïts des de %s al %s ha estat cancel·lada.
Permission20001=Consultar/crear/modificar les seves vacances
Permission20002=Consultar/modificar totes les sol·licituds de permisos retribuïts
Permission20003=Eliminar les sol·licituds de permisos retribuïts
Permission20004=Definir els permisos retribuïts dels usuaris
Permission20000=Read you own holidays
Permission20001=Create/modify your holidays
Permission20002=Create/modify holidays for everybody
Permission20003=Delete holidays requests
Permission20004=Setup users holidays
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
#########
MigrationFixData=Correcció de dades desnormalitzades
MigrationOrder=Migració de dades de les comandes clients
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
MigrationPaymentMode=Actualització de les formes de pagament
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.
InfosCP=Informace o poptávce po prázdninách
InfosWorkflowCP=Informace Workflow
DateCreateCP=Datum vytvoření
RequestByCP=Žádost
TitreRequestCP=List dovolenou
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.
nbJours=Počet dní
TitleAdminCP=Konfigurace svátky
#Messages
Hello=Ahoj
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ů:
HolidaysCanceled=Zrušené svátky
HolidaysCanceledBody=Vaše žádost o dovolenou pro %s na %s byla zrušena.
Permission20001=Čtení / zápis / přepis jejich svátky
Permission20002=Přečtěte si / upravit všechny žádosti dovolenou
Permission20003=Odstranit svou dovolenou žádosti
Permission20004=Definujte uživatelům dovolenou
Permission20000=Read you own holidays
Permission20001=Create/modify your holidays
Permission20002=Create/modify holidays for everybody
Permission20003=Delete holidays requests
Permission20004=Setup users holidays
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
MigrationPaymentMode=Migrace dat platebního režimu
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
# HRM=HRM
# Holidays=Holidays
# CPTitreMenu=Holidays
# MenuReportMonth=Monthly statement
# MenuAddCP=Apply for holidays
# 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>.
# NoCPforUser=You don't have a demand for holidays.
# AddCP=Apply for holidays
# CPErrorSQL=An SQL error occurred:
# Employe=Employee
HRM=HRM
Holidays=Holidays
CPTitreMenu=Holidays
MenuReportMonth=Monthly statement
MenuAddCP=Apply for holidays
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>.
NoCPforUser=You don't have a demand for holidays.
AddCP=Apply for holidays
CPErrorSQL=An SQL error occurred:
Employe=Employee
DateDebCP=Startdato
DateFinCP=Slutdato
DateCreateCP=Lavet dato
DraftCP=Udkast til
# ToReviewCP=Awaiting approval
ToReviewCP=Awaiting approval
ApprovedCP=Godkendt
CancelCP=Aflyst
RefuseCP=Afviste
# ValidatorCP=Approbator
# ListeCP=List of holidays
# ReviewedByCP=Will be reviewed by
ValidatorCP=Approbator
ListeCP=List of holidays
ReviewedByCP=Will be reviewed by
DescCP=Beskrivelse
# SendRequestCP=Creating demand for holidays
# DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
# MenuConfCP=Edit balance of holidays
# UpdateAllCP=Update the holidays
# SoldeCPUser=Holidays balance is <b>%s</b> days.
# ErrorEndDateCP=You must select an end date greater than the start date.
# ErrorSQLCreateCP=An SQL error occurred during the creation:
# ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.
# ReturnCP=Return to previous page
# ErrorUserViewCP=You are not authorized to read this request for holidays.
# InfosCP=Information of the demand of holidays
# InfosWorkflowCP=Information Workflow
DateCreateCP=Lavet dato
# RequestByCP=Requested by
# TitreRequestCP=Sheet of holidays
# NbUseDaysCP=Number of days of holidays consumed
SendRequestCP=Creating demand for holidays
DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
MenuConfCP=Edit balance of holidays
UpdateAllCP=Update the holidays
SoldeCPUser=Holidays balance is <b>%s</b> days.
ErrorEndDateCP=You must select an end date greater than the start date.
ErrorSQLCreateCP=An SQL error occurred during the creation:
ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.
ReturnCP=Return to previous page
ErrorUserViewCP=You are not authorized to read this request for holidays.
InfosCP=Information of the demand of holidays
InfosWorkflowCP=Information Workflow
RequestByCP=Requested by
TitreRequestCP=Sheet of holidays
NbUseDaysCP=Number of days of holidays consumed
EditCP=Redigér
DeleteCP=Slet
ActionValidCP=Validate
# ActionRefuseCP=Refuse
ActionRefuseCP=Refuse
ActionCancelCP=Annuller
StatutCP=Status
# SendToValidationCP=Send to validation
# TitleDeleteCP=Delete the request of holidays
# ConfirmDeleteCP=Confirm the deletion of this request for holidays?
# ErrorCantDeleteCP=Error you don't have the right to delete this holiday request.
# CantCreateCP=You don't have the right to apply for holidays.
# InvalidValidatorCP=You must choose an approbator to your holiday request.
SendToValidationCP=Send to validation
TitleDeleteCP=Delete the request of holidays
ConfirmDeleteCP=Confirm the deletion of this request for holidays?
ErrorCantDeleteCP=Error you don't have the right to delete this holiday request.
CantCreateCP=You don't have the right to apply for holidays.
InvalidValidatorCP=You must choose an approbator to your holiday request.
UpdateButtonCP=Opdatering
# CantUpdate=You cannot update this request of holidays.
# NoDateDebut=You must select a start date.
# NoDateFin=You must select an end date.
# ErrorDureeCP=Your request for holidays does not contain working day.
# TitleValidCP=Approve the request holidays
# ConfirmValidCP=Are you sure you want to approve the holiday request?
# DateValidCP=Date approved
# TitleToValidCP=Send request holidays
# ConfirmToValidCP=Are you sure you want to send the request of holidays?
# TitleRefuseCP=Refuse the request holidays
# ConfirmRefuseCP=Are you sure you want to refuse the request of holidays?
# NoMotifRefuseCP=You must choose a reason for refusing the request.
# TitleCancelCP=Cancel the request holidays
# ConfirmCancelCP=Are you sure you want to cancel the request of holidays?
# DetailRefusCP=Reason for refusal
# DateRefusCP=Date of refusal
# DateCancelCP=Date of cancellation
# DefineEventUserCP=Assign an exceptional leave for a user
# addEventToUserCP=Assign leave
CantUpdate=You cannot update this request of holidays.
NoDateDebut=You must select a start date.
NoDateFin=You must select an end date.
ErrorDureeCP=Your request for holidays does not contain working day.
TitleValidCP=Approve the request holidays
ConfirmValidCP=Are you sure you want to approve the holiday request?
DateValidCP=Date approved
TitleToValidCP=Send request holidays
ConfirmToValidCP=Are you sure you want to send the request of holidays?
TitleRefuseCP=Refuse the request holidays
ConfirmRefuseCP=Are you sure you want to refuse the request of holidays?
NoMotifRefuseCP=You must choose a reason for refusing the request.
TitleCancelCP=Cancel the request holidays
ConfirmCancelCP=Are you sure you want to cancel the request of holidays?
DetailRefusCP=Reason for refusal
DateRefusCP=Date of refusal
DateCancelCP=Date of cancellation
DefineEventUserCP=Assign an exceptional leave for a user
addEventToUserCP=Assign leave
MotifCP=Årsag
UserCP=Bruger
# ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
# AddEventToUserOkCP=The addition of the exceptional leave has been completed.
# MenuLogCP=View logs of holidays
# LogCP=Log of updates of holidays
# ActionByCP=Performed by
# UserUpdateCP=For the user
# PrevSoldeCP=Previous Balance
# NewSoldeCP=New Balance
# alreadyCPexist=A request for holidays has already been done on this period.
ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
AddEventToUserOkCP=The addition of the exceptional leave has been completed.
MenuLogCP=View logs of holidays
LogCP=Log of updates of holidays
ActionByCP=Performed by
UserUpdateCP=For the user
PrevSoldeCP=Previous Balance
NewSoldeCP=New Balance
alreadyCPexist=A request for holidays has already been done on this period.
UserName=Navn
# Employee=Employee
# FirstDayOfHoliday=First day of holiday
# LastDayOfHoliday=Last day of holiday
# HolidaysMonthlyUpdate=Monthly update
# ManualUpdate=Manual update
# HolidaysCancelation=Holidays cancelation
Employee=Employee
FirstDayOfHoliday=First day of holiday
LastDayOfHoliday=Last day of holiday
HolidaysMonthlyUpdate=Monthly update
ManualUpdate=Manual update
HolidaysCancelation=Holidays cancelation
## Configuration du Module ##
# ConfCP=Configuration of holidays module
# DescOptionCP=Description of the option
ConfCP=Configuration of holidays module
DescOptionCP=Description of the option
ValueOptionCP=Værdi
# GroupToValidateCP=Group with the ability to approve holidays
# ConfirmConfigCP=Validate the configuration
# LastUpdateCP=Last updated automatically of holidays
# UpdateConfCPOK=Updated successfully.
# 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>.
# DelayForSubmitCP=Deadline to apply for holidays
# AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
# AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
# AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
# nbUserCP=Number of users supported in the module holidays
# nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
# nbHolidayEveryMonthCP=Number of holidays added every month
# Module27130Name= Management of holidays
# Module27130Desc= Management of holidays
# TitleOptionMainCP=Main settings of holidays
# TitleOptionEventCP=Settings of holidays related to events
GroupToValidateCP=Group with the ability to approve holidays
ConfirmConfigCP=Validate the configuration
LastUpdateCP=Last updated automatically of holidays
UpdateConfCPOK=Updated successfully.
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>.
DelayForSubmitCP=Deadline to apply for holidays
AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
nbUserCP=Number of users supported in the module holidays
nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
nbHolidayEveryMonthCP=Number of holidays added every month
Module27130Name= Management of holidays
Module27130Desc= Management of holidays
TitleOptionMainCP=Main settings of holidays
TitleOptionEventCP=Settings of holidays related to events
ValidEventCP=Validate
# UpdateEventCP=Update events
UpdateEventCP=Update events
CreateEventCP=Opret
# NameEventCP=Event name
# OkCreateEventCP=The addition of the event went well.
# ErrorCreateEventCP=Error creating the event.
# UpdateEventOkCP=The update of the event went well.
# ErrorUpdateEventCP=Error while updating the event.
# DeleteEventCP=Delete Event
# DeleteEventOkCP=The event has been deleted.
# ErrorDeleteEventCP=Error while deleting the event.
# TitleDeleteEventCP=Delete a exceptional leave
# TitleCreateEventCP=Create a exceptional leave
# TitleUpdateEventCP=Edit or delete a exceptional leave
NameEventCP=Event name
OkCreateEventCP=The addition of the event went well.
ErrorCreateEventCP=Error creating the event.
UpdateEventOkCP=The update of the event went well.
ErrorUpdateEventCP=Error while updating the event.
DeleteEventCP=Delete Event
DeleteEventOkCP=The event has been deleted.
ErrorDeleteEventCP=Error while deleting the event.
TitleDeleteEventCP=Delete a exceptional leave
TitleCreateEventCP=Create a exceptional leave
TitleUpdateEventCP=Edit or delete a exceptional leave
DeleteEventOptionCP=Slet
UpdateEventOptionCP=Opdatering
# ErrorMailNotSend=An error occurred while sending email:
# NoCPforMonth=No leave this month.
# nbJours=Number days
# TitleAdminCP=Configuration of Holidays
ErrorMailNotSend=An error occurred while sending email:
NoCPforMonth=No leave this month.
nbJours=Number days
TitleAdminCP=Configuration of Holidays
#Messages
# Hello=Hello
# HolidaysToValidate=Validate holidays
# 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.
# HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
# HolidaysValidated=Validated holidays
# HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
# HolidaysRefused=Denied holidays
# HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
# HolidaysCanceled=Canceled holidays
# HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
# Permission20001=Read/create/modify their holidays
# Permission20002=Read/modify all requests of holidays
# Permission20003=Delete their holidays requests
# Permission20004=Define users holidays
# Permission20005=Review log of modified holidays
# Permission20006=Access holidays monthly report
Hello=Hello
HolidaysToValidate=Validate holidays
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.
HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
HolidaysValidated=Validated holidays
HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
HolidaysRefused=Denied holidays
HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled holidays
HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20000=Read you own holidays
Permission20001=Create/modify your holidays
Permission20002=Create/modify holidays for everybody
Permission20003=Delete holidays requests
Permission20004=Setup users holidays
Permission20005=Review log of modified holidays
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'.
ErrorFailedToCreateDatabase=Kunne ikke oprette 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.
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.
ErrorDatabaseAlreadyExists=Database ' %s' eksisterer allerede.
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.
# 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
YouCanContinue=Du kan fortsætte ...
PleaseBePatient=Vær tålmodig ...
@ -154,11 +154,10 @@ MigrationShippingDelivery2=Opgrader opbevaring af shipping 2
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.
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
#########
MigrationFixData=Fix for denormalized data
MigrationOrder=Data migration for kundernes 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
MigrationActioncommElement=Opdatere data om tiltag
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
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.
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.
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
NumberOfKeyToSearch=Anzahl der Buchstaben um eine Suche auszulösen: %s
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
YesInSummer=Ja im Sommer
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
TestNotPossibleWithCurrentBrowsers=Automatische Erkennung nicht möglich
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)
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.
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
SetDefaultBarcodeTypeProducts=Standard-Barcode-Typ für Produkte
SetDefaultBarcodeTypeThirdParties=Standard-Barcode-Typ für Partner
@ -1492,7 +1492,7 @@ TestGeoIPResult=Test einer Umwandlung IP -> Land
ProjectsNumberingModules=Projektnumerierungsmodul
ProjectsSetup=Projekteinstellungenmodul
ProjectsModelModule=Projektvorlagenmodul
TasksNumberingModules=Tasks numbering module
TasksNumberingModules=Aufgaben-Nummerierungs-Modul
TaskModelModule=Tasks reports document model
##### ECM (GED) #####
ECMSetup = GED Setup

View File

@ -6,7 +6,7 @@ MenuReportMonth=Monatsauszug
MenuAddCP=Ferienantrag
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>.
# NoCPforUser=You don't have a demand for holidays.
NoCPforUser=You don't have a demand for holidays.
AddCP=Ferienantrag
CPErrorSQL=Ein SQL Fehler ist aufgetreten:
Employe=Angestellter
@ -18,13 +18,13 @@ ToReviewCP=Wartet auf Genehmigung
ApprovedCP=Genehmigt
CancelCP=Storno
RefuseCP=Abgelehnt
# ValidatorCP=Approbator
ValidatorCP=Approbator
ListeCP=Ferienliste
# ReviewedByCP=Will be reviewed by
ReviewedByCP=Will be reviewed by
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.
# MenuConfCP=Edit balance of holidays
MenuConfCP=Edit balance of holidays
UpdateAllCP=Ferien aktualisieren
SoldeCPUser=Feriensaldo ist <b>%s</b> Tage.
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.
ReturnCP=Zurück zur vorherigen Seite
ErrorUserViewCP=Sie sind nicht berechtigt diese Ferien-Anträge zu lesen.
# InfosCP=Information of the demand of holidays
# InfosWorkflowCP=Information Workflow
DateCreateCP=Erstellungsdatum
InfosCP=Information of the demand of holidays
InfosWorkflowCP=Information Workflow
RequestByCP=Beantragt von
# TitreRequestCP=Sheet of holidays
TitreRequestCP=Sheet of holidays
NbUseDaysCP=Anzahl Ferientage bezogen
EditCP=Bearbeiten
DeleteCP=Lösche Gruppe
@ -49,15 +48,15 @@ TitleDeleteCP=Antrag auf Ferien löschen
ConfirmDeleteCP=Löschung dieses Ferienantrags bestätigen?
ErrorCantDeleteCP=Fehler, Sie haben nicht die Berechtigung diesen Ferien-Antrag zu löschen.
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
# CantUpdate=You cannot update this request of holidays.
CantUpdate=You cannot update this request of holidays.
NoDateDebut=Sie müssen ein Startdatum wählen.
NoDateFin=Sie müssen ein Enddatum wählen.
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?
# DateValidCP=Date approved
DateValidCP=Date approved
TitleToValidCP=Ferienantrag senden
ConfirmToValidCP=Möchten Sie diesen Ferienantrag wirklich senden?
TitleRefuseCP=Ferienantrag ablehnen
@ -67,14 +66,14 @@ TitleCancelCP=Ferienantrag abbrechen
ConfirmCancelCP=Möchten Sie diesen Ferienantrag wirklich abbrechen?
DetailRefusCP=Ablehnungsgrund
DateRefusCP=Datum der Ablehnung
# DateCancelCP=Date of cancellation
# DefineEventUserCP=Assign an exceptional leave for a user
# addEventToUserCP=Assign leave
DateCancelCP=Date of cancellation
DefineEventUserCP=Assign an exceptional leave for a user
addEventToUserCP=Assign leave
MotifCP=Grund
UserCP=Benutzer
# ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
# AddEventToUserOkCP=The addition of the exceptional leave has been completed.
# MenuLogCP=View logs of holidays
ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
AddEventToUserOkCP=The addition of the exceptional leave has been completed.
MenuLogCP=View logs of holidays
LogCP=Liste von neuen Ferieneinträgen
ActionByCP=Ausgeführt von
UserUpdateCP=Für den Benutzer
@ -87,7 +86,7 @@ FirstDayOfHoliday=Erster Ferientag
LastDayOfHoliday=Letzter Ferientag
HolidaysMonthlyUpdate=Monatliches Update
ManualUpdate=Manuelles Update
# HolidaysCancelation=Holidays cancelation
HolidaysCancelation=Holidays cancelation
## Configuration du Module ##
ConfCP=Konfiguration des Ferienmoduls
@ -95,58 +94,57 @@ DescOptionCP=Beschreibung der Wahlmöglichkeit
ValueOptionCP=Warenwert
GroupToValidateCP=Gruppe mit der Fähigkeit Ferien zu bewilligen
ConfirmConfigCP=Konfiguration bestätigen
# LastUpdateCP=Last updated automatically of holidays
LastUpdateCP=Last updated automatically of holidays
UpdateConfCPOK=Erfolgreich bearbeitet.
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
# AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
# AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
# AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
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
Module27130Name= Verwaltung der Ferien
Module27130Desc= Verwaltung der Ferien
TitleOptionMainCP=Wichtigste Ferien-Einstellungen
# TitleOptionEventCP=Settings of holidays related to events
TitleOptionEventCP=Settings of holidays related to events
ValidEventCP=Freigeben
# UpdateEventCP=Update events
UpdateEventCP=Update events
CreateEventCP=Erstelle
# NameEventCP=Event name
# OkCreateEventCP=The addition of the event went well.
# ErrorCreateEventCP=Error creating the event.
# UpdateEventOkCP=The update of the event went well.
# ErrorUpdateEventCP=Error while updating the event.
# DeleteEventCP=Delete Event
# DeleteEventOkCP=The event has been deleted.
# ErrorDeleteEventCP=Error while deleting the event.
# TitleDeleteEventCP=Delete a exceptional leave
# TitleCreateEventCP=Create a exceptional leave
# TitleUpdateEventCP=Edit or delete a exceptional leave
NameEventCP=Event name
OkCreateEventCP=The addition of the event went well.
ErrorCreateEventCP=Error creating the event.
UpdateEventOkCP=The update of the event went well.
ErrorUpdateEventCP=Error while updating the event.
DeleteEventCP=Delete Event
DeleteEventOkCP=The event has been deleted.
ErrorDeleteEventCP=Error while deleting the event.
TitleDeleteEventCP=Delete a exceptional leave
TitleCreateEventCP=Create a exceptional leave
TitleUpdateEventCP=Edit or delete a exceptional leave
DeleteEventOptionCP=Lösche Gruppe
UpdateEventOptionCP=Aktualisieren
# ErrorMailNotSend=An error occurred while sending email:
# NoCPforMonth=No leave this month.
ErrorMailNotSend=An error occurred while sending email:
NoCPforMonth=No leave this month.
nbJours=Anzahl der Tage
TitleAdminCP=Konfiguration der Ferien
#Messages
Hello=Hallo
HolidaysToValidate=Ferien freigeben
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.
HolidaysValidated=Freigegebene Ferien
HolidaysValidatedBody=Ihr Antrag auf Ferien von %s bis %s wurde bewilligt.
HolidaysRefused=Abgelehnte Ferien
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.
Permission20001=Lesen/erstellen/verändern ihrer Ferien
Permission20002=Lesen/verändern sämtlicher Ferienanträge
Permission20003=Löschen ihrer Ferienanträge
Permission20004=Definiere Benutzer-Ferien
# Permission20005=Review log of modified holidays
# Permission20006=Access holidays monthly report
Permission20000=Read you own holidays
Permission20001=Create/modify your holidays
Permission20002=Create/modify holidays for everybody
Permission20003=Delete holidays requests
Permission20004=Setup users holidays
Permission20005=Review log of modified holidays
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
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.
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
MigrationShippingDelivery=Aktualisiere die Speicherung von Lieferungen (Versandart?)
MigrationShippingDelivery2=Aktualisiere die Speicherung von Lieferungen 2 (Versandart 2?)
@ -158,7 +158,6 @@ ShowEditTechnicalParameters=Hier klicken um erweiterte Funktionen zu zeigen/bear
#########
# upgrade
#########
MigrationFixData=Denormalisierte Daten bereinigen
MigrationOrder=Datenmigration für Kundenbestellungen
MigrationSupplierOrder=Datenmigration für Lieferantenbestellungen
@ -207,3 +206,6 @@ MigrationProjectTaskTime=Aktualisiere aufgewandte Zeit (in Sekunden)
MigrationActioncommElement=Aktualisiere die Maßnahmen
MigrationPaymentMode=Migration der Daten für die Zahlungsart
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_DELETE=Mitglied gelöscht
Notify_PROJECT_CREATE=Projekt-Erstellung
Notify_TASK_CREATE=Task created
Notify_TASK_MODIFY=Task modified
Notify_TASK_DELETE=Task deleted
Notify_TASK_CREATE=Aufgabe erstellt
Notify_TASK_MODIFY=Aufgabe geändert
Notify_TASK_DELETE=Aufgabe gelöscht
NbOfAttachedFiles=Anzahl der angehängten Dateien/okumente
TotalSizeOfAttachedFiles=Gesamtgröße der angehängten Dateien/Dokumente
MaxSize=Maximalgröße

View File

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

View File

@ -50,10 +50,10 @@ ErrorCodeCantContainZero=Ο κώδικας δεν μπορεί να περιέχ
DisableJavascript=Απενεργοποίηση συναρτήσεων JavaScript και 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.
UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box.
UseSearchToSelectCompany=Χρησιμοποιήστε τα πεδία αυτόματης συμπλήρωσης για να επιλέξετε Πελ./Προμ. αντί να χρησιμοποιεί ένα πλαίσιο λίστας.
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.
UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).
UseSearchToSelectContact=Χρησιμοποιήστε τα πεδία αυτόματης συμπλήρωσης για να επιλέξετε την επαφή (αντί της χρήσης ενός πλαισίου λίστας).
SearchFilter=Αναζήτηση επιλογές φίλτρων
NumberOfKeyToSearch=Πλήθος χαρακτήρων για να ξεκινήσει η αναζήτηση: %s
ViewFullDateActions=Εμφάνιση πλήρους χρονοδιαγράμματος γεγονότων στο φύλλο ΠΕΛ./ΠΡΟΜ.
@ -102,9 +102,9 @@ OtherOptions=Άλλες Επιλογές
OtherSetup=Άλλες Ρυθμίσεις
CurrentValueSeparatorDecimal=Διαχωριστικό Δεκαδικών
CurrentValueSeparatorThousand=Διαχωριστικό Χιλιάδων
Destination=Destination
Destination=Προορισμός
IdModule=Module ID
IdPermissions=Permissions ID
IdPermissions=Δικαιώματα ID
Modules=Modules
ModulesCommon=Βασικά 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)
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.
UseSearchToSelectProduct=Use a search form to choose a product (rather than a drop-down list).
UseSearchToSelectProduct=Χρησιμοποιήστε μια φόρμα αναζήτησης για να επιλέξετε ένα προϊόν (αντί για μια αναπτυσσόμενη λίστα).
UseEcoTaxeAbility=Support Eco-Taxe (WEEE)
SetDefaultBarcodeTypeProducts=Default barcode type to use for products
SetDefaultBarcodeTypeThirdParties=Default barcode type to use for third parties
@ -1499,4 +1499,4 @@ ECMSetup = GED Setup
ECMAutoTree = Automatic tree folder and document
Format=Format
Format=Μορφή

View File

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

View File

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

View File

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

View File

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

View File

@ -14,9 +14,9 @@ NewService=Νέα Υπηρεσία
ProductCode=Κωδικός Προϊόντος
ServiceCode=Κωδικός Υπηρεσίας
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
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=Λογιστικός κωδικός (αγορά)
ProductAccountancySellCode=Λογιστικός κωδικός (πώληση)
ProductOrService=Προϊόν ή Υπηρεσία
@ -109,7 +109,7 @@ BarcodeValue=ΤΙμή Barcode
NoteNotVisibleOnBill=Σημείωση (μη ορατή σε τιμολόγια, προτάσεις...)
CreateCopy=Δημιουργία Αντιγράφου
ServiceLimitedDuration=Εάν το προϊόν είναι μια υπηρεσία με περιορισμένη διάρκεια:
MultiPricesAbility=Several level of prices per product/service
MultiPricesAbility=Πολλά επίπεδα των τιμών ανά προϊόν/υπηρεσία
MultiPricesNumPrices=Αριθμός τιμής
MultiPriceLevelsName=Κατηγορίες τιμών
AssociatedProductsAbility=Ενεργοποίηση υποπροϊόντων
@ -156,12 +156,12 @@ NoSupplierPriceDefinedForThisProduct=Δεν υπάρχει τιμή προμηθ
RecordedProducts=Προϊόντα που καταγράφονται
RecordedServices=Services recorded
RecordedProductsAndServices=Προϊόντα / υπηρεσίες που καταγράφονται
PredefinedProductsToSell=Predefined products to sell
PredefinedServicesToSell=Predefined services to sell
PredefinedProductsAndServicesToSell=Predefined products/services to sell
PredefinedProductsToPurchase=Predefined product to purchase
PredefinedServicesToPurchase=Predefined services to purchase
PredefinedProductsAndServicesToPurchase=Predefined products/services to puchase
PredefinedProductsToSell=Προκαθορισμένα προϊόντα για για την πώληση
PredefinedServicesToSell=Προκαθορισμένες υπηρεσίες προς πώληση
PredefinedProductsAndServicesToSell=Προκαθορισμένα προϊόντα/υπηρεσίες προς πώληση
PredefinedProductsToPurchase=Προκαθορισμένο προϊόν στην αγορά
PredefinedServicesToPurchase=Προκαθορισμένες υπηρεσίες για την αγορά
PredefinedProductsAndServicesToPurchase=Προκαθορισμένα προϊόντα/υπηρεσίες στις αγορές
GenerateThumb=Δημιουργία μικρογραφίας
ProductCanvasAbility=Χρησιμοποιήστε το ειδικό &quot;καμβά&quot; addons
ServiceNb=Υπηρεσία #%s
@ -226,9 +226,9 @@ DefinitionOfBarCodeForProductNotComplete=Ορισμός του τύπου ή τ
DefinitionOfBarCodeForThirdpartyNotComplete=Ορισμός του τύπου ή της αξίας του barcode είναι μη πλήρης για άλλους κατασκευαστές %s.
BarCodeDataForProduct=Πληροφορίες 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=Τιμή ανά πελάτη
PriceCatalogue=Unique price per product/service
PriceCatalogue=Μοναδική τιμή ανά προϊόν/υπηρεσία
PricingRule=Κανόνες τιμολόγησης
AddCustomerPrice=Προσθέστε τιμή των πελατών
ForceUpdateChildPriceSoc=Ορισμός ίδιας τιμής για τις θυγατρικές του πελάτη

View File

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

View File

@ -116,7 +116,7 @@ LanguageBrowserParameter=Parameter %s
LocalisationDolibarrParameters=Localisation parameters
ClientTZ=Client Time Zone (user)
ClientHour=Client time (user)
OSTZ=Servre OS Time Zone
OSTZ=Server OS Time Zone
PHPTZ=PHP server Time Zone
PHPServerOffsetWithGreenwich=PHP server offset width Greenwich (seconds)
ClientOffsetWithGreenwich=Client/Browser offset width Greenwich (seconds)
@ -369,9 +369,9 @@ ExtrafieldSelectList = Select from table
ExtrafieldSeparator=Separator
ExtrafieldCheckBox=Checkbox
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
ExtrafieldParamHelpcheckbox=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 exemple : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key
ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> 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
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)
Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries
Module510Name=Salaries
Module510Desc=Management of empoyees salaries and payments
Module510Desc=Management of employees salaries and payments
Module600Name=Notifications
Module600Desc=Send notifications by email on some Dolibarr business events to third party contacts
Module700Name=Donations
@ -495,15 +495,15 @@ Module2400Name=Agenda
Module2400Desc=Events/tasks and agenda management
Module2500Name=Electronic Content Management
Module2500Desc=Save and share documents
Module2600Name= WebServices
Module2600Desc= Enable the Dolibarr web services server
Module2700Name= Gravatar
Module2700Desc= Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Need an internet access
Module2600Name=WebServices
Module2600Desc=Enable the Dolibarr web services server
Module2700Name=Gravatar
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
Module2900Name= GeoIPMaxmind
Module2900Desc= GeoIP Maxmind conversions capabilities
Module3100Name= Skype
Module3100Desc= Add a Skype button into card of adherents / third parties / contacts
Module2900Name=GeoIPMaxmind
Module2900Desc=GeoIP Maxmind conversions capabilities
Module3100Name=Skype
Module3100Desc=Add a Skype button into card of adherents / third parties / contacts
Module5000Name=Multi-company
Module5000Desc=Allows you to manage multiple companies
Module6000Name=Workflow
@ -999,7 +999,7 @@ ExtraFieldsSupplierOrders=Complementary attributes (orders)
ExtraFieldsSupplierInvoices=Complementary attributes (invoices)
ExtraFieldsProject=Complementary attributes (projects)
ExtraFieldsProjectTask=Complementary attributes (tasks)
ExtraFieldHasWrongValue=Attribut %s has a wrong value.
ExtraFieldHasWrongValue=Attribute %s has a wrong value.
AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space
AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space
SendingMailSetup=Setup of sendings by email
@ -1018,13 +1018,13 @@ SuhosinSessionEncrypt=Session storage encrypted by Suhosin
ConditionIsCurrently=Condition is currently %s
TestNotPossibleWithCurrentBrowsers=Automatic detection not possible
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.
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.
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.
XDebugInstalled=XDebug est chargé.
XDebugInstalled=XDebug is loaded.
XCacheInstalled=XCache is loaded.
AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink
FieldEdition=Edition of field %s
@ -1073,7 +1073,7 @@ WebCalServer=Server hosting calendar database
WebCalDatabaseName=Database name
WebCalUser=User to access database
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.
WebCalTestKo2=Connection to server '%s' with user '%s' failed.
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
OrdersNumberingModules=Orders numbering 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
FreeLegalTextOnOrders=Free text on orders
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
LDAPTCPConnectOK=TCP connect to LDAP server successful (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)
LDAPUnbindSuccessfull=Disconnect successfull
LDAPUnbindSuccessfull=Disconnect successful
LDAPUnbindFailed=Disconnect failed
LDAPConnectToDNSuccessfull=Connection to DN (%s) successful
LDAPConnectToDNFailed=Connection to DN (%s) failed
@ -1273,7 +1273,7 @@ LDAPFieldSidExample=Example : objectsid
LDAPFieldEndLastSubscription=Date of subscription end
LDAPFieldTitle=Post/Function
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)
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.
@ -1299,7 +1299,7 @@ FilesOfTypeNotCompressed=Files of type %s are not compressed by HTTP server
CacheByServer=Cache by server
CacheByClient=Cache by browser
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 #####
ProductSetup=Products module setup
ServiceSetup=Services module setup
@ -1429,7 +1429,7 @@ OptionVATDefault=Standard
OptionVATDebitOption=Option services on Debit
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
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
OnPayment=On payment
OnInvoice=On invoice
@ -1446,7 +1446,7 @@ AccountancyCodeBuy=Purchase account. code
AgendaSetup=Events and agenda module setup
PasswordTogetVCalExport=Key to authorize export link
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 #####
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) #####

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>.
NoCPforUser=You don't have a demand for holidays.
AddCP=Apply for holidays
CPErrorSQL=An SQL error occurred:
Employe=Employee
DateDebCP=Start date
DateFinCP=End date

View File

@ -551,6 +551,7 @@ MailSentBy=Email sent by
TextUsedInTheMessageBody=Email body
SendAcknowledgementByMail=Send Ack. by email
NoEMail=No email
NoMobilePhone=No mobile phone
Owner=Owner
DetectedVersion=Detected version
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
CustomerPrices=Customers prices
SuppliersPrices=Suppliers prices
SuppliersPricesOfProductsOrServices=Suppliers prices (of products or services)
CustomCode=Customs code
CountryOrigin=Origin country
HiddenIntoCombo=Hidden into select lists
@ -208,6 +209,7 @@ CostPmpHT=Net total VWAP
ProductUsedForBuild=Auto consumed by production
ProductBuilded=Production completed
ProductsMultiPrice=Product multi-price
ProductsOrServiceMultiPrice=Customers prices (of products or services, multi-prices)
ProductSellByQuarterHT=Products turnover quarterly VWAP
ServiceSellByQuarterHT=Services turnover quarterly VWAP
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
DisableJavascript=Desactivar las funciones Javascript y 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.
UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box.
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=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
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).
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=Utilice los campos de autocompletar para seleccionar contactos (en lugar de utilizar un cuadro de lista).
SearchFilter=Opciones filtros de búsqueda
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
@ -102,9 +102,9 @@ OtherOptions=Otras opciones
OtherSetup=Varios
CurrentValueSeparatorDecimal=Separador decimal
CurrentValueSeparatorThousand=Separador miles
Destination=Destination
IdModule=Module ID
IdPermissions=Permissions ID
Destination=destino
IdModule=identificador de modulo
IdPermissions=Identificador de permisos
Modules=Módulos
ModulesCommon=Módulos principales
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>...
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>...
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
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)
@ -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.
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.
MemcachedModuleAvailableButNotSetup=Module memcached for applicative cache found but setup of module is not complete.
MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled.
MemcachedModuleAvailableButNotSetup=Módulo memcached para el caché aplicativo encontrado pero la configuración del módulo no está completa.
MemcachedAvailableAndSetup=Memcached módulo dedicado a utilizar el servidor memcached está disponible.
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).
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
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
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).
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=Utilice un formulario de búsqueda para elegir un producto (en lugar de una lista desplegable).
UseEcoTaxeAbility=Asumir ecotasa (DEEE)
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
@ -1499,4 +1499,4 @@ ECMSetup = Configuración del módulo GED
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
Graph=Gráficos
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
TransactionWithOtherAccount=Transferencia de cuenta
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!
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.
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
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.
InfosCP=Información de la petición de vacaciones
InfosWorkflowCP=Información del workflow
DateCreateCP=Fecha de creación
RequestByCP=Pedido por
TitreRequestCP=Ficha vacaciones
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.
nbJours=Número de días
TitleAdminCP=Configuración de las vacaciones
#Messages
Hello=Hola
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 :
HolidaysCanceled=Días retribuidos cancelados
HolidaysCanceledBody=Su solicitud de días retribuidos desde el %s al %s ha sido cancelada.
Permission20001=Consultar/crear/modificar sus vacaciones
Permission20002=Consultar/modificar todas las solicitudes de permisos retribuídos
Permission20003=Eliminar las solicitudes de permisos retribuídos
Permission20004=Definir los permisos retribuídos de los usuarios
Permission20000=Leer sus propios días retribuidos
Permission20001=Crear/modificar sus días retribuidos
Permission20002=Crear/modificar días retribuidos para todos
Permission20003=Eliminar peticiones de días retribuidos
Permission20004=Configurar días retribuidos de usuarios
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
MigrationPaymentMode=Actualización de los modos de pago
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
ToAddRecipientsChooseHere=Para añadir destinatarios, escoja los que figuran en las listas a continuación
NbOfEMailingsReceived=E-Mailings en masa recibidos
NbOfEMailingsSend=Mass emailings sent
NbOfEMailingsSend=Emailings masivos enviados
IdRecord=ID registro
DeliveryReceipt=Acuse de recibo
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
DevelopmentTeam=Equipo de desarrollo
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
Setup=Configuración
Alert=Alerta
@ -605,8 +605,8 @@ Notes=Notas
AddNewLine=Añadir nueva línea
AddFile=Añadir archivo
ListOfFiles=Listado de archivos disponibles
FreeZone=Free entry
FreeLineOfType=Free entry of type
FreeZone=Entrada libre
FreeLineOfType=Entrada libre del tipo
CloneMainAttributes=Clonar el objeto con estos atributos principales
PDFMerge=Fusión PDF
Merge=Fusión

View File

@ -45,9 +45,9 @@ Notify_MEMBER_SUBSCRIPTION=Afiliación miembro
Notify_MEMBER_RESILIATE=Baja miembro
Notify_MEMBER_DELETE=Eliminación miembro
Notify_PROJECT_CREATE=Creación de proyecto
Notify_TASK_CREATE=Task created
Notify_TASK_MODIFY=Task modified
Notify_TASK_DELETE=Task deleted
Notify_TASK_CREATE=Tarea creada
Notify_TASK_MODIFY=Tarea modificada
Notify_TASK_DELETE=Tarea eliminada
NbOfAttachedFiles=Número archivos/documentos adjuntos
TotalSizeOfAttachedFiles=Tamaño total de los archivos/documentos adjuntos
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.)
CreateCopy=Crear cópia
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
MultiPriceLevelsName=Categoría de precios
AssociatedProductsAbility=Activar productos compuestos
@ -156,12 +156,12 @@ NoSupplierPriceDefinedForThisProduct=Ningún precio/cant. proveedor definida par
RecordedProducts=Productos en venta
RecordedServices=Servicios en venta
RecordedProductsAndServices=Productos/servicios en venta
PredefinedProductsToSell=Predefined products to sell
PredefinedServicesToSell=Predefined services to sell
PredefinedProductsAndServicesToSell=Predefined products/services to sell
PredefinedProductsToPurchase=Predefined product to purchase
PredefinedServicesToPurchase=Predefined services to purchase
PredefinedProductsAndServicesToPurchase=Predefined products/services to puchase
PredefinedProductsToSell=Productos predefinidos para vender
PredefinedServicesToSell=Servicios predefinidos para vender
PredefinedProductsAndServicesToSell=Productos/servicios predefinidos a la venta
PredefinedProductsToPurchase=Producto predefinido para comprar
PredefinedServicesToPurchase=Servicios predefinidos para comprar
PredefinedProductsAndServicesToPurchase=Productos/servicios predefinidos para comprar
GenerateThumb=Generar la etiqueta
ProductCanvasAbility=Usar las extensiones especiales "canvas"
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:
ResetBarcodeForAllRecords=Definir códigos de barras para todos los registros (machacará los valores de códigos de barras ya registrados)
PriceByCustomer=Precio por cliente
PriceCatalogue=Unique price per product/service
PriceCatalogue=Precio único por producto/servicio
PricingRule=Reglas de precio
AddCustomerPrice=Añadir precio por 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.
InfosCP=Puhkusevajaduse info
InfosWorkflowCP=Informatsiooni töövoog
DateCreateCP=Loomiskuupäev
RequestByCP=Taotles
TitreRequestCP=Puhkuste leht
NbUseDaysCP=Kulutatud puhkusepäevade arv
@ -130,7 +129,6 @@ ErrorMailNotSend=E-kirja saatmisel tekkis viga:
NoCPforMonth=Sellel kuul pole puhkusi.
nbJours=Päevade arv
TitleAdminCP=Puhkuste seadistamine
#Messages
Hello=Tere
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:
HolidaysCanceled=Tühistatud puhkused
HolidaysCanceledBody=Sinu puhkusetaotlus alates %s kuni %s on tühistatud.
Permission20001=Oma puhkuste vaatamine/loomine/muutmine
Permission20002=Kõikide puhkusetaotluste vaatamine/muutmine
Permission20003=Oma puhkusetaotluste kustutamine
Permission20004=Kasutajate puhkuste määratlemine
Permission20000=Read you own holidays
Permission20001=Create/modify your holidays
Permission20002=Create/modify holidays for everybody
Permission20003=Delete holidays requests
Permission20004=Setup users holidays
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
#########
MigrationFixData=Paranda denormaliseeritud andmed
MigrationOrder=Kliendi tellimuste andmete migreerimine
MigrationSupplierOrder=Ostutellimuste andmete migreerimine
@ -207,3 +206,6 @@ MigrationProjectTaskTime=Uuendamiseks kulutatud aeg sekundites
MigrationActioncommElement=Uuenda tegevuste andmec
MigrationPaymentMode=Maksete režiimi andmete 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
# HRM=HRM
# Holidays=Holidays
# CPTitreMenu=Holidays
# MenuReportMonth=Monthly statement
# MenuAddCP=Apply for holidays
# 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>.
# NoCPforUser=You don't have a demand for holidays.
# AddCP=Apply for holidays
# CPErrorSQL=An SQL error occurred:
# Employe=Employee
# DateDebCP=Start date
# DateFinCP=End date
# DateCreateCP=Creation date
# DraftCP=Draft
# ToReviewCP=Awaiting approval
# ApprovedCP=Approved
# CancelCP=Canceled
# RefuseCP=Refused
# ValidatorCP=Approbator
# ListeCP=List of holidays
# ReviewedByCP=Will be reviewed by
# DescCP=Description
# SendRequestCP=Creating demand for holidays
# DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
# MenuConfCP=Edit balance of holidays
# UpdateAllCP=Update the holidays
# SoldeCPUser=Holidays balance is <b>%s</b> days.
# ErrorEndDateCP=You must select an end date greater than the start date.
# ErrorSQLCreateCP=An SQL error occurred during the creation:
# ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.
# ReturnCP=Return to previous page
# ErrorUserViewCP=You are not authorized to read this request for holidays.
# InfosCP=Information of the demand of holidays
# InfosWorkflowCP=Information Workflow
# DateCreateCP=Creation date
# RequestByCP=Requested by
# TitreRequestCP=Sheet of holidays
# NbUseDaysCP=Number of days of holidays consumed
# EditCP=Edit
# DeleteCP=Delete
# ActionValidCP=Validate
# ActionRefuseCP=Refuse
# ActionCancelCP=Cancel
# StatutCP=Status
# SendToValidationCP=Send to validation
# TitleDeleteCP=Delete the request of holidays
# ConfirmDeleteCP=Confirm the deletion of this request for holidays?
# ErrorCantDeleteCP=Error you don't have the right to delete this holiday request.
# CantCreateCP=You don't have the right to apply for holidays.
# InvalidValidatorCP=You must choose an approbator to your holiday request.
# UpdateButtonCP=Update
# CantUpdate=You cannot update this request of holidays.
# NoDateDebut=You must select a start date.
# NoDateFin=You must select an end date.
# ErrorDureeCP=Your request for holidays does not contain working day.
# TitleValidCP=Approve the request holidays
# ConfirmValidCP=Are you sure you want to approve the holiday request?
# DateValidCP=Date approved
# TitleToValidCP=Send request holidays
# ConfirmToValidCP=Are you sure you want to send the request of holidays?
# TitleRefuseCP=Refuse the request holidays
# ConfirmRefuseCP=Are you sure you want to refuse the request of holidays?
# NoMotifRefuseCP=You must choose a reason for refusing the request.
# TitleCancelCP=Cancel the request holidays
# ConfirmCancelCP=Are you sure you want to cancel the request of holidays?
# DetailRefusCP=Reason for refusal
# DateRefusCP=Date of refusal
# DateCancelCP=Date of cancellation
# DefineEventUserCP=Assign an exceptional leave for a user
# addEventToUserCP=Assign leave
# MotifCP=Reason
# UserCP=User
# ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
# AddEventToUserOkCP=The addition of the exceptional leave has been completed.
# MenuLogCP=View logs of holidays
# LogCP=Log of updates of holidays
# ActionByCP=Performed by
# UserUpdateCP=For the user
# PrevSoldeCP=Previous Balance
# NewSoldeCP=New Balance
# alreadyCPexist=A request for holidays has already been done on this period.
# UserName=Name
# Employee=Employee
# FirstDayOfHoliday=First day of holiday
# LastDayOfHoliday=Last day of holiday
# HolidaysMonthlyUpdate=Monthly update
# ManualUpdate=Manual update
# HolidaysCancelation=Holidays cancelation
HRM=HRM
Holidays=Holidays
CPTitreMenu=Holidays
MenuReportMonth=Monthly statement
MenuAddCP=Apply for holidays
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>.
NoCPforUser=You don't have a demand for holidays.
AddCP=Apply for holidays
CPErrorSQL=An SQL error occurred:
Employe=Employee
DateDebCP=Start date
DateFinCP=End date
DateCreateCP=Creation date
DraftCP=Draft
ToReviewCP=Awaiting approval
ApprovedCP=Approved
CancelCP=Canceled
RefuseCP=Refused
ValidatorCP=Approbator
ListeCP=List of holidays
ReviewedByCP=Will be reviewed by
DescCP=Description
SendRequestCP=Creating demand for holidays
DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
MenuConfCP=Edit balance of holidays
UpdateAllCP=Update the holidays
SoldeCPUser=Holidays balance is <b>%s</b> days.
ErrorEndDateCP=You must select an end date greater than the start date.
ErrorSQLCreateCP=An SQL error occurred during the creation:
ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.
ReturnCP=Return to previous page
ErrorUserViewCP=You are not authorized to read this request for holidays.
InfosCP=Information of the demand of holidays
InfosWorkflowCP=Information Workflow
RequestByCP=Requested by
TitreRequestCP=Sheet of holidays
NbUseDaysCP=Number of days of holidays consumed
EditCP=Edit
DeleteCP=Delete
ActionValidCP=Validate
ActionRefuseCP=Refuse
ActionCancelCP=Cancel
StatutCP=Status
SendToValidationCP=Send to validation
TitleDeleteCP=Delete the request of holidays
ConfirmDeleteCP=Confirm the deletion of this request for holidays?
ErrorCantDeleteCP=Error you don't have the right to delete this holiday request.
CantCreateCP=You don't have the right to apply for holidays.
InvalidValidatorCP=You must choose an approbator to your holiday request.
UpdateButtonCP=Update
CantUpdate=You cannot update this request of holidays.
NoDateDebut=You must select a start date.
NoDateFin=You must select an end date.
ErrorDureeCP=Your request for holidays does not contain working day.
TitleValidCP=Approve the request holidays
ConfirmValidCP=Are you sure you want to approve the holiday request?
DateValidCP=Date approved
TitleToValidCP=Send request holidays
ConfirmToValidCP=Are you sure you want to send the request of holidays?
TitleRefuseCP=Refuse the request holidays
ConfirmRefuseCP=Are you sure you want to refuse the request of holidays?
NoMotifRefuseCP=You must choose a reason for refusing the request.
TitleCancelCP=Cancel the request holidays
ConfirmCancelCP=Are you sure you want to cancel the request of holidays?
DetailRefusCP=Reason for refusal
DateRefusCP=Date of refusal
DateCancelCP=Date of cancellation
DefineEventUserCP=Assign an exceptional leave for a user
addEventToUserCP=Assign leave
MotifCP=Reason
UserCP=User
ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
AddEventToUserOkCP=The addition of the exceptional leave has been completed.
MenuLogCP=View logs of holidays
LogCP=Log of updates of holidays
ActionByCP=Performed by
UserUpdateCP=For the user
PrevSoldeCP=Previous Balance
NewSoldeCP=New Balance
alreadyCPexist=A request for holidays has already been done on this period.
UserName=Name
Employee=Employee
FirstDayOfHoliday=First day of holiday
LastDayOfHoliday=Last day of holiday
HolidaysMonthlyUpdate=Monthly update
ManualUpdate=Manual update
HolidaysCancelation=Holidays cancelation
## Configuration du Module ##
# ConfCP=Configuration of holidays module
# DescOptionCP=Description of the option
# ValueOptionCP=Value
# GroupToValidateCP=Group with the ability to approve holidays
# ConfirmConfigCP=Validate the configuration
# LastUpdateCP=Last updated automatically of holidays
# UpdateConfCPOK=Updated successfully.
# 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>.
# DelayForSubmitCP=Deadline to apply for holidays
# AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
# AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
# AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
# nbUserCP=Number of users supported in the module holidays
# nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
# nbHolidayEveryMonthCP=Number of holidays added every month
# Module27130Name= Management of holidays
# Module27130Desc= Management of holidays
# TitleOptionMainCP=Main settings of holidays
# TitleOptionEventCP=Settings of holidays related to events
# ValidEventCP=Validate
# UpdateEventCP=Update events
# CreateEventCP=Create
# NameEventCP=Event name
# OkCreateEventCP=The addition of the event went well.
# ErrorCreateEventCP=Error creating the event.
# UpdateEventOkCP=The update of the event went well.
# ErrorUpdateEventCP=Error while updating the event.
# DeleteEventCP=Delete Event
# DeleteEventOkCP=The event has been deleted.
# ErrorDeleteEventCP=Error while deleting the event.
# TitleDeleteEventCP=Delete a exceptional leave
# TitleCreateEventCP=Create a exceptional leave
# TitleUpdateEventCP=Edit or delete a exceptional leave
# DeleteEventOptionCP=Delete
# UpdateEventOptionCP=Update
# ErrorMailNotSend=An error occurred while sending email:
# NoCPforMonth=No leave this month.
# nbJours=Number days
# TitleAdminCP=Configuration of Holidays
ConfCP=Configuration of holidays module
DescOptionCP=Description of the option
ValueOptionCP=Value
GroupToValidateCP=Group with the ability to approve holidays
ConfirmConfigCP=Validate the configuration
LastUpdateCP=Last updated automatically of holidays
UpdateConfCPOK=Updated successfully.
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>.
DelayForSubmitCP=Deadline to apply for holidays
AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
nbUserCP=Number of users supported in the module holidays
nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
nbHolidayEveryMonthCP=Number of holidays added every month
Module27130Name= Management of holidays
Module27130Desc= Management of holidays
TitleOptionMainCP=Main settings of holidays
TitleOptionEventCP=Settings of holidays related to events
ValidEventCP=Validate
UpdateEventCP=Update events
CreateEventCP=Create
NameEventCP=Event name
OkCreateEventCP=The addition of the event went well.
ErrorCreateEventCP=Error creating the event.
UpdateEventOkCP=The update of the event went well.
ErrorUpdateEventCP=Error while updating the event.
DeleteEventCP=Delete Event
DeleteEventOkCP=The event has been deleted.
ErrorDeleteEventCP=Error while deleting the event.
TitleDeleteEventCP=Delete a exceptional leave
TitleCreateEventCP=Create a exceptional leave
TitleUpdateEventCP=Edit or delete a exceptional leave
DeleteEventOptionCP=Delete
UpdateEventOptionCP=Update
ErrorMailNotSend=An error occurred while sending email:
NoCPforMonth=No leave this month.
nbJours=Number days
TitleAdminCP=Configuration of Holidays
#Messages
# Hello=Hello
# HolidaysToValidate=Validate holidays
# 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.
# HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
# HolidaysValidated=Validated holidays
# HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
# HolidaysRefused=Denied holidays
# HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
# HolidaysCanceled=Canceled holidays
# HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
# Permission20001=Read/create/modify their holidays
# Permission20002=Read/modify all requests of holidays
# Permission20003=Delete their holidays requests
# Permission20004=Define users holidays
# Permission20005=Review log of modified holidays
# Permission20006=Access holidays monthly report
Hello=Hello
HolidaysToValidate=Validate holidays
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.
HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
HolidaysValidated=Validated holidays
HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
HolidaysRefused=Denied holidays
HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled holidays
HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20000=Read you own holidays
Permission20001=Create/modify your holidays
Permission20002=Create/modify holidays for everybody
Permission20003=Delete holidays requests
Permission20004=Setup users holidays
Permission20005=Review log of modified holidays
Permission20006=Read holidays monthly report

View File

@ -1,209 +1,211 @@
# Dolibarr language file - Source file is en_US - install
# InstallEasy=Just follow the instructions step by step.
# MiscellaneousChecks=Prerequisites check
# DolibarrWelcome=Welcome to Dolibarr
# ConfFileExists=Configuration file <b>%s</b> exists.
# ConfFileDoesNotExists=Configuration file <b>%s</b> does not exist !
# ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file <b>%s</b> does not exist and could not 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).
# ConfFileIsWritable=Configuration file <b>%s</b> is writable.
# ConfFileReload=Reload all information from configuration file.
# PHPSupportSessions=This PHP supports sessions.
# 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.
# PHPSupportGD=This PHP support GD graphical functions.
# PHPSupportUTF8=This PHP support UTF8 functions.
# 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.
# 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.
# 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.
# ErrorDirDoesNotExists=Directory %s does not exist.
# ErrorGoBackAndCorrectParameters=Go backward and correct wrong parameters.
# ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'.
# ErrorFailedToCreateDatabase=Failed to create database '%s'.
# ErrorFailedToConnectToDatabase=Failed to connect to database '%s'.
# ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher 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.
# ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found.
# ErrorDatabaseAlreadyExists=Database '%s' already exists.
# 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.
# WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded.
# PHPVersion=PHP Version
# YouCanContinue=You can continue...
# PleaseBePatient=Please be patient...
# License=Using license
# ConfigurationFile=Configuration file
# WebPagesDirectory=Directory where web pages are stored
# DocumentsDirectory=Directory to store uploaded and generated documents
# URLRoot=URL Root
# 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.
# DolibarrDatabase=Dolibarr Database
# DatabaseChoice=Database choice
# DatabaseType=Database type
# DriverType=Driver type
# Server=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.
# DatabaseServer=Database server
# DatabaseName=Database name
# DatabasePrefix=Database prefix table
# Login=Login
# AdminLogin=Login for Dolibarr database owner.
# Password=Password
# PasswordAgain=Retype password a second time
# AdminPassword=Password for Dolibarr database owner.
# CreateDatabase=Create database
# CreateUser=Create owner
# 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.
# 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)
# 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)
# SaveConfigurationFile=Save values
# ConfigurationSaving=Saving configuration file
# ServerConnection=Server connection
# DatabaseConnection=Database connection
# DatabaseCreation=Database creation
# UserCreation=User creation
# CreateDatabaseObjects=Database objects creation
# ReferenceDataLoading=Reference data loading
# TablesAndPrimaryKeysCreation=Tables and Primary keys creation
# CreateTableAndPrimaryKey=Create table %s
# CreateOtherKeysForTable=Create foreign keys and indexes for table %s
# OtherKeysCreation=Foreign keys and indexes creation
# FunctionsCreation=Functions creation
# AdminAccountCreation=Administrator login creation
# PleaseTypePassword=Please type a password, empty passwords are not allowed !
# PleaseTypeALogin=Please type a login !
# PasswordsMismatch=Passwords differs, please try again !
# SetupEnd=End of setup
# SystemIsInstalled=This installation is complete.
# 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:
# AdminLoginCreatedSuccessfuly=Dolibarr administrator login '<b>%s</b>' created successfuly.
# GoToDolibarr=Go to Dolibarr
# 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.
# GoToUpgradePage=Go to upgrade page again
# Examples=Examples
# WithNoSlashAtTheEnd=Without the slash "/" at the end
# DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages.
# LoginAlreadyExists=Already exists
# DolibarrAdminLogin=Dolibarr admin login
# 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.
# ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s
# FunctionNotAvailableInThisPHP=Not available on this PHP
# MigrateScript=Migration script
# ChoosedMigrateScript=Choose migration script
# DataMigration=Data migration
# DatabaseMigration=Structure database migration
# ProcessMigrateScript=Script processing
# ChooseYourSetupMode=Choose your setup mode and click "Start"...
# 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.
# 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.
# Start=Start
# InstallNotAllowed=Setup not allowed by <b>conf.php</b> permissions
# NotAvailable=Not available
# 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.
# AlreadyDone=Already migrated
# DatabaseVersion=Database version
# ServerVersion=Database server version
# YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it.
# CharsetChoice=Character set choice
# 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.
# 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.
# CharacterSetDatabase=Character set for database
# 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.
# 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.
# OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s
# 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.
# 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.
# 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
# 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.
# InstallChoiceRecommanded=Recommended choice to install version <b>%s</b> from your current version <b>%s</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.
# 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".
# OpenBaseDir=PHP openbasedir parameter
# 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).
# 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
# MigrationShippingDelivery=Upgrade storage of shipping
# MigrationShippingDelivery2=Upgrade storage of shipping 2
# 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.
# ActivateModule=Activate module %s
# ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
InstallEasy=Just follow the instructions step by step.
MiscellaneousChecks=Prerequisites check
DolibarrWelcome=Welcome to Dolibarr
ConfFileExists=Configuration file <b>%s</b> exists.
ConfFileDoesNotExists=Configuration file <b>%s</b> does not exist !
ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file <b>%s</b> does not exist and could not 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).
ConfFileIsWritable=Configuration file <b>%s</b> is writable.
ConfFileReload=Reload all information from configuration file.
PHPSupportSessions=This PHP supports sessions.
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.
PHPSupportGD=This PHP support GD graphical functions.
PHPSupportUTF8=This PHP support UTF8 functions.
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.
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.
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.
ErrorDirDoesNotExists=Directory %s does not exist.
ErrorGoBackAndCorrectParameters=Go backward and correct wrong parameters.
ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'.
ErrorFailedToCreateDatabase=Failed to create database '%s'.
ErrorFailedToConnectToDatabase=Failed to connect to database '%s'.
ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher 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.
ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found.
ErrorDatabaseAlreadyExists=Database '%s' already exists.
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.
WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded.
PHPVersion=PHP Version
YouCanContinue=You can continue...
PleaseBePatient=Please be patient...
License=Using license
ConfigurationFile=Configuration file
WebPagesDirectory=Directory where web pages are stored
DocumentsDirectory=Directory to store uploaded and generated documents
URLRoot=URL Root
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.
DolibarrDatabase=Dolibarr Database
DatabaseChoice=Database choice
DatabaseType=Database type
DriverType=Driver type
Server=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.
DatabaseServer=Database server
DatabaseName=Database name
DatabasePrefix=Database prefix table
Login=Login
AdminLogin=Login for Dolibarr database owner.
Password=Password
PasswordAgain=Retype password a second time
AdminPassword=Password for Dolibarr database owner.
CreateDatabase=Create database
CreateUser=Create owner
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.
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)
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)
SaveConfigurationFile=Save values
ConfigurationSaving=Saving configuration file
ServerConnection=Server connection
DatabaseConnection=Database connection
DatabaseCreation=Database creation
UserCreation=User creation
CreateDatabaseObjects=Database objects creation
ReferenceDataLoading=Reference data loading
TablesAndPrimaryKeysCreation=Tables and Primary keys creation
CreateTableAndPrimaryKey=Create table %s
CreateOtherKeysForTable=Create foreign keys and indexes for table %s
OtherKeysCreation=Foreign keys and indexes creation
FunctionsCreation=Functions creation
AdminAccountCreation=Administrator login creation
PleaseTypePassword=Please type a password, empty passwords are not allowed !
PleaseTypeALogin=Please type a login !
PasswordsMismatch=Passwords differs, please try again !
SetupEnd=End of setup
SystemIsInstalled=This installation is complete.
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:
AdminLoginCreatedSuccessfuly=Dolibarr administrator login '<b>%s</b>' created successfuly.
GoToDolibarr=Go to Dolibarr
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.
GoToUpgradePage=Go to upgrade page again
Examples=Examples
WithNoSlashAtTheEnd=Without the slash "/" at the end
DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages.
LoginAlreadyExists=Already exists
DolibarrAdminLogin=Dolibarr admin login
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.
ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s
FunctionNotAvailableInThisPHP=Not available on this PHP
MigrateScript=Migration script
ChoosedMigrateScript=Choose migration script
DataMigration=Data migration
DatabaseMigration=Structure database migration
ProcessMigrateScript=Script processing
ChooseYourSetupMode=Choose your setup mode and click "Start"...
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.
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.
Start=Start
InstallNotAllowed=Setup not allowed by <b>conf.php</b> permissions
NotAvailable=Not available
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.
AlreadyDone=Already migrated
DatabaseVersion=Database version
ServerVersion=Database server version
YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it.
CharsetChoice=Character set choice
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.
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.
CharacterSetDatabase=Character set for database
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.
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.
OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s
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.
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.
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
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.
InstallChoiceRecommanded=Recommended choice to install version <b>%s</b> from your current version <b>%s</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.
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".
OpenBaseDir=PHP openbasedir parameter
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).
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
MigrationShippingDelivery=Upgrade storage of shipping
MigrationShippingDelivery2=Upgrade storage of shipping 2
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.
ActivateModule=Activate module %s
ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
#########
# upgrade
#########
# MigrationFixData=Fix for denormalized data
# MigrationOrder=Data migration for customer's orders
# MigrationSupplierOrder=Data migration for supplier's orders
# MigrationProposal=Data migration for commercial proposals
# MigrationInvoice=Data migration for customer's invoices
# MigrationContract=Data migration for contracts
# MigrationSuccessfullUpdate=Upgrade successful
# MigrationUpdateFailed=Failed upgrade process
# MigrationRelationshipTables=Data migration for relationship tables (%s)
# MigrationPaymentsUpdate=Payment data correction
# MigrationPaymentsNumberToUpdate=%s payment(s) to update
# MigrationProcessPaymentUpdate=Update payment(s) %s
# MigrationPaymentsNothingToUpdate=No more things to do
# MigrationPaymentsNothingUpdatable=No more payments that can be corrected
# MigrationContractsUpdate=Contract data correction
# MigrationContractsNumberToUpdate=%s contract(s) to update
# MigrationContractsLineCreation=Create contract line for contract ref %s
# MigrationContractsNothingToUpdate=No more things to do
# MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do.
# MigrationContractsEmptyDatesUpdate=Contract empty date correction
# MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly
# MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct
# MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct
# MigrationContractsInvalidDatesUpdate=Bad value date contract correction
# MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s)
# MigrationContractsInvalidDatesNumber=%s contracts modified
# MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct
# MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction
# MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly
# MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct
# MigrationReopeningContracts=Open contract closed by error
# MigrationReopenThisContract=Reopen contract %s
# MigrationReopenedContractsNumber=%s contracts modified
# MigrationReopeningContractsNothingToUpdate=No closed contract to open
# MigrationBankTransfertsUpdate=Update links between bank transaction and a bank transfer
# MigrationBankTransfertsNothingToUpdate=All links are up to date
# MigrationShipmentOrderMatching=Sendings receipt update
# MigrationDeliveryOrderMatching=Delivery receipt update
# MigrationDeliveryDetail=Delivery update
# MigrationStockDetail=Update stock value of products
# MigrationMenusDetail=Update dynamic menus tables
# MigrationDeliveryAddress=Update delivery address in shipments
# MigrationProjectTaskActors=Data migration for llx_projet_task_actors table
# MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact
# MigrationProjectTaskTime=Update time spent in seconds
# MigrationActioncommElement=Update data on actions
# MigrationPaymentMode=Data migration for payment mode
# MigrationCategorieAssociation=Migration of categories
MigrationFixData=Fix for denormalized data
MigrationOrder=Data migration for customer's orders
MigrationSupplierOrder=Data migration for supplier's orders
MigrationProposal=Data migration for commercial proposals
MigrationInvoice=Data migration for customer's invoices
MigrationContract=Data migration for contracts
MigrationSuccessfullUpdate=Upgrade successful
MigrationUpdateFailed=Failed upgrade process
MigrationRelationshipTables=Data migration for relationship tables (%s)
MigrationPaymentsUpdate=Payment data correction
MigrationPaymentsNumberToUpdate=%s payment(s) to update
MigrationProcessPaymentUpdate=Update payment(s) %s
MigrationPaymentsNothingToUpdate=No more things to do
MigrationPaymentsNothingUpdatable=No more payments that can be corrected
MigrationContractsUpdate=Contract data correction
MigrationContractsNumberToUpdate=%s contract(s) to update
MigrationContractsLineCreation=Create contract line for contract ref %s
MigrationContractsNothingToUpdate=No more things to do
MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do.
MigrationContractsEmptyDatesUpdate=Contract empty date correction
MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly
MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct
MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct
MigrationContractsInvalidDatesUpdate=Bad value date contract correction
MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s)
MigrationContractsInvalidDatesNumber=%s contracts modified
MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct
MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction
MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly
MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct
MigrationReopeningContracts=Open contract closed by error
MigrationReopenThisContract=Reopen contract %s
MigrationReopenedContractsNumber=%s contracts modified
MigrationReopeningContractsNothingToUpdate=No closed contract to open
MigrationBankTransfertsUpdate=Update links between bank transaction and a bank transfer
MigrationBankTransfertsNothingToUpdate=All links are up to date
MigrationShipmentOrderMatching=Sendings receipt update
MigrationDeliveryOrderMatching=Delivery receipt update
MigrationDeliveryDetail=Delivery update
MigrationStockDetail=Update stock value of products
MigrationMenusDetail=Update dynamic menus tables
MigrationDeliveryAddress=Update delivery address in shipments
MigrationProjectTaskActors=Data migration for llx_projet_task_actors table
MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact
MigrationProjectTaskTime=Update time spent in seconds
MigrationActioncommElement=Update data on actions
MigrationPaymentMode=Data migration for payment mode
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
# HRM=HRM
# Holidays=Holidays
# CPTitreMenu=Holidays
# MenuReportMonth=Monthly statement
# MenuAddCP=Apply for holidays
# 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>.
# NoCPforUser=You don't have a demand for holidays.
# AddCP=Apply for holidays
# CPErrorSQL=An SQL error occurred:
# Employe=Employee
HRM=HRM
Holidays=Holidays
CPTitreMenu=Holidays
MenuReportMonth=Monthly statement
MenuAddCP=Apply for holidays
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>.
NoCPforUser=You don't have a demand for holidays.
AddCP=Apply for holidays
CPErrorSQL=An SQL error occurred:
Employe=Employee
DateDebCP=تاريخ البدء
DateFinCP=نهاية التاريخ
DateCreateCP=تاريخ الإنشاء
DraftCP=مسودة
# ToReviewCP=Awaiting approval
ToReviewCP=Awaiting approval
ApprovedCP=وافق
CancelCP=ألغيت
RefuseCP=رفض
# ValidatorCP=Approbator
# ListeCP=List of holidays
# ReviewedByCP=Will be reviewed by
ValidatorCP=Approbator
ListeCP=List of holidays
ReviewedByCP=Will be reviewed by
DescCP=وصف
# SendRequestCP=Creating demand for holidays
# DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
# MenuConfCP=Edit balance of holidays
# UpdateAllCP=Update the holidays
# SoldeCPUser=Holidays balance is <b>%s</b> days.
# ErrorEndDateCP=You must select an end date greater than the start date.
# ErrorSQLCreateCP=An SQL error occurred during the creation:
# ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.
# ReturnCP=Return to previous page
# ErrorUserViewCP=You are not authorized to read this request for holidays.
# InfosCP=Information of the demand of holidays
# InfosWorkflowCP=Information Workflow
DateCreateCP=تاريخ الإنشاء
# RequestByCP=Requested by
# TitreRequestCP=Sheet of holidays
# NbUseDaysCP=Number of days of holidays consumed
SendRequestCP=Creating demand for holidays
DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
MenuConfCP=Edit balance of holidays
UpdateAllCP=Update the holidays
SoldeCPUser=Holidays balance is <b>%s</b> days.
ErrorEndDateCP=You must select an end date greater than the start date.
ErrorSQLCreateCP=An SQL error occurred during the creation:
ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.
ReturnCP=Return to previous page
ErrorUserViewCP=You are not authorized to read this request for holidays.
InfosCP=Information of the demand of holidays
InfosWorkflowCP=Information Workflow
RequestByCP=Requested by
TitreRequestCP=Sheet of holidays
NbUseDaysCP=Number of days of holidays consumed
EditCP=ویرایش
DeleteCP=حذف
ActionValidCP=تایید کردن
# ActionRefuseCP=Refuse
ActionRefuseCP=Refuse
ActionCancelCP=لغو
StatutCP=حالة
# SendToValidationCP=Send to validation
# TitleDeleteCP=Delete the request of holidays
# ConfirmDeleteCP=Confirm the deletion of this request for holidays?
# ErrorCantDeleteCP=Error you don't have the right to delete this holiday request.
# CantCreateCP=You don't have the right to apply for holidays.
# InvalidValidatorCP=You must choose an approbator to your holiday request.
SendToValidationCP=Send to validation
TitleDeleteCP=Delete the request of holidays
ConfirmDeleteCP=Confirm the deletion of this request for holidays?
ErrorCantDeleteCP=Error you don't have the right to delete this holiday request.
CantCreateCP=You don't have the right to apply for holidays.
InvalidValidatorCP=You must choose an approbator to your holiday request.
UpdateButtonCP=به روز کردن
# CantUpdate=You cannot update this request of holidays.
# NoDateDebut=You must select a start date.
# NoDateFin=You must select an end date.
# ErrorDureeCP=Your request for holidays does not contain working day.
# TitleValidCP=Approve the request holidays
# ConfirmValidCP=Are you sure you want to approve the holiday request?
# DateValidCP=Date approved
# TitleToValidCP=Send request holidays
# ConfirmToValidCP=Are you sure you want to send the request of holidays?
# TitleRefuseCP=Refuse the request holidays
# ConfirmRefuseCP=Are you sure you want to refuse the request of holidays?
# NoMotifRefuseCP=You must choose a reason for refusing the request.
# TitleCancelCP=Cancel the request holidays
# ConfirmCancelCP=Are you sure you want to cancel the request of holidays?
# DetailRefusCP=Reason for refusal
# DateRefusCP=Date of refusal
# DateCancelCP=Date of cancellation
# DefineEventUserCP=Assign an exceptional leave for a user
# addEventToUserCP=Assign leave
CantUpdate=You cannot update this request of holidays.
NoDateDebut=You must select a start date.
NoDateFin=You must select an end date.
ErrorDureeCP=Your request for holidays does not contain working day.
TitleValidCP=Approve the request holidays
ConfirmValidCP=Are you sure you want to approve the holiday request?
DateValidCP=Date approved
TitleToValidCP=Send request holidays
ConfirmToValidCP=Are you sure you want to send the request of holidays?
TitleRefuseCP=Refuse the request holidays
ConfirmRefuseCP=Are you sure you want to refuse the request of holidays?
NoMotifRefuseCP=You must choose a reason for refusing the request.
TitleCancelCP=Cancel the request holidays
ConfirmCancelCP=Are you sure you want to cancel the request of holidays?
DetailRefusCP=Reason for refusal
DateRefusCP=Date of refusal
DateCancelCP=Date of cancellation
DefineEventUserCP=Assign an exceptional leave for a user
addEventToUserCP=Assign leave
MotifCP=سبب
UserCP=مستخدم
# ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
# AddEventToUserOkCP=The addition of the exceptional leave has been completed.
# MenuLogCP=View logs of holidays
# LogCP=Log of updates of holidays
# ActionByCP=Performed by
# UserUpdateCP=For the user
# PrevSoldeCP=Previous Balance
# NewSoldeCP=New Balance
# alreadyCPexist=A request for holidays has already been done on this period.
ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
AddEventToUserOkCP=The addition of the exceptional leave has been completed.
MenuLogCP=View logs of holidays
LogCP=Log of updates of holidays
ActionByCP=Performed by
UserUpdateCP=For the user
PrevSoldeCP=Previous Balance
NewSoldeCP=New Balance
alreadyCPexist=A request for holidays has already been done on this period.
UserName=اسم
# Employee=Employee
# FirstDayOfHoliday=First day of holiday
# LastDayOfHoliday=Last day of holiday
# HolidaysMonthlyUpdate=Monthly update
# ManualUpdate=Manual update
# HolidaysCancelation=Holidays cancelation
Employee=Employee
FirstDayOfHoliday=First day of holiday
LastDayOfHoliday=Last day of holiday
HolidaysMonthlyUpdate=Monthly update
ManualUpdate=Manual update
HolidaysCancelation=Holidays cancelation
## Configuration du Module ##
# ConfCP=Configuration of holidays module
# DescOptionCP=Description of the option
ConfCP=Configuration of holidays module
DescOptionCP=Description of the option
ValueOptionCP=القيمة
# GroupToValidateCP=Group with the ability to approve holidays
# ConfirmConfigCP=Validate the configuration
# LastUpdateCP=Last updated automatically of holidays
# UpdateConfCPOK=Updated successfully.
# 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>.
# DelayForSubmitCP=Deadline to apply for holidays
# AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
# AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
# AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
# nbUserCP=Number of users supported in the module holidays
# nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
# nbHolidayEveryMonthCP=Number of holidays added every month
# Module27130Name= Management of holidays
# Module27130Desc= Management of holidays
# TitleOptionMainCP=Main settings of holidays
# TitleOptionEventCP=Settings of holidays related to events
GroupToValidateCP=Group with the ability to approve holidays
ConfirmConfigCP=Validate the configuration
LastUpdateCP=Last updated automatically of holidays
UpdateConfCPOK=Updated successfully.
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>.
DelayForSubmitCP=Deadline to apply for holidays
AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
nbUserCP=Number of users supported in the module holidays
nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
nbHolidayEveryMonthCP=Number of holidays added every month
Module27130Name= Management of holidays
Module27130Desc= Management of holidays
TitleOptionMainCP=Main settings of holidays
TitleOptionEventCP=Settings of holidays related to events
ValidEventCP=تایید کردن
# UpdateEventCP=Update events
UpdateEventCP=Update events
CreateEventCP=خلق
# NameEventCP=Event name
# OkCreateEventCP=The addition of the event went well.
# ErrorCreateEventCP=Error creating the event.
# UpdateEventOkCP=The update of the event went well.
# ErrorUpdateEventCP=Error while updating the event.
# DeleteEventCP=Delete Event
# DeleteEventOkCP=The event has been deleted.
# ErrorDeleteEventCP=Error while deleting the event.
# TitleDeleteEventCP=Delete a exceptional leave
# TitleCreateEventCP=Create a exceptional leave
# TitleUpdateEventCP=Edit or delete a exceptional leave
NameEventCP=Event name
OkCreateEventCP=The addition of the event went well.
ErrorCreateEventCP=Error creating the event.
UpdateEventOkCP=The update of the event went well.
ErrorUpdateEventCP=Error while updating the event.
DeleteEventCP=Delete Event
DeleteEventOkCP=The event has been deleted.
ErrorDeleteEventCP=Error while deleting the event.
TitleDeleteEventCP=Delete a exceptional leave
TitleCreateEventCP=Create a exceptional leave
TitleUpdateEventCP=Edit or delete a exceptional leave
DeleteEventOptionCP=حذف
UpdateEventOptionCP=به روز کردن
# ErrorMailNotSend=An error occurred while sending email:
# NoCPforMonth=No leave this month.
# nbJours=Number days
# TitleAdminCP=Configuration of Holidays
ErrorMailNotSend=An error occurred while sending email:
NoCPforMonth=No leave this month.
nbJours=Number days
TitleAdminCP=Configuration of Holidays
#Messages
# Hello=Hello
# HolidaysToValidate=Validate holidays
# 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.
# HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
# HolidaysValidated=Validated holidays
# HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
# HolidaysRefused=Denied holidays
# HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
# HolidaysCanceled=Canceled holidays
# HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
# Permission20001=Read/create/modify their holidays
# Permission20002=Read/modify all requests of holidays
# Permission20003=Delete their holidays requests
# Permission20004=Define users holidays
# Permission20005=Review log of modified holidays
# Permission20006=Access holidays monthly report
Hello=Hello
HolidaysToValidate=Validate holidays
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.
HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
HolidaysValidated=Validated holidays
HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
HolidaysRefused=Denied holidays
HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled holidays
HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20000=Read you own holidays
Permission20001=Create/modify your holidays
Permission20002=Create/modify holidays for everybody
Permission20003=Delete holidays requests
Permission20004=Setup users holidays
Permission20005=Review log of modified holidays
Permission20006=Read holidays monthly report

View File

@ -8,7 +8,7 @@ ConfFileDoesNotExistsAndCouldNotBeCreated=ملفات <b>ل ٪</b> لا وجود
ConfFileCouldBeCreated=ملفات <b>ل ٪</b> ويمكن أن تنشأ.
ConfFileIsNotWritable=ملفات <b>٪ ق</b> ليست للكتابة. التحقق من الأذونات. أولا لتركيب وخدمة الويب الخاص بك يجب أن تمنح ليكون قادرا على الكتابة في هذا الملف خلال عملية التهيئة ( "chmod 666" على سبيل المثال ، مثل نظام التشغيل يونكس).
ConfFileIsWritable=ملفات للكتابة هو <b>٪ ق.</b>
# ConfFileReload=Reload all information from configuration file.
ConfFileReload=Reload all information from configuration file.
PHPSupportSessions=ويدعم هذا PHP الدورات.
PHPSupportPOSTGETOk=ويدعم هذا PHP المتغيرات والحصول على الوظائف.
PHPSupportPOSTGETKo=فمن الممكن PHP الإعداد الخاص بك لا يدعم الوظائف المتغيرات و / أو الحصول عليه. التحقق من اتصالك <b>variables_order</b> معلمة في php.ini.
@ -25,14 +25,14 @@ ErrorGoBackAndCorrectParameters=العودة إلى الوراء وتصحيح ا
ErrorWrongValueForParameter=قد تكون لديكم مطبوعة خاطئة قيمة معلمة '٪ ق.
ErrorFailedToCreateDatabase=فشل إنشاء قاعدة بيانات '٪ ق.
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 نسخة قديمة جدا. النسخة ٪ ق هو مطلوب.
# 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=خادم الصدد الى قاعدة البيانات ولكن النجاح في '٪ ق' لم يتم العثور عليه.
ErrorDatabaseAlreadyExists=قاعدة البيانات '٪ ق' موجود بالفعل.
IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كان لا وجود قاعدة بيانات ، والتأكد من العودة الخيار "إنشاء قاعدة بيانات".
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 الإصدار
YouCanContinue=يمكنك الاستمرار...
PleaseBePatient=يرجى التحلي بالصبر...
@ -52,7 +52,7 @@ ServerAddressDescription=الملكية الفكرية في اسم أو عنوا
ServerPortDescription=قاعدة بيانات الميناء. تبقي فارغة إذا كانت غير معروفة.
DatabaseServer=خادم قاعدة البيانات
DatabaseName=اسم قاعدة البيانات
# DatabasePrefix=Database prefix table
DatabasePrefix=Database prefix table
Login=تسجيل الدخول
AdminLogin=ادخل لDolibarr مدير قاعدة البيانات. تبقي فارغة إذا لم يذكر اسمه في اتصال
Password=كلمة السر
@ -135,13 +135,13 @@ RemoveItManuallyAndPressF5ToContinue=إزالته يدويا واضغط F5 لل
KeepDefaultValuesWamp=استخدام معالج الإعداد DoliWamp ، حتى القيم المقترحة هنا بالفعل الأمثل. تغييرها إلا إذا كنت تعرف ما تفعله.
KeepDefaultValuesDeb=يمكنك استخدام معالج الإعداد Dolibarr من أوبونتو أو حزمة ديبيان ، لذلك القيم المقترحة هنا هي الأمثل بالفعل. يجب أن تكتمل إلا كلمة السر للمالك قاعدة البيانات لإنشاء. تغيير معلمات أخرى إلا إذا كنت تعرف ما تفعله.
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=تغيير اسم الميدان
IfLoginDoesNotExistsCheckCreateUser=اذا ادخل لا يوجد حتى الآن ، يجب عليك التحقق من خيار "تكوين المستخدم"
ErrorConnection=الخادم <b>"٪ ل"</b> اسم قاعدة بيانات <b>"٪ ل"</b> ادخل <b>"٪ ل"</b> أو كلمة سر قاعدة البيانات قد تكون خاطئة أو PHP العميل نسخة قديمة جدا ويمكن مقارنة مع قاعدة البيانات نسخة.
InstallChoiceRecommanded=وأوصت لتثبيت اختيار النسخة <b>٪ المستندات</b> الخاصة بك من النسخة الحالية <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> هو الصحيح.
IfAlreadyExistsCheckOption=وإذا كان هذا الاسم هو الصحيح وأنه لا وجود قاعدة بيانات حتى الآن ، ويجب التحقق من خيار "إنشاء قاعدة بيانات".
OpenBaseDir=بي openbasedir المعلمة
@ -153,12 +153,11 @@ MigrationShippingDelivery=ترقية تخزين الشحن
MigrationShippingDelivery2=ترقية تخزين الشحن 2
MigrationFinished=مهاجرت به پایان رسید
LastStepDesc=<strong>آخرین مرحله</strong> : در اینجا با نام کاربری خود وارد شوید و رمز عبور تعریف شما قصد دارید استفاده برای اتصال به نرم افزار. سست این ، آن را به عنوان حساب اداره از همه دیگران نیست.
# ActivateModule=Activate module %s
# ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
ActivateModule=Activate module %s
ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode)
#########
# upgrade
#########
MigrationFixData=إصلاح البيانات الذي لم تتم تسويته
MigrationOrder=بيانات الهجرة طلبات الزبائن
MigrationSupplierOrder=بيانات الهجرة من أجل الموردين أوامر
@ -205,5 +204,8 @@ MigrationProjectTaskActors=بيانات الهجرة لllx_projet_task_actors ا
MigrationProjectUserResp=بيانات fk_user_resp مجال الهجرة من llx_projet لllx_element_contact
MigrationProjectTaskTime=تحديث الوقت الذي يقضيه في ثوان
MigrationActioncommElement=به روز رسانی داده ها در اعمال
# MigrationPaymentMode=Data migration for payment mode
# MigrationCategorieAssociation=Migration of categories
MigrationPaymentMode=Data migration for payment mode
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
# HRM=HRM
# Holidays=Holidays
# CPTitreMenu=Holidays
# MenuReportMonth=Monthly statement
# MenuAddCP=Apply for holidays
# 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>.
# NoCPforUser=You don't have a demand for holidays.
# AddCP=Apply for holidays
# CPErrorSQL=An SQL error occurred:
# Employe=Employee
HRM=HRM
Holidays=Vapaapäivät
CPTitreMenu=Holidays
MenuReportMonth=Monthly statement
MenuAddCP=Apply for holidays
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>.
NoCPforUser=Sinulla ei ole voimassa olevaa lomatoivomusta.
AddCP=Apply for holidays
CPErrorSQL=An SQL error occurred:
Employe=Työntekijä
DateDebCP=Aloituspäivämäärä
DateFinCP=Lopetuspäivä
DateCreateCP=Luontipäivämäärä
DraftCP=Luonnos
# ToReviewCP=Awaiting approval
ToReviewCP=Awaiting approval
ApprovedCP=Hyväksytty
CancelCP=Peruttu
RefuseCP=Refused
# ValidatorCP=Approbator
# ListeCP=List of holidays
# ReviewedByCP=Will be reviewed by
ValidatorCP=Approbator
ListeCP=List of holidays
ReviewedByCP=Will be reviewed by
DescCP=Kuvaus
# SendRequestCP=Creating demand for holidays
# DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
# MenuConfCP=Edit balance of holidays
# UpdateAllCP=Update the holidays
# SoldeCPUser=Holidays balance is <b>%s</b> days.
# ErrorEndDateCP=You must select an end date greater than the start date.
# ErrorSQLCreateCP=An SQL error occurred during the creation:
# ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.
# ReturnCP=Return to previous page
# ErrorUserViewCP=You are not authorized to read this request for holidays.
# InfosCP=Information of the demand of holidays
# InfosWorkflowCP=Information Workflow
DateCreateCP=Luontipäivämäärä
# RequestByCP=Requested by
# TitreRequestCP=Sheet of holidays
# NbUseDaysCP=Number of days of holidays consumed
SendRequestCP=Creating demand for holidays
DelayToRequestCP=Applications for holidays must be made at least <b>%s day(s)</b> before them.
MenuConfCP=Edit balance of holidays
UpdateAllCP=Update the holidays
SoldeCPUser=Holidays balance is <b>%s</b> days.
ErrorEndDateCP=You must select an end date greater than the start date.
ErrorSQLCreateCP=An SQL error occurred during the creation:
ErrorIDFicheCP=An error has occurred, the request for holidays does not exist.
ReturnCP=Return to previous page
ErrorUserViewCP=You are not authorized to read this request for holidays.
InfosCP=Information of the demand of holidays
InfosWorkflowCP=Information Workflow
RequestByCP=Requested by
TitreRequestCP=Sheet of holidays
NbUseDaysCP=Number of days of holidays consumed
EditCP=Muokkaa
DeleteCP=Poistaa
ActionValidCP=Validate
# ActionRefuseCP=Refuse
ActionRefuseCP=Refuse
ActionCancelCP=Peruuta
StatutCP=Tila
# SendToValidationCP=Send to validation
# TitleDeleteCP=Delete the request of holidays
# ConfirmDeleteCP=Confirm the deletion of this request for holidays?
# ErrorCantDeleteCP=Error you don't have the right to delete this holiday request.
# CantCreateCP=You don't have the right to apply for holidays.
# InvalidValidatorCP=You must choose an approbator to your holiday request.
SendToValidationCP=Send to validation
TitleDeleteCP=Delete the request of holidays
ConfirmDeleteCP=Confirm the deletion of this request for holidays?
ErrorCantDeleteCP=Error you don't have the right to delete this holiday request.
CantCreateCP=You don't have the right to apply for holidays.
InvalidValidatorCP=You must choose an approbator to your holiday request.
UpdateButtonCP=Päivittää
# CantUpdate=You cannot update this request of holidays.
# NoDateDebut=You must select a start date.
# NoDateFin=You must select an end date.
# ErrorDureeCP=Your request for holidays does not contain working day.
# TitleValidCP=Approve the request holidays
# ConfirmValidCP=Are you sure you want to approve the holiday request?
# DateValidCP=Date approved
# TitleToValidCP=Send request holidays
# ConfirmToValidCP=Are you sure you want to send the request of holidays?
# TitleRefuseCP=Refuse the request holidays
# ConfirmRefuseCP=Are you sure you want to refuse the request of holidays?
# NoMotifRefuseCP=You must choose a reason for refusing the request.
# TitleCancelCP=Cancel the request holidays
# ConfirmCancelCP=Are you sure you want to cancel the request of holidays?
# DetailRefusCP=Reason for refusal
# DateRefusCP=Date of refusal
# DateCancelCP=Date of cancellation
# DefineEventUserCP=Assign an exceptional leave for a user
# addEventToUserCP=Assign leave
CantUpdate=You cannot update this request of holidays.
NoDateDebut=You must select a start date.
NoDateFin=You must select an end date.
ErrorDureeCP=Your request for holidays does not contain working day.
TitleValidCP=Approve the request holidays
ConfirmValidCP=Are you sure you want to approve the holiday request?
DateValidCP=Date approved
TitleToValidCP=Send request holidays
ConfirmToValidCP=Are you sure you want to send the request of holidays?
TitleRefuseCP=Refuse the request holidays
ConfirmRefuseCP=Are you sure you want to refuse the request of holidays?
NoMotifRefuseCP=You must choose a reason for refusing the request.
TitleCancelCP=Cancel the request holidays
ConfirmCancelCP=Are you sure you want to cancel the request of holidays?
DetailRefusCP=Reason for refusal
DateRefusCP=Date of refusal
DateCancelCP=Date of cancellation
DefineEventUserCP=Assign an exceptional leave for a user
addEventToUserCP=Assign leave
MotifCP=Syy
UserCP=Käyttäjä
# ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
# AddEventToUserOkCP=The addition of the exceptional leave has been completed.
# MenuLogCP=View logs of holidays
# LogCP=Log of updates of holidays
# ActionByCP=Performed by
# UserUpdateCP=For the user
# PrevSoldeCP=Previous Balance
# NewSoldeCP=New Balance
# alreadyCPexist=A request for holidays has already been done on this period.
ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
AddEventToUserOkCP=The addition of the exceptional leave has been completed.
MenuLogCP=View logs of holidays
LogCP=Log of updates of holidays
ActionByCP=Performed by
UserUpdateCP=For the user
PrevSoldeCP=Previous Balance
NewSoldeCP=New Balance
alreadyCPexist=A request for holidays has already been done on this period.
UserName=Nimi
# Employee=Employee
# FirstDayOfHoliday=First day of holiday
# LastDayOfHoliday=Last day of holiday
# HolidaysMonthlyUpdate=Monthly update
# ManualUpdate=Manual update
# HolidaysCancelation=Holidays cancelation
Employee=Employee
FirstDayOfHoliday=First day of holiday
LastDayOfHoliday=Last day of holiday
HolidaysMonthlyUpdate=Monthly update
ManualUpdate=Manual update
HolidaysCancelation=Holidays cancelation
## Configuration du Module ##
# ConfCP=Configuration of holidays module
# DescOptionCP=Description of the option
ConfCP=Configuration of holidays module
DescOptionCP=Description of the option
ValueOptionCP=Value
# GroupToValidateCP=Group with the ability to approve holidays
# ConfirmConfigCP=Validate the configuration
# LastUpdateCP=Last updated automatically of holidays
# UpdateConfCPOK=Updated successfully.
# 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>.
# DelayForSubmitCP=Deadline to apply for holidays
# AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
# AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
# AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
# nbUserCP=Number of users supported in the module holidays
# nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
# nbHolidayEveryMonthCP=Number of holidays added every month
# Module27130Name= Management of holidays
# Module27130Desc= Management of holidays
# TitleOptionMainCP=Main settings of holidays
# TitleOptionEventCP=Settings of holidays related to events
GroupToValidateCP=Group with the ability to approve holidays
ConfirmConfigCP=Validate the configuration
LastUpdateCP=Last updated automatically of holidays
UpdateConfCPOK=Updated successfully.
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>.
DelayForSubmitCP=Deadline to apply for holidays
AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline
AlertValidatorDelayCP=Préevent the approbator if the holiday request exceed delay
AlertValidorSoldeCP=Prevent the approbator if the holiday request exceed the balance
nbUserCP=Number of users supported in the module holidays
nbHolidayDeductedCP=Number of holidays to be deducted per day of holiday taken
nbHolidayEveryMonthCP=Number of holidays added every month
Module27130Name= Management of holidays
Module27130Desc= Management of holidays
TitleOptionMainCP=Main settings of holidays
TitleOptionEventCP=Settings of holidays related to events
ValidEventCP=Validate
# UpdateEventCP=Update events
UpdateEventCP=Update events
CreateEventCP=Luo
# NameEventCP=Event name
# OkCreateEventCP=The addition of the event went well.
# ErrorCreateEventCP=Error creating the event.
# UpdateEventOkCP=The update of the event went well.
# ErrorUpdateEventCP=Error while updating the event.
# DeleteEventCP=Delete Event
# DeleteEventOkCP=The event has been deleted.
# ErrorDeleteEventCP=Error while deleting the event.
# TitleDeleteEventCP=Delete a exceptional leave
# TitleCreateEventCP=Create a exceptional leave
# TitleUpdateEventCP=Edit or delete a exceptional leave
NameEventCP=Event name
OkCreateEventCP=The addition of the event went well.
ErrorCreateEventCP=Error creating the event.
UpdateEventOkCP=The update of the event went well.
ErrorUpdateEventCP=Error while updating the event.
DeleteEventCP=Delete Event
DeleteEventOkCP=The event has been deleted.
ErrorDeleteEventCP=Error while deleting the event.
TitleDeleteEventCP=Delete a exceptional leave
TitleCreateEventCP=Create a exceptional leave
TitleUpdateEventCP=Edit or delete a exceptional leave
DeleteEventOptionCP=Poistaa
UpdateEventOptionCP=Päivittää
# ErrorMailNotSend=An error occurred while sending email:
# NoCPforMonth=No leave this month.
# nbJours=Number days
# TitleAdminCP=Configuration of Holidays
ErrorMailNotSend=An error occurred while sending email:
NoCPforMonth=No leave this month.
nbJours=Number days
TitleAdminCP=Configuration of Holidays
#Messages
# Hello=Hello
# HolidaysToValidate=Validate holidays
# 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.
# HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
# HolidaysValidated=Validated holidays
# HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
# HolidaysRefused=Denied holidays
# HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
# HolidaysCanceled=Canceled holidays
# HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
# Permission20001=Read/create/modify their holidays
# Permission20002=Read/modify all requests of holidays
# Permission20003=Delete their holidays requests
# Permission20004=Define users holidays
# Permission20005=Review log of modified holidays
# Permission20006=Access holidays monthly report
Hello=Hello
HolidaysToValidate=Validate holidays
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.
HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
HolidaysValidated=Validated holidays
HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
HolidaysRefused=Denied holidays
HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled holidays
HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20000=Read you own holidays
Permission20001=Create/modify your holidays
Permission20002=Create/modify holidays for everybody
Permission20003=Delete holidays requests
Permission20004=Setup users holidays
Permission20005=Review log of modified holidays
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).
ConfFileIsWritable=Configuration <b>file %s</b> on kirjoitettavissa.
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.
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.
@ -25,14 +25,14 @@ ErrorGoBackAndCorrectParameters=Siirry taaksepäin ja korjata väärin parametri
ErrorWrongValueForParameter=Olet ehkä kirjoittanut väärän arvon parametri ' %s'.
ErrorFailedToCreateDatabase=Luominen epäonnistui 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.
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.
ErrorDatabaseAlreadyExists=Database ' %s' on jo olemassa.
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.
# 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
YouCanContinue=Voit jatkaa ...
PleaseBePatient=Ole kärsivällinen ...
@ -154,11 +154,10 @@ MigrationShippingDelivery2=Päivitä varastointi merenkulun 2
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.
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
#########
MigrationFixData=Korjaus denormalized tiedot
MigrationOrder=Tietojen siirtäminen asiakkaiden tilauksia
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
MigrationActioncommElement=Päivitä tiedot toimista
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.
InfosCP=Informations de la demande de congés
InfosWorkflowCP=Informations du workflow
DateCreateCP=Date de création
RequestByCP=Demandée par
TitreRequestCP=Fiche Congé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.
nbJours=Nombre jours
TitleAdminCP=Configuration des Congés
#Messages
Hello=Bonjour
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 :
HolidaysCanceled=Congés payés annulée
HolidaysCanceledBody=Votre demande de congés %s à %s va été annulée.
Permission20001=Lire / Créer / modifier ses congès
Permission20002=Lire / Modifier toutes les demandes de congés payés
Permission20003=Supprimer des demandes de congés payés
Permission20004=Définir les congés payés des utilisateurs
Permission20000=Lire ses propres congès
Permission20001=Créer/modifier ses propres congès
Permission20002=Créer/modifier les congès pour tout le monde
Permission20003=Supprimer les demandes de congés
Permission20004=Définir les congés des utilisateurs
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