Merge branch 'develop' of github.com:Dolibarr/dolibarr into dev_quality_management_on_lot
This commit is contained in:
commit
bb195694bb
530 changed files with 5685 additions and 3763 deletions
1
.github/workflows/exakat.yml
vendored
1
.github/workflows/exakat.yml
vendored
|
|
@ -2,6 +2,7 @@
|
|||
name: "Exakat analysis"
|
||||
|
||||
on:
|
||||
# execute once a month, the 1st
|
||||
schedule:
|
||||
- cron: "0 20 1 * *"
|
||||
workflow_dispatch:
|
||||
|
|
|
|||
30
.github/workflows/phpcs.yml
vendored
Normal file
30
.github/workflows/phpcs.yml
vendored
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
name: "PHPCS"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- "**.php"
|
||||
- "phpcs.xml"
|
||||
- ".github/workflows/phpcs.yml"
|
||||
|
||||
jobs:
|
||||
phpcs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 50 # important!
|
||||
|
||||
# we may use whatever way to install phpcs, just specify the path on the next step
|
||||
# however, curl seems to be the fastest
|
||||
- name: Install PHP_CodeSniffer
|
||||
run: |
|
||||
curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar
|
||||
php phpcs.phar --version
|
||||
|
||||
- uses: thenabeel/action-phpcs@v8
|
||||
with:
|
||||
files: "**.php" # you may customize glob as needed
|
||||
phpcs_path: php phpcs.phar
|
||||
standard: dev/setup/codesniffer/ruleset.xml
|
||||
fail_on_warnings: false
|
||||
2
.github/workflows/phpcsfixer.yml
vendored
2
.github/workflows/phpcsfixer.yml
vendored
|
|
@ -13,7 +13,7 @@ jobs:
|
|||
# uses: ./.github/workflows/files_changed.yaml
|
||||
# with:
|
||||
# folder_path: .*
|
||||
|
||||
|
||||
linter_name:
|
||||
name: Run & fix PHP Code Sniffer
|
||||
runs-on: ubuntu-latest
|
||||
|
|
|
|||
|
|
@ -4655,75 +4655,6 @@ INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,
|
|||
/*!40000 ALTER TABLE `llx_menu` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `llx_milestone`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `llx_milestone`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `llx_milestone` (
|
||||
`rowid` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`fk_element` int(11) NOT NULL,
|
||||
`elementtype` varchar(16) NOT NULL,
|
||||
`label` varchar(255) NOT NULL,
|
||||
`options` varchar(255) DEFAULT NULL,
|
||||
`priority` int(11) DEFAULT '0',
|
||||
`tms` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`fk_user_modif` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`rowid`),
|
||||
UNIQUE KEY `uk_milestone_fk_element` (`fk_element`,`elementtype`),
|
||||
KEY `idx_milestone_fk_user_modif` (`fk_user_modif`),
|
||||
CONSTRAINT `fk_milestone_fk_user_modif` FOREIGN KEY (`fk_user_modif`) REFERENCES `llx_user` (`rowid`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `llx_milestone`
|
||||
--
|
||||
|
||||
LOCK TABLES `llx_milestone` WRITE;
|
||||
/*!40000 ALTER TABLE `llx_milestone` DISABLE KEYS */;
|
||||
INSERT INTO `llx_milestone` VALUES (2,779,'facture','azerty',NULL,0,'2013-03-09 12:19:30',NULL),(3,780,'facture','fsdf',NULL,0,'2013-03-09 13:01:08',NULL),(4,781,'facture','hhh',NULL,0,'2013-03-09 14:06:37',NULL);
|
||||
/*!40000 ALTER TABLE `llx_milestone` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `llx_monitoring_probes`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `llx_monitoring_probes`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `llx_monitoring_probes` (
|
||||
`rowid` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(64) NOT NULL,
|
||||
`groupname` varchar(64) DEFAULT NULL,
|
||||
`url` varchar(250) NOT NULL,
|
||||
`useproxy` int(11) DEFAULT '0',
|
||||
`checkkey` varchar(250) DEFAULT NULL,
|
||||
`maxval` int(11) DEFAULT NULL,
|
||||
`frequency` int(11) DEFAULT '60',
|
||||
`active` int(11) DEFAULT '1',
|
||||
`status` int(11) DEFAULT '0',
|
||||
`lastreset` datetime DEFAULT NULL,
|
||||
`oldesterrortext` text,
|
||||
`oldesterrordate` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`rowid`),
|
||||
UNIQUE KEY `uk_monitoring_probes` (`title`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `llx_monitoring_probes`
|
||||
--
|
||||
|
||||
LOCK TABLES `llx_monitoring_probes` WRITE;
|
||||
/*!40000 ALTER TABLE `llx_monitoring_probes` DISABLE KEYS */;
|
||||
INSERT INTO `llx_monitoring_probes` VALUES (1,'aaa',NULL,'http://www.chiensderace.com',0,'chiens',1000,10,1,1,'2011-04-20 23:46:41',NULL,NULL),(2,'ChatsDeRace',NULL,'http://www.chatsderace.com',0,'chats',1000,5,1,1,'2011-04-20 23:46:41',NULL,NULL);
|
||||
/*!40000 ALTER TABLE `llx_monitoring_probes` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `llx_notify`
|
||||
--
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ print '***** '.constant('PRODUCT').' - '.constant('VERSION').' *****'."\n";
|
|||
if (empty($argv[1])) {
|
||||
print 'You must run this tool being into the root of the project.'."\n";
|
||||
print 'Usage: '.constant('PRODUCT').'.php pathto/index.html [--dir-scc=pathtoscc] [--dir-phpstan=pathtophpstan]'."\n";
|
||||
print 'Example: '.constant('PRODUCT').'.php dev/tools/apstats.php documents/apstats/index.html --dir-phpstan=~/git/phpstan/htdocs/includes/bin';
|
||||
print 'Example: '.constant('PRODUCT').'.php dev/tools/apstats.php documents/apstats/index.html --dir-scc=/snap/bin --dir-phpstan=~/git/phpstan/htdocs/includes/bin';
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
|
@ -63,7 +63,7 @@ $i = 0;
|
|||
while ($i < $argc) {
|
||||
$reg = array();
|
||||
if (preg_match('/--dir-scc=(.*)$/', $argv[$i], $reg)) {
|
||||
$dirphpstan = $reg[1];
|
||||
$dirscc = $reg[1];
|
||||
}
|
||||
if (preg_match('/--dir-phpstan=(.*)$/', $argv[$i], $reg)) {
|
||||
$dirphpstan = $reg[1];
|
||||
|
|
@ -157,13 +157,15 @@ foreach (array('proj', 'dep') as $source) {
|
|||
}
|
||||
}
|
||||
|
||||
foreach ($arrayoflineofcode[$source] as $key => $val) {
|
||||
$arrayofmetrics[$source]['Files'] += $val['Files'];
|
||||
$arrayofmetrics[$source]['Lines'] += $val['Lines'];
|
||||
$arrayofmetrics[$source]['Blanks'] += $val['Blanks'];
|
||||
$arrayofmetrics[$source]['Comments'] += $val['Comments'];
|
||||
$arrayofmetrics[$source]['Code'] += $val['Code'];
|
||||
$arrayofmetrics[$source]['Complexity'] += $val['Complexity'];
|
||||
if (!empty($arrayoflineofcode[$source])) {
|
||||
foreach ($arrayoflineofcode[$source] as $key => $val) {
|
||||
$arrayofmetrics[$source]['Files'] += $val['Files'];
|
||||
$arrayofmetrics[$source]['Lines'] += $val['Lines'];
|
||||
$arrayofmetrics[$source]['Blanks'] += $val['Blanks'];
|
||||
$arrayofmetrics[$source]['Comments'] += $val['Comments'];
|
||||
$arrayofmetrics[$source]['Code'] += $val['Code'];
|
||||
$arrayofmetrics[$source]['Complexity'] += $val['Complexity'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -267,18 +269,20 @@ foreach (array('proj', 'dep') as $source) {
|
|||
$html .= '<td class="right">'.formatNumber($arrayofmetrics[$source]['Code']).'</td>';
|
||||
$html .= '<td>TODO graph here...</td>';
|
||||
$html .= '</tr>';
|
||||
foreach ($arrayoflineofcode[$source] as $key => $val) {
|
||||
$html .= '<tr class="loc hidden source'.$source.' language'.str_replace(' ', '', $key).'">';
|
||||
$html .= '<td>'.$key.'</td>';
|
||||
$html .= '<td class="right"></td>';
|
||||
$html .= '<td class="right">'.(empty($val['Files']) ? '' : formatNumber($val['Files'])).'</td>';
|
||||
$html .= '<td class="right">'.(empty($val['Lines']) ? '' : formatNumber($val['Lines'])).'</td>';
|
||||
$html .= '<td class="right">'.(empty($val['Blanks']) ? '' : formatNumber($val['Blanks'])).'</td>';
|
||||
$html .= '<td class="right">'.(empty($val['Comments']) ? '' : formatNumber($val['Comments'])).'</td>';
|
||||
$html .= '<td class="right">'.(empty($val['Code']) ? '' : formatNumber($val['Code'])).'</td>';
|
||||
//$html .= '<td class="right">'.(empty($val['Complexity']) ? '' : $val['Complexity']).'</td>';
|
||||
$html .= '<td>TODO graph here...</td>';
|
||||
$html .= '</tr>';
|
||||
if (!empty($arrayoflineofcode[$source])) {
|
||||
foreach ($arrayoflineofcode[$source] as $key => $val) {
|
||||
$html .= '<tr class="loc hidden source'.$source.' language'.str_replace(' ', '', $key).'">';
|
||||
$html .= '<td>'.$key.'</td>';
|
||||
$html .= '<td class="right"></td>';
|
||||
$html .= '<td class="right">'.(empty($val['Files']) ? '' : formatNumber($val['Files'])).'</td>';
|
||||
$html .= '<td class="right">'.(empty($val['Lines']) ? '' : formatNumber($val['Lines'])).'</td>';
|
||||
$html .= '<td class="right">'.(empty($val['Blanks']) ? '' : formatNumber($val['Blanks'])).'</td>';
|
||||
$html .= '<td class="right">'.(empty($val['Comments']) ? '' : formatNumber($val['Comments'])).'</td>';
|
||||
$html .= '<td class="right">'.(empty($val['Code']) ? '' : formatNumber($val['Code'])).'</td>';
|
||||
//$html .= '<td class="right">'.(empty($val['Complexity']) ? '' : $val['Complexity']).'</td>';
|
||||
$html .= '<td>TODO graph here...</td>';
|
||||
$html .= '</tr>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -299,8 +303,12 @@ $html .= '</section>';
|
|||
|
||||
$html .= '<section class="chapter">';
|
||||
$html .= '<h2>Project value</h2><br>';
|
||||
$html .= 'COCOMO (Basic organic model) value: $'.formatNumber($arraycocomo['proj']['currency'] + $arraycocomo['dep']['currency'], 2).'<br>';
|
||||
$html .= 'COCOMO (Basic organic model) effort: '.formatNumber($arraycocomo['proj']['people'] * $arraycocomo['proj']['effort'] + $arraycocomo['dep']['people'] * $arraycocomo['dep']['effort']).' monthes people<br>';
|
||||
$html .= 'COCOMO (Basic organic model) value: $';
|
||||
$html .= formatNumber($arraycocomo['proj']['currency'] + $arraycocomo['dep']['currency'], 2);
|
||||
$html .= '<br>';
|
||||
$html .= 'COCOMO (Basic organic model) effort: ';
|
||||
$html .= formatNumber($arraycocomo['proj']['people'] * $arraycocomo['proj']['effort'] + $arraycocomo['dep']['people'] * $arraycocomo['dep']['effort']);
|
||||
$html .= ' monthes people<br>';
|
||||
$html .= '</section>';
|
||||
|
||||
$html .= '<section class="chapter">';
|
||||
|
|
|
|||
|
|
@ -81,10 +81,10 @@ $list_account[] = '---Others---';
|
|||
$list_account[] = 'ACCOUNTING_VAT_SOLD_ACCOUNT';
|
||||
$list_account[] = 'ACCOUNTING_VAT_BUY_ACCOUNT';
|
||||
|
||||
if ($mysoc->useRevenueStamp()) {
|
||||
/*if ($mysoc->useRevenueStamp()) {
|
||||
$list_account[] = 'ACCOUNTING_REVENUESTAMP_SOLD_ACCOUNT';
|
||||
//$list_account[] = 'ACCOUNTING_REVENUESTAMP_BUY_ACCOUNT';
|
||||
}
|
||||
$list_account[] = 'ACCOUNTING_REVENUESTAMP_BUY_ACCOUNT';
|
||||
}*/
|
||||
|
||||
$list_account[] = 'ACCOUNTING_VAT_PAY_ACCOUNT';
|
||||
|
||||
|
|
@ -265,8 +265,8 @@ foreach ($list_account as $key) {
|
|||
print img_picto('', 'payment_vat', 'class="pictofixedwidth"');
|
||||
} elseif (preg_match('/^ACCOUNTING_VAT/', $key)) {
|
||||
print img_picto('', 'vat', 'class="pictofixedwidth"');
|
||||
} elseif (preg_match('/^ACCOUNTING_REVENUESTAMP/', $key)) {
|
||||
print img_picto('', 'vat', 'class="pictofixedwidth"');
|
||||
/*} elseif (preg_match('/^ACCOUNTING_REVENUESTAMP/', $key)) {
|
||||
print img_picto('', 'vat', 'class="pictofixedwidth"');*/
|
||||
} elseif (preg_match('/^ACCOUNTING_ACCOUNT_CUSTOMER/', $key)) {
|
||||
print img_picto('', 'bill', 'class="pictofixedwidth"');
|
||||
} elseif (preg_match('/^LOAN_ACCOUNTING_ACCOUNT/', $key)) {
|
||||
|
|
|
|||
|
|
@ -497,7 +497,7 @@ if ($action == 'create') {
|
|||
|
||||
// Ref document
|
||||
print '<tr><td>';
|
||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||
print '<table class="nobordernopadding centpercent"><tr><td>';
|
||||
print $langs->trans('Piece');
|
||||
print '</td>';
|
||||
if ($action != 'editdocref') {
|
||||
|
|
|
|||
|
|
@ -209,7 +209,7 @@ if ($result) {
|
|||
}
|
||||
}
|
||||
|
||||
$compta_revenuestamp = getDolGlobalString('ACCOUNTING_REVENUESTAMP_SOLD_ACCOUNT', 'NotDefined');
|
||||
//$compta_revenuestamp = getDolGlobalString('ACCOUNTING_REVENUESTAMP_SOLD_ACCOUNT', 'NotDefined');
|
||||
|
||||
$vatdata = getTaxesFromId($obj->tva_tx.($obj->vat_src_code ? ' ('.$obj->vat_src_code.')' : ''), $mysoc, $mysoc, 0);
|
||||
$compta_tva = (!empty($vatdata['accountancy_code_sell']) ? $vatdata['accountancy_code_sell'] : $cpttva);
|
||||
|
|
@ -296,6 +296,27 @@ if ($result) {
|
|||
$tablocaltax1[$obj->rowid][$compta_localtax1] += $obj->total_localtax1 * $situation_ratio;
|
||||
$tablocaltax2[$obj->rowid][$compta_localtax2] += $obj->total_localtax2 * $situation_ratio;
|
||||
|
||||
$compta_revenuestamp = 'NotDefined';
|
||||
if (!empty($revenuestamp)) {
|
||||
$sqlrevenuestamp = "SELECT accountancy_code_sell FROM ".MAIN_DB_PREFIX."c_revenuestamp";
|
||||
$sqlrevenuestamp .= " WHERE fk_pays = ".((int) $mysoc->country_id);
|
||||
$sqlrevenuestamp .= " AND taux = ".((double) $revenuestamp);
|
||||
$sqlrevenuestamp .= " AND active = 1";
|
||||
$resqlrevenuestamp = $db->query($sqlrevenuestamp);
|
||||
|
||||
if ($resqlrevenuestamp) {
|
||||
$num_rows_revenuestamp = $db->num_rows($resqlrevenuestamp);
|
||||
if ($num_rows_revenuestamp > 1) {
|
||||
dol_print_error($db, 'Failed 2 or more lines for the revenue stamp of your country. Check the dictionary of revenue stamp.');
|
||||
} else {
|
||||
$objrevenuestamp = $db->fetch_object($resqlrevenuestamp);
|
||||
if ($objrevenuestamp) {
|
||||
$compta_revenuestamp = $objrevenuestamp->accountancy_code_sell;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($tabrevenuestamp[$obj->rowid][$compta_revenuestamp]) && !empty($revenuestamp)) {
|
||||
// The revenue stamp was never seen for this invoice id=$obj->rowid
|
||||
$tabttc[$obj->rowid][$compta_soc] += $obj->revenuestamp;
|
||||
|
|
|
|||
|
|
@ -463,10 +463,6 @@ if (empty($reshook)) {
|
|||
$phone = GETPOST("phone", 'alpha');
|
||||
$phone_perso = GETPOST("phone_perso", 'alpha');
|
||||
$phone_mobile = GETPOST("phone_mobile", 'alpha');
|
||||
// $skype=GETPOST("member_skype", 'alpha');
|
||||
// $twitter=GETPOST("member_twitter", 'alpha');
|
||||
// $facebook=GETPOST("member_facebook", 'alpha');
|
||||
// $linkedin=GETPOST("member_linkedin", 'alpha');
|
||||
$email = preg_replace('/\s+/', '', GETPOST("member_email", 'alpha'));
|
||||
$url = trim(GETPOST('url', 'custom', 0, FILTER_SANITIZE_URL));
|
||||
$login = GETPOST("member_login", 'alphanohtml');
|
||||
|
|
|
|||
|
|
@ -426,7 +426,7 @@ class Adherent extends CommonObject
|
|||
|
||||
// Envoi mail confirmation
|
||||
$from = $conf->email_from;
|
||||
if (!empty(getDolGlobalString('ADHERENT_MAIL_FROM'))) {
|
||||
if (getDolGlobalString('ADHERENT_MAIL_FROM')) {
|
||||
$from = getDolGlobalString('ADHERENT_MAIL_FROM');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ $message .= '</div>';
|
|||
$message .= ajax_autoselect('webdavpublicurl');
|
||||
|
||||
$message .= '<br>';
|
||||
if (!empty(getDolGlobalString('DAV_ALLOW_PUBLIC_DIR'))) {
|
||||
if (getDolGlobalString('DAV_ALLOW_PUBLIC_DIR')) {
|
||||
$urlEntity = (isModEnabled('multicompany') ? '?entity=' . $conf->entity : '');
|
||||
$url = '<a href="' . $urlwithroot . '/dav/fileserver.php/public/' . $urlEntity . '" target="_blank" rel="noopener noreferrer">' . $urlwithroot . '/dav/fileserver.php/public/' . $urlEntity . '</a>';
|
||||
|
||||
|
|
|
|||
|
|
@ -82,9 +82,6 @@ if ($action == 'setvalue' && $user->admin) {
|
|||
if (!dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_MOBILE', GETPOST("fieldmobile"), 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
if (!dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_SKYPE', GETPOST("fieldskype"), 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
if (!dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_FAX', GETPOST("fieldfax"), 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
|
|
@ -237,13 +234,6 @@ print '</td><td>'.$langs->trans("LDAPFieldMobileExample").'</td>';
|
|||
print '<td class="right"><input type="radio" name="key" value="LDAP_CONTACT_FIELD_MOBILE"'.($conf->global->LDAP_KEY_CONTACTS && $conf->global->LDAP_KEY_CONTACTS == $conf->global->LDAP_CONTACT_FIELD_MOBILE ? ' checked' : '')."></td>";
|
||||
print '</tr>';
|
||||
|
||||
// Skype
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPFieldSkype").'</td><td>';
|
||||
print '<input size="25" type="text" name="fieldskype" value="'.$conf->global->LDAP_CONTACT_FIELD_SKYPE.'">';
|
||||
print '</td><td>'.$langs->trans("LDAPFieldSkypeExample").'</td>';
|
||||
print '<td class="right"><input type="radio" name="key" value="LDAP_CONTACT_FIELD_SKYPE"'.($conf->global->LDAP_KEY_CONTACTS && $conf->global->LDAP_KEY_CONTACTS == $conf->global->LDAP_CONTACT_FIELD_SKYPE ? ' checked' : '')."></td>";
|
||||
print '</tr>';
|
||||
|
||||
// Fax
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPFieldFax").'</td><td>';
|
||||
print '<input size="25" type="text" name="fieldfax" value="'.$conf->global->LDAP_CONTACT_FIELD_FAX.'">';
|
||||
|
|
|
|||
|
|
@ -95,9 +95,6 @@ if ($action == 'setvalue' && $user->admin) {
|
|||
if (!dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_MOBILE', GETPOST("fieldmobile"), 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
if (!dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_SKYPE', GETPOST("fieldskype"), 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
if (!dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_FAX', GETPOST("fieldfax"), 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
|
|
@ -314,13 +311,6 @@ print '</td><td>'.$langs->trans("LDAPFieldMobileExample").'</td>';
|
|||
print '<td class="right"> </td>';
|
||||
print '</tr>';
|
||||
|
||||
// Skype
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPFieldSkype").'</td><td>';
|
||||
print '<input size="25" type="text" name="fieldskype" value="'.$conf->global->LDAP_MEMBER_FIELD_SKYPE.'">';
|
||||
print '</td><td>'.$langs->trans("LDAPFieldSkypeExample").'</td>';
|
||||
print '<td class="right"> </td>';
|
||||
print '</tr>';
|
||||
|
||||
// Fax
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPFieldFax").'</td><td>';
|
||||
print '<input size="25" type="text" name="fieldfax" value="'.$conf->global->LDAP_MEMBER_FIELD_FAX.'">';
|
||||
|
|
|
|||
|
|
@ -91,9 +91,6 @@ if ($action == 'setvalue' && $user->admin) {
|
|||
if (!dolibarr_set_const($db, 'LDAP_FIELD_MOBILE', GETPOST("fieldmobile"), 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
if (!dolibarr_set_const($db, 'LDAP_FIELD_SKYPE', GETPOST("fieldskype"), 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
if (!dolibarr_set_const($db, 'LDAP_FIELD_FAX', GETPOST("fieldfax"), 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
|
|
@ -294,13 +291,6 @@ print '</td><td>'.$langs->trans("LDAPFieldMobileExample").'</td>';
|
|||
print '<td class="right"><input type="radio" name="key" value="LDAP_FIELD_MOBILE"'.(getDolGlobalString('LDAP_KEY_USERS') == getDolGlobalString('LDAP_FIELD_MOBILE') ? ' checked' : '')."></td>";
|
||||
print '</tr>';
|
||||
|
||||
// Skype
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPFieldSkype").'</td><td>';
|
||||
print '<input size="25" type="text" name="fieldskype" value="'.getDolGlobalString('LDAP_FIELD_SKYPE').'">';
|
||||
print '</td><td>'.$langs->trans("LDAPFieldSkypeExample").'</td>';
|
||||
print '<td class="right"><input type="radio" name="key" value="LDAP_FIELD_SKYPE"'.(getDolGlobalString('LDAP_KEY_USERS') == getDolGlobalString('LDAP_FIELD_SKYPE') ? ' checked' : '')."></td>";
|
||||
print '</tr>';
|
||||
|
||||
// Fax
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPFieldFax").'</td><td>';
|
||||
print '<input size="25" type="text" name="fieldfax" value="'.getDolGlobalString('LDAP_FIELD_FAX').'">';
|
||||
|
|
|
|||
|
|
@ -664,7 +664,7 @@ if ($action == 'edit') {
|
|||
if (empty($conf->global->MAIN_DISABLE_ALL_MAILS)) {
|
||||
// Force e-mail recipient
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_FORCE_SENDTO").'</td><td>'.getDolGlobalString('MAIN_MAIL_FORCE_SENDTO');
|
||||
if (!empty(getDolGlobalString('MAIN_MAIL_FORCE_SENDTO'))) {
|
||||
if (getDolGlobalString('MAIN_MAIL_FORCE_SENDTO')) {
|
||||
if (!isValidEmail(getDolGlobalString('MAIN_MAIL_FORCE_SENDTO'))) {
|
||||
print img_warning($langs->trans("ErrorBadEMail"));
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ if ($action == 'edit') {
|
|||
// Method
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_SMS_SENDMODE").'</td><td>';
|
||||
if (count($listofmethods)) {
|
||||
print $form->selectarray('MAIN_SMS_SENDMODE', $listofmethods, $conf->global->MAIN_SMS_SENDMODE, 1);
|
||||
print $form->selectarray('MAIN_SMS_SENDMODE', $listofmethods, getDolGlobalString('MAIN_SMS_SENDMODE'), 1);
|
||||
} else {
|
||||
print '<span class="error">'.$langs->trans("None").'</span>';
|
||||
}
|
||||
|
|
@ -224,7 +224,7 @@ if ($action == 'edit') {
|
|||
|
||||
// Method
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_SMS_SENDMODE").'</td><td>';
|
||||
$text = empty(getDolGlobalString('MAIN_SMS_SENDMODE')) ? '' : $listofmethods[getDolGlobalString('MAIN_SMS_SENDMODE')];
|
||||
$text = getDolGlobalString('MAIN_SMS_SENDMODE') ? $listofmethods[getDolGlobalString('MAIN_SMS_SENDMODE')] : '';
|
||||
if (empty($text)) {
|
||||
$text = $langs->trans("Undefined").' '.img_warning();
|
||||
}
|
||||
|
|
@ -256,19 +256,7 @@ if ($action == 'edit') {
|
|||
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit">'.$langs->trans("Modify").'</a>';
|
||||
|
||||
/*if ($conf->global->MAIN_SMS_SENDMODE != 'mail' || ! $linuxlike)
|
||||
{
|
||||
if (function_exists('fsockopen') && $port && $server)
|
||||
{
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=testconnect">'.$langs->trans("DoTestServerAvailability").'</a>';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("FeatureNotAvailableOnLinux").'">'.$langs->trans("DoTestServerAvailability").'</a>';
|
||||
}*/
|
||||
|
||||
if (count($listofmethods) && !empty($conf->global->MAIN_SMS_SENDMODE)) {
|
||||
if (count($listofmethods) && getDolGlobalString('MAIN_SMS_SENDMODE')) {
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=test&mode=init">'.$langs->trans("DoTestSend").'</a>';
|
||||
} else {
|
||||
print '<a class="butActionRefused classfortooltip" href="#">'.$langs->trans("DoTestSend").'</a>';
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@ if (!empty($conf->global->TICKET_ENABLE_PUBLIC_INTERFACE)) {
|
|||
// Check if email exists
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("TicketsEmailMustExist").'</td>';
|
||||
print '<td class="left">';
|
||||
if (empty(getDolGlobalInt('TICKET_EMAIL_MUST_EXISTS'))) {
|
||||
if (!getDolGlobalInt('TICKET_EMAIL_MUST_EXISTS')) {
|
||||
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=set_TICKET_EMAIL_MUST_EXISTS&token='.newToken().'">' . img_picto($langs->trans('Disabled'), 'switch_off') . '</a>';
|
||||
} else {
|
||||
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=del_TICKET_EMAIL_MUST_EXISTS&token='.newToken().'">' . img_picto($langs->trans('Enabled'), 'switch_on') . '</a>';
|
||||
|
|
@ -334,7 +334,7 @@ if (!empty($conf->global->TICKET_ENABLE_PUBLIC_INTERFACE)) {
|
|||
/*
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("TicketCreateThirdPartyWithContactIfNotExist").'</td>';
|
||||
print '<td class="left">';
|
||||
if (empty(getDolGlobalInt('TICKET_CREATE_THIRD_PARTY_WITH_CONTACT_IF_NOT_EXIST'))) {
|
||||
if (!getDolGlobalInt('TICKET_CREATE_THIRD_PARTY_WITH_CONTACT_IF_NOT_EXIST')) {
|
||||
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=set_TICKET_CREATE_THIRD_PARTY_WITH_CONTACT_IF_NOT_EXIST&token='.newToken().'">' . img_picto($langs->trans('Disabled'), 'switch_off') . '</a>';
|
||||
} else {
|
||||
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=del_TICKET_CREATE_THIRD_PARTY_WITH_CONTACT_IF_NOT_EXIST&token='.newToken().'">' . img_picto($langs->trans('Enabled'), 'switch_on') . '</a>';
|
||||
|
|
@ -397,7 +397,7 @@ if (!empty($conf->global->TICKET_ENABLE_PUBLIC_INTERFACE)) {
|
|||
// Show progression
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("TicketsShowProgression").'</td>';
|
||||
print '<td class="left">';
|
||||
if (empty(getDolGlobalInt('TICKET_SHOW_PROGRESSION'))) {
|
||||
if (!getDolGlobalInt('TICKET_SHOW_PROGRESSION')) {
|
||||
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=set_TICKET_SHOW_PROGRESSION">' . img_picto($langs->trans('Disabled'), 'switch_off') . '</a>';
|
||||
} else {
|
||||
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=del_TICKET_SHOW_PROGRESSION">' . img_picto($langs->trans('Enabled'), 'switch_on') . '</a>';
|
||||
|
|
|
|||
|
|
@ -187,7 +187,6 @@ $form = new Form($db);
|
|||
|
||||
if ($object->id > 0) {
|
||||
$title = $langs->trans("Agenda");
|
||||
//if (!empty(getDolGlobalString('MAIN_HTML_TITLE')) && preg_match('/thirdpartynameonly/',getDolGlobalString('MAIN_HTML_TITLE')) && $object->name) $title=$object->name." - ".$title;
|
||||
$help_url = 'EN:Module_Agenda_En|DE:Modul_Terminplanung';
|
||||
llxHeader('', $title, $help_url);
|
||||
|
||||
|
|
|
|||
|
|
@ -1016,11 +1016,11 @@ class Calendar extends CommonObject
|
|||
global $langs, $conf;
|
||||
$langs->load("bookcal@bookcal");
|
||||
|
||||
if (empty(getDolGlobalString('BOOKCAL_MYOBJECT_ADDON'))) {
|
||||
if (getDolGlobalString('BOOKCAL_MYOBJECT_ADDON')) {
|
||||
$conf->global->BOOKCAL_MYOBJECT_ADDON = 'mod_calendar_standard';
|
||||
}
|
||||
|
||||
if (!empty(getDolGlobalString('BOOKCAL_MYOBJECT_ADDON'))) {
|
||||
if (getDolGlobalString('BOOKCAL_MYOBJECT_ADDON')) {
|
||||
$mybool = false;
|
||||
|
||||
$file = getDolGlobalString('BOOKCAL_MYOBJECT_ADDON').".php";
|
||||
|
|
|
|||
|
|
@ -264,6 +264,20 @@ class Categorie extends CommonObject
|
|||
*/
|
||||
public $childs = array();
|
||||
|
||||
/**
|
||||
* @var array multilangs
|
||||
*/
|
||||
public $multilangs;
|
||||
|
||||
/**
|
||||
* @var int imgWidth
|
||||
*/
|
||||
public $imgWidth;
|
||||
|
||||
/**
|
||||
* @var int imgHeight
|
||||
*/
|
||||
public $imgHeight;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
|
|
@ -1886,27 +1900,27 @@ class Categorie extends CommonObject
|
|||
} else {
|
||||
$sql2 = "INSERT INTO ".MAIN_DB_PREFIX."categorie_lang (fk_category, lang, label, description)";
|
||||
$sql2 .= " VALUES(".((int) $this->id).", '".$this->db->escape($key)."', '".$this->db->escape($this->label)."'";
|
||||
$sql2 .= ", '".$this->db->escape($this->multilangs["$key"]["description"])."')";
|
||||
$sql2 .= ", '".$this->db->escape($this->multilangs[$key]["description"])."')";
|
||||
}
|
||||
dol_syslog(get_class($this).'::setMultiLangs', LOG_DEBUG);
|
||||
if (!$this->db->query($sql2)) {
|
||||
$this->error = $this->db->lasterror();
|
||||
return -1;
|
||||
}
|
||||
} elseif (isset($this->multilangs["$key"])) {
|
||||
} elseif (isset($this->multilangs[$key])) {
|
||||
if ($this->db->num_rows($result)) { // si aucune ligne dans la base
|
||||
$sql2 = "UPDATE ".MAIN_DB_PREFIX."categorie_lang";
|
||||
$sql2 .= " SET label='".$this->db->escape($this->multilangs["$key"]["label"])."',";
|
||||
$sql2 .= " description='".$this->db->escape($this->multilangs["$key"]["description"])."'";
|
||||
$sql2 .= " SET label='".$this->db->escape($this->multilangs[$key]["label"])."',";
|
||||
$sql2 .= " description='".$this->db->escape($this->multilangs[$key]["description"])."'";
|
||||
$sql2 .= " WHERE fk_category=".((int) $this->id)." AND lang='".$this->db->escape($key)."'";
|
||||
} else {
|
||||
$sql2 = "INSERT INTO ".MAIN_DB_PREFIX."categorie_lang (fk_category, lang, label, description)";
|
||||
$sql2 .= " VALUES(".((int) $this->id).", '".$this->db->escape($key)."', '".$this->db->escape($this->multilangs["$key"]["label"])."'";
|
||||
$sql2 .= ",'".$this->db->escape($this->multilangs["$key"]["description"])."')";
|
||||
$sql2 .= " VALUES(".((int) $this->id).", '".$this->db->escape($key)."', '".$this->db->escape($this->multilangs[$key]["label"])."'";
|
||||
$sql2 .= ",'".$this->db->escape($this->multilangs[$key]["description"])."')";
|
||||
}
|
||||
|
||||
// on ne sauvegarde pas des champs vides
|
||||
if ($this->multilangs["$key"]["label"] || $this->multilangs["$key"]["description"] || $this->multilangs["$key"]["note"]) {
|
||||
if ($this->multilangs[$key]["label"] || $this->multilangs[$key]["description"] || $this->multilangs[$key]["note"]) {
|
||||
dol_syslog(get_class($this).'::setMultiLangs', LOG_DEBUG);
|
||||
}
|
||||
if (!$this->db->query($sql2)) {
|
||||
|
|
@ -1950,8 +1964,8 @@ class Categorie extends CommonObject
|
|||
$this->label = $obj->label;
|
||||
$this->description = $obj->description;
|
||||
}
|
||||
$this->multilangs["$obj->lang"]["label"] = $obj->label;
|
||||
$this->multilangs["$obj->lang"]["description"] = $obj->description;
|
||||
$this->multilangs[$obj->lang]["label"] = $obj->label;
|
||||
$this->multilangs[$obj->lang]["description"] = $obj->description;
|
||||
}
|
||||
return 1;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -66,24 +66,10 @@ $ref = GETPOST('ref', 'alpha');
|
|||
$action = GETPOST('action', 'aZ09');
|
||||
$cancel = GETPOST('cancel', 'alpha');
|
||||
$confirm = GETPOST('confirm', 'alpha');
|
||||
$contextpage = 'banktransactionlist'.(empty($object->ref) ? '' : '-'.$object->id);
|
||||
$contextpage = 'banktransactionlist';
|
||||
$massaction = GETPOST('massaction', 'alpha');
|
||||
$optioncss = GETPOST('optioncss', 'aZ09');
|
||||
|
||||
// Security check
|
||||
$fieldvalue = (!empty($id) ? $id : (!empty($ref) ? $ref : ''));
|
||||
$fieldtype = (!empty($ref) ? 'ref' : 'rowid');
|
||||
if ($fieldvalue) {
|
||||
if ($user->socid) {
|
||||
$socid = $user->socid;
|
||||
}
|
||||
$result = restrictedArea($user, 'banque', $fieldvalue, 'bank_account&bank_account', '', '', $fieldtype);
|
||||
} else {
|
||||
if ($user->socid) {
|
||||
$socid = $user->socid;
|
||||
}
|
||||
$result = restrictedArea($user, 'banque');
|
||||
}
|
||||
|
||||
$dateop = dol_mktime(12, 0, 0, GETPOST("opmonth", 'int'), GETPOST("opday", 'int'), GETPOST("opyear", 'int'));
|
||||
$search_debit = GETPOST("search_debit", 'alpha');
|
||||
|
|
@ -143,6 +129,9 @@ if ($id > 0 || !empty($ref)) {
|
|||
}
|
||||
}
|
||||
|
||||
// redefine contextpage to depend on bank account
|
||||
$contextpage = 'banktransactionlist'.(empty($object->id) ? '' : '-'.$object->id);
|
||||
|
||||
$mode_balance_ok = false;
|
||||
//if (($sortfield == 'b.datev' || $sortfield == 'b.datev,b.dateo,b.rowid')) // TODO Manage balance when account not selected
|
||||
if (($sortfield == 'b.datev' || $sortfield == 'b.datev,b.dateo,b.rowid')) {
|
||||
|
|
@ -183,6 +172,22 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
|
|||
$object->fields = dol_sort_array($object->fields, 'position');
|
||||
$arrayfields = dol_sort_array($arrayfields, 'position');
|
||||
|
||||
// Security check
|
||||
$fieldvalue = (!empty($id) ? $id : (!empty($ref) ? $ref : ''));
|
||||
$fieldtype = (!empty($ref) ? 'ref' : 'rowid');
|
||||
if ($fieldvalue) {
|
||||
if ($user->socid) {
|
||||
$socid = $user->socid;
|
||||
}
|
||||
$result = restrictedArea($user, 'banque', $fieldvalue, 'bank_account&bank_account', '', '', $fieldtype);
|
||||
} else {
|
||||
if ($user->socid) {
|
||||
$socid = $user->socid;
|
||||
}
|
||||
$result = restrictedArea($user, 'banque');
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
|
|
@ -266,6 +271,9 @@ if ((GETPOST('confirm_savestatement', 'alpha') || GETPOST('confirm_reconcile', '
|
|||
}
|
||||
}
|
||||
}
|
||||
if (!$error && count($rowids) > 0) {
|
||||
setEventMessages($langs->trans("XNewLinesConciliated", count($rowids)), null);
|
||||
}
|
||||
} else {
|
||||
$error++;
|
||||
$langs->load("errors");
|
||||
|
|
@ -278,7 +286,7 @@ if ((GETPOST('confirm_savestatement', 'alpha') || GETPOST('confirm_reconcile', '
|
|||
}
|
||||
|
||||
if (!$error) {
|
||||
$param = 'action=reconcile&contextpage=banktransactionlist&id='.((int) $id).'&search_account='.((int) $id);
|
||||
$param = 'action=reconcile&contextpage=banktransactionlist&id='.((int) $object->id).'&search_account='.((int) $object->id);
|
||||
if ($page) {
|
||||
$param .= '&page='.urlencode($page);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2331,7 +2331,7 @@ class AccountLine extends CommonObjectLine
|
|||
dol_syslog(get_class($this)."::update_conciliation", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql) {
|
||||
if (!empty($cat)) {
|
||||
if (!empty($cat) && $cat > 0) {
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_class (";
|
||||
$sql .= "lineid";
|
||||
$sql .= ", fk_categ";
|
||||
|
|
@ -2344,6 +2344,7 @@ class AccountLine extends CommonObjectLine
|
|||
$this->db->query($sql);
|
||||
|
||||
// No error check. Can fail if category already affected
|
||||
// TODO Do no try the insert if link already exists
|
||||
}
|
||||
|
||||
$this->rappro = 1;
|
||||
|
|
|
|||
|
|
@ -65,12 +65,12 @@ $backtopage = GETPOST('backtopage', 'alpha');
|
|||
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||
$hookmanager->initHooks(array('bankaccountstatement', 'globalcard'));
|
||||
|
||||
if ($user->rights->banque->consolidate && $action == 'dvnext' && !empty($dvid)) {
|
||||
if ($user->hasRight('banque', 'consolidate') && $action == 'dvnext' && !empty($dvid)) {
|
||||
$al = new AccountLine($db);
|
||||
$al->datev_next($dvid);
|
||||
}
|
||||
|
||||
if ($user->rights->banque->consolidate && $action == 'dvprev' && !empty($dvid)) {
|
||||
if ($user->hasRight('banque', 'consolidate') && $action == 'dvprev' && !empty($dvid)) {
|
||||
$al = new AccountLine($db);
|
||||
$al->datev_previous($dvid);
|
||||
}
|
||||
|
|
@ -104,11 +104,9 @@ if ($id > 0 || !empty($ref)) {
|
|||
$id = $object->id; // Force the search field on id of account
|
||||
}
|
||||
|
||||
|
||||
// Initialize technical object to manage context to save list fields
|
||||
$contextpage = 'banktransactionlist'.(empty($object->ref) ? '' : '-'.$object->id);
|
||||
|
||||
|
||||
// Security check
|
||||
$fieldid = (!empty($ref) ? $ref : $id);
|
||||
$fieldname = (!empty($ref) ? 'ref' : 'rowid');
|
||||
|
|
@ -118,60 +116,63 @@ if ($user->socid) {
|
|||
|
||||
$result = restrictedArea($user, 'banque', $fieldid, 'bank_account', '', '', $fieldname);
|
||||
|
||||
$error = 0;
|
||||
|
||||
// Define number of receipt to show (current, previous or next one ?)
|
||||
$found = false;
|
||||
if ($rel == 'prev') {
|
||||
// Recherche valeur pour num = numero releve precedent
|
||||
$sql = "SELECT DISTINCT(b.num_releve) as num";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||
$sql .= " WHERE b.num_releve < '".$db->escape($numref)."'";
|
||||
$sql .= " AND b.fk_account = ".((int) $object->id);
|
||||
$sql .= " AND d.entity IN (".getEntity($object->element).")";
|
||||
$sql .= " ORDER BY b.num_releve DESC";
|
||||
$foundprevious = '';
|
||||
$foundnext = '';
|
||||
// Search previous receipt number
|
||||
$sql = "SELECT b.num_releve as num";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||
$sql .= " WHERE b.num_releve < '".$db->escape($numref)."'";
|
||||
$sql .= " AND b.fk_account = ".((int) $object->id);
|
||||
$sql .= " ORDER BY b.num_releve DESC";
|
||||
$sql .= $db->plimit(1);
|
||||
|
||||
dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql) {
|
||||
$numrows = $db->num_rows($resql);
|
||||
if ($numrows > 0) {
|
||||
$obj = $db->fetch_object($resql);
|
||||
dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql) {
|
||||
$numrows = $db->num_rows($resql);
|
||||
if ($numrows > 0) {
|
||||
$obj = $db->fetch_object($resql);
|
||||
if ($rel == 'prev') {
|
||||
$numref = $obj->num;
|
||||
$found = true;
|
||||
}
|
||||
}
|
||||
} elseif ($rel == 'next') {
|
||||
// Recherche valeur pour num = numero releve precedent
|
||||
$sql = "SELECT DISTINCT(b.num_releve) as num";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||
$sql .= " WHERE b.num_releve > '".$db->escape($numref)."'";
|
||||
$sql .= " AND b.fk_account = ".((int) $object->id);
|
||||
$sql .= " AND d.entity IN (".getEntity($object->element).")";
|
||||
$sql .= " ORDER BY b.num_releve ASC";
|
||||
|
||||
dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql) {
|
||||
$numrows = $db->num_rows($resql);
|
||||
if ($numrows > 0) {
|
||||
$obj = $db->fetch_object($resql);
|
||||
$numref = $obj->num;
|
||||
$found = true;
|
||||
}
|
||||
$foundprevious = $obj->num;
|
||||
}
|
||||
} else {
|
||||
// On veut le releve num
|
||||
$found = true;
|
||||
dol_print_error($db);
|
||||
}
|
||||
// Search next receipt
|
||||
$sql = "SELECT b.num_releve as num";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||
$sql .= " WHERE b.num_releve > '".$db->escape($numref)."'";
|
||||
$sql .= " AND b.fk_account = ".((int) $object->id);
|
||||
$sql .= " ORDER BY b.num_releve ASC";
|
||||
$sql .= $db->plimit(1);
|
||||
|
||||
dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql) {
|
||||
$numrows = $db->num_rows($resql);
|
||||
if ($numrows > 0) {
|
||||
$obj = $db->fetch_object($resql);
|
||||
if ($rel == 'next') {
|
||||
$numref = $obj->num;
|
||||
}
|
||||
$foundnext = $obj->num;
|
||||
}
|
||||
} else {
|
||||
dol_print_error($db);
|
||||
}
|
||||
|
||||
$sql = "SELECT b.rowid, b.dateo as do, b.datev as dv,";
|
||||
$sql .= " b.amount, b.label, b.rappro, b.num_releve, b.num_chq, b.fk_type,";
|
||||
$sql .= " b.fk_bordereau,";
|
||||
$sql .= " bc.ref,";
|
||||
$sql .= " ba.rowid as bankid, ba.ref as bankref, ba.label as banklabel";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."bank_account as ba";
|
||||
$sql .= ", ".MAIN_DB_PREFIX."bank as b";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."bank_account as ba,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."bank as b";
|
||||
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'bordereau_cheque as bc ON bc.rowid=b.fk_bordereau';
|
||||
$sql .= " WHERE b.num_releve = '".$db->escape($numref)."'";
|
||||
if (empty($numref)) {
|
||||
|
|
@ -179,27 +180,45 @@ if (empty($numref)) {
|
|||
}
|
||||
$sql .= " AND b.fk_account = ".((int) $object->id);
|
||||
$sql .= " AND b.fk_account = ba.rowid";
|
||||
$sql .= " AND d.entity IN (".getEntity($object->element).")";
|
||||
$sql .= " AND ba.entity IN (".getEntity($object->element).")";
|
||||
$sql .= $db->order("b.datev, b.datec", "ASC"); // We add date of creation to have correct order when everything is done the same day
|
||||
|
||||
$sqlrequestforbankline = $sql;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
|
||||
if ($action == 'confirm_editbankreceipt' && !empty($oldbankreceipt) && !empty($newbankreceipt)) {
|
||||
// TODO Add a test to check newbankreceipt does not exists yet
|
||||
$sqlupdate = "UPDATE ".MAIN_DB_PREFIX."bank SET num_releve = '".$db->escape($newbankreceipt)."'";
|
||||
$sqlupdate .= " WHERE num_releve = '".$db->escape($oldbankreceipt)."' AND fk_account = ".((int) $id);
|
||||
$sqlupdate .= " AND entity IN (".getEntity($object->element).")";
|
||||
$result = $db->query($sqlupdate);
|
||||
if ($result < 0) {
|
||||
// Test to check newbankreceipt does not exists yet
|
||||
$sqltest = "SELECT b.rowid FROM ".MAIN_DB_PREFIX."bank as b, ".MAIN_DB_PREFIX."bank_account as ba";
|
||||
$sqltest .= " WHERE b.fk_account = ba.rowid AND ba.entity = ".((int) $conf->entity);
|
||||
$sqltest .= " AND num_releve = '".$db->escape($newbankreceipt)."'";
|
||||
$sqltest .= $db->plimit(1); // Need the first one only
|
||||
|
||||
$resql = $db->query($sqltest);
|
||||
if ($resql) {
|
||||
$obj = $db->fetch_object($resql);
|
||||
if ($obj && $obj->rowid) {
|
||||
setEventMessages('ErrorThisBankReceiptIsAlreadyUsed', null, 'errors');
|
||||
$error++;
|
||||
}
|
||||
} else {
|
||||
dol_print_error($db);
|
||||
}
|
||||
|
||||
// Update bank receipt name
|
||||
if (!$error) {
|
||||
$sqlupdate = "UPDATE ".MAIN_DB_PREFIX."bank SET num_releve = '".$db->escape($newbankreceipt)."'";
|
||||
$sqlupdate .= " WHERE num_releve = '".$db->escape($oldbankreceipt)."' AND fk_account = ".((int) $id);
|
||||
|
||||
$resql = $db->query($sqlupdate);
|
||||
if (!$resql) {
|
||||
dol_print_error($db);
|
||||
}
|
||||
}
|
||||
|
||||
$action = 'view';
|
||||
}
|
||||
|
||||
|
|
@ -207,6 +226,7 @@ if ($action == 'confirm_editbankreceipt' && !empty($oldbankreceipt) && !empty($n
|
|||
/*
|
||||
* View
|
||||
*/
|
||||
|
||||
$form = new Form($db);
|
||||
$societestatic = new Societe($db);
|
||||
$chargestatic = new ChargeSociales($db);
|
||||
|
|
@ -294,7 +314,7 @@ if (empty($numref)) {
|
|||
}
|
||||
|
||||
// If not cash account and can be reconciliate
|
||||
if ($user->rights->banque->consolidate) {
|
||||
if ($user->hasRight('banque', 'consolidate')) {
|
||||
$buttonreconcile = '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/bank/bankentries_list.php?action=reconcile&sortfield=b.datev,b.dateo,b.rowid&sortorder=asc,asc,asc&search_conciliated=0&search_account='.$id.$param.'">'.$titletoconciliatemanual.'</a>';
|
||||
} else {
|
||||
$buttonreconcile = '<a class="butActionRefused classfortooltip" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$titletoconciliatemanual.'</a>';
|
||||
|
|
@ -303,7 +323,7 @@ if (empty($numref)) {
|
|||
|
||||
if ($allowautomaticconciliation) {
|
||||
// If not cash account and can be reconciliate
|
||||
if ($user->rights->banque->consolidate) {
|
||||
if ($user->hasRight('banque', 'consolidate')) {
|
||||
$newparam = $param;
|
||||
$newparam = preg_replace('/search_conciliated=\d+/i', '', $newparam);
|
||||
$buttonreconcile .= ' <a class="butAction" style="margin-bottom: 5px !important; margin-top: 5px !important" href="'.DOL_URL_ROOT.'/compta/bank/bankentries_list.php?action=reconcile&sortfield=b.datev,b.dateo,b.rowid&sortorder=asc,asc,asc&search_conciliated=0'.$newparam.'">'.$titletoconciliateauto.'</a>';
|
||||
|
|
@ -351,8 +371,8 @@ if (empty($numref)) {
|
|||
} else {
|
||||
print '<input type="hidden" name="oldbankreceipt" value="'.$objp->numr.'">';
|
||||
print '<input type="text" name="newbankreceipt" value="'.$objp->numr.'">';
|
||||
print '<input type="submit" class="button small" name="actionnewbankreceipt" value="'.$langs->trans("Rename").'">';
|
||||
print '<input type="submit" class="button button-cancel small" name="cancel" value="'.$langs->trans("Cancel").'">';
|
||||
print '<input type="submit" class="button smallpaddingimp" name="actionnewbankreceipt" value="'.$langs->trans("Rename").'">';
|
||||
print '<input type="submit" class="button button-cancel smallpaddingimp" name="cancel" value="'.$langs->trans("Cancel").'">';
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
|
|
@ -411,9 +431,13 @@ if (empty($numref)) {
|
|||
|
||||
$morehtmlright = '';
|
||||
$morehtmlright .= '<div class="pagination"><ul>';
|
||||
$morehtmlright .= '<li class="pagination"><a class="paginationnext" href="'.$_SERVER["PHP_SELF"].'?rel=prev&num='.$numref.'&ve='.$ve.'&account='.$object->id.'"><i class="fa fa-chevron-left" title="'.dol_escape_htmltag($langs->trans("Previous")).'"></i></a></li>';
|
||||
if ($foundprevious) {
|
||||
$morehtmlright .= '<li class="pagination"><a class="paginationnext" href="'.$_SERVER["PHP_SELF"].'?num='.urlencode($foundprevious).'&ve='.urlencode($ve).'&account='.((int) $object->id).'"><i class="fa fa-chevron-left" title="'.dol_escape_htmltag($langs->trans("Previous")).'"></i></a></li>';
|
||||
}
|
||||
$morehtmlright .= '<li class="pagination"><span class="active">'.$langs->trans("AccountStatement")." ".$numref.'</span></li>';
|
||||
$morehtmlright .= '<li class="pagination"><a class="paginationnext" href="'.$_SERVER["PHP_SELF"].'?rel=next&num='.$numref.'&ve='.$ve.'&account='.$object->id.'"><i class="fa fa-chevron-right" title="'.dol_escape_htmltag($langs->trans("Next")).'"></i></a></li>';
|
||||
if ($foundnext) {
|
||||
$morehtmlright .= '<li class="pagination"><a class="paginationnext" href="'.$_SERVER["PHP_SELF"].'?num='.urlencode($foundnext).'&ve='.urlencode($ve).'&account='.((int) $object->id).'"><i class="fa fa-chevron-right" title="'.dol_escape_htmltag($langs->trans("Next")).'"></i></a></li>';
|
||||
}
|
||||
$morehtmlright .= '</ul></div>';
|
||||
|
||||
$title = $langs->trans("AccountStatement").' '.$numref.' - '.$langs->trans("BankAccount").' '.$object->getNomUrl(1, 'receipts');
|
||||
|
|
@ -449,6 +473,8 @@ if (empty($numref)) {
|
|||
$db->free($resql);
|
||||
}
|
||||
|
||||
$totalc = $totald = 0;
|
||||
|
||||
// Recherche les ecritures pour le releve
|
||||
$sql = $sqlrequestforbankline;
|
||||
|
||||
|
|
@ -667,10 +693,12 @@ if (empty($numref)) {
|
|||
$i++;
|
||||
}
|
||||
$db->free($result);
|
||||
} else {
|
||||
dol_print_error($db);
|
||||
}
|
||||
|
||||
// Line Total
|
||||
print "\n".'<tr class="liste_total"><td class="right" colspan="4">'.$langs->trans("Total")." :</td><td class=\"right\">".price($totald)."</td><td class=\"right\">".price($totalc)."</td><td> </td><td> </td></tr>";
|
||||
print "\n".'<tr class="liste_total"><td class="right" colspan="4">'.$langs->trans("Total").' :</td><td class="right">'.price($totald).'</td><td class="right">'.price($totalc)."</td><td> </td><td> </td></tr>";
|
||||
|
||||
// Line Balance
|
||||
print "\n<tr>";
|
||||
|
|
|
|||
|
|
@ -49,24 +49,24 @@ class Cpaiement
|
|||
public $code;
|
||||
|
||||
/**
|
||||
* @var int ID
|
||||
* @var int ID
|
||||
*/
|
||||
public $id;
|
||||
|
||||
/**
|
||||
* @var string[] array of errors messages
|
||||
* @var string[] array of errors messages
|
||||
*/
|
||||
public $errors;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var string
|
||||
* @deprecated
|
||||
* @see $label
|
||||
*/
|
||||
public $libelle;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var string
|
||||
*/
|
||||
public $label;
|
||||
|
||||
|
|
|
|||
|
|
@ -383,7 +383,7 @@ if ($resql) {
|
|||
print "</table>";
|
||||
print '</div>';
|
||||
|
||||
$db->free($result);
|
||||
$db->free($resql);
|
||||
} else {
|
||||
dol_print_error($db);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,6 +74,10 @@ class Cchargesociales
|
|||
public $module;
|
||||
public $accountancy_code;
|
||||
|
||||
/**
|
||||
* @var array array of errors
|
||||
*/
|
||||
public $errors = array();
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
|
|
|
|||
|
|
@ -243,41 +243,6 @@ class Contact extends CommonObject
|
|||
*/
|
||||
public $socialnetworks;
|
||||
|
||||
/**
|
||||
* Skype username
|
||||
* @var string
|
||||
* @deprecated
|
||||
*/
|
||||
public $skype;
|
||||
|
||||
/**
|
||||
* Twitter username
|
||||
* @var string
|
||||
* @deprecated
|
||||
*/
|
||||
public $twitter;
|
||||
|
||||
/**
|
||||
* Facebook username
|
||||
* @var string
|
||||
* @deprecated
|
||||
*/
|
||||
public $facebook;
|
||||
|
||||
/**
|
||||
* Linkedin username
|
||||
* @var string
|
||||
* @deprecated
|
||||
*/
|
||||
public $linkedin;
|
||||
|
||||
/**
|
||||
* Jabber username
|
||||
* @var string
|
||||
* @deprecated
|
||||
*/
|
||||
public $jabberid;
|
||||
|
||||
/**
|
||||
* @var string filename for photo
|
||||
*/
|
||||
|
|
@ -1699,6 +1664,8 @@ class Contact extends CommonObject
|
|||
$this->email = 'specimen@specimen.com';
|
||||
$this->socialnetworks = array(
|
||||
'skype' => 'tom.hanson',
|
||||
'twitter' => 'tomhanson',
|
||||
'linkedin' => 'tomhanson',
|
||||
);
|
||||
$this->phone_pro = '0909090901';
|
||||
$this->phone_perso = '0909090902';
|
||||
|
|
|
|||
|
|
@ -95,12 +95,12 @@ class CSMSFile
|
|||
}
|
||||
|
||||
// If ending method not defined
|
||||
if (empty($conf->global->MAIN_SMS_SENDMODE)) {
|
||||
if (!getDolGlobalString('MAIN_SMS_SENDMODE')) {
|
||||
$this->error = 'No SMS Engine defined';
|
||||
throw new Exception('No SMS Engine defined');
|
||||
}
|
||||
|
||||
dol_syslog("CSMSFile::CSMSFile: MAIN_SMS_SENDMODE=".$conf->global->MAIN_SMS_SENDMODE." charset=".$conf->file->character_set_client." from=".$from.", to=".$to.", msg length=".strlen($msg), LOG_DEBUG);
|
||||
dol_syslog("CSMSFile::CSMSFile: MAIN_SMS_SENDMODE=".getDolGlobalString('MAIN_SMS_SENDMODE')." charset=".$conf->file->character_set_client." from=".$from.", to=".$to.", msg length=".strlen($msg), LOG_DEBUG);
|
||||
dol_syslog("CSMSFile::CSMSFile: deferred=".$deferred." priority=".$priority." class=".$class, LOG_DEBUG);
|
||||
|
||||
// Action according to choosed sending method
|
||||
|
|
@ -138,69 +138,51 @@ class CSMSFile
|
|||
}
|
||||
|
||||
if (empty($conf->global->MAIN_DISABLE_ALL_SMS)) {
|
||||
// Action according to choosed sending method
|
||||
if (getDolGlobalString('MAIN_SMS_SENDMODE') == 'ovh') { // Backward compatibility @deprecated
|
||||
dol_include_once('/ovh/class/ovhsms.class.php');
|
||||
/** @phpstan-ignore-next-line */
|
||||
$sms = new OvhSms($this->db);
|
||||
$sms->expe = $this->addr_from;
|
||||
$sms->dest = $this->addr_to;
|
||||
$sms->message = $this->message;
|
||||
$sms->deferred = $this->deferred;
|
||||
$sms->priority = $this->priority;
|
||||
$sms->class = $this->class;
|
||||
$sms->nostop = $this->nostop;
|
||||
|
||||
$sms->socid = $this->socid;
|
||||
$sms->contact_id = $this->contact_id;
|
||||
$sms->member_id = $this->member_id;
|
||||
$sms->project = $this->fk_project;
|
||||
|
||||
$res = $sms->SmsSend();
|
||||
|
||||
if ($res <= 0) {
|
||||
$this->error = $sms->error;
|
||||
dol_syslog("CSMSFile::sendfile: sms send error=".$this->error, LOG_ERR);
|
||||
} else {
|
||||
dol_syslog("CSMSFile::sendfile: sms send success with id=".$res, LOG_DEBUG);
|
||||
//var_dump($res); // 1973128
|
||||
if (!empty($conf->global->MAIN_SMS_DEBUG)) {
|
||||
$this->dump_sms_result($res);
|
||||
}
|
||||
// Action according to the choosed sending method
|
||||
if (getDolGlobalString('MAIN_SMS_SENDMODE')) {
|
||||
$sendmode = getDolGlobalString('MAIN_SMS_SENDMODE'); // $conf->global->MAIN_SMS_SENDMODE looks like a value 'module'
|
||||
$classmoduleofsender = getDolGlobalString('MAIN_MODULE_'.strtoupper($sendmode).'_SMS', $sendmode); // $conf->global->MAIN_MODULE_XXX_SMS looks like a value 'class@module'
|
||||
if ($classmoduleofsender == 'ovh') {
|
||||
$classmoduleofsender = 'ovhsms@ovh'; // For backward compatibility
|
||||
}
|
||||
} elseif (!empty($conf->global->MAIN_SMS_SENDMODE)) { // $conf->global->MAIN_SMS_SENDMODE looks like a value 'class@module'
|
||||
$tmp = explode('@', $conf->global->MAIN_SMS_SENDMODE);
|
||||
|
||||
$tmp = explode('@', $classmoduleofsender);
|
||||
$classfile = $tmp[0];
|
||||
$module = (empty($tmp[1]) ? $tmp[0] : $tmp[1]);
|
||||
dol_include_once('/'.$module.'/class/'.$classfile.'.class.php');
|
||||
dol_include_once('/'.$module.'/class/'.strtolower($classfile).'.class.php');
|
||||
try {
|
||||
$classname = ucfirst($classfile);
|
||||
$sms = new $classname($this->db);
|
||||
$sms->expe = $this->addr_from;
|
||||
$sms->dest = $this->addr_to;
|
||||
$sms->deferred = $this->deferred;
|
||||
$sms->priority = $this->priority;
|
||||
$sms->class = $this->class;
|
||||
$sms->message = $this->message;
|
||||
$sms->nostop = $this->nostop;
|
||||
if (class_exists($classname)) {
|
||||
$sms = new $classname($this->db);
|
||||
$sms->expe = $this->addr_from;
|
||||
$sms->dest = $this->addr_to;
|
||||
$sms->deferred = $this->deferred;
|
||||
$sms->priority = $this->priority;
|
||||
$sms->class = $this->class;
|
||||
$sms->message = $this->message;
|
||||
$sms->nostop = $this->nostop;
|
||||
|
||||
$sms->socid = $this->socid;
|
||||
$sms->contact_id = $this->contact_id;
|
||||
$sms->member_id = $this->member_id;
|
||||
$sms->fk_project = $this->fk_project;
|
||||
$sms->socid = $this->socid;
|
||||
$sms->contact_id = $this->contact_id;
|
||||
$sms->member_id = $this->member_id;
|
||||
$sms->fk_project = $this->fk_project;
|
||||
|
||||
$res = $sms->SmsSend();
|
||||
$res = $sms->SmsSend();
|
||||
|
||||
$this->error = $sms->error;
|
||||
$this->errors = $sms->errors;
|
||||
if ($res <= 0) {
|
||||
dol_syslog("CSMSFile::sendfile: sms send error=".$this->error, LOG_ERR);
|
||||
} else {
|
||||
dol_syslog("CSMSFile::sendfile: sms send success with id=".$res, LOG_DEBUG);
|
||||
//var_dump($res); // 1973128
|
||||
if (!empty($conf->global->MAIN_SMS_DEBUG)) {
|
||||
$this->dump_sms_result($res);
|
||||
$this->error = $sms->error;
|
||||
$this->errors = $sms->errors;
|
||||
if ($res <= 0) {
|
||||
dol_syslog("CSMSFile::sendfile: sms send error=".$this->error, LOG_ERR);
|
||||
} else {
|
||||
dol_syslog("CSMSFile::sendfile: sms send success with id=".$res, LOG_DEBUG);
|
||||
//var_dump($res); // 1973128
|
||||
if (!empty($conf->global->MAIN_SMS_DEBUG)) {
|
||||
$this->dump_sms_result($res);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$sms = new stdClass();
|
||||
$sms->error = 'The SMS manager "'.$classfile.'" defined into SMS setup MAIN_MODULE_'.strtoupper($sendmode).'_SMS is not found';
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
dol_print_error('', 'Error to get list of senders: '.$e->getMessage());
|
||||
|
|
|
|||
|
|
@ -109,6 +109,21 @@ abstract class CommonDocGenerator
|
|||
public $option_escompte;
|
||||
public $option_credit_note;
|
||||
|
||||
/**
|
||||
* @var int Tab Title Height
|
||||
*/
|
||||
public $tabTitleHeight;
|
||||
|
||||
/**
|
||||
* @var array default title fields style
|
||||
*/
|
||||
public $defaultTitlesFieldsStyle;
|
||||
|
||||
/**
|
||||
* @var array default content fields style
|
||||
*/
|
||||
public $defaultContentsFieldsStyle;
|
||||
|
||||
/**
|
||||
* @var Societe Issuer of document
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -927,7 +927,7 @@ abstract class CommonInvoice extends CommonObject
|
|||
* @param string $type 'direct-debit' or 'bank-transfer'
|
||||
* @param string $sourcetype Source ('facture' or 'supplier_invoice')
|
||||
* @param string $service 'StripeTest', 'StripeLive', ...
|
||||
* @param string $forcestripe To force another stripe env
|
||||
* @param string $forcestripe To force another stripe env: 'cus_account@pk_...:sk_...'
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
public function makeStripeSepaRequest($fuser, $did, $type = 'direct-debit', $sourcetype = 'facture', $service = '', $forcestripe = '')
|
||||
|
|
@ -950,7 +950,7 @@ abstract class CommonInvoice extends CommonObject
|
|||
|
||||
$error = 0;
|
||||
|
||||
dol_syslog(get_class($this)."::makeStripeSepaRequest start", LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::makeStripeSepaRequest start did=".$did." type=".$type." service=".$service." sourcetype=".$sourcetype." forcestripe=".$forcestripe, LOG_DEBUG);
|
||||
|
||||
if ($this->status > self::STATUS_DRAFT && $this->paye == 0) {
|
||||
// Get the default payment mode for BAN payment of the third party
|
||||
|
|
@ -993,8 +993,6 @@ abstract class CommonInvoice extends CommonObject
|
|||
$companypaymentmode = new CompanyPaymentMode($this->db); // table societe_rib
|
||||
$companypaymentmode->fetch($bac->id);
|
||||
|
||||
dol_syslog("makeStripeSepaRequest amount = ".$amount." service=" . $service . " thirdparty_id=" . $this->socid." did=".$did);
|
||||
|
||||
$this->stripechargedone = 0;
|
||||
$this->stripechargeerror = 0;
|
||||
|
||||
|
|
@ -1006,7 +1004,7 @@ abstract class CommonInvoice extends CommonObject
|
|||
|
||||
$this->fetch_thirdparty();
|
||||
|
||||
dol_syslog("--- Process payment request thirdparty_id=" . $this->thirdparty->id . ", thirdparty_name=" . $this->thirdparty->name . " ban id=" . $bac->id, LOG_DEBUG);
|
||||
dol_syslog("--- Process payment request amount=".$amount." thirdparty_id=" . $this->thirdparty->id . ", thirdparty_name=" . $this->thirdparty->name . " ban id=" . $bac->id, LOG_DEBUG);
|
||||
|
||||
//$alreadypayed = $this->getSommePaiement();
|
||||
//$amount_credit_notes_included = $this->getSumCreditNotesUsed();
|
||||
|
|
@ -1099,17 +1097,9 @@ abstract class CommonInvoice extends CommonObject
|
|||
$tmparray = explode('@', $forcestripe);
|
||||
if (! empty($tmparray[1])) {
|
||||
$tmparray2 = explode(':', $tmparray[1]);
|
||||
if (! empty($tmparray2[3])) {
|
||||
$stripearrayofkeysbyenv = array(
|
||||
0=>array(
|
||||
"publishable_key" => $tmparray2[0],
|
||||
"secret_key" => $tmparray2[1]
|
||||
),
|
||||
1=>array(
|
||||
"publishable_key" => $tmparray2[2],
|
||||
"secret_key" => $tmparray2[3]
|
||||
)
|
||||
);
|
||||
if (! empty($tmparray2[1])) {
|
||||
$stripearrayofkeysbyenv[$servicestatus]["publishable_key"] = $tmparray2[0];
|
||||
$stripearrayofkeysbyenv[$servicestatus]["secret_key"] = $tmparray2[1];
|
||||
|
||||
$stripearrayofkeys = $stripearrayofkeysbyenv[$servicestatus];
|
||||
\Stripe\Stripe::setApiKey($stripearrayofkeys['secret_key']);
|
||||
|
|
|
|||
|
|
@ -3715,18 +3715,21 @@ abstract class CommonObject
|
|||
$this->multicurrency_total_ttc += isset($this->revenuestamp) ? ($this->revenuestamp * $multicurrency_tx) : 0;
|
||||
|
||||
// Situations totals
|
||||
if (!empty($this->situation_cycle_ref) && $this->situation_counter > 1 && method_exists($this, 'get_prev_sits') && $this->type != $this::TYPE_CREDIT_NOTE) {
|
||||
$prev_sits = $this->get_prev_sits();
|
||||
if (!empty($this->situation_cycle_ref) && !empty($this->situation_counter) && $this->situation_counter > 1 && method_exists($this, 'get_prev_sits')) {
|
||||
include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||
if ($this->type != Facture::TYPE_CREDIT_NOTE) {
|
||||
$prev_sits = $this->get_prev_sits();
|
||||
|
||||
foreach ($prev_sits as $sit) { // $sit is an object Facture loaded with a fetch.
|
||||
$this->total_ht -= $sit->total_ht;
|
||||
$this->total_tva -= $sit->total_tva;
|
||||
$this->total_localtax1 -= $sit->total_localtax1;
|
||||
$this->total_localtax2 -= $sit->total_localtax2;
|
||||
$this->total_ttc -= $sit->total_ttc;
|
||||
$this->multicurrency_total_ht -= $sit->multicurrency_total_ht;
|
||||
$this->multicurrency_total_tva -= $sit->multicurrency_total_tva;
|
||||
$this->multicurrency_total_ttc -= $sit->multicurrency_total_ttc;
|
||||
foreach ($prev_sits as $sit) { // $sit is an object Facture loaded with a fetch.
|
||||
$this->total_ht -= $sit->total_ht;
|
||||
$this->total_tva -= $sit->total_tva;
|
||||
$this->total_localtax1 -= $sit->total_localtax1;
|
||||
$this->total_localtax2 -= $sit->total_localtax2;
|
||||
$this->total_ttc -= $sit->total_ttc;
|
||||
$this->multicurrency_total_ht -= $sit->multicurrency_total_ht;
|
||||
$this->multicurrency_total_tva -= $sit->multicurrency_total_tva;
|
||||
$this->multicurrency_total_ttc -= $sit->multicurrency_total_ttc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -5380,7 +5383,9 @@ abstract class CommonObject
|
|||
if (isset($this->lines) && is_array($this->lines)) {
|
||||
$nboflines = count($this->lines);
|
||||
for ($i = 0; $i < $nboflines; $i++) {
|
||||
$this->lines[$i] = clone $this->lines[$i];
|
||||
if (is_object($this->lines[$i])) {
|
||||
$this->lines[$i] = clone $this->lines[$i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -9199,15 +9204,21 @@ abstract class CommonObject
|
|||
/**
|
||||
* Function to concat keys of fields
|
||||
*
|
||||
* @param string $alias String of alias of table for fields. For example 't'. It is recommended to use '' and set alias into fields defintion.
|
||||
* @return string list of alias fields
|
||||
* @param string $alias String of alias of table for fields. For example 't'. It is recommended to use '' and set alias into fields defintion.
|
||||
* @param array $excludefields Array of fields to exclude
|
||||
* @return string List of alias fields
|
||||
*/
|
||||
public function getFieldList($alias = '')
|
||||
public function getFieldList($alias = '', $excludefields = array())
|
||||
{
|
||||
$keys = array_keys($this->fields);
|
||||
if (!empty($alias)) {
|
||||
$keys_with_alias = array();
|
||||
foreach ($keys as $fieldname) {
|
||||
if (!empty($excludefields)) {
|
||||
if (in_array($fieldname, $excludefields)) { // The field is excluded and must not be in output
|
||||
continue;
|
||||
}
|
||||
}
|
||||
$keys_with_alias[] = $alias . '.' . $fieldname;
|
||||
}
|
||||
return implode(',', $keys_with_alias);
|
||||
|
|
|
|||
|
|
@ -374,11 +374,9 @@ class Conf
|
|||
$newvalue = '/'.$modulename.'/core/'.$partname.'/';
|
||||
} elseif (in_array($partname, array('models', 'theme'))) {
|
||||
$newvalue = '/'.$modulename.'/';
|
||||
} elseif (in_array($partname, array('sms'))) {
|
||||
$newvalue = '/'.$modulename.'/';
|
||||
} elseif ($value == 1) {
|
||||
$newvalue = '/'.$modulename.'/core/modules/'.$partname.'/'; // ex: partname = societe
|
||||
} else {
|
||||
} else { // $partname can be any other value like 'sms', ...
|
||||
$newvalue = $value;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,6 @@
|
|||
* <dol_value_customer_mail> Replaced by customer mail
|
||||
* <dol_value_customer_phone> Replaced by customer phone
|
||||
* <dol_value_customer_mobile> Replaced by customer mobile
|
||||
* <dol_value_customer_skype> Replaced by customer skype
|
||||
* <dol_value_customer_tax_number> Replaced by customer VAT number
|
||||
* <dol_value_customer_account_balance> Replaced by customer account balance
|
||||
* <dol_value_mysoc_name> Replaced by mysoc name
|
||||
|
|
@ -232,7 +231,6 @@ class dolReceiptPrinter extends Printer
|
|||
'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_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',
|
||||
|
|
|
|||
|
|
@ -553,7 +553,7 @@ class ExtraFields
|
|||
*/
|
||||
public function update($attrname, $label, $type, $length, $elementtype, $unique = 0, $required = 0, $pos = 0, $param = '', $alwayseditable = 0, $perms = '', $list = '', $help = '', $default = '', $computed = '', $entity = '', $langfile = '', $enabled = '1', $totalizable = 0, $printable = 0, $moreparams = array())
|
||||
{
|
||||
global $hookmanager;
|
||||
global $action, $hookmanager;
|
||||
|
||||
if ($elementtype == 'thirdparty') {
|
||||
$elementtype = 'societe';
|
||||
|
|
@ -2077,7 +2077,7 @@ class ExtraFields
|
|||
*/
|
||||
public function setOptionalsFromPost($extralabels, &$object, $onlykey = '', $todefaultifmissing = 0)
|
||||
{
|
||||
global $_POST, $langs;
|
||||
global $conf, $_POST, $langs;
|
||||
|
||||
$nofillrequired = 0; // For error when required field left blank
|
||||
$error_field_required = array();
|
||||
|
|
|
|||
|
|
@ -38,17 +38,17 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/core/class/html.form.class.php
|
||||
* \ingroup core
|
||||
* \brief File of class with all html predefined components
|
||||
* \file htdocs/core/class/html.form.class.php
|
||||
* \ingroup core
|
||||
* \brief File of class with all html predefined components
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Class to manage generation of HTML components
|
||||
* Only common components must be here.
|
||||
* Class to manage generation of HTML components
|
||||
* Only common components must be here.
|
||||
*
|
||||
* TODO Merge all function load_cache_* and loadCache* (except load_cache_vatrates) into one generic function loadCacheTable
|
||||
* TODO Merge all function load_cache_* and loadCache* (except load_cache_vatrates) into one generic function loadCacheTable
|
||||
*/
|
||||
class Form
|
||||
{
|
||||
|
|
@ -94,18 +94,18 @@ class Form
|
|||
/**
|
||||
* Output key field for an editable field
|
||||
*
|
||||
* @param string $text Text of label or key to translate
|
||||
* @param string $htmlname Name of select field ('edit' prefix will be added)
|
||||
* @param string $preselected Value to show/edit (not used in this function)
|
||||
* @param object $object Object (on the page we show)
|
||||
* @param boolean $perm Permission to allow button to edit parameter. Set it to 0 to have a not edited field.
|
||||
* @param string $typeofdata Type of data ('string' by default, 'email', 'amount:99', 'numeric:99', 'text' or 'textarea:rows:cols', 'datepicker' ('day' do not work, don't know why), 'dayhour' or 'datehourpicker' 'checkbox:ckeditor:dolibarr_zzz:width:height:savemethod:1:rows:cols', 'select;xxx[:class]'...)
|
||||
* @param string $moreparam More param to add on a href URL.
|
||||
* @param int $fieldrequired 1 if we want to show field as mandatory using the "fieldrequired" CSS.
|
||||
* @param int $notabletag 1=Do not output table tags but output a ':', 2=Do not output table tags and no ':', 3=Do not output table tags but output a ' '
|
||||
* @param string $paramid Key of parameter for id ('id', 'socid')
|
||||
* @param string $help Tooltip help
|
||||
* @return string HTML edit field
|
||||
* @param string $text Text of label or key to translate
|
||||
* @param string $htmlname Name of select field ('edit' prefix will be added)
|
||||
* @param string $preselected Value to show/edit (not used in this function)
|
||||
* @param object $object Object (on the page we show)
|
||||
* @param boolean $perm Permission to allow button to edit parameter. Set it to 0 to have a not edited field.
|
||||
* @param string $typeofdata Type of data ('string' by default, 'email', 'amount:99', 'numeric:99', 'text' or 'textarea:rows:cols', 'datepicker' ('day' do not work, don't know why), 'dayhour' or 'datehourpicker' 'checkbox:ckeditor:dolibarr_zzz:width:height:savemethod:1:rows:cols', 'select;xxx[:class]'...)
|
||||
* @param string $moreparam More param to add on a href URL.
|
||||
* @param int $fieldrequired 1 if we want to show field as mandatory using the "fieldrequired" CSS.
|
||||
* @param int $notabletag 1=Do not output table tags but output a ':', 2=Do not output table tags and no ':', 3=Do not output table tags but output a ' '
|
||||
* @param string $paramid Key of parameter for id ('id', 'socid')
|
||||
* @param string $help Tooltip help
|
||||
* @return string HTML edit field
|
||||
*/
|
||||
public function editfieldkey($text, $htmlname, $preselected, $object, $perm, $typeofdata = 'string', $moreparam = '', $fieldrequired = 0, $notabletag = 0, $paramid = 'id', $help = '')
|
||||
{
|
||||
|
|
@ -404,13 +404,13 @@ class Form
|
|||
/**
|
||||
* Output edit in place form
|
||||
*
|
||||
* @param string $fieldname Name of the field
|
||||
* @param object $object Object
|
||||
* @param boolean $perm Permission to allow button to edit parameter. Set it to 0 to have a not edited field.
|
||||
* @param string $typeofdata Type of data ('string' by default, 'email', 'amount:99', 'numeric:99', 'text' or 'textarea:rows:cols', 'datepicker' ('day' do not work, don't know why), 'ckeditor:dolibarr_zzz:width:height:savemethod:1:rows:cols', 'select;xxx[:class]'...)
|
||||
* @param string $check Same coe than $check parameter of GETPOST()
|
||||
* @param string $morecss More CSS
|
||||
* @return string HTML code for the edit of alternative language
|
||||
* @param string $fieldname Name of the field
|
||||
* @param object $object Object
|
||||
* @param boolean $perm Permission to allow button to edit parameter. Set it to 0 to have a not edited field.
|
||||
* @param string $typeofdata Type of data ('string' by default, 'email', 'amount:99', 'numeric:99', 'text' or 'textarea:rows:cols', 'datepicker' ('day' do not work, don't know why), 'ckeditor:dolibarr_zzz:width:height:savemethod:1:rows:cols', 'select;xxx[:class]'...)
|
||||
* @param string $check Same coe than $check parameter of GETPOST()
|
||||
* @param string $morecss More CSS
|
||||
* @return string HTML code for the edit of alternative language
|
||||
*/
|
||||
public function widgetForTranslation($fieldname, $object, $perm, $typeofdata = 'string', $check = '', $morecss = '')
|
||||
{
|
||||
|
|
@ -476,15 +476,15 @@ class Form
|
|||
/**
|
||||
* Output edit in place form
|
||||
*
|
||||
* @param object $object Object
|
||||
* @param string $value Value to show/edit
|
||||
* @param string $htmlname DIV ID (field name)
|
||||
* @param int $condition Condition to edit
|
||||
* @param string $inputType Type of input ('string', 'numeric', 'datepicker' ('day' do not work, don't know why), 'textarea:rows:cols', 'ckeditor:dolibarr_zzz:width:height:?:1:rows:cols', 'select:loadmethod:savemethod:buttononly')
|
||||
* @param string $editvalue When in edit mode, use this value as $value instead of value
|
||||
* @param object $extObject External object
|
||||
* @param mixed $custommsg String or Array of custom messages : eg array('success' => 'MyMessage', 'error' => 'MyMessage')
|
||||
* @return string HTML edit in place
|
||||
* @param object $object Object
|
||||
* @param string $value Value to show/edit
|
||||
* @param string $htmlname DIV ID (field name)
|
||||
* @param int $condition Condition to edit
|
||||
* @param string $inputType Type of input ('string', 'numeric', 'datepicker' ('day' do not work, don't know why), 'textarea:rows:cols', 'ckeditor:dolibarr_zzz:width:height:?:1:rows:cols', 'select:loadmethod:savemethod:buttononly')
|
||||
* @param string $editvalue When in edit mode, use this value as $value instead of value
|
||||
* @param object $extObject External object
|
||||
* @param mixed $custommsg String or Array of custom messages : eg array('success' => 'MyMessage', 'error' => 'MyMessage')
|
||||
* @return string HTML edit in place
|
||||
*/
|
||||
protected function editInPlace($object, $value, $htmlname, $condition, $inputType = 'textarea', $editvalue = null, $extObject = null, $custommsg = null)
|
||||
{
|
||||
|
|
@ -917,18 +917,18 @@ class Form
|
|||
/**
|
||||
* Return combo list of activated countries, into language of user
|
||||
*
|
||||
* @param string $selected Id or Code or Label of preselected country
|
||||
* @param string $htmlname Name of html select object
|
||||
* @param string $htmloption More html options on select object
|
||||
* @param integer $maxlength Max length for labels (0=no limit)
|
||||
* @param string $morecss More css class
|
||||
* @param string $usecodeaskey ''=Use id as key (default), 'code3'=Use code on 3 alpha as key, 'code2"=Use code on 2 alpha as key
|
||||
* @param int|string $showempty Show empty choice
|
||||
* @param int $disablefavorites 1=Disable favorites,
|
||||
* @param int $addspecialentries 1=Add dedicated entries for group of countries (like 'European Economic Community', ...)
|
||||
* @param array $exclude_country_code Array of country code (iso2) to exclude
|
||||
* @param int $hideflags Hide flags
|
||||
* @return string HTML string with select
|
||||
* @param string $selected Id or Code or Label of preselected country
|
||||
* @param string $htmlname Name of html select object
|
||||
* @param string $htmloption More html options on select object
|
||||
* @param integer $maxlength Max length for labels (0=no limit)
|
||||
* @param string $morecss More css class
|
||||
* @param string $usecodeaskey ''=Use id as key (default), 'code3'=Use code on 3 alpha as key, 'code2"=Use code on 2 alpha as key
|
||||
* @param int|string $showempty Show empty choice
|
||||
* @param int $disablefavorites 1=Disable favorites,
|
||||
* @param int $addspecialentries 1=Add dedicated entries for group of countries (like 'European Economic Community', ...)
|
||||
* @param array $exclude_country_code Array of country code (iso2) to exclude
|
||||
* @param int $hideflags Hide flags
|
||||
* @return string HTML string with select
|
||||
*/
|
||||
public function select_country($selected = '', $htmlname = 'country_id', $htmloption = '', $maxlength = 0, $morecss = 'minwidth300', $usecodeaskey = '', $showempty = 1, $disablefavorites = 0, $addspecialentries = 0, $exclude_country_code = array(), $hideflags = 0)
|
||||
{
|
||||
|
|
@ -1053,15 +1053,15 @@ class Form
|
|||
/**
|
||||
* Return select list of incoterms
|
||||
*
|
||||
* @param string $selected Id or Code of preselected incoterm
|
||||
* @param string $location_incoterms Value of input location
|
||||
* @param string $page Defined the form action
|
||||
* @param string $htmlname Name of html select object
|
||||
* @param string $htmloption Options html on select object
|
||||
* @param int $forcecombo Force to load all values and output a standard combobox (with no beautification)
|
||||
* @param array $events Event options to run on change. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @param array $disableautocomplete Disable autocomplete
|
||||
* @return string HTML string with select and input
|
||||
* @param string $selected Id or Code of preselected incoterm
|
||||
* @param string $location_incoterms Value of input location
|
||||
* @param string $page Defined the form action
|
||||
* @param string $htmlname Name of html select object
|
||||
* @param string $htmloption Options html on select object
|
||||
* @param int $forcecombo Force to load all values and output a standard combobox (with no beautification)
|
||||
* @param array $events Event options to run on change. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @param array $disableautocomplete Disable autocomplete
|
||||
* @return string HTML string with select and input
|
||||
*/
|
||||
public function select_incoterms($selected = '', $location_incoterms = '', $page = '', $htmlname = 'incoterm_id', $htmloption = '', $forcecombo = 1, $events = array(), $disableautocomplete = 0)
|
||||
{
|
||||
|
|
@ -1140,20 +1140,20 @@ class Form
|
|||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
|
||||
/**
|
||||
* Return list of types of lines (product or service)
|
||||
* Example: 0=product, 1=service, 9=other (for external module)
|
||||
* Return list of types of lines (product or service)
|
||||
* Example: 0=product, 1=service, 9=other (for external module)
|
||||
*
|
||||
* @param string $selected Preselected type
|
||||
* @param string $htmlname Name of field in html form
|
||||
* @param int $showempty Add an empty field
|
||||
* @param int $hidetext Do not show label 'Type' before combo box (used only if there is at least 2 choices to select)
|
||||
* @param integer $forceall 1=Force to show products and services in combo list, whatever are activated modules, 0=No force, 2=Force to show only Products, 3=Force to show only services, -1=Force none (and set hidden field to 'service')
|
||||
* @return void
|
||||
* @param string $selected Preselected type
|
||||
* @param string $htmlname Name of field in html form
|
||||
* @param int $showempty Add an empty field
|
||||
* @param int $hidetext Do not show label 'Type' before combo box (used only if there is at least 2 choices to select)
|
||||
* @param integer $forceall 1=Force to show products and services in combo list, whatever are activated modules, 0=No force, 2=Force to show only Products, 3=Force to show only services, -1=Force none (and set hidden field to 'service')
|
||||
* @return void
|
||||
*/
|
||||
public function select_type_of_lines($selected = '', $htmlname = 'type', $showempty = 0, $hidetext = 0, $forceall = 0)
|
||||
{
|
||||
// phpcs:enable
|
||||
global $langs, $conf;
|
||||
global $langs;
|
||||
|
||||
// If product & services are enabled or both disabled.
|
||||
if ($forceall == 1 || (empty($forceall) && isModEnabled("product") && isModEnabled("service"))
|
||||
|
|
@ -1416,22 +1416,24 @@ class Form
|
|||
}
|
||||
}
|
||||
|
||||
if (preg_match('/[\(\)]/', $filter)) {
|
||||
// If there is one parenthesis inside the criteria, we assume it is an Universal Filter Syntax.
|
||||
$errormsg = '';
|
||||
$filter = forgeSQLFromUniversalSearchCriteria($filter, $errormsg, 1);
|
||||
if ($filter != '') { // If a filter was provided
|
||||
if (preg_match('/[\(\)]/', $filter)) {
|
||||
// If there is one parenthesis inside the criteria, we assume it is an Universal Filter Syntax.
|
||||
$errormsg = '';
|
||||
$filter = forgeSQLFromUniversalSearchCriteria($filter, $errormsg, 1);
|
||||
|
||||
// Redo clean $filter that may contains sql conditions so sql code
|
||||
if (function_exists('testSqlAndScriptInject')) {
|
||||
if (testSqlAndScriptInject($filter, 3) > 0) {
|
||||
$filter = '';
|
||||
return 'SQLInjectionTryDetected';
|
||||
// Redo clean $filter that may contains sql conditions so sql code
|
||||
if (function_exists('testSqlAndScriptInject')) {
|
||||
if (testSqlAndScriptInject($filter, 3) > 0) {
|
||||
$filter = '';
|
||||
return 'SQLInjectionTryDetected';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// If not, we do nothing. We already know that there is no parenthesis
|
||||
// TODO Disallow this case in a future.
|
||||
dol_syslog("Warning, select_thirdparty_list was called with a filter criteria not using the Universal Search Syntax.", LOG_WARNING);
|
||||
}
|
||||
} else {
|
||||
// If not, we do nothing. We already no that there is no parenthesis
|
||||
// TODO Disallow this case in a future.
|
||||
dol_syslog("Warning, select_thirdparty_list was called with a filter criteria not using the Universal Search Syntax.", LOG_WARNING);
|
||||
}
|
||||
|
||||
// We search companies
|
||||
|
|
@ -7458,21 +7460,21 @@ class Form
|
|||
/**
|
||||
* Return list of projects in Ajax if Ajax activated or go to selectTicketsList
|
||||
*
|
||||
* @param int $selected Preselected tickets
|
||||
* @param string $htmlname Name of HTML select field (must be unique in page).
|
||||
* @param string $filtertype To add a filter
|
||||
* @param int $limit Limit on number of returned lines
|
||||
* @param int $status Ticket status
|
||||
* @param string $selected_input_value Value of preselected input text (for use with ajax)
|
||||
* @param int $hidelabel Hide label (0=no, 1=yes, 2=show search icon (before) and placeholder, 3 search icon after)
|
||||
* @param array $ajaxoptions Options for ajax_autocompleter
|
||||
* @param int $socid Thirdparty Id (to get also price dedicated to this customer)
|
||||
* @param string $showempty '' to not show empty line. Translation key to show an empty line. '1' show empty line with no text.
|
||||
* @param int $forcecombo Force to use combo box
|
||||
* @param string $morecss Add more css on select
|
||||
* @param array $selected_combinations Selected combinations. Format: array([attrid] => attrval, [...])
|
||||
* @param string $nooutput No print, return the output into a string
|
||||
* @return string
|
||||
* @param int $selected Preselected tickets
|
||||
* @param string $htmlname Name of HTML select field (must be unique in page).
|
||||
* @param string $filtertype To add a filter
|
||||
* @param int $limit Limit on number of returned lines
|
||||
* @param int $status Ticket status
|
||||
* @param string $selected_input_value Value of preselected input text (for use with ajax)
|
||||
* @param int $hidelabel Hide label (0=no, 1=yes, 2=show search icon (before) and placeholder, 3 search icon after)
|
||||
* @param array $ajaxoptions Options for ajax_autocompleter
|
||||
* @param int $socid Thirdparty Id (to get also price dedicated to this customer)
|
||||
* @param string $showempty '' to not show empty line. Translation key to show an empty line. '1' show empty line with no text.
|
||||
* @param int $forcecombo Force to use combo box
|
||||
* @param string $morecss Add more css on select
|
||||
* @param array $selected_combinations Selected combinations. Format: array([attrid] => attrval, [...])
|
||||
* @param string $nooutput No print, return the output into a string
|
||||
* @return string
|
||||
*/
|
||||
public function selectProjects($selected = '', $htmlname = 'projectid', $filtertype = '', $limit = 0, $status = 1, $selected_input_value = '', $hidelabel = 0, $ajaxoptions = array(), $socid = 0, $showempty = '1', $forcecombo = 0, $morecss = '', $selected_combinations = null, $nooutput = 0)
|
||||
{
|
||||
|
|
@ -7494,6 +7496,7 @@ class Form
|
|||
unset($projecttmpselect);
|
||||
}
|
||||
|
||||
$urloption = '';
|
||||
$out .= ajax_autocompleter($selected, $htmlname, DOL_URL_ROOT . '/projet/ajax/projects.php', $urloption, $conf->global->PRODUIT_USE_SEARCH_TO_SELECT, 1, $ajaxoptions);
|
||||
|
||||
if (empty($hidelabel)) $out .= $langs->trans("RefOrLabel") . ' : ';
|
||||
|
|
@ -8573,7 +8576,7 @@ class Form
|
|||
}
|
||||
|
||||
/**
|
||||
* Show a multiselect form from an array. WARNING: Use this only for short lists.
|
||||
* Show a multiselect form from an array. WARNING: Use this only for short lists.
|
||||
*
|
||||
* @param string $htmlname Name of select
|
||||
* @param array $array Array(key=>value) or Array(key=>array('id'=>key, 'label'=>value, 'color'=> , 'picto'=> , 'labelhtml'=> ))
|
||||
|
|
@ -10603,11 +10606,11 @@ class Form
|
|||
/**
|
||||
* selectModelMail
|
||||
*
|
||||
* @param string $prefix Prefix
|
||||
* @param string $modelType Model type
|
||||
* @param int $default 1=Show also Default mail template
|
||||
* @param int $addjscombo Add js combobox
|
||||
* @return string HTML select string
|
||||
* @param string $prefix Prefix
|
||||
* @param string $modelType Model type
|
||||
* @param int $default 1=Show also Default mail template
|
||||
* @param int $addjscombo Add js combobox
|
||||
* @return string HTML select string
|
||||
*/
|
||||
public function selectModelMail($prefix, $modelType = '', $default = 0, $addjscombo = 0)
|
||||
{
|
||||
|
|
@ -10649,13 +10652,13 @@ class Form
|
|||
/**
|
||||
* Output the buttons to submit a creation/edit form
|
||||
*
|
||||
* @param string $save_label Alternative label for save button
|
||||
* @param string $cancel_label Alternative label for cancel button
|
||||
* @param array $morebuttons Add additional buttons between save and cancel
|
||||
* @param bool $withoutdiv Option to remove enclosing centered div
|
||||
* @param string $morecss More CSS
|
||||
* @param string $dol_openinpopup If the button are shown in a context of a page shown inside a popup, we put here the string name of popup.
|
||||
* @return string Html code with the buttons
|
||||
* @param string $save_label Alternative label for save button
|
||||
* @param string $cancel_label Alternative label for cancel button
|
||||
* @param array $morebuttons Add additional buttons between save and cancel
|
||||
* @param bool $withoutdiv Option to remove enclosing centered div
|
||||
* @param string $morecss More CSS
|
||||
* @param string $dol_openinpopup If the button are shown in a context of a page shown inside a popup, we put here the string name of popup.
|
||||
* @return string Html code with the buttons
|
||||
*/
|
||||
public function buttonsSaveCancel($save_label = 'Save', $cancel_label = 'Cancel', $morebuttons = array(), $withoutdiv = 0, $morecss = '', $dol_openinpopup = '')
|
||||
{
|
||||
|
|
|
|||
|
|
@ -396,7 +396,7 @@ class FormAccounting extends Form
|
|||
|
||||
$num_rows = $this->db->num_rows($resql);
|
||||
|
||||
if ($num_rows == 0 && (empty(getDolGlobalInt('CHARTOFACCOUNTS')) || getDolGlobalInt('CHARTOFACCOUNTS') < 0)) {
|
||||
if ($num_rows == 0 && getDolGlobalInt('CHARTOFACCOUNTS') <= 0) {
|
||||
$langs->load("errors");
|
||||
$showempty = $langs->trans("ErrorYouMustFirstSetupYourChartOfAccount");
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -1594,7 +1594,7 @@ class FormFile
|
|||
public function list_of_autoecmfiles($upload_dir, $filearray, $modulepart, $param, $forcedownload = 0, $relativepath = '', $permissiontodelete = 1, $useinecm = 0, $textifempty = '', $maxlength = 0, $url = '', $addfilterfields = 0)
|
||||
{
|
||||
// phpcs:enable
|
||||
global $user, $conf, $langs, $hookmanager, $form;
|
||||
global $conf, $langs, $hookmanager, $form;
|
||||
global $sortfield, $sortorder;
|
||||
global $search_doc_ref;
|
||||
global $dolibarr_main_url_root;
|
||||
|
|
@ -1815,7 +1815,7 @@ class FormFile
|
|||
}
|
||||
|
||||
$found = 0;
|
||||
if (!empty($this->cache_objects[$modulepart.'_'.$id.'_'.$ref])) {
|
||||
if (!empty($conf->cache['modulepartobject'][$modulepart.'_'.$id.'_'.$ref])) {
|
||||
$found = 1;
|
||||
} else {
|
||||
//print 'Fetch '.$id." - ".$ref.' class='.get_class($object_instance).'<br>';
|
||||
|
|
@ -1840,24 +1840,24 @@ class FormFile
|
|||
|
||||
if ($result > 0) { // Save object loaded into a cache
|
||||
$found = 1;
|
||||
$this->cache_objects[$modulepart.'_'.$id.'_'.$ref] = clone $object_instance;
|
||||
$conf->cache['modulepartobject'][$modulepart.'_'.$id.'_'.$ref] = clone $object_instance;
|
||||
}
|
||||
if ($result == 0) {
|
||||
$found = 1;
|
||||
$this->cache_objects[$modulepart.'_'.$id.'_'.$ref] = 'notfound';
|
||||
$conf->cache['modulepartobject'][$modulepart.'_'.$id.'_'.$ref] = 'notfound';
|
||||
unset($filearray[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($found <= 0 || !is_object($this->cache_objects[$modulepart.'_'.$id.'_'.$ref])) {
|
||||
if ($found <= 0 || !is_object($conf->cache['modulepartobject'][$modulepart.'_'.$id.'_'.$ref])) {
|
||||
continue; // We do not show orphelins files
|
||||
}
|
||||
|
||||
print '<!-- Line list_of_autoecmfiles key='.$key.' -->'."\n";
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>';
|
||||
if ($found > 0 && is_object($this->cache_objects[$modulepart.'_'.$id.'_'.$ref])) {
|
||||
$tmpobject = $this->cache_objects[$modulepart.'_'.$id.'_'.$ref];
|
||||
if ($found > 0 && is_object($conf->cache['modulepartobject'][$modulepart.'_'.$id.'_'.$ref])) {
|
||||
$tmpobject = $conf->cache['modulepartobject'][$modulepart.'_'.$id.'_'.$ref];
|
||||
//if (! in_array($tmpobject->element, array('expensereport'))) {
|
||||
print $tmpobject->getNomUrl(1, 'document');
|
||||
//} else {
|
||||
|
|
|
|||
|
|
@ -208,6 +208,7 @@ class FormMargin
|
|||
public function displayMarginInfos($object, $force_price = false)
|
||||
{
|
||||
global $langs, $conf, $user, $hookmanager;
|
||||
global $action;
|
||||
|
||||
if (!empty($user->socid)) {
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -471,6 +471,7 @@ class FormOther
|
|||
{
|
||||
// phpcs:enable
|
||||
global $conf, $langs, $hookmanager;
|
||||
global $action;
|
||||
|
||||
$langs->load('users');
|
||||
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ class FormSms
|
|||
public function show_form($morecss = 'titlefield', $showform = 1)
|
||||
{
|
||||
// phpcs:enable
|
||||
global $conf, $langs, $user, $form;
|
||||
global $conf, $langs, $form;
|
||||
|
||||
if (!is_object($form)) {
|
||||
$form = new Form($this->db);
|
||||
|
|
@ -185,21 +185,14 @@ function limitChars(textarea, limit, infodiv)
|
|||
print "</td></tr>\n";
|
||||
} else {
|
||||
print '<tr><td class="'.$morecss.'">'.$langs->trans("SmsFrom")."</td><td>";
|
||||
//print '<input type="text" name="fromname" size="30" value="'.$this->fromsms.'">';
|
||||
if ($conf->global->MAIN_SMS_SENDMODE == 'ovh') { // For backward compatibility @deprecated
|
||||
dol_include_once('/ovh/class/ovhsms.class.php');
|
||||
try {
|
||||
$sms = new OvhSms($this->db);
|
||||
if (empty($conf->global->OVHSMS_ACCOUNT)) {
|
||||
$resultsender = 'ErrorOVHSMS_ACCOUNT not defined';
|
||||
} else {
|
||||
$resultsender = $sms->SmsSenderList();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
dol_print_error('', 'Error to get list of senders: '.$e->getMessage());
|
||||
if (getDolGlobalString('MAIN_SMS_SENDMODE')) {
|
||||
$sendmode = getDolGlobalString('MAIN_SMS_SENDMODE'); // $conf->global->MAIN_SMS_SENDMODE looks like a value 'module'
|
||||
$classmoduleofsender = getDolGlobalString('MAIN_MODULE_'.strtoupper($sendmode).'_SMS', $sendmode); // $conf->global->MAIN_MODULE_XXX_SMS looks like a value 'class@module'
|
||||
if ($classmoduleofsender == 'ovh') {
|
||||
$classmoduleofsender = 'ovhsms@ovh'; // For backward compatibility
|
||||
}
|
||||
} elseif (!empty($conf->global->MAIN_SMS_SENDMODE)) { // $conf->global->MAIN_SMS_SENDMODE looks like a value 'class@module'
|
||||
$tmp = explode('@', $conf->global->MAIN_SMS_SENDMODE);
|
||||
|
||||
$tmp = explode('@', $classmoduleofsender);
|
||||
$classfile = $tmp[0];
|
||||
$module = (empty($tmp[1]) ? $tmp[0] : $tmp[1]);
|
||||
dol_include_once('/'.$module.'/class/'.$classfile.'.class.php');
|
||||
|
|
@ -210,7 +203,7 @@ function limitChars(textarea, limit, infodiv)
|
|||
$resultsender = $sms->SmsSenderList();
|
||||
} else {
|
||||
$sms = new stdClass();
|
||||
$sms->error = 'The SMS manager "'.$classfile.'" defined into SMS setup MAIN_SMS_SENDMODE is not found';
|
||||
$sms->error = 'The SMS manager "'.$classfile.'" defined into SMS setup MAIN_MODULE_'.strtoupper($sendmode).'_SMS is not found';
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
dol_print_error('', 'Error to get list of senders: '.$e->getMessage());
|
||||
|
|
|
|||
|
|
@ -53,6 +53,11 @@ class Ldap
|
|||
*/
|
||||
public $connectedServer;
|
||||
|
||||
/**
|
||||
* @var int server port
|
||||
*/
|
||||
public $serverPort;
|
||||
|
||||
/**
|
||||
* Base DN (e.g. "dc=foo,dc=com")
|
||||
*/
|
||||
|
|
@ -72,6 +77,11 @@ class Ldap
|
|||
|
||||
public $domainFQDN;
|
||||
|
||||
/**
|
||||
* @var int bind
|
||||
*/
|
||||
public $bind;
|
||||
|
||||
/**
|
||||
* User administrateur Ldap
|
||||
* Active Directory ne supporte pas les connexions anonymes
|
||||
|
|
@ -99,13 +109,74 @@ class Ldap
|
|||
*/
|
||||
public $ldapErrorText;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $filter;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $filtergroup;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $filtermember;
|
||||
|
||||
/**
|
||||
* @var string attr_login
|
||||
*/
|
||||
public $attr_login;
|
||||
|
||||
/**
|
||||
* @var string attr_sambalogin
|
||||
*/
|
||||
public $attr_sambalogin;
|
||||
|
||||
/**
|
||||
* @var string attr_name
|
||||
*/
|
||||
public $attr_name;
|
||||
|
||||
/**
|
||||
* @var string attr_firstname
|
||||
*/
|
||||
public $attr_firstname;
|
||||
|
||||
/**
|
||||
* @var string attr_mail
|
||||
*/
|
||||
public $attr_mail;
|
||||
|
||||
/**
|
||||
* @var string attr_phone
|
||||
*/
|
||||
public $attr_phone;
|
||||
|
||||
/**
|
||||
* @var string attr_fax
|
||||
*/
|
||||
public $attr_fax;
|
||||
|
||||
/**
|
||||
* @var string attr_mobile
|
||||
*/
|
||||
public $attr_mobile;
|
||||
|
||||
/**
|
||||
* @var int badpwdtime
|
||||
*/
|
||||
public $badpwdtime;
|
||||
|
||||
/**
|
||||
* @var string ladpUserDN
|
||||
*/
|
||||
public $ldapUserDN;
|
||||
|
||||
//Fetch user
|
||||
public $name;
|
||||
public $firstname;
|
||||
public $login;
|
||||
public $phone;
|
||||
public $skype;
|
||||
public $fax;
|
||||
public $mail;
|
||||
public $mobile;
|
||||
|
|
@ -177,7 +248,6 @@ class Ldap
|
|||
$this->attr_firstname = getDolGlobalString('LDAP_FIELD_FIRSTNAME');
|
||||
$this->attr_mail = getDolGlobalString('LDAP_FIELD_MAIL');
|
||||
$this->attr_phone = getDolGlobalString('LDAP_FIELD_PHONE');
|
||||
$this->attr_skype = getDolGlobalString('LDAP_FIELD_SKYPE');
|
||||
$this->attr_fax = getDolGlobalString('LDAP_FIELD_FAX');
|
||||
$this->attr_mobile = getDolGlobalString('LDAP_FIELD_MOBILE');
|
||||
}
|
||||
|
|
@ -1389,13 +1459,13 @@ class Ldap
|
|||
public function parseSAT($samtype)
|
||||
{
|
||||
$stypes = array(
|
||||
805306368 => "NORMAL_ACCOUNT",
|
||||
805306369 => "WORKSTATION_TRUST",
|
||||
805306370 => "INTERDOMAIN_TRUST",
|
||||
268435456 => "SECURITY_GLOBAL_GROUP",
|
||||
268435457 => "DISTRIBUTION_GROUP",
|
||||
536870912 => "SECURITY_LOCAL_GROUP",
|
||||
536870913 => "DISTRIBUTION_LOCAL_GROUP"
|
||||
805306368 => "NORMAL_ACCOUNT",
|
||||
805306369 => "WORKSTATION_TRUST",
|
||||
805306370 => "INTERDOMAIN_TRUST",
|
||||
268435456 => "SECURITY_GLOBAL_GROUP",
|
||||
268435457 => "DISTRIBUTION_GROUP",
|
||||
536870912 => "SECURITY_LOCAL_GROUP",
|
||||
536870913 => "DISTRIBUTION_LOCAL_GROUP"
|
||||
);
|
||||
|
||||
$retval = "";
|
||||
|
|
|
|||
|
|
@ -37,6 +37,11 @@ abstract class Stats
|
|||
* @var string To store the FROM part of the main table of the SQL request
|
||||
*/
|
||||
public $from;
|
||||
|
||||
/**
|
||||
* @var string To store the WHERE part of the main table of the SQL request
|
||||
*/
|
||||
public $where;
|
||||
/**
|
||||
* @var string To store the FROM part of the line table of the SQL request
|
||||
*/
|
||||
|
|
@ -54,6 +59,20 @@ abstract class Stats
|
|||
*/
|
||||
public $field_line;
|
||||
|
||||
/**
|
||||
* @var string error message
|
||||
*/
|
||||
public $error;
|
||||
|
||||
/**
|
||||
* @var int year
|
||||
*/
|
||||
public $year;
|
||||
|
||||
/**
|
||||
* @var int month
|
||||
*/
|
||||
public $month;
|
||||
|
||||
/**
|
||||
* @param int $year number
|
||||
|
|
|
|||
|
|
@ -1357,14 +1357,14 @@ function complete_dictionary_with_modules(&$taborder, &$tabname, &$tablib, &$tab
|
|||
|
||||
// We discard modules according to features level (PS: if module is activated we always show it)
|
||||
$const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i', '', get_class($objMod)));
|
||||
if ($objMod->version == 'development' && getDolGlobalInt('MAIN_FEATURES_LEVEL') < 2 && empty(getDolGlobalString($const_name))) {
|
||||
if ($objMod->version == 'development' && getDolGlobalInt('MAIN_FEATURES_LEVEL') < 2 && !getDolGlobalString($const_name)) {
|
||||
$modulequalified = 0;
|
||||
}
|
||||
if ($objMod->version == 'experimental' && getDolGlobalInt('MAIN_FEATURES_LEVEL') < 1 && empty(getDolGlobalString($const_name))) {
|
||||
if ($objMod->version == 'experimental' && getDolGlobalInt('MAIN_FEATURES_LEVEL') < 1 && !getDolGlobalString($const_name)) {
|
||||
$modulequalified = 0;
|
||||
}
|
||||
//If module is not activated disqualified
|
||||
if (empty(getDolGlobalString($const_name))) {
|
||||
// If module is not activated disqualified
|
||||
if (!getDolGlobalString($const_name)) {
|
||||
$modulequalified = 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1333,7 +1333,7 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disable
|
|||
*/
|
||||
function dol_delete_file($file, $disableglob = 0, $nophperrors = 0, $nohook = 0, $object = null, $allowdotdot = false, $indexdatabase = 1, $nolog = 0)
|
||||
{
|
||||
global $db, $conf, $user, $langs;
|
||||
global $db, $user, $langs;
|
||||
global $hookmanager;
|
||||
|
||||
// Load translation files required by the page
|
||||
|
|
@ -1351,7 +1351,7 @@ function dol_delete_file($file, $disableglob = 0, $nophperrors = 0, $nohook = 0,
|
|||
}
|
||||
|
||||
$reshook = 0;
|
||||
if (empty($nohook)) {
|
||||
if (empty($nohook) && !empty($hookmanager)) {
|
||||
$hookmanager->initHooks(array('fileslib'));
|
||||
|
||||
$parameters = array(
|
||||
|
|
|
|||
|
|
@ -3277,11 +3277,11 @@ function getArrayOfSocialNetworks()
|
|||
/**
|
||||
* Show social network link
|
||||
*
|
||||
* @param string $value Skype to show (only skype, without 'Name of recipient' before)
|
||||
* @param string $value Social network ID to show (only skype, without 'Name of recipient' before)
|
||||
* @param int $cid Id of contact if known
|
||||
* @param int $socid Id of third party if known
|
||||
* @param string $type 'skype','facebook',...
|
||||
* @param array $dictsocialnetworks socialnetworks availables
|
||||
* @param array $dictsocialnetworks List of socialnetworks availables
|
||||
* @return string HTML Link
|
||||
*/
|
||||
function dol_print_socialnetworks($value, $cid, $socid, $type, $dictsocialnetworks = array())
|
||||
|
|
|
|||
|
|
@ -621,7 +621,7 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName = '_small',
|
|||
}
|
||||
|
||||
// Before PHP8, img was a resource, With PHP8, it is a GdImage
|
||||
if (!is_resource($img) && !($img instanceof GdImage)) {
|
||||
if (!is_resource($img) && class_exists('GdImage') && !($img instanceof GdImage)) {
|
||||
dol_syslog('Failed to detect type of image. We found infoImg[2]='.$infoImg[2], LOG_WARNING);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ function invoice_admin_prepare_head()
|
|||
$head[$h][2] = 'attributeslinesrec';
|
||||
$h++;
|
||||
|
||||
if (!empty($conf->global->INVOICE_USE_SITUATION)) { // Warning, implementation is seriously bugged and a new one not compatible is expected to become stable
|
||||
if (getDolGlobalInt('INVOICE_USE_SITUATION') > 0) { // Warning, implementation with value 1 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';
|
||||
|
|
|
|||
|
|
@ -224,7 +224,7 @@ class doc_generic_reception_odt extends ModelePdfReception
|
|||
|
||||
$outputlangs->loadLangs(array("main", "dict", "companies", "bills"));
|
||||
|
||||
if ($conf->reception->dir_output."/reception") {
|
||||
if ($conf->reception->dir_output) {
|
||||
// If $object is id instead of object
|
||||
if (!is_object($object)) {
|
||||
$id = $object;
|
||||
|
|
@ -238,7 +238,7 @@ class doc_generic_reception_odt extends ModelePdfReception
|
|||
|
||||
$object->fetch_thirdparty();
|
||||
|
||||
$dir = $conf->reception->dir_output."/reception";
|
||||
$dir = !empty($conf->reception->multidir_output[$object->entity]) ? $conf->reception->multidir_output[$object->entity] : $conf->reception->dir_output;
|
||||
$objectref = dol_sanitizeFileName($object->ref);
|
||||
if (!preg_match('/specimen/i', $objectref)) {
|
||||
$dir .= "/".$objectref;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
/* Copyright (C) 2018 Quentin Vial-Gouteyron <quentin.vial-gouteyron@atm-consulting.fr>
|
||||
/* Copyright (C) 2018 Quentin Vial-Gouteyron <quentin.vial-gouteyron@atm-consulting.fr>
|
||||
* Copyright (C) 2023 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -37,6 +38,26 @@ class pdf_squille extends ModelePdfReception
|
|||
*/
|
||||
public $version = 'dolibarr';
|
||||
|
||||
/**
|
||||
* @var int posx weight vol
|
||||
*/
|
||||
public $posxweightvol;
|
||||
|
||||
/**
|
||||
* @var int posx qty ordered
|
||||
*/
|
||||
public $posxqtyordered;
|
||||
|
||||
/**
|
||||
* @var int posx qty to ship
|
||||
*/
|
||||
public $posxqtytoship;
|
||||
|
||||
/**
|
||||
* @var int posx totalht
|
||||
*/
|
||||
public $posxtotalht;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
|
|
@ -617,7 +638,7 @@ class pdf_squille extends ModelePdfReception
|
|||
* Show total to pay
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Facture $object Object invoice
|
||||
* @param Reception $object Object reception
|
||||
* @param int $deja_regle Montant deja regle
|
||||
* @param int $posy Position depart
|
||||
* @param Translate $outputlangs Objet langs
|
||||
|
|
@ -829,7 +850,7 @@ class pdf_squille extends ModelePdfReception
|
|||
* Show top header of page.
|
||||
*
|
||||
* @param TCPDF $pdf Object PDF
|
||||
* @param Object $object Object to show
|
||||
* @param Reception $object Object to show
|
||||
* @param int $showaddress 0=no, 1=yes
|
||||
* @param Translate $outputlangs Object lang for output
|
||||
* @return void
|
||||
|
|
|
|||
|
|
@ -273,7 +273,7 @@ if ($action == 'presend') {
|
|||
if (is_object($object) && is_object($object->thirdparty)) {
|
||||
$checkRead= '<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php';
|
||||
$checkRead.='?tag='.(!empty($object->thirdparty->tag)?urlencode($object->thirdparty->tag):"");
|
||||
$checkRead.='&securitykey='.(!empty(getDolGlobalString('MAILING_EMAIL_UNSUBSCRIBE_KEY'))?urlencode(getDolGlobalString('MAILING_EMAIL_UNSUBSCRIBE_KEY')):"");
|
||||
$checkRead.='&securitykey='.(getDolGlobalString('MAILING_EMAIL_UNSUBSCRIBE_KEY') ? urlencode(getDolGlobalString('MAILING_EMAIL_UNSUBSCRIBE_KEY')) : "");
|
||||
$checkRead.='" width="1" height="1" style="width:1px;height:1px" border="0"/>';
|
||||
$substitutionarray['__CHECK_READ__'] = $checkRead;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -246,7 +246,7 @@ class InterfaceWorkflowManager extends DolibarrTriggers
|
|||
if (!empty($object->linkedObjects)) {
|
||||
$totalonlinkedelements = 0;
|
||||
foreach ($object->linkedObjects['supplier_proposal'] as $element) {
|
||||
if ($element->statut == SupplierProposal::STATUS_SIGNED || $element->statut == SupplierProposal::STATUS_BILLED) {
|
||||
if ($element->statut == SupplierProposal::STATUS_SIGNED || $element->statut == SupplierProposal::STATUS_CLOSE) {
|
||||
$totalonlinkedelements += $element->total_ht;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1077,19 +1077,16 @@ class Evaluation extends CommonObject
|
|||
$return .= '<div class="info-box-content">';
|
||||
$return .= '<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
||||
$return .= '<input class="fright" id="cb'.$this->id.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||
if (property_exists($this, 'fk_user') && !(empty($this->fk_user))) {
|
||||
$return .= '<br><span class="info-box-label opacitymedium">'.$langs->trans("Employee").'</span> : ';
|
||||
$return .= '<span class="info-box-label ">'.$this->fk_user.'</span>';
|
||||
if (!empty($arraydata['user'])) {
|
||||
$return .= '<br><span class="info-box-label ">'.$arraydata['user'].'</span>';
|
||||
}
|
||||
if (property_exists($this, 'fk_job') && !(empty($this->fk_job))) {
|
||||
$return .= '<br><span class="info-box-label opacitymedium">'.$langs->trans("Job").'</span> : ';
|
||||
$return .= '<span class="info-box-label ">'.$this->fk_job.'</span>';
|
||||
if (!empty($arraydata['job'])) {
|
||||
$return .= '<br><span class="info-box-label ">'.$arraydata['job'].'</span>';
|
||||
}
|
||||
|
||||
if (method_exists($this, 'getLibStatut')) {
|
||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||
}
|
||||
$return .= '</span>';
|
||||
$return .= '</div>';
|
||||
$return .= '</div>';
|
||||
$return .= '</div>';
|
||||
return $return;
|
||||
|
|
|
|||
|
|
@ -728,7 +728,7 @@ class Job extends CommonObject
|
|||
|
||||
$result = '';
|
||||
|
||||
$label = img_picto('', $this->picto).' <u>'.$langs->trans("Job").'</u>';
|
||||
$label = img_picto('', $this->picto).' <u>'.$langs->trans("JobProfile").'</u>';
|
||||
if (isset($this->status)) {
|
||||
$label .= ' '.$this->getLibStatut(5);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,17 +105,17 @@ class Position extends CommonObject
|
|||
public $fields=array(
|
||||
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>2, 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
||||
//'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>20, 'notnull'=>1, 'visible'=>1, 'index'=>1, 'searchall'=>1, 'showoncombobox'=>'1', 'comment'=>"Reference of object"),
|
||||
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>3,),
|
||||
'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2,),
|
||||
'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>'1', 'position'=>501, 'notnull'=>0, 'visible'=>-2,),
|
||||
'fk_contrat' => array('type'=>'integer:Contrat:contrat/class/contrat.class.php', 'label'=>'fk_contrat', 'enabled'=>'1', 'position'=>50, 'notnull'=>0, 'visible'=>0,),
|
||||
'fk_contrat' => array('type'=>'integer:Contrat:contrat/class/contrat.class.php', 'label'=>'fk_contrat', 'enabled'=>'isModEnabled("contract")', 'position'=>50, 'notnull'=>0, 'visible'=>0,),
|
||||
'fk_user' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Employee', 'enabled'=>'1', 'position'=>55, 'notnull'=>1, 'visible'=>1, 'default'=>0),
|
||||
'fk_job' => array('type'=>'integer:Job:/hrm/class/job.class.php', 'label'=>'JobProfile', 'enabled'=>'1', 'position'=>56, 'notnull'=>1, 'visible'=>1,),
|
||||
'date_start' => array('type'=>'date', 'label'=>'DateStart', 'enabled'=>'1', 'position'=>51, 'notnull'=>1, 'visible'=>1,),
|
||||
'date_end' => array('type'=>'date', 'label'=>'DateEnd', 'enabled'=>'1', 'position'=>52, 'notnull'=>0, 'visible'=>1,),
|
||||
'date_start' => array('type'=>'date', 'label'=>'DateStart', 'enabled'=>'1', 'position'=>101, 'notnull'=>1, 'visible'=>1,),
|
||||
'date_end' => array('type'=>'date', 'label'=>'DateEnd', 'enabled'=>'1', 'position'=>102, 'notnull'=>0, 'visible'=>1,),
|
||||
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>'1', 'position'=>120, 'notnull'=>0, 'visible'=>3,),
|
||||
'abort_comment' => array('type'=>'varchar(255)', 'label'=>'AbandonmentComment', 'enabled'=>'getDolGlobalInt("HRM_JOB_POSITON_ENDING_COMMENT")', 'position'=>502, 'notnull'=>0, 'visible'=>1,),
|
||||
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>70, 'notnull'=>0, 'visible'=>0,),
|
||||
'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>'1', 'position'=>71, 'notnull'=>0, 'visible'=>0,),
|
||||
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>151, 'notnull'=>0, 'visible'=>0,),
|
||||
'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>'1', 'position'=>152, 'notnull'=>0, 'visible'=>0,),
|
||||
'fk_user_creat' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserAuthor', 'enabled'=>'1', 'position'=>510, 'notnull'=>1, 'visible'=>-2, 'foreignkey'=>'user.rowid',),
|
||||
'fk_user_modif' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModif', 'enabled'=>'1', 'position'=>511, 'notnull'=>-1, 'visible'=>-2,),
|
||||
);
|
||||
|
|
@ -687,12 +687,12 @@ class Position extends CommonObject
|
|||
/**
|
||||
* Return a link to the object card (with optionaly the picto)
|
||||
*
|
||||
* @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto)
|
||||
* @param string $option On what the link point to ('nolink', ...)
|
||||
* @param int $notooltip 1=Disable tooltip
|
||||
* @param string $morecss Add more css on link
|
||||
* @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking
|
||||
* @return string String with URL
|
||||
* @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto)
|
||||
* @param string $option On what the link point to ('nolink', ...)
|
||||
* @param int $notooltip 1=Disable tooltip
|
||||
* @param string $morecss Add more css on link
|
||||
* @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking
|
||||
* @return string String with URL
|
||||
*/
|
||||
public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $morecss = '', $save_lastsearch_value = -1)
|
||||
{
|
||||
|
|
@ -1140,13 +1140,12 @@ class Position extends CommonObject
|
|||
$return .= '<div class="info-box-content">';
|
||||
$return .= '<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
||||
$return .= '<input class="fright" id="cb'.$this->id.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||
if (property_exists($this, 'fk_user') && !(empty($this->fk_user))) {
|
||||
$return .= '<br><span class="info-box-label opacitymedium">'.$langs->trans("Employee").'</span> : ';
|
||||
$return .= '<span class="info-box-label ">'.$this->fk_user.'</span>';
|
||||
if (!empty($arraydata['user'])) {
|
||||
$return .= '<br><span class="info-box-label ">'.$arraydata['user'].'</span>';
|
||||
}
|
||||
if (property_exists($this, 'fk_job') && !(empty($this->fk_job))) {
|
||||
$return .= '<br><span class="info-box-label opacitymedium">'.$langs->trans("Job").'</span> : ';
|
||||
$return .= '<span class="info-box-label ">'.$this->fk_job.'</span>';
|
||||
if (!empty($arraydata['job'])) {
|
||||
//$return .= '<br><span class="info-box-label opacitymedium">'.$langs->trans("JobProfile").'</span> : ';
|
||||
$return .= '<br><span class="info-box-label ">'.$arraydata['job'].'</span>';
|
||||
}
|
||||
if (property_exists($this, 'date_start') && property_exists($this, 'date_end')) {
|
||||
$return .= '<br><div class ="margintoponly"><span class="info-box-label ">'.dol_print_date($this->db->jdate($this->date_start), 'day').'</span>';
|
||||
|
|
|
|||
|
|
@ -553,7 +553,7 @@ class Skill extends CommonObject
|
|||
*/
|
||||
public function validate($user, $notrigger = 0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
global $conf;
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
|
||||
|
|
@ -887,6 +887,10 @@ class Skill extends CommonObject
|
|||
*/
|
||||
public function LibStatut($status, $mode = 0)
|
||||
{
|
||||
if (empty($status)) {
|
||||
$status = 0;
|
||||
}
|
||||
|
||||
// phpcs:enable
|
||||
if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
|
||||
global $langs;
|
||||
|
|
|
|||
|
|
@ -472,9 +472,12 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||
print '<table id="tablelines" class="noborder noshadow" width="100%">';
|
||||
}
|
||||
|
||||
//if (!empty($object->lines)) {
|
||||
$object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1);
|
||||
//}
|
||||
|
||||
$object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1);
|
||||
|
||||
if (empty($object->lines)) {
|
||||
print '<tr><td colspan="4"><span class="opacitymedium">'.img_warning().' '.$langs->trans("TheJobProfileHasNoSkillsDefinedFixBefore").'</td></tr>';
|
||||
}
|
||||
|
||||
// Form to add new line
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -467,16 +467,22 @@ if (!empty($moreforfilter)) {
|
|||
}
|
||||
|
||||
$varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage;
|
||||
$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
|
||||
$selectedfields = ($mode != 'kanban' ? $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')) : ''); // This also change content of $arrayfields
|
||||
$selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : '');
|
||||
|
||||
print '<div class="div-table-responsive">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
|
||||
print '<table class="tagtable nobottomiftotal liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
|
||||
|
||||
|
||||
// Fields title search
|
||||
// --------------------------------------------------------------------
|
||||
print '<tr class="liste_titre">';
|
||||
// Action column
|
||||
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||
print '<td class="liste_titre maxwidthsearch">';
|
||||
$searchpicto = $form->showFilterButtons();
|
||||
print $searchpicto;
|
||||
print '</td>';
|
||||
}
|
||||
foreach ($object->fields as $key => $val) {
|
||||
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
|
||||
if ($key == 'status') {
|
||||
|
|
@ -515,10 +521,12 @@ $parameters = array('arrayfields'=>$arrayfields);
|
|||
$reshook = $hookmanager->executeHooks('printFieldListOption', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
// Action column
|
||||
print '<td class="liste_titre maxwidthsearch">';
|
||||
$searchpicto = $form->showFilterButtons();
|
||||
print $searchpicto;
|
||||
print '</td>';
|
||||
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||
print '<td class="liste_titre maxwidthsearch">';
|
||||
$searchpicto = $form->showFilterButtons();
|
||||
print $searchpicto;
|
||||
print '</td>';
|
||||
}
|
||||
print '</tr>'."\n";
|
||||
|
||||
$totalarray = array();
|
||||
|
|
@ -527,6 +535,11 @@ $totalarray['nbfield'] = 0;
|
|||
// Fields title label
|
||||
// --------------------------------------------------------------------
|
||||
print '<tr class="liste_titre">';
|
||||
// Action column
|
||||
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||
print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n";
|
||||
$totalarray['nbfield']++;
|
||||
}
|
||||
foreach ($object->fields as $key => $val) {
|
||||
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
|
||||
if ($key == 'status') {
|
||||
|
|
@ -550,8 +563,10 @@ $parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$
|
|||
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
// Action column
|
||||
print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n";
|
||||
$totalarray['nbfield']++;
|
||||
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||
print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n";
|
||||
$totalarray['nbfield']++;
|
||||
}
|
||||
print '</tr>'."\n";
|
||||
|
||||
|
||||
|
|
@ -603,8 +618,8 @@ while ($i < $imaxinloop) {
|
|||
if (in_array($object->id, $arrayofselected)) {
|
||||
$selected = 1;
|
||||
}
|
||||
print $object->getKanbanView('', array('user'=>$userstatic->getNomUrl(1), 'job'=>$job->getNomUrl(1), 'selected' => in_array($object->id, $arrayofselected)));
|
||||
}
|
||||
print $object->getKanbanView('', array('user'=>$userstatic->getNomUrl(-1), 'job'=>$job->getNomUrl(1), 'selected' => $selected));
|
||||
if ($i == ($imaxinloop - 1)) {
|
||||
print '</div>';
|
||||
print '</td></tr>';
|
||||
|
|
@ -612,6 +627,21 @@ while ($i < $imaxinloop) {
|
|||
} else {
|
||||
// Show here line of result
|
||||
print '<tr class="oddeven">';
|
||||
// Action column
|
||||
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||
print '<td class="nowrap center">';
|
||||
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||
$selected = 0;
|
||||
if (in_array($object->id, $arrayofselected)) {
|
||||
$selected = 1;
|
||||
}
|
||||
print '<input id="cb'.$object->id.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$object->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||
}
|
||||
print '</td>';
|
||||
if (!$i) {
|
||||
$totalarray['nbfield']++;
|
||||
}
|
||||
}
|
||||
foreach ($object->fields as $key => $val) {
|
||||
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
|
||||
if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) {
|
||||
|
|
@ -665,19 +695,20 @@ while ($i < $imaxinloop) {
|
|||
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
// Action column
|
||||
print '<td class="nowrap center">';
|
||||
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||
$selected = 0;
|
||||
if (in_array($object->id, $arrayofselected)) {
|
||||
$selected = 1;
|
||||
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||
print '<td class="nowrap center">';
|
||||
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||
$selected = 0;
|
||||
if (in_array($object->id, $arrayofselected)) {
|
||||
$selected = 1;
|
||||
}
|
||||
print '<input id="cb'.$object->id.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$object->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||
}
|
||||
print '</td>';
|
||||
if (!$i) {
|
||||
$totalarray['nbfield']++;
|
||||
}
|
||||
print '<input id="cb'.$object->id.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$object->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||
}
|
||||
print '</td>';
|
||||
if (!$i) {
|
||||
$totalarray['nbfield']++;
|
||||
}
|
||||
|
||||
print '</tr>'."\n";
|
||||
}
|
||||
|
||||
|
|
@ -695,7 +726,7 @@ if ($num == 0) {
|
|||
$colspan++;
|
||||
}
|
||||
}
|
||||
print '<tr><td colspan="'.$colspan.'" class="opacitymedium">'.$langs->trans("NoRecordFound").'</td></tr>';
|
||||
print '<tr><td colspan="'.$colspan.'"><span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span></td></tr>';
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ llxHeader('', $title, $help_url);
|
|||
|
||||
// Part to create
|
||||
if ($action == 'create') {
|
||||
print load_fiche_titre($langs->trans("NewObject", $langs->transnoentities('Job')), '', 'object_' . $object->picto);
|
||||
print load_fiche_titre($langs->trans("NewJobProfile", $langs->transnoentities('Job')), '', 'object_' . $object->picto);
|
||||
|
||||
print '<form method="POST" action="' . $_SERVER["PHP_SELF"] . '">';
|
||||
print '<input type="hidden" name="token" value="' . newToken() . '">';
|
||||
|
|
@ -220,7 +220,7 @@ if ($action == 'create') {
|
|||
|
||||
// Part to edit record
|
||||
if (($id || $ref) && $action == 'edit') {
|
||||
print load_fiche_titre($langs->trans("Job"), '', 'object_' . $object->picto);
|
||||
print load_fiche_titre($langs->trans("JobProfile"), '', 'object_' . $object->picto);
|
||||
|
||||
print '<form method="POST" action="' . $_SERVER["PHP_SELF"] . '">';
|
||||
print '<input type="hidden" name="token" value="' . newToken() . '">';
|
||||
|
|
|
|||
|
|
@ -46,11 +46,35 @@ function jobPrepareHead($object)
|
|||
|
||||
$head[$h][0] = DOL_URL_ROOT."/hrm/skill_tab.php?id=".$object->id.'&objecttype=job';
|
||||
$head[$h][1] = $langs->trans("RequiredSkills");
|
||||
$nbResources = 0;
|
||||
$sql = "SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX."hrm_skillrank WHERE objecttype = 'job' AND fk_object = ".((int) $object->id);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql) {
|
||||
$obj = $db->fetch_object($resql);
|
||||
if ($obj) {
|
||||
$nbResources = $obj->nb;
|
||||
}
|
||||
}
|
||||
if ($nbResources > 0) {
|
||||
$head[$h][1] .= (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '<span class="badge marginleftonlyshort">'.($nbResources).'</span>' : '');
|
||||
}
|
||||
$head[$h][2] = 'skill_tab';
|
||||
$h++;
|
||||
|
||||
$head[$h][0] = DOL_URL_ROOT."/hrm/position.php?fk_job=".$object->id;
|
||||
$head[$h][1] = $langs->trans("EmployeesInThisPosition");
|
||||
$head[$h][1] = $langs->trans("PositionsWithThisProfile");
|
||||
$nbResources = 0;
|
||||
$sql = "SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX."hrm_job_user WHERE fk_job = ".((int) $object->id);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql) {
|
||||
$obj = $db->fetch_object($resql);
|
||||
if ($obj) {
|
||||
$nbResources = $obj->nb;
|
||||
}
|
||||
}
|
||||
if ($nbResources > 0) {
|
||||
$head[$h][1] .= (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '<span class="badge marginleftonlyshort">'.($nbResources).'</span>' : '');
|
||||
}
|
||||
$head[$h][2] = 'position';
|
||||
$h++;
|
||||
|
||||
|
|
|
|||
|
|
@ -49,8 +49,16 @@ $cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button
|
|||
$toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list
|
||||
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'jobpositionlist'; // To manage different context of search
|
||||
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
|
||||
$id = GETPOST('id', 'int');
|
||||
$fk_job = GETPOST('fk_job', 'int');
|
||||
$backtopage = GETPOST('backtopage', 'alpha');
|
||||
$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
|
||||
|
||||
$id = GETPOST('id', 'int');
|
||||
$ref = GETPOST('ref', 'alpha');
|
||||
$fk_job = GETPOST('fk_job', 'int');
|
||||
$fk_user = GETPOST('fk_user', 'int');
|
||||
//$start_date = date('Y-m-d', GETPOST('date_startyear', 'int').'-'.GETPOST('date_startmonth', 'int').'-'.GETPOST('date_startday', 'int'));
|
||||
$start_date = dol_mktime(0, 0, 0, GETPOST('date_startmonth', 'int'), GETPOST('date_startday', 'int'), GETPOST('date_startyear', 'int'));
|
||||
|
||||
|
||||
// Load variable for pagination
|
||||
$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
|
||||
|
|
@ -65,28 +73,13 @@ $offset = $limit * $page;
|
|||
$pageprev = $page - 1;
|
||||
$pagenext = $page + 1;
|
||||
|
||||
// Get parameters
|
||||
$id = GETPOST('fk_job', 'int');
|
||||
$ref = GETPOST('ref', 'alpha');
|
||||
$fk_job = GETPOST('fk_job', 'int');
|
||||
$fk_user = GETPOST('fk_user', 'int');
|
||||
//$start_date = date('Y-m-d', GETPOST('date_startyear', 'int').'-'.GETPOST('date_startmonth', 'int').'-'.GETPOST('date_startday', 'int'));
|
||||
$start_date = dol_mktime(0, 0, 0, GETPOST('date_startmonth', 'int'), GETPOST('date_startday', 'int'), GETPOST('date_startyear', 'int'));
|
||||
|
||||
$action = GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'; // The action 'add', 'create', 'edit', 'update', 'view', ...
|
||||
$backtopage = GETPOST('backtopage', 'alpha');
|
||||
$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
|
||||
$fk_job = GETPOST('fk_job', 'int');
|
||||
|
||||
// Initialize technical objects
|
||||
$object = new Job($db);
|
||||
$objectposition = new Position($db);
|
||||
|
||||
$extrafields = new ExtraFields($db);
|
||||
|
||||
$diroutputmassaction = $conf->hrm->dir_output . '/temp/massgeneration/' . $user->id;
|
||||
|
||||
$hookmanager->initHooks(array('jobpositionlist', 'globalcard')); // Note that conf->hooks_modules contains array
|
||||
$hookmanager->initHooks(array('jobpositioncard', 'globalcard')); // Note that conf->hooks_modules contains array
|
||||
|
||||
|
||||
// Fetch optionals attributes and labels
|
||||
|
|
@ -163,8 +156,12 @@ $upload_dir = $conf->hrm->multidir_output[isset($object->entity) ? $object->enti
|
|||
//if ($user->socid > 0) $socid = $user->socid;
|
||||
//$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0);
|
||||
//restrictedArea($user, $object->element, $object->id, $object->table_element, '', 'fk_soc', 'rowid', $isdraft);
|
||||
if (empty($conf->hrm->enabled)) accessforbidden();
|
||||
if (!$permissiontoread || ($action === 'create' && !$permissiontoadd)) accessforbidden();
|
||||
if (!isModEnabled('hrm')) {
|
||||
accessforbidden();
|
||||
}
|
||||
if (!$permissiontoread || ($action === 'create' && !$permissiontoadd)) {
|
||||
accessforbidden();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
|
@ -176,16 +173,15 @@ $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action
|
|||
if ($reshook < 0) {
|
||||
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||
}
|
||||
|
||||
if (empty($reshook)) {
|
||||
$error = 0;
|
||||
|
||||
$backurlforlist = dol_buildpath('/hrm/position_list.php', 1);
|
||||
//$backtopage = dol_buildpath('/hrm/position.php', 1) . '?fk_job=' . ($fk_job > 0 ? $fk_job : '__ID__');
|
||||
|
||||
if (empty($backtopage) || ($cancel && $fk_job <= 0)) {
|
||||
if (empty($backtopage) || ($cancel && empty($id))) {
|
||||
if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) {
|
||||
if ($fk_job == -1 && (($action != 'add' && $action != 'create') || $cancel)) {
|
||||
if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) {
|
||||
$backtopage = $backurlforlist;
|
||||
} else {
|
||||
if ($fk_job > 0) {
|
||||
|
|
@ -230,6 +226,7 @@ if (empty($reshook)) {
|
|||
include DOL_DOCUMENT_ROOT . '/core/actions_massactions.inc.php';
|
||||
|
||||
include DOL_DOCUMENT_ROOT . '/core/actions_addupdatedelete.inc.php';
|
||||
|
||||
$object = $job;
|
||||
}
|
||||
|
||||
|
|
@ -275,12 +272,7 @@ if ($action == 'create') {
|
|||
|
||||
print dol_get_fiche_end();
|
||||
|
||||
print '<div class="center">';
|
||||
|
||||
print '<input type="submit" class="button" name="add" value="' . dol_escape_htmltag($langs->trans("Create")) . '">';
|
||||
print ' ';
|
||||
print '<input type="' . ($backtopage ? "submit" : "button") . '" class="button button-cancel" name="cancel" value="' . dol_escape_htmltag($langs->trans("Cancel")) . '"' . ($backtopage ? '' : ' onclick="history.go(-1)"') . '>'; // Cancel for create does not post form if we don't know the backtopage
|
||||
print '</div>';
|
||||
print $form->buttonsSaveCancel("Create");
|
||||
|
||||
print '</form>';
|
||||
|
||||
|
|
@ -742,7 +734,7 @@ if ($job->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'
|
|||
$colspan++;
|
||||
}
|
||||
}
|
||||
print '<tr><td colspan="' . $colspan . '" class="opacitymedium">' . $langs->trans("NoRecordFound") . '</td></tr>';
|
||||
print '<tr><td colspan="' . $colspan . '"><span class="opacitymedium">' . $langs->trans("NoRecordFound") . '</span></td></tr>';
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1304,7 +1296,7 @@ function DisplayPositionList()
|
|||
$colspan++;
|
||||
}
|
||||
}
|
||||
print '<tr><td colspan="' . $colspan . '" class="opacitymedium">' . $langs->trans("NoRecordFound") . '</td></tr>';
|
||||
print '<tr><td colspan="' . $colspan . '"><span class="opacitymedium">' . $langs->trans("NoRecordFound") . '</span></td></tr>';
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -32,9 +32,8 @@ require '../main.inc.php';
|
|||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
||||
|
||||
// load hrm libraries
|
||||
require_once __DIR__.'/class/position.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/hrm/class/job.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/hrm/class/position.class.php';
|
||||
|
||||
// for other modules
|
||||
//dol_include_once('/othermodule/class/otherobject.class.php');
|
||||
|
|
@ -205,6 +204,7 @@ if (empty($reshook)) {
|
|||
*/
|
||||
|
||||
$form = new Form($db);
|
||||
$jobstatic = new Job($db);
|
||||
|
||||
$now = dol_now();
|
||||
|
||||
|
|
@ -220,9 +220,9 @@ $morecss = array();
|
|||
$sql = 'SELECT ';
|
||||
$sql .= $object->getFieldList('t');
|
||||
$sql .= ',';
|
||||
$sql .= $userstatic->getFieldList('u');
|
||||
$sql .= ',u.email, u.statut';
|
||||
$sql .= ',j.rowid, j.label as job_label';
|
||||
$sql .= $userstatic->getFieldList('u', array('rowid'));
|
||||
$sql .= ', u.email, u.statut, u.photo, u.login'; // Add more field not yet into the user->fields
|
||||
$sql .= ', j.rowid as job_id, j.label as job_label';
|
||||
// Add fields from extrafields
|
||||
if (!empty($extrafields->attributes[$object->table_element]['label'])) {
|
||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
||||
|
|
@ -620,7 +620,11 @@ while ($i < $imaxinloop) {
|
|||
// get info needed
|
||||
$object->date_start = $obj->date_start;
|
||||
$object->date_end = $obj->date_end;
|
||||
$object->fk_job = $obj->job_label;
|
||||
$object->fk_job = $obj->job_id;
|
||||
|
||||
$jobstatic->id = $obj->job_id;
|
||||
$jobstatic->label = $obj->job_label;
|
||||
$jobstatic->status = $obj->job_status;
|
||||
|
||||
$userstatic->id = $obj->fk_user;
|
||||
$userstatic->ref = $obj->fk_user;
|
||||
|
|
@ -628,6 +632,9 @@ while ($i < $imaxinloop) {
|
|||
$userstatic->lastname = $obj->lastname;
|
||||
$userstatic->email = $obj->email;
|
||||
$userstatic->statut = $obj->statut;
|
||||
$userstatic->status = $obj->statut;
|
||||
$userstatic->login = $obj->login;
|
||||
$userstatic->photo = $obj->photo;
|
||||
|
||||
// output kanban
|
||||
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||
|
|
@ -635,7 +642,7 @@ while ($i < $imaxinloop) {
|
|||
if (in_array($object->id, $arrayofselected)) {
|
||||
$selected = 1;
|
||||
}
|
||||
print $object->getKanbanView('', array('user' => $userstatic->getNomUrl(1), 'selected' => in_array($object->id, $arrayofselected)));
|
||||
print $object->getKanbanView('', array('user' => $userstatic->getNomUrl(-1), 'job'=> $jobstatic->getNomUrl(1), 'selected' => in_array($object->id, $arrayofselected)));
|
||||
}
|
||||
if ($i == ($imaxinloop - 1)) {
|
||||
print '</div>';
|
||||
|
|
|
|||
|
|
@ -256,15 +256,14 @@ if (($id || $ref) && $action == 'edit') {
|
|||
// Common attributes
|
||||
include DOL_DOCUMENT_ROOT . '/core/tpl/commonfields_edit.tpl.php';
|
||||
|
||||
print '</table>';
|
||||
|
||||
// Other attributes
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php';
|
||||
|
||||
print '</table>';
|
||||
|
||||
print '<hr>';
|
||||
|
||||
// SKILLDET
|
||||
|
||||
print dol_get_fiche_head(array(), '');
|
||||
|
||||
$SkilldetRecords = $object->fetchLines();
|
||||
|
||||
if (is_array($SkilldetRecords) && count($SkilldetRecords) == 0) {
|
||||
|
|
@ -814,7 +813,7 @@ if ($action != "create" && $action != "edit") {
|
|||
$colspan++;
|
||||
}
|
||||
}
|
||||
print '<tr><td colspan="' . $colspan . '" class="opacitymedium">' . $langs->trans("NoRecordFound") . '</td></tr>';
|
||||
print '<tr><td colspan="' . $colspan . '"><span class="opacitymedium">' . $langs->trans("NoRecordFound") . '</span></td></tr>';
|
||||
}
|
||||
|
||||
if (!empty($resql)) $db->free($resql);
|
||||
|
|
|
|||
|
|
@ -42,11 +42,6 @@ require_once DOL_DOCUMENT_ROOT . '/hrm/lib/hrm_skill.lib.php';
|
|||
$langs->loadLangs(array('hrm', 'other'));
|
||||
|
||||
// Get Parameters
|
||||
$id = GETPOST('id', 'int');
|
||||
$TSkillsToAdd = GETPOST('fk_skill', 'array');
|
||||
$objecttype = GETPOST('objecttype', 'alpha');
|
||||
$TNote = GETPOST('TNote', 'array');
|
||||
$lineid = GETPOST('lineid', 'int');
|
||||
$action = GETPOST('action', 'aZ09');
|
||||
$confirm = GETPOST('confirm', 'alpha');
|
||||
$cancel = GETPOST('cancel', 'aZ09');
|
||||
|
|
@ -54,6 +49,16 @@ $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'sk
|
|||
$backtopage = GETPOST('backtopage', 'alpha');
|
||||
$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
|
||||
|
||||
$id = GETPOST('id', 'int');
|
||||
$TSkillsToAdd = GETPOST('fk_skill', 'array');
|
||||
$objecttype = GETPOST('objecttype', 'alpha');
|
||||
$TNote = GETPOST('TNote', 'array');
|
||||
$lineid = GETPOST('lineid', 'int');
|
||||
|
||||
if (empty($objecttype)) {
|
||||
$objecttype = 'job';
|
||||
}
|
||||
|
||||
$TAuthorizedObjects = array('job', 'user');
|
||||
$skill = new SkillRank($db);
|
||||
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ insert into llx_c_forme_juridique (fk_pays, code, libelle) values (5, '506', 'KG
|
|||
insert into llx_c_forme_juridique (fk_pays, code, libelle) values (5, '507', 'Ltd. - Limited Company');
|
||||
insert into llx_c_forme_juridique (fk_pays, code, libelle) values (5, '508', 'OHG - Offene Handelsgesellschaft');
|
||||
insert into llx_c_forme_juridique (fk_pays, code, libelle) values (5, '509', 'eG - eingetragene Genossenschaft');
|
||||
|
||||
insert into llx_c_forme_juridique (fk_pays, code, libelle) values (5, '510', 'e.V. - eingetragener Verein');
|
||||
|
||||
-- Denmark
|
||||
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (80, '8001', 'Aktieselvskab A/S');
|
||||
|
|
@ -179,6 +179,12 @@ INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (80, '8006', '
|
|||
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (80, '8007', 'Selskab Med Begrænset Hæftelse SMBA');
|
||||
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (80, '8008', 'Kommanditselskab K/S');
|
||||
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (80, '8009', 'SPE-selskab');
|
||||
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (80, '8010', 'Forening med begrænset ansvar (f.m.b.a.)');
|
||||
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (80, '8011', 'Frivillig forening');
|
||||
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (80, '8012', 'Almindelig forening');
|
||||
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (80, '8013', 'Andelsboligforening');
|
||||
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (80, '8014', 'Særlig forening');
|
||||
|
||||
|
||||
-- Greece
|
||||
INSERT INTO llx_c_forme_juridique (code,fk_pays,libelle,isvatexempted,active) VALUES ('10201',102,'Ατομική επιχείρηση',0,1);
|
||||
|
|
|
|||
|
|
@ -66,5 +66,27 @@ ALTER TABLE llx_societe_rib ADD COLUMN extraparams varchar(255);
|
|||
|
||||
ALTER TABLE llx_c_type_container ADD COLUMN position integer DEFAULT 0;
|
||||
|
||||
ALTER TABLE llx_user DROP COLUMN skype;
|
||||
ALTER TABLE llx_user DROP COLUMN twitter;
|
||||
ALTER TABLE llx_user DROP COLUMN facebook;
|
||||
ALTER TABLE llx_user DROP COLUMN instagram;
|
||||
ALTER TABLE llx_user DROP COLUMN snapchat;
|
||||
ALTER TABLE llx_user DROP COLUMN googleplus;
|
||||
ALTER TABLE llx_user DROP COLUMN youtube;
|
||||
ALTER TABLE llx_user DROP COLUMN whatsapp;
|
||||
|
||||
ALTER TABLE llx_adherent DROP COLUMN skype;
|
||||
ALTER TABLE llx_adherent DROP COLUMN twitter;
|
||||
ALTER TABLE llx_adherent DROP COLUMN facebook;
|
||||
ALTER TABLE llx_adherent DROP COLUMN instagram;
|
||||
ALTER TABLE llx_adherent DROP COLUMN snapchat;
|
||||
ALTER TABLE llx_adherent DROP COLUMN googleplus;
|
||||
ALTER TABLE llx_adherent DROP COLUMN youtube;
|
||||
ALTER TABLE llx_adherent DROP COLUMN whatsapp;
|
||||
|
||||
ALTER TABLE llx_societe DROP COLUMN skype;
|
||||
|
||||
ALTER TABLE llx_prelevement_demande ADD INDEX idx_prelevement_demande_ext_payment_id (ext_payment_id);
|
||||
|
||||
ALTER TABLE llx_product_lot ADD COLUMN qc_frequency integer DEFAULT NULL;
|
||||
ALTER TABLE llx_product_lot ADD COLUMN lifetime integer DEFAULT NULL;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
-- ===================================================================
|
||||
-- Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
-- Copyright (C) 2023 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or modify
|
||||
-- it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -19,4 +20,4 @@
|
|||
|
||||
ALTER TABLE llx_prelevement_demande ADD INDEX idx_prelevement_demande_fk_facture (fk_facture);
|
||||
ALTER TABLE llx_prelevement_demande ADD INDEX idx_prelevement_demande_fk_facture_fourn (fk_facture_fourn);
|
||||
|
||||
ALTER TABLE llx_prelevement_demande ADD INDEX idx_prelevement_demande_ext_payment_id (ext_payment_id);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
-- ===================================================================
|
||||
-- Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
-- Copyright (C) 2023 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or modify
|
||||
-- it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -27,7 +28,7 @@ create table llx_prelevement_demande
|
|||
sourcetype varchar(32),
|
||||
amount double(24,8) NOT NULL,
|
||||
date_demande datetime NOT NULL,
|
||||
traite smallint DEFAULT 0,
|
||||
traite smallint DEFAULT 0, -- 1 means a file for direct-debit or credit-transfer has been created and is in process or finished. Note: can be detected by fk_prelevement_bons IS NOT NULL too.
|
||||
date_traite datetime,
|
||||
fk_prelevement_bons integer,
|
||||
fk_user_demande integer NOT NULL,
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ LastModifiedRequests=أحدث طلبات السعر المعدلة %s
|
|||
RequestsOpened=طلبات عروض اسعار مفتوحة
|
||||
SupplierProposalArea=منطقة عروض الموردين
|
||||
SupplierProposalShort=عرض المورد
|
||||
AskPrice=طلب عرض السعر
|
||||
NewAskPrice=طلب عرض سعر جديد
|
||||
ShowSupplierProposal=فتح عرض السعر
|
||||
AddSupplierProposal=عمل طلب عرض سعر
|
||||
|
|
@ -39,3 +40,4 @@ DefaultModelSupplierProposalClosed=القالب الافتراضي عند إغل
|
|||
SupplierProposalsToClose=عروض موردين لإغلاق
|
||||
SupplierProposalsToProcess=عروض موردين لمعالجة
|
||||
AllPriceRequests=جميع الطلبات
|
||||
TypeContact_supplier_proposal_external_SERVICE=الممثل المتابع للعرض
|
||||
|
|
|
|||
|
|
@ -57,11 +57,14 @@ WarningDataDisappearsWhenDataIsExported=تحذير ، تحتوي هذه القا
|
|||
VueByAccountAccounting=عرض حسب الحساب المحاسبي
|
||||
VueBySubAccountAccounting=عرض حسب الحساب المحاسبة الفرعي
|
||||
|
||||
MainAccountForCustomersNotDefined=حساب المحاسبة الرئيسي للعملاء الغير محددين في الإعدادات
|
||||
MainAccountForSuppliersNotDefined=حساب المحاسبة الرئيسي للموردين الغير محددين في الإعدادات
|
||||
MainAccountForUsersNotDefined=حساب المحاسبة الرئيسي للمستخدمين الغير محددين في الإعدادات
|
||||
MainAccountForVatPaymentNotDefined=حساب المحاسبة الرئيسي لدفعات (VAT) الغير محددين في الإعدادات
|
||||
MainAccountForSubscriptionPaymentNotDefined=حساب المحاسبة الرئيسي للمشتركين الغير محددين في الإعدادات
|
||||
MainAccountForCustomersNotDefined=Main account (from the Chart of Account) for customers not defined in setup
|
||||
MainAccountForSuppliersNotDefined=Main account (from the Chart of Account) for vendors not defined in setup
|
||||
MainAccountForUsersNotDefined=Main account (from the Chart of Account) for users not defined in setup
|
||||
MainAccountForRevenueStampSaleNotDefined=Account (from the Chart of Account) for the revenue stamp (sales) not defined in setup
|
||||
MainAccountForRevenueStampPurchaseNotDefined=Account (from the Chart of Account) for the revenue stamp (purchases) not defined in setup
|
||||
MainAccountForVatPaymentNotDefined=Account (from the Chart of Account) for VAT payment not defined in setup
|
||||
MainAccountForSubscriptionPaymentNotDefined=Account (from the Chart of Account) for membership payment not defined in setup
|
||||
MainAccountForRetainedWarrantyNotDefined=Account (from the Chart of Account) for the retained warranty not defined in setup
|
||||
UserAccountNotDefined=لم يتم تعريف حساب في الحسابات في الاعدادات
|
||||
|
||||
AccountancyArea=منطقة المحاسبة
|
||||
|
|
|
|||
|
|
@ -1509,7 +1509,8 @@ WatermarkOnDraftContractCards=العلامة المائية على مسودات
|
|||
MembersSetup=أعضاء وحدة الإعداد
|
||||
MemberMainOptions=الخيارات الرئيسية
|
||||
MemberCodeChecker=Options for automatic generation of member codes
|
||||
AdherentLoginRequired= إدارة تسجيل الدخول لكل عضو
|
||||
AdherentLoginRequired=Manage a login/password for each member
|
||||
AdherentLoginRequiredDesc=Add a value for a login and a password on the member file. If the member is linked to a user, updating the member login and password will also update the user login and password.
|
||||
AdherentMailRequired=البريد الإلكتروني مطلوب لإنشاء عضو جديد
|
||||
MemberSendInformationByMailByDefault=مربع لإرسال الرسائل للأعضاء تأكيدا على افتراضي
|
||||
MemberCreateAnExternalUserForSubscriptionValidated=قم بإنشاء تسجيل دخول مستخدم خارجي لكل اشتراك عضو جديد تم التحقق من صحته
|
||||
|
|
@ -2076,6 +2077,10 @@ MAIN_DOCUMENTS_LOGO_HEIGHT=ارتفاع الشعار على صيغة المست
|
|||
DOC_SHOW_FIRST_SALES_REP=Show first sales representative
|
||||
MAIN_GENERATE_PROPOSALS_WITH_PICTURE=أضف عمودًا للصورة في سطور الاقتراح
|
||||
MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=عرض العمود إذا تم إضافة صورة على الخطوط
|
||||
MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE=Hide the unit price column on quotation requests
|
||||
MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN=Hide the total price column on quotation requests
|
||||
MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE=Hide the unit price column on purchase orders
|
||||
MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on puchase orders
|
||||
MAIN_PDF_NO_SENDER_FRAME=إخفاء الحدود في إطار عنوان المرسل
|
||||
MAIN_PDF_NO_RECIPENT_FRAME=إخفاء الحدود على إطار عنوان المستلم
|
||||
MAIN_PDF_HIDE_CUSTOMER_CODE=إخفاء رمز العميل
|
||||
|
|
@ -2400,4 +2405,4 @@ OptionXShouldBeEnabledInModuleY=Option "<b>%s</b>" should be enabled into module
|
|||
OptionXIsCorrectlyEnabledInModuleY=Option "<b>%s</b>" is enabled into module <b>%s</b>
|
||||
AtBottomOfPage=At bottom of page
|
||||
FailedAuth=failed authentications
|
||||
MaxNumberOfFailedAuth=Max number of failed authentication in 24h to disable login.
|
||||
MaxNumberOfFailedAuth=Max number of failed authentication in 24h to deny login.
|
||||
|
|
|
|||
|
|
@ -1237,3 +1237,5 @@ SearchSyntaxTooltipForStringOrNum=For searching inside text fields, you can use
|
|||
InProgress=قيد التنفيذ
|
||||
DateOfPrinting=Date of printing
|
||||
ClickFullScreenEscapeToLeave=Click here to switch in Full screen mode. Press ESCAPE to leave Full screen mode.
|
||||
UserNotYetValid=Not yet valid
|
||||
UserExpired=انتهى
|
||||
|
|
|
|||
|
|
@ -42,7 +42,8 @@ SendAskRef=إرسال سعر الطلب٪ الصورة
|
|||
SupplierProposalCard=طلب بطاقة
|
||||
ConfirmDeleteAsk=هل تريد بالتأكيد حذف طلب السعر هذا <b> %s </b>؟
|
||||
ActionsOnSupplierProposal=الأحداث على طلب السعر
|
||||
DocModelAuroreDescription=نموذج طلب كامل (شعار ...)
|
||||
DocModelAuroreDescription=A complete template for a vendor quotation request template (old implementation of Sponge template)
|
||||
DocModelZenithDescription=A complete template for a vendor quotation request template
|
||||
CommercialAsk=طلب السعر
|
||||
DefaultModelSupplierProposalCreate=إنشاء نموذج افتراضي
|
||||
DefaultModelSupplierProposalToBill=القالب الافتراضي عند إغلاق طلب السعر (مقبول)
|
||||
|
|
|
|||
|
|
@ -57,11 +57,14 @@ WarningDataDisappearsWhenDataIsExported=Warning, this list contains only the acc
|
|||
VueByAccountAccounting=View by accounting account
|
||||
VueBySubAccountAccounting=View by accounting subaccount
|
||||
|
||||
MainAccountForCustomersNotDefined=Основна счетоводна сметка за клиенти, която не е дефинирана в настройката
|
||||
MainAccountForSuppliersNotDefined=Основна счетоводна сметка за доставчици, която не е дефинирана в настройката
|
||||
MainAccountForUsersNotDefined=Основна счетоводна сметка за потребители, която не е дефинирана в настройката
|
||||
MainAccountForVatPaymentNotDefined=Основна счетоводна сметка за плащане на ДДС, която не е дефинирана в настройката
|
||||
MainAccountForSubscriptionPaymentNotDefined=Основна счетоводна сметка за плащане на абонамент, която не е дефинирана в настройката
|
||||
MainAccountForCustomersNotDefined=Main account (from the Chart of Account) for customers not defined in setup
|
||||
MainAccountForSuppliersNotDefined=Main account (from the Chart of Account) for vendors not defined in setup
|
||||
MainAccountForUsersNotDefined=Main account (from the Chart of Account) for users not defined in setup
|
||||
MainAccountForRevenueStampSaleNotDefined=Account (from the Chart of Account) for the revenue stamp (sales) not defined in setup
|
||||
MainAccountForRevenueStampPurchaseNotDefined=Account (from the Chart of Account) for the revenue stamp (purchases) not defined in setup
|
||||
MainAccountForVatPaymentNotDefined=Account (from the Chart of Account) for VAT payment not defined in setup
|
||||
MainAccountForSubscriptionPaymentNotDefined=Account (from the Chart of Account) for membership payment not defined in setup
|
||||
MainAccountForRetainedWarrantyNotDefined=Account (from the Chart of Account) for the retained warranty not defined in setup
|
||||
UserAccountNotDefined=Accounting account for user not defined in setup
|
||||
|
||||
AccountancyArea=Секция за счетоводство
|
||||
|
|
|
|||
|
|
@ -1509,7 +1509,8 @@ WatermarkOnDraftContractCards=Воден знак върху чернови до
|
|||
MembersSetup=Настройка на модула за членове
|
||||
MemberMainOptions=Основни параметри
|
||||
MemberCodeChecker=Options for automatic generation of member codes
|
||||
AdherentLoginRequired= Управление на входни данни за всеки член
|
||||
AdherentLoginRequired=Manage a login/password for each member
|
||||
AdherentLoginRequiredDesc=Add a value for a login and a password on the member file. If the member is linked to a user, updating the member login and password will also update the user login and password.
|
||||
AdherentMailRequired=Необходим е имейл при създаване на нов член
|
||||
MemberSendInformationByMailByDefault=По подразбиране е активирано изпращането на потвърждение, чрез имейл до членове (валидиране или нов абонамент)
|
||||
MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated
|
||||
|
|
@ -2076,6 +2077,10 @@ MAIN_DOCUMENTS_LOGO_HEIGHT=Height for logo on PDF
|
|||
DOC_SHOW_FIRST_SALES_REP=Show first sales representative
|
||||
MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Add column for picture on proposal lines
|
||||
MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Width of the column if a picture is added on lines
|
||||
MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE=Hide the unit price column on quotation requests
|
||||
MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN=Hide the total price column on quotation requests
|
||||
MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE=Hide the unit price column on purchase orders
|
||||
MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on puchase orders
|
||||
MAIN_PDF_NO_SENDER_FRAME=Hide borders on sender address frame
|
||||
MAIN_PDF_NO_RECIPENT_FRAME=Hide borders on recipent address frame
|
||||
MAIN_PDF_HIDE_CUSTOMER_CODE=Hide customer code
|
||||
|
|
@ -2400,4 +2405,4 @@ OptionXShouldBeEnabledInModuleY=Option "<b>%s</b>" should be enabled into module
|
|||
OptionXIsCorrectlyEnabledInModuleY=Option "<b>%s</b>" is enabled into module <b>%s</b>
|
||||
AtBottomOfPage=At bottom of page
|
||||
FailedAuth=failed authentications
|
||||
MaxNumberOfFailedAuth=Max number of failed authentication in 24h to disable login.
|
||||
MaxNumberOfFailedAuth=Max number of failed authentication in 24h to deny login.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ SupplierProposalArea=Секция със запитвания към доста
|
|||
SupplierProposalShort=Запитване към доставчик
|
||||
SupplierProposals=Запитвания към доставчик
|
||||
SupplierProposalsShort=Запитвания към доставчик
|
||||
AskPrice=Запитване за цена
|
||||
NewAskPrice=Ново запитване за цена
|
||||
ShowSupplierProposal=Показване на запитване за цена
|
||||
AddSupplierProposal=Създаване на запитване за цена
|
||||
|
|
@ -41,7 +42,8 @@ SendAskRef=Изпращане на запитване за цена %s
|
|||
SupplierProposalCard=Запитване за цена
|
||||
ConfirmDeleteAsk=Сигурни ли сте, че искате да изтриете това запитване за цена с № <b>%s</b>?
|
||||
ActionsOnSupplierProposal=Свързани събития
|
||||
DocModelAuroreDescription=Завършен шаблон на запитване (лого...)
|
||||
DocModelAuroreDescription=A complete template for a vendor quotation request template (old implementation of Sponge template)
|
||||
DocModelZenithDescription=A complete template for a vendor quotation request template
|
||||
CommercialAsk=Запитване за цена
|
||||
DefaultModelSupplierProposalCreate=Създаване на шаблон по подразбиране
|
||||
DefaultModelSupplierProposalToBill=Шаблон по подразбиране, когато се затваря запитване за цена (прието)
|
||||
|
|
@ -52,3 +54,6 @@ SupplierProposalsToClose=Запитвания към доставчици за
|
|||
SupplierProposalsToProcess=Запитвания към доставчици за обработка
|
||||
LastSupplierProposals=Запитвания за цени: %s последни
|
||||
AllPriceRequests=Всички запитвания
|
||||
TypeContact_supplier_proposal_external_SHIPPING=Vendor contact for delivery
|
||||
TypeContact_supplier_proposal_external_BILLING=Vendor contact for billing
|
||||
TypeContact_supplier_proposal_external_SERVICE=Изготвил предложение
|
||||
|
|
|
|||
|
|
@ -1237,3 +1237,5 @@ SearchSyntaxTooltipForStringOrNum=For searching inside text fields, you can use
|
|||
InProgress=U toku
|
||||
DateOfPrinting=Date of printing
|
||||
ClickFullScreenEscapeToLeave=Click here to switch in Full screen mode. Press ESCAPE to leave Full screen mode.
|
||||
UserNotYetValid=Not yet valid
|
||||
UserExpired=Istekao
|
||||
|
|
|
|||
|
|
@ -57,11 +57,14 @@ WarningDataDisappearsWhenDataIsExported=Warning, this list contains only the acc
|
|||
VueByAccountAccounting=Visualització per compte comptable
|
||||
VueBySubAccountAccounting=Visualització per subcompte comptable
|
||||
|
||||
MainAccountForCustomersNotDefined=Compte comptable per a clients no definida en la configuració
|
||||
MainAccountForSuppliersNotDefined=Compte comptable principal per a proveïdors no definit a la configuració
|
||||
MainAccountForUsersNotDefined=Compte comptable per a usuaris no de definit en la configuració
|
||||
MainAccountForVatPaymentNotDefined=Compte comptable per a IVA no definida en la configuració
|
||||
MainAccountForSubscriptionPaymentNotDefined=Compte comptable per a IVA no definida en la configuració del mòdul
|
||||
MainAccountForCustomersNotDefined=Main account (from the Chart of Account) for customers not defined in setup
|
||||
MainAccountForSuppliersNotDefined=Main account (from the Chart of Account) for vendors not defined in setup
|
||||
MainAccountForUsersNotDefined=Main account (from the Chart of Account) for users not defined in setup
|
||||
MainAccountForRevenueStampSaleNotDefined=Account (from the Chart of Account) for the revenue stamp (sales) not defined in setup
|
||||
MainAccountForRevenueStampPurchaseNotDefined=Account (from the Chart of Account) for the revenue stamp (purchases) not defined in setup
|
||||
MainAccountForVatPaymentNotDefined=Account (from the Chart of Account) for VAT payment not defined in setup
|
||||
MainAccountForSubscriptionPaymentNotDefined=Account (from the Chart of Account) for membership payment not defined in setup
|
||||
MainAccountForRetainedWarrantyNotDefined=Account (from the Chart of Account) for the retained warranty not defined in setup
|
||||
UserAccountNotDefined=Compte comptable per a l'usuari no definit a la configuració
|
||||
|
||||
AccountancyArea=Àrea de comptabilitat
|
||||
|
|
|
|||
|
|
@ -366,8 +366,8 @@ GenericMaskCodes2= <b> {cccc} </b> el codi del client en n caràcters <br><b>{cc
|
|||
GenericMaskCodes3=Qualsevol altre caràcter a la màscara es quedarà sense canvis. <br> No es permeten espais<br>
|
||||
GenericMaskCodes3EAN=La resta de caràcters de la màscara romandran intactes (excepte * o ? En 13a posició a EAN13). <br>No es permeten espais. <br> A EAN13, l'últim caràcter després de l'últim } a la 13a posició hauria de ser * o ? . Se substituirà per la clau calculada.<br>
|
||||
GenericMaskCodes4a=<u>Example on the 99th %s of the third party TheCompany, with date 2023-01-31:</u><br>
|
||||
GenericMaskCodes4b=<u>Example on third party created on 2023-01-31:</u><br>
|
||||
GenericMaskCodes4c=<u>Example on product created on 2023-01-31:</u><br>
|
||||
GenericMaskCodes4b=<u>Exemple en un tercer creat el 31/01/2023:</u><br>
|
||||
GenericMaskCodes4c=<u>Exemple de producte creat el 31/01/2023:</u><br>
|
||||
GenericMaskCodes5=<b>ABC{yy}{mm}-{000000}</b> will give <b>ABC2301-000099</b><br><b>{0000+100@1}-ZZZ/{dd}/XXX</b> will give <b>0199-ZZZ/31/XXX</b><br><b>IN{yy}{mm}-{0000}-{t}</b> will give <b>IN2301-0099-A</b> if the type of company is 'Responsable Inscripto' with code for type that is 'A_RI'
|
||||
GenericNumRefModelDesc=Retorna un nombre creat d'acord amb una màscara definida.
|
||||
ServerAvailableOnIPOrPort=Servidor disponible a l'adreça <b>%s</b> al port <b>%s</b>
|
||||
|
|
@ -650,7 +650,7 @@ Module2300Name=Tasques programades
|
|||
Module2300Desc=Gestió de tasques programades (àlies cron o taula de crons)
|
||||
Module2400Name=Esdeveniments/Agenda
|
||||
Module2400Desc=Seguiment d'esdeveniments. Registre d'esdeveniments automàtics per a fer el seguiment o registrar esdeveniments manuals o reunions. Aquest és el mòdul principal per a una bona gestió de la relació amb clients o proveïdors.
|
||||
Module2430Name=Online Booking Calendar
|
||||
Module2430Name=Calendari de reserves en línia
|
||||
Module2430Desc=Proporcioneu un calendari en línia per a permetre que qualsevol persona pugui reservar una cita, segons els rangs o les disponibilitats predefinits.
|
||||
Module2500Name=SGD / GCE
|
||||
Module2500Desc=Sistema de gestió de documents / Gestió de continguts electrònics. Organització automàtica dels vostres documents generats o emmagatzemats. Compartiu-los quan ho necessiteu.
|
||||
|
|
@ -1509,7 +1509,8 @@ WatermarkOnDraftContractCards=Marca d'aigua en contractes (en cas d'estar buit)
|
|||
MembersSetup=Configuració del mòdul Socis
|
||||
MemberMainOptions=Opcions principals
|
||||
MemberCodeChecker=Opcions per a la generació automàtica de codis de soci
|
||||
AdherentLoginRequired= Gestiona un compte d'usuari per a cada soci
|
||||
AdherentLoginRequired=Gestiona un compte d'usuari/contrasenya per a cada soci
|
||||
AdherentLoginRequiredDesc=Add a value for a login and a password on the member file. If the member is linked to a user, updating the member login and password will also update the user login and password.
|
||||
AdherentMailRequired=Cal un correu electrònic per a crear un soci nou
|
||||
MemberSendInformationByMailByDefault=La casella de selecció per a enviar una confirmació per correu electrònic als socis (validació o nova subscripció) està activada per defecte
|
||||
MemberCreateAnExternalUserForSubscriptionValidated=Creeu un usuari extern per a cada subscripció nova membre validada
|
||||
|
|
@ -1642,9 +1643,9 @@ LDAPFieldEndLastSubscription=Data final d'afiliació
|
|||
LDAPFieldTitle=Càrrec
|
||||
LDAPFieldTitleExample=Exemple:títol
|
||||
LDAPFieldGroupid=Identificador de grup
|
||||
LDAPFieldGroupidExample=Example : gidnumber
|
||||
LDAPFieldGroupidExample=Exemple : gidnumber
|
||||
LDAPFieldUserid=Identificador personal
|
||||
LDAPFieldUseridExample=Example : uidnumber
|
||||
LDAPFieldUseridExample=Exemple : uidnumber
|
||||
LDAPFieldHomedirectory=Directori d’inici
|
||||
LDAPFieldHomedirectoryExample=Exemple: directoriprincipal
|
||||
LDAPFieldHomedirectoryprefix=Prefix del directori inicial
|
||||
|
|
@ -2076,6 +2077,10 @@ MAIN_DOCUMENTS_LOGO_HEIGHT=Alçada del logotip en PDF
|
|||
DOC_SHOW_FIRST_SALES_REP=Mostra el primer agent comercial
|
||||
MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Afegiu una columna per a la imatge a les línies de proposta
|
||||
MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Amplada de la columna si s'afegeix una imatge a les línies
|
||||
MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE=Hide the unit price column on quotation requests
|
||||
MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN=Hide the total price column on quotation requests
|
||||
MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE=Hide the unit price column on purchase orders
|
||||
MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on puchase orders
|
||||
MAIN_PDF_NO_SENDER_FRAME=Amaga les vores del marc d’adreça del remitent
|
||||
MAIN_PDF_NO_RECIPENT_FRAME=Amaga les vores del marc d’adreça destinatari
|
||||
MAIN_PDF_HIDE_CUSTOMER_CODE=Amaga el codi de client
|
||||
|
|
@ -2112,7 +2117,7 @@ NewEmailCollector=Col·lector nou de correus electrònics
|
|||
EMailHost=Servidor IMAP de correu electrònic
|
||||
EMailHostPort=Port del servidor IMAP de correu electrònic
|
||||
loginPassword=Inici de sessió/Contrasenya
|
||||
oauthToken=OAuth2 token
|
||||
oauthToken=Testimoni OAuth2
|
||||
accessType=Tipus d'accés
|
||||
oauthService=Servei d'Oauth
|
||||
TokenMustHaveBeenCreated=El mòdul OAuth2 ha d'estar habilitat i s'ha d'haver creat un testimoni oauth2 amb els permisos correctes (per exemple, l'àmbit "gmail_full" amb OAuth per a Gmail).
|
||||
|
|
@ -2340,7 +2345,7 @@ INVOICE_ADD_ZATCA_QR_CODEMore=Alguns països àrabs necessiten aquest codi QR a
|
|||
INVOICE_ADD_SWISS_QR_CODE=Mostra el codi QR-Bill suís a les factures
|
||||
INVOICE_ADD_SWISS_QR_CODEMore=Switzerland's standard for invoices; make sure ZIP & City are filled and that the accounts have valid Swiss/Liechtenstein IBANs.
|
||||
INVOICE_SHOW_SHIPPING_ADDRESS=Mostra l'adreça d'enviament
|
||||
INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory indication in some countries (France, ...)
|
||||
INVOICE_SHOW_SHIPPING_ADDRESSMore=Indicació obligatòria en alguns països (França, ...)
|
||||
UrlSocialNetworksDesc=Enllaç URL de la xarxa social. Utilitzeu {socialid} per a la part variable que conté l'identificador de la xarxa social.
|
||||
IfThisCategoryIsChildOfAnother=Si aquesta categoria és fill d'una altra
|
||||
DarkThemeMode=Mode de tema fosc
|
||||
|
|
@ -2368,12 +2373,12 @@ DefinedAPathForAntivirusCommandIntoSetup=Definiu un camí per a un programa anti
|
|||
TriggerCodes=Esdeveniments desencadenants
|
||||
TriggerCodeInfo=Introduïu aquí els codis activadors que han de generar una publicació d'una sol·licitud web (només es permet l'URL extern). Podeu introduir diversos codis d'activació separats per una coma.
|
||||
EditableWhenDraftOnly=Si no està marcat, el valor només es pot modificar quan l'objecte té un estat d'esborrany
|
||||
CssOnEdit=CSS on edit pages
|
||||
CssOnView=CSS on view pages
|
||||
CssOnList=CSS on lists
|
||||
HelpCssOnEditDesc=The CSS used when editing the field.<br>Example: "minwiwdth100 maxwidth500 widthcentpercentminusx"
|
||||
HelpCssOnViewDesc=The CSS used when viewing the field.
|
||||
HelpCssOnListDesc=The CSS used when field is inside a list table.<br>Example: "tdoverflowmax200"
|
||||
CssOnEdit=CSS a les pàgines d'edició
|
||||
CssOnView=CSS a les pàgines de visualització
|
||||
CssOnList=CSS als llistats
|
||||
HelpCssOnEditDesc=El CSS utilitzat en editar el camp.<br>Exemple: «minwiwdth100 maxwidth500 widthcentpercentminusx»
|
||||
HelpCssOnViewDesc=El CSS utilitzat en visualitzar el camp.
|
||||
HelpCssOnListDesc=El CSS utilitzat quan el camp es troba dins d'una taula de llista.<br>Exemple: «tdoverflowmax200»
|
||||
RECEPTION_PDF_HIDE_ORDERED=Amaga la quantitat demanada als documents generats per a recepcions
|
||||
MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Mostra el preu als documents generats per a recepcions
|
||||
WarningDisabled=Avís desactivat
|
||||
|
|
@ -2399,5 +2404,5 @@ DefaultForTypeDesc=Plantilla utilitzada per defecte quan es crea un correu elect
|
|||
OptionXShouldBeEnabledInModuleY=L'opció «<b>%s</b>» s'ha d'habilitar al mòdul <b>%s</b>
|
||||
OptionXIsCorrectlyEnabledInModuleY=L'opció «<b>%s</b>» està habilitada al mòdul <b>%s</b>
|
||||
AtBottomOfPage=A la part inferior de la pàgina
|
||||
FailedAuth=failed authentications
|
||||
MaxNumberOfFailedAuth=Max number of failed authentication in 24h to disable login.
|
||||
FailedAuth=autenticacions fallides
|
||||
MaxNumberOfFailedAuth=Nombre màxim d'autenticacions fallides en 24 hores per a denegar l'inici de sessió.
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ EditFinancialAccount=Edició compte
|
|||
LabelBankCashAccount=Nom del banc o de l'efectiu
|
||||
AccountType=Tipus de compte
|
||||
BankType0=Compte d'estalvis
|
||||
BankType1=Current, cheque or credit card account
|
||||
BankType1=Compte corrent, de xec o de targeta de crèdit
|
||||
BankType2=Compte caixa/efectiu
|
||||
AccountsArea=Àrea comptes
|
||||
AccountCard=Fitxa compte
|
||||
|
|
@ -106,8 +106,8 @@ BankLineNotReconciled=No conciliat
|
|||
CustomerInvoicePayment=Cobrament a client
|
||||
SupplierInvoicePayment=Pagament al proveïdor
|
||||
SubscriptionPayment=Pagament de quota
|
||||
WithdrawalPayment=Direct Debit payment
|
||||
BankTransferPayment=Credit Transfer payment
|
||||
WithdrawalPayment=Pagament per domiciliació bancària
|
||||
BankTransferPayment=Pagament per transferència de crèdit
|
||||
SocialContributionPayment=Pagament d'impostos varis
|
||||
BankTransfer=Transferència bancària
|
||||
BankTransfers=Transferències bancàries
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@ BillFrom=Emissor
|
|||
BillTo=Enviar a
|
||||
ShippingTo=L'enviament a
|
||||
ActionsOnBill=Accions en la factura
|
||||
ActionsOnBillRec=Actions on recurring invoice
|
||||
ActionsOnBillRec=Accions sobre factura recurrent
|
||||
RecurringInvoiceTemplate=Plantilla / Factura recurrent
|
||||
NoQualifiedRecurringInvoiceTemplateFound=No es pot generar cap factura de plantilla periòdica.
|
||||
FoundXQualifiedRecurringInvoiceTemplate=S'han trobat %s factures recurrents de plantilla qualificades per a la generació.
|
||||
|
|
@ -197,7 +197,7 @@ ConfirmClassifyPaidPartiallyReasonDiscount=La resta a pagar <b>(%s %s)</b> és u
|
|||
ConfirmClassifyPaidPartiallyReasonDiscountNoVat=La resta a pagar <b>(%s %s)</b> és un descompte acordat després de la facturació. Accepto perdre l'IVA d'aquest descompte
|
||||
ConfirmClassifyPaidPartiallyReasonDiscountVat=La resta a pagar <b>(%s %s)</b> és un descompte atorgat perquè el pagament es va fer abans de temps. Recupero l'IVA d'aquest descompte, sense un abonament.
|
||||
ConfirmClassifyPaidPartiallyReasonBadCustomer=Client morós
|
||||
ConfirmClassifyPaidPartiallyReasonBadSupplier=Bad vendor
|
||||
ConfirmClassifyPaidPartiallyReasonBadSupplier=Mal venedor
|
||||
ConfirmClassifyPaidPartiallyReasonBankCharge=Deducció per banc (comissió bancària)
|
||||
ConfirmClassifyPaidPartiallyReasonWithholdingTax=Retenció d'impostos
|
||||
ConfirmClassifyPaidPartiallyReasonProductReturned=Productes retornats en part
|
||||
|
|
@ -210,7 +210,7 @@ ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Aquesta elecció és possi
|
|||
ConfirmClassifyPaidPartiallyReasonBankChargeDesc=L'import no pagat son <b>comissions bancàries</b>, deduïdes directament de <b>l'import correcte</b> pagat pel Client.
|
||||
ConfirmClassifyPaidPartiallyReasonWithholdingTaxDesc=L'import no pagat mai es pagarà ja que es tracta d'una retenció a la font
|
||||
ConfirmClassifyPaidPartiallyReasonOtherDesc=Utilitza aquesta opció si totes les altres no són adequades, per exemple, en la següent situació: <br>- el pagament no s'ha completat perquè alguns productes es van tornar a enviar<br>- la quantitat reclamada és massa important perquè s'ha oblidat un descompte <br>En tots els casos, s'ha de corregir l'import excessiu en el sistema de comptabilitat mitjançant la creació d’un abonament.
|
||||
ConfirmClassifyPaidPartiallyReasonBadSupplierDesc=A <b>bad supplier</b> is a supplier we refuse to pay.
|
||||
ConfirmClassifyPaidPartiallyReasonBadSupplierDesc=Un <b>mal proveïdor</b> és un proveïdor que ens neguem a pagar.
|
||||
ConfirmClassifyAbandonReasonOther=Altres
|
||||
ConfirmClassifyAbandonReasonOtherDesc=Aquesta elecció serà per a qualsevol altre cas. Per exemple arran de la intenció de crear una factura rectificativa.
|
||||
ConfirmCustomerPayment=Confirmes aquesta entrada de pagament per a <b>%s</b> %s?
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ CountryLV=Letònia
|
|||
CountryLB=Líban
|
||||
CountryLS=Lesotho
|
||||
CountryLR=Libèria
|
||||
CountryLY=Libya
|
||||
CountryLY=Líbia
|
||||
CountryLI=Liechtenstein
|
||||
CountryLT=Lituània
|
||||
CountryLU=Luxemburg
|
||||
|
|
|
|||
|
|
@ -318,8 +318,10 @@ ErrorTheUrlOfYourDolInstanceDoesNotMatchURLIntoOAuthSetup=Error: The URL of you
|
|||
ErrorMenuExistValue=Ja existeix un menú amb aquest títol o URL
|
||||
ErrorSVGFilesNotAllowedAsLinksWithout=Els fitxers SVG no es permeten com a enllaços externs sense l'opció %s
|
||||
ErrorTypeMenu=Impossible afegir un altre menú per al mateix mòdul a la barra de navegació, encara no es gestiona
|
||||
ErrorTableExist=Table <b>%s</b> already exist
|
||||
ErrorDictionaryNotFound=Dictionary <b>%s</b> not found
|
||||
ErrorTableExist=La taula <b>%s</b> ja existeix
|
||||
ErrorDictionaryNotFound=No s'ha trobat el diccionari <b>%s</b>
|
||||
ErrorFailedToCreateSymLinkToMedias=Failed to create the symlinks %s to point to %s
|
||||
|
||||
# Warnings
|
||||
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=El paràmetre PHP upload_max_filesize (%s) és superior al paràmetre PHP post_max_size (%s). No es tracta d’una configuració consistent.
|
||||
WarningPasswordSetWithNoAccount=S'ha establert una contrasenya per a aquest soci. Tot i això, no s'ha creat cap compte d'usuari. Per tant, aquesta contrasenya s’emmagatzema però no es pot utilitzar per a iniciar la sessió a Dolibarr. Pot ser utilitzat per un mòdul/interfície extern, però si no necessiteu definir cap inici de sessió ni contrasenya per a un soci, podeu desactivar l'opció "Gestiona un inici de sessió per a cada soci" des de la configuració del mòdul Socis. Si heu de gestionar un inici de sessió però no necessiteu cap contrasenya, podeu mantenir aquest camp buit per a evitar aquesta advertència. Nota: El correu electrònic també es pot utilitzar com a inici de sessió si el soci està enllaçat amb un usuari.
|
||||
|
|
@ -360,7 +362,7 @@ WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=La validació automàt
|
|||
WarningModuleNeedRefrech = El mòdul <b>%s</b> s'ha desactivat. No oblideu activar-lo
|
||||
WarningPermissionAlreadyExist=Permisos existents per a aquest objecte
|
||||
WarningGoOnAccountancySetupToAddAccounts=If this list is empty, go into menu %s - %s - %s to load or create accounts for your chart of account.
|
||||
WarningCorrectedInvoiceNotFound=Corrected invoice not found
|
||||
WarningCorrectedInvoiceNotFound=No s'ha trobat la factura corregida
|
||||
|
||||
SwissQrOnlyVIR = SwissQR invoice can only be added on invoices set to be paid with credit transfer payments.
|
||||
SwissQrCreditorAddressInvalid = L'adreça del creditor no és vàlida (s'han definit el codi postal i la ciutat? (%s)
|
||||
|
|
@ -389,4 +391,4 @@ BadSetupOfField = S'ha produït un error en configurar el camp
|
|||
BadSetupOfFieldClassNotFoundForValidation = Error de configuració incorrecta del camp: no s'ha trobat la classe per a la validació
|
||||
BadSetupOfFieldFileNotFound = Error de configuració incorrecta del camp: no s'ha trobat el fitxer per a incloure'l
|
||||
BadSetupOfFieldFetchNotCallable = Error de configuració incorrecta del camp: la recuperació no es pot trucar a la classe
|
||||
ErrorTooManyAttempts= Too many attempts, please try again later
|
||||
ErrorTooManyAttempts= Massa intents, torna-ho a provar més tard
|
||||
|
|
|
|||
|
|
@ -123,6 +123,6 @@ Language_ur_PK=Urdú
|
|||
Language_uz_UZ=Uzbek
|
||||
Language_vi_VN=Vietnamita
|
||||
Language_zh_CN=Xinès
|
||||
Language_zh_TW=Chinese (Taiwan)
|
||||
Language_zh_TW=Xinès (Taiwan)
|
||||
Language_zh_HK=Xinès (Hong Kong)
|
||||
Language_bh_MY=Malai
|
||||
|
|
|
|||
|
|
@ -235,8 +235,8 @@ PersonalValue=Valor personalitzat
|
|||
NewObject=Nou %s
|
||||
NewValue=Valor nou
|
||||
OldValue=Valor antic %s
|
||||
FieldXModified=Field %s modified
|
||||
FieldXModifiedFromYToZ=Field %s modified from %s to %s
|
||||
FieldXModified=S'ha modificat el camp %s
|
||||
FieldXModifiedFromYToZ=El camp %s s'ha modificat de %s a %s
|
||||
CurrentValue=Valor actual
|
||||
Code=Codi
|
||||
Type=Tipus
|
||||
|
|
@ -348,7 +348,7 @@ MonthOfDay=Mes del dia
|
|||
DaysOfWeek=Dies de la setmana
|
||||
HourShort=H
|
||||
MinuteShort=Minut
|
||||
SecondShort=sec
|
||||
SecondShort=seg
|
||||
Rate=Tipus
|
||||
CurrencyRate=Tarifa de conversió de moneda
|
||||
UseLocalTax=Inclou impostos
|
||||
|
|
@ -558,7 +558,7 @@ Unknown=Desconegut
|
|||
General=General
|
||||
Size=Mida
|
||||
OriginalSize=Mida original
|
||||
RotateImage=Rotate 90°
|
||||
RotateImage=Gira 90°
|
||||
Received=Rebut
|
||||
Paid=Pagat
|
||||
Topic=Assumpte
|
||||
|
|
@ -1235,5 +1235,7 @@ DropFileToAddItToObject=Deixeu anar un fitxer per a afegir-lo en aquest objecte
|
|||
UploadFileDragDropSuccess=Els fitxers s'han penjat correctament
|
||||
SearchSyntaxTooltipForStringOrNum=For searching inside text fields, you can use the characters ^ or $ to make a 'start or end with' search or use the ! to make a 'does not contain' test. You can use the | between two strings instead of a space for a 'OR' condition instead of 'AND'. For numeric values, you can use the operator <, >, <=, >= or != before the value, to filter using a mathematical comparison
|
||||
InProgress=En progrés
|
||||
DateOfPrinting=Date of printing
|
||||
ClickFullScreenEscapeToLeave=Click here to switch in Full screen mode. Press ESCAPE to leave Full screen mode.
|
||||
DateOfPrinting=Data d'impressió
|
||||
ClickFullScreenEscapeToLeave=Feu clic aquí per a canviar al mode de pantalla completa. Premeu ESCAPE per a sortir del mode de pantalla completa.
|
||||
UserNotYetValid=Encara no vàlid
|
||||
UserExpired=No al dia
|
||||
|
|
|
|||
|
|
@ -163,11 +163,11 @@ ListOfTabsEntries=Llista d'entrades de pestanyes
|
|||
TabsDefDesc=Definiu aquí les pestanyes proporcionades pel vostre mòdul
|
||||
TabsDefDescTooltip=Les pestanyes proporcionades pel vostre mòdul/aplicació es defineixen a la matriu <strong> $this->tabs </strong> al fitxer descriptor del mòdul. Podeu editar manualment aquest fitxer o utilitzar l'editor incrustat.
|
||||
BadValueForType=Valor incorrecte per al tipus %s
|
||||
DefinePropertiesFromExistingTable=Definiu propietats a partir d'una taula existent
|
||||
DefinePropertiesFromExistingTable=Definiu els camps/propietats d'una taula existent
|
||||
DefinePropertiesFromExistingTableDesc=Si ja existeix una taula a la base de dades (per a que l'objecte es creï), podeu utilitzar-la per a definir les propietats de l'objecte.
|
||||
DefinePropertiesFromExistingTableDesc2=Manteniu-lo buit si la taula encara no existeix. El generador de codi utilitzarà diferents tipus de camps per a crear un exemple de taula que podeu editar més tard.
|
||||
GeneratePermissions=Vull afegir els permisos d'aquest objecte
|
||||
GeneratePermissionsHelp=generar permisos per defecte per a aquest objecte
|
||||
GeneratePermissions=Vull gestionar els permisos d'aquest objecte
|
||||
GeneratePermissionsHelp=Si marqueu això, s'afegirà algun codi per a gestionar els permisos per a consultar, escriure i eliminar registres dels objectes
|
||||
PermissionDeletedSuccesfuly=El permís s'ha eliminat correctament
|
||||
PermissionUpdatedSuccesfuly=El permís s'ha actualitzat correctament
|
||||
PermissionAddedSuccesfuly=El permís s'ha afegit correctament
|
||||
|
|
@ -178,5 +178,6 @@ ApiObjectDeleted=API per a l'objecte %s s'ha suprimit correctament
|
|||
CRUDRead=Llegit
|
||||
CRUDCreateWrite=Crea o Actualitza
|
||||
FailedToAddCodeIntoDescriptor=No s'ha pogut afegir el codi al descriptor. Comproveu que la cadena de comentaris «%s» encara està present al fitxer.
|
||||
DictionariesCreated=Dictionary <b>%s</b> created successfully
|
||||
DictionaryDeleted=Dictionary <b>%s</b> removed successfully
|
||||
DictionariesCreated=Diccionari <b>%s</b> creat correctament
|
||||
DictionaryDeleted=El diccionari <b>%s</b> s'ha eliminat correctament
|
||||
PropertyModuleUpdated=La propietat <b>%s</b> s'ha actualitzat correctament
|
||||
|
|
|
|||
|
|
@ -300,6 +300,7 @@ ConfirmBtnCommonContent = Esteu segur que voleu «%s»?
|
|||
ConfirmBtnCommonTitle = Confirmeu la vostra acció
|
||||
CloseDialog = Tancar
|
||||
Autofill = Emplenament automàtic
|
||||
OrPasteAnURL=o Enganxeu un URL
|
||||
|
||||
# externalsite
|
||||
ExternalSiteSetup=Configuració de l'enllaç a la pàgina web externa
|
||||
|
|
|
|||
|
|
@ -321,5 +321,5 @@ BatchNotFound=No s'ha trobat lot / sèrie per a aquest producte
|
|||
StockMovementWillBeRecorded=Es registrarà el moviment d'estoc
|
||||
StockMovementNotYetRecorded=El moviment d'estoc no es veurà afectat per aquest pas
|
||||
WarningThisWIllAlsoDeleteStock=Advertència, això també destruirà totes les quantitats en estoc al magatzem
|
||||
DeleteBatch=Delete lot/serial
|
||||
ConfirmDeleteBatch=Are you sure you want to delete lot/serial ?
|
||||
DeleteBatch=Esborra el lot/sèrie
|
||||
ConfirmDeleteBatch=Esteu segur que voleu suprimir el lot/sèrie?
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ StripeAccount=Compte de Stripe
|
|||
StripeChargeList=Llista de càrregues de Stripe
|
||||
StripeTransactionList=Llista de transaccions de Stripe
|
||||
StripeCustomerId=ID de client de Stripe
|
||||
StripePaymentId=Stripe payment id
|
||||
StripePaymentId=Id de pagament de Stripe
|
||||
StripePaymentModes=Formes de pagament de Stripe
|
||||
LocalID=ID local
|
||||
StripeID=ID de Stripe
|
||||
|
|
|
|||
|
|
@ -42,7 +42,8 @@ SendAskRef=Enviant la petició de preu %s
|
|||
SupplierProposalCard=Fitxa de petició
|
||||
ConfirmDeleteAsk=Estàs segur que vols suprimir aquest preu de sol·licitud <b>%s</b>?
|
||||
ActionsOnSupplierProposal=Esdeveniments en petició de preu
|
||||
DocModelAuroreDescription=Model de petició completa (logo...)
|
||||
DocModelAuroreDescription=A complete template for a vendor quotation request template (old implementation of Sponge template)
|
||||
DocModelZenithDescription=A complete template for a vendor quotation request template
|
||||
CommercialAsk=Petició de preu
|
||||
DefaultModelSupplierProposalCreate=Model de creació per defecte
|
||||
DefaultModelSupplierProposalToBill=Model per defecte en tancar una petició de preu (acceptada)
|
||||
|
|
|
|||
|
|
@ -126,9 +126,9 @@ TicketParams=Paràmetres
|
|||
TicketsShowModuleLogo=Mostra el logotip del mòdul a la interfície pública
|
||||
TicketsShowModuleLogoHelp=Activeu aquesta opció per a ocultar el mòdul de logotip a les pàgines de la interfície pública
|
||||
TicketsShowCompanyLogo=Mostra el logotip de l'empresa en la interfície pública
|
||||
TicketsShowCompanyLogoHelp=Enable this option to show the logo of the main company in the pages of the public interface
|
||||
TicketsShowCompanyFooter=Display the footer of the company in the public interface
|
||||
TicketsShowCompanyFooterHelp=Enable this option to show the footer of the main company in the pages of the public interface
|
||||
TicketsShowCompanyLogoHelp=Activeu aquesta opció per a mostrar el logotip de l'empresa principal a les pàgines de la interfície pública
|
||||
TicketsShowCompanyFooter=Mostra el peu de pàgina de l'empresa a la interfície pública
|
||||
TicketsShowCompanyFooterHelp=Activeu aquesta opció per a mostrar el peu de pàgina de l'empresa principal a les pàgines de la interfície pública
|
||||
TicketsEmailAlsoSendToMainAddress=També envieu una notificació a l’adreça de correu electrònic principal
|
||||
TicketsEmailAlsoSendToMainAddressHelp=Activeu aquesta opció per a enviar també un correu electrònic a l'adreça definida a la configuració "%s" (vegeu la pestanya "%s")
|
||||
TicketsLimitViewAssignedOnly=Restringir la visualització als tiquets assignats a l'usuari actual (no és efectiu per als usuaris externs, sempre estarà limitat al tercer de qui depengui)
|
||||
|
|
@ -329,8 +329,8 @@ OldUser=Usuari antic
|
|||
NewUser=Usuari nou
|
||||
NumberOfTicketsByMonth=Nombre d’entrades mensuals
|
||||
NbOfTickets=Nombre d’entrades
|
||||
ExternalContributors=External contributors
|
||||
AddContributor=Add external contributor
|
||||
ExternalContributors=Col·laboradors externs
|
||||
AddContributor=Afegeix un col·laborador extern
|
||||
|
||||
# notifications
|
||||
TicketCloseEmailSubjectCustomer=Tiquet tancat
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ YourRole=Els seus rols
|
|||
YourQuotaOfUsersIsReached=Ha arribat a la seva quota d'usuaris actius!
|
||||
NbOfUsers=Nombre d'usuaris
|
||||
NbOfPermissions=Nombre de permisos
|
||||
DontDowngradeSuperAdmin=Only another admin can downgrade an admin
|
||||
DontDowngradeSuperAdmin=Només un altre administrador pot rebaixar el nivell d'un administrador
|
||||
HierarchicalResponsible=Supervisor
|
||||
HierarchicView=Vista jeràrquica
|
||||
UseTypeFieldToChange=Utilitzeu el camp Tipus per a canviar
|
||||
|
|
|
|||
|
|
@ -158,5 +158,5 @@ Reservation=Reserva
|
|||
PagesViewedPreviousMonth=Pàgines vistes (mes anterior)
|
||||
PagesViewedTotal=Pàgines vistes (total)
|
||||
Visibility=Visibilitat
|
||||
Everyone=Everyone
|
||||
AssignedContacts=Assigned contacts
|
||||
Everyone=Tothom
|
||||
AssignedContacts=Contactes assignats
|
||||
|
|
|
|||
|
|
@ -57,11 +57,14 @@ WarningDataDisappearsWhenDataIsExported=Warning, this list contains only the acc
|
|||
VueByAccountAccounting=View by accounting account
|
||||
VueBySubAccountAccounting=View by accounting subaccount
|
||||
|
||||
MainAccountForCustomersNotDefined=Hlavní účetní účetnictví pro zákazníky, které nejsou definovány v nastavení
|
||||
MainAccountForSuppliersNotDefined=Hlavní účty účetnictví pro dodavatele, které nejsou definovány v nastavení
|
||||
MainAccountForUsersNotDefined=Hlavní účetní účetnictví pro uživatele, které nejsou definovány v nastavení
|
||||
MainAccountForVatPaymentNotDefined=Účet hlavního účtu pro platbu DPH není definována v nastavení
|
||||
MainAccountForSubscriptionPaymentNotDefined=Účet hlavního účtu je platba předplatného, která není definována v nastavení
|
||||
MainAccountForCustomersNotDefined=Main account (from the Chart of Account) for customers not defined in setup
|
||||
MainAccountForSuppliersNotDefined=Main account (from the Chart of Account) for vendors not defined in setup
|
||||
MainAccountForUsersNotDefined=Main account (from the Chart of Account) for users not defined in setup
|
||||
MainAccountForRevenueStampSaleNotDefined=Account (from the Chart of Account) for the revenue stamp (sales) not defined in setup
|
||||
MainAccountForRevenueStampPurchaseNotDefined=Account (from the Chart of Account) for the revenue stamp (purchases) not defined in setup
|
||||
MainAccountForVatPaymentNotDefined=Account (from the Chart of Account) for VAT payment not defined in setup
|
||||
MainAccountForSubscriptionPaymentNotDefined=Account (from the Chart of Account) for membership payment not defined in setup
|
||||
MainAccountForRetainedWarrantyNotDefined=Account (from the Chart of Account) for the retained warranty not defined in setup
|
||||
UserAccountNotDefined=Accounting account for user not defined in setup
|
||||
|
||||
AccountancyArea=Účetní oblast
|
||||
|
|
|
|||
|
|
@ -1509,7 +1509,8 @@ WatermarkOnDraftContractCards=Vodoznak v návrhu smlouvy (žádný, je-li prázd
|
|||
MembersSetup=Nastavení modulu členů
|
||||
MemberMainOptions=Hlavní volby
|
||||
MemberCodeChecker=Options for automatic generation of member codes
|
||||
AdherentLoginRequired= Správa Přihlášení pro každého člena
|
||||
AdherentLoginRequired=Manage a login/password for each member
|
||||
AdherentLoginRequiredDesc=Add a value for a login and a password on the member file. If the member is linked to a user, updating the member login and password will also update the user login and password.
|
||||
AdherentMailRequired=K vytvoření nového člena je třeba e-mail
|
||||
MemberSendInformationByMailByDefault=Zaškrtávací políčko poslat mailem potvrzení členům (validace nebo nové předplatné) je ve výchozím nastavení
|
||||
MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated
|
||||
|
|
@ -2076,6 +2077,10 @@ MAIN_DOCUMENTS_LOGO_HEIGHT=Height for logo on PDF
|
|||
DOC_SHOW_FIRST_SALES_REP=Show first sales representative
|
||||
MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Add column for picture on proposal lines
|
||||
MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Width of the column if a picture is added on lines
|
||||
MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE=Hide the unit price column on quotation requests
|
||||
MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN=Hide the total price column on quotation requests
|
||||
MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE=Hide the unit price column on purchase orders
|
||||
MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on puchase orders
|
||||
MAIN_PDF_NO_SENDER_FRAME=Hide borders on sender address frame
|
||||
MAIN_PDF_NO_RECIPENT_FRAME=Hide borders on recipent address frame
|
||||
MAIN_PDF_HIDE_CUSTOMER_CODE=Hide customer code
|
||||
|
|
@ -2400,4 +2405,4 @@ OptionXShouldBeEnabledInModuleY=Option "<b>%s</b>" should be enabled into module
|
|||
OptionXIsCorrectlyEnabledInModuleY=Option "<b>%s</b>" is enabled into module <b>%s</b>
|
||||
AtBottomOfPage=At bottom of page
|
||||
FailedAuth=failed authentications
|
||||
MaxNumberOfFailedAuth=Max number of failed authentication in 24h to disable login.
|
||||
MaxNumberOfFailedAuth=Max number of failed authentication in 24h to deny login.
|
||||
|
|
|
|||
|
|
@ -1237,3 +1237,5 @@ SearchSyntaxTooltipForStringOrNum=For searching inside text fields, you can use
|
|||
InProgress=probíhá
|
||||
DateOfPrinting=Date of printing
|
||||
ClickFullScreenEscapeToLeave=Click here to switch in Full screen mode. Press ESCAPE to leave Full screen mode.
|
||||
UserNotYetValid=Not yet valid
|
||||
UserExpired=Vypršela
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ SupplierProposalArea=Oblast návrhů dodavatele
|
|||
SupplierProposalShort=Návrh dodavatele
|
||||
SupplierProposals=Návrhy dodavatele
|
||||
SupplierProposalsShort=Návrhy dodavatele
|
||||
AskPrice=Cenový požadavek
|
||||
NewAskPrice=Nový cenový poožadavek
|
||||
ShowSupplierProposal=Zobrazit cenový požadavek
|
||||
AddSupplierProposal=Vytvoření cenového požadavku
|
||||
|
|
@ -41,7 +42,8 @@ SendAskRef=Zaslání cenového požadavku %s
|
|||
SupplierProposalCard=žádost o kartu
|
||||
ConfirmDeleteAsk=Opravdu chcete tuto cenovou žádost <b> %s </ b> smazat?
|
||||
ActionsOnSupplierProposal=Události cenových požadavků
|
||||
DocModelAuroreDescription=Kompletní model, žádost (logo ...)
|
||||
DocModelAuroreDescription=A complete template for a vendor quotation request template (old implementation of Sponge template)
|
||||
DocModelZenithDescription=A complete template for a vendor quotation request template
|
||||
CommercialAsk=Cenový požadavek
|
||||
DefaultModelSupplierProposalCreate=Tvorba z výchozí šablony
|
||||
DefaultModelSupplierProposalToBill=Výchozí šablona při zavírání cenového požadavku (vzat v potaz)
|
||||
|
|
@ -52,3 +54,6 @@ SupplierProposalsToClose=Uzavřené návrhy dodavatele
|
|||
SupplierProposalsToProcess=Návrhy dodavatele ve zpracování
|
||||
LastSupplierProposals=Poslední žádosti %s cena
|
||||
AllPriceRequests=Všechny žádosti
|
||||
TypeContact_supplier_proposal_external_SHIPPING=Vendor contact for delivery
|
||||
TypeContact_supplier_proposal_external_BILLING=Vendor contact for billing
|
||||
TypeContact_supplier_proposal_external_SERVICE=Zástupce následující vypracované nabídky
|
||||
|
|
|
|||
|
|
@ -57,11 +57,14 @@ WarningDataDisappearsWhenDataIsExported=Warning, this list contains only the acc
|
|||
VueByAccountAccounting=Gweld yn ôl cyfrif cyfrifeg
|
||||
VueBySubAccountAccounting=Gweld trwy isgyfrif cyfrifo
|
||||
|
||||
MainAccountForCustomersNotDefined=Prif gyfrif cyfrifo ar gyfer cwsmeriaid heb ei ddiffinio yn y gosodiad
|
||||
MainAccountForSuppliersNotDefined=Prif gyfrif cyfrifo ar gyfer gwerthwyr heb ei ddiffinio yn y gosodiad
|
||||
MainAccountForUsersNotDefined=Prif gyfrif cyfrifo ar gyfer defnyddwyr heb ei ddiffinio yn y gosodiad
|
||||
MainAccountForVatPaymentNotDefined=Prif gyfrif cyfrifo ar gyfer taliad TAW heb ei ddiffinio yn y gosodiad
|
||||
MainAccountForSubscriptionPaymentNotDefined=Prif gyfrif cyfrifo ar gyfer taliad tanysgrifiad heb ei ddiffinio yn y gosodiad
|
||||
MainAccountForCustomersNotDefined=Main account (from the Chart of Account) for customers not defined in setup
|
||||
MainAccountForSuppliersNotDefined=Main account (from the Chart of Account) for vendors not defined in setup
|
||||
MainAccountForUsersNotDefined=Main account (from the Chart of Account) for users not defined in setup
|
||||
MainAccountForRevenueStampSaleNotDefined=Account (from the Chart of Account) for the revenue stamp (sales) not defined in setup
|
||||
MainAccountForRevenueStampPurchaseNotDefined=Account (from the Chart of Account) for the revenue stamp (purchases) not defined in setup
|
||||
MainAccountForVatPaymentNotDefined=Account (from the Chart of Account) for VAT payment not defined in setup
|
||||
MainAccountForSubscriptionPaymentNotDefined=Account (from the Chart of Account) for membership payment not defined in setup
|
||||
MainAccountForRetainedWarrantyNotDefined=Account (from the Chart of Account) for the retained warranty not defined in setup
|
||||
UserAccountNotDefined=Accounting account for user not defined in setup
|
||||
|
||||
AccountancyArea=Maes cyfrifo
|
||||
|
|
|
|||
|
|
@ -1509,7 +1509,8 @@ WatermarkOnDraftContractCards=Dyfrnod ar gontractau drafft (dim os yn wag)
|
|||
MembersSetup=Gosod modiwl aelodau
|
||||
MemberMainOptions=Prif opsiynau
|
||||
MemberCodeChecker=Options for automatic generation of member codes
|
||||
AdherentLoginRequired= Rheoli Mewngofnodi ar gyfer pob aelod
|
||||
AdherentLoginRequired=Manage a login/password for each member
|
||||
AdherentLoginRequiredDesc=Add a value for a login and a password on the member file. If the member is linked to a user, updating the member login and password will also update the user login and password.
|
||||
AdherentMailRequired=Mae angen e-bost i greu aelod newydd
|
||||
MemberSendInformationByMailByDefault=Mae'r blwch ticio i anfon cadarnhad post at aelodau (dilysiad neu danysgrifiad newydd) ymlaen yn ddiofyn
|
||||
MemberCreateAnExternalUserForSubscriptionValidated=Creu mewngofnod defnyddiwr allanol ar gyfer pob tanysgrifiad aelod newydd a ddilysir
|
||||
|
|
@ -2076,6 +2077,10 @@ MAIN_DOCUMENTS_LOGO_HEIGHT=Uchder ar gyfer y logo ar PDF
|
|||
DOC_SHOW_FIRST_SALES_REP=Show first sales representative
|
||||
MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Ychwanegu colofn ar gyfer llun ar linellau cynnig
|
||||
MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Lled y golofn os ychwanegir llun ar linellau
|
||||
MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE=Hide the unit price column on quotation requests
|
||||
MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN=Hide the total price column on quotation requests
|
||||
MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE=Hide the unit price column on purchase orders
|
||||
MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on puchase orders
|
||||
MAIN_PDF_NO_SENDER_FRAME=Cuddio borderi ar ffrâm cyfeiriad anfonwr
|
||||
MAIN_PDF_NO_RECIPENT_FRAME=Cuddio borderi ar ffrâm cyfeiriad y rysáit
|
||||
MAIN_PDF_HIDE_CUSTOMER_CODE=Cuddio cod cwsmer
|
||||
|
|
@ -2400,4 +2405,4 @@ OptionXShouldBeEnabledInModuleY=Option "<b>%s</b>" should be enabled into module
|
|||
OptionXIsCorrectlyEnabledInModuleY=Option "<b>%s</b>" is enabled into module <b>%s</b>
|
||||
AtBottomOfPage=At bottom of page
|
||||
FailedAuth=failed authentications
|
||||
MaxNumberOfFailedAuth=Max number of failed authentication in 24h to disable login.
|
||||
MaxNumberOfFailedAuth=Max number of failed authentication in 24h to deny login.
|
||||
|
|
|
|||
|
|
@ -42,7 +42,8 @@ SendAskRef=Anfon y cais pris %s
|
|||
SupplierProposalCard=Cerdyn cais
|
||||
ConfirmDeleteAsk=A ydych yn siŵr eich bod am ddileu'r cais pris hwn <b> %s </b> ?
|
||||
ActionsOnSupplierProposal=Digwyddiadau ar gais pris
|
||||
DocModelAuroreDescription=Model cais cyflawn (logo...)
|
||||
DocModelAuroreDescription=A complete template for a vendor quotation request template (old implementation of Sponge template)
|
||||
DocModelZenithDescription=A complete template for a vendor quotation request template
|
||||
CommercialAsk=Cais pris
|
||||
DefaultModelSupplierProposalCreate=Creu model diofyn
|
||||
DefaultModelSupplierProposalToBill=Templed rhagosodedig wrth gau cais pris (derbynnir)
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue