Merge remote-tracking branch 'Dolibarr/12.0' into 12
This commit is contained in:
commit
df297f89d0
12
ChangeLog
12
ChangeLog
@ -3,7 +3,7 @@ English Dolibarr ChangeLog
|
||||
--------------------------------------------------------------
|
||||
|
||||
|
||||
***** ChangeLog for 12.0 compared to 11.0 *****
|
||||
***** ChangeLog for 12.0.0 compared to 11.0.0 *****
|
||||
For users:
|
||||
|
||||
NEW: Module MO (Manufacturing Order) is available as stable module.
|
||||
@ -230,6 +230,16 @@ Following changes may create regressions for some external modules, but were nec
|
||||
- remove input field in form '<input type="hidden" name="page" value="'.$page.'">';'
|
||||
- add parameter $pagenavastextinput to value 1 when calling print_barre_liste()
|
||||
|
||||
WARNING FOR DOLIWAMP USERS ONLY:
|
||||
|
||||
Only people that installed Dolibarr using the all-in-one autoinstaller for Windows called "DoliWAMP" are concerned by the following warnings:
|
||||
|
||||
* DoliWAMP autoinstaller for Windows is not more available on 32bits systems. Use standard package if you need to use such architecture.
|
||||
* It is not possible to migrate from an installation done with the old DoliWAMP autoinstaller for Windows by using this new one. You must make a backup
|
||||
of your database, make a fresh installation using the new installer and reload.
|
||||
* Don't forget that DoliWAMP is a good solution to make a quick test of Dolibarr on your local computer but was never recommanded as a production
|
||||
solution on a local desktop since a desktop computer has not a backup and security policy as good as on a server (when there is one).
|
||||
DoliWAMP remains a solution for fast test or demo purposes.
|
||||
|
||||
|
||||
***** ChangeLog for 11.0.4 compared to 11.0.3 *****
|
||||
|
||||
@ -41,7 +41,7 @@ Compression=lzma
|
||||
SolidCompression=yes
|
||||
WizardImageFile=build\exe\doliwamp\doliwamp.bmp
|
||||
WizardSmallImageFile=build\exe\doliwamp\doliwampsmall.bmp
|
||||
SetupIconFile=doc\images\dolibarr.ico
|
||||
SetupIconFile=doc\images\dolibarr_favicon.ico
|
||||
;To say the installer must be ran as admin
|
||||
PrivilegesRequired=admin
|
||||
DisableProgramGroupPage=yes
|
||||
@ -104,7 +104,7 @@ Source: "build\exe\doliwamp\UsedPort.exe"; DestDir: "{app}\"; Flags: ignoreversi
|
||||
; Value OK: apache 2.2.6, php 5.2.5 (5.2.11, 5.3.0 and 5.3.1 fails if php_exif, php_pgsql, php_zip is on), mysql 5.0.45
|
||||
; Value OK: apache 2.2.11, php 5.3.0 (if no php_exif, php_pgsql, php_zip), mysql 5.0.45
|
||||
; Value OK: apache 2.4.9, php 5.5.12, mysql 5.0.45 instead of 5.6.17 (wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32b.exe)
|
||||
; Value To test: apache 2.4.41, php 7.3.12, mysql 5.0.45 instead of 5.6.17 (wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32b.exe)
|
||||
; Value To test: apache 2.4.41, php 7.3.12, mariadb10.4.10 (wampserver3.2.0_x64.exe)
|
||||
Source: "C:\Program Files\Wamp\apps\phpmyadmin4.1.14\*.*"; DestDir: "{app}\apps\phpmyadmin4.1.14"; Flags: ignoreversion recursesubdirs; Excludes: "config.inc.php,wampserver.conf,*.log,*_log,darkblue_orange"
|
||||
;Source: "C:\Program Files\Wamp\bin\apache\apache2.4.9\*.*"; DestDir: "{app}\bin\apache\apache2.4.9"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,httpd.conf,wampserver.conf,*.log,*_log"
|
||||
Source: "C:\wamp64\bin\apache\apache2.4.41\*.*"; DestDir: "{app}\bin\apache\apache2.4.41"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,httpd.conf,wampserver.conf,*.log,*_log"
|
||||
|
||||
@ -304,7 +304,7 @@ expose_php = On
|
||||
max_execution_time = 30 ; Maximum execution time of each script, in seconds
|
||||
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
|
||||
;max_input_nesting_level = 64 ; Maximum input variable nesting level
|
||||
memory_limit = 64M ; Maximum amount of memory a script may consume (128MB)
|
||||
memory_limit = 256M ; Maximum amount of memory a script may consume (128MB)
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
@ -90,7 +90,7 @@ cui hai bisogno ed essere facile da usare.
|
||||
%{__install} -m 644 build/rpm/install.forced.php.fedora $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/install.forced.php
|
||||
|
||||
%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/pixmaps
|
||||
%{__install} -m 644 doc/images/dolibarr_48x48.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/%{name}.png
|
||||
%{__install} -m 644 doc/images/appicon_64.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/%{name}.png
|
||||
%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/applications
|
||||
#desktop-file-install --delete-original --dir=$RPM_BUILD_ROOT%{_datadir}/applications build/rpm/%{name}.desktop
|
||||
%{__install} -m 644 build/rpm/dolibarr.desktop $RPM_BUILD_ROOT%{_datadir}/applications/%{name}.desktop
|
||||
|
||||
@ -150,7 +150,7 @@ cui hai bisogno ed essere facile da usare.
|
||||
%endif
|
||||
|
||||
%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/pixmaps
|
||||
%{__install} -m 644 doc/images/dolibarr_48x48.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/%{name}.png
|
||||
%{__install} -m 644 doc/images/appicon_64.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/%{name}.png
|
||||
%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/applications
|
||||
%{__install} -m 644 build/rpm/dolibarr.desktop $RPM_BUILD_ROOT%{_datadir}/applications/%{name}.desktop
|
||||
%if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version} || 0%{?mdkversion} || 0%{?suse_version}
|
||||
|
||||
@ -89,7 +89,7 @@ cui hai bisogno ed essere facile da usare.
|
||||
%{__install} -m 644 build/rpm/install.forced.php.mandriva $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/install.forced.php
|
||||
|
||||
%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/pixmaps
|
||||
%{__install} -m 644 doc/images/dolibarr_48x48.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/%{name}.png
|
||||
%{__install} -m 644 doc/images/appicon_64.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/%{name}.png
|
||||
%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/applications
|
||||
#desktop-file-install --delete-original --dir=$RPM_BUILD_ROOT%{_datadir}/applications build/rpm/%{name}.desktop
|
||||
%{__install} -m 644 build/rpm/dolibarr.desktop $RPM_BUILD_ROOT%{_datadir}/applications/%{name}.desktop
|
||||
|
||||
@ -90,7 +90,7 @@ cui hai bisogno ed essere facile da usare.
|
||||
%{__install} -m 644 build/rpm/install.forced.php.opensuse $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/install.forced.php
|
||||
|
||||
%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/pixmaps
|
||||
%{__install} -m 644 doc/images/dolibarr_48x48.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/%{name}.png
|
||||
%{__install} -m 644 doc/images/appicon_64.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/%{name}.png
|
||||
%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/applications
|
||||
#desktop-file-install --delete-original --dir=$RPM_BUILD_ROOT%{_datadir}/applications build/rpm/%{name}.desktop
|
||||
%{__install} -m 644 build/rpm/dolibarr.desktop $RPM_BUILD_ROOT%{_datadir}/applications/%{name}.desktop
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
#------------------------------------------------------
|
||||
# Script to pull language files to Transifex
|
||||
#
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
#------------------------------------------------------
|
||||
# Script to push language files to Transifex
|
||||
#
|
||||
|
||||
@ -41,7 +41,7 @@ $action = GETPOST('action', 'aZ09');
|
||||
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
|
||||
|
||||
$id = GETPOST('id', 'int'); // id of record
|
||||
$mode = GETPOST('mode', 'aZ09'); // '' or 'tmp'
|
||||
$mode = GETPOST('mode', 'aZ09'); // '' or '_tmp'
|
||||
$piece_num = GETPOST("piece_num", 'int'); // id of transaction (several lines share the same transaction id)
|
||||
|
||||
// Security check
|
||||
|
||||
@ -1085,7 +1085,7 @@ class AccountancyExport
|
||||
|
||||
print $racine_subledger_account.$separator; // deprecated CPTG & CPTA use instead
|
||||
// MONT
|
||||
print price(abs($line->montant), 0, '', 1, 2).$separator;
|
||||
print price(abs($line->montant), 0, '', 1, 2, 2).$separator;
|
||||
// CODC
|
||||
print $line->sens.$separator;
|
||||
// CPTG
|
||||
|
||||
@ -1127,7 +1127,7 @@ class BookKeeping extends CommonObject
|
||||
*
|
||||
* @param User $user User that modifies
|
||||
* @param bool $notrigger false=launch triggers after, true=disable triggers
|
||||
* @param string $mode Mode
|
||||
* @param string $mode Mode ('' or _tmp')
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
public function update(User $user, $notrigger = false, $mode = '')
|
||||
@ -1254,12 +1254,12 @@ class BookKeeping extends CommonObject
|
||||
}
|
||||
|
||||
/**
|
||||
* Update movement
|
||||
* Update accounting movement
|
||||
*
|
||||
* @param string $piece_num Piece num
|
||||
* @param string $field Field
|
||||
* @param string $value Value
|
||||
* @param string $mode Mode
|
||||
* @param string $mode Mode ('' or _tmp')
|
||||
* @return number <0 if KO, >0 if OK
|
||||
*/
|
||||
public function updateByMvt($piece_num = '', $field = '', $value = '', $mode = '')
|
||||
@ -1268,9 +1268,9 @@ class BookKeeping extends CommonObject
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element.$mode." as ab";
|
||||
$sql .= ' SET ab.'.$field.'='.(is_numeric($value) ? $value : "'".$this->db->escape($value)."'");
|
||||
$sql .= ' WHERE ab.piece_num='.$piece_num;
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element.$mode;
|
||||
$sql .= ' SET '.$field.'='.(is_numeric($value) ? $value : "'".$this->db->escape($value)."'");
|
||||
$sql .= " WHERE piece_num = '".$this->db->escape($piece_num)."'";
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
if (!$resql) {
|
||||
|
||||
@ -996,7 +996,8 @@ else
|
||||
print '</td></tr>';
|
||||
|
||||
// EMail
|
||||
print '<tr><td>'.img_picto('', 'object_email').' '.($conf->global->ADHERENT_MAIL_REQUIRED ? '<span class="fieldrequired">' : '').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED ? '</span>' : '').'</td><td><input type="text" name="member_email" class="minwidth300" maxlength="255" value="'.(GETPOSTISSET('member_email') ? GETPOST('member_email', 'alpha') : $object->email).'"></td></tr>';
|
||||
print '<tr><td>'.($conf->global->ADHERENT_MAIL_REQUIRED ? '<span class="fieldrequired">' : '').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED ? '</span>' : '').'</td>';
|
||||
print '<td>'.img_picto('', 'object_email').' <input type="text" name="member_email" class="minwidth300" maxlength="255" value="'.(GETPOSTISSET('member_email') ? GETPOST('member_email', 'alpha') : $object->email).'"></td></tr>';
|
||||
|
||||
// Address
|
||||
print '<tr><td class="tdtop">'.$langs->trans("Address").'</td><td>';
|
||||
@ -1033,13 +1034,16 @@ else
|
||||
}
|
||||
|
||||
// Pro phone
|
||||
print '<tr><td>'.img_picto('', 'object_phoning').' '.$langs->trans("PhonePro").'</td><td><input type="text" name="phone" size="20" value="'.(GETPOSTISSET('phone') ? GETPOST('phone', 'alpha') : $object->phone).'"></td></tr>';
|
||||
print '<tr><td>'.$langs->trans("PhonePro").'</td>';
|
||||
print '<td>'.img_picto('', 'object_phoning').' <input type="text" name="phone" size="20" value="'.(GETPOSTISSET('phone') ? GETPOST('phone', 'alpha') : $object->phone).'"></td></tr>';
|
||||
|
||||
// Personal phone
|
||||
print '<tr><td>'.img_picto('', 'object_phoning').' '.$langs->trans("PhonePerso").'</td><td><input type="text" name="phone_perso" size="20" value="'.(GETPOSTISSET('phone_perso') ? GETPOST('phone_perso', 'alpha') : $object->phone_perso).'"></td></tr>';
|
||||
print '<tr><td>'.$langs->trans("PhonePerso").'</td>';
|
||||
print '<td>'.img_picto('', 'object_phoning').' <input type="text" name="phone_perso" size="20" value="'.(GETPOSTISSET('phone_perso') ? GETPOST('phone_perso', 'alpha') : $object->phone_perso).'"></td></tr>';
|
||||
|
||||
// Mobile phone
|
||||
print '<tr><td>'.img_picto('', 'object_phoning_mobile').' '.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(GETPOSTISSET('phone_mobile') ? GETPOST('phone_mobile', 'alpha') : $object->phone_mobile).'"></td></tr>';
|
||||
print '<tr><td>'.$langs->trans("PhoneMobile").'</td>';
|
||||
print '<td>'.img_picto('', 'object_phoning_mobile').' <input type="text" name="phone_mobile" size="20" value="'.(GETPOSTISSET('phone_mobile') ? GETPOST('phone_mobile', 'alpha') : $object->phone_mobile).'"></td></tr>';
|
||||
|
||||
if (!empty($conf->socialnetworks->enabled)) {
|
||||
foreach ($socialnetworks as $key => $value) {
|
||||
@ -1249,7 +1253,8 @@ else
|
||||
print '</td></tr>';
|
||||
|
||||
// EMail
|
||||
print '<tr><td>'.img_picto('', 'object_email').' '.($conf->global->ADHERENT_MAIL_REQUIRED ? '<span class="fieldrequired">' : '').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED ? '</span>' : '').'</td><td><input type="text" name="member_email" class="minwidth300" maxlength="255" value="'.(isset($_POST["member_email"]) ?GETPOST("member_email", '', 2) : $object->email).'"></td></tr>';
|
||||
print '<tr><td>'.($conf->global->ADHERENT_MAIL_REQUIRED ? '<span class="fieldrequired">' : '').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED ? '</span>' : '').'</td>';
|
||||
print '<td>'.img_picto('', 'object_email').' <input type="text" name="member_email" class="minwidth300" maxlength="255" value="'.(isset($_POST["member_email"]) ?GETPOST("member_email", '', 2) : $object->email).'"></td></tr>';
|
||||
|
||||
// Address
|
||||
print '<tr><td>'.$langs->trans("Address").'</td><td>';
|
||||
@ -1279,13 +1284,16 @@ else
|
||||
}
|
||||
|
||||
// Pro phone
|
||||
print '<tr><td>'.img_picto('', 'object_phoning').' '.$langs->trans("PhonePro").'</td><td><input type="text" name="phone" size="20" value="'.(GETPOSTISSET("phone") ? GETPOST("phone") : $object->phone).'"></td></tr>';
|
||||
print '<tr><td>'.$langs->trans("PhonePro").'</td>';
|
||||
print '<td>'.img_picto('', 'object_phoning').' <input type="text" name="phone" value="'.(GETPOSTISSET("phone") ? GETPOST("phone") : $object->phone).'"></td></tr>';
|
||||
|
||||
// Personal phone
|
||||
print '<tr><td>'.img_picto('', 'object_phoning').' '.$langs->trans("PhonePerso").'</td><td><input type="text" name="phone_perso" size="20" value="'.(GETPOSTISSET("phone_perso") ? GETPOST("phone_perso") : $object->phone_perso).'"></td></tr>';
|
||||
print '<tr><td>'.$langs->trans("PhonePerso").'</td>';
|
||||
print '<td>'.img_picto('', 'object_phoning').' <input type="text" name="phone_perso" value="'.(GETPOSTISSET("phone_perso") ? GETPOST("phone_perso") : $object->phone_perso).'"></td></tr>';
|
||||
|
||||
// Mobile phone
|
||||
print '<tr><td>'.img_picto('', 'object_phoning_mobile').' '.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(GETPOSTISSET("phone_mobile") ? GETPOST("phone_mobile") : $object->phone_mobile).'"></td></tr>';
|
||||
print '<tr><td>'.img_picto('', 'object_phoning_mobile').' '.$langs->trans("PhoneMobile").'</td>';
|
||||
print '<td>'.img_picto('', 'object_phoning_mobile').' <input type="text" name="phone_mobile" value="'.(GETPOSTISSET("phone_mobile") ? GETPOST("phone_mobile") : $object->phone_mobile).'"></td></tr>';
|
||||
|
||||
if (!empty($conf->socialnetworks->enabled)) {
|
||||
foreach ($socialnetworks as $key => $value) {
|
||||
|
||||
@ -260,7 +260,8 @@ if ($mode == 'config' && $user->admin) {
|
||||
print '<input type="hidden" name="action" value="updateprinter">';
|
||||
}
|
||||
|
||||
dol_fiche_head($head, $mode, $langs->trans("ModuleSetup"), 0, 'technic');
|
||||
|
||||
dol_fiche_head($head, $mode, $langs->trans("ModuleSetup"), -1, 'technic');
|
||||
|
||||
print $langs->trans("ReceiptPrinterDesc")."<br><br>\n";
|
||||
|
||||
@ -346,11 +347,11 @@ if ($mode == 'config' && $user->admin) {
|
||||
}
|
||||
print '</form>';
|
||||
|
||||
print '<div><p></div>';
|
||||
print '<br>';
|
||||
|
||||
dol_fiche_head();
|
||||
|
||||
print $langs->trans("ReceiptPrinterTypeDesc")."<br><br>\n";
|
||||
print load_fiche_titre($langs->trans("ReceiptPrinterTypeDesc"), '', '')."\n";
|
||||
|
||||
print '<table class="noborder centpercent">'."\n";
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("CONNECTOR_DUMMY").':</td><td>'.$langs->trans("CONNECTOR_DUMMY_HELP").'</td></tr>';
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("CONNECTOR_NETWORK_PRINT").':</td><td>'.$langs->trans("CONNECTOR_NETWORK_PRINT_HELP").'</td></tr>';
|
||||
@ -358,12 +359,12 @@ if ($mode == 'config' && $user->admin) {
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("CONNECTOR_WINDOWS_PRINT").':</td><td>'.$langs->trans("CONNECTOR_WINDOWS_PRINT_HELP").'</td></tr>';
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("CONNECTOR_CUPS_PRINT").':</td><td>'.$langs->trans("CONNECTOR_CUPS_PRINT_HELP").'</td></tr>';
|
||||
print '</table>';
|
||||
dol_fiche_end();
|
||||
|
||||
print '<div><p></div>';
|
||||
print '<br>';
|
||||
|
||||
|
||||
print load_fiche_titre($langs->trans("ReceiptPrinterProfileDesc"), '', '')."\n";
|
||||
|
||||
dol_fiche_head();
|
||||
print $langs->trans("ReceiptPrinterProfileDesc")."<br><br>\n";
|
||||
print '<table class="noborder centpercent">'."\n";
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("PROFILE_DEFAULT").':</td><td>'.$langs->trans("PROFILE_DEFAULT_HELP").'</td></tr>';
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("PROFILE_SIMPLE").':</td><td>'.$langs->trans("PROFILE_SIMPLE_HELP").'</td></tr>';
|
||||
@ -371,7 +372,6 @@ if ($mode == 'config' && $user->admin) {
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("PROFILE_P822D").':</td><td>'.$langs->trans("PROFILE_P822D_HELP").'</td></tr>';
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("PROFILE_STAR").':</td><td>'.$langs->trans("PROFILE_STAR_HELP").'</td></tr>';
|
||||
print '</table>';
|
||||
dol_fiche_end();
|
||||
}
|
||||
|
||||
if ($mode == 'template' && $user->admin) {
|
||||
@ -383,9 +383,9 @@ if ($mode == 'template' && $user->admin) {
|
||||
print '<input type="hidden" name="action" value="updatetemplate">';
|
||||
}
|
||||
|
||||
dol_fiche_head($head, $mode, $langs->trans("ModuleSetup"), 0, 'technic');
|
||||
|
||||
print $langs->trans("ReceiptPrinterTemplateDesc")."<br><br>\n";
|
||||
print load_fiche_titre($langs->trans("ReceiptPrinterTemplateDesc"), '', '')."<br><br>\n";
|
||||
|
||||
print '<table class="noborder centpercent">'."\n";
|
||||
print '<tr class="liste_titre">';
|
||||
print '<th>'.$langs->trans("Name").'</th>';
|
||||
@ -412,15 +412,15 @@ if ($mode == 'template' && $user->admin) {
|
||||
print '<td>'.$printer->listprinterstemplates[$line]['name'].'</td>';
|
||||
print '<td>'.nl2br(htmlentities($printer->listprinterstemplates[$line]['template'])).'</td>';
|
||||
// edit icon
|
||||
print '<td><a href="'.$_SERVER['PHP_SELF'].'?mode=template&action=edittemplate&templateid='.$printer->listprinterstemplates[$line]['rowid'].'">';
|
||||
print '<td><a class="editfielda paddingleftonly paddingrightonly" href="'.$_SERVER['PHP_SELF'].'?mode=template&action=edittemplate&templateid='.$printer->listprinterstemplates[$line]['rowid'].'">';
|
||||
print img_picto($langs->trans("Edit"), 'edit');
|
||||
print '</a>';
|
||||
// delete icon
|
||||
print '<a href="'.$_SERVER['PHP_SELF'].'?mode=template&action=deletetemplate&templateid='.$printer->listprinterstemplates[$line]['rowid'].'&templatename='.$printer->listprinterstemplates[$line]['name'].'">';
|
||||
print '<a class="paddingleftonly paddingrightonly" href="'.$_SERVER['PHP_SELF'].'?mode=template&action=deletetemplate&templateid='.$printer->listprinterstemplates[$line]['rowid'].'&templatename='.$printer->listprinterstemplates[$line]['name'].'">';
|
||||
print img_picto($langs->trans("Delete"), 'delete');
|
||||
print '</a>';
|
||||
// test icon
|
||||
print '<a href="'.$_SERVER['PHP_SELF'].'?mode=template&action=testtemplate&templateid='.$printer->listprinterstemplates[$line]['rowid'].'&templatename='.$printer->listprinterstemplates[$line]['name'].'">';
|
||||
print '<a class="paddingleftonly paddingrightonly" href="'.$_SERVER['PHP_SELF'].'?mode=template&action=testtemplate&templateid='.$printer->listprinterstemplates[$line]['rowid'].'&templatename='.$printer->listprinterstemplates[$line]['name'].'">';
|
||||
print img_picto($langs->trans("TestPrinterTemplate"), 'printer');
|
||||
print '</a></td>';
|
||||
}
|
||||
@ -441,21 +441,22 @@ if ($mode == 'template' && $user->admin) {
|
||||
print '<div class="center"><input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("Save")).'"></div>';
|
||||
}
|
||||
print '</form>';
|
||||
print '<div><p></div>';
|
||||
|
||||
print '<br>';
|
||||
|
||||
print '<table class="noborder centpercent">'."\n";
|
||||
print '<tr class="liste_titre">';
|
||||
print '<th>'.$langs->trans("Tag").'</th>';
|
||||
print '<th>'.$langs->trans("Description").'</th>';
|
||||
print "</tr>\n";
|
||||
$max = count($printer->tags);
|
||||
for ($tag = 0; $tag < $max; $tag++) {
|
||||
|
||||
$langs->loadLangs(array("bills", "companies"));
|
||||
foreach ($printer->tags as $key => $val) {
|
||||
print '<tr class="oddeven">';
|
||||
print '<td><'.$printer->tags[$tag].'></td><td>'.$langs->trans(strtoupper($printer->tags[$tag])).'</td>';
|
||||
print '<td><'.$key.'></td><td>'.$langs->trans($val).'</td>';
|
||||
print '</tr>';
|
||||
}
|
||||
print '</table>';
|
||||
|
||||
dol_fiche_end();
|
||||
}
|
||||
|
||||
// End of page
|
||||
|
||||
@ -608,6 +608,12 @@ class Documents extends DolibarrApi
|
||||
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||
$object = new ExpenseReport($this->db);
|
||||
}
|
||||
elseif ($modulepart == 'adherent' || $modulepart == 'member')
|
||||
{
|
||||
$modulepart = 'adherent';
|
||||
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
||||
$object = new Adherent($this->db);
|
||||
}
|
||||
// TODO Implement additional moduleparts
|
||||
else
|
||||
{
|
||||
@ -652,6 +658,7 @@ class Documents extends DolibarrApi
|
||||
else
|
||||
{
|
||||
if ($modulepart == 'invoice') $modulepart = 'facture';
|
||||
if ($modulepart == 'member') $modulepart = 'adherent';
|
||||
|
||||
$relativefile = $subdir;
|
||||
|
||||
|
||||
@ -32,6 +32,7 @@ if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no
|
||||
if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php
|
||||
if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library
|
||||
if (!defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session)
|
||||
if (!defined("NOSESSION")) define("NOSESSION", '1');
|
||||
|
||||
|
||||
// Force entity if a value is provided into HTTP header. Otherwise, will use the entity of user of token used.
|
||||
@ -72,7 +73,8 @@ if (empty($conf->global->MAIN_MODULE_API))
|
||||
dol_syslog("Call Dolibarr API interfaces with module REST disabled");
|
||||
print $langs->trans("WarningModuleNotActive", 'Api').'.<br><br>';
|
||||
print $langs->trans("ToActivateModule");
|
||||
exit;
|
||||
//session_destroy();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
// Test if explorer is not disabled
|
||||
@ -81,7 +83,8 @@ if (preg_match('/api\/index\.php\/explorer/', $url) && !empty($conf->global->API
|
||||
$langs->load("admin");
|
||||
dol_syslog("Call Dolibarr API interfaces with module REST disabled");
|
||||
print $langs->trans("WarningAPIExplorerDisabled").'.<br><br>';
|
||||
exit;
|
||||
//session_destroy();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
@ -138,7 +141,7 @@ if (!empty($conf->global->API_RESTRICT_ON_IP))
|
||||
dol_syslog('Remote ip is '.$ipremote.', not into list '.$conf->global->API_RESTRICT_ON_IP);
|
||||
print 'APIs are not allowed from the IP '.$ipremote;
|
||||
header('HTTP/1.1 503 API not allowed from your IP '.$ipremote);
|
||||
//print $conf->global->API_RESTRICT_ON_IP;
|
||||
//session_destroy();
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
@ -235,19 +238,19 @@ if (!empty($reg[1]) && $reg[1] == 'explorer' && ($reg[2] == '/swagger.json' || $
|
||||
$regbis = array();
|
||||
if (!empty($reg[1]) && ($reg[1] != 'explorer' || ($reg[2] != '/swagger.json' && $reg[2] != '/resources.json' && preg_match('/^\/(swagger|resources)\.json\/(.+)$/', $reg[2], $regbis) && $regbis[2] != 'root')))
|
||||
{
|
||||
$module = $reg[1];
|
||||
if ($module == 'explorer') // If we call page to explore details of a service
|
||||
$moduleobject = $reg[1];
|
||||
if ($moduleobject == 'explorer') // If we call page to explore details of a service
|
||||
{
|
||||
$module = $regbis[2];
|
||||
$moduleobject = $regbis[2];
|
||||
}
|
||||
|
||||
$module = strtolower($module);
|
||||
$moduledirforclass = getModuleDirForApiClass($module);
|
||||
$moduleobject = strtolower($moduleobject);
|
||||
$moduledirforclass = getModuleDirForApiClass($moduleobject);
|
||||
|
||||
// Load a dedicated API file
|
||||
dol_syslog("Load a dedicated API file module=".$module." moduledirforclass=".$moduledirforclass);
|
||||
dol_syslog("Load a dedicated API file moduleobject=".$moduleobject." moduledirforclass=".$moduledirforclass);
|
||||
|
||||
$tmpmodule = $module;
|
||||
$tmpmodule = $moduleobject;
|
||||
if ($tmpmodule != 'api')
|
||||
$tmpmodule = preg_replace('/api$/i', '', $tmpmodule);
|
||||
$classfile = str_replace('_', '', $tmpmodule);
|
||||
@ -264,7 +267,7 @@ if (!empty($reg[1]) && ($reg[1] != 'explorer' || ($reg[2] != '/swagger.json' &&
|
||||
|
||||
$dir_part_file = dol_buildpath('/'.$moduledirforclass.'/class/api_'.$classfile.'.class.php', 0, 2);
|
||||
|
||||
$classname = ucwords($module);
|
||||
$classname = ucwords($moduleobject);
|
||||
|
||||
dol_syslog('Search api file /'.$moduledirforclass.'/class/api_'.$classfile.'.class.php => dir_part_file='.$dir_part_file.' classname='.$classname);
|
||||
|
||||
@ -275,6 +278,7 @@ if (!empty($reg[1]) && ($reg[1] != 'explorer' || ($reg[2] != '/swagger.json' &&
|
||||
dol_syslog('Failed to make include_once '.$dir_part_file, LOG_WARNING);
|
||||
print 'API not found (failed to include API file)';
|
||||
header('HTTP/1.1 501 API not found (failed to include API file)');
|
||||
//session_destroy();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@ -282,9 +286,16 @@ if (!empty($reg[1]) && ($reg[1] != 'explorer' || ($reg[2] != '/swagger.json' &&
|
||||
$api->r->addAPIClass($classname);
|
||||
}
|
||||
|
||||
|
||||
//var_dump($api->r->apiVersionMap);
|
||||
//exit;
|
||||
|
||||
// Call API (we suppose we found it).
|
||||
// The handle will use the file api/temp/routes.php to get data to run the API. If the file exists and the entry for API is not found, it will return 404.
|
||||
|
||||
//Luracast\Restler\Defaults::$returnResponse = true;
|
||||
//print $api->r->handle();
|
||||
|
||||
$api->r->handle();
|
||||
|
||||
//session_destroy();
|
||||
|
||||
@ -193,7 +193,7 @@ llxHeader('', $langs->trans("MassBarcodeInit"));
|
||||
print load_fiche_titre($langs->trans("MassBarcodeInit"), '', 'title_setup.png');
|
||||
print '<br>';
|
||||
|
||||
print $langs->trans("MassBarcodeInitDesc").'<br>';
|
||||
print '<span class="opacitymedium">'.$langs->trans("MassBarcodeInitDesc").'</span><br>';
|
||||
print '<br>';
|
||||
|
||||
//print img_picto('','puce').' '.$langs->trans("PrintsheetForOneBarCode").'<br>';
|
||||
@ -317,6 +317,12 @@ if ($conf->product->enabled || $conf->product->service)
|
||||
}
|
||||
|
||||
|
||||
print load_fiche_titre($langs->trans("BarCodePrintsheet"), '', 'generic');
|
||||
print '<br>'."\n";
|
||||
print $langs->trans("ClickHereToGoTo").' : <a href="'.DOL_URL_ROOT.'/barcode/printsheet.php">'.$langs->trans("BarCodePrintsheet").'</a>';
|
||||
|
||||
|
||||
|
||||
print '</form>';
|
||||
print '<br>';
|
||||
|
||||
|
||||
@ -267,7 +267,7 @@ llxHeader('', $langs->trans("BarCodePrintsheet"));
|
||||
print load_fiche_titre($langs->trans("BarCodePrintsheet"), '', 'barcode');
|
||||
print '<br>';
|
||||
|
||||
print $langs->trans("PageToGenerateBarCodeSheets", $langs->transnoentitiesnoconv("BuildPageToPrint")).'<br>';
|
||||
print '<span class="opacitymedium">'.$langs->trans("PageToGenerateBarCodeSheets", $langs->transnoentitiesnoconv("BuildPageToPrint")).'</span><br>';
|
||||
print '<br>';
|
||||
|
||||
dol_htmloutput_errors($mesg);
|
||||
|
||||
@ -24,11 +24,11 @@ require_once DOL_DOCUMENT_ROOT.'/bom/class/bom.class.php';
|
||||
/**
|
||||
* \file bom/class/api_boms.class.php
|
||||
* \ingroup bom
|
||||
* \brief File for API management of bom.
|
||||
* \brief File for API management of BOM.
|
||||
*/
|
||||
|
||||
/**
|
||||
* API class for bom
|
||||
* API class for BOM
|
||||
*
|
||||
* @access protected
|
||||
* @class DolibarrApiAccess {@requires user,external}
|
||||
@ -120,7 +120,7 @@ class Boms extends DolibarrApi
|
||||
//if ($mode == 1) $sql.= " AND s.client IN (1, 3)";
|
||||
//if ($mode == 2) $sql.= " AND s.client IN (2, 3)";
|
||||
|
||||
if ($tmpobject->ismultientitymanaged) $sql .= ' AND t.entity IN ('.getEntity('bom').')';
|
||||
if ($tmpobject->ismultientitymanaged) $sql .= ' AND t.entity IN ('.getEntity($tmpobject->element).')';
|
||||
if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= " AND t.fk_soc = sc.fk_soc";
|
||||
if ($restrictonsocid && $socid) $sql .= " AND t.fk_soc = ".$socid;
|
||||
if ($restrictonsocid && $search_sale > 0) $sql .= " AND t.rowid = sc.fk_soc"; // Join for the needed table to filter by sale
|
||||
|
||||
@ -248,7 +248,7 @@ class AgendaEvents extends DolibarrApi
|
||||
throw new RestException(404, 'actioncomm not found');
|
||||
}
|
||||
|
||||
if (!DolibarrApi::_checkAccessToResource('actioncomm', $this->actioncomm->id)) {
|
||||
if (!DolibarrApi::_checkAccessToResource('actioncomm', $this->actioncomm->id, 'actioncomm', '', 'fk_soc', 'id')) {
|
||||
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
|
||||
}
|
||||
foreach ($request_data as $field => $value) {
|
||||
@ -290,7 +290,7 @@ class AgendaEvents extends DolibarrApi
|
||||
throw new RestException(404, 'Agenda Event not found');
|
||||
}
|
||||
|
||||
if (!DolibarrApi::_checkAccessToResource('actioncomm', $this->actioncomm->id)) {
|
||||
if (!DolibarrApi::_checkAccessToResource('actioncomm', $this->actioncomm->id, 'actioncomm', '', 'fk_soc', 'id')) {
|
||||
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
|
||||
}
|
||||
|
||||
|
||||
@ -341,74 +341,6 @@ class FormAdvTargetEmailing extends Form
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return combo list with customer categories
|
||||
*
|
||||
* @param string $htmlname Name of categorie
|
||||
* @param array $selected_array value selected
|
||||
* @return string HTML combo
|
||||
*/
|
||||
public function multiselectCustomerCategories($htmlname = 'cust_cat', $selected_array = array())
|
||||
{
|
||||
return $this->multiselectCategories($htmlname, $selected_array, 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return combo list with customer contact
|
||||
*
|
||||
* @param string $htmlname Name of categorie
|
||||
* @param array $selected_array value selected
|
||||
* @return string HTML combo
|
||||
*/
|
||||
public function multiselectContactCategories($htmlname = 'contact_cat', $selected_array = array())
|
||||
{
|
||||
return $this->multiselectCategories($htmlname, $selected_array, 4);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return combo list of categories
|
||||
*
|
||||
* @param string $htmlname Name of categorie
|
||||
* @param array $selected_array Value selected
|
||||
* @param int $type Type
|
||||
* @return string HTML combo
|
||||
*/
|
||||
public function multiselectCategories($htmlname = '', $selected_array = array(), $type = 0)
|
||||
{
|
||||
global $conf, $langs, $user;
|
||||
$langs->load("dict");
|
||||
|
||||
$options_array = array();
|
||||
|
||||
$sql = "SELECT rowid, label FROM ".MAIN_DB_PREFIX."categorie";
|
||||
$sql .= " WHERE type=".$type;
|
||||
|
||||
dol_syslog(__METHOD__, LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $this->db->num_rows($resql);
|
||||
$i = 0;
|
||||
if ($num)
|
||||
{
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
$options_array[$obj->rowid] = $obj->label;
|
||||
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_print_error($this->db);
|
||||
}
|
||||
|
||||
return $this->advMultiselectarray($htmlname, $options_array, $selected_array);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a combo list to select emailing target selector
|
||||
*
|
||||
|
||||
@ -323,15 +323,23 @@ if (empty($reshook))
|
||||
|
||||
if (($tmp_total_ht < 0 || $tmp_total_ht_devise < 0) && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES))
|
||||
{
|
||||
$langs->load("errors");
|
||||
if ($object->type == $object::TYPE_DEPOSIT) {
|
||||
$langs->load("errors");
|
||||
// Using negative lines on deposit lead to headach and blocking problems when you want to consume them.
|
||||
setEventMessages($langs->trans("ErrorLinesCantBeNegativeOnDeposits"), null, 'errors');
|
||||
$error++;
|
||||
$action = '';
|
||||
} else {
|
||||
setEventMessages($langs->trans("ErrorLinesCantBeNegativeForOneVATRate"), null, 'errors');
|
||||
$tmpvatratetoshow = explode('_', $vatrate);
|
||||
$tmpvatratetoshow[0] = round($tmpvatratetoshow[0], 2);
|
||||
|
||||
if ($tmpvatratetoshow[0] != 0) {
|
||||
$langs->load("errors");
|
||||
setEventMessages($langs->trans("ErrorLinesCantBeNegativeForOneVATRate", $tmpvatratetoshow[0]), null, 'errors');
|
||||
$error++;
|
||||
$action = '';
|
||||
}
|
||||
}
|
||||
$error++;
|
||||
$action = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3536,10 +3544,19 @@ if ($action == 'create')
|
||||
}
|
||||
|
||||
// Other attributes
|
||||
$parameters = array('objectsrc' => $objectsrc, 'colspan' => ' colspan="2"', 'cols' => '2');
|
||||
$parameters = array('objectsrc' => $objectsrc, 'colspan' => ' colspan="2"', 'cols' => '2', 'socid'=>$socid);
|
||||
$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
if (empty($reshook)) {
|
||||
if (!empty($conf->global->THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_INVOICE)) {
|
||||
// copy from thirdparty
|
||||
$tpExtrafields = new Extrafields($db);
|
||||
$tpExtrafieldLabels = $tpExtrafields->fetch_name_optionals_label($soc->table_element);
|
||||
if ($soc->fetch_optionals() > 0) {
|
||||
$object->array_options = array_merge($object->array_options, $soc->array_options);
|
||||
}
|
||||
};
|
||||
|
||||
print $object->showOptionals($extrafields, 'edit', $parameters);
|
||||
}
|
||||
|
||||
|
||||
@ -455,6 +455,7 @@ if (!$sall) $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON pf.f
|
||||
if ($sall || $search_product_category > 0) $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'facturedet as pd ON f.rowid=pd.fk_facture';
|
||||
if ($search_product_category > 0) $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=pd.fk_product';
|
||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON p.rowid = f.fk_projet";
|
||||
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'user AS u ON f.fk_user_author = u.rowid';
|
||||
// We'll need this table joined to the select in order to filter by sale
|
||||
if ($search_sale > 0 || (!$user->rights->societe->client->voir && !$socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||
if ($search_user > 0)
|
||||
@ -462,7 +463,7 @@ if ($search_user > 0)
|
||||
$sql .= ", ".MAIN_DB_PREFIX."element_contact as ec";
|
||||
$sql .= ", ".MAIN_DB_PREFIX."c_type_contact as tc";
|
||||
}
|
||||
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'user AS u ON f.fk_user_author = u.rowid';
|
||||
|
||||
$sql .= ' WHERE f.fk_soc = s.rowid';
|
||||
$sql .= ' AND f.entity IN ('.getEntity('invoice').')';
|
||||
if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
|
||||
|
||||
@ -68,9 +68,11 @@ class Paiement extends CommonObject
|
||||
*/
|
||||
public $montant;
|
||||
|
||||
public $amount; // Total amount of payment
|
||||
public $amounts = array(); // Array of amounts
|
||||
public $multicurrency_amounts = array(); // Array of amounts
|
||||
public $amount; // Total amount of payment (in the main currency)
|
||||
public $multicurrency_amount; // Total amount of payment (in the currency of the bank account)
|
||||
public $amounts = array(); // array: invoice ID => amount for that invoice (in the main currency)>
|
||||
public $multicurrency_amounts = array(); // array: invoice ID => amount for that invoice (in the invoice's currency)>
|
||||
|
||||
public $author;
|
||||
public $paiementid; // Type of payment. Id saved into fields fk_paiement on llx_paiement
|
||||
public $paiementcode; // Code of payment.
|
||||
@ -159,7 +161,7 @@ class Paiement extends CommonObject
|
||||
*/
|
||||
public function fetch($id, $ref = '', $fk_bank = '')
|
||||
{
|
||||
$sql = 'SELECT p.rowid, p.ref, p.datep as dp, p.amount, p.statut, p.ext_payment_id, p.ext_payment_site, p.fk_bank,';
|
||||
$sql = 'SELECT p.rowid, p.ref, p.datep as dp, p.amount, p.statut, p.ext_payment_id, p.ext_payment_site, p.fk_bank, p.multicurrency_amount,';
|
||||
$sql .= ' c.code as type_code, c.libelle as type_label,';
|
||||
$sql .= ' p.num_paiement as num_payment, p.note,';
|
||||
$sql .= ' b.fk_account';
|
||||
@ -179,6 +181,7 @@ class Paiement extends CommonObject
|
||||
if ($this->db->num_rows($resql))
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
$this->id = $obj->rowid;
|
||||
$this->ref = $obj->ref ? $obj->ref : $obj->rowid;
|
||||
$this->date = $this->db->jdate($obj->dp);
|
||||
@ -187,6 +190,7 @@ class Paiement extends CommonObject
|
||||
$this->num_payment = $obj->num_payment;
|
||||
$this->montant = $obj->amount; // deprecated
|
||||
$this->amount = $obj->amount;
|
||||
$this->multicurrency_amount = $obj->multicurrency_amount;
|
||||
$this->note = $obj->note;
|
||||
$this->type_label = $obj->type_label;
|
||||
$this->type_code = $obj->type_code;
|
||||
@ -513,8 +517,10 @@ class Paiement extends CommonObject
|
||||
{
|
||||
$accline = new AccountLine($this->db);
|
||||
|
||||
$result = $accline->fetch($bank_line_id);
|
||||
if ($result == 0) $accline->rowid = $bank_line_id; // If not found, we set artificially rowid to allow delete of llx_bank_url
|
||||
$result=$accline->fetch($bank_line_id);
|
||||
if ($result == 0) {
|
||||
$accline->id = $accline->rowid = $bank_line_id; // If not found, we set artificially rowid to allow delete of llx_bank_url
|
||||
}
|
||||
|
||||
// Delete bank account url lines linked to payment
|
||||
$result = $accline->delete_urls($user);
|
||||
|
||||
@ -78,13 +78,13 @@ print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Statistics").'</
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("NbOfInvoiceToPayByBankTransfer").'</td>';
|
||||
print '<td class="right">';
|
||||
print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/demandes.php?status=0&type=bank-transfer">';
|
||||
print $bprev->nbOfInvoiceToPay('credit-transfer');
|
||||
print $bprev->nbOfInvoiceToPay('bank-transfer');
|
||||
print '</a>';
|
||||
print '</td></tr>';
|
||||
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("AmountToWithdraw").'</td>';
|
||||
print '<td class="right">';
|
||||
print price($bprev->SommeAPrelever('credit-transfer'), '', '', 1, -1, -1, 'auto');
|
||||
print price($bprev->SommeAPrelever('bank-transfer'), '', '', 1, -1, -1, 'auto');
|
||||
print '</td></tr></table></div><br>';
|
||||
|
||||
|
||||
|
||||
@ -688,7 +688,7 @@ class BonPrelevement extends CommonObject
|
||||
/**
|
||||
* Returns amount of withdrawal
|
||||
*
|
||||
* @param string $mode 'direct-debit' or 'credit-transfer'
|
||||
* @param string $mode 'direct-debit' or 'bank-transfer'
|
||||
* @return double <O if KO, Total amount
|
||||
*/
|
||||
public function SommeAPrelever($mode = 'direct-debit')
|
||||
@ -697,7 +697,7 @@ class BonPrelevement extends CommonObject
|
||||
global $conf;
|
||||
|
||||
$sql = "SELECT sum(pfd.amount) as nb";
|
||||
if ($mode != 'credit-transfer') {
|
||||
if ($mode != 'bank-transfer') {
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f,";
|
||||
} else {
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f,";
|
||||
@ -732,7 +732,7 @@ class BonPrelevement extends CommonObject
|
||||
/**
|
||||
* Get number of invoices waiting for payment
|
||||
*
|
||||
* @param string $mode 'direct-debit' or 'credit-transfer'
|
||||
* @param string $mode 'direct-debit' or 'bank-transfer'
|
||||
* @return int <O if KO, number of invoices if OK
|
||||
*/
|
||||
public function nbOfInvoiceToPay($mode = 'direct-debit')
|
||||
@ -744,7 +744,7 @@ class BonPrelevement extends CommonObject
|
||||
/**
|
||||
* Get number of invoices to withdrawal
|
||||
*
|
||||
* @param string $mode 'direct-debit' or 'credit-transfer'
|
||||
* @param string $mode 'direct-debit' or 'bank-transfer'
|
||||
* @return int <O if KO, number of invoices if OK
|
||||
*/
|
||||
public function NbFactureAPrelever($mode = 'direct-debit')
|
||||
@ -753,7 +753,7 @@ class BonPrelevement extends CommonObject
|
||||
global $conf;
|
||||
|
||||
$sql = "SELECT count(f.rowid) as nb";
|
||||
if ($mode == 'credit-transfer') {
|
||||
if ($mode == 'bank-transfer') {
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
|
||||
} else {
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
@ -764,7 +764,7 @@ class BonPrelevement extends CommonObject
|
||||
{
|
||||
$sql .= " AND f.fk_statut = ".Facture::STATUS_VALIDATED;
|
||||
}
|
||||
if ($mode == 'credit-transfer') {
|
||||
if ($mode == 'bank-transfer') {
|
||||
$sql .= " AND f.rowid = pfd.fk_facture_fourn";
|
||||
} else {
|
||||
$sql .= " AND f.rowid = pfd.fk_facture";
|
||||
|
||||
@ -157,7 +157,7 @@ if ($type == 'bank-transfer') {
|
||||
$title = $langs->trans("NbOfInvoiceToPayByBankTransfer");
|
||||
}
|
||||
|
||||
print '<tr><td class="titlefield">'.$title.'</td>';
|
||||
print '<tr><td class="titlefieldcreate">'.$title.'</td>';
|
||||
print '<td>';
|
||||
print $nb;
|
||||
print '</td></tr>';
|
||||
|
||||
@ -1200,7 +1200,7 @@ if ($action == 'create')
|
||||
{
|
||||
print '<td>';
|
||||
print $form->select_company('', 'socid', '', 'SelectThirdParty', 1, 0, null, 0, 'minwidth300');
|
||||
print ' <a href="'.DOL_URL_ROOT.'/societe/card.php?action=create&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create').'"><span class="valignmiddle text-plus-circle">'.$langs->trans("AddThirdParty").'</span><span class="fa fa-plus-circle valignmiddle paddingleft"></span></a>';
|
||||
print ' <a href="'.DOL_URL_ROOT.'/societe/card.php?action=create&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create').'"><span class="fa fa-plus-circle valignmiddle paddingleft" title="'.$langs->trans("AddThirdParty").'"></span></a>';
|
||||
print '</td>';
|
||||
}
|
||||
print '</tr>'."\n";
|
||||
@ -1242,7 +1242,7 @@ if ($action == 'create')
|
||||
|
||||
print '<tr><td>'.$langs->trans("Project").'</td><td>';
|
||||
$formproject->select_projects(($soc->id > 0 ? $soc->id : -1), $projectid, "projectid", 0, 0, 1, 1);
|
||||
print ' <a href="'.DOL_URL_ROOT.'/projet/card.php?socid='.$soc->id.'&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'"><span class="valignmiddle text-plus-circle">'.$langs->trans("AddProject").'</span><span class="fa fa-plus-circle valignmiddle"></span></a>';
|
||||
print ' <a href="'.DOL_URL_ROOT.'/projet/card.php?socid='.$soc->id.'&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'"><span class="fa fa-plus-circle valignmiddle" title="'.$langs->trans("AddProject").'"></span></a>';
|
||||
print "</td></tr>";
|
||||
}
|
||||
|
||||
|
||||
@ -217,8 +217,10 @@ elseif ($action == 'renamefile' && GETPOST('renamefilesave', 'alpha'))
|
||||
|
||||
if (empty($reshook))
|
||||
{
|
||||
if (!file_exists($destpath))
|
||||
{
|
||||
if (preg_match('/^\./', $filenameto)) {
|
||||
$langs->load("errors"); // lang must be loaded because we can't rely on loading during output, we need var substitution to be done now.
|
||||
setEventMessages($langs->trans("ErrorFilenameCantStartWithDot", $filenameto), null, 'errors');
|
||||
} elseif (!file_exists($destpath)) {
|
||||
$result = dol_move($srcpath, $destpath);
|
||||
if ($result)
|
||||
{
|
||||
@ -244,13 +246,13 @@ elseif ($action == 'renamefile' && GETPOST('renamefilesave', 'alpha'))
|
||||
}
|
||||
else
|
||||
{
|
||||
$langs->load("errors"); // key must be loaded because we can't rely on loading during output, we need var substitution to be done now.
|
||||
$langs->load("errors"); // lang must be loaded because we can't rely on loading during output, we need var substitution to be done now.
|
||||
setEventMessages($langs->trans("ErrorFailToRenameFile", $filenamefrom, $filenameto), null, 'errors');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$langs->load("errors"); // key must be loaded because we can't rely on loading during output, we need var substitution to be done now.
|
||||
$langs->load("errors"); // lang must be loaded because we can't rely on loading during output, we need var substitution to be done now.
|
||||
setEventMessages($langs->trans("ErrorDestinationAlreadyExists", $filenameto), null, 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
@ -101,7 +101,9 @@ class box_external_rss extends ModeleBoxes
|
||||
if ($result < 0 || !empty($rssparser->error))
|
||||
{
|
||||
// Show warning
|
||||
$title .= " ".img_error($langs->trans("FailedToRefreshDataInfoNotUpToDate", ($rssparser->getLastFetchDate() ?dol_print_date($rssparser->getLastFetchDate(), "dayhourtext") : $langs->trans("Unknown"))));
|
||||
$errormessage = $langs->trans("FailedToRefreshDataInfoNotUpToDate", ($rssparser->getLastFetchDate() ? dol_print_date($rssparser->getLastFetchDate(), "dayhourtext") : $langs->trans("Unknown")));
|
||||
if ($rssparser->error) $errormessage .= " - ".$rssparser->error;
|
||||
$title .= " ".img_error($errormessage);
|
||||
$this->info_box_head = array('text' => $title, 'limit' => 0);
|
||||
}
|
||||
else
|
||||
@ -109,7 +111,7 @@ class box_external_rss extends ModeleBoxes
|
||||
$this->info_box_head = array(
|
||||
'text' => $title,
|
||||
'sublink' => $link,
|
||||
'subtext'=>$langs->trans("LastRefreshDate").': '.($rssparser->getLastFetchDate() ?dol_print_date($rssparser->getLastFetchDate(), "dayhourtext") : $langs->trans("Unknown")),
|
||||
'subtext'=>$langs->trans("LastRefreshDate").': '.($rssparser->getLastFetchDate() ? dol_print_date($rssparser->getLastFetchDate(), "dayhourtext") : $langs->trans("Unknown")),
|
||||
'subpicto'=>'globe',
|
||||
'target'=>'_blank',
|
||||
);
|
||||
|
||||
@ -6091,7 +6091,7 @@ abstract class CommonObject
|
||||
{
|
||||
$morecss = 'minwidth100imp';
|
||||
}
|
||||
elseif ($type == 'datetime' || $type == 'link')
|
||||
elseif ($type == 'datetime' || $type == 'link') // link means an foreign key to another primary id
|
||||
{
|
||||
$morecss = 'minwidth200imp';
|
||||
}
|
||||
@ -6563,11 +6563,13 @@ abstract class CommonObject
|
||||
$param_list = array_keys($param['options']); // $param_list='ObjectName:classPath[:AddCreateButtonOrNot[:Filter]]'
|
||||
$param_list_array = explode(':', $param_list[0]);
|
||||
$showempty = (($required && $default != '') ? 0 : 1);
|
||||
if (!empty($param_list_array[2])) { // If the entry into $fields is set to add a create button
|
||||
$morecss .= ' widthcentpercentminusx';
|
||||
}
|
||||
|
||||
$out = $form->selectForForms($param_list[0], $keyprefix.$key.$keysuffix, $value, $showempty, '', '', $morecss, $moreparam, 0, empty($val['disabled']) ? 0 : 1);
|
||||
|
||||
if (!empty($param_list_array[2])) // If we set to add a create button
|
||||
{
|
||||
if (!empty($param_list_array[2])) { // If the entry into $fields is set to add a create button
|
||||
if (!GETPOSTISSET('backtopage') && empty($val['disabled']) && empty($nonewbutton)) // To avoid to open several times the 'Create Object' button and to avoid to have button if field is protected by a "disabled".
|
||||
{
|
||||
list($class, $classfile) = explode(':', $param_list[0]);
|
||||
|
||||
@ -158,79 +158,72 @@ class dolReceiptPrinter extends Printer
|
||||
{
|
||||
$this->db = $db;
|
||||
$this->tags = array(
|
||||
'dol_line_feed',
|
||||
'dol_line_feed_reverse',
|
||||
'dol_align_left',
|
||||
'dol_align_center',
|
||||
'dol_align_right',
|
||||
'dol_use_font_a',
|
||||
'dol_use_font_b',
|
||||
'dol_use_font_c',
|
||||
'dol_bold',
|
||||
'dol_bold_disabled',
|
||||
'dol_double_height',
|
||||
'dol_double_width',
|
||||
'dol_default_height_width',
|
||||
'dol_underline',
|
||||
'dol_underline_disabled',
|
||||
'dol_cut_paper_full',
|
||||
'dol_cut_paper_partial',
|
||||
'dol_open_drawer',
|
||||
'dol_beep',
|
||||
'dol_print_text',
|
||||
'dol_print_barcode',
|
||||
'dol_value_date',
|
||||
'dol_value_date_time',
|
||||
'dol_value_year',
|
||||
'dol_value_month_letters',
|
||||
'dol_value_month',
|
||||
'dol_value_day',
|
||||
'dol_value_day_letters',
|
||||
'dol_line_feed' => 'DOL_LINE_FEED',
|
||||
'dol_line_feed_reverse' => 'DOL_LINE_FEED_REVERSE',
|
||||
'dol_align_left' => 'DOL_ALIGN_LEFT',
|
||||
'dol_align_center' => 'DOL_ALIGN_CENTER',
|
||||
'dol_align_right' => 'DOL_ALIGN_RIGHT',
|
||||
'dol_use_font_a' => 'DOL_USE_FONT_A',
|
||||
'dol_use_font_b' => 'DOL_USE_FONT_B',
|
||||
'dol_use_font_c' => 'DOL_USE_FONT_C',
|
||||
'dol_bold' => 'DOL_BOLD',
|
||||
'dol_bold_disabled' => 'DOL_BOLD_DISABLED',
|
||||
'dol_double_height' => 'DOL_DOUBLE_HEIGHT',
|
||||
'dol_double_width' => 'DOL_DOUBLE_WIDTH',
|
||||
'dol_default_height_width' => 'DOL_DEFAULT_HEIGHT_WIDTH',
|
||||
'dol_underline' => 'DOL_UNDERLINE',
|
||||
'dol_underline_disabled' => 'DOL_UNDERLINE_DISABLED',
|
||||
'dol_cut_paper_full' => 'DOL_CUT_PAPER_FULL',
|
||||
'dol_cut_paper_partial' => 'DOL_CUT_PAPER_PARTIAL',
|
||||
'dol_open_drawer' => 'DOL_OPEN_DRAWER',
|
||||
'dol_beep' => 'DOL_BEEP',
|
||||
'dol_print_text' => 'DOL_PRINT_TEXT',
|
||||
'dol_print_barcode' => 'DOL_PRINT_BARCODE',
|
||||
'dol_value_date' => 'DateInvoice',
|
||||
'dol_value_date_time' => 'DateInvoiceWithTime',
|
||||
'dol_value_year' => 'YearInvoice',
|
||||
'dol_value_month_letters' => 'DOL_VALUE_MONTH_LETTERS',
|
||||
'dol_value_month' => 'DOL_VALUE_MONTH',
|
||||
'dol_value_day' => 'DOL_VALUE_DAY',
|
||||
'dol_value_day_letters' => 'DOL_VALUE_DAY',
|
||||
//'dol_print_payment',
|
||||
'dol_print_logo',
|
||||
'dol_print_logo_old',
|
||||
'dol_value_object_id',
|
||||
'dol_value_object_ref',
|
||||
'dol_print_object_lines',
|
||||
'dol_print_object_tax',
|
||||
'dol_print_object_local_tax',
|
||||
'dol_print_object_total',
|
||||
'dol_print_object_number',
|
||||
'dol_print_order_lines',
|
||||
'dol_value_customer_firstname',
|
||||
'dol_value_customer_lastname',
|
||||
'dol_value_customer_mail',
|
||||
'dol_value_customer_phone',
|
||||
'dol_value_customer_mobile',
|
||||
'dol_value_customer_skype',
|
||||
'dol_value_customer_tax_number',
|
||||
'dol_value_customer_account_balance',
|
||||
'dol_value_mysoc_name',
|
||||
'dol_value_mysoc_address',
|
||||
'dol_value_mysoc_zip',
|
||||
'dol_value_mysoc_town',
|
||||
'dol_value_mysoc_country',
|
||||
'dol_value_mysoc_idprof1',
|
||||
'dol_value_mysoc_idprof2',
|
||||
'dol_value_mysoc_idprof3',
|
||||
'dol_value_mysoc_idprof4',
|
||||
'dol_value_mysoc_idprof5',
|
||||
'dol_value_mysoc_idprof6',
|
||||
'dol_value_mysoc_tva_intra',
|
||||
'dol_value_mysoc_capital',
|
||||
'dol_value_vendor_lastname',
|
||||
'dol_value_vendor_firstname',
|
||||
'dol_value_vendor_mail',
|
||||
'dol_value_customer_points',
|
||||
'dol_value_object_points',
|
||||
//'dol_print_if_customer',
|
||||
//'dol_print_if_vendor',
|
||||
//'dol_print_if_happy_hour',
|
||||
//'dol_print_if_num_object_unique',
|
||||
//'dol_print_if_customer_points',
|
||||
//'dol_print_if_object_points',
|
||||
//'dol_print_if_customer_tax_number',
|
||||
//'dol_print_if_customer_account_balance_positive',
|
||||
'dol_print_logo' => 'DOL_PRINT_LOGO',
|
||||
'dol_print_logo_old' => 'DOL_PRINT_LOGO_OLD',
|
||||
'dol_value_object_id' => 'InvoiceID',
|
||||
'dol_value_object_ref' => 'InvoiceRef',
|
||||
'dol_print_object_lines' => 'DOL_PRINT_OBJECT_LINES',
|
||||
'dol_print_object_tax' => 'TotalVAT',
|
||||
'dol_print_object_local_tax1' => 'TotalLT1',
|
||||
'dol_print_object_local_tax2' => 'TotalLT2',
|
||||
'dol_print_object_total' => 'Total',
|
||||
'dol_print_object_number' => 'DOL_PRINT_OBJECT_NUMBER',
|
||||
'dol_value_object_points' => 'DOL_VALUE_OBJECT_POINTS',
|
||||
'dol_print_order_lines' => 'DOL_PRINT_ORDER_LINES',
|
||||
'dol_value_customer_firstname' => 'DOL_VALUE_CUSTOMER_FIRSTNAME',
|
||||
'dol_value_customer_lastname' => 'DOL_VALUE_CUSTOMER_LASTNAME',
|
||||
'dol_value_customer_mail' => 'DOL_VALUE_CUSTOMER_MAIL',
|
||||
'dol_value_customer_phone' => 'DOL_VALUE_CUSTOMER_PHONE',
|
||||
'dol_value_customer_mobile' => 'DOL_VALUE_CUSTOMER_MOBILE',
|
||||
'dol_value_customer_skype' => 'DOL_VALUE_CUSTOMER_SKYPE',
|
||||
'dol_value_customer_tax_number' => 'DOL_VALUE_CUSTOMER_TAX_NUMBER',
|
||||
'dol_value_customer_account_balance' => 'DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE',
|
||||
'dol_value_customer_points' => 'DOL_VALUE_CUSTOMER_POINTS',
|
||||
'dol_value_mysoc_name' => 'DOL_VALUE_MYSOC_NAME',
|
||||
'dol_value_mysoc_address' => 'Address',
|
||||
'dol_value_mysoc_zip' => 'Zip',
|
||||
'dol_value_mysoc_town' => 'Town',
|
||||
'dol_value_mysoc_country' => 'Country',
|
||||
'dol_value_mysoc_idprof1' => 'ProfId1',
|
||||
'dol_value_mysoc_idprof2' => 'ProfId2',
|
||||
'dol_value_mysoc_idprof3' => 'ProfId3',
|
||||
'dol_value_mysoc_idprof4' => 'ProfId4',
|
||||
'dol_value_mysoc_idprof5' => 'ProfId5',
|
||||
'dol_value_mysoc_idprof6' => 'ProfId6',
|
||||
'dol_value_mysoc_tva_intra' => 'VATIntra',
|
||||
'dol_value_mysoc_capital' => 'Capital',
|
||||
'dol_value_vendor_lastname' => 'VendorLastname',
|
||||
'dol_value_vendor_firstname' => 'VendorFirstname',
|
||||
'dol_value_vendor_mail' => 'VendorEmail',
|
||||
);
|
||||
}
|
||||
|
||||
@ -545,14 +538,14 @@ class dolReceiptPrinter extends Printer
|
||||
/**
|
||||
* Function to Print Receipt Ticket
|
||||
*
|
||||
* @param object $object order or invoice object
|
||||
* @param int $templateid Template id
|
||||
* @param int $printerid Printer id
|
||||
* @return int 0 if OK; >0 if KO
|
||||
* @param Facture|Commande $object Order or invoice object
|
||||
* @param int $templateid Template id
|
||||
* @param int $printerid Printer id
|
||||
* @return int 0 if OK; >0 if KO
|
||||
*/
|
||||
public function sendToPrinter($object, $templateid, $printerid)
|
||||
{
|
||||
global $conf, $mysoc, $langs;
|
||||
global $conf, $mysoc, $langs, $user;
|
||||
$error = 0;
|
||||
$ret = $this->loadTemplate($templateid);
|
||||
|
||||
@ -560,15 +553,23 @@ class dolReceiptPrinter extends Printer
|
||||
$this->template = str_replace('<dol_value_object_id>', $object->id, $this->template);
|
||||
$this->template = str_replace('<dol_value_object_ref>', $object->ref, $this->template);
|
||||
$this->template = str_replace('<dol_value_object_points>', $object->points, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_firstname>', $object->customer_firstname, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_lastname>', $object->customer_lastname, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_mail>', $object->customer_mail, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_phone>', $object->customer_phone, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_mobile>', $object->customer_mobile, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_skype>', $object->customer_skype, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_tax_number>', $object->customer_tax_number, $this->template);
|
||||
$this->template = str_replace('<dol_value_date>', dol_print_date($object->date, 'day'), $this->template);
|
||||
$this->template = str_replace('<dol_value_date_time>', dol_print_date($object->date, 'dayhour'), $this->template);
|
||||
$this->template = str_replace('<dol_value_year>', dol_print_date($object->date, '%Y'), $this->template);
|
||||
$this->template = str_replace('<dol_value_month_letters>', $langs->trans("Month".dol_print_date($object->date, '%m')), $this->template);
|
||||
$this->template = str_replace('<dol_value_month>', dol_print_date($object->date, '%m'), $this->template);
|
||||
$this->template = str_replace('<dol_value_day>', dol_print_date($object->date, '%d'), $this->template);
|
||||
$this->template = str_replace('<dol_value_day_letters>', $langs->trans("Day".dol_print_date($object->date, '%m')[1]), $this->template);
|
||||
|
||||
$this->template = str_replace('<dol_value_customer_firstname>', $object->thirdparty->firstname, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_lastname>', $object->thirdparty->lastname, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_mail>', $object->thirdparty->mail, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_phone>', $object->thirdparty->phone, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_mobile>', $object->thirdparty->mobile, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_tax_number>', $object->thirdparty->vatintra, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_account_balance>', $object->customer_account_balance, $this->template);
|
||||
$this->template = str_replace('<dol_value_customer_points>', $object->customer_points, $this->template);
|
||||
|
||||
$this->template = str_replace('<dol_value_mysoc_name>', $mysoc->name, $this->template);
|
||||
$this->template = str_replace('<dol_value_mysoc_address>', $mysoc->address, $this->template);
|
||||
$this->template = str_replace('<dol_value_mysoc_zip>', $mysoc->zip, $this->template);
|
||||
@ -582,16 +583,10 @@ class dolReceiptPrinter extends Printer
|
||||
$this->template = str_replace('<dol_value_mysoc_idprof6>', $mysoc->idprof6, $this->template);
|
||||
$this->template = str_replace('<dol_value_mysoc_tva_intra>', $mysoc->tva_intra, $this->template);
|
||||
$this->template = str_replace('<dol_value_mysoc_capital>', $mysoc->capital, $this->template);
|
||||
$this->template = str_replace('<dol_value_vendor_firstname>', $object->vendor_firstname, $this->template);
|
||||
$this->template = str_replace('<dol_value_vendor_lastname>', $object->vendor_lastname, $this->template);
|
||||
$this->template = str_replace('<dol_value_vendor_mail>', $object->vendor_mail, $this->template);
|
||||
$this->template = str_replace('<dol_value_date>', dol_print_date($object->date, 'day'), $this->template);
|
||||
$this->template = str_replace('<dol_value_date_time>', dol_print_date($object->date, 'dayhour'), $this->template);
|
||||
$this->template = str_replace('<dol_value_year>', dol_print_date($object->date, '%Y'), $this->template);
|
||||
$this->template = str_replace('<dol_value_month_letters>', $langs->trans("Month".dol_print_date($object->date, '%m')), $this->template);
|
||||
$this->template = str_replace('<dol_value_month>', dol_print_date($object->date, '%m'), $this->template);
|
||||
$this->template = str_replace('<dol_value_day>', dol_print_date($object->date, '%d'), $this->template);
|
||||
$this->template = str_replace('<dol_value_day_letters>', $langs->trans("Day".dol_print_date($object->date, '%m')[1]), $this->template);
|
||||
|
||||
$this->template = str_replace('<dol_value_vendor_firstname>', $user->firstname, $this->template);
|
||||
$this->template = str_replace('<dol_value_vendor_lastname>', $user->lastname, $this->template);
|
||||
$this->template = str_replace('<dol_value_vendor_mail>', $user->email, $this->template);
|
||||
|
||||
// parse template
|
||||
$p = xml_parser_create();
|
||||
@ -634,6 +629,26 @@ class dolReceiptPrinter extends Printer
|
||||
$this->printer->text($spaces.$vatkey.'% '.str_pad(price($vatvalue), 10, ' ', STR_PAD_LEFT)."\n");
|
||||
}
|
||||
break;
|
||||
case 'DOL_PRINT_OBJECT_TAX1':
|
||||
//var_dump($object);
|
||||
$total_localtax1 = 0;
|
||||
foreach ($object->lines as $line) {
|
||||
$total_localtax1 += $line->total_localtax1;
|
||||
}
|
||||
foreach ($vatarray as $vatkey => $vatvalue) {
|
||||
$this->printer->text(str_pad(price($total_localtax1), 10, ' ', STR_PAD_LEFT)."\n");
|
||||
}
|
||||
break;
|
||||
case 'DOL_PRINT_OBJECT_TAX2':
|
||||
//var_dump($object);
|
||||
$total_localtax2 = 0;
|
||||
foreach ($object->lines as $line) {
|
||||
$total_localtax2 += $line->total_localtax2;
|
||||
}
|
||||
foreach ($vatarray as $vatkey => $vatvalue) {
|
||||
$this->printer->text(str_pad(price($total_localtax2), 10, ' ', STR_PAD_LEFT)."\n");
|
||||
}
|
||||
break;
|
||||
case 'DOL_PRINT_OBJECT_TOTAL':
|
||||
$title = $langs->trans('TotalHT');
|
||||
$spacestoadd = $nbcharactbyline - strlen($title) - 10;
|
||||
|
||||
@ -5933,7 +5933,7 @@ class Form
|
||||
}
|
||||
elseif ($typehour == 'text' || $typehour == 'textselect')
|
||||
{
|
||||
$retstring .= '<input placeholder="'.$langs->trans('HourShort').'" type="number" min="0" size="1" name="'.$prefix.'hour"'.($disabled ? ' disabled' : '').' class="flat maxwidth50 inputhour" value="'.(($hourSelected != '') ? ((int) $hourSelected) : '').'">';
|
||||
$retstring .= '<input placeholder="'.$langs->trans('HourShort').'" type="number" min="0" name="'.$prefix.'hour"'.($disabled ? ' disabled' : '').' class="flat maxwidth50 inputhour" value="'.(($hourSelected != '') ? ((int) $hourSelected) : '').'">';
|
||||
}
|
||||
else return 'BadValueForParameterTypeHour';
|
||||
|
||||
@ -5957,7 +5957,7 @@ class Form
|
||||
}
|
||||
elseif ($typehour == 'text')
|
||||
{
|
||||
$retstring .= '<input placeholder="'.$langs->trans('MinuteShort').'" type="number" min="0" size="1" name="'.$prefix.'min"'.($disabled ? ' disabled' : '').' class="flat maxwidth50 inputminute" value="'.(($minSelected != '') ? ((int) $minSelected) : '').'">';
|
||||
$retstring .= '<input placeholder="'.$langs->trans('MinuteShort').'" type="number" min="0" name="'.$prefix.'min"'.($disabled ? ' disabled' : '').' class="flat maxwidth50 inputminute" value="'.(($minSelected != '') ? ((int) $minSelected) : '').'">';
|
||||
}
|
||||
|
||||
if ($typehour != 'text') $retstring .= ' '.$langs->trans('MinuteShort');
|
||||
|
||||
@ -261,9 +261,15 @@ class RssParser
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! function_exists('xml_parser_create')) {
|
||||
$this->error = 'Function xml_parser_create are not supported by your PHP';
|
||||
return -1;
|
||||
}
|
||||
|
||||
$xmlparser = xml_parser_create('');
|
||||
if (!is_resource($xmlparser)) {
|
||||
$this->error = "ErrorFailedToCreateParser"; return -1;
|
||||
$this->error = "ErrorFailedToCreateParser";
|
||||
return -1;
|
||||
}
|
||||
|
||||
xml_set_object($xmlparser, $this);
|
||||
|
||||
@ -273,10 +273,10 @@ function run_sql($sqlfile, $silent = 1, $entity = '', $usesavepoint = 1, $handle
|
||||
if ($offsetforchartofaccount > 0)
|
||||
{
|
||||
// Replace lines
|
||||
// 'INSERT INTO llx_accounting_account (__ENTITY__, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (1401, 'PCG99-ABREGE','CAPIT', 'XXXXXX', '1', 0, '...', 1);'
|
||||
// 'INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 1401, 'PCG99-ABREGE','CAPIT', 'XXXXXX', '1', '0', '...', 1);'
|
||||
// with
|
||||
// 'INSERT INTO llx_accounting_account (__ENTITY__, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (1401 + 200100000, 'PCG99-ABREGE','CAPIT', 'XXXXXX', '1', 0, '...', 1);'
|
||||
$newsql = preg_replace('/VALUES\s*\(__ENTITY__, \s*(\d+)\s*,(\s*\'[^\',]*\'\s*,\s*\'[^\',]*\'\s*,\s*\'[^\',]*\'\s*,\s*\'[^\',]*\'\s*),\s*\'?([^\',]*)\'?/ims', 'VALUES (__ENTITY__, \1 + '.$offsetforchartofaccount.', \2, \3 + '.$offsetforchartofaccount, $newsql);
|
||||
// 'INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 1401 + 200100000, 'PCG99-ABREGE','CAPIT', 'XXXXXX', '1', '0', '...', 1);'
|
||||
$newsql = preg_replace('/VALUES\s*\(__ENTITY__, \s*(\d+)\s*,(\s*\'[^\',]*\'\s*,\s*\'[^\',]*\'\s*,\s*\'?[^\',]*\'?\s*),\s*\'?([^\',]*)\'?/ims', 'VALUES (__ENTITY__, \1 + '.$offsetforchartofaccount.', \2, \3 + '.$offsetforchartofaccount, $newsql);
|
||||
$newsql = preg_replace('/([,\s])0 \+ '.$offsetforchartofaccount.'/ims', '\1 0', $newsql);
|
||||
//var_dump($newsql);
|
||||
$arraysql[$i] = $newsql;
|
||||
|
||||
@ -48,7 +48,7 @@ function emailing_prepare_head(Mailing $object)
|
||||
$h++;
|
||||
}
|
||||
|
||||
if (empty($conf->global->EMAILING_USE_ADVANCED_SELECTOR))
|
||||
if (!empty($conf->global->EMAILING_USE_ADVANCED_SELECTOR))
|
||||
{
|
||||
$head[$h][0] = DOL_URL_ROOT."/comm/mailing/advtargetemailing.php?id=".$object->id;
|
||||
$head[$h][1] = $langs->trans("MailAdvTargetRecipients");
|
||||
|
||||
@ -324,11 +324,13 @@ function completeFileArrayWithDatabaseInfo(&$filearray, $relativedir)
|
||||
// Complete filearray with properties found into $filearrayindatabase
|
||||
foreach ($filearray as $key => $val)
|
||||
{
|
||||
$tmpfilename = preg_replace('/\.noexe$/', '', $filearray[$key]['name']);
|
||||
|
||||
$found = 0;
|
||||
// Search if it exists into $filearrayindatabase
|
||||
foreach ($filearrayindatabase as $key2 => $val2)
|
||||
{
|
||||
if ($filearrayindatabase[$key2]['name'] == $filearray[$key]['name'])
|
||||
if ($filearrayindatabase[$key2]['name'] == $tmpfilename)
|
||||
{
|
||||
$filearray[$key]['position_name'] = ($filearrayindatabase[$key2]['position'] ? $filearrayindatabase[$key2]['position'] : '0').'_'.$filearrayindatabase[$key2]['name'];
|
||||
$filearray[$key]['position'] = $filearrayindatabase[$key2]['position'];
|
||||
@ -349,7 +351,7 @@ function completeFileArrayWithDatabaseInfo(&$filearray, $relativedir)
|
||||
$filearray[$key]['acl'] = '';
|
||||
|
||||
$rel_filename = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $filearray[$key]['fullname']);
|
||||
if (!preg_match('/([\\/]temp[\\/]|[\\/]thumbs|\.meta$)/', $rel_filetorenameafter)) // If not a tmp file
|
||||
if (!preg_match('/([\\/]temp[\\/]|[\\/]thumbs|\.meta$)/', $rel_filename)) // If not a tmp file
|
||||
{
|
||||
dol_syslog("list_of_documents We found a file called '".$filearray[$key]['name']."' not indexed into database. We add it");
|
||||
include_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmfiles.class.php';
|
||||
@ -1548,6 +1550,7 @@ function dol_add_file_process($upload_dir, $allowoverwrite = 0, $donotupdatesess
|
||||
if (!empty($_FILES[$varfiles])) // For view $_FILES[$varfiles]['error']
|
||||
{
|
||||
dol_syslog('dol_add_file_process upload_dir='.$upload_dir.' allowoverwrite='.$allowoverwrite.' donotupdatesession='.$donotupdatesession.' savingdocmask='.$savingdocmask, LOG_DEBUG);
|
||||
|
||||
if (dol_mkdir($upload_dir) >= 0)
|
||||
{
|
||||
$TFile = $_FILES[$varfiles];
|
||||
@ -1574,6 +1577,13 @@ function dol_add_file_process($upload_dir, $allowoverwrite = 0, $donotupdatesess
|
||||
$destfile = preg_replace('/__file__/', $TFile['name'][$i], $savingdocmask);
|
||||
}
|
||||
|
||||
$filenameto = basename($destfile);
|
||||
if (preg_match('/^\./', $filenameto)) {
|
||||
$langs->load("errors"); // key must be loaded because we can't rely on loading during output, we need var substitution to be done now.
|
||||
setEventMessages($langs->trans("ErrorFilenameCantStartWithDot", $filenameto), null, 'errors');
|
||||
break;
|
||||
}
|
||||
|
||||
// dol_sanitizeFileName the file name and lowercase extension
|
||||
$info = pathinfo($destfull);
|
||||
$destfull = $info['dirname'].'/'.dol_sanitizeFileName($info['filename'].($info['extension'] != '' ? ('.'.strtolower($info['extension'])) : ''));
|
||||
|
||||
@ -8872,15 +8872,16 @@ function fetchObjectByElement($element_id, $element_type, $element_ref = '')
|
||||
/**
|
||||
* Return if a file can contains executable content
|
||||
*
|
||||
* @param string $filename File NamedRange
|
||||
* @param string $filename File name to test
|
||||
* @return boolean True if yes, False if no
|
||||
*/
|
||||
function isAFileWithExecutableContent($filename)
|
||||
{
|
||||
if (preg_match('/\.(htm|html|js|php|php\d+|phtml|pl|py|cgi|ksh|sh|bash|bat|cmd|wpk|exe|dmg)$/i', $filename))
|
||||
if (preg_match('/\.(htm|html|js|phar|php|php\d+|phtml|pht|pl|py|cgi|ksh|sh|shtml|bash|bat|cmd|wpk|exe|dmg)$/i', $filename))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@ -2289,82 +2289,70 @@ function cartesianArray(array $input)
|
||||
/**
|
||||
* Get name of directory where the api_...class.php file is stored
|
||||
*
|
||||
* @param string $module Module name
|
||||
* @return string Directory name
|
||||
* @param string $moduleobject Module object name
|
||||
* @return string Directory name
|
||||
*/
|
||||
function getModuleDirForApiClass($module)
|
||||
function getModuleDirForApiClass($moduleobject)
|
||||
{
|
||||
$moduledirforclass = $module;
|
||||
$moduledirforclass = $moduleobject;
|
||||
if ($moduledirforclass != 'api') $moduledirforclass = preg_replace('/api$/i', '', $moduledirforclass);
|
||||
|
||||
if ($module == 'contracts') {
|
||||
if ($moduleobject == 'contracts') {
|
||||
$moduledirforclass = 'contrat';
|
||||
}
|
||||
elseif (in_array($module, array('admin', 'login', 'setup', 'access', 'status', 'tools', 'documents'))) {
|
||||
elseif (in_array($moduleobject, array('admin', 'login', 'setup', 'access', 'status', 'tools', 'documents'))) {
|
||||
$moduledirforclass = 'api';
|
||||
}
|
||||
elseif ($module == 'contact' || $module == 'contacts' || $module == 'customer' || $module == 'thirdparty' || $module == 'thirdparties') {
|
||||
elseif ($moduleobject == 'contact' || $moduleobject == 'contacts' || $moduleobject == 'customer' || $moduleobject == 'thirdparty' || $moduleobject == 'thirdparties') {
|
||||
$moduledirforclass = 'societe';
|
||||
}
|
||||
elseif ($module == 'propale' || $module == 'proposals') {
|
||||
elseif ($moduleobject == 'propale' || $moduleobject == 'proposals') {
|
||||
$moduledirforclass = 'comm/propal';
|
||||
}
|
||||
elseif ($module == 'agenda' || $module == 'agendaevents') {
|
||||
elseif ($moduleobject == 'agenda' || $moduleobject == 'agendaevents') {
|
||||
$moduledirforclass = 'comm/action';
|
||||
}
|
||||
elseif ($module == 'adherent' || $module == 'members' || $module == 'memberstypes' || $module == 'subscriptions') {
|
||||
elseif ($moduleobject == 'adherent' || $moduleobject == 'members' || $moduleobject == 'memberstypes' || $moduleobject == 'subscriptions') {
|
||||
$moduledirforclass = 'adherents';
|
||||
}
|
||||
elseif ($module == 'don' || $module == 'donations') {
|
||||
elseif ($moduleobject == 'don' || $moduleobject == 'donations') {
|
||||
$moduledirforclass = 'don';
|
||||
}
|
||||
elseif ($module == 'banque' || $module == 'bankaccounts') {
|
||||
elseif ($moduleobject == 'banque' || $moduleobject == 'bankaccounts') {
|
||||
$moduledirforclass = 'compta/bank';
|
||||
}
|
||||
elseif ($module == 'category' || $module == 'categorie') {
|
||||
elseif ($moduleobject == 'category' || $moduleobject == 'categorie') {
|
||||
$moduledirforclass = 'categories';
|
||||
}
|
||||
elseif ($module == 'order' || $module == 'orders') {
|
||||
elseif ($moduleobject == 'order' || $moduleobject == 'orders') {
|
||||
$moduledirforclass = 'commande';
|
||||
}
|
||||
elseif ($module == 'shipments') {
|
||||
elseif ($moduleobject == 'shipments') {
|
||||
$moduledirforclass = 'expedition';
|
||||
}
|
||||
elseif ($module == 'facture' || $module == 'invoice' || $module == 'invoices') {
|
||||
elseif ($moduleobject == 'facture' || $moduleobject == 'invoice' || $moduleobject == 'invoices') {
|
||||
$moduledirforclass = 'compta/facture';
|
||||
}
|
||||
elseif ($module == 'products') {
|
||||
$moduledirforclass = 'product';
|
||||
}
|
||||
elseif ($module == 'project' || $module == 'projects' || $module == 'tasks') {
|
||||
elseif ($moduleobject == 'project' || $moduleobject == 'projects' || $moduleobject == 'task' || $moduleobject == 'tasks') {
|
||||
$moduledirforclass = 'projet';
|
||||
}
|
||||
elseif ($module == 'task') {
|
||||
$moduledirforclass = 'projet';
|
||||
}
|
||||
elseif ($module == 'stock' || $module == 'stockmovements' || $module == 'warehouses') {
|
||||
elseif ($moduleobject == 'stock' || $moduleobject == 'stockmovements' || $moduleobject == 'warehouses') {
|
||||
$moduledirforclass = 'product/stock';
|
||||
}
|
||||
elseif ($module == 'supplierproposals' || $module == 'supplierproposal' || $module == 'supplier_proposal') {
|
||||
elseif ($moduleobject == 'supplierproposals' || $moduleobject == 'supplierproposal' || $moduleobject == 'supplier_proposal') {
|
||||
$moduledirforclass = 'supplier_proposal';
|
||||
}
|
||||
elseif ($module == 'fournisseur' || $module == 'supplierinvoices' || $module == 'supplierorders') {
|
||||
elseif ($moduleobject == 'fournisseur' || $moduleobject == 'supplierinvoices' || $moduleobject == 'supplierorders') {
|
||||
$moduledirforclass = 'fourn';
|
||||
}
|
||||
elseif ($module == 'expensereports') {
|
||||
$moduledirforclass = 'expensereport';
|
||||
}
|
||||
elseif ($module == 'users') {
|
||||
$moduledirforclass = 'user';
|
||||
}
|
||||
elseif ($module == 'ficheinter' || $module == 'interventions') {
|
||||
elseif ($moduleobject == 'ficheinter' || $moduleobject == 'interventions') {
|
||||
$moduledirforclass = 'fichinter';
|
||||
}
|
||||
elseif ($module == 'tickets') {
|
||||
$moduledirforclass = 'ticket';
|
||||
elseif ($moduleobject == 'mos') {
|
||||
$moduledirforclass = 'mrp';
|
||||
}
|
||||
elseif ($module == 'boms') {
|
||||
$moduledirforclass = 'bom';
|
||||
elseif (in_array($moduleobject, array('products', 'expensereports', 'users', 'tickets', 'boms'))) {
|
||||
$moduledirforclass = preg_replace('/s$/', '', $moduleobject);
|
||||
}
|
||||
|
||||
return $moduledirforclass;
|
||||
|
||||
@ -164,10 +164,12 @@ function invoice_admin_prepare_head()
|
||||
$head[$h][2] = 'attributeslinesrec';
|
||||
$h++;
|
||||
|
||||
$head[$h][0] = DOL_URL_ROOT.'/admin/facture_situation.php';
|
||||
$head[$h][1] = $langs->trans("InvoiceSituation");
|
||||
$head[$h][2] = 'situation';
|
||||
$h++;
|
||||
if ($conf->global->INVOICE_USE_SITUATION) { // Warning, implementation is seriously bugged and a new one not compatible is expected to become stable
|
||||
$head[$h][0] = DOL_URL_ROOT.'/admin/facture_situation.php';
|
||||
$head[$h][1] = $langs->trans("InvoiceSituation");
|
||||
$head[$h][2] = 'situation';
|
||||
$h++;
|
||||
}
|
||||
|
||||
complete_head_from_modules($conf, $langs, null, $head, $h, 'invoice_admin', 'remove');
|
||||
|
||||
|
||||
@ -2191,7 +2191,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks
|
||||
{
|
||||
if (!in_array('prospectionstatus', $hiddenfields)) print_liste_field_titre("OpportunityStatus", "", "", "", "", '', $sortfield, $sortorder, 'right ');
|
||||
print_liste_field_titre("OpportunityAmount", "", "", "", "", 'align="right"', $sortfield, $sortorder);
|
||||
print_liste_field_titre('OpportunityWeightedAmount', '', '', '', '', 'align="right"', $sortfield, $sortorder);
|
||||
//print_liste_field_titre('OpportunityWeightedAmount', '', '', '', '', 'align="right"', $sortfield, $sortorder);
|
||||
}
|
||||
if (empty($conf->global->PROJECT_HIDE_TASKS))
|
||||
{
|
||||
@ -2225,10 +2225,11 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
|
||||
print '<td>';
|
||||
print '<td class="tdoverflowmax150">';
|
||||
print $projectstatic->getNomUrl(1, '', 0, '', '-', 0, -1, 'nowraponall');
|
||||
if (!in_array('projectlabel', $hiddenfields)) print '<br><span class="opacitymedium">'.dol_trunc($objp->title, 24).'</span>';
|
||||
print '</td>';
|
||||
|
||||
print '<td class="nowraponall tdoverflowmax100">';
|
||||
if ($objp->fk_soc > 0)
|
||||
{
|
||||
@ -2242,7 +2243,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks
|
||||
if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES))
|
||||
{
|
||||
if (!in_array('prospectionstatus', $hiddenfields)) {
|
||||
print '<td class="center">';
|
||||
print '<td class="center tdoverflowmax75">';
|
||||
// Because color of prospection status has no meaning yet, it is used if hidden constant is set
|
||||
if (empty($conf->global->USE_COLOR_FOR_PROSPECTION_STATUS)) {
|
||||
$oppStatusCode = dol_getIdFromCode($db, $objp->opp_status, 'c_lead_status', 'rowid', 'code');
|
||||
@ -2269,14 +2270,12 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks
|
||||
}
|
||||
|
||||
print '<td class="right">';
|
||||
if ($objp->opp_amount) print price($objp->opp_amount, 0, '', 1, -1, -1, $conf->currency);
|
||||
print '</td>';
|
||||
print '<td class="right">';
|
||||
if ($objp->opp_percent && $objp->opp_amount) {
|
||||
$opp_weighted_amount = $objp->opp_percent * $objp->opp_amount / 100;
|
||||
print price($opp_weighted_amount, 0, '', 1, -1, -1, $conf->currency);
|
||||
$ponderated_opp_amount += price2num($opp_weighted_amount);
|
||||
}
|
||||
if ($objp->opp_percent && $objp->opp_amount) {
|
||||
$opp_weighted_amount = $objp->opp_percent * $objp->opp_amount / 100;
|
||||
$alttext = $langs->trans("OpportunityWeightedAmount").' '.price($opp_weighted_amount, 0, '', 1, -1, 0, $conf->currency);
|
||||
$ponderated_opp_amount += price2num($opp_weighted_amount);
|
||||
}
|
||||
if ($objp->opp_amount) print '<span title="'.$alttext.'">'.price($objp->opp_amount, 0, '', 1, -1, 0, $conf->currency).'</span>';
|
||||
print '</td>';
|
||||
}
|
||||
|
||||
@ -2317,14 +2316,16 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks
|
||||
}
|
||||
|
||||
print '<tr class="liste_total">';
|
||||
print '<td colspan="2">'.$langs->trans("Total")."</td>";
|
||||
print '<td>'.$langs->trans("Total")."</td><td></td>";
|
||||
if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES))
|
||||
{
|
||||
if (!in_array('prospectionstatus', $hiddenfields)) {
|
||||
print '<td class="liste_total"></td>';
|
||||
}
|
||||
print '<td class="liste_total right">'.price($total_opp_amount, 0, '', 1, -1, -1, $conf->currency).'</td>';
|
||||
print '<td class="liste_total right">'.$form->textwithpicto(price($ponderated_opp_amount, 0, '', 1, -1, -1, $conf->currency), $langs->trans("OpportunityPonderatedAmountDesc"), 1).'</td>';
|
||||
print '<td class="liste_total right">';
|
||||
//$form->textwithpicto(price($ponderated_opp_amount, 0, '', 1, -1, -1, $conf->currency), $langs->trans("OpportunityPonderatedAmountDesc"), 1);
|
||||
print $form->textwithpicto(price($total_opp_amount, 0, '', 1, -1, 0, $conf->currency), $langs->trans("OpportunityPonderatedAmountDesc").' : '.price($ponderated_opp_amount, 0, '', 1, -1, 0, $conf->currency));
|
||||
print '</td>';
|
||||
}
|
||||
if (empty($conf->global->PROJECT_HIDE_TASKS))
|
||||
{
|
||||
|
||||
@ -287,9 +287,12 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f
|
||||
if (!$readok) accessforbidden();
|
||||
//print "Read access is ok";
|
||||
|
||||
// Check write permission from module (we need to know write permission to create but also to delete drafts record)
|
||||
// Check write permission from module (we need to know write permission to create but also to delete drafts record or to upload files)
|
||||
$createok = 1; $nbko = 0;
|
||||
if (GETPOST('action', 'aZ09') == 'create' || GETPOST('action', 'aZ09') == 'update' || ((GETPOST("action", "aZ09") == 'confirm_delete' && GETPOST("confirm", "aZ09") == 'yes') || GETPOST("action", "aZ09") == 'delete'))
|
||||
$wemustcheckpermissionforcreate = (GETPOST('sendit', 'alpha') || GETPOST('linkit', 'alpha') || GETPOST('action', 'aZ09') == 'create' || GETPOST('action', 'aZ09') == 'update');
|
||||
$wemustcheckpermissionfordeletedraft = ((GETPOST("action", "aZ09") == 'confirm_delete' && GETPOST("confirm", "aZ09") == 'yes') || GETPOST("action", "aZ09") == 'delete');
|
||||
|
||||
if ($wemustcheckpermissionforcreate || $wemustcheckpermissionfordeletedraft)
|
||||
{
|
||||
foreach ($featuresarray as $feature)
|
||||
{
|
||||
@ -351,7 +354,7 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f
|
||||
// If a or and at least one ok
|
||||
if (preg_match('/\|/', $features) && $nbko < count($featuresarray)) $createok = 1;
|
||||
|
||||
if ((GETPOST('action', 'aZ09') == 'create' || GETPOST('action', 'aZ09') == 'update') && !$createok) accessforbidden();
|
||||
if ($wemustcheckpermissionforcreate && !$createok) accessforbidden();
|
||||
//print "Write access is ok";
|
||||
}
|
||||
|
||||
|
||||
@ -460,7 +460,7 @@ function showWebsiteTemplates(Website $website)
|
||||
|
||||
$colspan = 2;
|
||||
|
||||
print '<!-- For to import website template -->'."\n";
|
||||
print '<!-- For website template import -->'."\n";
|
||||
print '<table class="noborder centpercent">';
|
||||
|
||||
// Title
|
||||
|
||||
@ -298,6 +298,14 @@ class modFournisseur extends DolibarrModules
|
||||
'p.ref'=>'ProductRef', 'p.label'=>'ProductLabel', 'p.accountancy_code_buy'=>'ProductAccountancyBuyCode', 'project.rowid'=>'ProjectId',
|
||||
'project.ref'=>'ProjectRef', 'project.title'=>'ProjectLabel'
|
||||
);
|
||||
if (! empty($conf->multicurrency->enabled))
|
||||
{
|
||||
$this->export_fields_array[$r]['f.multicurrency_code'] = 'Currency';
|
||||
$this->export_fields_array[$r]['f.multicurrency_tx'] = 'CurrencyRate';
|
||||
$this->export_fields_array[$r]['f.multicurrency_total_ht'] = 'MulticurrencyAmountHT';
|
||||
$this->export_fields_array[$r]['f.multicurrency_total_tva'] = 'MulticurrencyAmountVAT';
|
||||
$this->export_fields_array[$r]['f.multicurrency_total_ttc'] = 'MulticurrencyAmountTTC';
|
||||
}
|
||||
//$this->export_TypeFields_array[$r]=array(
|
||||
// 's.rowid'=>"List:societe:CompanyName",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text',
|
||||
// 's.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Numeric",'f.total_ttc'=>"Numeric",'f.total_tva'=>"Numeric",
|
||||
@ -425,6 +433,14 @@ class modFournisseur extends DolibarrModules
|
||||
'f.fk_statut'=>'InvoiceStatus', 'f.note_public'=>"InvoiceNote", 'p.rowid'=>'PaymentId', 'pf.amount'=>'AmountPayment',
|
||||
'p.datep'=>'DatePayment', 'p.num_paiement'=>'PaymentNumber', 'p.fk_bank'=>'IdTransaction', 'project.rowid'=>'ProjectId', 'project.ref'=>'ProjectRef', 'project.title'=>'ProjectLabel'
|
||||
);
|
||||
if (! empty($conf->multicurrency->enabled))
|
||||
{
|
||||
$this->export_fields_array[$r]['f.multicurrency_code'] = 'Currency';
|
||||
$this->export_fields_array[$r]['f.multicurrency_tx'] = 'CurrencyRate';
|
||||
$this->export_fields_array[$r]['f.multicurrency_total_ht'] = 'MulticurrencyAmountHT';
|
||||
$this->export_fields_array[$r]['f.multicurrency_total_tva'] = 'MulticurrencyAmountVAT';
|
||||
$this->export_fields_array[$r]['f.multicurrency_total_ttc'] = 'MulticurrencyAmountTTC';
|
||||
}
|
||||
//$this->export_TypeFields_array[$r]=array(
|
||||
// 's.rowid'=>"List:societe:CompanyName",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text',
|
||||
// 's.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",
|
||||
@ -511,6 +527,14 @@ class modFournisseur extends DolibarrModules
|
||||
'fd.total_tva'=>"LineTotalVAT", 'fd.product_type'=>'TypeOfLineServiceOrProduct', 'fd.ref'=>'RefSupplier', 'fd.fk_product'=>'ProductId',
|
||||
'p.ref'=>'ProductRef', 'p.label'=>'ProductLabel', 'project.rowid'=>'ProjectId', 'project.ref'=>'ProjectRef', 'project.title'=>'ProjectLabel'
|
||||
);
|
||||
if (! empty($conf->multicurrency->enabled))
|
||||
{
|
||||
$this->export_fields_array[$r]['f.multicurrency_code'] = 'Currency';
|
||||
$this->export_fields_array[$r]['f.multicurrency_tx'] = 'CurrencyRate';
|
||||
$this->export_fields_array[$r]['f.multicurrency_total_ht'] = 'MulticurrencyAmountHT';
|
||||
$this->export_fields_array[$r]['f.multicurrency_total_tva'] = 'MulticurrencyAmountVAT';
|
||||
$this->export_fields_array[$r]['f.multicurrency_total_ttc'] = 'MulticurrencyAmountTTC';
|
||||
}
|
||||
if (empty($conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED))
|
||||
{
|
||||
unset($this->export_fields_array['f.date_approve2']);
|
||||
|
||||
@ -15,6 +15,10 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
if (!empty($conf->categorie->enabled) && $user->rights->categorie->lire) {
|
||||
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
||||
}
|
||||
|
||||
print '<script type="text/javascript" language="javascript">
|
||||
$(document).ready(function() {
|
||||
|
||||
@ -135,7 +139,7 @@ print '</td></tr>'."\n";
|
||||
|
||||
// Customer Country
|
||||
print '<tr><td>'.$langs->trans("Country");
|
||||
if (count($array_query['cust_country']) > 0) {
|
||||
if (!empty($array_query['cust_country'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>'."\n";
|
||||
@ -145,7 +149,7 @@ print '</td></tr>'."\n";
|
||||
|
||||
// State Customer
|
||||
print '<tr><td>'.$langs->trans('Status').' '.$langs->trans('ThirdParty');
|
||||
if (count($array_query['cust_status']) > 0) {
|
||||
if (!empty($array_query['cust_status'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>';
|
||||
@ -173,7 +177,7 @@ print '</td></tr>'."\n";
|
||||
// Prospect/Customer
|
||||
$selected = $array_query['cust_typecust'];
|
||||
print '<tr><td>'.$langs->trans('ProspectCustomer').' '.$langs->trans('ThirdParty');
|
||||
if (count($array_query['cust_typecust']) > 0) {
|
||||
if (!empty($array_query['cust_typecust'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>';
|
||||
@ -189,7 +193,7 @@ print '</td></tr>'."\n";
|
||||
|
||||
// Prospection status
|
||||
print '<tr><td>'.$langs->trans('ProspectLevel');
|
||||
if (count($array_query['cust_prospect_status']) > 0) {
|
||||
if (!empty($array_query['cust_prospect_status'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>';
|
||||
@ -199,7 +203,7 @@ print '</td></tr>'."\n";
|
||||
|
||||
// Prospection comm status
|
||||
print '<tr><td>'.$langs->trans('StatusProsp');
|
||||
if (count($array_query['cust_comm_status']) > 0) {
|
||||
if (!empty($array_query['cust_comm_status'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>';
|
||||
@ -209,7 +213,7 @@ print '</td></tr>'."\n";
|
||||
|
||||
// Customer Type
|
||||
print '<tr><td>'.$langs->trans("ThirdPartyType");
|
||||
if (count($array_query['cust_typeent']) > 0) {
|
||||
if (!empty($array_query['cust_typeent'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>'."\n";
|
||||
@ -219,7 +223,7 @@ print '</td></tr>'."\n";
|
||||
|
||||
// Staff number
|
||||
print '<td>'.$langs->trans("Staff");
|
||||
if (count($array_query['cust_effectif_id']) > 0) {
|
||||
if (!empty($array_query['cust_effectif_id'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>';
|
||||
@ -229,7 +233,7 @@ print '</td></tr>'."\n";
|
||||
|
||||
// Sales manager
|
||||
print '<tr><td>'.$langs->trans("SalesRepresentatives");
|
||||
if (count($array_query['cust_saleman']) > 0) {
|
||||
if (!empty($array_query['cust_saleman'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>'."\n";
|
||||
@ -240,7 +244,7 @@ print '</td></tr>'."\n";
|
||||
// Customer Default Langauge
|
||||
if (!empty($conf->global->MAIN_MULTILANGS)) {
|
||||
print '<tr><td>'.$langs->trans("DefaultLang");
|
||||
if (count($array_query['cust_language']) > 0) {
|
||||
if (!empty($array_query['cust_language'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>'."\n";
|
||||
@ -252,11 +256,12 @@ if (!empty($conf->global->MAIN_MULTILANGS)) {
|
||||
if (!empty($conf->categorie->enabled) && $user->rights->categorie->lire) {
|
||||
// Customer Categories
|
||||
print '<tr><td>'.$langs->trans("CustomersCategoryShort");
|
||||
if (count($array_query['cust_categ']) > 0) {
|
||||
if (!empty($array_query['cust_categ'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>'."\n";
|
||||
print $formadvtargetemaling->multiselectCustomerCategories('cust_categ', $array_query['cust_categ']);
|
||||
$cate_arbo = $form->select_all_categories(Categorie::TYPE_CUSTOMER, null, 'parent', null, null, 1);
|
||||
print $form->multiselectarray('cust_categ', $cate_arbo, GETPOST('cust_categ', 'array'), null, null, null, null, "90%");
|
||||
print '</td><td>'."\n";
|
||||
print '</td></tr>'."\n";
|
||||
}
|
||||
@ -346,7 +351,7 @@ if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) {
|
||||
|
||||
// State Contact
|
||||
print '<tr><td>'.$langs->trans('Status').' '.$langs->trans('Contact');
|
||||
if (count($array_query['contact_status']) > 0) {
|
||||
if (!empty($array_query['contact_status'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>';
|
||||
@ -364,7 +369,7 @@ print '</td></tr>'."\n";
|
||||
|
||||
// Civility
|
||||
print '<tr><td width="15%">'.$langs->trans("UserTitle");
|
||||
if (count($array_query['contact_civility']) > 0) {
|
||||
if (!empty($array_query['contact_civility'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>';
|
||||
@ -389,7 +394,7 @@ print '</td></tr>'."\n";
|
||||
|
||||
// Contact Country
|
||||
print '<tr><td>'.$langs->trans('Contact').' '.$langs->trans("Country");
|
||||
if (count($array_query['contact_country']) > 0) {
|
||||
if (!empty($array_query['contact_country'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>'."\n";
|
||||
@ -448,11 +453,12 @@ print '</td></tr>'."\n";
|
||||
if (!empty($conf->categorie->enabled) && $user->rights->categorie->lire) {
|
||||
// Customer Categories
|
||||
print '<tr><td>'.$langs->trans("ContactCategoriesShort");
|
||||
if (count($array_query['contact_categ']) > 0) {
|
||||
if (!empty($array_query['contact_categ'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>'."\n";
|
||||
print $formadvtargetemaling->multiselectContactCategories('contact_categ', $array_query['contact_categ']);
|
||||
$cate_arbo = $form->select_all_categories(Categorie::TYPE_CONTACT, null, 'parent', null, null, 1);
|
||||
print $form->multiselectarray('contact_categ', $cate_arbo, GETPOST('contact_categ', 'array'), null, null, null, null, "90%");
|
||||
print '</td><td>'."\n";
|
||||
print '</td></tr>'."\n";
|
||||
}
|
||||
@ -465,62 +471,66 @@ if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) {
|
||||
dol_include_once('/core/class/extrafields.class.php');
|
||||
$extrafields = new ExtraFields($db);
|
||||
$extrafields->fetch_name_optionals_label($elementype);
|
||||
foreach ($extrafields->attributes[$elementtype]['type'] as $key=>&$value) {
|
||||
if ($value == 'radio')$value = 'select';
|
||||
}
|
||||
|
||||
foreach ($extrafields->attributes[$elementtype]['label'] as $key => $val) {
|
||||
print '<tr><td>'.$extrafields->attributes[$elementtype]['label'][$key];
|
||||
if ($array_query['options_'.$key.'_cnct'] != '' || (is_array($array_query['options_'.$key.'_cnct']) && count($array_query['options_'.$key.'_cnct']) > 0)) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
if (!empty($extrafields->attributes[$elementtype]['type'])) {
|
||||
foreach ($extrafields->attributes[$elementtype]['type'] as $key => &$value) {
|
||||
if ($value == 'radio')
|
||||
$value = 'select';
|
||||
}
|
||||
print '</td><td>';
|
||||
if (($extrafields->attributes[$elementtype]['type'][$key] == 'varchar') || ($extrafields->attributes[$elementtype]['type'][$key] == 'text')) {
|
||||
print '<input type="text" name="options_'.$key.'_cnct"/></td><td>'."\n";
|
||||
print $form->textwithpicto('', $langs->trans("AdvTgtSearchTextHelp"), 1, 'help');
|
||||
} elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'int') || ($extrafields->attributes[$elementtype]['type'][$key] == 'double')) {
|
||||
print $langs->trans("AdvTgtMinVal").'<input type="text" name="options_'.$key.'_min_cnct"/>';
|
||||
print $langs->trans("AdvTgtMaxVal").'<input type="text" name="options_'.$key.'_max_cnct"/>';
|
||||
print '</td><td>'."\n";
|
||||
print $form->textwithpicto('', $langs->trans("AdvTgtSearchIntHelp"), 1, 'help');
|
||||
} elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'date') || ($extrafields->attributes[$elementtype]['type'][$key] == 'datetime')) {
|
||||
print '<table class="nobordernopadding"><tr>';
|
||||
print '<td>'.$langs->trans("AdvTgtStartDt").'</td><td>';
|
||||
print $form->selectDate('', 'options_'.$key.'_st_dt_cnct');
|
||||
print '</td><td>'.$langs->trans("AdvTgtEndDt").'</td><td>';
|
||||
print $form->selectDate('', 'options_'.$key.'_end_dt_cnct');
|
||||
print '</td></tr></table>';
|
||||
print '</td><td>'."\n";
|
||||
print $form->textwithpicto('', $langs->trans("AdvTgtSearchDtHelp"), 1, 'help');
|
||||
} elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'boolean')) {
|
||||
print $form->selectarray(
|
||||
'options_'.$key.'_cnct',
|
||||
array(
|
||||
'' => '',
|
||||
'1' => $langs->trans('Yes'),
|
||||
'0' => $langs->trans('No')
|
||||
),
|
||||
$array_query['options_'.$key.'_cnct']
|
||||
);
|
||||
print '</td><td>'."\n";
|
||||
} elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'select')) {
|
||||
print $formadvtargetemaling->advMultiselectarray('options_'.$key.'_cnct', $extrafields->attributes[$key]['param']['options'], $array_query['options_'.$key.'_cnct']);
|
||||
print '</td><td>'."\n";
|
||||
} elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'sellist')) {
|
||||
print $formadvtargetemaling->advMultiselectarraySelllist('options_'.$key.'_cnct', $extrafields->attributes[$key]['param']['options'], $array_query['options_'.$key.'_cnct']);
|
||||
print '</td><td>'."\n";
|
||||
} else {
|
||||
print '<table class="nobordernopadding"><tr>';
|
||||
print '<td></td><td>';
|
||||
if (is_array($array_query['options_'.$key.'_cnct'])) {
|
||||
print $extrafields->showInputField($key, implode(',', $array_query['options_'.$key.'_cnct']), '', '_cnct');
|
||||
} else {
|
||||
print $extrafields->showInputField($key, $array_query['options_'.$key.'_cnct'], '', '_cnct');
|
||||
}
|
||||
if (!empty($extrafields->attributes[$elementtype]['label'])) {
|
||||
foreach ($extrafields->attributes[$elementtype]['label'] as $key => $val) {
|
||||
print '<tr><td>' . $extrafields->attributes[$elementtype]['label'][$key];
|
||||
if ($array_query['options_' . $key . '_cnct'] != '' || (is_array($array_query['options_' . $key . '_cnct']) && count($array_query['options_' . $key . '_cnct']) > 0)) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td></tr></table>';
|
||||
print '</td><td>'."\n";
|
||||
print '</td><td>';
|
||||
if (($extrafields->attributes[$elementtype]['type'][$key] == 'varchar') || ($extrafields->attributes[$elementtype]['type'][$key] == 'text')) {
|
||||
print '<input type="text" name="options_' . $key . '_cnct"/></td><td>' . "\n";
|
||||
print $form->textwithpicto('', $langs->trans("AdvTgtSearchTextHelp"), 1, 'help');
|
||||
} elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'int') || ($extrafields->attributes[$elementtype]['type'][$key] == 'double')) {
|
||||
print $langs->trans("AdvTgtMinVal") . '<input type="text" name="options_' . $key . '_min_cnct"/>';
|
||||
print $langs->trans("AdvTgtMaxVal") . '<input type="text" name="options_' . $key . '_max_cnct"/>';
|
||||
print '</td><td>' . "\n";
|
||||
print $form->textwithpicto('', $langs->trans("AdvTgtSearchIntHelp"), 1, 'help');
|
||||
} elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'date') || ($extrafields->attributes[$elementtype]['type'][$key] == 'datetime')) {
|
||||
print '<table class="nobordernopadding"><tr>';
|
||||
print '<td>' . $langs->trans("AdvTgtStartDt") . '</td><td>';
|
||||
print $form->selectDate('', 'options_' . $key . '_st_dt_cnct');
|
||||
print '</td><td>' . $langs->trans("AdvTgtEndDt") . '</td><td>';
|
||||
print $form->selectDate('', 'options_' . $key . '_end_dt_cnct');
|
||||
print '</td></tr></table>';
|
||||
print '</td><td>' . "\n";
|
||||
print $form->textwithpicto('', $langs->trans("AdvTgtSearchDtHelp"), 1, 'help');
|
||||
} elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'boolean')) {
|
||||
print $form->selectarray(
|
||||
'options_' . $key . '_cnct',
|
||||
array(
|
||||
'' => '',
|
||||
'1' => $langs->trans('Yes'),
|
||||
'0' => $langs->trans('No')
|
||||
),
|
||||
$array_query['options_' . $key . '_cnct']
|
||||
);
|
||||
print '</td><td>' . "\n";
|
||||
} elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'select')) {
|
||||
print $formadvtargetemaling->advMultiselectarray('options_' . $key . '_cnct', $extrafields->attributes[$key]['param']['options'], $array_query['options_' . $key . '_cnct']);
|
||||
print '</td><td>' . "\n";
|
||||
} elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'sellist')) {
|
||||
print $formadvtargetemaling->advMultiselectarraySelllist('options_' . $key . '_cnct', $extrafields->attributes[$key]['param']['options'], $array_query['options_' . $key . '_cnct']);
|
||||
print '</td><td>' . "\n";
|
||||
} else {
|
||||
print '<table class="nobordernopadding"><tr>';
|
||||
print '<td></td><td>';
|
||||
if (is_array($array_query['options_' . $key . '_cnct'])) {
|
||||
print $extrafields->showInputField($key, implode(',', $array_query['options_' . $key . '_cnct']), '', '_cnct');
|
||||
} else {
|
||||
print $extrafields->showInputField($key, $array_query['options_' . $key . '_cnct'], '', '_cnct');
|
||||
}
|
||||
print '</td></tr></table>';
|
||||
print '</td><td>' . "\n";
|
||||
}
|
||||
print '</td></tr>' . "\n";
|
||||
}
|
||||
print '</td></tr>'."\n";
|
||||
}
|
||||
}
|
||||
print '<tr>'."\n";
|
||||
|
||||
@ -65,6 +65,7 @@ $extrafields->fetch_name_optionals_label($object->table_element);
|
||||
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||
$hookmanager->initHooks(array('doncard', 'globalcard'));
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
@ -409,11 +410,11 @@ if ($action == 'create')
|
||||
|
||||
// Country
|
||||
print '<tr><td><label for="selectcountry_id">'.$langs->trans('Country').'</label></td><td class="maxwidthonsmartphone">';
|
||||
print $form->select_country(GETPOST('country_id') != '' ?GETPOST('country_id') : $object->country_id);
|
||||
print img_picto('', 'globe-americas', 'class="paddingrightonly"').$form->select_country(GETPOST('country_id') != '' ?GETPOST('country_id') : $object->country_id);
|
||||
if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
||||
print '</td></tr>';
|
||||
|
||||
print "<tr>".'<td>'.$langs->trans("EMail").'</td><td><input type="text" name="email" value="'.dol_escape_htmltag(GETPOST("email")).'" class="maxwidth200"></td></tr>';
|
||||
print "<tr>".'<td>'.$langs->trans("EMail").'</td><td>'.img_picto('', 'object_email', 'class="paddingrightonly"').'<input type="text" name="email" value="'.dol_escape_htmltag(GETPOST("email")).'" class="maxwidth200"></td></tr>';
|
||||
}
|
||||
|
||||
// Payment mode
|
||||
|
||||
@ -91,12 +91,12 @@ class PaiementFourn extends Paiement
|
||||
{
|
||||
$error = 0;
|
||||
|
||||
$sql = 'SELECT p.rowid, p.ref, p.entity, p.datep as dp, p.amount, p.statut, p.fk_bank,';
|
||||
$sql = 'SELECT p.rowid, p.ref, p.entity, p.datep as dp, p.amount, p.statut, p.fk_bank, p.multicurrency_amount,';
|
||||
$sql .= ' c.code as paiement_code, c.libelle as paiement_type,';
|
||||
$sql .= ' p.num_paiement as num_payment, p.note, b.fk_account';
|
||||
$sql .= ' FROM '.MAIN_DB_PREFIX.'paiementfourn as p';
|
||||
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as c ON p.fk_paiement = c.id';
|
||||
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON p.fk_bank = b.rowid ';
|
||||
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON p.fk_bank = b.rowid';
|
||||
$sql .= ' WHERE p.entity IN ('.getEntity('facture_fourn').')';
|
||||
if ($id > 0)
|
||||
$sql .= ' AND p.rowid = '.$id;
|
||||
@ -113,6 +113,7 @@ class PaiementFourn extends Paiement
|
||||
if ($num > 0)
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
$this->id = $obj->rowid;
|
||||
$this->ref = $obj->ref;
|
||||
$this->entity = $obj->entity;
|
||||
@ -125,11 +126,13 @@ class PaiementFourn extends Paiement
|
||||
$this->bank_line = $obj->fk_bank;
|
||||
$this->montant = $obj->amount;
|
||||
$this->amount = $obj->amount;
|
||||
$this->multicurrency_amount = $obj->multicurrency_amount;
|
||||
$this->note = $obj->note;
|
||||
$this->note_private = $obj->note;
|
||||
$this->type_code = $obj->paiement_code;
|
||||
$this->type_label = $obj->paiement_type;
|
||||
$this->statut = $obj->statut;
|
||||
|
||||
$error = 1;
|
||||
}
|
||||
else
|
||||
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -58,8 +58,8 @@ AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in f
|
||||
AccountancyAreaDescActionFreq=The following actions are usually executed every month, week or day for very large companies...
|
||||
|
||||
AccountancyAreaDescJournalSetup=STEP %s: Create or check content of your journal list from menu %s
|
||||
AccountancyAreaDescChartModel=STEP %s: Create a model of chart of account from menu %s
|
||||
AccountancyAreaDescChart=STEP %s: Create or check content of your chart of account from menu %s
|
||||
AccountancyAreaDescChartModel=STEP %s: Check that a model of chart of account exists or create one from menu %s
|
||||
AccountancyAreaDescChart=STEP %s: Select and|or complete your chart of account from menu %s
|
||||
|
||||
AccountancyAreaDescVat=STEP %s: Define accounting accounts for each VAT Rates. For this, use the menu entry %s.
|
||||
AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s.
|
||||
|
||||
@ -95,7 +95,7 @@ NextValueForInvoices=Next value (invoices)
|
||||
NextValueForCreditNotes=Next value (credit notes)
|
||||
NextValueForDeposit=Next value (down payment)
|
||||
NextValueForReplacements=Next value (replacements)
|
||||
MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the maximum filesize for upload to <b>%s</b> %s, irrespective of the value of this parameter
|
||||
MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to <b>%s</b> %s, irrespective of the value of this parameter
|
||||
NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration
|
||||
MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload)
|
||||
UseCaptchaCode=Use graphical code (CAPTCHA) on login page
|
||||
@ -207,7 +207,7 @@ ModulesMarketPlaces=Find external app/modules
|
||||
ModulesDevelopYourModule=Develop your own app/modules
|
||||
ModulesDevelopDesc=You may also develop your own module or find a partner to develop one for you.
|
||||
DOLISTOREdescriptionLong=Instead of switching on <a href="https://www.dolistore.com">www.dolistore.com</a> web site to find an external module, you can use this embedded tool that will perform the search on the external market place for you (may be slow, need an internet access)...
|
||||
NewModule=New
|
||||
NewModule=New module
|
||||
FreeModule=Free
|
||||
CompatibleUpTo=Compatible with version %s
|
||||
NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s).
|
||||
@ -219,7 +219,7 @@ Nouveauté=Novelty
|
||||
AchatTelechargement=Buy / Download
|
||||
GoModuleSetupArea=To deploy/install a new module, go to the Module setup area: <a href="%s">%s</a>.
|
||||
DoliStoreDesc=DoliStore, the official market place for Dolibarr ERP/CRM external modules
|
||||
DoliPartnersDesc=List of companies providing custom-developed modules or features.<br>Note: since Dolibarr is an open source application, <i>anyone</i> experienced in PHP programming may develop a module.
|
||||
DoliPartnersDesc=List of companies providing custom-developed modules or features.<br>Note: since Dolibarr is an open source application, <i>anyone</i> experienced in PHP programming should be able to develop a module.
|
||||
WebSiteDesc=External websites for more add-on (non-core) modules...
|
||||
DevelopYourModuleDesc=Some solutions to develop your own module...
|
||||
URL=URL
|
||||
@ -446,12 +446,13 @@ LinkToTestClickToDial=Enter a phone number to call to show a link to test the Cl
|
||||
RefreshPhoneLink=Refresh link
|
||||
LinkToTest=Clickable link generated for user <strong>%s</strong> (click phone number to test)
|
||||
KeepEmptyToUseDefault=Keep empty to use default value
|
||||
KeepThisEmptyInMostCases=In most cases, you can keep this field empy.
|
||||
DefaultLink=Default link
|
||||
SetAsDefault=Set as default
|
||||
ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url)
|
||||
ExternalModule=External module
|
||||
InstalledInto=Installed into directory %s
|
||||
BarcodeInitForthird-parties=Mass barcode init for third-parties
|
||||
BarcodeInitForThirdparties=Mass barcode init for third-parties
|
||||
BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services
|
||||
CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined.
|
||||
InitEmptyBarCode=Init value for next %s empty records
|
||||
@ -541,8 +542,8 @@ Module54Name=Contracts/Subscriptions
|
||||
Module54Desc=Management of contracts (services or recurring subscriptions)
|
||||
Module55Name=Barcodes
|
||||
Module55Desc=Barcode management
|
||||
Module56Name=Telephony
|
||||
Module56Desc=Telephony integration
|
||||
Module56Name=Payment by credit transfer
|
||||
Module56Desc=Management of payment by credit transfer orders. It includes generation of SEPA file for European countries.
|
||||
Module57Name=Bank Direct Debit payments
|
||||
Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries.
|
||||
Module58Name=ClickToDial
|
||||
@ -1145,6 +1146,7 @@ AvailableModules=Available app/modules
|
||||
ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules).
|
||||
SessionTimeOut=Time out for session
|
||||
SessionExplanation=This number guarantees that the session will never expire before this delay, if the session cleaner is done by Internal PHP session cleaner (and nothing else). Internal PHP session cleaner does not guarantee that the session will expire after this delay. It will expire, after this delay, and when the session cleaner is run, so every <b>%s/%s</b> access, but only during access made by other sessions (if value is 0, it means clearing of session is done only by an external process).<br>Note: on some servers with an external session cleaning mechanism (cron under debian, ubuntu ...), the sessions can be destroyed after a period defined by an external setup, no matter what the value entered here is.
|
||||
SessionsPurgedByExternalSystem=Sessions on this server seems to be cleaned by an external mechanism (cron under debian, ubuntu ...), probably every <b>%s</b> seconds (= value of parameter <b>session.gc_maxlifetime</b>), so changing the value here has no effect. You must ask the server administrator to change session delay.
|
||||
TriggersAvailable=Available triggers
|
||||
TriggersDesc=Triggers are files that will modify the behavior of Dolibarr workflow once copied into the directory <b>htdocs/core/triggers</b>. They realize new actions, activated on Dolibarr events (new company creation, invoice validation, ...).
|
||||
TriggerDisabledByName=Triggers in this file are disabled by the <b>-NORUN</b> suffix in their name.
|
||||
@ -1262,6 +1264,7 @@ FieldEdition=Edition of field %s
|
||||
FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced)
|
||||
GetBarCode=Get barcode
|
||||
NumberingModules=Numbering models
|
||||
DocumentModules=Document models
|
||||
##### Module password generation
|
||||
PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: 8 characters containing shared numbers and characters in lowercase.
|
||||
PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually.
|
||||
@ -1844,6 +1847,7 @@ MailToThirdparty=Third parties
|
||||
MailToMember=Members
|
||||
MailToUser=Users
|
||||
MailToProject=Projects page
|
||||
MailToTicket=Tickets
|
||||
ByDefaultInList=Show by default on list view
|
||||
YouUseLastStableVersion=You use the latest stable version
|
||||
TitleExampleForMajorRelease=Example of message you can use to announce this major release (feel free to use it on your web sites)
|
||||
@ -1996,6 +2000,7 @@ EmailTemplate=Template for email
|
||||
EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax
|
||||
PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF.
|
||||
FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book.
|
||||
FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled
|
||||
RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard
|
||||
JumpToBoxes=Jump to Setup -> Widgets
|
||||
MeasuringUnitTypeDesc=Use here a value like "size", "surface", "volume", "weight", "time"
|
||||
|
||||
@ -112,8 +112,10 @@ BOM_CLOSEInDolibarr=BOM disabled
|
||||
BOM_REOPENInDolibarr=BOM reopen
|
||||
BOM_DELETEInDolibarr=BOM deleted
|
||||
MRP_MO_VALIDATEInDolibarr=MO validated
|
||||
MRP_MO_UNVALIDATEInDolibarr=MO set to draft status
|
||||
MRP_MO_PRODUCEDInDolibarr=MO produced
|
||||
MRP_MO_DELETEInDolibarr=MO deleted
|
||||
MRP_MO_CANCELInDolibarr=MO canceled
|
||||
##### End agenda events #####
|
||||
AgendaModelModule=Document templates for event
|
||||
DateActionStart=Start date
|
||||
@ -152,3 +154,6 @@ EveryMonth=Every month
|
||||
DayOfMonth=Day of month
|
||||
DayOfWeek=Day of week
|
||||
DateStartPlusOne=Date start + 1 hour
|
||||
SetAllEventsToTodo=Set all events to todo
|
||||
SetAllEventsToInProgress=Set all events to in progress
|
||||
SetAllEventsToFinished=Set all events to finished
|
||||
|
||||
@ -35,8 +35,10 @@ SwiftValid=BIC/SWIFT valid
|
||||
SwiftVNotalid=BIC/SWIFT not valid
|
||||
IbanValid=BAN valid
|
||||
IbanNotValid=BAN not valid
|
||||
StandingOrders=Direct Debit orders
|
||||
StandingOrders=Direct debit orders
|
||||
StandingOrder=Direct debit order
|
||||
PaymentByBankTransfers=Payments by credit transfer
|
||||
PaymentByBankTransfer=Payment by credit transfer
|
||||
AccountStatement=Account statement
|
||||
AccountStatementShort=Statement
|
||||
AccountStatements=Account statements
|
||||
|
||||
@ -241,8 +241,6 @@ EscompteOffered=Discount offered (payment before term)
|
||||
EscompteOfferedShort=Discount
|
||||
SendBillRef=Submission of invoice %s
|
||||
SendReminderBillRef=Submission of invoice %s (reminder)
|
||||
StandingOrders=Direct debit orders
|
||||
StandingOrder=Direct debit order
|
||||
NoDraftBills=No draft invoices
|
||||
NoOtherDraftBills=No other draft invoices
|
||||
NoDraftInvoices=No draft invoices
|
||||
@ -572,3 +570,6 @@ AutoFillDateToShort=Set end date
|
||||
MaxNumberOfGenerationReached=Max number of gen. reached
|
||||
BILL_DELETEInDolibarr=Invoice deleted
|
||||
BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted
|
||||
UnitPriceXQtyLessDiscount=Unit price x Qty - Discount
|
||||
CustomersInvoicesArea=Customer billing area
|
||||
SupplierInvoicesArea=Supplier billing area
|
||||
|
||||
@ -108,3 +108,5 @@ MainTemplateToUse=Main template to use
|
||||
OrderTemplateToUse=Order template to use
|
||||
BarRestaurant=Bar Restaurant
|
||||
AutoOrder=Customer auto order
|
||||
RestaurantMenu=Menu
|
||||
CustomerMenu=Customer menu
|
||||
|
||||
@ -86,4 +86,5 @@ ByDefaultInList=By default in list
|
||||
ChooseCategory=Choose category
|
||||
StocksCategoriesArea=Warehouses Categories Area
|
||||
ActionCommCategoriesArea=Events Categories Area
|
||||
WebsitePagesCategoriesArea=Page-Container Categories Area
|
||||
UseOrOperatorForCategories=Use or operator for categories
|
||||
|
||||
@ -19,7 +19,6 @@ ProspectionArea=Prospection area
|
||||
IdThirdParty=Id third party
|
||||
IdCompany=Company Id
|
||||
IdContact=Contact Id
|
||||
Contacts=Contacts/Addresses
|
||||
ThirdPartyContacts=Third-party contacts
|
||||
ThirdPartyContact=Third-party contact/address
|
||||
Company=Company
|
||||
@ -298,7 +297,8 @@ AddContact=Create contact
|
||||
AddContactAddress=Create contact/address
|
||||
EditContact=Edit contact
|
||||
EditContactAddress=Edit contact/address
|
||||
Contact=Contact
|
||||
Contact=Contact/Address
|
||||
Contacts=Contacts/Addresses
|
||||
ContactId=Contact id
|
||||
ContactsAddresses=Contacts/Addresses
|
||||
FromContactName=Name:
|
||||
@ -425,7 +425,7 @@ ListSuppliersShort=List of Vendors
|
||||
ListProspectsShort=List of Prospects
|
||||
ListCustomersShort=List of Customers
|
||||
ThirdPartiesArea=Third Parties/Contacts
|
||||
LastModifiedThirdParties=Last %s modified Third Parties
|
||||
LastModifiedThirdParties=Latest %s modified Third Parties
|
||||
UniqueThirdParties=Total of Third Parties
|
||||
InActivity=Open
|
||||
ActivityCeased=Closed
|
||||
|
||||
@ -263,3 +263,4 @@ WarningNumberOfRecipientIsRestrictedInMassAction=Warning, number of different re
|
||||
WarningDateOfLineMustBeInExpenseReportRange=Warning, the date of line is not in the range of the expense report
|
||||
WarningProjectClosed=Project is closed. You must re-open it first.
|
||||
WarningSomeBankTransactionByChequeWereRemovedAfter=Some bank transaction were removed after that the receipt including them were generated. So nb of cheques and total of receipt may differ from number and total in list.
|
||||
WarningFailedToAddFileIntoDatabaseIndex=Warnin, failed to add file entry into ECM database index table
|
||||
|
||||
@ -11,7 +11,7 @@ CloseEtablishment=Close establishment
|
||||
# Dictionary
|
||||
DictionaryPublicHolidays=HRM - Public holidays
|
||||
DictionaryDepartment=HRM - Department list
|
||||
DictionaryFunction=HRM - Function list
|
||||
DictionaryFunction=HRM - Job positions
|
||||
# Module
|
||||
Employees=Employees
|
||||
Employee=Employee
|
||||
|
||||
@ -218,6 +218,6 @@ ErrorFoundDuringMigration=Error(s) were reported during the migration process so
|
||||
YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (directory renamed with .lock suffix).<br>
|
||||
YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br>
|
||||
ClickHereToGoToApp=Click here to go to your application
|
||||
ClickOnLinkOrRemoveManualy=Click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory.
|
||||
ClickOnLinkOrRemoveManualy=If an upgrade is in progress, please wait. If not, click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory.
|
||||
Loaded=Loaded
|
||||
FunctionTest=Function test
|
||||
|
||||
@ -28,7 +28,7 @@ NoTemplateDefined=No template available for this email type
|
||||
AvailableVariables=Available substitution variables
|
||||
NoTranslation=No translation
|
||||
Translation=Translation
|
||||
EmptySearchString=Enter a non empty search string
|
||||
EmptySearchString=Enter non empty search criterias
|
||||
NoRecordFound=No record found
|
||||
NoRecordDeleted=No record deleted
|
||||
NotEnoughDataYet=Not enough data
|
||||
@ -187,6 +187,8 @@ ShowCardHere=Show card
|
||||
Search=Search
|
||||
SearchOf=Search
|
||||
SearchMenuShortCut=Ctrl + shift + f
|
||||
QuickAdd=Quick add
|
||||
QuickAddMenuShortCut=Ctrl + shift + l
|
||||
Valid=Valid
|
||||
Approve=Approve
|
||||
Disapprove=Disapprove
|
||||
@ -664,6 +666,7 @@ Owner=Owner
|
||||
FollowingConstantsWillBeSubstituted=The following constants will be replaced with the corresponding value.
|
||||
Refresh=Refresh
|
||||
BackToList=Back to list
|
||||
BackToTree=Back to tree
|
||||
GoBack=Go back
|
||||
CanBeModifiedIfOk=Can be modified if valid
|
||||
CanBeModifiedIfKo=Can be modified if not valid
|
||||
@ -840,6 +843,7 @@ Sincerely=Sincerely
|
||||
ConfirmDeleteObject=Are you sure you want to delete this object?
|
||||
DeleteLine=Delete line
|
||||
ConfirmDeleteLine=Are you sure you want to delete this line?
|
||||
ErrorPDFTkOutputFileNotFound=Error: the file was not generated. Please check that the 'pdftk' command is installed in a directory included in the $PATH environment variable (linux/unix only) or contact your system administrator.
|
||||
NoPDFAvailableForDocGenAmongChecked=No PDF were available for the document generation among checked record
|
||||
TooManyRecordForMassAction=Too many records selected for mass action. The action is restricted to a list of %s records.
|
||||
NoRecordSelected=No record selected
|
||||
@ -1033,3 +1037,5 @@ DeleteFileText=Do you really want delete this file?
|
||||
ShowOtherLanguages=Show other languages
|
||||
SwitchInEditModeToAddTranslation=Switch in edit mode to add translations for this language
|
||||
NotUsedForThisCustomer=Not used for this customer
|
||||
AmountMustBePositive=Amount must be positive
|
||||
ByStatus=By status
|
||||
|
||||
@ -27,7 +27,7 @@ DangerZone=Danger zone
|
||||
BuildPackage=Build package
|
||||
BuildPackageDesc=You can generate a zip package of your application so your are ready to distribute it on any Dolibarr. You can also distribute it or sell it on marketplace like <a href="https://www.dolistore.com">DoliStore.com</a>.
|
||||
BuildDocumentation=Build documentation
|
||||
ModuleIsNotActive=This module is not activated yet. Go to %s to make it live or click here:
|
||||
ModuleIsNotActive=This module is not activated yet. Go to %s to make it live or click here
|
||||
ModuleIsLive=This module has been activated. Any change may break a current live feature.
|
||||
DescriptionLong=Long description
|
||||
EditorName=Name of editor
|
||||
@ -139,3 +139,4 @@ ForeignKey=Foreign key
|
||||
TypeOfFieldsHelp=Type of fields:<br>varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]] ('1' means we add a + button after the combo to create the record, 'filter' can be 'status=1 AND fk_user = __USER_ID AND entity IN (__SHARED_ENTITIES__)' for example)
|
||||
AsciiToHtmlConverter=Ascii to HTML converter
|
||||
AsciiToPdfConverter=Ascii to PDF converter
|
||||
TableNotEmptyDropCanceled=Table not empty. Drop has been canceled.
|
||||
|
||||
@ -74,3 +74,4 @@ ProductsToConsume=Products to consume
|
||||
ProductsToProduce=Products to produce
|
||||
UnitCost=Unit cost
|
||||
TotalCost=Total cost
|
||||
BOMTotalCost=The cost to produce this BOM based on cost of each quantity and product to consume (use Cost price if defined, else Average Weighted Price if defined, else the Best purchase price)
|
||||
|
||||
@ -85,8 +85,8 @@ MaxSize=Maximum size
|
||||
AttachANewFile=Attach a new file/document
|
||||
LinkedObject=Linked object
|
||||
NbOfActiveNotifications=Number of notifications (no. of recipient emails)
|
||||
PredefinedMailTest=__(Hello)__\nThis is a test mail sent to __EMAIL__.\nThe two lines are separated by a carriage return.\n\n__USER_SIGNATURE__
|
||||
PredefinedMailTestHtml=__(Hello)__\nThis is a <b>test</b> mail (the word test must be in bold).<br>The two lines are separated by a carriage return.<br><br>__USER_SIGNATURE__
|
||||
PredefinedMailTest=__(Hello)__\nThis is a test mail sent to __EMAIL__.\nThe lines are separated by a carriage return.\n\n__USER_SIGNATURE__
|
||||
PredefinedMailTestHtml=__(Hello)__<br>This is a <b>test</b> mail sent to __EMAIL__ (the word test must be in bold).<br>The lines are separated by a carriage return.<br><br>__USER_SIGNATURE__
|
||||
PredefinedMailContentContract=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
|
||||
PredefinedMailContentSendInvoice=__(Hello)__\n\nPlease find invoice __REF__ attached \n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
|
||||
PredefinedMailContentSendInvoiceReminder=__(Hello)__\n\nWe would like to remind you that the invoice __REF__ seems to have not been paid. A copy of the invoice is attached as a reminder.\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
|
||||
|
||||
@ -43,7 +43,7 @@ ServicesOnSaleOnly=Services for sale only
|
||||
ServicesOnPurchaseOnly=Services for purchase only
|
||||
ServicesNotOnSell=Services not for sale and not for purchase
|
||||
ServicesOnSellAndOnBuy=Services for sale and for purchase
|
||||
LastModifiedProductsAndServices=Last %s modified products/services
|
||||
LastModifiedProductsAndServices=Latest %s modified products/services
|
||||
LastRecordedProducts=Latest %s recorded products
|
||||
LastRecordedServices=Latest %s recorded services
|
||||
CardProduct0=Product
|
||||
@ -106,6 +106,7 @@ NoteNotVisibleOnBill=Note (not visible on invoices, proposals...)
|
||||
ServiceLimitedDuration=If product is a service with limited duration:
|
||||
MultiPricesAbility=Multiple price segments per product/service (each customer is in one price segment)
|
||||
MultiPricesNumPrices=Number of prices
|
||||
DefaultPriceType=Base of prices per default (with versus without tax) when adding new sale prices
|
||||
AssociatedProductsAbility=Activate virtual products (kits)
|
||||
AssociatedProducts=Virtual products
|
||||
AssociatedProductsNumber=Number of products composing this virtual product
|
||||
|
||||
@ -115,7 +115,7 @@ ChildOfTask=Child of task
|
||||
TaskHasChild=Task has child
|
||||
NotOwnerOfProject=Not owner of this private project
|
||||
AffectedTo=Allocated to
|
||||
CantRemoveProject=This project can't be removed as it is referenced by some other objects (invoice, orders or other). See referers tab.
|
||||
CantRemoveProject=This project can't be removed as it is referenced by some other objects (invoice, orders or other). See tab '%s'.
|
||||
ValidateProject=Validate projet
|
||||
ConfirmValidateProject=Are you sure you want to validate this project?
|
||||
CloseAProject=Close project
|
||||
@ -265,3 +265,4 @@ NewInvoice=New invoice
|
||||
OneLinePerTask=One line per task
|
||||
OneLinePerPeriod=One line per period
|
||||
RefTaskParent=Ref. Parent Task
|
||||
ProfitIsCalculatedWith=Profit is calculated using
|
||||
|
||||
@ -43,3 +43,5 @@ ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplie
|
||||
ValidateOrderFirstBeforeReception=You must first validate the order before being able to make receptions.
|
||||
ReceptionsNumberingModules=Numbering module for receptions
|
||||
ReceptionsReceiptModel=Document templates for receptions
|
||||
NoMorePredefinedProductToDispatch=No more predefined products to dispatch
|
||||
|
||||
|
||||
@ -56,6 +56,13 @@ PMPValueShort=WAP
|
||||
EnhancedValueOfWarehouses=Warehouses value
|
||||
UserWarehouseAutoCreate=Create a user warehouse automatically when creating a user
|
||||
AllowAddLimitStockByWarehouse=Manage also value for minimum and desired stock per pairing (product-warehouse) in addition to the value for minimum and desired stock per product
|
||||
RuleForWarehouse=Rule for warehouses
|
||||
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
||||
UserDefaultWarehouse=Set a warehouse on Users
|
||||
DefaultWarehouseActive=Default warehouse active
|
||||
MainDefaultWarehouse=Default warehouse
|
||||
MainDefaultWarehouseUser=Use user warehouse asign default
|
||||
MainDefaultWarehouseUserDesc=/!\\ By activating this option the gold of the creation of an article, the warehouse assigned to the user will be defined on this one. If no warehouse is defined on the user, the default warehouse is defined.
|
||||
IndependantSubProductStock=Product stock and subproduct stock are independent
|
||||
QtyDispatched=Quantity dispatched
|
||||
QtyDispatchedShort=Qty dispatched
|
||||
@ -123,6 +130,7 @@ WarehouseForStockDecrease=The warehouse <b>%s</b> will be used for stock decreas
|
||||
WarehouseForStockIncrease=The warehouse <b>%s</b> will be used for stock increase
|
||||
ForThisWarehouse=For this warehouse
|
||||
ReplenishmentStatusDesc=This is a list of all products with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked). Using the checkbox, you can create purchase orders to fill the difference.
|
||||
ReplenishmentStatusDescPerWarehouse=If you want a replenishment based on desired quantity defined per warehouse, you must add a filter on the warehouse.
|
||||
ReplenishmentOrdersDesc=This is a list of all open purchase orders including predefined products. Only open orders with predefined products, so orders that may affect stocks, are visible here.
|
||||
Replenishments=Replenishments
|
||||
NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s)
|
||||
@ -218,3 +226,4 @@ InventoryForASpecificWarehouse=Inventory for a specific warehouse
|
||||
InventoryForASpecificProduct=Inventory for a specific product
|
||||
StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use
|
||||
ForceTo=Force to
|
||||
AlwaysShowFullArbo=Display full tree of warehouse on popup of warehouse links (Warning: This may decrease dramatically performances)
|
||||
|
||||
@ -130,6 +130,10 @@ TicketNumberingModules=Tickets numbering module
|
||||
TicketNotifyTiersAtCreation=Notify third party at creation
|
||||
TicketGroup=Group
|
||||
TicketsDisableCustomerEmail=Always disable emails when a ticket is created from public interface
|
||||
TicketsPublicNotificationNewMessage=Send email(s) when a new message is added
|
||||
TicketsPublicNotificationNewMessageHelp=Send email(s) when a new message is added from public interface (to assigned user or the notifications email to (update) and/or the notifications email to)
|
||||
TicketPublicNotificationNewMessageDefaultEmail=Notifications email to (update)
|
||||
TicketPublicNotificationNewMessageDefaultEmailHelp=Send email new message notifications to this address if the ticket don't have a user assigned or the user don't have a email.
|
||||
#
|
||||
# Index & list page
|
||||
#
|
||||
|
||||
@ -16,6 +16,7 @@ WEBSITE_ROBOT=Robot file (robots.txt)
|
||||
WEBSITE_HTACCESS=Website .htaccess file
|
||||
WEBSITE_MANIFEST_JSON=Website manifest.json file
|
||||
WEBSITE_README=README.md file
|
||||
WEBSITE_KEYWORDSDesc=Use a comma to separate values
|
||||
EnterHereLicenseInformation=Enter here meta data or license information to fille a README.md file. if you distribute your website as a template, the file will be included into the temptate package.
|
||||
HtmlHeaderPage=HTML header (specific to this page only)
|
||||
PageNameAliasHelp=Name or alias of the page.<br>This alias is also used to forge a SEO URL when website is ran from a Virtual host of a Web server (like Apacke, Nginx, ...). Use the button "<strong>%s</strong>" to edit this alias.
|
||||
@ -120,7 +121,7 @@ ShowSubContainersOnOff=Mode to execute 'dynamic content' is %s
|
||||
GlobalCSSorJS=Global CSS/JS/Header file of web site
|
||||
BackToHomePage=Back to home page...
|
||||
TranslationLinks=Translation links
|
||||
YouTryToAccessToAFileThatIsNotAWebsitePage=You try to access to a page that is not a website page
|
||||
YouTryToAccessToAFileThatIsNotAWebsitePage=You try to access to a page that is not available.<br>(ref=%s, type=%s, status=%s)
|
||||
UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 characters
|
||||
MainLanguage=Main language
|
||||
OtherLanguages=Other languages
|
||||
@ -128,3 +129,6 @@ UseManifest=Provide a manifest.json file
|
||||
PublicAuthorAlias=Public author alias
|
||||
AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties
|
||||
ReplacementDoneInXPages=Replacement done in %s pages or containers
|
||||
RSSFeed=RSS Feed
|
||||
RSSFeedDesc=You can get a RSS feed of latest articles with type 'blogpost' using this URL
|
||||
PagesRegenerated=%s page(s)/container(s) regenerated
|
||||
|
||||
@ -1,27 +1,43 @@
|
||||
# Dolibarr language file - Source file is en_US - withdrawals
|
||||
CustomersStandingOrdersArea=Direct debit payment orders area
|
||||
SuppliersStandingOrdersArea=Direct credit payment orders area
|
||||
CustomersStandingOrdersArea=Payments by Direct debit orders
|
||||
SuppliersStandingOrdersArea=Payments by Credit transfer
|
||||
StandingOrdersPayment=Direct debit payment orders
|
||||
StandingOrderPayment=Direct debit payment order
|
||||
NewStandingOrder=New direct debit order
|
||||
NewPaymentByBankTransfer=New payment by credit transfer
|
||||
StandingOrderToProcess=To process
|
||||
PaymentByBankTransferReceipts=Credit transfer orders
|
||||
PaymentByBankTransferLines=Credit transfer order lines
|
||||
WithdrawalsReceipts=Direct debit orders
|
||||
WithdrawalReceipt=Direct debit order
|
||||
BankTransferReceipts=Credit transfer receipts
|
||||
BankTransferReceipt=Credit transfer receipt
|
||||
LatestBankTransferReceipts=Latest %s credit transfer orders
|
||||
LastWithdrawalReceipts=Latest %s direct debit files
|
||||
WithdrawalsLine=Direct debit order line
|
||||
CreditTransferLine=Credit transfer line
|
||||
WithdrawalsLines=Direct debit order lines
|
||||
RequestStandingOrderToTreat=Request for direct debit payment order to process
|
||||
RequestStandingOrderTreated=Request for direct debit payment order processed
|
||||
CreditTransferLines=Credit transfer lines
|
||||
RequestStandingOrderToTreat=Requests for direct debit payment order to process
|
||||
RequestStandingOrderTreated=Requests for direct debit payment order processed
|
||||
RequestPaymentsByBankTransferToTreat=Requests for credit transfer to process
|
||||
RequestPaymentsByBankTransferTreated=Requests for credit transfer processed
|
||||
NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines.
|
||||
NbOfInvoiceToWithdraw=No. of qualified invoice with waiting direct debit order
|
||||
NbOfInvoiceToWithdraw=No. of qualified customer invoices with waiting direct debit order
|
||||
NbOfInvoiceToWithdrawWithInfo=No. of customer invoice with direct debit payment orders having defined bank account information
|
||||
NbOfInvoiceToPayByBankTransfer=No. of qualified supplier invoices waiting for a payment by credit transfer
|
||||
SupplierInvoiceWaitingWithdraw=Vendor invoice waiting for payment by credit transfer
|
||||
InvoiceWaitingWithdraw=Invoice waiting for direct debit
|
||||
InvoiceWaitingPaymentByBankTransfer=Invoice waiting for credit transfer
|
||||
AmountToWithdraw=Amount to withdraw
|
||||
WithdrawsRefused=Direct debit refused
|
||||
NoInvoiceToWithdraw=No customer invoice with open 'Direct debit requests' is waiting. Go on tab '%s' on invoice card to make a request.
|
||||
NoInvoiceToWithdraw=No invoice open for '%s' is waiting. Go on tab '%s' on invoice card to make a request.
|
||||
NoSupplierInvoiceToWithdraw=No supplier invoice with open 'Direct credit requests' is waiting. Go on tab '%s' on invoice card to make a request.
|
||||
ResponsibleUser=User Responsible
|
||||
WithdrawalsSetup=Direct debit payment setup
|
||||
CreditTransferSetup=Crebit transfer setup
|
||||
WithdrawStatistics=Direct debit payment statistics
|
||||
WithdrawRejectStatistics=Direct debit payment reject statistics
|
||||
CreditTransferStatistics=Credit transfer statistics
|
||||
Rejects=Rejects
|
||||
LastWithdrawalReceipt=Latest %s direct debit receipts
|
||||
MakeWithdrawRequest=Make a direct debit payment request
|
||||
WithdrawRequestsDone=%s direct debit payment requests recorded
|
||||
@ -34,7 +50,9 @@ TransMetod=Transmission method
|
||||
Send=Send
|
||||
Lines=Lines
|
||||
StandingOrderReject=Issue a rejection
|
||||
WithdrawsRefused=Direct debit refused
|
||||
WithdrawalRefused=Withdrawal refused
|
||||
CreditTransfersRefused=Credit transfers refused
|
||||
WithdrawalRefusedConfirm=Are you sure you want to enter a withdrawal rejection for society
|
||||
RefusedData=Date of rejection
|
||||
RefusedReason=Reason for rejection
|
||||
@ -58,6 +76,8 @@ StatusMotif8=Other reason
|
||||
CreateForSepaFRST=Create direct debit file (SEPA FRST)
|
||||
CreateForSepaRCUR=Create direct debit file (SEPA RCUR)
|
||||
CreateAll=Create direct debit file (all)
|
||||
CreateFileForPaymentByBankTransfer=Create credit transfer (all)
|
||||
CreateSepaFileForPaymentByBankTransfer=Create credit transfer file (SEPA)
|
||||
CreateGuichet=Only office
|
||||
CreateBanque=Only bank
|
||||
OrderWaiting=Waiting for treatment
|
||||
@ -67,6 +87,7 @@ NumeroNationalEmetter=National Transmitter Number
|
||||
WithBankUsingRIB=For bank accounts using RIB
|
||||
WithBankUsingBANBIC=For bank accounts using IBAN/BIC/SWIFT
|
||||
BankToReceiveWithdraw=Receiving Bank Account
|
||||
BankToPayCreditTransfer=Bank Account used as source of payments
|
||||
CreditDate=Credit on
|
||||
WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported)
|
||||
ShowWithdraw=Show Direct Debit Order
|
||||
@ -74,7 +95,7 @@ IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one
|
||||
DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Direct Debit orders to manage the direct debit payment order. When payment order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null.
|
||||
WithdrawalFile=Withdrawal file
|
||||
SetToStatusSent=Set to status "File Sent"
|
||||
ThisWillAlsoAddPaymentOnInvoice=This will also record payments to invoices and will classify them as "Paid" if remain to pay is null
|
||||
ThisWillAlsoAddPaymentOnInvoice=This will also record payments on invoices and will classify them as "Paid" if remain to pay is null
|
||||
StatisticsByLineStatus=Statistics by status of lines
|
||||
RUM=UMR
|
||||
DateRUM=Mandate signature date
|
||||
|
||||
@ -2,18 +2,42 @@
|
||||
Foundation=مؤسسة
|
||||
Version=إصدار
|
||||
Publisher=الناشر
|
||||
VersionLastInstall=أول إصدار ثبت
|
||||
VersionLastUpgrade=أخر تحديث
|
||||
VersionExperimental=تجريبي
|
||||
VersionDevelopment=تطوير
|
||||
VersionRecommanded=موصى به
|
||||
FileCheck=تدقيق سلامة مجموعة الملفات
|
||||
FileCheckDesc=تتيح لك هذه الأداة التحقق من سلامة الملفات وإعدادات التطبيق الخاص بك ، مقارنة كل ملف بالملف الرسمي. يمكن أيضًا التحقق من قيمة بعض ثوابت الإعدادات. يمكنك استخدام هذه الأداة لتحديد ما إذا تم تعديل أي ملفات (على سبيل المثال بواسطة مخترق).
|
||||
FileIntegrityIsStrictlyConformedWithReference=يجب ان تتوافق سلامة الملفات تمامًا مع المرجع.
|
||||
FileIntegrityIsOkButFilesWereAdded=اجتاز فحص تكامل الملفات ، ولكن تمت إضافة بعض الملفات الجديدة.
|
||||
FileIntegritySomeFilesWereRemovedOrModified=فشل التحقق من تكامل الملفات. تم تعديل بعض الملفات أو إزالتها أو إضافتها.
|
||||
MakeIntegrityAnalysisFrom=عمل تحليل سلامة ملفات التطبيق من
|
||||
LocalSignature=توقيع محلي مضمن (أقل موثوقية)
|
||||
RemoteSignature=التوقيع عن بعد (أكثر موثوقية)
|
||||
FilesUpdated=الملفات المحدثة
|
||||
FilesModified=الملفات المعدلة
|
||||
FilesAdded=الملفات المضافة
|
||||
FileCheckDolibarr=تحقق من سلامة ملفات التطبيق
|
||||
AvailableOnlyOnPackagedVersions=لا يتوفر الملف المحلي لفحص السلامة إلا عندما يتم تثبيت التطبيق من حزمة رسمية
|
||||
XmlNotFound=لم يتم العثور على ملف تكامل Xml للتطبيق
|
||||
SessionId=هوية المتصل
|
||||
SessionSaveHandler=معالج لتوفير دورات
|
||||
PurgeSessions=انهاء الجلسات
|
||||
SessionSavePath=مكان حفظ الجلسة
|
||||
PurgeSessions=مسح الجلسات
|
||||
ConfirmPurgeSessions=هل تريد حقًا تطهير جميع الجلسات؟ سيؤدي هذا إلى فصل كل مستخدم (باستثناء نفسك).
|
||||
NoSessionListWithThisHandler=لا يسمح معالج حفظ الجلسة الذي تم تكوينه في PHP بإدراج جميع الجلسات الجارية.
|
||||
LockNewSessions=اغلاق الدخول للمتصلين الجدد
|
||||
ConfirmLockNewSessions=هل أنت متأكد من أنك تريد تقييد أي اتصال Dolibarr جديد لنفسك؟ سيتمكن المستخدم <b> %s </b> فقط من الاتصال بعد ذلك.
|
||||
UnlockNewSessions=الغاء حظر الاتصال
|
||||
YourSession=جلستك
|
||||
Sessions=جلسات المستخدمين
|
||||
WebUserGroup=مستخدم\\مجموعة خادم الويب
|
||||
NoSessionFound=يبدو أن تكوين PHP الخاص بك لا يسمح بإدراج الجلسات النشطة. قد يتم حماية الدليل المستخدم لحفظ الجلسات (<b> %s </b>) (على سبيل المثال عن طريق أذونات نظام التشغيل أو عن طريق توجيه PHP open_basedir).
|
||||
DBStoringCharset=ضبط الحروف في قاعدة البيانات لحفظ المعلومات
|
||||
DBSortingCharset=ضبط الحروف في قاعدة البيانات لحفظ المعلومات
|
||||
ClientCharset=مجموع حروف العميل
|
||||
ClientSortingCharset=ترتيب العميل
|
||||
WarningModuleNotActive=إن الوحدة <b>%s</b> لابد أن تكون مفعلة
|
||||
WarningOnlyPermissionOfActivatedModules=أن الصلاحيات المرتبطة بالوحدات المفعلة فقط تظهر هنا. تستطيع تفعيل وحدات أخرى من: الرئيسية ثم التنصيب ثم صفحة الوحدات
|
||||
DolibarrSetup=تثبيت أو ترقية البرنامج
|
||||
@ -21,8 +45,10 @@ InternalUsers=مستخدمون داخليون
|
||||
ExternalUsers=مستخدمون خارجيون
|
||||
FormToTestFileUploadForm=نموذج تجربة رفع الملفات (تبعا للتنصيب)
|
||||
FeatureAvailableOnlyOnStable=الميزة متوفرة فقط في الإصدارات الثابتة الرسمية
|
||||
Module40Name=موردين
|
||||
Module700Name=تبرعات
|
||||
Module1780Name=الأوسمة/التصنيفات
|
||||
Permission81=قراءة أوامر الشراء
|
||||
MailToSendInvoice=فواتير العميل
|
||||
MailToSendSupplierOrder=أوامر الشراء
|
||||
MailToSendSupplierInvoice=فواتير المورد
|
||||
|
||||
@ -7,6 +7,5 @@ ThirdPartySuppliers=موردين
|
||||
OverAllOrders=الطلبات
|
||||
OverAllSupplierProposals=طلبات عروض اسعار
|
||||
Customer=عميل
|
||||
Contact=Contact
|
||||
InActivity=افتح
|
||||
ActivityCeased=مقفول
|
||||
|
||||
@ -19,5 +19,18 @@ FormatDateHourShort=%m/%d/%Y %I:%M %p
|
||||
FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p
|
||||
FormatDateHourTextShort=%b %d, %Y, %I:%M %p
|
||||
FormatDateHourText=%B %d, %Y, %I:%M %p
|
||||
Closed2=مقفول
|
||||
NumberByMonth=الرقم بالشهر
|
||||
RefSupplier=المرجع. مورد
|
||||
CommercialProposalsShort=عروض تجارية
|
||||
Refused=مرفوض
|
||||
Drafts=المسودات
|
||||
Validated=معتمد
|
||||
Opened=افتح
|
||||
SearchIntoCustomerInvoices=فواتير العميل
|
||||
SearchIntoSupplierInvoices=فواتير المورد
|
||||
SearchIntoSupplierOrders=أوامر الشراء
|
||||
SearchIntoCustomerProposals=عروض تجارية
|
||||
SearchIntoSupplierProposals=عرود الموردين
|
||||
ContactDefault_commande=طلب
|
||||
ContactDefault_propal=عرض
|
||||
|
||||
@ -1,3 +1,2 @@
|
||||
# Dolibarr language file - Source file is en_US - projects
|
||||
CantRemoveProject=This project can't be removed as it is referenced by some other objects (invoice, orders or other). See referers tab.
|
||||
OppStatusPROPO=عرض
|
||||
|
||||
@ -58,8 +58,8 @@ AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in f
|
||||
AccountancyAreaDescActionFreq=The following actions are usually executed every month, week or day for very large companies...
|
||||
|
||||
AccountancyAreaDescJournalSetup=STEP %s: Create or check content of your journal list from menu %s
|
||||
AccountancyAreaDescChartModel=STEP %s: Create a model of chart of account from menu %s
|
||||
AccountancyAreaDescChart=STEP %s: Create or check content of your chart of account from menu %s
|
||||
AccountancyAreaDescChartModel=STEP %s: Check that a model of chart of account exists or create one from menu %s
|
||||
AccountancyAreaDescChart=STEP %s: Select and|or complete your chart of account from menu %s
|
||||
|
||||
AccountancyAreaDescVat=STEP %s: Define accounting accounts for each VAT Rates. For this, use the menu entry %s.
|
||||
AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s.
|
||||
|
||||
@ -95,7 +95,7 @@ NextValueForInvoices=القيمة التالية (الفواتير)
|
||||
NextValueForCreditNotes=القيمة التالية (ملاحظات دائن)
|
||||
NextValueForDeposit=Next value (down payment)
|
||||
NextValueForReplacements=القيمة التالية (استبدال)
|
||||
MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the maximum filesize for upload to <b>%s</b> %s, irrespective of the value of this parameter
|
||||
MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to <b>%s</b> %s, irrespective of the value of this parameter
|
||||
NoMaxSizeByPHPLimit=ملاحظة : لم يتم وضح حد في إعدادات الـ PHP الخاص بك
|
||||
MaxSizeForUploadedFiles=الحجم الأقصى لتحميل الملفات (0 لمنع أي تحميل)
|
||||
UseCaptchaCode=إستخدم الرسوم كرمز (كابتشا) في صفحة الدخول
|
||||
@ -207,7 +207,7 @@ ModulesMarketPlaces=Find external app/modules
|
||||
ModulesDevelopYourModule=Develop your own app/modules
|
||||
ModulesDevelopDesc=You may also develop your own module or find a partner to develop one for you.
|
||||
DOLISTOREdescriptionLong=Instead of switching on <a href="https://www.dolistore.com">www.dolistore.com</a> web site to find an external module, you can use this embedded tool that will perform the search on the external market place for you (may be slow, need an internet access)...
|
||||
NewModule=جديد
|
||||
NewModule=New module
|
||||
FreeModule=Free
|
||||
CompatibleUpTo=Compatible with version %s
|
||||
NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s).
|
||||
@ -219,7 +219,7 @@ Nouveauté=Novelty
|
||||
AchatTelechargement=Buy / Download
|
||||
GoModuleSetupArea=To deploy/install a new module, go to the Module setup area: <a href="%s">%s</a>.
|
||||
DoliStoreDesc=DoliStore ، في السوق الرسمي لتخطيط موارد المؤسسات وحدات Dolibarr / خارجي إدارة علاقات العملاء
|
||||
DoliPartnersDesc=List of companies providing custom-developed modules or features.<br>Note: since Dolibarr is an open source application, <i>anyone</i> experienced in PHP programming may develop a module.
|
||||
DoliPartnersDesc=List of companies providing custom-developed modules or features.<br>Note: since Dolibarr is an open source application, <i>anyone</i> experienced in PHP programming should be able to develop a module.
|
||||
WebSiteDesc=External websites for more add-on (non-core) modules...
|
||||
DevelopYourModuleDesc=Some solutions to develop your own module...
|
||||
URL=العنوان
|
||||
@ -446,12 +446,13 @@ LinkToTestClickToDial=Enter a phone number to call to show a link to test the Cl
|
||||
RefreshPhoneLink=Refresh link
|
||||
LinkToTest=Clickable link generated for user <strong>%s</strong> (click phone number to test)
|
||||
KeepEmptyToUseDefault=Keep empty to use default value
|
||||
KeepThisEmptyInMostCases=In most cases, you can keep this field empy.
|
||||
DefaultLink=Default link
|
||||
SetAsDefault=Set as default
|
||||
ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url)
|
||||
ExternalModule=External module
|
||||
InstalledInto=Installed into directory %s
|
||||
BarcodeInitForthird-parties=Mass barcode init for third-parties
|
||||
BarcodeInitForThirdparties=Mass barcode init for third-parties
|
||||
BarcodeInitForProductsOrServices=الحرف الأول الباركود الشامل أو إعادة للمنتجات أو الخدمات
|
||||
CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined.
|
||||
InitEmptyBarCode=قيمة الحرف الأول للسجلات فارغة الصورة٪ المقبلة
|
||||
@ -541,8 +542,8 @@ Module54Name=Contracts/Subscriptions
|
||||
Module54Desc=Management of contracts (services or recurring subscriptions)
|
||||
Module55Name=Barcodes
|
||||
Module55Desc=Barcodes إدارة
|
||||
Module56Name=الخدمات الهاتفية
|
||||
Module56Desc=تكامل الخدمات الهاتفية
|
||||
Module56Name=Payment by credit transfer
|
||||
Module56Desc=Management of payment by credit transfer orders. It includes generation of SEPA file for European countries.
|
||||
Module57Name=Bank Direct Debit payments
|
||||
Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries.
|
||||
Module58Name=انقر للاتصال
|
||||
@ -1145,6 +1146,7 @@ AvailableModules=Available app/modules
|
||||
ToActivateModule=لتفعيل وحدات ، على الإعداد منطقة الصفحة الرئيسية> الإعداد -> الوحدات).
|
||||
SessionTimeOut=للمرة الخمسين
|
||||
SessionExplanation=This number guarantees that the session will never expire before this delay, if the session cleaner is done by Internal PHP session cleaner (and nothing else). Internal PHP session cleaner does not guarantee that the session will expire after this delay. It will expire, after this delay, and when the session cleaner is run, so every <b>%s/%s</b> access, but only during access made by other sessions (if value is 0, it means clearing of session is done only by an external process).<br>Note: on some servers with an external session cleaning mechanism (cron under debian, ubuntu ...), the sessions can be destroyed after a period defined by an external setup, no matter what the value entered here is.
|
||||
SessionsPurgedByExternalSystem=Sessions on this server seems to be cleaned by an external mechanism (cron under debian, ubuntu ...), probably every <b>%s</b> seconds (= value of parameter <b>session.gc_maxlifetime</b>), so changing the value here has no effect. You must ask the server administrator to change session delay.
|
||||
TriggersAvailable=محفزات متاحة
|
||||
TriggersDesc=Triggers are files that will modify the behavior of Dolibarr workflow once copied into the directory <b>htdocs/core/triggers</b>. They realize new actions, activated on Dolibarr events (new company creation, invoice validation, ...).
|
||||
TriggerDisabledByName=يطلق في هذا الملف من قبل المعوقين لاحقة بين <b>NORUN</b> باسمهم.
|
||||
@ -1262,6 +1264,7 @@ FieldEdition=طبعة من ميدان%s
|
||||
FillThisOnlyIfRequired=مثال: +2 (ملء إلا إذا تعوض توقيت المشاكل من ذوي الخبرة)
|
||||
GetBarCode=الحصول على الباركود
|
||||
NumberingModules=Numbering models
|
||||
DocumentModules=Document models
|
||||
##### Module password generation
|
||||
PasswordGenerationStandard=عودة كلمة سر ولدت الداخلية وفقا لخوارزمية Dolibarr : 8 أحرف مشتركة تتضمن الأرقام والحروف في حرف صغير.
|
||||
PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually.
|
||||
@ -1844,6 +1847,7 @@ MailToThirdparty=أطراف ثالثة
|
||||
MailToMember=أعضاء
|
||||
MailToUser=المستخدمين
|
||||
MailToProject=Projects page
|
||||
MailToTicket=Tickets
|
||||
ByDefaultInList=تظهر بشكل افتراضي على عرض القائمة
|
||||
YouUseLastStableVersion=You use the latest stable version
|
||||
TitleExampleForMajorRelease=مثال على رسالة يمكنك استخدامها ليعلن هذا الإصدار الرئيسي (لا تتردد في استخدامها على مواقع الويب الخاص بك)
|
||||
@ -1996,6 +2000,7 @@ EmailTemplate=Template for email
|
||||
EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax
|
||||
PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF.
|
||||
FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book.
|
||||
FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled
|
||||
RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard
|
||||
JumpToBoxes=Jump to Setup -> Widgets
|
||||
MeasuringUnitTypeDesc=Use here a value like "size", "surface", "volume", "weight", "time"
|
||||
|
||||
@ -84,13 +84,14 @@ InterventionSentByEMail=Intervention %s sent by email
|
||||
ProposalDeleted=تم حذف العرض
|
||||
OrderDeleted=تم حذف الطلب
|
||||
InvoiceDeleted=تم حذف الفاتورة
|
||||
DraftInvoiceDeleted=Draft invoice deleted
|
||||
PRODUCT_CREATEInDolibarr=المنتج %s تم انشاؤه
|
||||
PRODUCT_MODIFYInDolibarr=المنتج %sتم تعديلة
|
||||
PRODUCT_DELETEInDolibarr=المنتج%s تم حذفة
|
||||
HOLIDAY_CREATEInDolibarr=Request for leave %s created
|
||||
HOLIDAY_MODIFYInDolibarr=Request for leave %s modified
|
||||
HOLIDAY_APPROVEInDolibarr=Request for leave %s approved
|
||||
HOLIDAY_VALIDATEDInDolibarr=Request for leave %s validated
|
||||
HOLIDAY_VALIDATEInDolibarr=Request for leave %s validated
|
||||
HOLIDAY_DELETEInDolibarr=Request for leave %s deleted
|
||||
EXPENSE_REPORT_CREATEInDolibarr=تقرير المصروفات %sتم إنشاؤة
|
||||
EXPENSE_REPORT_VALIDATEInDolibarr=تقرير المصروفات %s تم التحقق من صحتة
|
||||
@ -111,8 +112,10 @@ BOM_CLOSEInDolibarr=BOM disabled
|
||||
BOM_REOPENInDolibarr=BOM reopen
|
||||
BOM_DELETEInDolibarr=BOM deleted
|
||||
MRP_MO_VALIDATEInDolibarr=MO validated
|
||||
MRP_MO_UNVALIDATEInDolibarr=MO set to draft status
|
||||
MRP_MO_PRODUCEDInDolibarr=MO produced
|
||||
MRP_MO_DELETEInDolibarr=MO deleted
|
||||
MRP_MO_CANCELInDolibarr=MO canceled
|
||||
##### End agenda events #####
|
||||
AgendaModelModule=نماذج المستندات للحدث
|
||||
DateActionStart=تاريخ البدء
|
||||
@ -151,3 +154,6 @@ EveryMonth=كل شهر
|
||||
DayOfMonth=يوم من الشهر
|
||||
DayOfWeek=يوم من الأسبوع
|
||||
DateStartPlusOne=تاريخ بدء + 1 ساعة
|
||||
SetAllEventsToTodo=Set all events to todo
|
||||
SetAllEventsToInProgress=Set all events to in progress
|
||||
SetAllEventsToFinished=Set all events to finished
|
||||
|
||||
@ -35,8 +35,10 @@ SwiftValid=بيك / سويفت صالحة
|
||||
SwiftVNotalid=بيك / سويفت غير صالح
|
||||
IbanValid=بان صالحة
|
||||
IbanNotValid=بان غير صالح
|
||||
StandingOrders=أوامر الخصم المباشر
|
||||
StandingOrders=Direct debit orders
|
||||
StandingOrder=أمر الخصم المباشر
|
||||
PaymentByBankTransfers=Payments by credit transfer
|
||||
PaymentByBankTransfer=Payment by credit transfer
|
||||
AccountStatement=كشف الحساب
|
||||
AccountStatementShort=بيان
|
||||
AccountStatements=كشوفات الحساب
|
||||
|
||||
@ -241,8 +241,6 @@ EscompteOffered=عرض الخصم (الدفع قبل الأجل)
|
||||
EscompteOfferedShort=تخفيض السعر
|
||||
SendBillRef=تقديم فاتورة%s
|
||||
SendReminderBillRef=تقديم فاتورة%s (تذكير)
|
||||
StandingOrders=Direct debit orders
|
||||
StandingOrder=Direct debit order
|
||||
NoDraftBills=أي مشروع الفواتير
|
||||
NoOtherDraftBills=أي مشروع الفواتير
|
||||
NoDraftInvoices=لا يوجد مسودة فواتير
|
||||
@ -572,3 +570,6 @@ AutoFillDateToShort=Set end date
|
||||
MaxNumberOfGenerationReached=Max number of gen. reached
|
||||
BILL_DELETEInDolibarr=تم حذف الفاتورة
|
||||
BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted
|
||||
UnitPriceXQtyLessDiscount=Unit price x Qty - Discount
|
||||
CustomersInvoicesArea=Customer billing area
|
||||
SupplierInvoicesArea=Supplier billing area
|
||||
|
||||
@ -95,7 +95,7 @@ PrintMethod=Print method
|
||||
ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud.
|
||||
ByTerminal=By terminal
|
||||
TakeposNumpadUsePaymentIcon=Use payment icon on numpad
|
||||
CashDeskRefNumberingModules=Numbering module for cash desk
|
||||
CashDeskRefNumberingModules=Numbering module for POS sales
|
||||
CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number
|
||||
TakeposGroupSameProduct=Group same products lines
|
||||
StartAParallelSale=Start a new parallel sale
|
||||
@ -106,3 +106,7 @@ MainPrinterToUse=Main printer to use
|
||||
OrderPrinterToUse=Order printer to use
|
||||
MainTemplateToUse=Main template to use
|
||||
OrderTemplateToUse=Order template to use
|
||||
BarRestaurant=Bar Restaurant
|
||||
AutoOrder=Customer auto order
|
||||
RestaurantMenu=Menu
|
||||
CustomerMenu=Customer menu
|
||||
|
||||
@ -63,13 +63,7 @@ AccountsCategoriesShort=علامات / فئات الحسابات
|
||||
ProjectsCategoriesShort=علامات / فئات المشاريع
|
||||
UsersCategoriesShort=Users tags/categories
|
||||
StockCategoriesShort=Warehouse tags/categories
|
||||
ThisCategoryHasNoProduct=لا تحتوي هذه الفئة على أي منتج.
|
||||
ThisCategoryHasNoSupplier=This category does not contain any vendor.
|
||||
ThisCategoryHasNoCustomer=لا تحتوي هذه الفئة على أي عميل.
|
||||
ThisCategoryHasNoMember=لا تحتوي هذه الفئة على أي عضو.
|
||||
ThisCategoryHasNoContact=لا تحتوي هذه الفئة على أي جهة اتصال.
|
||||
ThisCategoryHasNoAccount=لا تحتوي هذه الفئة على أي حساب.
|
||||
ThisCategoryHasNoProject=لا تحتوي هذه الفئة على أي مشروع.
|
||||
ThisCategoryHasNoItems=This category does not contain any items.
|
||||
CategId=معرف العلامة / الفئة
|
||||
CatSupList=List of vendor tags/categories
|
||||
CatCusList=قائمة علامات / فئات العملاء / احتمال
|
||||
@ -92,4 +86,5 @@ ByDefaultInList=افتراضيا في القائمة
|
||||
ChooseCategory=Choose category
|
||||
StocksCategoriesArea=Warehouses Categories Area
|
||||
ActionCommCategoriesArea=Events Categories Area
|
||||
WebsitePagesCategoriesArea=Page-Container Categories Area
|
||||
UseOrOperatorForCategories=Use or operator for categories
|
||||
|
||||
@ -19,7 +19,6 @@ ProspectionArea=مجال التنقيب
|
||||
IdThirdParty=هوية الطرف الثالث
|
||||
IdCompany=رقم تعريف الشركة
|
||||
IdContact=رقم تعريف الاتصال
|
||||
Contacts=اتصالات
|
||||
ThirdPartyContacts=Third-party contacts
|
||||
ThirdPartyContact=Third-party contact/address
|
||||
Company=شركة
|
||||
@ -298,7 +297,8 @@ AddContact=إنشاء اتصال
|
||||
AddContactAddress=إنشاء الاتصال / عنوان
|
||||
EditContact=تحرير الاتصال / عنوان
|
||||
EditContactAddress=تحرير الاتصال / عنوان
|
||||
Contact=جهة اتصال
|
||||
Contact=Contact/Address
|
||||
Contacts=اتصالات
|
||||
ContactId=Contact id
|
||||
ContactsAddresses=اتصالات / عناوين
|
||||
FromContactName=Name:
|
||||
@ -325,7 +325,8 @@ CompanyDeleted=شركة "٪ ل" حذفها من قاعدة البيانات.
|
||||
ListOfContacts=قائمة الاتصالات
|
||||
ListOfContactsAddresses=قائمة الاتصالات
|
||||
ListOfThirdParties=List of Third Parties
|
||||
ShowContact=وتظهر الاتصال
|
||||
ShowCompany=Third Party
|
||||
ShowContact=Contact-Address
|
||||
ContactsAllShort=جميع (بدون فلتر)
|
||||
ContactType=نوع الاتصال
|
||||
ContactForOrders=أوامر اتصال
|
||||
@ -424,7 +425,7 @@ ListSuppliersShort=List of Vendors
|
||||
ListProspectsShort=List of Prospects
|
||||
ListCustomersShort=List of Customers
|
||||
ThirdPartiesArea=Third Parties/Contacts
|
||||
LastModifiedThirdParties=Last %s modified Third Parties
|
||||
LastModifiedThirdParties=Latest %s modified Third Parties
|
||||
UniqueThirdParties=Total of Third Parties
|
||||
InActivity=فتح
|
||||
ActivityCeased=مغلق
|
||||
|
||||
@ -263,3 +263,4 @@ WarningNumberOfRecipientIsRestrictedInMassAction=Warning, number of different re
|
||||
WarningDateOfLineMustBeInExpenseReportRange=Warning, the date of line is not in the range of the expense report
|
||||
WarningProjectClosed=Project is closed. You must re-open it first.
|
||||
WarningSomeBankTransactionByChequeWereRemovedAfter=Some bank transaction were removed after that the receipt including them were generated. So nb of cheques and total of receipt may differ from number and total in list.
|
||||
WarningFailedToAddFileIntoDatabaseIndex=Warnin, failed to add file entry into ECM database index table
|
||||
|
||||
@ -1,16 +1,17 @@
|
||||
# Dolibarr language file - en_US - hrm
|
||||
# Admin
|
||||
HRM_EMAIL_EXTERNAL_SERVICE=البريد الإلكتروني لإيقاف شؤون الموظفين الخدمة الخارجية
|
||||
HRM_EMAIL_EXTERNAL_SERVICE=البريد الإلكتروني لمنع خدمة إدارة الموارد البشرية الخارجية
|
||||
Establishments=مؤسسات
|
||||
Establishment=مؤسسة
|
||||
NewEstablishment=مؤسسة جديدة
|
||||
DeleteEstablishment=حذف المؤسسة
|
||||
ConfirmDeleteEstablishment=هل انت متأكد أنك تريد حذف هذة المؤسسة ؟
|
||||
ConfirmDeleteEstablishment=Are you sure you wish to delete this establishment?
|
||||
OpenEtablishment=فتح المؤسسة
|
||||
CloseEtablishment=إغلاق المؤسسة
|
||||
# Dictionary
|
||||
DictionaryDepartment=شؤون الموظفين - الأقسام
|
||||
DictionaryFunction=شؤون الموظفين - الوظائف
|
||||
DictionaryPublicHolidays=HRM - Public holidays
|
||||
DictionaryDepartment=إدارة الموارد البشرية - قائمة القسم
|
||||
DictionaryFunction=HRM - Job positions
|
||||
# Module
|
||||
Employees=الموظفين
|
||||
Employee=الموظف
|
||||
|
||||
@ -218,6 +218,6 @@ ErrorFoundDuringMigration=Error(s) were reported during the migration process so
|
||||
YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (directory renamed with .lock suffix).<br>
|
||||
YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file <strong>install.lock</strong> in the dolibarr documents directory).<br>
|
||||
ClickHereToGoToApp=Click here to go to your application
|
||||
ClickOnLinkOrRemoveManualy=Click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory.
|
||||
ClickOnLinkOrRemoveManualy=If an upgrade is in progress, please wait. If not, click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory.
|
||||
Loaded=Loaded
|
||||
FunctionTest=Function test
|
||||
|
||||
@ -28,7 +28,7 @@ NoTemplateDefined=No template available for this email type
|
||||
AvailableVariables=Available substitution variables
|
||||
NoTranslation=لا يوجد ترجمة
|
||||
Translation=الترجمة
|
||||
EmptySearchString=Enter a non empty search string
|
||||
EmptySearchString=Enter non empty search criterias
|
||||
NoRecordFound=لا يوجد سجلات
|
||||
NoRecordDeleted=No record deleted
|
||||
NotEnoughDataYet=Not enough data
|
||||
@ -187,6 +187,8 @@ ShowCardHere=مشاهدة بطاقة
|
||||
Search=البحث عن
|
||||
SearchOf=البحث عن
|
||||
SearchMenuShortCut=Ctrl + shift + f
|
||||
QuickAdd=Quick add
|
||||
QuickAddMenuShortCut=Ctrl + shift + l
|
||||
Valid=سارية المفعول
|
||||
Approve=الموافقة
|
||||
Disapprove=رفض
|
||||
@ -426,6 +428,7 @@ Modules=Modules/Applications
|
||||
Option=خيار
|
||||
List=قائمة
|
||||
FullList=القائمة الكاملة
|
||||
FullConversation=Full conversation
|
||||
Statistics=إحصائيات
|
||||
OtherStatistics=الإحصاءات الأخرى
|
||||
Status=الحالة
|
||||
@ -663,6 +666,7 @@ Owner=مالك
|
||||
FollowingConstantsWillBeSubstituted=الثوابت التالية ستكون بديلا المقابلة القيمة.
|
||||
Refresh=تجديد
|
||||
BackToList=العودة إلى قائمة
|
||||
BackToTree=Back to tree
|
||||
GoBack=العودة
|
||||
CanBeModifiedIfOk=يمكن تعديلها إذا كان صحيحا
|
||||
CanBeModifiedIfKo=يمكن تعديلها إذا لم يكن صحيحا
|
||||
@ -839,6 +843,7 @@ Sincerely=بإخلاص
|
||||
ConfirmDeleteObject=Are you sure you want to delete this object?
|
||||
DeleteLine=حذف الخط
|
||||
ConfirmDeleteLine=Are you sure you want to delete this line?
|
||||
ErrorPDFTkOutputFileNotFound=Error: the file was not generated. Please check that the 'pdftk' command is installed in a directory included in the $PATH environment variable (linux/unix only) or contact your system administrator.
|
||||
NoPDFAvailableForDocGenAmongChecked=No PDF were available for the document generation among checked record
|
||||
TooManyRecordForMassAction=Too many records selected for mass action. The action is restricted to a list of %s records.
|
||||
NoRecordSelected=No record selected
|
||||
@ -953,12 +958,13 @@ SearchIntoMembers=أعضاء
|
||||
SearchIntoUsers=المستخدمين
|
||||
SearchIntoProductsOrServices=المنتجات أو الخدمات
|
||||
SearchIntoProjects=مشاريع
|
||||
SearchIntoMO=Manufacturing Orders
|
||||
SearchIntoTasks=المهام
|
||||
SearchIntoCustomerInvoices=فواتير العملاء
|
||||
SearchIntoSupplierInvoices=Vendor invoices
|
||||
SearchIntoCustomerOrders=Sales orders
|
||||
SearchIntoSupplierOrders=Purchase orders
|
||||
SearchIntoCustomerProposals=مقترحات العملاء
|
||||
SearchIntoCustomerProposals=مقترحات تجارية
|
||||
SearchIntoSupplierProposals=Vendor proposals
|
||||
SearchIntoInterventions=التدخلات
|
||||
SearchIntoContracts=عقود
|
||||
@ -1028,3 +1034,8 @@ YAxis=Y-Axis
|
||||
StatusOfRefMustBe=Status of %s must be %s
|
||||
DeleteFileHeader=Confirm file delete
|
||||
DeleteFileText=Do you really want delete this file?
|
||||
ShowOtherLanguages=Show other languages
|
||||
SwitchInEditModeToAddTranslation=Switch in edit mode to add translations for this language
|
||||
NotUsedForThisCustomer=Not used for this customer
|
||||
AmountMustBePositive=Amount must be positive
|
||||
ByStatus=By status
|
||||
|
||||
@ -27,7 +27,7 @@ DangerZone=Danger zone
|
||||
BuildPackage=Build package
|
||||
BuildPackageDesc=You can generate a zip package of your application so your are ready to distribute it on any Dolibarr. You can also distribute it or sell it on marketplace like <a href="https://www.dolistore.com">DoliStore.com</a>.
|
||||
BuildDocumentation=Build documentation
|
||||
ModuleIsNotActive=This module is not activated yet. Go to %s to make it live or click here:
|
||||
ModuleIsNotActive=This module is not activated yet. Go to %s to make it live or click here
|
||||
ModuleIsLive=This module has been activated. Any change may break a current live feature.
|
||||
DescriptionLong=Long description
|
||||
EditorName=Name of editor
|
||||
@ -139,3 +139,4 @@ ForeignKey=Foreign key
|
||||
TypeOfFieldsHelp=Type of fields:<br>varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]] ('1' means we add a + button after the combo to create the record, 'filter' can be 'status=1 AND fk_user = __USER_ID AND entity IN (__SHARED_ENTITIES__)' for example)
|
||||
AsciiToHtmlConverter=Ascii to HTML converter
|
||||
AsciiToPdfConverter=Ascii to PDF converter
|
||||
TableNotEmptyDropCanceled=Table not empty. Drop has been canceled.
|
||||
|
||||
@ -56,11 +56,12 @@ ToConsume=To consume
|
||||
ToProduce=To produce
|
||||
QtyAlreadyConsumed=Qty already consumed
|
||||
QtyAlreadyProduced=Qty already produced
|
||||
QtyRequiredIfNoLoss=Qty required if there is no loss (Manufacturing efficiency is 100%%)
|
||||
ConsumeOrProduce=Consume or Produce
|
||||
ConsumeAndProduceAll=Consume and Produce All
|
||||
Manufactured=Manufactured
|
||||
TheProductXIsAlreadyTheProductToProduce=The product to add is already the product to produce.
|
||||
ForAQuantityOf1=For a quantity to produce of 1
|
||||
ForAQuantityOf=For a quantity to produce of %s
|
||||
ConfirmValidateMo=Are you sure you want to validate this Manufacturing Order?
|
||||
ConfirmProductionDesc=By clicking on '%s', you will validate the consumption and/or production for the quantities set. This will also update the stock and record stock movements.
|
||||
ProductionForRef=Production of %s
|
||||
@ -71,3 +72,6 @@ ProductQtyToProduceByMO=Product quentity still to produce by open MO
|
||||
AddNewConsumeLines=Add new line to consume
|
||||
ProductsToConsume=Products to consume
|
||||
ProductsToProduce=Products to produce
|
||||
UnitCost=Unit cost
|
||||
TotalCost=Total cost
|
||||
BOMTotalCost=The cost to produce this BOM based on cost of each quantity and product to consume (use Cost price if defined, else Average Weighted Price if defined, else the Best purchase price)
|
||||
|
||||
@ -85,8 +85,8 @@ MaxSize=الحجم الأقصى
|
||||
AttachANewFile=إرفاق ملف جديد / وثيقة
|
||||
LinkedObject=ربط وجوه
|
||||
NbOfActiveNotifications=Number of notifications (no. of recipient emails)
|
||||
PredefinedMailTest=__(Hello)__\nThis is a test mail sent to __EMAIL__.\nThe two lines are separated by a carriage return.\n\n__USER_SIGNATURE__
|
||||
PredefinedMailTestHtml=__(Hello)__\nThis is a <b>test</b> mail (the word test must be in bold).<br>The two lines are separated by a carriage return.<br><br>__USER_SIGNATURE__
|
||||
PredefinedMailTest=__(Hello)__\nThis is a test mail sent to __EMAIL__.\nThe lines are separated by a carriage return.\n\n__USER_SIGNATURE__
|
||||
PredefinedMailTestHtml=__(Hello)__<br>This is a <b>test</b> mail sent to __EMAIL__ (the word test must be in bold).<br>The lines are separated by a carriage return.<br><br>__USER_SIGNATURE__
|
||||
PredefinedMailContentContract=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
|
||||
PredefinedMailContentSendInvoice=__(Hello)__\n\nPlease find invoice __REF__ attached \n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
|
||||
PredefinedMailContentSendInvoiceReminder=__(Hello)__\n\nWe would like to remind you that the invoice __REF__ seems to have not been paid. A copy of the invoice is attached as a reminder.\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
|
||||
|
||||
@ -43,7 +43,7 @@ ServicesOnSaleOnly=Services for sale only
|
||||
ServicesOnPurchaseOnly=Services for purchase only
|
||||
ServicesNotOnSell=خدمات ليست للبيع ولا الشراء
|
||||
ServicesOnSellAndOnBuy=خدمات للبيع والشراء
|
||||
LastModifiedProductsAndServices=أخر %s تعديلات على المنتجات / الخدمات
|
||||
LastModifiedProductsAndServices=Latest %s modified products/services
|
||||
LastRecordedProducts=Latest %s recorded products
|
||||
LastRecordedServices=Latest %s recorded services
|
||||
CardProduct0=المنتج
|
||||
@ -106,6 +106,7 @@ NoteNotVisibleOnBill=ملحوظة(غيرمرئية على الفواتير وا
|
||||
ServiceLimitedDuration=إذا كان المنتج هو خدمة لفترة محدودة :
|
||||
MultiPricesAbility=Multiple price segments per product/service (each customer is in one price segment)
|
||||
MultiPricesNumPrices=عدد من السعر
|
||||
DefaultPriceType=Base of prices per default (with versus without tax) when adding new sale prices
|
||||
AssociatedProductsAbility=Activate virtual products (kits)
|
||||
AssociatedProducts=Virtual products
|
||||
AssociatedProductsNumber=عدد المنتجات التي تنتج هذا المنتج الإفتراضي
|
||||
|
||||
@ -115,7 +115,7 @@ ChildOfTask=Child of task
|
||||
TaskHasChild=Task has child
|
||||
NotOwnerOfProject=لا صاحب هذا المشروع من القطاع الخاص
|
||||
AffectedTo=إلى المتضررين
|
||||
CantRemoveProject=هذا المشروع لا يمكن إزالتها كما هي المرجعية بعض أشياء أخرى (الفاتورة ، أو غيرها من الأوامر). انظر referers تبويبة.
|
||||
CantRemoveProject=This project can't be removed as it is referenced by some other objects (invoice, orders or other). See tab '%s'.
|
||||
ValidateProject=تحقق من مشروع غابة
|
||||
ConfirmValidateProject=Are you sure you want to validate this project?
|
||||
CloseAProject=وثيقة المشروع
|
||||
@ -265,3 +265,4 @@ NewInvoice=فاتورة جديدة
|
||||
OneLinePerTask=One line per task
|
||||
OneLinePerPeriod=One line per period
|
||||
RefTaskParent=Ref. Parent Task
|
||||
ProfitIsCalculatedWith=Profit is calculated using
|
||||
|
||||
@ -43,3 +43,5 @@ ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplie
|
||||
ValidateOrderFirstBeforeReception=You must first validate the order before being able to make receptions.
|
||||
ReceptionsNumberingModules=Numbering module for receptions
|
||||
ReceptionsReceiptModel=Document templates for receptions
|
||||
NoMorePredefinedProductToDispatch=No more predefined products to dispatch
|
||||
|
||||
|
||||
@ -56,6 +56,13 @@ PMPValueShort=الواب
|
||||
EnhancedValueOfWarehouses=قيمة المستودعات
|
||||
UserWarehouseAutoCreate=Create a user warehouse automatically when creating a user
|
||||
AllowAddLimitStockByWarehouse=Manage also value for minimum and desired stock per pairing (product-warehouse) in addition to the value for minimum and desired stock per product
|
||||
RuleForWarehouse=Rule for warehouses
|
||||
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
||||
UserDefaultWarehouse=Set a warehouse on Users
|
||||
DefaultWarehouseActive=Default warehouse active
|
||||
MainDefaultWarehouse=Default warehouse
|
||||
MainDefaultWarehouseUser=Use user warehouse asign default
|
||||
MainDefaultWarehouseUserDesc=/!\\ By activating this option the gold of the creation of an article, the warehouse assigned to the user will be defined on this one. If no warehouse is defined on the user, the default warehouse is defined.
|
||||
IndependantSubProductStock=Product stock and subproduct stock are independent
|
||||
QtyDispatched=ارسال كمية
|
||||
QtyDispatchedShort=أرسل الكمية
|
||||
@ -123,6 +130,7 @@ WarehouseForStockDecrease=سيتم استخدام <b>مستودع٪ الصورة
|
||||
WarehouseForStockIncrease=سيتم استخدام <b>مستودع٪ s للزيادة</b> المخزون
|
||||
ForThisWarehouse=لهذا المستودع
|
||||
ReplenishmentStatusDesc=This is a list of all products with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked). Using the checkbox, you can create purchase orders to fill the difference.
|
||||
ReplenishmentStatusDescPerWarehouse=If you want a replenishment based on desired quantity defined per warehouse, you must add a filter on the warehouse.
|
||||
ReplenishmentOrdersDesc=This is a list of all open purchase orders including predefined products. Only open orders with predefined products, so orders that may affect stocks, are visible here.
|
||||
Replenishments=التجديد
|
||||
NbOfProductBeforePeriod=كمية من الناتج٪ الصورة في الأوراق المالية قبل الفترة المختارة (<٪ ق)
|
||||
@ -218,3 +226,4 @@ InventoryForASpecificWarehouse=Inventory for a specific warehouse
|
||||
InventoryForASpecificProduct=Inventory for a specific product
|
||||
StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use
|
||||
ForceTo=Force to
|
||||
AlwaysShowFullArbo=Display full tree of warehouse on popup of warehouse links (Warning: This may decrease dramatically performances)
|
||||
|
||||
@ -130,10 +130,14 @@ TicketNumberingModules=Tickets numbering module
|
||||
TicketNotifyTiersAtCreation=Notify third party at creation
|
||||
TicketGroup=مجموعة
|
||||
TicketsDisableCustomerEmail=Always disable emails when a ticket is created from public interface
|
||||
TicketsPublicNotificationNewMessage=Send email(s) when a new message is added
|
||||
TicketsPublicNotificationNewMessageHelp=Send email(s) when a new message is added from public interface (to assigned user or the notifications email to (update) and/or the notifications email to)
|
||||
TicketPublicNotificationNewMessageDefaultEmail=Notifications email to (update)
|
||||
TicketPublicNotificationNewMessageDefaultEmailHelp=Send email new message notifications to this address if the ticket don't have a user assigned or the user don't have a email.
|
||||
#
|
||||
# Index & list page
|
||||
#
|
||||
TicketsIndex=Ticket - home
|
||||
TicketsIndex=Tickets area
|
||||
TicketList=List of tickets
|
||||
TicketAssignedToMeInfos=This page display ticket list created by or assigned to current user
|
||||
NoTicketsFound=No ticket found
|
||||
|
||||
@ -16,6 +16,7 @@ WEBSITE_ROBOT=Robot file (robots.txt)
|
||||
WEBSITE_HTACCESS=Website .htaccess file
|
||||
WEBSITE_MANIFEST_JSON=Website manifest.json file
|
||||
WEBSITE_README=README.md file
|
||||
WEBSITE_KEYWORDSDesc=Use a comma to separate values
|
||||
EnterHereLicenseInformation=Enter here meta data or license information to fille a README.md file. if you distribute your website as a template, the file will be included into the temptate package.
|
||||
HtmlHeaderPage=HTML header (specific to this page only)
|
||||
PageNameAliasHelp=Name or alias of the page.<br>This alias is also used to forge a SEO URL when website is ran from a Virtual host of a Web server (like Apacke, Nginx, ...). Use the button "<strong>%s</strong>" to edit this alias.
|
||||
@ -120,7 +121,7 @@ ShowSubContainersOnOff=Mode to execute 'dynamic content' is %s
|
||||
GlobalCSSorJS=Global CSS/JS/Header file of web site
|
||||
BackToHomePage=Back to home page...
|
||||
TranslationLinks=Translation links
|
||||
YouTryToAccessToAFileThatIsNotAWebsitePage=You try to access to a page that is not a website page
|
||||
YouTryToAccessToAFileThatIsNotAWebsitePage=You try to access to a page that is not available.<br>(ref=%s, type=%s, status=%s)
|
||||
UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 characters
|
||||
MainLanguage=Main language
|
||||
OtherLanguages=Other languages
|
||||
@ -128,3 +129,6 @@ UseManifest=Provide a manifest.json file
|
||||
PublicAuthorAlias=Public author alias
|
||||
AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties
|
||||
ReplacementDoneInXPages=Replacement done in %s pages or containers
|
||||
RSSFeed=تغذية RSS
|
||||
RSSFeedDesc=You can get a RSS feed of latest articles with type 'blogpost' using this URL
|
||||
PagesRegenerated=%s page(s)/container(s) regenerated
|
||||
|
||||
@ -1,27 +1,43 @@
|
||||
# Dolibarr language file - Source file is en_US - withdrawals
|
||||
CustomersStandingOrdersArea=Direct debit payment orders area
|
||||
SuppliersStandingOrdersArea=Direct credit payment orders area
|
||||
CustomersStandingOrdersArea=Payments by Direct debit orders
|
||||
SuppliersStandingOrdersArea=Payments by Credit transfer
|
||||
StandingOrdersPayment=Direct debit payment orders
|
||||
StandingOrderPayment=Direct debit payment order
|
||||
NewStandingOrder=New direct debit order
|
||||
NewPaymentByBankTransfer=New payment by credit transfer
|
||||
StandingOrderToProcess=لعملية
|
||||
PaymentByBankTransferReceipts=Credit transfer orders
|
||||
PaymentByBankTransferLines=Credit transfer order lines
|
||||
WithdrawalsReceipts=Direct debit orders
|
||||
WithdrawalReceipt=Direct debit order
|
||||
BankTransferReceipts=Credit transfer receipts
|
||||
BankTransferReceipt=Credit transfer receipt
|
||||
LatestBankTransferReceipts=Latest %s credit transfer orders
|
||||
LastWithdrawalReceipts=Latest %s direct debit files
|
||||
WithdrawalsLine=Direct debit order line
|
||||
CreditTransferLine=Credit transfer line
|
||||
WithdrawalsLines=Direct debit order lines
|
||||
RequestStandingOrderToTreat=Request for direct debit payment order to process
|
||||
RequestStandingOrderTreated=Request for direct debit payment order processed
|
||||
CreditTransferLines=Credit transfer lines
|
||||
RequestStandingOrderToTreat=Requests for direct debit payment order to process
|
||||
RequestStandingOrderTreated=Requests for direct debit payment order processed
|
||||
RequestPaymentsByBankTransferToTreat=Requests for credit transfer to process
|
||||
RequestPaymentsByBankTransferTreated=Requests for credit transfer processed
|
||||
NotPossibleForThisStatusOfWithdrawReceiptORLine=لم يكن ممكنا حتى الآن. سحب يجب أن يتم تعيين الحالة إلى "الفضل" قبل أن يعلن رفض على خطوط محددة.
|
||||
NbOfInvoiceToWithdraw=No. of qualified invoice with waiting direct debit order
|
||||
NbOfInvoiceToWithdraw=No. of qualified customer invoices with waiting direct debit order
|
||||
NbOfInvoiceToWithdrawWithInfo=No. of customer invoice with direct debit payment orders having defined bank account information
|
||||
NbOfInvoiceToPayByBankTransfer=No. of qualified supplier invoices waiting for a payment by credit transfer
|
||||
SupplierInvoiceWaitingWithdraw=Vendor invoice waiting for payment by credit transfer
|
||||
InvoiceWaitingWithdraw=Invoice waiting for direct debit
|
||||
InvoiceWaitingPaymentByBankTransfer=Invoice waiting for credit transfer
|
||||
AmountToWithdraw=سحب المبلغ
|
||||
WithdrawsRefused=Direct debit refused
|
||||
NoInvoiceToWithdraw=No customer invoice with open 'Direct debit requests' is waiting. Go on tab '%s' on invoice card to make a request.
|
||||
NoInvoiceToWithdraw=No invoice open for '%s' is waiting. Go on tab '%s' on invoice card to make a request.
|
||||
NoSupplierInvoiceToWithdraw=No supplier invoice with open 'Direct credit requests' is waiting. Go on tab '%s' on invoice card to make a request.
|
||||
ResponsibleUser=User Responsible
|
||||
WithdrawalsSetup=Direct debit payment setup
|
||||
CreditTransferSetup=Crebit transfer setup
|
||||
WithdrawStatistics=Direct debit payment statistics
|
||||
WithdrawRejectStatistics=Direct debit payment reject statistics
|
||||
CreditTransferStatistics=Credit transfer statistics
|
||||
Rejects=ترفض
|
||||
LastWithdrawalReceipt=Latest %s direct debit receipts
|
||||
MakeWithdrawRequest=Make a direct debit payment request
|
||||
WithdrawRequestsDone=%s direct debit payment requests recorded
|
||||
@ -34,7 +50,9 @@ TransMetod=طريقة البث
|
||||
Send=إرسال
|
||||
Lines=خطوط
|
||||
StandingOrderReject=رفض إصدار
|
||||
WithdrawsRefused=Direct debit refused
|
||||
WithdrawalRefused=سحب Refuseds
|
||||
CreditTransfersRefused=Credit transfers refused
|
||||
WithdrawalRefusedConfirm=هل أنت متأكد أنك تريد الدخول في رفض الانسحاب للمجتمع
|
||||
RefusedData=تاريخ الرفض
|
||||
RefusedReason=أسباب الرفض
|
||||
@ -58,6 +76,8 @@ StatusMotif8=سبب آخر
|
||||
CreateForSepaFRST=Create direct debit file (SEPA FRST)
|
||||
CreateForSepaRCUR=Create direct debit file (SEPA RCUR)
|
||||
CreateAll=Create direct debit file (all)
|
||||
CreateFileForPaymentByBankTransfer=Create credit transfer (all)
|
||||
CreateSepaFileForPaymentByBankTransfer=Create credit transfer file (SEPA)
|
||||
CreateGuichet=مكتب فقط
|
||||
CreateBanque=البنك الوحيد
|
||||
OrderWaiting=الانتظار لتلقي العلاج
|
||||
@ -67,6 +87,7 @@ NumeroNationalEmetter=رقم المرسل وطنية
|
||||
WithBankUsingRIB=عن الحسابات المصرفية باستخدام RIB
|
||||
WithBankUsingBANBIC=عن الحسابات المصرفية باستخدام IBAN / BIC / SWIFT
|
||||
BankToReceiveWithdraw=Receiving Bank Account
|
||||
BankToPayCreditTransfer=Bank Account used as source of payments
|
||||
CreditDate=الائتمان على
|
||||
WithdrawalFileNotCapable=غير قادر على توليد ملف استلام الانسحاب لبلدكم٪ الصورة (لا يتم اعتماد البلد)
|
||||
ShowWithdraw=Show Direct Debit Order
|
||||
@ -74,9 +95,9 @@ IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one
|
||||
DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Direct Debit orders to manage the direct debit payment order. When payment order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null.
|
||||
WithdrawalFile=ملف الانسحاب
|
||||
SetToStatusSent=تعيين إلى حالة "المرسلة ملف"
|
||||
ThisWillAlsoAddPaymentOnInvoice=This will also record payments to invoices and will classify them as "Paid" if remain to pay is null
|
||||
ThisWillAlsoAddPaymentOnInvoice=This will also record payments on invoices and will classify them as "Paid" if remain to pay is null
|
||||
StatisticsByLineStatus=إحصاءات عن طريق وضع خطوط
|
||||
RUM=Unique Mandate Reference (UMR)
|
||||
RUM=UMR
|
||||
DateRUM=Mandate signature date
|
||||
RUMLong=Unique Mandate Reference
|
||||
RUMWillBeGenerated=If empty, a UMR (Unique Mandate Reference) will be generated once the bank account information is saved.
|
||||
|
||||
@ -58,8 +58,8 @@ AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in f
|
||||
AccountancyAreaDescActionFreq=The following actions are usually executed every month, week or day for very large companies...
|
||||
|
||||
AccountancyAreaDescJournalSetup=STEP %s: Create or check content of your journal list from menu %s
|
||||
AccountancyAreaDescChartModel=STEP %s: Create a model of chart of account from menu %s
|
||||
AccountancyAreaDescChart=STEP %s: Create or check content of your chart of account from menu %s
|
||||
AccountancyAreaDescChartModel=STEP %s: Check that a model of chart of account exists or create one from menu %s
|
||||
AccountancyAreaDescChart=STEP %s: Select and|or complete your chart of account from menu %s
|
||||
|
||||
AccountancyAreaDescVat=STEP %s: Define accounting accounts for each VAT Rates. For this, use the menu entry %s.
|
||||
AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s.
|
||||
|
||||
@ -95,7 +95,7 @@ NextValueForInvoices=Next value (invoices)
|
||||
NextValueForCreditNotes=Next value (credit notes)
|
||||
NextValueForDeposit=Next value (down payment)
|
||||
NextValueForReplacements=Next value (replacements)
|
||||
MustBeLowerThanPHPLimit=Note: <b>your</b> PHP configuration currently limits the maximum filesize for upload to <b>%s</b> %s, irrespective of the value of this parameter
|
||||
MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to <b>%s</b> %s, irrespective of the value of this parameter
|
||||
NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration
|
||||
MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload)
|
||||
UseCaptchaCode=Use graphical code (CAPTCHA) on login page
|
||||
@ -207,7 +207,7 @@ ModulesMarketPlaces=Find external app/modules
|
||||
ModulesDevelopYourModule=Develop your own app/modules
|
||||
ModulesDevelopDesc=You may also develop your own module or find a partner to develop one for you.
|
||||
DOLISTOREdescriptionLong=Instead of switching on <a href="https://www.dolistore.com">www.dolistore.com</a> web site to find an external module, you can use this embedded tool that will perform the search on the external market place for you (may be slow, need an internet access)...
|
||||
NewModule=New
|
||||
NewModule=New module
|
||||
FreeModule=Free
|
||||
CompatibleUpTo=Compatible with version %s
|
||||
NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s).
|
||||
@ -219,7 +219,7 @@ Nouveauté=Novelty
|
||||
AchatTelechargement=Buy / Download
|
||||
GoModuleSetupArea=To deploy/install a new module, go to the Module setup area: <a href="%s">%s</a>.
|
||||
DoliStoreDesc=DoliStore, the official market place for Dolibarr ERP/CRM external modules
|
||||
DoliPartnersDesc=List of companies providing custom-developed modules or features.<br>Note: since Dolibarr is an open source application, <i>anyone</i> experienced in PHP programming may develop a module.
|
||||
DoliPartnersDesc=List of companies providing custom-developed modules or features.<br>Note: since Dolibarr is an open source application, <i>anyone</i> experienced in PHP programming should be able to develop a module.
|
||||
WebSiteDesc=External websites for more add-on (non-core) modules...
|
||||
DevelopYourModuleDesc=Some solutions to develop your own module...
|
||||
URL=URL
|
||||
@ -446,12 +446,13 @@ LinkToTestClickToDial=Enter a phone number to call to show a link to test the Cl
|
||||
RefreshPhoneLink=Refresh link
|
||||
LinkToTest=Clickable link generated for user <strong>%s</strong> (click phone number to test)
|
||||
KeepEmptyToUseDefault=Keep empty to use default value
|
||||
KeepThisEmptyInMostCases=In most cases, you can keep this field empy.
|
||||
DefaultLink=Default link
|
||||
SetAsDefault=Set as default
|
||||
ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url)
|
||||
ExternalModule=External module
|
||||
InstalledInto=Installed into directory %s
|
||||
BarcodeInitForthird-parties=Mass barcode init for third-parties
|
||||
BarcodeInitForThirdparties=Mass barcode init for third-parties
|
||||
BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services
|
||||
CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> record on <strong>%s</strong> %s without barcode defined.
|
||||
InitEmptyBarCode=Init value for next %s empty records
|
||||
@ -541,8 +542,8 @@ Module54Name=Contracts/Subscriptions
|
||||
Module54Desc=Management of contracts (services or recurring subscriptions)
|
||||
Module55Name=Barcodes
|
||||
Module55Desc=Barcode management
|
||||
Module56Name=Telephony
|
||||
Module56Desc=Telephony integration
|
||||
Module56Name=Payment by credit transfer
|
||||
Module56Desc=Management of payment by credit transfer orders. It includes generation of SEPA file for European countries.
|
||||
Module57Name=Bank Direct Debit payments
|
||||
Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries.
|
||||
Module58Name=ClickToDial
|
||||
@ -1145,6 +1146,7 @@ AvailableModules=Available app/modules
|
||||
ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules).
|
||||
SessionTimeOut=Time out for session
|
||||
SessionExplanation=This number guarantees that the session will never expire before this delay, if the session cleaner is done by Internal PHP session cleaner (and nothing else). Internal PHP session cleaner does not guarantee that the session will expire after this delay. It will expire, after this delay, and when the session cleaner is run, so every <b>%s/%s</b> access, but only during access made by other sessions (if value is 0, it means clearing of session is done only by an external process).<br>Note: on some servers with an external session cleaning mechanism (cron under debian, ubuntu ...), the sessions can be destroyed after a period defined by an external setup, no matter what the value entered here is.
|
||||
SessionsPurgedByExternalSystem=Sessions on this server seems to be cleaned by an external mechanism (cron under debian, ubuntu ...), probably every <b>%s</b> seconds (= value of parameter <b>session.gc_maxlifetime</b>), so changing the value here has no effect. You must ask the server administrator to change session delay.
|
||||
TriggersAvailable=Available triggers
|
||||
TriggersDesc=Triggers are files that will modify the behavior of Dolibarr workflow once copied into the directory <b>htdocs/core/triggers</b>. They realize new actions, activated on Dolibarr events (new company creation, invoice validation, ...).
|
||||
TriggerDisabledByName=Triggers in this file are disabled by the <b>-NORUN</b> suffix in their name.
|
||||
@ -1262,6 +1264,7 @@ FieldEdition=Edition of field %s
|
||||
FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced)
|
||||
GetBarCode=Get barcode
|
||||
NumberingModules=Numbering models
|
||||
DocumentModules=Document models
|
||||
##### Module password generation
|
||||
PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: 8 characters containing shared numbers and characters in lowercase.
|
||||
PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually.
|
||||
@ -1844,6 +1847,7 @@ MailToThirdparty=Third parties
|
||||
MailToMember=Members
|
||||
MailToUser=Users
|
||||
MailToProject=Projects page
|
||||
MailToTicket=Tickets
|
||||
ByDefaultInList=Show by default on list view
|
||||
YouUseLastStableVersion=You use the latest stable version
|
||||
TitleExampleForMajorRelease=Example of message you can use to announce this major release (feel free to use it on your web sites)
|
||||
@ -1996,6 +2000,7 @@ EmailTemplate=Template for email
|
||||
EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax
|
||||
PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF.
|
||||
FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book.
|
||||
FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled
|
||||
RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard
|
||||
JumpToBoxes=Jump to Setup -> Widgets
|
||||
MeasuringUnitTypeDesc=Use here a value like "size", "surface", "volume", "weight", "time"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user